From 08016957ff075649f5eb0043fc0473f5738d1e7e Mon Sep 17 00:00:00 2001 From: ZJU_czx <952370295@qq.com> Date: Mon, 21 Sep 2026 11:58:06 +0800 Subject: [PATCH 1/4] feat!: migrate VMind to standalone visualization Skills Why: - Make this repository the maintenance home for Agent-facing visualization Skills while retaining earlier VMind SDK versions in Git history and releases. What: - Replace the legacy SDK and Rush tooling with portable VChart and VTable Skills, bundled references, generators and local knowledge search. - Add per-Skill fixed cases, deterministic regressions and a bounded OpenAI-compatible API harness with optional Codex execution. - Preserve task inputs, usage, observable tool logs and review evidence; keep credentials and generated runs outside version control. - Document installation and debugging in English and Chinese, and replace obsolete Rush Git hooks with Python lint and commit-subject checks. Validation: - 105 regressions passed across the relevant suites; the 47 template and portable-install tests passed again after whitespace cleanup. - Ruff, uv lock consistency, JavaScript syntax, catalog preservation, documented selections and browser snapshot/catalog checks passed. - Automated evaluation success remains distinct from manual review; known case failures and unexecuted coverage are documented separately. BREAKING CHANGE: the current source tree no longer provides the VMind SDK. Use an existing SDK release for the historical SDK API. Codex-Model: gpt-6-astra --- .editorconfig | 9 - .eslintignore | 1 - .gitattributes | 14 - .githooks/commit-msg | 9 + .githooks/pre-commit | 14 + .github/ISSUE_TEMPLATE/bug_report.yml | 102 - .github/ISSUE_TEMPLATE/config.yml | 5 - .github/ISSUE_TEMPLATE/feaure_request.yml | 38 - .github/ISSUE_TEMPLATE/others.md | 7 - .github/PULL_REQUEST_TEMPLATE.md | 86 - .github/PULL_REQUEST_TEMPLATE/pr_cn.md | 84 - .github/labeler.yml | 17 - .github/workflows/labeler.yml | 21 - .github/workflows/pr-check.yml | 29 - .github/workflows/pre-release.yml | 74 - .github/workflows/release-changelog.yml | 67 - .github/workflows/release.yml | 113 - .github/workflows/stale.yml | 35 - .github/workflows/sync-main-to-develop.yml | 61 - .github/workflows/unit-test.yml | 35 - .gitignore | 134 +- .lintstagedrc | 3 - .prettierignore | 29 - .prettierrc.js | 16 - .vscode/settings.json | 2 - AGENTS.md | 10 + CODE_OF_CONDUCT.md | 47 - CONTRIBUTING.md | 185 +- CONTRIBUTING.zh-CN.md | 210 - README-ja.md | 286 - README.md | 330 +- README.zh-CN.md | 84 + common/autoinstallers/create/README.md | 12 - common/autoinstallers/create/package.json | 22 - common/autoinstallers/create/pnpm-lock.yaml | 4688 - common/autoinstallers/create/src/cli.ts | 150 - common/autoinstallers/create/src/create.ts | 59 - common/autoinstallers/create/src/global.d.ts | 7 - common/autoinstallers/create/src/logger.ts | 15 - common/autoinstallers/create/src/template.ts | 61 - .../create/templates/library/.eslintrc.js | 7 - .../create/templates/library/README.md | 11 - .../templates/library/bundler.config.js | 4 - .../create/templates/library/package.json | 37 - .../create/templates/library/src/global.d.ts | 1 - .../create/templates/library/src/index.ts | 1 - .../create/templates/library/tsconfig.json | 10 - .../create/templates/library/vite/index.html | 13 - .../templates/library/vite/public/vite.svg | 1 - .../create/templates/library/vite/src/App.css | 42 - .../create/templates/library/vite/src/App.tsx | 31 - .../library/vite/src/assets/react.svg | 1 - .../templates/library/vite/src/index.css | 69 - .../templates/library/vite/src/main.tsx | 11 - .../templates/library/vite/src/vite-env.d.ts | 1 - .../templates/library/vite/tsconfig.json | 32 - .../templates/library/vite/tsconfig.node.json | 10 - .../templates/library/vite/vite.config.ts | 7 - common/autoinstallers/create/tsconfig.json | 109 - common/autoinstallers/lint/change-all.ts | 68 - common/autoinstallers/lint/commit-lint.js | 24 - .../autoinstallers/lint/commitlint.config.js | 44 - common/autoinstallers/lint/package.json | 22 - common/autoinstallers/lint/pnpm-lock.yaml | 5127 - common/autoinstallers/lint/prettier.ts | 44 - common/autoinstallers/lint/tsconfig.json | 46 - common/autoinstallers/run-script/package.json | 15 - .../autoinstallers/run-script/pnpm-lock.yaml | 3717 - common/autoinstallers/run-script/run.ts | 30 - .../autoinstallers/run-script/tsconfig.json | 46 - common/config/rush/.npmrc | 23 - common/config/rush/.npmrc-publish | 20 - common/config/rush/.pnpmfile.cjs | 38 - common/config/rush/artifactory.json | 109 - common/config/rush/build-cache.json | 100 - common/config/rush/command-line.json | 205 - common/config/rush/common-versions.json | 62 - common/config/rush/experiments.json | 50 - common/config/rush/pnpm-config.json | 205 - common/config/rush/pnpm-lock.yaml | 14071 --- common/config/rush/repo-state.json | 4 - common/config/rush/rush-plugins.json | 29 - common/config/rush/version-policies.json | 9 - common/git-hooks/commit-msg | 3 - common/git-hooks/pre-commit | 39 - common/git-hooks/pre-push | 38 - common/scripts/apply-prerelease-version.js | 19 - common/scripts/apply-release-version.js | 19 - common/scripts/get-package-json.js | 8 - common/scripts/hotfix-release.js | 99 - common/scripts/install-run-rush-pnpm.js | 28 - common/scripts/install-run-rush.js | 214 - common/scripts/install-run-rushx.js | 28 - common/scripts/install-run.js | 645 - common/scripts/parse-version.js | 23 - common/scripts/pre-release.js | 95 - common/scripts/release.js | 79 - common/scripts/set-json-file.js | 30 - common/scripts/set-prerelease-version.js | 92 - common/scripts/sort_deps.js | 116 - common/scripts/version-policies.js | 85 - common/template/chart.d.ts | 1 - common/template/chart.js | 1 - common/template/component.d.ts | 1 - common/template/component.js | 1 - common/template/core.d.ts | 1 - common/template/core.js | 1 - common/template/layout.d.ts | 1 - common/template/layout.js | 1 - common/template/mark.d.ts | 1 - common/template/mark.js | 1 - common/template/series.d.ts | 1 - common/template/series.js | 1 - docs/assets/api/en/VMind_Instance.md | 113 - docs/assets/api/en/dataQuery.md | 84 - docs/assets/api/en/fillSpecWithData.md | 96 - docs/assets/api/en/generateChart.md | 280 - docs/assets/api/en/getFieldInfo.md | 90 - docs/assets/api/en/getInsights.md | 153 - docs/assets/api/en/parseCSVData.md | 61 - docs/assets/api/en/text2Chart.md | 119 - docs/assets/api/menu.json | 61 - docs/assets/api/zh/VMind_Instance.md | 114 - docs/assets/api/zh/dataQuery.md | 84 - docs/assets/api/zh/fillSpecWithData.md | 97 - docs/assets/api/zh/generateChart.md | 278 - docs/assets/api/zh/getFieldInfo.md | 89 - docs/assets/api/zh/getInsights.md | 153 - docs/assets/api/zh/parseCSVData.md | 60 - docs/assets/api/zh/text2Chart.md | 119 - docs/assets/changelog/en/release.md | 176 - docs/assets/changelog/zh/release.md | 177 - .../guide/en/Basic_Tutorial/Chart_Advisor.md | 84 - .../en/Basic_Tutorial/Chart_Generation.md | 538 - .../guide/en/Basic_Tutorial/Chart_Insight.md | 183 - .../Basic_Tutorial/Create_VMind_Instance.md | 209 - .../en/Basic_Tutorial/Data_Aggregation.md | 382 - .../en/Basic_Tutorial/Data_Extraction.md | 61 - .../guide/en/Basic_Tutorial/Data_Process.md | 247 - .../en/Basic_Tutorial/How_to_Get_VMind.md | 41 - .../en/Basic_Tutorial/How_to_Import_VMind.md | 51 - docs/assets/guide/en/Contribution_Guide.md | 182 - .../en/Getting_Started/Getting_Started.md | 251 - ...ed_with_VisActor_Using_Trae_Context_Doc.md | 197 - docs/assets/guide/en/Intro_to_VMind.md | 73 - docs/assets/guide/en/VMind_OpenAPI.md | 90 - docs/assets/guide/en/VMind_Website_Guide.md | 54 - docs/assets/guide/menu.json | 128 - .../guide/zh/Basic_Tutorial/Chart_Advisor.md | 84 - .../zh/Basic_Tutorial/Chart_Generation.md | 545 - .../guide/zh/Basic_Tutorial/Chart_Insight.md | 179 - .../Basic_Tutorial/Create_VMind_Instance.md | 217 - .../zh/Basic_Tutorial/Data_Aggregation.md | 386 - .../zh/Basic_Tutorial/Data_Extraction.md | 62 - .../guide/zh/Basic_Tutorial/Data_Process.md | 242 - .../zh/Basic_Tutorial/How_to_Get_VMind.md | 41 - .../zh/Basic_Tutorial/How_to_Import_VMind.md | 51 - docs/assets/guide/zh/Contribution_Guide.md | 210 - .../zh/Getting_Started/Getting_Started.md | 252 - ...ed_with_VisActor_Using_Trae_Context_Doc.md | 194 - docs/assets/guide/zh/Intro_to_VMind.md | 86 - docs/assets/guide/zh/VMind_OpenAPI.md | 90 - docs/assets/guide/zh/VMind_Website_Guide.md | 55 - .../Amazon_Fashion_Sales_Analysis_Report.md | 125 - docs/assets/openManus/Readme.md | 3 - .../assets/openManus/amazon_sales_jan2025.csv | 32 - docs/assets/openManus/aov_trend.png | Bin 326655 -> 0 bytes docs/assets/openManus/correlation_heatmap.png | Bin 435162 -> 0 bytes docs/assets/openManus/daily_sales_trend.png | Bin 302546 -> 0 bytes .../home/ubuntu/analysis/data_exploration.txt | 33 - .../ubuntu/analysis/preprocessing_results.txt | 43 - .../analysis/sales_analysis_results.txt | 85 - docs/assets/openManus/home/ubuntu/todo.md | 13 - docs/assets/openManus/key_insights.md | 60 - docs/assets/openManus/orders_by_day.png | Bin 161002 -> 0 bytes docs/assets/openManus/outlier_comparison.png | Bin 142002 -> 0 bytes .../openManus/profit_margin_by_discount.png | Bin 107150 -> 0 bytes docs/assets/openManus/sales_by_day.png | Bin 156510 -> 0 bytes .../openManus/sales_growth_strategies.md | 90 - docs/assets/openManus/weekend_comparison.png | Bin 97141 -> 0 bytes docs/assets/openManus/weekly_sales.png | Bin 99774 -> 0 bytes docs/assets/scenario/en/Chart_Assistant.md | 15 - docs/assets/scenario/en/Data_Development.md | 57 - docs/assets/scenario/en/Data_Video.md | 14 - docs/assets/scenario/en/Document_Assistant.md | 12 - docs/assets/scenario/en/OpenManus_VMind.md | 257 - docs/assets/scenario/en/Open_API.md | 165 - docs/assets/scenario/en/Wordcloud_Cube.md | 26 - docs/assets/scenario/menu.json | 47 - docs/assets/scenario/zh/Chart_Assistant.md | 15 - docs/assets/scenario/zh/Data_Development.md | 57 - docs/assets/scenario/zh/Data_Video.md | 14 - docs/assets/scenario/zh/Document_Assistant.md | 12 - docs/assets/scenario/zh/OpenManus_VMind.md | 249 - docs/assets/scenario/zh/Open_API.md | 165 - docs/assets/scenario/zh/Wordcloud_Cube.md | 26 - docs/debugging.md | 73 + docs/index.html | 15 - docs/index.js | 155 - docs/libs/template-parse/build.js | 188 - docs/libs/template-parse/etpl.js | 1679 - docs/libs/template-parse/md2json.js | 449 - docs/libs/template-parse/schemaHelper.js | 226 - docs/menu.json | 14 - docs/migration/plan.md | 114 + docs/migration/provenance.json | 262 + docs/migration/vchart-case-expansion.md | 56 + docs/migration/vchart-case-status.json | 21 + docs/migration/verification.md | 47 + docs/package.json | 39 - docs/src/app.tsx | 55 - docs/src/header.tsx | 61 - docs/src/i18n.tsx | 20 - docs/src/main.tsx | 11 - docs/src/markdown.tsx | 228 - docs/src/option.tsx | 66 - docs/src/option/description.tsx | 291 - docs/src/option/index.css | 50 - docs/src/option/index.tsx | 86 - docs/src/option/outline.tsx | 215 - docs/style.css | 118 - docs/tsconfig.json | 25 - docs/tsconfig.node.json | 8 - docs/vite.config.js | 22 - evals/README.md | 205 + evals/README.zh-CN.md | 205 + evals/cases/README.md | 54 + evals/cases/README.zh-CN.md | 54 + .../vchart-development-assistant/README.md | 88 + .../README.zh-CN.md | 88 + .../expectations.json | 248 + .../fixtures.json | 78 + .../inputs/broken-chart.js | 6 + .../inputs/chinese.csv | 4 + .../inputs/dual.csv | 5 + .../inputs/empty.json | 1 + .../inputs/funnel.csv | 5 + .../inputs/heat.csv | 5 + .../inputs/line-null.json | 1 + .../inputs/log.csv | 5 + .../inputs/long-labels.csv | 4 + .../inputs/points.csv | 5 + .../inputs/radar.csv | 6 + .../inputs/reference-bars.png | Bin 0 -> 10045 bytes .../inputs/reference-bars.svg | 1 + .../inputs/sales.csv | 7 + .../inputs/sequence.csv | 41 + .../inputs/share.csv | 5 + .../inputs/signed.csv | 5 + .../inputs/sort.csv | 5 + .../inputs/trend.csv | 7 + .../selection.json | 4003 + .../vchart-development-assistant/tasks.json | 323 + .../vtable-development-assistant/README.md | 34 + .../README.zh-CN.md | 34 + .../expectations.json | 34 + .../fixtures.json | 10 + .../inputs/broken-table.js | 4 + .../inputs/sales.csv | 7 + .../vtable-development-assistant/tasks.json | 42 + evals/examples/chart-prompt.md | 3 + evals/model.compatible.example.json | 8 + evals/model.example.json | 17 + evals/package-lock.json | 60 + evals/package.json | 7 + evals/scripts/api_agent.py | 521 + evals/scripts/check-browser.mjs | 103 + evals/scripts/run.py | 525 + option | 0 packages/calculator/LICENSE | 21 - packages/calculator/README.md | 248 - packages/calculator/jest.config.js | 9 - packages/calculator/package.json | 52 - packages/calculator/src/astParser/astPipes.ts | 242 - packages/calculator/src/astParser/index.ts | 30 - .../calculator/src/astParser/parseSqlAST.ts | 20 - packages/calculator/src/astParser/type.ts | 37 - packages/calculator/src/astParser/utils.ts | 257 - packages/calculator/src/index.ts | 7 - packages/calculator/src/join.test.ts | 159 - packages/calculator/src/join.ts | 121 - packages/calculator/src/mocks/index.ts | 1 - packages/calculator/src/mocks/table.ts | 12 - packages/calculator/src/pipe.ts | 37 - .../src/pipes/aggregate/aggregate.ts | 199 - .../calculator/src/pipes/aggregate/index.ts | 1 - .../calculator/src/pipes/aggregate/methods.ts | 77 - .../calculator/src/pipes/distinct.test.ts | 77 - packages/calculator/src/pipes/distinct.ts | 62 - .../calculator/src/pipes/filter/filter.ts | 155 - .../src/pipes/filter/having.test.ts | 120 - .../calculator/src/pipes/filter/having.ts | 36 - packages/calculator/src/pipes/filter/index.ts | 2 - .../calculator/src/pipes/filter/where.test.ts | 330 - packages/calculator/src/pipes/filter/where.ts | 36 - packages/calculator/src/pipes/group.test.ts | 173 - packages/calculator/src/pipes/group.ts | 154 - packages/calculator/src/pipes/index.ts | 19 - packages/calculator/src/pipes/limit.ts | 18 - packages/calculator/src/pipes/order.test.ts | 338 - packages/calculator/src/pipes/order.ts | 181 - packages/calculator/src/pipes/select.test.ts | 221 - packages/calculator/src/pipes/select.ts | 127 - packages/calculator/src/query.test.ts | 61 - packages/calculator/src/query.ts | 82 - packages/calculator/src/types/aggregate.ts | 62 - packages/calculator/src/types/data.ts | 19 - packages/calculator/src/types/filter.ts | 104 - packages/calculator/src/types/group.ts | 46 - packages/calculator/src/types/index.ts | 7 - packages/calculator/src/types/join.ts | 11 - packages/calculator/src/types/query.ts | 113 - packages/calculator/src/types/select.ts | 76 - packages/calculator/src/utils/includes.ts | 6 - packages/calculator/src/utils/index.ts | 3 - packages/calculator/src/utils/ordered.ts | 128 - packages/calculator/src/utils/typeCheck.ts | 12 - packages/calculator/tsconfig.cjs.json | 21 - packages/calculator/tsconfig.esm.json | 21 - packages/calculator/tsconfig.json | 20 - packages/calculator/tsconfig.test.json | 8 - packages/chart-advisor/.eslintrc.cjs | 18 - packages/chart-advisor/LICENSE | 21 - packages/chart-advisor/README.md | 154 - packages/chart-advisor/__tests__/Q1.test.ts | 17 - packages/chart-advisor/__tests__/base.test.ts | 155 - .../chart-advisor/__tests__/score.test.ts | 397 - .../chart-advisor/__tests__/tsconfig.json | 4 - packages/chart-advisor/exampleChart.png | Bin 14078 -> 0 bytes packages/chart-advisor/jest.config.js | 9 - packages/chart-advisor/package.json | 54 - packages/chart-advisor/src/constant.ts | 26 - packages/chart-advisor/src/dataUtil.ts | 78 - packages/chart-advisor/src/fieldAssign.ts | 596 - packages/chart-advisor/src/fieldUtils.ts | 136 - packages/chart-advisor/src/index.ts | 151 - packages/chart-advisor/src/pivot.ts | 203 - packages/chart-advisor/src/score.ts | 969 - packages/chart-advisor/src/type.ts | 231 - packages/chart-advisor/tsconfig.cjs.json | 21 - packages/chart-advisor/tsconfig.eslint.json | 10 - packages/chart-advisor/tsconfig.esm.json | 22 - packages/chart-advisor/tsconfig.json | 21 - packages/chart-advisor/tsconfig.test.json | 8 - packages/generate-vchart/.eslintignore | 9 - packages/generate-vchart/.eslintrc.cjs | 248 - packages/generate-vchart/LICENSE | 21 - packages/generate-vchart/README.md | 248 - packages/generate-vchart/__tests__/common.ts | 216 - .../generate-vchart/__tests__/data.test.ts | 253 - .../generate-vchart/__tests__/field.test.ts | 480 - .../__tests__/transformers/bar.test.ts | 1022 - .../transformers/bidirectionalBar.test.ts | 217 - .../__tests__/transformers/boxplot.test.ts | 713 - .../transformers/circlePacking.test.ts | 31 - .../transformers/circularProgress.test.ts | 65 - .../__tests__/transformers/common.test.ts | 472 - .../transformers/comparativeFunnel.test.ts | 171 - .../__tests__/transformers/dualAxis.test.ts | 186 - .../__tests__/transformers/funnel.test.ts | 59 - .../__tests__/transformers/gauge.test.ts | 41 - .../__tests__/transformers/heatmap.test.ts | 299 - .../__tests__/transformers/line.test.ts | 482 - .../transformers/linearProgress.test.ts | 478 - .../__tests__/transformers/liquid.test.ts | 59 - .../__tests__/transformers/map.test.ts | 55 - .../__tests__/transformers/pie.test.ts | 150 - .../__tests__/transformers/polar.test.ts | 371 - .../__tests__/transformers/radar.test.ts | 111 - .../transformers/rangeColumn.test.ts | 36 - .../__tests__/transformers/rankingBar.test.ts | 617 - .../__tests__/transformers/rose.test.ts | 124 - .../__tests__/transformers/sankey.test.ts | 59 - .../__tests__/transformers/scatter.test.ts | 740 - .../__tests__/transformers/sunburst.test.ts | 85 - .../__tests__/transformers/treemap.test.ts | 68 - .../__tests__/transformers/venn.test.ts | 151 - .../__tests__/transformers/waterfall.test.ts | 73 - .../__tests__/transformers/wordcloud.test.ts | 66 - .../generate-vchart/__tests__/tsconfig.json | 7 - .../__tests__/utils/data.test.ts | 253 - .../__tests__/utils/date.test.ts | 47 - .../__tests__/utils/field.test.ts | 480 - packages/generate-vchart/jest.config.js | 9 - packages/generate-vchart/package.json | 55 - packages/generate-vchart/src/index.ts | 6 - packages/generate-vchart/src/pipeline.ts | 114 - .../generate-vchart/src/transformers/bar.ts | 157 - .../src/transformers/bidirectionalBar.ts | 128 - .../src/transformers/boxplot.ts | 95 - .../src/transformers/cartesian.ts | 103 - .../src/transformers/circlePacking.ts | 47 - .../src/transformers/circularProgress.ts | 38 - .../src/transformers/common.ts | 597 - .../src/transformers/comparativeFunnel.ts | 133 - .../src/transformers/dualAxis.ts | 166 - .../src/transformers/funnel.ts | 27 - .../generate-vchart/src/transformers/gauge.ts | 23 - .../src/transformers/heatmap.ts | 145 - .../generate-vchart/src/transformers/index.ts | 32 - .../generate-vchart/src/transformers/line.ts | 96 - .../src/transformers/linearProgress.ts | 104 - .../src/transformers/liquid.ts | 16 - .../generate-vchart/src/transformers/map.ts | 94 - .../generate-vchart/src/transformers/pie.ts | 39 - .../generate-vchart/src/transformers/polar.ts | 67 - .../generate-vchart/src/transformers/radar.ts | 97 - .../src/transformers/rangeColumn.ts | 53 - .../src/transformers/rankingBar.ts | 283 - .../generate-vchart/src/transformers/rose.ts | 73 - .../src/transformers/sankey.ts | 56 - .../src/transformers/scatter.ts | 94 - .../src/transformers/sunburst.ts | 65 - .../src/transformers/treemap.ts | 25 - .../generate-vchart/src/transformers/venn.ts | 55 - .../src/transformers/waterfall.ts | 43 - .../src/transformers/wordcloud.ts | 72 - packages/generate-vchart/src/types/index.ts | 2 - .../generate-vchart/src/types/transform.ts | 260 - .../generate-vchart/src/types/visualMap.ts | 77 - .../generate-vchart/src/utils/constants.ts | 37 - packages/generate-vchart/src/utils/data.ts | 6 - packages/generate-vchart/src/utils/enum.ts | 40 - packages/generate-vchart/src/utils/field.ts | 136 - packages/generate-vchart/src/utils/index.ts | 5 - packages/generate-vchart/src/utils/type.ts | 50 - packages/generate-vchart/tsconfig.cjs.json | 13 - packages/generate-vchart/tsconfig.eslint.json | 10 - packages/generate-vchart/tsconfig.esm.json | 14 - packages/generate-vchart/tsconfig.json | 15 - packages/vmind/.eslintrc.cjs | 248 - packages/vmind/CHANGELOG.json | 251 - packages/vmind/CHANGELOG.md | 166 - packages/vmind/README.md | 302 - packages/vmind/__tests__/browser/index.html | 14 - packages/vmind/__tests__/browser/src/App.tsx | 12 - .../vmind/__tests__/browser/src/Layout.tsx | 15 - .../browser/src/constants/capcutData.ts | 672 - .../src/constants/chartGeneratorData.ts | 6196 -- .../browser/src/constants/mockData.ts | 9969 -- .../browser/src/constants/mockResponse.ts | 76 - .../vmind/__tests__/browser/src/index.scss | 17 - .../vmind/__tests__/browser/src/index.tsx | 10 - .../pages/ChartGeneration/ChartGeneration.tsx | 45 - .../pages/ChartGeneration/ChartPreview.tsx | 212 - .../src/pages/ChartGeneration/DataInput.tsx | 461 - .../DataExtraction/DataExtractionPage.tsx | 63 - .../src/pages/DataExtraction/DataInput.tsx | 226 - .../src/pages/DataExtraction/DataTable.tsx | 80 - .../__tests__/browser/src/pages/Home.tsx | 45 - .../src/pages/Insight/ChartPreview.tsx | 69 - .../browser/src/pages/Insight/DataInput.tsx | 264 - .../browser/src/pages/Insight/Insight.tsx | 37 - .../browser/src/pages/Insight/data/index.ts | 3236 - .../src/pages/Insight/data/insightData.ts | 4878 - .../NewChartGeneration/ChartGeneration.tsx | 36 - .../pages/NewChartGeneration/ChartPreview.tsx | 116 - .../pages/NewChartGeneration/DataInput.tsx | 275 - .../src/pages/NewDataExtraction/DataInput.tsx | 252 - .../src/pages/NewDataExtraction/DataTable.tsx | 82 - .../src/pages/NewDataExtraction/index.tsx | 49 - .../src/pages/Text2Chart/ChartPreview.tsx | 114 - .../src/pages/Text2Chart/DataInput.tsx | 305 - .../src/pages/Text2Chart/TextToChart.tsx | 65 - .../__tests__/browser/src/pages/constants.tsx | 72 - .../__tests__/browser/src/pages/index.scss | 42 - .../vmind/__tests__/browser/tsconfig.json | 119 - .../__tests__/browser/tsconfig.node.json | 10 - .../vmind/__tests__/browser/vite.config.ts | 62 - .../vmind/__tests__/experiment/index.html | 14 - .../vmind/__tests__/experiment/src/App.tsx | 11 - .../vmind/__tests__/experiment/src/Layout.tsx | 15 - .../experiment/src/data/capcutDataCn.ts | 171 - .../experiment/src/data/capcutDataEn.ts | 149 - .../experiment/src/data/capcutV2Data.ts | 311 - .../experiment/src/data/dataExtractionData.ts | 6608 -- .../experiment/src/data/editorData.ts | 1724 - .../__tests__/experiment/src/data/qaData.ts | 1074 - .../__tests__/experiment/src/data/topKeyQA.ts | 114 - .../vmind/__tests__/experiment/src/index.scss | 4 - .../vmind/__tests__/experiment/src/index.tsx | 11 - .../src/pages/ChartDialogueQA/color.scss | 10 - .../src/pages/ChartDialogueQA/const.ts | 342 - .../src/pages/ChartDialogueQA/logo.tsx | 23 - .../src/pages/ChartDialogueQA/qaPairRag.tsx | 409 - .../src/pages/ChartDialogueQA/rag.scss | 220 - .../src/pages/ChartDialogueQA/specEditor.tsx | 120 - .../src/pages/ChartDialogueQA/test.tsx | 201 - .../src/pages/ChartGenerator/caseStudy.tsx | 389 - .../src/pages/ChartGenerator/test.tsx | 225 - .../src/pages/ChartGenerator/type.tsx | 29 - .../src/pages/DataExtraction/caseStudy.tsx | 397 - .../src/pages/DataExtraction/test.tsx | 237 - .../src/pages/DataExtraction/type.tsx | 44 - .../src/pages/DataExtraction/verify.tsx | 238 - .../__tests__/experiment/src/pages/Home.tsx | 61 - .../experiment/src/pages/constants.tsx | 90 - .../__tests__/experiment/src/pages/page.scss | 82 - .../vmind/__tests__/experiment/src/utils.ts | 99 - .../vmind/__tests__/experiment/tsconfig.json | 112 - .../__tests__/experiment/tsconfig.node.json | 10 - .../vmind/__tests__/experiment/vite.config.ts | 79 - .../__tests__/image-to-spec/.eslintrc.js | 13 - .../__tests__/image-to-spec/jest.config.js | 28 - .../image-to-spec/spec/area-basis.ts | 47 - .../image-to-spec/spec/area-percent.ts | 64 - .../__tests__/image-to-spec/spec/bar-basic.ts | 19 - .../image-to-spec/spec/bar-bi-direction.ts | 428 - .../image-to-spec/spec/bar-colorful.ts | 150 - .../image-to-spec/spec/bar-gradient.ts | 136 - .../__tests__/image-to-spec/spec/bar-group.ts | 40 - .../image-to-spec/spec/bar-h-group.ts | 136 - .../image-to-spec/spec/bar-h-stack.ts | 47 - .../image-to-spec/spec/bar-horizontal.ts | 104 - .../image-to-spec/spec/bar-percent.ts | 108 - .../__tests__/image-to-spec/spec/bar-stack.ts | 103 - .../__tests__/image-to-spec/spec/bar-tgi.ts | 438 - .../image-to-spec/spec/bar-two-directions.ts | 283 - .../spec/circle-packing-bubble.ts | 41 - .../spec/circle-packing-simple.ts | 213 - .../image-to-spec/spec/circular-progress.ts | 98 - .../__tests__/image-to-spec/spec/dual-axis.ts | 69 - .../image-to-spec/spec/funnel-basic.ts | 41 - .../image-to-spec/spec/funnel-comparative.ts | 292 - .../image-to-spec/spec/funnel-rect.ts | 101 - .../image-to-spec/spec/funnel-transform.ts | 54 - .../image-to-spec/spec/gauge-basic.ts | 22 - .../image-to-spec/spec/gauge-segment.ts | 78 - .../image-to-spec/spec/heatmap-basic.ts | 137 - .../image-to-spec/spec/histogram-basic.ts | 342 - .../spec/histogram-different-bin.ts | 95 - .../__tests__/image-to-spec/spec/index.ts | 140 - .../__tests__/image-to-spec/spec/line-bar.ts | 59 - .../image-to-spec/spec/line-basic.ts | 47 - .../image-to-spec/spec/line-mark-area.ts | 209 - .../image-to-spec/spec/line-markline.ts | 254 - .../image-to-spec/spec/line-multi-markline.ts | 3158 - .../image-to-spec/spec/line-stack.ts | 55 - .../spec/linear-grogress-segment.ts | 102 - .../image-to-spec/spec/linear-progress.ts | 44 - .../image-to-spec/spec/liquid-basic.ts | 32 - .../image-to-spec/spec/liquid-star.ts | 40 - .../__tests__/image-to-spec/spec/pie-basic.ts | 44 - .../__tests__/image-to-spec/spec/pie-donut.ts | 63 - .../image-to-spec/spec/pie-nested.ts | 81 - .../image-to-spec/spec/radar-basic.ts | 99 - .../image-to-spec/spec/radar-group.ts | 55 - .../image-to-spec/spec/radar-innerradius.ts | 73 - .../image-to-spec/spec/radar-stack.ts | 228 - .../__tests__/image-to-spec/spec/range-bar.ts | 26 - .../image-to-spec/spec/range-column.ts | 23 - .../image-to-spec/spec/rose-basis.ts | 34 - .../image-to-spec/spec/rose-group-stack.ts | 337 - .../image-to-spec/spec/rose-group.ts | 101 - .../image-to-spec/spec/rose-stack.ts | 162 - .../image-to-spec/spec/sankey-simple.ts | 132 - .../image-to-spec/spec/scatter-basic.ts | 495 - .../image-to-spec/spec/scatter-bubble.ts | 167 - .../image-to-spec/spec/scatter-markline.ts | 110 - .../image-to-spec/spec/sunburst-basic.ts | 219 - .../__tests__/image-to-spec/spec/treemap.ts | 392 - .../image-to-spec/spec/venn-hollow.ts | 77 - .../image-to-spec/spec/venn-three.ts | 20 - .../image-to-spec/spec/waterfall-collect.ts | 62 - .../image-to-spec/spec/waterfall-h.ts | 64 - .../image-to-spec/spec/waterfall-stack.ts | 51 - .../__tests__/image-to-spec/spec/waterfall.ts | 63 - .../image-to-spec/spec/wordcloud-basic.ts | 46 - .../__tests__/image-to-spec/test-setup.js | 28 - .../__tests__/image-to-spec/testImage.test.ts | 387 - .../__tests__/image-to-spec/tsconfig.json | 12 - .../__tests__/performance/performance.test.ts | 132 - packages/vmind/__tests__/tsconfig.json | 19 - .../chartGenerator/chartTypeUtils.test.ts | 51 - .../checkChartTypeAndCell.test.ts | 69 - .../unit/chartGenerator/simpleSpec.test.ts | 289 - ...tChartSpecWithContext_BasicHeapMap.test.ts | 172 - .../getChartSpecWithContext_boxplot.test.ts | 118 - .../getChartSpecWithContext_gauge.test.ts | 55 - .../unit/getChartSpecWithContext_pie.test.ts | 73 - .../getChartSpecWithContext_waterfall.test.ts | 122 - .../unit/specInsights/dual-axis.test.ts | 436 - .../unit/specInsights/growth-markline.test.ts | 436 - .../unit/specInsights/stacked-bar.test.ts | 370 - .../vmind/__tests__/unit/utils/date.test.ts | 17 - .../vmind/__tests__/unit/utils/delete.test.ts | 53 - .../vmind/__tests__/unit/utils/set.test.ts | 68 - .../__tests__/unit/vchartSpec/bar.test.ts | 497 - .../unit/vchartSpec/commonChart.test.ts | 124 - .../vchartSpec/components/markLine.test.ts | 201 - .../unit/vchartSpec/stack-bar.test.ts | 147 - .../__tests__/unit/vchartSpec/util.test.ts | 104 - packages/vmind/bundler.config.js | 18 - packages/vmind/jest.config.js | 20 - packages/vmind/jest.performance.config.js | 14 - packages/vmind/package.json | 126 - packages/vmind/readme-zh.md | 290 - .../src/applications/chartGeneration/index.ts | 20 - .../src/applications/dataAggregation/index.ts | 10 - .../src/applications/dataExtraction/index.ts | 26 - .../src/applications/dataInsight/index.ts | 10 - packages/vmind/src/applications/index.ts | 5 - packages/vmind/src/applications/utils.ts | 31 - packages/vmind/src/atom/VChartSpec/index.ts | 44 - packages/vmind/src/atom/VChartSpec/utils.ts | 847 - packages/vmind/src/atom/base.ts | 255 - packages/vmind/src/atom/chartCommand/index.ts | 97 - .../vmind/src/atom/chartCommand/multiple.ts | 116 - .../vmind/src/atom/chartCommand/prompt.ts | 53 - .../src/atom/chartGenerator/advisor/index.ts | 109 - .../vmind/src/atom/chartGenerator/const.ts | 37 - .../vmind/src/atom/chartGenerator/index.ts | 213 - .../atom/chartGenerator/llmResultRevise.ts | 253 - .../atom/chartGenerator/prompt/examples.ts | 166 - .../src/atom/chartGenerator/prompt/index.ts | 166 - .../atom/chartGenerator/prompt/knowledges.ts | 247 - .../src/atom/chartGenerator/rule/index.ts | 237 - .../chartGenerator/spec/chartTypeUtils.ts | 59 - .../src/atom/chartGenerator/spec/index.ts | 45 - .../atom/chartGenerator/spec/simpleSpec.ts | 190 - .../vmind/src/atom/chartGenerator/type.ts | 52 - .../vmind/src/atom/chartGenerator/utils.ts | 183 - .../vmind/src/atom/chartQAExtraction/index.ts | 66 - .../src/atom/chartQAExtraction/prompt.ts | 33 - packages/vmind/src/atom/customAtom/index.ts | 46 - .../vmind/src/atom/dataClean/dataClean.ts | 124 - packages/vmind/src/atom/dataClean/index.ts | 2 - packages/vmind/src/atom/dataClean/multiple.ts | 107 - packages/vmind/src/atom/dataClean/utils.ts | 467 - .../vmind/src/atom/dataExtraction/index.ts | 211 - .../dataExtraction/prompt/capcutPrompt.ts | 155 - .../dataExtraction/prompt/doubaoPrompt.ts | 203 - .../atom/dataExtraction/prompt/gptPrompt.ts | 191 - .../src/atom/dataExtraction/prompt/prompt.ts | 31 - .../algorithms/abnormalTrend/index.ts | 144 - .../algorithms/base/baseStatistics.ts | 199 - .../algorithms/correlation/pearson.ts | 85 - .../algorithms/correlation/spearman.ts | 56 - .../dataInsight/algorithms/drift/adwin.ts | 190 - .../dataInsight/algorithms/drift/bucket.ts | 96 - .../dataInsight/algorithms/drift/index.ts | 73 - .../algorithms/drift/pageHinkley.ts | 61 - .../algorithms/extremeValue/index.ts | 106 - .../src/atom/dataInsight/algorithms/index.ts | 197 - .../algorithms/majorityValue/index.ts | 86 - .../dataInsight/algorithms/outlier/dbscan.ts | 84 - .../algorithms/outlier/difference.ts | 107 - .../dataInsight/algorithms/outlier/lof.ts | 167 - .../algorithms/outlier/statistics.ts | 111 - .../algorithms/overallTrending/index.ts | 90 - .../atom/dataInsight/algorithms/revised.ts | 195 - .../atom/dataInsight/algorithms/statistics.ts | 212 - .../atom/dataInsight/algorithms/template.ts | 470 - .../algorithms/turningPoint/index.ts | 79 - .../algorithms/volatility/index.ts | 57 - packages/vmind/src/atom/dataInsight/const.ts | 1 - .../vmind/src/atom/dataInsight/dataProcess.ts | 182 - packages/vmind/src/atom/dataInsight/index.ts | 148 - packages/vmind/src/atom/dataInsight/prompt.ts | 60 - packages/vmind/src/atom/dataInsight/type.ts | 186 - packages/vmind/src/atom/dataInsight/utils.ts | 85 - packages/vmind/src/atom/dataQuery/const.ts | 183 - .../vmind/src/atom/dataQuery/executeQuery.ts | 148 - packages/vmind/src/atom/dataQuery/index.ts | 107 - packages/vmind/src/atom/dataQuery/prompt.ts | 98 - packages/vmind/src/atom/dataQuery/utils.ts | 353 - packages/vmind/src/atom/imageReader/index.ts | 65 - .../vmind/src/atom/imageReader/interface.ts | 113 - packages/vmind/src/atom/imageReader/prompt.ts | 102 - packages/vmind/src/atom/index.ts | 14 - packages/vmind/src/atom/specInsight/index.ts | 346 - packages/vmind/src/core/VMind.ts | 371 - packages/vmind/src/core/factory.ts | 24 - packages/vmind/src/core/llm.ts | 153 - packages/vmind/src/core/memory.ts | 5 - packages/vmind/src/core/rag.ts | 137 - packages/vmind/src/index.ts | 38 - packages/vmind/src/schedule/index.ts | 137 - packages/vmind/src/types/atom.ts | 357 - packages/vmind/src/types/chart.ts | 270 - packages/vmind/src/types/index.ts | 5 - packages/vmind/src/types/llm.ts | 154 - packages/vmind/src/types/rag.ts | 44 - packages/vmind/src/types/schedule.ts | 76 - packages/vmind/src/types/utils.ts | 23 - packages/vmind/src/utils/cluster.ts | 101 - packages/vmind/src/utils/common.ts | 141 - packages/vmind/src/utils/dataTable.ts | 93 - packages/vmind/src/utils/field.ts | 28 - packages/vmind/src/utils/json.ts | 51 - packages/vmind/src/utils/llm.ts | 1 - packages/vmind/src/utils/set.ts | 119 - packages/vmind/src/utils/spec.ts | 440 - packages/vmind/src/utils/text.ts | 27 - packages/vmind/src/utils/unfold.ts | 77 - packages/vmind/src/utils/video.ts | 124 - packages/vmind/test-setup.js | 17 - packages/vmind/tsconfig.eslint.json | 11 - packages/vmind/tsconfig.json | 31 - packages/vmind/tsconfig.test.json | 16 - packages/vmind/types/jstat.d.ts | 4 - pyproject.toml | 11 + readme-zh.md | 302 - ruff.toml | 4 + rush.json | 87 - share/eslint-config/package.json | 22 - share/eslint-config/profile/common.js | 93 - share/eslint-config/profile/lib.js | 2 - share/eslint-config/profile/react.js | 1 - share/jest-config/jest.base.js | 55 - share/jest-config/package.json | 19 - share/ts-config/package.json | 5 - share/ts-config/tsconfig.base.json | 24 - skills/vchart-development-assistant/SKILL.md | 499 + .../references/DIRECT_PATH_ROUTING.md | 169 + .../references/FILE_NAMING_CONVENTIONS.md | 350 + .../references/SCRIPTS_TROUBLESHOOTING.md | 506 + .../references/SCRIPT_PARAMS_REFERENCE.md | 370 + .../references/api/API_INDEX.md | 287 + .../references/api/animation-api.md | 223 + .../references/api/coordinate-api.md | 293 + .../references/api/data-api.md | 386 + .../references/api/event-api.md | 446 + .../references/api/export-api.md | 319 + .../references/api/interaction-api.md | 308 + .../references/api/layout-api.md | 184 + .../references/api/legend-api.md | 191 + .../references/api/state-api.md | 378 + .../references/api/theme-api.md | 255 + .../references/chart/chart-type-guide.md | 151 + .../references/chart/common-issues.md | 438 + .../references/components/axis.md | 322 + .../references/components/crosshair.md | 344 + .../references/components/dataZoom.md | 328 + .../references/components/label.md | 329 + .../references/components/legend.md | 371 + .../references/components/mark.md | 440 + .../references/components/title.md | 242 + .../references/components/tooltip.md | 461 + .../references/examples/area/basic-area.md | 225 + .../references/examples/bar/basic-bar.md | 154 + .../references/examples/bar/grouped-bar.md | 117 + .../references/examples/bar/stacked-bar.md | 174 + .../examples/combination/dual-axis.md | 291 + .../examples/funnel/basic-funnel.md | 237 + .../references/examples/gauge/basic-gauge.md | 349 + .../references/examples/line/basic-line.md | 204 + .../references/examples/pie/basic-pie.md | 221 + .../references/examples/radar/basic-radar.md | 235 + .../examples/sankey/basic-sankey.md | 471 + .../examples/sankey/hierarchy-sankey.md | 335 + .../examples/scatter/basic-scatter.md | 194 + .../references/sops/SOP_INDEX.md | 88 + .../references/sops/cdn-script-adaption.md | 152 + .../references/sops/format-method.md | 469 + .../references/sops/tooltip-crosshair-sync.md | 251 + .../references/sops/tooltip-usage.md | 292 + .../references/topkey/all_common.json | 122 + .../references/topkey/area.json | 206 + .../references/topkey/bar.json | 210 + .../references/topkey/bar3d.json | 206 + .../references/topkey/boxPlot.json | 190 + .../references/topkey/circlePacking.json | 130 + .../references/topkey/circularProgress.json | 172 + .../references/topkey/common.json | 66 + .../references/topkey/correlation.json | 172 + .../references/topkey/funnel.json | 170 + .../references/topkey/funnel3d.json | 170 + .../references/topkey/gauge.json | 188 + .../references/topkey/heatmap.json | 174 + .../references/topkey/histogram.json | 206 + .../references/topkey/histogram3d.json | 206 + .../references/topkey/line.json | 202 + .../references/topkey/linearProgress.json | 130 + .../references/topkey/liquid.json | 86 + .../references/topkey/map.json | 142 + .../references/topkey/mosaic.json | 205 + .../references/topkey/pie.json | 191 + .../references/topkey/pie3d.json | 194 + .../references/topkey/radar.json | 207 + .../references/topkey/rangeArea.json | 213 + .../references/topkey/rangeColumn.json | 213 + .../references/topkey/rangeColumn3d.json | 213 + .../references/topkey/rose.json | 163 + .../references/topkey/sankey.json | 213 + .../references/topkey/scatter.json | 181 + .../references/topkey/sequence.json | 18 + .../references/topkey/sunburst.json | 170 + .../references/topkey/treemap.json | 178 + .../references/topkey/venn.json | 126 + .../references/topkey/waterfall.json | 218 + .../references/topkey/wordCloud.json | 178 + .../references/topkey/wordCloud3d.json | 184 + .../FunctionType-Type-Definition.md | 178 + .../GeometricMaskShape-Type-Definition.md | 146 + .../IAnimationConfig-Type-Definition.md | 343 + .../IArcLabelSpec-Type-Definition.md | 485 + .../IArcMarkSpec-Type-Definition.md | 229 + .../IAreaMarkSpec-Type-Definition.md | 277 + .../IBackgroundSpec-Type-Definition.md | 375 + .../IBoxPlotMarkSpec-Type-Definition.md | 223 + .../IBrushSpec-Type-Definition.md | 232 + .../ICartesianAxisSpec-Type-Definition.md | 448 + ...ICartesianCrosshairSpec-Type-Definition.md | 543 + .../ICellMarkSpec-Type-Definition.md | 275 + .../ICustomMarkSpec-Type-Definition.md | 364 + .../type-details/IData-Type-Definition.md | 263 + .../IDataZoomSpec-Type-Definition.md | 401 + ...IExtensionGroupMarkSpec-Type-Definition.md | 724 + .../IExtensionMarkSpec-Type-Definition.md | 214 + .../IFunnelLabelSpec-Type-Definition.md | 649 + .../IFunnelOuterLabelSpec-Type-Definition.md | 268 + .../IGroupMarkSpec-Type-Definition.md | 183 + .../IHierarchyData-Type-Definition.md | 305 + .../IHoverSpec-Type-Definition.md | 296 + .../IImageMarkSpec-Type-Definition.md | 193 + .../IIndicatorSpec-Type-Definition.md | 743 + .../IInteractionItemSpec-Type-Definition.md | 427 + .../ILabelSpec-Type-Definition.md | 350 + .../ILayoutPaddingSpec-Type-Definition.md | 214 + .../ILayoutSpec-Type-Definition.md | 514 + .../ILegendSpec-Type-Definition.md | 545 + .../ILineLikeLabelSpec-Type-Definition.md | 297 + .../ILineMarkSpec-Type-Definition.md | 302 + .../ILinearAxisSpec-Type-Definition.md | 83 + .../ILinkPathMarkSpec-Type-Definition.md | 293 + .../ILiquidMarkSpec-Type-Definition.md | 168 + .../ILiquidOutlineSpec-Type-Definition.md | 254 + .../IMarkAreaSpec-Type-Definition.md | 357 + .../IMarkLineSpec-Type-Definition.md | 384 + .../IMarkPointSpec-Type-Definition.md | 206 + .../type-details/IMarkSpec-Type-Definition.md | 367 + .../IMediaQuerySpec-Type-Definition.md | 366 + .../IMultiLabelSpec-Type-Definition.md | 188 + .../IOutlierMarkSpec-Type-Definition.md | 9 + .../type-details/IPadding-Type-Definition.md | 20 + .../IPathMarkSpec-Type-Definition.md | 241 + .../type-details/IPercent-Type-Definition.md | 3 + .../type-details/IPlayer-Type-Definition.md | 481 + .../IPolarAxisSpec-Type-Definition.md | 467 + .../IPolarCrosshairSpec-Type-Definition.md | 388 + .../IPolygonMarkSpec-Type-Definition.md | 190 + .../IRectMarkSpec-Type-Definition.md | 242 + .../IRippleMarkSpec-Type-Definition.md | 153 + .../IRuleMarkSpec-Type-Definition.md | 473 + .../ISankeyLabelSpec-Type-Definition.md | 397 + .../IScrollBarSpec-Type-Definition.md | 382 + .../ISelectSpec-Type-Definition.md | 321 + .../ISeriesSpec-Type-Definition.md | 368 + .../ISeriesStyle-Type-Definition.md | 429 + ...ackCornerRadiusCallback-Type-Definition.md | 302 + .../ISymbolMarkSpec-Type-Definition.md | 266 + .../ITextMarkSpec-Type-Definition.md | 331 + .../type-details/ITheme-Type-Definition.md | 461 + .../ITitleSpec-Type-Definition.md | 382 + .../ITooltipSpec-Type-Definition.md | 702 + .../ITotalLabelSpec-Type-Definition.md | 332 + .../IVisualSpecBase-Type-Definition.md | 307 + .../IVisualSpecScale-Type-Definition.md | 91 + .../IWaterfallTotalCustom-Type-Definition.md | 12 + .../IWaterfallTotalEnd-Type-Definition.md | 8 + .../IWaterfallTotalField-Type-Definition.md | 16 + .../LiquidShapeType-Type-Definition.md | 22 + .../RegionSpec-Type-Definition.md | 282 + .../type-details/ShapeType-Type-Definition.md | 46 + .../SunburstLabelConfig-Type-Definition.md | 21 + .../TextShapeMask-Type-Definition.md | 22 + .../WordCloudConfigType-Type-Definition.md | 67 + ...ordCloudShapeConfigType-Type-Definition.md | 58 + .../WordCloudShapeType-Type-Definition.md | 26 + .../references/type-meta/area.json | 1209 + .../references/type-meta/bar.json | 1225 + .../references/type-meta/boxPlot.json | 830 + .../references/type-meta/circlePacking.json | 963 + .../type-meta/circularProgress.json | 1153 + .../references/type-meta/common.json | 770 + .../references/type-meta/correlation.json | 772 + .../references/type-meta/funnel.json | 1076 + .../references/type-meta/gauge.json | 1180 + .../references/type-meta/heatmap.json | 1108 + .../references/type-meta/histogram.json | 1185 + .../references/type-meta/line.json | 1201 + .../references/type-meta/linearProgress.json | 1032 + .../references/type-meta/liquid.json | 826 + .../references/type-meta/map.json | 992 + .../references/type-meta/mosaic.json | 666 + .../references/type-meta/pictogram.json | 522 + .../references/type-meta/pie.json | 1133 + .../references/type-meta/radar.json | 801 + .../references/type-meta/rangeArea.json | 663 + .../references/type-meta/rangeColumn.json | 753 + .../references/type-meta/rose.json | 732 + .../references/type-meta/sankey.json | 923 + .../references/type-meta/scatter.json | 1158 + .../references/type-meta/sequence.json | 597 + .../references/type-meta/sunburst.json | 795 + .../references/type-meta/treemap.json | 818 + .../references/type-meta/venn.json | 962 + .../references/type-meta/waterfall.json | 798 + .../references/type-meta/wordCloud.json | 1167 + .../scripts/artifact_paths.py | 20 + .../scripts/generate_demo_html.py | 156 + .../scripts/generate_diagnosis_html.py | 116 + .../scripts/generate_diagnosis_react_html.py | 184 + .../scripts/search_knowledge.py | 81 + .../template/demo.html | 276 + .../template/diagnosis-react.html | 501 + .../template/diagnosis.html | 656 + .../workflows/scenario-1-diagnosis.md | 437 + .../workflows/scenario-1-react.md | 860 + .../workflows/scenario-2-generation.md | 395 + .../workflows/scenario-3-image-replication.md | 599 + skills/vtable-development-assistant/SKILL.md | 145 + .../references/examples/README.md | 15 + .../references/examples/cell-types.md | 254 + .../references/examples/custom-layout-jsx.md | 209 + .../examples/interaction-patterns.md | 281 + .../references/examples/list-table-basic.md | 160 + .../references/examples/list-table-tree.md | 162 + .../references/examples/pivot-chart.md | 195 + .../examples/pivot-table-analysis.md | 220 + .../references/knowledge/00-overview.md | 139 + .../references/knowledge/01-table-types.md | 326 + .../knowledge/02-column-cell-types.md | 337 + .../references/knowledge/03-style-theme.md | 273 + .../knowledge/04-custom-render-layout.md | 354 + .../references/knowledge/05-api-methods.md | 201 + .../references/knowledge/06-api-properties.md | 55 + .../references/knowledge/07-events.md | 249 + .../knowledge/08-pivot-dimensions.md | 329 + .../references/knowledge/09-data-binding.md | 301 + .../references/knowledge/10-interaction.md | 347 + .../knowledge/11-common-patterns.md | 355 + .../references/type/base-table-options.md | 262 + .../references/type/column-defines.md | 382 + .../references/type/custom-layout.md | 260 + .../references/type/custom-render.md | 198 + .../references/type/event-types.md | 283 + .../references/type/list-table-options.md | 126 + .../references/type/pivot-chart-options.md | 82 + .../references/type/pivot-table-options.md | 199 + .../references/type/pivot-types.md | 240 + .../references/type/style-defines.md | 254 + .../scripts/artifact_paths.py | 20 + .../scripts/generate_demo_html.py | 64 + .../scripts/generate_diagnosis_html.py | 77 + .../template/demo.html | 286 + .../template/diagnosis.html | 370 + .../workflows/scenario-1-diagnosis.md | 55 + .../workflows/scenario-2-generation.md | 91 + tests/test_api_agent.py | 335 + tests/test_case_inputs.py | 51 + tests/test_eval_runner.py | 238 + tests/test_local_search.py | 41 + tests/test_portable_install.py | 32 + tests/test_vchart_artifact_paths.py | 91 + tests/test_vtable_artifact_paths.py | 67 + tools/bundler/.eslintrc.js | 7 - tools/bundler/README.md | 114 - tools/bundler/bin/index.js | 4 - tools/bundler/fixtures/config/.gitignore | 4 - .../bundler/fixtures/config/bundler.config.js | 70 - tools/bundler/fixtures/config/package.json | 7 - .../bundler/fixtures/config/source/custom.css | 79 - .../fixtures/config/source/foo/bar/index.ts | 5 - .../fixtures/config/source/foo/bar/web.png | Bin 9048 -> 0 bytes .../fixtures/config/source/foo/index.ts | 1 - .../fixtures/config/source/global.d.ts | 2 - tools/bundler/fixtures/config/source/index.ts | 17 - .../fixtures/config/source/utils/index.ts | 15 - tools/bundler/fixtures/config/tsconfig.json | 18 - tools/bundler/package.json | 99 - tools/bundler/src/bootstrap.ts | 180 - tools/bundler/src/global.d.ts | 4 - tools/bundler/src/index.ts | 8 - tools/bundler/src/logic/alias.ts | 118 - tools/bundler/src/logic/babel.config.ts | 38 - tools/bundler/src/logic/config.test.ts | 77 - tools/bundler/src/logic/config.ts | 201 - tools/bundler/src/logic/debug.ts | 6 - tools/bundler/src/logic/package.ts | 31 - tools/bundler/src/logic/rollup.config.ts | 65 - tools/bundler/src/tasks/clean.ts | 17 - tools/bundler/src/tasks/copy.ts | 24 - tools/bundler/src/tasks/modules.ts | 164 - tools/bundler/src/tasks/style.ts | 85 - tools/bundler/src/tasks/umd.ts | 50 - tools/bundler/tsconfig.json | 21 - tools/bundler/vitest.config.ts | 7 - tools/typescript-json-schema/README.md | 323 - .../bin/typescript-json-schema | 3 - tools/typescript-json-schema/package.json | 40 - tools/typescript-json-schema/tsconfig.json | 29 - .../typescript-json-schema-cli.ts | 86 - .../typescript-json-schema.ts | 1787 - tools/typescript-json-schema/vchart.json | 79042 ---------------- uv.lock | 108 + 997 files changed, 90321 insertions(+), 222492 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintignore delete mode 100644 .gitattributes create mode 100755 .githooks/commit-msg create mode 100755 .githooks/pre-commit delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feaure_request.yml delete mode 100644 .github/ISSUE_TEMPLATE/others.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE/pr_cn.md delete mode 100644 .github/labeler.yml delete mode 100644 .github/workflows/labeler.yml delete mode 100644 .github/workflows/pr-check.yml delete mode 100644 .github/workflows/pre-release.yml delete mode 100644 .github/workflows/release-changelog.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/stale.yml delete mode 100644 .github/workflows/sync-main-to-develop.yml delete mode 100644 .github/workflows/unit-test.yml delete mode 100644 .lintstagedrc delete mode 100644 .prettierignore delete mode 100644 .prettierrc.js delete mode 100644 .vscode/settings.json create mode 100644 AGENTS.md delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.zh-CN.md delete mode 100644 README-ja.md create mode 100644 README.zh-CN.md delete mode 100644 common/autoinstallers/create/README.md delete mode 100644 common/autoinstallers/create/package.json delete mode 100644 common/autoinstallers/create/pnpm-lock.yaml delete mode 100644 common/autoinstallers/create/src/cli.ts delete mode 100644 common/autoinstallers/create/src/create.ts delete mode 100644 common/autoinstallers/create/src/global.d.ts delete mode 100644 common/autoinstallers/create/src/logger.ts delete mode 100644 common/autoinstallers/create/src/template.ts delete mode 100644 common/autoinstallers/create/templates/library/.eslintrc.js delete mode 100644 common/autoinstallers/create/templates/library/README.md delete mode 100644 common/autoinstallers/create/templates/library/bundler.config.js delete mode 100644 common/autoinstallers/create/templates/library/package.json delete mode 100644 common/autoinstallers/create/templates/library/src/global.d.ts delete mode 100644 common/autoinstallers/create/templates/library/src/index.ts delete mode 100644 common/autoinstallers/create/templates/library/tsconfig.json delete mode 100644 common/autoinstallers/create/templates/library/vite/index.html delete mode 100644 common/autoinstallers/create/templates/library/vite/public/vite.svg delete mode 100644 common/autoinstallers/create/templates/library/vite/src/App.css delete mode 100644 common/autoinstallers/create/templates/library/vite/src/App.tsx delete mode 100644 common/autoinstallers/create/templates/library/vite/src/assets/react.svg delete mode 100644 common/autoinstallers/create/templates/library/vite/src/index.css delete mode 100644 common/autoinstallers/create/templates/library/vite/src/main.tsx delete mode 100644 common/autoinstallers/create/templates/library/vite/src/vite-env.d.ts delete mode 100644 common/autoinstallers/create/templates/library/vite/tsconfig.json delete mode 100644 common/autoinstallers/create/templates/library/vite/tsconfig.node.json delete mode 100644 common/autoinstallers/create/templates/library/vite/vite.config.ts delete mode 100644 common/autoinstallers/create/tsconfig.json delete mode 100644 common/autoinstallers/lint/change-all.ts delete mode 100644 common/autoinstallers/lint/commit-lint.js delete mode 100644 common/autoinstallers/lint/commitlint.config.js delete mode 100644 common/autoinstallers/lint/package.json delete mode 100644 common/autoinstallers/lint/pnpm-lock.yaml delete mode 100644 common/autoinstallers/lint/prettier.ts delete mode 100644 common/autoinstallers/lint/tsconfig.json delete mode 100644 common/autoinstallers/run-script/package.json delete mode 100644 common/autoinstallers/run-script/pnpm-lock.yaml delete mode 100644 common/autoinstallers/run-script/run.ts delete mode 100644 common/autoinstallers/run-script/tsconfig.json delete mode 100644 common/config/rush/.npmrc delete mode 100644 common/config/rush/.npmrc-publish delete mode 100644 common/config/rush/.pnpmfile.cjs delete mode 100644 common/config/rush/artifactory.json delete mode 100644 common/config/rush/build-cache.json delete mode 100644 common/config/rush/command-line.json delete mode 100644 common/config/rush/common-versions.json delete mode 100644 common/config/rush/experiments.json delete mode 100644 common/config/rush/pnpm-config.json delete mode 100644 common/config/rush/pnpm-lock.yaml delete mode 100644 common/config/rush/repo-state.json delete mode 100644 common/config/rush/rush-plugins.json delete mode 100644 common/config/rush/version-policies.json delete mode 100644 common/git-hooks/commit-msg delete mode 100644 common/git-hooks/pre-commit delete mode 100644 common/git-hooks/pre-push delete mode 100644 common/scripts/apply-prerelease-version.js delete mode 100644 common/scripts/apply-release-version.js delete mode 100644 common/scripts/get-package-json.js delete mode 100644 common/scripts/hotfix-release.js delete mode 100644 common/scripts/install-run-rush-pnpm.js delete mode 100644 common/scripts/install-run-rush.js delete mode 100644 common/scripts/install-run-rushx.js delete mode 100644 common/scripts/install-run.js delete mode 100644 common/scripts/parse-version.js delete mode 100644 common/scripts/pre-release.js delete mode 100644 common/scripts/release.js delete mode 100644 common/scripts/set-json-file.js delete mode 100644 common/scripts/set-prerelease-version.js delete mode 100644 common/scripts/sort_deps.js delete mode 100644 common/scripts/version-policies.js delete mode 100644 common/template/chart.d.ts delete mode 100644 common/template/chart.js delete mode 100644 common/template/component.d.ts delete mode 100644 common/template/component.js delete mode 100644 common/template/core.d.ts delete mode 100644 common/template/core.js delete mode 100644 common/template/layout.d.ts delete mode 100644 common/template/layout.js delete mode 100644 common/template/mark.d.ts delete mode 100644 common/template/mark.js delete mode 100644 common/template/series.d.ts delete mode 100644 common/template/series.js delete mode 100644 docs/assets/api/en/VMind_Instance.md delete mode 100644 docs/assets/api/en/dataQuery.md delete mode 100644 docs/assets/api/en/fillSpecWithData.md delete mode 100644 docs/assets/api/en/generateChart.md delete mode 100644 docs/assets/api/en/getFieldInfo.md delete mode 100644 docs/assets/api/en/getInsights.md delete mode 100644 docs/assets/api/en/parseCSVData.md delete mode 100644 docs/assets/api/en/text2Chart.md delete mode 100644 docs/assets/api/menu.json delete mode 100644 docs/assets/api/zh/VMind_Instance.md delete mode 100644 docs/assets/api/zh/dataQuery.md delete mode 100644 docs/assets/api/zh/fillSpecWithData.md delete mode 100644 docs/assets/api/zh/generateChart.md delete mode 100644 docs/assets/api/zh/getFieldInfo.md delete mode 100644 docs/assets/api/zh/getInsights.md delete mode 100644 docs/assets/api/zh/parseCSVData.md delete mode 100644 docs/assets/api/zh/text2Chart.md delete mode 100644 docs/assets/changelog/en/release.md delete mode 100644 docs/assets/changelog/zh/release.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Chart_Advisor.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Chart_Generation.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Chart_Insight.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Create_VMind_Instance.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Data_Aggregation.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Data_Extraction.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/Data_Process.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/How_to_Get_VMind.md delete mode 100644 docs/assets/guide/en/Basic_Tutorial/How_to_Import_VMind.md delete mode 100644 docs/assets/guide/en/Contribution_Guide.md delete mode 100644 docs/assets/guide/en/Getting_Started/Getting_Started.md delete mode 100644 docs/assets/guide/en/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md delete mode 100644 docs/assets/guide/en/Intro_to_VMind.md delete mode 100644 docs/assets/guide/en/VMind_OpenAPI.md delete mode 100644 docs/assets/guide/en/VMind_Website_Guide.md delete mode 100644 docs/assets/guide/menu.json delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Chart_Advisor.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Chart_Generation.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Chart_Insight.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Create_VMind_Instance.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Data_Aggregation.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Data_Extraction.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/Data_Process.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/How_to_Get_VMind.md delete mode 100644 docs/assets/guide/zh/Basic_Tutorial/How_to_Import_VMind.md delete mode 100644 docs/assets/guide/zh/Contribution_Guide.md delete mode 100644 docs/assets/guide/zh/Getting_Started/Getting_Started.md delete mode 100644 docs/assets/guide/zh/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md delete mode 100644 docs/assets/guide/zh/Intro_to_VMind.md delete mode 100644 docs/assets/guide/zh/VMind_OpenAPI.md delete mode 100644 docs/assets/guide/zh/VMind_Website_Guide.md delete mode 100644 docs/assets/openManus/Amazon_Fashion_Sales_Analysis_Report.md delete mode 100644 docs/assets/openManus/Readme.md delete mode 100644 docs/assets/openManus/amazon_sales_jan2025.csv delete mode 100644 docs/assets/openManus/aov_trend.png delete mode 100644 docs/assets/openManus/correlation_heatmap.png delete mode 100644 docs/assets/openManus/daily_sales_trend.png delete mode 100644 docs/assets/openManus/home/ubuntu/analysis/data_exploration.txt delete mode 100644 docs/assets/openManus/home/ubuntu/analysis/preprocessing_results.txt delete mode 100644 docs/assets/openManus/home/ubuntu/analysis/sales_analysis_results.txt delete mode 100644 docs/assets/openManus/home/ubuntu/todo.md delete mode 100644 docs/assets/openManus/key_insights.md delete mode 100644 docs/assets/openManus/orders_by_day.png delete mode 100644 docs/assets/openManus/outlier_comparison.png delete mode 100644 docs/assets/openManus/profit_margin_by_discount.png delete mode 100644 docs/assets/openManus/sales_by_day.png delete mode 100644 docs/assets/openManus/sales_growth_strategies.md delete mode 100644 docs/assets/openManus/weekend_comparison.png delete mode 100644 docs/assets/openManus/weekly_sales.png delete mode 100644 docs/assets/scenario/en/Chart_Assistant.md delete mode 100644 docs/assets/scenario/en/Data_Development.md delete mode 100644 docs/assets/scenario/en/Data_Video.md delete mode 100644 docs/assets/scenario/en/Document_Assistant.md delete mode 100644 docs/assets/scenario/en/OpenManus_VMind.md delete mode 100644 docs/assets/scenario/en/Open_API.md delete mode 100644 docs/assets/scenario/en/Wordcloud_Cube.md delete mode 100644 docs/assets/scenario/menu.json delete mode 100644 docs/assets/scenario/zh/Chart_Assistant.md delete mode 100644 docs/assets/scenario/zh/Data_Development.md delete mode 100644 docs/assets/scenario/zh/Data_Video.md delete mode 100644 docs/assets/scenario/zh/Document_Assistant.md delete mode 100644 docs/assets/scenario/zh/OpenManus_VMind.md delete mode 100644 docs/assets/scenario/zh/Open_API.md delete mode 100644 docs/assets/scenario/zh/Wordcloud_Cube.md create mode 100644 docs/debugging.md delete mode 100644 docs/index.html delete mode 100644 docs/index.js delete mode 100644 docs/libs/template-parse/build.js delete mode 100644 docs/libs/template-parse/etpl.js delete mode 100644 docs/libs/template-parse/md2json.js delete mode 100644 docs/libs/template-parse/schemaHelper.js delete mode 100644 docs/menu.json create mode 100644 docs/migration/plan.md create mode 100644 docs/migration/provenance.json create mode 100644 docs/migration/vchart-case-expansion.md create mode 100644 docs/migration/vchart-case-status.json create mode 100644 docs/migration/verification.md delete mode 100644 docs/package.json delete mode 100644 docs/src/app.tsx delete mode 100644 docs/src/header.tsx delete mode 100644 docs/src/i18n.tsx delete mode 100644 docs/src/main.tsx delete mode 100644 docs/src/markdown.tsx delete mode 100644 docs/src/option.tsx delete mode 100644 docs/src/option/description.tsx delete mode 100644 docs/src/option/index.css delete mode 100644 docs/src/option/index.tsx delete mode 100644 docs/src/option/outline.tsx delete mode 100644 docs/style.css delete mode 100644 docs/tsconfig.json delete mode 100644 docs/tsconfig.node.json delete mode 100644 docs/vite.config.js create mode 100644 evals/README.md create mode 100644 evals/README.zh-CN.md create mode 100644 evals/cases/README.md create mode 100644 evals/cases/README.zh-CN.md create mode 100644 evals/cases/vchart-development-assistant/README.md create mode 100644 evals/cases/vchart-development-assistant/README.zh-CN.md create mode 100644 evals/cases/vchart-development-assistant/expectations.json create mode 100644 evals/cases/vchart-development-assistant/fixtures.json create mode 100644 evals/cases/vchart-development-assistant/inputs/broken-chart.js create mode 100644 evals/cases/vchart-development-assistant/inputs/chinese.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/dual.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/empty.json create mode 100644 evals/cases/vchart-development-assistant/inputs/funnel.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/heat.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/line-null.json create mode 100644 evals/cases/vchart-development-assistant/inputs/log.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/long-labels.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/points.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/radar.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/reference-bars.png create mode 100644 evals/cases/vchart-development-assistant/inputs/reference-bars.svg create mode 100644 evals/cases/vchart-development-assistant/inputs/sales.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/sequence.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/share.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/signed.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/sort.csv create mode 100644 evals/cases/vchart-development-assistant/inputs/trend.csv create mode 100644 evals/cases/vchart-development-assistant/selection.json create mode 100644 evals/cases/vchart-development-assistant/tasks.json create mode 100644 evals/cases/vtable-development-assistant/README.md create mode 100644 evals/cases/vtable-development-assistant/README.zh-CN.md create mode 100644 evals/cases/vtable-development-assistant/expectations.json create mode 100644 evals/cases/vtable-development-assistant/fixtures.json create mode 100644 evals/cases/vtable-development-assistant/inputs/broken-table.js create mode 100644 evals/cases/vtable-development-assistant/inputs/sales.csv create mode 100644 evals/cases/vtable-development-assistant/tasks.json create mode 100644 evals/examples/chart-prompt.md create mode 100644 evals/model.compatible.example.json create mode 100644 evals/model.example.json create mode 100644 evals/package-lock.json create mode 100644 evals/package.json create mode 100644 evals/scripts/api_agent.py create mode 100644 evals/scripts/check-browser.mjs create mode 100644 evals/scripts/run.py delete mode 100644 option delete mode 100644 packages/calculator/LICENSE delete mode 100644 packages/calculator/README.md delete mode 100644 packages/calculator/jest.config.js delete mode 100644 packages/calculator/package.json delete mode 100644 packages/calculator/src/astParser/astPipes.ts delete mode 100644 packages/calculator/src/astParser/index.ts delete mode 100644 packages/calculator/src/astParser/parseSqlAST.ts delete mode 100644 packages/calculator/src/astParser/type.ts delete mode 100644 packages/calculator/src/astParser/utils.ts delete mode 100644 packages/calculator/src/index.ts delete mode 100644 packages/calculator/src/join.test.ts delete mode 100644 packages/calculator/src/join.ts delete mode 100644 packages/calculator/src/mocks/index.ts delete mode 100644 packages/calculator/src/mocks/table.ts delete mode 100644 packages/calculator/src/pipe.ts delete mode 100644 packages/calculator/src/pipes/aggregate/aggregate.ts delete mode 100644 packages/calculator/src/pipes/aggregate/index.ts delete mode 100644 packages/calculator/src/pipes/aggregate/methods.ts delete mode 100644 packages/calculator/src/pipes/distinct.test.ts delete mode 100644 packages/calculator/src/pipes/distinct.ts delete mode 100644 packages/calculator/src/pipes/filter/filter.ts delete mode 100644 packages/calculator/src/pipes/filter/having.test.ts delete mode 100644 packages/calculator/src/pipes/filter/having.ts delete mode 100644 packages/calculator/src/pipes/filter/index.ts delete mode 100644 packages/calculator/src/pipes/filter/where.test.ts delete mode 100644 packages/calculator/src/pipes/filter/where.ts delete mode 100644 packages/calculator/src/pipes/group.test.ts delete mode 100644 packages/calculator/src/pipes/group.ts delete mode 100644 packages/calculator/src/pipes/index.ts delete mode 100644 packages/calculator/src/pipes/limit.ts delete mode 100644 packages/calculator/src/pipes/order.test.ts delete mode 100644 packages/calculator/src/pipes/order.ts delete mode 100644 packages/calculator/src/pipes/select.test.ts delete mode 100644 packages/calculator/src/pipes/select.ts delete mode 100644 packages/calculator/src/query.test.ts delete mode 100644 packages/calculator/src/query.ts delete mode 100644 packages/calculator/src/types/aggregate.ts delete mode 100644 packages/calculator/src/types/data.ts delete mode 100644 packages/calculator/src/types/filter.ts delete mode 100644 packages/calculator/src/types/group.ts delete mode 100644 packages/calculator/src/types/index.ts delete mode 100644 packages/calculator/src/types/join.ts delete mode 100644 packages/calculator/src/types/query.ts delete mode 100644 packages/calculator/src/types/select.ts delete mode 100644 packages/calculator/src/utils/includes.ts delete mode 100644 packages/calculator/src/utils/index.ts delete mode 100644 packages/calculator/src/utils/ordered.ts delete mode 100644 packages/calculator/src/utils/typeCheck.ts delete mode 100644 packages/calculator/tsconfig.cjs.json delete mode 100644 packages/calculator/tsconfig.esm.json delete mode 100644 packages/calculator/tsconfig.json delete mode 100644 packages/calculator/tsconfig.test.json delete mode 100644 packages/chart-advisor/.eslintrc.cjs delete mode 100644 packages/chart-advisor/LICENSE delete mode 100644 packages/chart-advisor/README.md delete mode 100644 packages/chart-advisor/__tests__/Q1.test.ts delete mode 100644 packages/chart-advisor/__tests__/base.test.ts delete mode 100644 packages/chart-advisor/__tests__/score.test.ts delete mode 100644 packages/chart-advisor/__tests__/tsconfig.json delete mode 100644 packages/chart-advisor/exampleChart.png delete mode 100644 packages/chart-advisor/jest.config.js delete mode 100644 packages/chart-advisor/package.json delete mode 100644 packages/chart-advisor/src/constant.ts delete mode 100644 packages/chart-advisor/src/dataUtil.ts delete mode 100644 packages/chart-advisor/src/fieldAssign.ts delete mode 100644 packages/chart-advisor/src/fieldUtils.ts delete mode 100644 packages/chart-advisor/src/index.ts delete mode 100644 packages/chart-advisor/src/pivot.ts delete mode 100644 packages/chart-advisor/src/score.ts delete mode 100644 packages/chart-advisor/src/type.ts delete mode 100644 packages/chart-advisor/tsconfig.cjs.json delete mode 100644 packages/chart-advisor/tsconfig.eslint.json delete mode 100644 packages/chart-advisor/tsconfig.esm.json delete mode 100644 packages/chart-advisor/tsconfig.json delete mode 100644 packages/chart-advisor/tsconfig.test.json delete mode 100644 packages/generate-vchart/.eslintignore delete mode 100644 packages/generate-vchart/.eslintrc.cjs delete mode 100644 packages/generate-vchart/LICENSE delete mode 100644 packages/generate-vchart/README.md delete mode 100644 packages/generate-vchart/__tests__/common.ts delete mode 100644 packages/generate-vchart/__tests__/data.test.ts delete mode 100644 packages/generate-vchart/__tests__/field.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/bar.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/bidirectionalBar.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/boxplot.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/circlePacking.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/circularProgress.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/common.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/comparativeFunnel.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/dualAxis.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/funnel.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/gauge.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/heatmap.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/line.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/linearProgress.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/liquid.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/map.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/pie.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/polar.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/radar.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/rangeColumn.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/rankingBar.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/rose.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/sankey.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/scatter.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/sunburst.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/treemap.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/venn.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/waterfall.test.ts delete mode 100644 packages/generate-vchart/__tests__/transformers/wordcloud.test.ts delete mode 100644 packages/generate-vchart/__tests__/tsconfig.json delete mode 100644 packages/generate-vchart/__tests__/utils/data.test.ts delete mode 100644 packages/generate-vchart/__tests__/utils/date.test.ts delete mode 100644 packages/generate-vchart/__tests__/utils/field.test.ts delete mode 100644 packages/generate-vchart/jest.config.js delete mode 100644 packages/generate-vchart/package.json delete mode 100644 packages/generate-vchart/src/index.ts delete mode 100644 packages/generate-vchart/src/pipeline.ts delete mode 100644 packages/generate-vchart/src/transformers/bar.ts delete mode 100644 packages/generate-vchart/src/transformers/bidirectionalBar.ts delete mode 100644 packages/generate-vchart/src/transformers/boxplot.ts delete mode 100644 packages/generate-vchart/src/transformers/cartesian.ts delete mode 100644 packages/generate-vchart/src/transformers/circlePacking.ts delete mode 100644 packages/generate-vchart/src/transformers/circularProgress.ts delete mode 100644 packages/generate-vchart/src/transformers/common.ts delete mode 100644 packages/generate-vchart/src/transformers/comparativeFunnel.ts delete mode 100644 packages/generate-vchart/src/transformers/dualAxis.ts delete mode 100644 packages/generate-vchart/src/transformers/funnel.ts delete mode 100644 packages/generate-vchart/src/transformers/gauge.ts delete mode 100644 packages/generate-vchart/src/transformers/heatmap.ts delete mode 100644 packages/generate-vchart/src/transformers/index.ts delete mode 100644 packages/generate-vchart/src/transformers/line.ts delete mode 100644 packages/generate-vchart/src/transformers/linearProgress.ts delete mode 100644 packages/generate-vchart/src/transformers/liquid.ts delete mode 100644 packages/generate-vchart/src/transformers/map.ts delete mode 100644 packages/generate-vchart/src/transformers/pie.ts delete mode 100644 packages/generate-vchart/src/transformers/polar.ts delete mode 100644 packages/generate-vchart/src/transformers/radar.ts delete mode 100644 packages/generate-vchart/src/transformers/rangeColumn.ts delete mode 100644 packages/generate-vchart/src/transformers/rankingBar.ts delete mode 100644 packages/generate-vchart/src/transformers/rose.ts delete mode 100644 packages/generate-vchart/src/transformers/sankey.ts delete mode 100644 packages/generate-vchart/src/transformers/scatter.ts delete mode 100644 packages/generate-vchart/src/transformers/sunburst.ts delete mode 100644 packages/generate-vchart/src/transformers/treemap.ts delete mode 100644 packages/generate-vchart/src/transformers/venn.ts delete mode 100644 packages/generate-vchart/src/transformers/waterfall.ts delete mode 100644 packages/generate-vchart/src/transformers/wordcloud.ts delete mode 100644 packages/generate-vchart/src/types/index.ts delete mode 100644 packages/generate-vchart/src/types/transform.ts delete mode 100644 packages/generate-vchart/src/types/visualMap.ts delete mode 100644 packages/generate-vchart/src/utils/constants.ts delete mode 100644 packages/generate-vchart/src/utils/data.ts delete mode 100644 packages/generate-vchart/src/utils/enum.ts delete mode 100644 packages/generate-vchart/src/utils/field.ts delete mode 100644 packages/generate-vchart/src/utils/index.ts delete mode 100644 packages/generate-vchart/src/utils/type.ts delete mode 100644 packages/generate-vchart/tsconfig.cjs.json delete mode 100644 packages/generate-vchart/tsconfig.eslint.json delete mode 100644 packages/generate-vchart/tsconfig.esm.json delete mode 100644 packages/generate-vchart/tsconfig.json delete mode 100644 packages/vmind/.eslintrc.cjs delete mode 100644 packages/vmind/CHANGELOG.json delete mode 100644 packages/vmind/CHANGELOG.md delete mode 100644 packages/vmind/README.md delete mode 100644 packages/vmind/__tests__/browser/index.html delete mode 100644 packages/vmind/__tests__/browser/src/App.tsx delete mode 100644 packages/vmind/__tests__/browser/src/Layout.tsx delete mode 100644 packages/vmind/__tests__/browser/src/constants/capcutData.ts delete mode 100644 packages/vmind/__tests__/browser/src/constants/chartGeneratorData.ts delete mode 100644 packages/vmind/__tests__/browser/src/constants/mockData.ts delete mode 100644 packages/vmind/__tests__/browser/src/constants/mockResponse.ts delete mode 100644 packages/vmind/__tests__/browser/src/index.scss delete mode 100644 packages/vmind/__tests__/browser/src/index.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartGeneration.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartPreview.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/ChartGeneration/DataInput.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/DataExtraction/DataExtractionPage.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/DataExtraction/DataInput.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/DataExtraction/DataTable.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Home.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Insight/ChartPreview.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Insight/DataInput.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Insight/Insight.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Insight/data/index.ts delete mode 100644 packages/vmind/__tests__/browser/src/pages/Insight/data/insightData.ts delete mode 100644 packages/vmind/__tests__/browser/src/pages/NewChartGeneration/ChartGeneration.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/NewChartGeneration/ChartPreview.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/NewChartGeneration/DataInput.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/NewDataExtraction/DataInput.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/NewDataExtraction/DataTable.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/NewDataExtraction/index.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Text2Chart/ChartPreview.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Text2Chart/DataInput.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/Text2Chart/TextToChart.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/constants.tsx delete mode 100644 packages/vmind/__tests__/browser/src/pages/index.scss delete mode 100644 packages/vmind/__tests__/browser/tsconfig.json delete mode 100644 packages/vmind/__tests__/browser/tsconfig.node.json delete mode 100644 packages/vmind/__tests__/browser/vite.config.ts delete mode 100644 packages/vmind/__tests__/experiment/index.html delete mode 100644 packages/vmind/__tests__/experiment/src/App.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/Layout.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/data/capcutDataCn.ts delete mode 100644 packages/vmind/__tests__/experiment/src/data/capcutDataEn.ts delete mode 100644 packages/vmind/__tests__/experiment/src/data/capcutV2Data.ts delete mode 100644 packages/vmind/__tests__/experiment/src/data/dataExtractionData.ts delete mode 100644 packages/vmind/__tests__/experiment/src/data/editorData.ts delete mode 100644 packages/vmind/__tests__/experiment/src/data/qaData.ts delete mode 100644 packages/vmind/__tests__/experiment/src/data/topKeyQA.ts delete mode 100644 packages/vmind/__tests__/experiment/src/index.scss delete mode 100644 packages/vmind/__tests__/experiment/src/index.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/color.scss delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/const.ts delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/logo.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/qaPairRag.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/rag.scss delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/specEditor.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartDialogueQA/test.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartGenerator/caseStudy.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartGenerator/test.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/ChartGenerator/type.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/DataExtraction/caseStudy.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/DataExtraction/test.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/DataExtraction/type.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/DataExtraction/verify.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/Home.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/constants.tsx delete mode 100644 packages/vmind/__tests__/experiment/src/pages/page.scss delete mode 100644 packages/vmind/__tests__/experiment/src/utils.ts delete mode 100644 packages/vmind/__tests__/experiment/tsconfig.json delete mode 100644 packages/vmind/__tests__/experiment/tsconfig.node.json delete mode 100644 packages/vmind/__tests__/experiment/vite.config.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/.eslintrc.js delete mode 100644 packages/vmind/__tests__/image-to-spec/jest.config.js delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/area-basis.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/area-percent.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-bi-direction.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-colorful.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-gradient.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-group.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-h-group.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-h-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-horizontal.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-percent.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-tgi.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/bar-two-directions.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/circle-packing-bubble.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/circle-packing-simple.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/circular-progress.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/dual-axis.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/funnel-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/funnel-comparative.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/funnel-rect.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/funnel-transform.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/gauge-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/gauge-segment.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/heatmap-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/histogram-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/histogram-different-bin.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/index.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/line-bar.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/line-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/line-mark-area.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/line-markline.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/line-multi-markline.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/line-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/linear-grogress-segment.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/linear-progress.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/liquid-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/liquid-star.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/pie-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/pie-donut.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/pie-nested.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/radar-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/radar-group.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/radar-innerradius.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/radar-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/range-bar.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/range-column.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/rose-basis.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/rose-group-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/rose-group.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/rose-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/sankey-simple.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/scatter-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/scatter-bubble.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/scatter-markline.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/sunburst-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/treemap.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/venn-hollow.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/venn-three.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/waterfall-collect.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/waterfall-h.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/waterfall-stack.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/waterfall.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/spec/wordcloud-basic.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/test-setup.js delete mode 100644 packages/vmind/__tests__/image-to-spec/testImage.test.ts delete mode 100644 packages/vmind/__tests__/image-to-spec/tsconfig.json delete mode 100644 packages/vmind/__tests__/performance/performance.test.ts delete mode 100644 packages/vmind/__tests__/tsconfig.json delete mode 100644 packages/vmind/__tests__/unit/chartGenerator/chartTypeUtils.test.ts delete mode 100644 packages/vmind/__tests__/unit/chartGenerator/checkChartTypeAndCell.test.ts delete mode 100644 packages/vmind/__tests__/unit/chartGenerator/simpleSpec.test.ts delete mode 100644 packages/vmind/__tests__/unit/getChartSpecWithContext_BasicHeapMap.test.ts delete mode 100644 packages/vmind/__tests__/unit/getChartSpecWithContext_boxplot.test.ts delete mode 100644 packages/vmind/__tests__/unit/getChartSpecWithContext_gauge.test.ts delete mode 100644 packages/vmind/__tests__/unit/getChartSpecWithContext_pie.test.ts delete mode 100644 packages/vmind/__tests__/unit/getChartSpecWithContext_waterfall.test.ts delete mode 100644 packages/vmind/__tests__/unit/specInsights/dual-axis.test.ts delete mode 100644 packages/vmind/__tests__/unit/specInsights/growth-markline.test.ts delete mode 100644 packages/vmind/__tests__/unit/specInsights/stacked-bar.test.ts delete mode 100644 packages/vmind/__tests__/unit/utils/date.test.ts delete mode 100644 packages/vmind/__tests__/unit/utils/delete.test.ts delete mode 100644 packages/vmind/__tests__/unit/utils/set.test.ts delete mode 100644 packages/vmind/__tests__/unit/vchartSpec/bar.test.ts delete mode 100644 packages/vmind/__tests__/unit/vchartSpec/commonChart.test.ts delete mode 100644 packages/vmind/__tests__/unit/vchartSpec/components/markLine.test.ts delete mode 100644 packages/vmind/__tests__/unit/vchartSpec/stack-bar.test.ts delete mode 100644 packages/vmind/__tests__/unit/vchartSpec/util.test.ts delete mode 100644 packages/vmind/bundler.config.js delete mode 100644 packages/vmind/jest.config.js delete mode 100644 packages/vmind/jest.performance.config.js delete mode 100644 packages/vmind/package.json delete mode 100644 packages/vmind/readme-zh.md delete mode 100644 packages/vmind/src/applications/chartGeneration/index.ts delete mode 100644 packages/vmind/src/applications/dataAggregation/index.ts delete mode 100644 packages/vmind/src/applications/dataExtraction/index.ts delete mode 100644 packages/vmind/src/applications/dataInsight/index.ts delete mode 100644 packages/vmind/src/applications/index.ts delete mode 100644 packages/vmind/src/applications/utils.ts delete mode 100644 packages/vmind/src/atom/VChartSpec/index.ts delete mode 100644 packages/vmind/src/atom/VChartSpec/utils.ts delete mode 100644 packages/vmind/src/atom/base.ts delete mode 100644 packages/vmind/src/atom/chartCommand/index.ts delete mode 100644 packages/vmind/src/atom/chartCommand/multiple.ts delete mode 100644 packages/vmind/src/atom/chartCommand/prompt.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/advisor/index.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/const.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/index.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/llmResultRevise.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/prompt/examples.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/prompt/index.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/prompt/knowledges.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/rule/index.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/spec/chartTypeUtils.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/spec/index.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/spec/simpleSpec.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/type.ts delete mode 100644 packages/vmind/src/atom/chartGenerator/utils.ts delete mode 100644 packages/vmind/src/atom/chartQAExtraction/index.ts delete mode 100644 packages/vmind/src/atom/chartQAExtraction/prompt.ts delete mode 100644 packages/vmind/src/atom/customAtom/index.ts delete mode 100644 packages/vmind/src/atom/dataClean/dataClean.ts delete mode 100644 packages/vmind/src/atom/dataClean/index.ts delete mode 100644 packages/vmind/src/atom/dataClean/multiple.ts delete mode 100644 packages/vmind/src/atom/dataClean/utils.ts delete mode 100644 packages/vmind/src/atom/dataExtraction/index.ts delete mode 100644 packages/vmind/src/atom/dataExtraction/prompt/capcutPrompt.ts delete mode 100644 packages/vmind/src/atom/dataExtraction/prompt/doubaoPrompt.ts delete mode 100644 packages/vmind/src/atom/dataExtraction/prompt/gptPrompt.ts delete mode 100644 packages/vmind/src/atom/dataExtraction/prompt/prompt.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/abnormalTrend/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/base/baseStatistics.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/correlation/pearson.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/correlation/spearman.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/drift/adwin.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/drift/bucket.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/drift/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/drift/pageHinkley.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/extremeValue/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/majorityValue/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/outlier/dbscan.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/outlier/difference.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/outlier/lof.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/outlier/statistics.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/overallTrending/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/revised.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/statistics.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/template.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/turningPoint/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/algorithms/volatility/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/const.ts delete mode 100644 packages/vmind/src/atom/dataInsight/dataProcess.ts delete mode 100644 packages/vmind/src/atom/dataInsight/index.ts delete mode 100644 packages/vmind/src/atom/dataInsight/prompt.ts delete mode 100644 packages/vmind/src/atom/dataInsight/type.ts delete mode 100644 packages/vmind/src/atom/dataInsight/utils.ts delete mode 100644 packages/vmind/src/atom/dataQuery/const.ts delete mode 100644 packages/vmind/src/atom/dataQuery/executeQuery.ts delete mode 100644 packages/vmind/src/atom/dataQuery/index.ts delete mode 100644 packages/vmind/src/atom/dataQuery/prompt.ts delete mode 100644 packages/vmind/src/atom/dataQuery/utils.ts delete mode 100644 packages/vmind/src/atom/imageReader/index.ts delete mode 100644 packages/vmind/src/atom/imageReader/interface.ts delete mode 100644 packages/vmind/src/atom/imageReader/prompt.ts delete mode 100644 packages/vmind/src/atom/index.ts delete mode 100644 packages/vmind/src/atom/specInsight/index.ts delete mode 100644 packages/vmind/src/core/VMind.ts delete mode 100644 packages/vmind/src/core/factory.ts delete mode 100644 packages/vmind/src/core/llm.ts delete mode 100644 packages/vmind/src/core/memory.ts delete mode 100644 packages/vmind/src/core/rag.ts delete mode 100644 packages/vmind/src/index.ts delete mode 100644 packages/vmind/src/schedule/index.ts delete mode 100644 packages/vmind/src/types/atom.ts delete mode 100644 packages/vmind/src/types/chart.ts delete mode 100644 packages/vmind/src/types/index.ts delete mode 100644 packages/vmind/src/types/llm.ts delete mode 100644 packages/vmind/src/types/rag.ts delete mode 100644 packages/vmind/src/types/schedule.ts delete mode 100644 packages/vmind/src/types/utils.ts delete mode 100644 packages/vmind/src/utils/cluster.ts delete mode 100644 packages/vmind/src/utils/common.ts delete mode 100644 packages/vmind/src/utils/dataTable.ts delete mode 100644 packages/vmind/src/utils/field.ts delete mode 100644 packages/vmind/src/utils/json.ts delete mode 100644 packages/vmind/src/utils/llm.ts delete mode 100644 packages/vmind/src/utils/set.ts delete mode 100644 packages/vmind/src/utils/spec.ts delete mode 100644 packages/vmind/src/utils/text.ts delete mode 100644 packages/vmind/src/utils/unfold.ts delete mode 100644 packages/vmind/src/utils/video.ts delete mode 100644 packages/vmind/test-setup.js delete mode 100644 packages/vmind/tsconfig.eslint.json delete mode 100644 packages/vmind/tsconfig.json delete mode 100644 packages/vmind/tsconfig.test.json delete mode 100644 packages/vmind/types/jstat.d.ts create mode 100644 pyproject.toml delete mode 100644 readme-zh.md create mode 100644 ruff.toml delete mode 100644 rush.json delete mode 100644 share/eslint-config/package.json delete mode 100644 share/eslint-config/profile/common.js delete mode 100644 share/eslint-config/profile/lib.js delete mode 100644 share/eslint-config/profile/react.js delete mode 100644 share/jest-config/jest.base.js delete mode 100644 share/jest-config/package.json delete mode 100644 share/ts-config/package.json delete mode 100644 share/ts-config/tsconfig.base.json create mode 100644 skills/vchart-development-assistant/SKILL.md create mode 100644 skills/vchart-development-assistant/references/DIRECT_PATH_ROUTING.md create mode 100644 skills/vchart-development-assistant/references/FILE_NAMING_CONVENTIONS.md create mode 100644 skills/vchart-development-assistant/references/SCRIPTS_TROUBLESHOOTING.md create mode 100644 skills/vchart-development-assistant/references/SCRIPT_PARAMS_REFERENCE.md create mode 100644 skills/vchart-development-assistant/references/api/API_INDEX.md create mode 100644 skills/vchart-development-assistant/references/api/animation-api.md create mode 100644 skills/vchart-development-assistant/references/api/coordinate-api.md create mode 100644 skills/vchart-development-assistant/references/api/data-api.md create mode 100644 skills/vchart-development-assistant/references/api/event-api.md create mode 100644 skills/vchart-development-assistant/references/api/export-api.md create mode 100644 skills/vchart-development-assistant/references/api/interaction-api.md create mode 100644 skills/vchart-development-assistant/references/api/layout-api.md create mode 100644 skills/vchart-development-assistant/references/api/legend-api.md create mode 100644 skills/vchart-development-assistant/references/api/state-api.md create mode 100644 skills/vchart-development-assistant/references/api/theme-api.md create mode 100644 skills/vchart-development-assistant/references/chart/chart-type-guide.md create mode 100644 skills/vchart-development-assistant/references/chart/common-issues.md create mode 100644 skills/vchart-development-assistant/references/components/axis.md create mode 100644 skills/vchart-development-assistant/references/components/crosshair.md create mode 100644 skills/vchart-development-assistant/references/components/dataZoom.md create mode 100644 skills/vchart-development-assistant/references/components/label.md create mode 100644 skills/vchart-development-assistant/references/components/legend.md create mode 100644 skills/vchart-development-assistant/references/components/mark.md create mode 100644 skills/vchart-development-assistant/references/components/title.md create mode 100644 skills/vchart-development-assistant/references/components/tooltip.md create mode 100644 skills/vchart-development-assistant/references/examples/area/basic-area.md create mode 100644 skills/vchart-development-assistant/references/examples/bar/basic-bar.md create mode 100644 skills/vchart-development-assistant/references/examples/bar/grouped-bar.md create mode 100644 skills/vchart-development-assistant/references/examples/bar/stacked-bar.md create mode 100644 skills/vchart-development-assistant/references/examples/combination/dual-axis.md create mode 100644 skills/vchart-development-assistant/references/examples/funnel/basic-funnel.md create mode 100644 skills/vchart-development-assistant/references/examples/gauge/basic-gauge.md create mode 100644 skills/vchart-development-assistant/references/examples/line/basic-line.md create mode 100644 skills/vchart-development-assistant/references/examples/pie/basic-pie.md create mode 100644 skills/vchart-development-assistant/references/examples/radar/basic-radar.md create mode 100644 skills/vchart-development-assistant/references/examples/sankey/basic-sankey.md create mode 100644 skills/vchart-development-assistant/references/examples/sankey/hierarchy-sankey.md create mode 100644 skills/vchart-development-assistant/references/examples/scatter/basic-scatter.md create mode 100644 skills/vchart-development-assistant/references/sops/SOP_INDEX.md create mode 100644 skills/vchart-development-assistant/references/sops/cdn-script-adaption.md create mode 100644 skills/vchart-development-assistant/references/sops/format-method.md create mode 100644 skills/vchart-development-assistant/references/sops/tooltip-crosshair-sync.md create mode 100644 skills/vchart-development-assistant/references/sops/tooltip-usage.md create mode 100644 skills/vchart-development-assistant/references/topkey/all_common.json create mode 100644 skills/vchart-development-assistant/references/topkey/area.json create mode 100644 skills/vchart-development-assistant/references/topkey/bar.json create mode 100644 skills/vchart-development-assistant/references/topkey/bar3d.json create mode 100644 skills/vchart-development-assistant/references/topkey/boxPlot.json create mode 100644 skills/vchart-development-assistant/references/topkey/circlePacking.json create mode 100644 skills/vchart-development-assistant/references/topkey/circularProgress.json create mode 100644 skills/vchart-development-assistant/references/topkey/common.json create mode 100644 skills/vchart-development-assistant/references/topkey/correlation.json create mode 100644 skills/vchart-development-assistant/references/topkey/funnel.json create mode 100644 skills/vchart-development-assistant/references/topkey/funnel3d.json create mode 100644 skills/vchart-development-assistant/references/topkey/gauge.json create mode 100644 skills/vchart-development-assistant/references/topkey/heatmap.json create mode 100644 skills/vchart-development-assistant/references/topkey/histogram.json create mode 100644 skills/vchart-development-assistant/references/topkey/histogram3d.json create mode 100644 skills/vchart-development-assistant/references/topkey/line.json create mode 100644 skills/vchart-development-assistant/references/topkey/linearProgress.json create mode 100644 skills/vchart-development-assistant/references/topkey/liquid.json create mode 100644 skills/vchart-development-assistant/references/topkey/map.json create mode 100644 skills/vchart-development-assistant/references/topkey/mosaic.json create mode 100644 skills/vchart-development-assistant/references/topkey/pie.json create mode 100644 skills/vchart-development-assistant/references/topkey/pie3d.json create mode 100644 skills/vchart-development-assistant/references/topkey/radar.json create mode 100644 skills/vchart-development-assistant/references/topkey/rangeArea.json create mode 100644 skills/vchart-development-assistant/references/topkey/rangeColumn.json create mode 100644 skills/vchart-development-assistant/references/topkey/rangeColumn3d.json create mode 100644 skills/vchart-development-assistant/references/topkey/rose.json create mode 100644 skills/vchart-development-assistant/references/topkey/sankey.json create mode 100644 skills/vchart-development-assistant/references/topkey/scatter.json create mode 100644 skills/vchart-development-assistant/references/topkey/sequence.json create mode 100644 skills/vchart-development-assistant/references/topkey/sunburst.json create mode 100644 skills/vchart-development-assistant/references/topkey/treemap.json create mode 100644 skills/vchart-development-assistant/references/topkey/venn.json create mode 100644 skills/vchart-development-assistant/references/topkey/waterfall.json create mode 100644 skills/vchart-development-assistant/references/topkey/wordCloud.json create mode 100644 skills/vchart-development-assistant/references/topkey/wordCloud3d.json create mode 100644 skills/vchart-development-assistant/references/type-details/FunctionType-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/GeometricMaskShape-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IAnimationConfig-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IArcLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IArcMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IAreaMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IBackgroundSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IBoxPlotMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IBrushSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ICartesianAxisSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ICartesianCrosshairSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ICellMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ICustomMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IData-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IDataZoomSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IExtensionGroupMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IExtensionMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IFunnelLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IFunnelOuterLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IGroupMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IHierarchyData-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IHoverSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IImageMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IIndicatorSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IInteractionItemSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILayoutPaddingSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILayoutSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILegendSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILineLikeLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILineMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILinearAxisSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILinkPathMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILiquidMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ILiquidOutlineSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IMarkAreaSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IMarkLineSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IMarkPointSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IMediaQuerySpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IMultiLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IOutlierMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPadding-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPathMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPercent-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPlayer-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPolarAxisSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPolarCrosshairSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IPolygonMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IRectMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IRippleMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IRuleMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ISankeyLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IScrollBarSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ISelectSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ISeriesSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ISeriesStyle-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IStackCornerRadiusCallback-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ISymbolMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ITextMarkSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ITheme-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ITitleSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ITooltipSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ITotalLabelSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IVisualSpecBase-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IVisualSpecScale-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IWaterfallTotalCustom-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IWaterfallTotalEnd-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/IWaterfallTotalField-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/LiquidShapeType-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/RegionSpec-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/ShapeType-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/SunburstLabelConfig-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/TextShapeMask-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/WordCloudConfigType-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/WordCloudShapeConfigType-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-details/WordCloudShapeType-Type-Definition.md create mode 100644 skills/vchart-development-assistant/references/type-meta/area.json create mode 100644 skills/vchart-development-assistant/references/type-meta/bar.json create mode 100644 skills/vchart-development-assistant/references/type-meta/boxPlot.json create mode 100644 skills/vchart-development-assistant/references/type-meta/circlePacking.json create mode 100644 skills/vchart-development-assistant/references/type-meta/circularProgress.json create mode 100644 skills/vchart-development-assistant/references/type-meta/common.json create mode 100644 skills/vchart-development-assistant/references/type-meta/correlation.json create mode 100644 skills/vchart-development-assistant/references/type-meta/funnel.json create mode 100644 skills/vchart-development-assistant/references/type-meta/gauge.json create mode 100644 skills/vchart-development-assistant/references/type-meta/heatmap.json create mode 100644 skills/vchart-development-assistant/references/type-meta/histogram.json create mode 100644 skills/vchart-development-assistant/references/type-meta/line.json create mode 100644 skills/vchart-development-assistant/references/type-meta/linearProgress.json create mode 100644 skills/vchart-development-assistant/references/type-meta/liquid.json create mode 100644 skills/vchart-development-assistant/references/type-meta/map.json create mode 100644 skills/vchart-development-assistant/references/type-meta/mosaic.json create mode 100644 skills/vchart-development-assistant/references/type-meta/pictogram.json create mode 100644 skills/vchart-development-assistant/references/type-meta/pie.json create mode 100644 skills/vchart-development-assistant/references/type-meta/radar.json create mode 100644 skills/vchart-development-assistant/references/type-meta/rangeArea.json create mode 100644 skills/vchart-development-assistant/references/type-meta/rangeColumn.json create mode 100644 skills/vchart-development-assistant/references/type-meta/rose.json create mode 100644 skills/vchart-development-assistant/references/type-meta/sankey.json create mode 100644 skills/vchart-development-assistant/references/type-meta/scatter.json create mode 100644 skills/vchart-development-assistant/references/type-meta/sequence.json create mode 100644 skills/vchart-development-assistant/references/type-meta/sunburst.json create mode 100644 skills/vchart-development-assistant/references/type-meta/treemap.json create mode 100644 skills/vchart-development-assistant/references/type-meta/venn.json create mode 100644 skills/vchart-development-assistant/references/type-meta/waterfall.json create mode 100644 skills/vchart-development-assistant/references/type-meta/wordCloud.json create mode 100644 skills/vchart-development-assistant/scripts/artifact_paths.py create mode 100644 skills/vchart-development-assistant/scripts/generate_demo_html.py create mode 100644 skills/vchart-development-assistant/scripts/generate_diagnosis_html.py create mode 100755 skills/vchart-development-assistant/scripts/generate_diagnosis_react_html.py create mode 100644 skills/vchart-development-assistant/scripts/search_knowledge.py create mode 100644 skills/vchart-development-assistant/template/demo.html create mode 100644 skills/vchart-development-assistant/template/diagnosis-react.html create mode 100644 skills/vchart-development-assistant/template/diagnosis.html create mode 100644 skills/vchart-development-assistant/workflows/scenario-1-diagnosis.md create mode 100644 skills/vchart-development-assistant/workflows/scenario-1-react.md create mode 100644 skills/vchart-development-assistant/workflows/scenario-2-generation.md create mode 100644 skills/vchart-development-assistant/workflows/scenario-3-image-replication.md create mode 100644 skills/vtable-development-assistant/SKILL.md create mode 100644 skills/vtable-development-assistant/references/examples/README.md create mode 100644 skills/vtable-development-assistant/references/examples/cell-types.md create mode 100644 skills/vtable-development-assistant/references/examples/custom-layout-jsx.md create mode 100644 skills/vtable-development-assistant/references/examples/interaction-patterns.md create mode 100644 skills/vtable-development-assistant/references/examples/list-table-basic.md create mode 100644 skills/vtable-development-assistant/references/examples/list-table-tree.md create mode 100644 skills/vtable-development-assistant/references/examples/pivot-chart.md create mode 100644 skills/vtable-development-assistant/references/examples/pivot-table-analysis.md create mode 100644 skills/vtable-development-assistant/references/knowledge/00-overview.md create mode 100644 skills/vtable-development-assistant/references/knowledge/01-table-types.md create mode 100644 skills/vtable-development-assistant/references/knowledge/02-column-cell-types.md create mode 100644 skills/vtable-development-assistant/references/knowledge/03-style-theme.md create mode 100644 skills/vtable-development-assistant/references/knowledge/04-custom-render-layout.md create mode 100644 skills/vtable-development-assistant/references/knowledge/05-api-methods.md create mode 100644 skills/vtable-development-assistant/references/knowledge/06-api-properties.md create mode 100644 skills/vtable-development-assistant/references/knowledge/07-events.md create mode 100644 skills/vtable-development-assistant/references/knowledge/08-pivot-dimensions.md create mode 100644 skills/vtable-development-assistant/references/knowledge/09-data-binding.md create mode 100644 skills/vtable-development-assistant/references/knowledge/10-interaction.md create mode 100644 skills/vtable-development-assistant/references/knowledge/11-common-patterns.md create mode 100644 skills/vtable-development-assistant/references/type/base-table-options.md create mode 100644 skills/vtable-development-assistant/references/type/column-defines.md create mode 100644 skills/vtable-development-assistant/references/type/custom-layout.md create mode 100644 skills/vtable-development-assistant/references/type/custom-render.md create mode 100644 skills/vtable-development-assistant/references/type/event-types.md create mode 100644 skills/vtable-development-assistant/references/type/list-table-options.md create mode 100644 skills/vtable-development-assistant/references/type/pivot-chart-options.md create mode 100644 skills/vtable-development-assistant/references/type/pivot-table-options.md create mode 100644 skills/vtable-development-assistant/references/type/pivot-types.md create mode 100644 skills/vtable-development-assistant/references/type/style-defines.md create mode 100644 skills/vtable-development-assistant/scripts/artifact_paths.py create mode 100644 skills/vtable-development-assistant/scripts/generate_demo_html.py create mode 100644 skills/vtable-development-assistant/scripts/generate_diagnosis_html.py create mode 100644 skills/vtable-development-assistant/template/demo.html create mode 100644 skills/vtable-development-assistant/template/diagnosis.html create mode 100644 skills/vtable-development-assistant/workflows/scenario-1-diagnosis.md create mode 100644 skills/vtable-development-assistant/workflows/scenario-2-generation.md create mode 100644 tests/test_api_agent.py create mode 100644 tests/test_case_inputs.py create mode 100644 tests/test_eval_runner.py create mode 100644 tests/test_local_search.py create mode 100644 tests/test_portable_install.py create mode 100644 tests/test_vchart_artifact_paths.py create mode 100644 tests/test_vtable_artifact_paths.py delete mode 100644 tools/bundler/.eslintrc.js delete mode 100644 tools/bundler/README.md delete mode 100755 tools/bundler/bin/index.js delete mode 100644 tools/bundler/fixtures/config/.gitignore delete mode 100644 tools/bundler/fixtures/config/bundler.config.js delete mode 100644 tools/bundler/fixtures/config/package.json delete mode 100644 tools/bundler/fixtures/config/source/custom.css delete mode 100644 tools/bundler/fixtures/config/source/foo/bar/index.ts delete mode 100644 tools/bundler/fixtures/config/source/foo/bar/web.png delete mode 100644 tools/bundler/fixtures/config/source/foo/index.ts delete mode 100644 tools/bundler/fixtures/config/source/global.d.ts delete mode 100644 tools/bundler/fixtures/config/source/index.ts delete mode 100644 tools/bundler/fixtures/config/source/utils/index.ts delete mode 100644 tools/bundler/fixtures/config/tsconfig.json delete mode 100644 tools/bundler/package.json delete mode 100644 tools/bundler/src/bootstrap.ts delete mode 100644 tools/bundler/src/global.d.ts delete mode 100644 tools/bundler/src/index.ts delete mode 100644 tools/bundler/src/logic/alias.ts delete mode 100644 tools/bundler/src/logic/babel.config.ts delete mode 100644 tools/bundler/src/logic/config.test.ts delete mode 100644 tools/bundler/src/logic/config.ts delete mode 100644 tools/bundler/src/logic/debug.ts delete mode 100644 tools/bundler/src/logic/package.ts delete mode 100644 tools/bundler/src/logic/rollup.config.ts delete mode 100644 tools/bundler/src/tasks/clean.ts delete mode 100644 tools/bundler/src/tasks/copy.ts delete mode 100644 tools/bundler/src/tasks/modules.ts delete mode 100644 tools/bundler/src/tasks/style.ts delete mode 100644 tools/bundler/src/tasks/umd.ts delete mode 100644 tools/bundler/tsconfig.json delete mode 100644 tools/bundler/vitest.config.ts delete mode 100644 tools/typescript-json-schema/README.md delete mode 100755 tools/typescript-json-schema/bin/typescript-json-schema delete mode 100644 tools/typescript-json-schema/package.json delete mode 100644 tools/typescript-json-schema/tsconfig.json delete mode 100644 tools/typescript-json-schema/typescript-json-schema-cli.ts delete mode 100644 tools/typescript-json-schema/typescript-json-schema.ts delete mode 100644 tools/typescript-json-schema/vchart.json create mode 100644 uv.lock diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 9d08a1a8..00000000 --- a/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 433f16c9..00000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -tools/typescript-json-schema diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 79a85db5..00000000 --- a/.gitattributes +++ /dev/null @@ -1,14 +0,0 @@ -# Don't allow people to merge changes to these generated files, because the result -# may be invalid. You need to run "rush update" again. -pnpm-lock.yaml merge=text -shrinkwrap.yaml merge=binary -npm-shrinkwrap.json merge=binary -yarn.lock merge=binary - -# Rush's JSON config files use JavaScript-style code comments. The rule below prevents pedantic -# syntax highlighters such as GitHub's from highlighting these comments as errors. Your text editor -# may also require a special configuration to allow comments in JSON. -# -# For more information, see this issue: https://github.com/microsoft/rushstack/issues/1088 -# -*.json linguist-language=JSON-with-Comments diff --git a/.githooks/commit-msg b/.githooks/commit-msg new file mode 100755 index 00000000..0dc943eb --- /dev/null +++ b/.githooks/commit-msg @@ -0,0 +1,9 @@ +#!/bin/sh +set -eu + +subject=$(sed -n '1p' "$1") +if ! printf '%s\n' "$subject" | + grep -Eq '^(feat|fix|refactor|test|docs|chore|perf|build|ci|style|revert)(\([^)]+\))?!?: .+'; then + echo "Use a Conventional Commit subject, for example: feat: add chart interaction cases" >&2 + exit 1 +fi diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 00000000..3f564bee --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,14 @@ +#!/bin/sh +set -eu + +git diff --cached --check + +# Keep documentation-only commits independent of the Python environment. +if git diff --cached --name-only --diff-filter=ACMR | + grep -Eq '\.py$|^(pyproject\.toml|uv\.lock|ruff\.toml)$'; then + if ! command -v uv >/dev/null 2>&1; then + echo "Install uv and add it to PATH before committing Python changes." >&2 + exit 1 + fi + uv run --locked ruff check skills tests evals/scripts +fi diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index 8abfd99f..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,102 +0,0 @@ -name: Bug Report -description: Report a bug to @VisActor/VChart -title: '[Bug] ' -labels: [bug] -body: - - type: markdown - attributes: - value: | - The issue list is reserved exclusively for bug reports and feature requests. - - For usage questions, please use the following resources: - - - Read the [docs](https://www.visactor.io/) - - Find in [examples](https://www.visactor.io/) - - Look for / ask questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/visactor) - - For non-technical support or general questions, you can email [xuanhun521@126.com](mailto:xuanhun521@126.com). - - Also try to search for your issue - it may have already been answered or even fixed in the development branch. However, if you find that an old, closed issue still persists in the latest version, you should open a new issue using the form below instead of commenting on the old issue. - - # - type: checkboxes - # attributes: - # label: Is there an existing issue for this? - # description: Please search to see if an issue already exists for the bug you encountered. - # options: - # - label: I have searched the existing issues - # required: true - - - type: input - attributes: - label: Version - description: | - Check if the issue is reproducible with the latest stable version of @VisActor/VChart. - placeholder: | - e.g. 1.0.0 - - validations: - required: true - - - type: input - attributes: - label: Link to Minimal Reproduction - description: | - If the reproduction does not need a build setup, please provide a link to [JSFiddle](https://jsfiddle.net/pfv0azuc/4/),[CodePen](https://codepen.io/kkxxkk2019/pen/KKrMRqa) or [CodeSandbox](https://codesandbox.io/s/the-template-of-visactor-vchart-vl84ww). If it requires a build setup, you can use [CodeSandbox](https://codesandbox.io/s/the-template-of-visactor-vchart-vl84ww) or provide a GitHub repo. - The reproduction should be **minimal** - i.e. it should contain only the bare minimum amount of code needed to show the bug. - Please do not just fill in a random link. The issue will be closed if no valid reproduction is provided. [Why?](https://antfu.me/posts/why-reproductions-are-required) - - validations: - required: true - - - type: textarea - attributes: - label: Steps to Reproduce - description: | - What do we need to do after opening your repo in order to make the bug happen? Clear and concise reproduction instructions are important for us to be able to triage your issue in a timely manner. Note that you can use [Markdown](https://guides.github.com/features/mastering-markdown/) to format lists and code. - - placeholder: | - 1. How do you create the view - 2. What's the spec of view - 3. User interactions before the error happens. - validations: - required: true - - - type: textarea - attributes: - label: Current Behavior - description: A concise description of what you're experiencing. - validations: - required: true - - - type: textarea - attributes: - label: Expected Behavior - description: A concise description of what you expected to happen. - validations: - required: true - - - type: textarea - attributes: - label: Environment - description: | - e.g. - - **OS**: macOS Monterey - - **Browser**: Chrome 96.0.4664.55 - - **Framework** Vue@3 - value: | - - OS: - - Browser: - - Framework: - render: markdown - - validations: - required: false - - - type: textarea - attributes: - label: Any additional comments? - description: | - e.g. some background/context of how you ran into this bug. - - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 95ee307f..00000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -# contact_links: -# - name: @VisaActor/VChart -# url: https://www.visactor.io/ -# about: Please search question here before opening a new issue diff --git a/.github/ISSUE_TEMPLATE/feaure_request.yml b/.github/ISSUE_TEMPLATE/feaure_request.yml deleted file mode 100644 index 0f65b108..00000000 --- a/.github/ISSUE_TEMPLATE/feaure_request.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Feature Request -description: Request a new feature from @VisActor/VChart -title: '[Feature] ' -labels: [new-feature] -body: - - type: markdown - attributes: - value: | - The issue list is reserved exclusively for bug reports and feature requests. - - For usage questions, please use the following resources: - - - Read the [docs](https://www.visactor.io/) - - Find in [examples](https://www.visactor.io//) - - Look for / ask questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/visactors) - - For non-technical support or general questions, you can email [xuanhun521@126.com](mailto:xuanhun521@126.com). - - Also try to search for your issue - it may have already been answered or even fixed in the development branch. However, if you find that an old, closed issue still persists in the latest version, you should open a new issue using the form below instead of commenting on the old issue. - - - type: textarea - attributes: - label: What problem does this feature solve? - description: | - Explain your use case, context, and rationale behind this feature request. More importantly, what is the end user experience you are trying to build that led to the need for this feature? - - An important design goal of @VisActor/VChart is keeping the API surface small and straightforward. In general, we only consider adding new features that solve a problem that cannot be easily dealt with using existing APIs (i.e. not just an alternative way of doing things that can already be done). The problem should also be common enough to justify the addition. - - validations: - required: true - - - type: textarea - attributes: - label: What does the proposed API look like? - description: Describe how you propose to solve the problem and provide code samples of how the API would work once implemented. Note that you can use [Markdown](https://docs.github.com/en/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) to format your code blocks. - - validations: - required: true diff --git a/.github/ISSUE_TEMPLATE/others.md b/.github/ISSUE_TEMPLATE/others.md deleted file mode 100644 index e3818ddf..00000000 --- a/.github/ISSUE_TEMPLATE/others.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Others -about: Describe this issue's purpose here. -title: '' -labels: '' -assignees: '' ---- diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b1cba0ad..00000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,86 +0,0 @@ - - -[[中文版模板 / Chinese template](https://github.com/VisActor/VChart/blob/main/.github/PULL_REQUEST_TEMPLATE/pr_cn.md?plain=1)] - -### 🤔 This is a ... - -- [ ] New feature -- [ ] Bug fix -- [ ] TypeScript definition update -- [ ] Bundle size optimization -- [ ] Performance optimization -- [ ] Enhancement feature -- [ ] Refactoring -- [ ] Update dependency -- [ ] Code style optimization -- [ ] Test Case -- [ ] Branch merge -- [ ] Release -- [ ] Site / documentation update -- [ ] Demo update -- [ ] Workflow -- [ ] Other (about what?) - -### 🔗 Related issue link - - - -### 🔗 Related PR link - - - -### 🐞 Bugserver case id - - - -### 💡 Background and solution - - - -### 📝 Changelog - - - -| Language | Changelog | -| ---------- | --------- | -| 🇺🇸 English | | -| 🇨🇳 Chinese | | - -### ☑️ Self-Check before Merge - -⚠️ Please check all items below before requesting a reviewing. ⚠️ - -- [ ] Doc is updated/provided or not needed -- [ ] Demo is updated/provided or not needed -- [ ] TypeScript definition is updated/provided or not needed -- [ ] Changelog is provided or not needed - ---- - - - -### 🚀 Summary - -copilot:summary - -### 🔍 Walkthrough - -copilot:walkthrough diff --git a/.github/PULL_REQUEST_TEMPLATE/pr_cn.md b/.github/PULL_REQUEST_TEMPLATE/pr_cn.md deleted file mode 100644 index 6cf3bfa8..00000000 --- a/.github/PULL_REQUEST_TEMPLATE/pr_cn.md +++ /dev/null @@ -1,84 +0,0 @@ - - -### 🤔 这个分支是... - -- [ ] 新功能 -- [ ] Bug fix -- [ ] Ts 类型更新 -- [ ] 打包优化 -- [ ] 性能优化 -- [ ] 功能增强 -- [ ] 重构 -- [ ] 依赖版本更新 -- [ ] 代码优化 -- [ ] 测试 case 更新 -- [ ] 分支合并 -- [ ] 发布 -- [ ] 网站/文档更新 -- [ ] demo 更新 -- [ ] Workflow -- [ ] 其他 (具体是什么,请补充?) - -### 🔗 相关 issue 链接 - - - -### 🔗 相关的 PR 链接 - - - -### 🐞 Bugserver 用例 id - - - -### 💡 问题的背景&解决方案 - - - -### 📝 Changelog - - - -| Language | Changelog | -| ---------- | --------- | -| 🇺🇸 English | | -| 🇨🇳 Chinese | | - -### ☑️ 自测 - -⚠️ 在提交 PR 之前,请检查一下内容. ⚠️ - -- [ ] 文档提供了,或者更新,或者不需要 -- [ ] Demo 提供了,或者更新,或者不需要 -- [ ] Ts 类型定义提供了,或者更新,或者不需要 -- [ ] Changelog 提供了,或者不需要 - ---- - - - -### 🚀 Summary - -copilot:summary - -### 🔍 Walkthrough - -copilot:walkthrough diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index de326de0..00000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Add 'vmind' label to any change within the 'vmind' package -vmind: - - packages/vmind/** - - -# Add 'calculator' label to any change within the 'calculator' package -calculator: - - packages/calculator/** - - -# Add 'chart-advisor' label to any change within the 'calculator' package -chart-advisor: - - packages/chart-advisor/** - - - - diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml deleted file mode 100644 index a3ab94f2..00000000 --- a/.github/workflows/labeler.yml +++ /dev/null @@ -1,21 +0,0 @@ -# This workflow will triage pull requests and apply a label based on the -# paths that are modified in the pull request. -# -# To use this workflow, you will need to set up a .github/labeler.yml -# file with configuration. For more information, see: -# https://github.com/actions/labeler - -name: Labeler -on: [pull_request_target] - -jobs: - label: - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - - steps: - - uses: actions/labeler@v4 - with: - repo-token: '${{ secrets.GITHUB_TOKEN }}' diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml deleted file mode 100644 index c6b4e6a9..00000000 --- a/.github/workflows/pr-check.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Check of pull request - -# 这里业务方根据需求设置 -on: - pull_request: - branches: ['develop', 'dev/**'] -jobs: - build: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [20.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - cache-dependency-path: './common/config/rush/pnpm-lock.yaml' - - - uses: xile611/pr-type-check@main - with: - pull_request_body: | - ${{ github.event.pull_request.body }} - pull_request_head: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml deleted file mode 100644 index 8c75ab64..00000000 --- a/.github/workflows/pre-release.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Pre-release CI - -on: - push: - branches: - - 'pre-release/[0-9]+.[0-9]+.[0-9]+-alpha.[0-9]+' - - 'pre-release/[0-9]+.[0-9]+.[0-9]+-beta.[0-9]+' - - 'pre-release/[0-9]+.[0-9]+.[0-9]+-rc.[0-9]+' - - 'pre-release/[0-9]+.[0-9]+.[0-9]+-hotfix.[0-9]+' - -jobs: - build: - runs-on: macOS-13 - - permissions: - contents: write - - strategy: - matrix: - node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - cache-dependency-path: './common/config/rush/pnpm-lock.yaml' - - # Install rush - - name: Install rush - run: node common/scripts/install-run-rush.js install --bypass-policy - - - name: Parse semver version from branch name - id: semver_parser - uses: xile611/read-package-version-action@main - with: - path: packages/vmind - semver_string: ${{ github.ref_name }} - semver_pattern: '^pre-release/(.*)$' # ^v?(.*)$ by default - - - name: Apply prereleaseName - run: node common/scripts/apply-prerelease-version.js ${{ steps.semver_parser.outputs.pre_release_name }} ${{ steps.semver_parser.outputs.main }} - - - name: Build packages - env: - NODE_OPTIONS: '--max_old_space_size=4096' - run: node common/scripts/install-run-rush.js build --only tag:package - - - name: Publish to npm - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - NPM_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - NODE_OPTIONS: '--max_old_space_size=4096' - run: node common/scripts/install-run-rush.js publish --publish --include-all --tag ${{ steps.semver_parser.outputs.pre_release_type }} - - - name: Update shrinkwrap - run: node common/scripts/install-run-rush.js update - - - name: Get npm version - id: package-version - uses: xile611/read-package-version-action@main - with: - path: packages/vmind - - - name: Commit & Push changes - uses: actions-js/push@master - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - message: 'build: prelease version ${{ steps.package-version.outputs.current_version }}' - branch: ${{ github.ref_name }} - author_name: ${{ github.actor }} diff --git a/.github/workflows/release-changelog.yml b/.github/workflows/release-changelog.yml deleted file mode 100644 index ed7a20c1..00000000 --- a/.github/workflows/release-changelog.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: Release changelog - -on: - release: - types: [published] - -jobs: - update-changelog-after-publish-a-release: - name: GitHub Actions Test - runs-on: macOS-13 - - strategy: - matrix: - node-version: [18.x] - - steps: - - name: Checkout - id: checkout - uses: actions/checkout@v3 - - run: | - git config user.name ${{ github.actor }} - git config user.email ${{ github.actor }}@users.noreply.github.com - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - cache-dependency-path: './common/config/rush/pnpm-lock.yaml' - - # Install rush - - name: Install rush - run: node common/scripts/install-run-rush.js install --bypass-policy - - - name: Create branch - run: | - git status - git fetch origin develop:develop - git checkout develop - git status - git checkout -b docs/generate-changelog-${{ github.event.release.tag_name }} - - - name: generate changelog - id: generate-changelog - uses: xile611/collect-release-changelog@main - with: - token: ${{ secrets.GITHUB_TOKEN }} - folder: ./docs/assets/changelog - langs: 'en,zh' - tag_name: ${{github.event.release.tag_name}} - file_name: release.md - - - name: Push branch - run: | - git add . - git commit -m "docs: generate changelog of release ${{ github.event.release.tag_name }}" -n - git push origin docs/generate-changelog-${{ github.event.release.tag_name }} - - - name: Create Pull Request - uses: dustinirving/create-pr@v1.0.2 - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: '[Auto changelog] changlog of ${{ github.event.release.tag_name }}' - base: develop - head: 'docs/generate-changelog-${{ github.event.release.tag_name }}' - labels: changelog - body: 'update changelog of ${{ github.event.release.tag_name }}' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 470e3a66..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,113 +0,0 @@ -name: Release CI - -on: - push: - branches: - - 'release/[0-9]+.[0-9]+.[0-9]+' - -jobs: - build: - runs-on: macOS-13 - permissions: - contents: write - pull-requests: write - - strategy: - matrix: - node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - run: | - git config user.name ${{ github.actor }} - git config user.email ${{ github.actor }}@users.noreply.github.com - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - cache-dependency-path: './common/config/rush/pnpm-lock.yaml' - - # Install rush - - name: Install rush - run: node common/scripts/install-run-rush.js install --bypass-policy - - - name: Parse semver version from branch name - id: semver_parser - uses: xile611/read-package-version-action@main - with: - path: packages/vmind - semver_string: ${{ github.ref_name }} - semver_pattern: '^release/(.*)$' # ^v?(.*)$ by default - - - name: update nextBump of version policies - uses: xile611/set-next-bump-of-rush@main - with: - release_version: ${{ steps.semver_parser.outputs.full }} - write_next_bump: true - - - name: Generate changelog by rush version - run: node common/scripts/install-run-rush.js version --bump - - - name: Update version - run: node common/scripts/apply-release-version.js 'none' ${{ steps.semver_parser.outputs.main }} - - - name: Build packages - env: - NODE_OPTIONS: '--max_old_space_size=4096' - run: node common/scripts/install-run-rush.js build --only tag:package - - - name: Publish to npm - env: - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - NPM_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - NODE_OPTIONS: '--max_old_space_size=4096' - run: node common/scripts/install-run-rush.js publish --publish --include-all --tag latest - - - name: Update shrinkwrap - run: node common/scripts/install-run-rush.js update - - - name: Get npm version - id: package-version - uses: xile611/read-package-version-action@main - with: - path: packages/vmind - - - name: Commit & Push changes - run: | - git add . - git commit -m 'build: prelease version ${{ steps.package-version.outputs.current_version }}' -n - git push origin ${{ github.ref_name }} - - - name: Collect changelog of rush - uses: xile611/collect-rush-changlog@main - id: changelog - with: - version: ${{ steps.package-version.outputs.current_version }} - - - name: Create Release for Tag - id: release_tag - uses: ncipollo/release-action@v1.12.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag: v${{ steps.package-version.outputs.current_version }} - commit: main - prerelease: false - body: | - ${{ steps.changelog.outputs.markdown }} - draft: true # - - - name: Create Pull Request - uses: dustinirving/create-pr@v1.0.2 - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: '[Auto release] release ${{ steps.package-version.outputs.current_version }}' - base: main - head: ${{ github.ref_name }} - labels: release # default labels, the action will throw error if not specified - reviewers: da730 # default reviewers, the action will throw error if not specified - body: | - ${{ steps.changelog.outputs.markdown }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 1fca7c69..00000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,35 +0,0 @@ -# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. -# -# You can adjust the behavior by modifying this file. -# For more information, see: -# https://github.com/actions/stale -name: Mark stale issues and pull requests - -on: - schedule: - - cron: '20 4 * * *' - -jobs: - stale: - runs-on: ubuntu-12 - permissions: - issues: write - pull-requests: write - - steps: - - uses: actions/stale@v5 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - days-before-stale: 730 - days-before-close: 7 - stale-issue-message: 'This issue has been automatically marked as stale because it did not have recent activity. It will be closed in 7 days if no further activity occurs. If you wish not to mark it as stale, please leave a comment in this issue.' - close-issue-message: 'This issue has been automatically closed because it did not have recent activity. If this remains to be a problem with the latest version of @VisActor/VMind, please open a new issue and link this to it. Thanks!' - close-issue-reason: 'not_planned' - stale-issue-label: 'stale_issue' - stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. If you wish not to mark it as stale, please leave a comment in this PR. We are sorry for this but 2 years is a long time and the code base has been changed a lot. Thanks for your contribution anyway.' - close-pr-message: 'This PR has been automatically closed because it has not had recent activity. Sorry for that and we are looking forward to your next contribution.' - stale-pr-label: 'stale_pr' - exempt-issue-labels: 'High Priority' - exempt-all-milestones: true - operations-per-run: 500 - ascending: true diff --git a/.github/workflows/sync-main-to-develop.yml b/.github/workflows/sync-main-to-develop.yml deleted file mode 100644 index b55a92f5..00000000 --- a/.github/workflows/sync-main-to-develop.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Sync main to develop after release - -on: - pull_request: - types: - - closed - branches: - - main - -jobs: - if_merged: - if: github.event.pull_request.merged == true - - runs-on: macOS-13 - - permissions: - contents: write - pull-requests: write - - strategy: - matrix: - node-version: [18.x] - - steps: - - uses: actions/checkout@v3 - - run: | - git config user.name ${{ github.actor }} - git config user.email ${{ github.actor }}@users.noreply.github.com - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - cache-dependency-path: './common/config/rush/pnpm-lock.yaml' - - # Install rush - - name: Install rush - run: node common/scripts/install-run-rush.js install --bypass-policy - - - name: Get version - id: package-version - uses: xile611/read-package-version-action@main - with: - path: packages/vmind - - - name: Create a new branch - run: | - git status - git checkout -b sync/main-${{ steps.package-version.outputs.current_version }} - git push origin sync/main-${{ steps.package-version.outputs.current_version }} - - - name: Create Pull Request - uses: dustinirving/create-pr@v1.0.2 - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: '[Auto Sync] Sync the code from branch main to branch develop after release ${{ steps.package-version.outputs.current_version }}' - base: develop - head: sync/main-${{ steps.package-version.outputs.current_version }} - reviewers: da730 - body: 'Sync the code from branch main to branch develop after release ${{ steps.package-version.outputs.current_version }}' diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml deleted file mode 100644 index 0d5684cd..00000000 --- a/.github/workflows/unit-test.yml +++ /dev/null @@ -1,35 +0,0 @@ -# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs - -name: TEST CI - -on: - push: - branches: ['main', 'develop'] - pull_request: - branches: ['main', 'develop', 'dev/**'] - -jobs: - build: - runs-on: macOS-13 - - strategy: - matrix: - node-version: [18.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - cache-dependency-path: './common/config/rush/pnpm-lock.yaml' - - # Install rush - - name: Install rush - run: node common/scripts/install-run-rush.js install --bypass-policy - - - name: Test - run: node common/scripts/install-run-rush.js test --only tag:package diff --git a/.gitignore b/.gitignore index fb1808fa..45fe982d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,119 +1,23 @@ -# Logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# vscode -.vscode - -# Runtime data -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release -output -dist -esm -es -cjs -lib -build -build-es5 -*.zip -packages/calculator/lib - -*.zip -stats.html -report.html - -coverage/ - -*.local.ts - -# Dependency directories +.vscode/ node_modules/ -jspm_packages/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file +.venv/ +.cache/ +__pycache__/ +.pytest_cache/ +.ruff_cache/ +*.pyc .env - -# next.js build output -.next - -# OS X temporary files +.env.* +!.env.example +evals/runs/ +evals/*.local.json +output/ .DS_Store - -# IntelliJ IDEA project files; if you want to commit IntelliJ settings, this recipe may be helpful: -# https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -.idea/ -*.iml - -# Rush temporary files -common/deploy/ common/temp/ -common/autoinstallers/*/.npmrc -**/.rush/temp/ - -# Heft temporary files -.heft - -# build -.rollup.cache/ -tsconfig.tsbuildinfo -*.tsbuildinfo - -# git-hook -common/scripts/pre-commit - -# generated documents -docs/public/documents -.bundle/ -packages/vmind/__tests__/image-to-spec/images - -# env files -.env.local -packages/calculator/tsconfig.cjs.tsbuildinfo -packages/calculator/tsconfig.esm.tsbuildinfo -packages/chart-advisor/tsconfig.esm.tsbuildinfo -packages/chart-advisor/tsconfig.cjs.tsbuildinfo -packages/vmind/__tests__/browser/src/pages/mockData.ts -packages/vmind/__tests__/experiment/src/results - -# open api demo test -packages/node-api +**/node_modules/ +# Preserve but exclude ignored build leftovers from the previous VMind checkout. +/packages/ +/common/ +/tools/ +/share/ +**/.rush/ diff --git a/.lintstagedrc b/.lintstagedrc deleted file mode 100644 index c629f5d9..00000000 --- a/.lintstagedrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "{packages,tools}/**/*.{ts,tsx}": ["eslint --color --fix --quiet", "prettier --write --ignore-unknown"] -} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 4e974bb0..00000000 --- a/.prettierignore +++ /dev/null @@ -1,29 +0,0 @@ -# https://prettier.io/docs/en/ignore.html -#------------------------------------------------------------------------------------------------------------------- -# Keep this section in sync with .gitignore -#------------------------------------------------------------------------------------------------------------------- - -👋 (copy + paste your .gitignore file contents here) 👋 - -#------------------------------------------------------------------------------------------------------------------- -# Prettier-specific overrides -#------------------------------------------------------------------------------------------------------------------- - -# Rush files -common/changes/ -common/scripts/ -common/config/ -CHANGELOG.* - -# Package manager files -pnpm-lock.yaml -yarn.lock -package-lock.json -shrinkwrap.json - -# Build outputs -dist -lib -**/*.min.js -tools/typescript-json-schema - diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 839bf9aa..00000000 --- a/.prettierrc.js +++ /dev/null @@ -1,16 +0,0 @@ -// Documentation for this file: https://prettier.io/en/configuration.html -module.exports = { - "printWidth": 120, - "tabWidth": 2, - "useTabs": false, - "semi": true, - "singleQuote": true, - "quoteProps": "as-needed", - "trailingComma": "none", - "bracketSpacing": true, - "arrowParens": "avoid", - "proseWrap": "preserve", - "htmlWhitespaceSensitivity": "css", - "endOfLine": "lf", - "printWidth": 120 -}; diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 2c63c085..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..a75c9531 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,10 @@ +# VisActor Skills maintenance + +- Runtime skills live in `skills/` and must work when copied independently. +- Keep tests, fixed evaluation tasks and generated reports outside skill directories. +- Preserve user changes. Do not commit or publish unless requested. +- Use `uv run pytest` for Python tests and `uv run ruff check` for maintained Python tooling. +- Test stable behavior; do not snapshot large instruction documents. +- For evaluation, expose only the selected skill and task inputs to the agent, never expected answers. +- Keep observable execution evidence locally, redact credentials and distinguish automated checks from human visual review. +- Do not restore the historical VMind SDK or depend on leftover local packages. Earlier versions remain in Git history and releases. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 25450df0..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,47 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at https://github.com/VisActor. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b03437fb..9f43e1f5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,182 +1,29 @@ -# VMind Open Source Code Contribution Guide +# Contributing -Firstly, thumbs up👍🏻 for choosing to join the rank of open source contribution. Additionally, we greatly appreciate you choosing to participate in the VisActor community and contributing to this open source project. +Changes to Skills should protect a concrete user task or failure mode. Keep runtime instructions/resources under `skills/`, deterministic regressions under `tests/`, and fixed Agent tasks under `evals/`. -## VMind Contribution Guide +## Start here -The VisActor team usually develops and maintains issues on Github. Please open the [Github website](https://github.com/), click the `Sign up` button in the upper right corner, register an account of your own, and start the first step of your open source journey. +The recommended development loop is [direct Skill debugging in Codex or Claude Code](docs/debugging.md). Use their existing harness for exploration and iterative fixes. The API harness is a lightweight alternative for fixed cases or a custom prompt with input files; it supports only OpenAI-compatible Chat Completions. -If for some reason you can't open the Github site, you can still work on the project through [Gitee](https://gitee.com/VisActor/VChart). +1. Follow the [contributor quickstart](evals/README.md#contributor-quickstart) for prerequisites, API endpoint/model/key-environment configuration, commands and report interpretation. +2. Run `uv sync --locked`, then `uv run pytest tests -q`. These tests need no model account. +3. For a Skill change, choose relevant cases from the [coverage table](evals/cases/README.md). Run one with `uv run python evals/scripts/run.py --case vchart-grouped --browser` (substitute the relevant case id). Model API runs use your own credentials and billing. Start with one case and inspect usage.json. +4. Inspect the generated source, screenshot and required interactions. Automated success does not replace semantic or visual review. +5. Run `uv run ruff check skills tests evals/scripts` for Python changes. Keep the smallest meaningful verification scope. -In the [VMind repository](https://github.com/VisActor/VMind), we have a [guide](https://github.com/VisActor/VMind/blob/develop/CONTRIBUTING.zh-CN.md) for all open source contributors that introduces version management, branch management, etc. **Please take a few minutes to read and understand it**. +The runner installs the selected Skill from the current checkout into each case workspace. You do not need to install it into your global Agent directory first. The default runner calls a configurable OpenAI-compatible model API and does not require Codex or Claude Code. An optional --runner codex mode tests that host separately; the Skills themselves can be used by other compatible agents. -## Your First PullRequest +## In your contribution -### Step0: Install Git - -Git is a version control system used to track and manage changes in code in software development projects. It helps developers record and manage the history of code, making it easy for team collaboration, code version control, merging code, and more. With Git, you can track each version of each file and easily switch between and compare different versions. Git also provides branch management, so you can perform multiple parallel development tasks at the same time. - -- Visit the official Git website: -- Download the latest version of Git installer. -- Run the downloaded installer and follow the installation wizard's instructions to install. -- After installation, you can use the `git version` command on the command line to confirm successful installation. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/git_version.png) - -When using Git, you need to set your username and email address, as these will be used in every Git commit. Open the command line and input the following commands to set your Git username: +Enable the repository's Git hooks after cloning or switching from the historical SDK checkout: ```bash -git config --global user.name "your_username" -git config --global user.email "your_email@example.com" -``` - -Please replace "your_username" and "your_email@example.com" with the username and email you want to use in Git. - -### Step1: Fork the Project - -- First, you need to fork this project. Go to the [VMind project page](https://github.com/VisActor/VMind), click the Fork button in the upper right corner. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/fork_vmind.png) - -- Your github account should now have a project named xxxx(your github username)/vmind. -- Use the following command on your local computer: you should get a VMind folder. - -``` -// ssh -git clone git@github.com:xxxx(your github username)/VMind.git -// https -git clone https://github.com/xxxx(your github username)/VMind.git -``` - -### Step2: Get the Project Code - -- Enter the VMind folder and add the VMind remote address - -``` -git remote add upstream https://github.com/VisActor/VMind.git -``` - -- Get the VMind latest source code - -``` -git pull upstream develop -``` - -### Step3: Create a Branch - -- Now we can start contributing our code. VMind default branch is the develop branch. Whether it is feature development, bug fixes, or document writing, please create a new branch and merge it to the develop branch. Use the following code to create the branch: - -``` -// Create feature development branch -git checkout -b feat/xxxx - -// Create problem-fixing development branch -git checkout -b fix/xxxx - -// Create document/demo branch -git checkout -b docs/xxxx -``` - -- Now we can modify code on the branch -- Let's assume we have added some code and made a commit to the stage -- git commit -a -m "new commit" - -### Step4: Merge Changes - -- A common problem is that there is new update in the remote upstream(@visactor/vmind) which can cause conflicts when we push the Pull Request. So, before submission, we can merge the commits from other developers with our commits. Use the following code to switch to develop branch: - -``` -git checkout develop -``` - -- Use the following code to pull the latest code from remote: - -``` -git pull upstream develop +git config core.hooksPath .githooks ``` -- Switch back to your own development branch: - -``` -git checkout docs/add-funnel-demo -``` - -- Merge the develop commit to branch1: - -``` -git rebase develop -``` - -- Push the update code to your own branch: - -``` -git push upstream docs/add-funnel-demo -``` - -### Step5: Submit Pull Request - -You can click the New pull request button on your github repo page. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/create_pr.png) - -Follow the template to write down the content modified in this submission: - -- Check what type of modification this is - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/pr_template.png) - -- Fill in the related issue - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/related_issue.png) - -- If a complex change has been made, please provide background and solution - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/background_solution.png) - -After completing all related information, click Create pull request to submit - -## Mini Task Development Guides - -"**good first issue**" is a common label in the open source community, aimed to help new contributors find ideal starter issues. - -VMind's starter issues can be viewed on the [issue list](https://github.com/VisActor/VMind/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22), which currently includes two types: - -- Demo use case creation -- Simple function development - -If you currently **have time and are willing** to contribute to the community, look at the good first issue in the issue list, and pick one that interests you and suits your abilities. - -I believe you are a student who finishes what you start, so once you understand and decide to take on an issue, please leave a message under the issue to let everyone know. - -### Feature Task - -We have prepared some simple and easy-to-master feature development tasks. If you have a basic understanding of Javascript/Typescript, you can take on this type of task. - -You can learn more about VMind code architecture by implementing requirements. **You can leave a message under the issue and discuss your plan with everyone**. - -1. Based on the develop branch, pull a new `feat/***` branch for development -1. (If you've already installed it, skip this step) Install [@microsoft/rush](https://rushjs.io/pages/intro/get_started/) globally: `npm i --global @microsoft/rush` -1. Run `rush update` in the root directory -1. Run `rush start` to test VMind code locally - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_playground.png) - -Click "Set API-Key and LLM URL" at top left corner to set LLM service url and key - -5. Confirm all tests pass `rush test` -5. After completing development, run `rush change` to write changelog and submit changes -5. Commit all code, and create a Pull Request on Github, inviting others to review - -## Embrace the VisActor Community - -In addition to contributing code to VIsActor, we encourage you to participate in other activities that help the community thrive, such as: - -1. Offering suggestions for project development, feature planning, and more -2. Creating articles and videos, hosting lectures to promote VisActor -3. Writing promotional plans and executing them with the team +The hooks check staged whitespace, run Ruff for Python/tooling changes and require a Conventional Commit subject. Python checks require `uv` on PATH. Run the relevant tests before committing; the hook does not run model evaluations or the complete test suite. These hooks replace the historical Rush hooks, whose scripts are no longer part of this repository. -VisActor is also working hard to help community builders grow together. We plan to (but are not limited to, and look forward to more suggestions from everyone) provide the following assistance: +Explain the task or defect, the behavior changed, and why the chosen cases protect it. Include the commands, case ids, Agent version, requested model and review outcomes. Report known failures and skipped checks. An exit code of zero means the automated checks passed, not that every rendered artifact is correct. -1. Data visualization development training based on VIsActor, to help participants quickly grow in programming skills, visualization theory, architecture design, and other aspects. -2. Regularly selecting the "Code Contribution Award" and "Community Promotion Award" -3. Organizing community members to participate in open-source activities +Add cases for distinct behaviors or meaningful regressions, not just to increase the count. Keep prompts and inputs separate from expectations; use public or synthetic fixtures and record provenance. Keep `evals/runs/`, credentials and private data out of commits. Runtime Skills must work independently of maintenance tools and the historical VMind SDK. diff --git a/CONTRIBUTING.zh-CN.md b/CONTRIBUTING.zh-CN.md deleted file mode 100644 index 2c236ba3..00000000 --- a/CONTRIBUTING.zh-CN.md +++ /dev/null @@ -1,210 +0,0 @@ -# VMind开源代码贡献指南 -首先为你选择加入开源贡献行列的行为点赞👍🏻。再者,十分感谢你选择参与到 VisActor 社区,为这个开源项目做出贡献。 - - - - -## VMind贡献指南 - -VisActor 团队通常在 github 上进行开发和 issue 维护,请打开 [Github 网站](https://github.com/),点击右上角 `Sign up` 按钮,注册一个自己的账号,开启你开源之旅的第一步。 - -如果因为特殊情况,你无法打开 Github 站点,也可以通过 [Gitee](https://gitee.com/VisActor/VChart) 进行项目开发。 - -在 [VMind 仓库](https://github.com/VisActor/VMind)中,我们有一份面向所有开源贡献者的[指南](https://github.com/VisActor/VMind/blob/develop/CONTRIBUTING.zh-CN.md),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。 - - - - -## 你的第一个 PullRequest - -### Step0:安装 Git - -Git是一种版本控制系统,用于跟踪和管理软件开发项目中的代码变更。它帮助开发者记录和管理代码的历史记录,方便团队协作、代码版本控制、合并代码等操作。通过Git,您可以追踪每个文件的每个版本,并轻松地在不同版本之间进行切换和比较。Git还提供了分支管理功能,使得可以同时进行多个并行开发任务。 - -- 访问Git官方网站: -- 下载最新版本的Git安装程序。 -- 运行下载的安装程序,按照安装向导的提示进行安装。 -- 安装完成后,你可以通过命令行使用 `git version` 命令确认安装成功。 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/git_version.png) - - -使用Git时,需要设置你的用户名和电子邮件地址,因为每次Git提交都会使用这些信息。打开命令行,输入以下命令来设置你的Git用户名: - -```bash -git config --global user.name "your_username" -git config --global user.email "your_email@example.com" -``` - -请将 "your_username"和your_email@example.com替换为你想在Git中使用的用户名和邮箱。 - - - -### Step1:Fork 项目 - -- 首先需要 fork 这个项目,进入[VMind 项目页面](https://github.com/VisActor/VMind),点击右上角的 Fork 按钮 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/fork_vmind.png) - -- 你的 github 帐号中会出现 xxxx(你的github用户名)/vmind这个项目 -- 在本地电脑上使用以下命令: 得到一个 VMind 文件夹 - -``` -// ssh -git clone git@github.com:xxxx(你的github用户名)/VMind.git -// https -git clone https://github.com/xxxx(你的github用户名)/VMind.git -``` - - - - -### Step2:获取项目代码 - -- 进入 VMind 文件夹,添加 VMind 的远程地址 - -``` -git remote add upstream https://github.com/VisActor/VMind.git -``` - -- 获取 VMind 最新源码 - -``` -git pull upstream develop -``` - - - - -### Step3:创建分支 - -- 好了,现在可以开始贡献我们的代码了。VMind 默认分支为 develop 分支。无论是功能开发、bug 修复、文档编写,都请新建立一个分支,再合并到 develop 分支上。使用以下代码创建分支: - -``` -// 创建功能开发分支 -git checkout -b feat/xxxx - -// 创建问题修复开发分支 -git checkout -b fix/xxxx - -// 创建文档、demo分支 -git checkout -b docs/xxxx -``` - -- 现在我们可以在分支上更改代码了 -- 假设我们已经添加了一些代码,提交到代码库 -- git commit -a -m "new commit" - - - - -### Step4:合并修改 - -- 一个常见的问题是远程的 upstream (@visactor/vmind) 有了新的更新, 从而会导致我们提交的 Pull Request 时会导致冲突。 因此我们可以在提交前先把远程其他开发者的 commit 和我们的 commit 合并。使用以下代码切换到 develop 分支: - -``` -git checkout develop -``` - -- 使用以下代码拉出远程的最新代码: - -``` -git pull upstream develop -``` - -- 切换回自己的开发分支: - -``` -git checkout docs/add-funnel-demo -``` - -- 把 develop 的 commit 合并到 branch1: - -``` -git rebase develop -``` - -- 把更新代码提交到自己的分支中: - -``` -git push upstream docs/add-funnel-demo -``` - - - - -### Step5:提交Pull Request - -你可以在你的 github 代码仓库页面点击 New pull request 按钮。 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/create_pr.png) - -按照模板填写本次提交的修改内容: - -- 勾选这是什么类型的修改 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/pr_template.png) - -- 填写关联的 issue - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/related_issue.png) - - - -- 若有复杂变更,请说明背景和解决方案 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/background_solution.png) - -相关信息填写完成后,点击 Create pull request 提交 - - - - -## Mini Task 开发指南 - -"**good first issue**" 是一个在开源社区常见的标签,这个标签的目的是帮助新贡献者找到适合入门的问题。 - -VMind 的入门问题,你可以通过 [issue 列表](https://github.com/VisActor/VMind/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) 查看,目前包括两类: - -- Demo 案例制作 -- 简单功能开发 - -如果你当前**有时间和意愿**参与到社区贡献,可以在 issue 里看一看 **good first issue**,选择一个感兴趣、适合自己的认领。 - -相信你一定是一个有始有终的同学,所以,当你了解并决定认领一个 issue 后,请在 issue 下留言告知大家。 - - - - -### Feature Task - -我们准备了一些简单、易上手的特性开发任务,如果你有一定的 Javascript / Typescript 基础,可以认领这类任务。 - -你可以通过需求开发,更快地了解 VMind 代码架构。**你可以在 issue 下留言,和大家讨论自己的方案**。 - -1. 请基于 develop 分支,新拉一个 `feat/***`分支进行开发 -1. (如果你已经安装,请跳过此步骤)全局安装 [@microsoft/rush](https://rushjs.io/pages/intro/get_started/):`npm i --global @microsoft/rush` -1. 根目录下运行 `rush update` -1. `rush start` 在本地运行 VMind 代码的测试页面 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_playground.png) - -点击左上角“Set API-Key and LLM URL”设置LLM服务url和key - -5. 确认所有的测试都是通过的 `rush test` -5. 开发完成后,运行 `rush change` 命令,编写 changelog 并提交 -5. 提交所有代码,并在 Github 创建 Pull Request,邀请其他人进行 review - -## 拥抱VisActor社区 - -在你为VIsActor贡献代码之余,我们鼓励你参与其他让社区更加繁荣的事情,比如: - -1. 为项目的发展、功能规划 等提建议 -2. 创作文章、视频,开办讲座来宣传VisActor -3. 撰写推广计划,同团队一同执行 - -VisActor 也在努力帮助参与社区建设的同学一同成长,我们计划(但不限于,期待大家更多的建议)提供如下帮助: - -1. 以VIsActor 为基础的数据可视化研发培训,帮助参与的同学在编程技能、可视化理论、架构设计等多个方面快速成长。 -2. 定期评选“代码贡献奖”和“社区推广奖” -3. 组织社区成员参与开源活动 diff --git a/README-ja.md b/README-ja.md deleted file mode 100644 index b5d4909d..00000000 --- a/README-ja.md +++ /dev/null @@ -1,286 +0,0 @@ -# @visactor/vmind - -
- -[English](README.md) | [简体中文](readme-zh.md) | 日本語 - -
- -
- -自動化だけでなく、素晴らしい。オープンソースのインテリジェントな可視化ソリューション。 - -

- 紹介 • - デモ • - チュートリアル • - API• - OpenApi -

- -![](https://github.com/visactor/vmind/actions/workflows/bug-server.yml/badge.svg) -![](https://github.com/visactor/vmind/actions/workflows/unit-test.yml/badge.svg) -[![npm Version](https://img.shields.io/npm/v/@visactor/vmind.svg)](https://www.npmjs.com/package/@visactor/vmind) -[![npm Download](https://img.shields.io/npm/dm/@visactor/vmind.svg)](https://www.npmjs.com/package/@visactor/vmind) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/VisActor/VMind/blob/main/CONTRIBUTING.md#your-first-pull-request) - -![](https://img.shields.io/badge/language-TypeScript-red.svg) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/visactor/vmind/blob/main/LICENSE) - -
- -## 紹介 - -`@visactor/vmind` は [VisActor](https://www.visactor.io/) によって提供される、LLM に基づくインテリジェントなチャートコンポーネントで、対話型のチャート生成と編集機能を含んでいます。自然言語インターフェースを提供し、1文で `@visactor/vmind` を使用してチャートナラティブ作品を簡単に作成し、連続した対話を通じて編集することで、データ可視化作品の作成効率を大幅に向上させます。 - -`@visactor/vmind` の主な特徴は以下の通りです: - -- **使いやすい**:表示したいデータと表示したい情報を説明する1文を提供するだけで、`@visactor/vmind` が自動的にチャートを生成します。既存のチャートに基づいて、チャートに加えたい変更を1文で説明すると、`@visactor/vmind` が望む効果を実現します。 -- **強力な拡張性**:`@visactor/vmind` のコンポーネントは簡単に拡張およびカスタマイズでき、必要に応じて新しい機能や特徴を追加できます。デフォルトでは OpenAI GPT モデルを使用し、任意の LLM サービスに簡単に置き換えることができます。 -- **簡単なナラティブ**:`@visactor/vchart` の強力なチャートナラティブ能力に基づき、`@visactor/vmind` は折れ線グラフ、棒グラフ、円グラフなど、さまざまなタイプのチャートの生成をサポートし、動的な棒グラフやその他の動的なチャートも生成できます。これにより、データを簡単にナレーションできます。さらに、対話型の編集機能を使用して、チャートのスタイルやアニメーション効果を簡単に変更し、ナラティブを作成できます。 -- **ワンクリックエクスポート**:`@visactor/vmind` にはチャートエクスポートモジュールが付属しており、作成したチャートナラティブをビデオや GIF としてエクスポートして表示できます。 - -## 開発ガイド - -### ドキュメントページ - -VMind リポジトリに入り、以下を実行します: - -```bash -# 依存関係をインストール -$ rush update -# デモページを開始 -$ rush docs -``` - -### 開発ページを開始 - -VMind リポジトリに入り、以下を実行します: - -```bash -# 依存関係をインストール -$ rush update -# VMind 開発ページを開始 -$ rush vmind -``` - -これで vmind 開発ページを開始できます。 -正常に使用するには、LLM サービスの URL と API キーを設定する必要があります。packages/vmind/\_\_tests\_\_/browser/src/pages/DataInput.tsx で LLM を呼び出すときのヘッダーを変更できます。 -packages/vmind フォルダーに新しい .env.local ファイルを作成し、次の内容を書き込みます: - -```bash -VITE_GPT_URL="Your service url of gpt model" -VITE_GPT_KEY="Your api-key of gpt model" -VITE_DEEPSEEK_URL="https://api.deepseek.com/chat/completions" -VITE_DEEPSEEK_KEY="Your api-key of deepseek model" -VITE_CUSTOM_URL="Your service url of custom model" -VITE_CUSTOM_KEY="Your api-key of custom model" -VITE_CUSTOM_MODEL="Your Custom Model Name" -VITE_PROXY_CONFIG="Your Vite proxy config for forwarding requests. Must be in JSON string format and is optional. Example: {"proxy": {"/v1": {"target": "https://api.openai.com/","changeOrigin": true},"/openapi": {"target": "https://api.openai.com/","changeOrigin": true}}}" -``` - -開発環境を開始するときにこれらの設定が自動的に読み込まれます。 - -## 使用方法 - -### 📦 インストール - -```bash -# npm -$ npm install @visactor/vmind - -# yarn -$ yarn add @visactor/vmind -``` - -### 📊 使用例 - -#### インテリジェントチャート生成 - -まず、プロジェクトにVMindをインストールする必要があります: - -```bash -# npmでインストール - -npm install @visactor/vmind - -# yarnでインストール - -yarn add @visactor/vmind -``` - -次に、JavaScriptファイルの先頭でimportを使用してVMindをインポートします - -```typescript -import VMind from '@visactor/vmind'; -``` - -VMind は現在、GPT、deepseek、doubao などの API キーを持つ任意のモデルをサポートしています。VMind オブジェクトを初期化するときに呼び出すモデルタイプを指定し、LLM サービスの URL を渡すことができます。次に、VMind インスタンスを初期化し、モデルタイプとモデル URL を渡します: - -```typescript -import { Model } from '@visactor/vmind'; - -const vmind = new VMind({ - url: LLM_SERVICE_URL, // LLM サービスの URL - model: Model.GPT4o, // 使用するモデル - headers: { - 'api-key': LLM_API_KEY - } // ヘッダーは LLM リクエストのリクエストヘッダーとして直接使用されます。モデルの API キーをヘッダーに入れることができます -}); -``` - -サポートされているモデルのリストは次のとおりです: - -```typescript -// VMind がサポートするモデル -export enum Model { - GPT3_5 = 'gpt-3.5-turbo', - GPT3_5_1106 = 'gpt-3.5-turbo-1106', - GPT4 = 'gpt-4', - GPT_4_0613 = 'gpt-4-0613', - GPT_4o = 'gpt-4o-2024-08-06', - DOUBAO_LITE = 'doubao-lite-32K', - DOUBAO_PRO = 'doubao-pro-128k', - CHART_ADVISOR = 'chart-advisor', - DEEPSEEK_V3 = 'deepseek-chat', - DEEPSEEK_R1 = 'deepseek-reasoner' -} -``` -また、他のモデルを使用することもできます: -```typescript -import { Model } from '@visactor/vmind'; - -const vmind = new VMind({ - url: LLM_SERVICE_URL, - model: LLM_MODEL_NAME, // 選択したモデル - headers: { - 'api-key': LLM_API_KEY - } -}); -``` - -VMind は CSV および JSON 形式のデータセットをサポートしています。 - -CSV データを後続のプロセスで使用するには、データ処理メソッドを呼び出してフィールド情報を抽出し、構造化されたデータセットに変換する必要があります。VMind はルールベースのメソッド `parseCSVData` を提供してフィールド情報を取得します: - -```typescript -// CSV 文字列を渡して、フィールド情報と JSON 構造のデータセットを取得 -const { fieldInfo, dataset } = vmind.parseCSVData(csv); -``` - -また、JSON形式のデータセットを渡して`getFieldInfo`メソッドを呼び出し、fieldInfoを取得することもできます: - -```typescript -// JSON形式のデータセットを渡して、fieldInfoを取得します -const dataset=[ -{ -"Product name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "north", -"Sales": 1027 -} -] -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -「様々な車ブランドの販売ランキングの変化」を示したいとします。generateChartメソッドを呼び出し、データと表示内容の説明を直接VMindに渡します: - -```typescript -const userPrompt = 'show me the changes in sales rankings of various car brand'; -//チャート生成インターフェースを呼び出して、specとチャートアニメーションの時間を取得します -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -このようにして、対応する動的チャートのVChart specを取得します。このspecに基づいてチャートをレンダリングできます: - -```typescript -import VChart from '@visactor/vchart'; - - - -
- - -// vchartインスタンスを作成します -const vchart = new VChart(spec, { dom: 'chart' }); -// 描画します -vchart.renderAsync(); -``` - -大言語モデルの能力のおかげで、ユーザーは自然言語でより多くの要求を記述し、「料理」を「カスタマイズ」することができます。 -ユーザーは異なるテーマスタイルを指定することができます(現在、gptチャート生成のみがこの機能をサポートしています)。例えば、ユーザーはテックスタイルのチャートを生成することを指定することができます: - -```typescript -//userPromptは日本語でも英語でも構いません -//テックスタイルのチャートを生成することを指定します -const userPrompt = 'show me the changes in sales rankings of various car brand,tech style'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -VMindがサポートするチャートタイプ、フィールドマッピングなども指定することができます。例えば: - -```typescript -//折れ線グラフを生成し、自動車メーカーをx軸にすることを指定します -const userPrompt = - 'show me the changes in sales rankings of various car brands,tech style.Using a line chart, Manufacturer makes the x-axis'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -#### データ集約 - -グラフライブラリを使用して棒グラフ、折れ線グラフなどを描画する際、データが集約されていない場合、視覚化効果に影響を与えます。同時に、フィールドのフィルタリングやソートが行われていないため、一部の視覚化意図を満たすことができません。例えば:最もコストがかかるトップ10の部門を表示してください、北のさまざまな製品の販売を表示してくださいなど。 - -VMindはバージョン1.2.2以降、インテリジェントなデータ集約機能をサポートしています。この機能は、ユーザーが入力したデータをデータテーブルとして使用し、ユーザーのコマンドに従ってLLMを使用してSQLクエリを生成し、データテーブルからデータをクエリし、GROUP BYおよびSQL集約メソッドを使用してデータをグループ化、集約、ソート、フィルタリングします。サポートされているSQLステートメントには、SELECT、GROUP BY、WHERE、HAVING、ORDER BY、LIMITが含まれます。サポートされている集約メソッドには、MAX()、MIN()、SUM()、COUNT()、AVG()が含まれます。サブクエリ、JOIN、条件ステートメントなどの複雑なSQL操作はサポートされていません。 - -VMindオブジェクトの`dataQuery`関数を使用してデータを集約します。このメソッドには3つのパラメータがあります: -- userInput:ユーザー入力。generateChartと同じ入力を使用できます -- fieldInfo:データセットのフィールド情報。generateChartと同じで、parseCSVDataによって取得されるか、ユーザーによって構築されます。 -- dataset:データセット。generateChartと同じで、parseCSVDataによって取得されるか、ユーザーによって構築されます。 - -```typescript -const { fieldInfo, dataset } = await vmind?.dataQuery(userInput, fieldInfo, dataset); -``` - -このメソッドによって返されるfieldInfoとdatasetは、データ集約後のフィールド情報とデータセットであり、チャート生成に使用できます。 -`generateChart`関数は、デフォルトでチャートを生成する前に、同じユーザー入力を使用してデータ集約を実行します。第4パラメータを渡すことでデータ集約を無効にすることができます: -```typescript -const userInput = 'show me the changes in sales rankings of various car brand'; -const { spec, time } = await vmind.generateChart(userInput, fieldInfo, dataset, false); //第4パラメータとしてfalseを渡すことで、チャートを生成する前にデータ集約を無効にします。 -``` - -#### データインサイト -[チュートリアル](https://visactor.io/vmind/guide/Basic_Tutorial/Chart_Insight) - -#### データ抽出:テキストからチャートへ -[チュートリアル](https://visactor.io/vmind/guide/Basic_Tutorial/Data_Extraction) - -#### 対話型編集 - -開発中、乞うご期待 - -### 効果表示 - -#### 動的棒グラフ - -![Alt text](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VChart-Video-2.gif) - -#### 棒グラフ - -![Alt text](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VChart-Video-1.gif) - -#### 円グラフ - -![Alt text](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VChart-Video-3.gif) diff --git a/README.md b/README.md index 4320e787..b02813b3 100644 --- a/README.md +++ b/README.md @@ -1,322 +1,84 @@ -
- - VisActor Logo - - - VisActor Logo - -
+# VisActor Agent Skills -
-

VMind

-
+[English](README.md) | [简体中文](README.zh-CN.md) -
+VChart and VTable development skills for agents that can read files and run commands. Generate charts and tables, diagnose configuration problems, and deliver runnable HTML with editable source code. -Not just automatic, but also fantastic.Open-source solution for intelligent visualization. +## Skills -

- Introduction • - Demo • - Tutorial • - API• - OpenApi -

+| Skill | Tasks | +| --- | --- | +| [vchart-development-assistant](skills/vchart-development-assistant/SKILL.md) | Chart generation, diagnosis, image replication and React integration | +| [vtable-development-assistant](skills/vtable-development-assistant/SKILL.md) | List tables, pivot tables/charts, interactions and diagnosis | -![](https://github.com/visactor/vmind/actions/workflows/bug-server.yml/badge.svg) -![](https://github.com/visactor/vmind/actions/workflows/unit-test.yml/badge.svg) -[![npm Version](https://img.shields.io/npm/v/@visactor/vmind.svg)](https://www.npmjs.com/package/@visactor/vmind) -[![npm Download](https://img.shields.io/npm/dm/@visactor/vmind.svg)](https://www.npmjs.com/package/@visactor/vmind) -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/VisActor/VMind/blob/main/CONTRIBUTING.md#your-first-pull-request) +Each skill includes its instructions, local references, templates and scripts. No separate VisActor CLI, MCP server, model key or hosted VisActor API is required. The host agent supplies the model. -![](https://img.shields.io/badge/language-TypeScript-red.svg) [![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/visactor/vmind/blob/main/LICENSE) +**Recommended: use the Skills directly in Codex or Claude Code.** Your agent provides model access and tool execution. Other compatible agents may also use these Skills, but do not have dedicated setup instructions here. -
+## Install - - -
- -English | [简体中文](readme-zh.md) | [日本語](README-ja.md) - -
- -## Introduction - -`@visactor/vmind` is an intelligent chart component based on LLM provided by [VisActor](https://www.visactor.io/), including dialog-based chart generation and editing capabilities. It provides a natural language interaction interface, allowing you to easily create chart narrative works with `@visactor/VMind` with just one sentence, and edit them through continuous dialogue, greatly improving your efficiency in creating data visualization works. - -The main features of `@visactor/vmind` include: - -- **Easy to use**: Just provide the data you want to display and a sentence describing the information you want to display, and `@visactor/vmind` will automatically generate the chart for you. Based on the existing chart, describe the modifications you want to make to the chart in one sentence, and `@visactor/VMind` will help you achieve the desired effect. -- **Strong scalability**: The components of `@visactor/VMind` can be easily extended and customized, and new functions and features can be added as needed. By default, the OpenAI GPT model is used, and you can easily replace it with any LLM service. -- **Easy narrative**: Based on the powerful chart narrative ability of `@visactor/vchart`, `@visactor/VMind` supports the generation of various types of charts, including line charts, bar charts, pie charts, etc., and can also generate dynamic bar charts and other dynamic charts, making it easy for you to narrate data. More chart types are being added. You can also use the dialog-based editing function to easily modify chart styles and animation effects, making it easy for you to create narratives. -- **One-click export**: `@visactor/VMind` comes with a chart export module, and you can export the created chart narrative as a video or GIF for display. - -## Development Guide - -### Docs Page - -Enter the VMind repository and execute: +Run these commands in the project where you want to use the Skills: ```bash -# Install dependencies -$ rush update -# Start the demo page -$ rush docs +npx skills add VisActor/VMind --skill vchart-development-assistant +npx skills add VisActor/VMind --skill vtable-development-assistant ``` +Follow the installer's prompts to select Codex or Claude Code. You can install either Skill independently. More installation options are documented in the [Skills CLI reference](https://github.com/vercel-labs/skills#usage). -### Start the Development Page +Requirements: -Enter the VMind repository and execute: +- Node.js and npm to run the installation commands above. +- An agent with filesystem and shell tools, plus its own model access. +- Python 3.9+ for the bundled standard-library scripts. +- A browser and internet access for generated HTML. Templates fetch pinned VChart/VTable, React (when needed), and Monaco packages from the public unpkg CDN. This is not a fully offline bundle. -```bash -# Install dependencies -$ rush update -# Start the VMind development page -$ rush vmind -``` +VChart knowledge search reads bundled example/SOP files locally. It uses keyword matching, not a hosted semantic search service; unmatched questions fall back to the included type and API references. -You can start the vmind development page. -You need to set your LLM service URL and API key to use it normally. You can modify the headers when calling the LLM in packages/vmind/\_\_tests\_\_/browser/src/pages/DataInput.tsx. -You can create a new .env.local file in the packages/vmind folder and write in it: +## Use -```bash -VITE_GPT_URL="Your service url of gpt model" -VITE_GPT_KEY="Your api-key of gpt model" -VITE_DEEPSEEK_URL="https://api.deepseek.com/chat/completions" -VITE_DEEPSEEK_KEY="Your api-key of deepseek model" -VITE_CUSTOM_URL="Your service url of custom model" -VITE_CUSTOM_KEY="Your api-key of custom model" -VITE_CUSTOM_MODEL="Your Custom Model Name" -VITE_PROXY_CONFIG="Your Vite proxy config for forwarding requests. Must be in JSON string format and is optional. Example: {"proxy": {"/v1": {"target": "https://api.openai.com/","changeOrigin": true},"/openapi": {"target": "https://api.openai.com/","changeOrigin": true}}}" -``` - -These configurations will be automatically loaded when starting the development environment. +After installation, ask your agent to use the selected Skill with your data. For example: -## Instructions for use +- “Use VChart to compare sales by region and quarter in this CSV. Give me the editable source and HTML.” +- “Use VTable to build a sortable detail table using every row in this file.” -### 📦 Installation +Generated JavaScript/HTML is executable code. Preview your own or reviewed artifacts locally; the evaluation browser is not a sandbox for arbitrary untrusted submissions. -```bash -# npm -$ npm install @visactor/vmind +## Development and maintenance -# yarn -$ yarn add @visactor/vmind -``` +This section is for contributors editing Skills or running local tests. Start with [CONTRIBUTING.md](CONTRIBUTING.md). -### 📊 Usage Example +### Install from a local checkout -#### Intelligent Chart Generation - -First, we need to install VMind in the project: +From the root of your local repository, install the working copy of either Skill: ```bash -# Install with npm - -npm install @visactor/vmind - -# Install with yarn - -yarn add @visactor/vmind -``` - -Next, import VMind at the top of the JavaScript file - -```typescript -import VMind from '@visactor/vmind'; -``` - -VMind currently supports GPT, deepseek, doubao and any other models with API Keys. Users can specify the model type to be called when initializing the VMind object, and pass in the URL of the LLM service. Next, we initialize a VMind instance and pass in the model type and model url: - -```typescript -import { Model } from '@visactor/vmind'; - -const vmind = new VMind({ - url: LLM_SERVICE_URL, // URL of the LLM service - model: Model.GPT4o, // Model to use - headers: { - 'api-key': LLM_API_KEY - } //headers will be used directly as the request header in the LLM request. You can put the model api key in the header -}); -``` - -Here is a list of supported models: - -```typescript -//models that VMind support -export enum Model { - GPT3_5 = 'gpt-3.5-turbo', - GPT3_5_1106 = 'gpt-3.5-turbo-1106', - GPT4 = 'gpt-4', - GPT_4_0613 = 'gpt-4-0613', - GPT_4o = 'gpt-4o-2024-08-06', - DOUBAO_LITE = 'doubao-lite-32K', - DOUBAO_PRO = 'doubao-pro-128k', - CHART_ADVISOR = 'chart-advisor', - DEEPSEEK_V3 = 'deepseek-chat', - DEEPSEEK_R1 = 'deepseek-reasoner' -} -``` -And also you can use other model you like: -```typescript -import { Model } from '@visactor/vmind'; - -const vmind = new VMind({ - url: LLM_SERVICE_URL, - model: LLM_MODEL_NAME, // Model You Choose - headers: { - 'api-key': LLM_API_KEY - } -}); -``` - -VMind supports datasets in both CSV and JSON formats. - -To use CSV data in subsequent processes, you need to call the data processing method to extract field information and convert it into a structured dataset. VMind provides a rule-based method `parseCSVData` to obtain field information: - -```typescript -// Pass in the CSV string to obtain the fieldInfo and the JSON-structured dataset -const { fieldInfo, dataset } = vmind.parseCSVData(csv); -``` - -We can also call the `getFieldInfo` method to obtain the fieldInfo by passing in a JSON-formatted dataset: - -```typescript -// Pass in a JSON-formatted dataset to obtain the fieldInfo -const dataset=[ -{ -"Product name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "north", -"Sales": 1027 -} -] -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -We want to show "the changes in sales rankings of various car brands". Call the generateChart method and pass the data and display content description directly to VMind: - -```typescript -const userPrompt = 'show me the changes in sales rankings of various car brand'; -//Call the chart generation interface to get spec and chart animation duration -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -In this way, we get the VChart spec of the corresponding dynamic chart. We can render the chart based on this spec: - -```typescript -import VChart from '@visactor/vchart'; - - - -
- - -// Create a vchart instance -const vchart = new VChart(spec, { dom: 'chart' }); -// Draw -vchart.renderAsync(); -``` - -Thanks to the capabilities of the large language model, users can describe more requirements in natural language and "customize" dishes. -Users can specify different theme styles (currently only gpt chart generation supports this feature). For example, users can specify to generate a tech-style chart: - -```typescript -//userPrompt can be in both Chinese and English -//Specify to generate a tech-style chart -const userPrompt = 'show me the changes in sales rankings of various car brand,tech style'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); +npx skills add ./skills/vchart-development-assistant +npx skills add ./skills/vtable-development-assistant ``` -You can also specify the chart type, field mapping, etc. supported by VMind. For example: - -```typescript -//Specify to generate a line chart, with car manufacturers as the x-axis -const userPrompt = - 'show me the changes in sales rankings of various car brands,tech style.Using a line chart, Manufacturer makes the x-axis'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -#### Data Aggregation -When using the chart library to draw bar charts, line charts, etc., if the data is not aggregated, it will affect the visualization effect. At the same time, because no filtering and sorting of fields has been done, some visualization intentions cannot be met, for example: show me the top 10 departments with the most cost, show me the sales of various products in the north, etc. - -VMind supports intelligent data aggregation since version 1.2.2. This function uses the data input by the user as a data table, uses a LLM to generate SQL queries according to the user's command, queries data from the data table, and uses GROUP BY and SQL aggregation methods to group, aggregate, sort, and filter data. Supported SQL statements include: SELECT, GROUP BY, WHERE, HAVING, ORDER BY, LIMIT. Supported aggregation methods are: MAX(), MIN(), SUM(), COUNT(), AVG(). Complex SQL operations such as subqueries, JOIN, and conditional statements are not supported. +Alternatively, copy the complete Skill directory into your agent's skill directory, including its references, templates and scripts. Do not copy only `SKILL.md`. See the [local debugging guide](docs/debugging.md) for Codex and Claude Code workspace setup. Refresh the installed copy after changing a Skill before retesting. +### Regression tests -Use the `dataQuery` function of the VMind object to aggregate data. This method has three parameters: -- userInput: user input. You can use the same input as generateChart -- fieldInfo: Dataset field information. The same as generateChart, it can be obtained by parseCSVData, or built by the user. -- dataset: Dataset. The same as generateChart, it can be obtained by parseCSVData, or built by the user. +The Python maintenance environment requires Python 3.12+ and [uv](https://docs.astral.sh/uv/): -```typescript -const { fieldInfo, dataset } = await vmind?.dataQuery(userInput, fieldInfo, dataset); -``` - - -The fieldInfo and dataset returned by this method are the field information and dataset after data aggregation, which can be used for chart generation. -By default, the `generateChart` function will perform a data aggregation using the same user input before generating the chart. You can disable data aggregation by passing in the fourth parameter: -```typescript -const userInput = 'show me the changes in sales rankings of various car brand'; -const { spec, time } = await vmind.generateChart(userInput, fieldInfo, dataset, false); //pass false as the forth parameter to disable data aggregation before generating a chart. +```bash +uv sync --locked +uv run pytest tests -q +uv run ruff check skills tests evals/scripts ``` -#### Data Insight -[Tutorial](https://visactor.io/vmind/guide/Basic_Tutorial/Chart_Insight) - -#### Data Extraction: Text to Chart -[Tutorial](https://visactor.io/vmind/guide/Basic_Tutorial/Data_Extraction) - -#### Dialog-based editing - -Under development, stay tuned - -### Effect display - -#### Dynamic bar chart - -![Alt text](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VChart-Video-2.gif) - -#### Bar chart - -![Alt text](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VChart-Video-1.gif) - -#### Pie chart - -![Alt text](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/VChart-Video-3.gif) - -# Contribution - -If you would like to contribute, please read the [Code of Conduct ](./CODE_OF_CONDUCT.md) and [ Guide](./CONTRIBUTING.md) first。 - -Small streams converge to make great rivers and seas! +### Model API task debugging - -## Star History +For users with model API access, a lightweight harness can load a selected Skill and run a fixed case or a custom prompt with input files. It supports OpenAI-compatible Chat Completions; everyday interactive debugging is best done in your existing agent. - - +For fixed prompt/data runs, observable execution logs, browser checks and screenshots, see [evals/README.md](evals/README.md). These are maintainer tools, not part of the installed skills. The default runner uses a configurable model API with your own key; Codex/Claude Code are not required. Model calls may incur usage charges. Copy evals/model.example.json to the ignored evals/model.local.json, configure the endpoint/model/key environment variable, then run `uv run python evals/scripts/run.py --case vchart-grouped --browser`. See the quickstart for setup and usage limits. - Star History Chart - - +The [case catalog](evals/cases/README.md) includes 32 VChart tasks and 4 VTable tasks, organized by Skill with explicit acceptance criteria. The runner defaults to the 8-task VChart core group; curated coverage does not mean every task has been executed. +## Earlier VMind versions -# License +The previous VMind SDK is no longer maintained. Its code and documentation remain in [historical releases](https://github.com/VisActor/VMind/releases). -[MIT License](./LICENSE) +[MIT license](LICENSE) diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 00000000..80330609 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,84 @@ +# VisActor Agent Skills + +[English](README.md) | [简体中文](README.zh-CN.md) + +面向具备文件读写和命令执行能力的 Agent,提供 VChart 和 VTable 开发 Skills。用于生成图表与表格、诊断配置问题,并交付可运行的 HTML 和可编辑的源代码。 + +## Skills + +| Skill | 能力 | +| --- | --- | +| [vchart-development-assistant](skills/vchart-development-assistant/SKILL.md) | 图表生成、问题诊断、图片还原和 React 集成 | +| [vtable-development-assistant](skills/vtable-development-assistant/SKILL.md) | 明细表、透视表与透视图、交互和问题诊断 | + +每个 Skill 都包含完整指令、本地参考资料、模板和脚本。无需额外安装 VisActor CLI、MCP 服务,也无需为 Skill 单独配置模型 Key 或访问 VisActor 托管 API。模型能力由宿主 Agent 提供。 + +**推荐直接在 Codex 或 Claude Code 中使用 Skills。** 模型访问与工具执行由你使用的 Agent 提供。其他兼容的 Agent 也可以尝试使用,目前不提供专门的接入说明。 + +## 安装 + +在你准备使用 Skills 的项目目录中执行: + +```bash +npx skills add VisActor/VMind --skill vchart-development-assistant +npx skills add VisActor/VMind --skill vtable-development-assistant +``` + +按照安装器提示选择 Codex 或 Claude Code。两个 Skill 可以按需单独安装。更多安装选项见 [Skills CLI 说明](https://github.com/vercel-labs/skills#usage)。 + +运行要求: + +- Node.js 和 npm,用于执行上述安装命令。 +- 具备文件系统和 Shell 工具的 Agent,以及该 Agent 自身的模型访问权限。 +- Python 3.9+,用于运行 Skill 自带的标准库脚本。 +- 浏览器和网络连接,用于打开生成的 HTML。模板通过公开的 unpkg CDN 加载固定版本的 VChart/VTable、React(需要时)和 Monaco,因此并非完全离线运行。 + +VChart 知识检索在本地读取随 Skill 附带的示例和 SOP,采用关键词匹配,无需托管的语义检索服务。未匹配的问题可继续查阅内置类型定义与 API 参考资料。 + +## 使用 + +安装后,在 Agent 中指定所需 Skill,并提供你的数据。例如: + +- “用 VChart 对比这个 CSV 中各地区、各季度的销售额,给我可编辑的源码和 HTML。” +- “使用这个文件中的全部数据,用 VTable 创建一个支持排序的明细表。” + +生成的 JavaScript/HTML 是可执行代码。请在本地预览自己生成或已审查的产物;评测浏览器并不是用于执行任意不可信提交的安全沙箱。 + +## 开发与维护 + +本节面向需要修改 Skills 或运行本地测试的贡献者,请先阅读 [贡献指南](CONTRIBUTING.md)。 + +### 从本地仓库安装 + +在本地仓库根目录执行,安装当前工作副本中的 Skill: + +```bash +npx skills add ./skills/vchart-development-assistant +npx skills add ./skills/vtable-development-assistant +``` + +也可以将 Skill 的完整目录复制到 Agent 的技能目录中,包括参考资料、模板和脚本,不要只复制 `SKILL.md`。Codex 和 Claude Code 的调试工作区准备方式见 [本地调试指南](docs/debugging.md)。修改 Skill 后,请先更新安装副本,再重新测试。 + +### 回归测试 + +Python 维护环境要求 Python 3.12+ 和 [uv](https://docs.astral.sh/uv/): + +```bash +uv sync --locked +uv run pytest tests -q +uv run ruff check skills tests evals/scripts +``` + +### 通过模型 API 调试任务 + +对于持有模型 API 的用户,轻量 harness 可以加载指定 Skill,执行固定 case 或自定义 prompt 与输入文件。它支持 OpenAI 兼容的 Chat Completions 接口;日常交互式调试仍推荐使用已有的通用 Agent。 + +固定 prompt/数据任务、可观察的执行日志、浏览器检查与截图,详见 [评测说明](evals/README.zh-CN.md)。这些是维护工具,不属于用户安装的 Skill。默认 runner 使用用户自行配置的模型 API 和 Key,无需安装 Codex 或 Claude Code;模型调用可能产生费用。将 `evals/model.example.json` 复制为被 Git 忽略的 `evals/model.local.json`,配置 endpoint、model 和 Key 环境变量后,运行 `uv run python evals/scripts/run.py --case vchart-grouped --browser`。环境准备和用量限制详见快速上手。 + +[用例目录](evals/cases/README.zh-CN.md) 收录 32 个 VChart 任务和 4 个 VTable 任务,按 Skill 分目录维护,并提供明确的验收条件。runner 默认执行包含 8 个任务的 VChart 核心组;收录用例并不代表所有任务均已执行。 + +## VMind 历史版本 + +原 VMind SDK 不再维护,其代码和文档仍可通过 [历史发布版本](https://github.com/VisActor/VMind/releases) 获取。 + +[MIT 许可证](LICENSE) diff --git a/common/autoinstallers/create/README.md b/common/autoinstallers/create/README.md deleted file mode 100644 index ca9e9eee..00000000 --- a/common/autoinstallers/create/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Create project - -## Description - -Create a project - -## Usage - -```bash -rush create [--name | -n] [packageName] -``` - diff --git a/common/autoinstallers/create/package.json b/common/autoinstallers/create/package.json deleted file mode 100644 index e19f19f7..00000000 --- a/common/autoinstallers/create/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "create", - "version": "1.0.0", - "private": true, - "dependencies": { - "@microsoft/rush-lib": "5.94.1", - "chalk": "4.1.2", - "fast-glob": "3.2.11", - "minimist": "1.2.6", - "prettier": "2.7.1", - "prompts": "2.4.2", - "string.prototype.replaceall": "1.0.6", - "ts-node": "^10.9.2", - "zx": "4.2.0" - }, - "devDependencies": { - "@types/minimist": "1.2.2", - "@types/node": "*", - "@types/prompts": "2.0.14", - "typescript": "4.9.5" - } -} diff --git a/common/autoinstallers/create/pnpm-lock.yaml b/common/autoinstallers/create/pnpm-lock.yaml deleted file mode 100644 index e540bfa0..00000000 --- a/common/autoinstallers/create/pnpm-lock.yaml +++ /dev/null @@ -1,4688 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - '@microsoft/rush-lib': 5.94.1 - '@types/minimist': 1.2.2 - '@types/node': '*' - '@types/prompts': 2.0.14 - chalk: 4.1.2 - fast-glob: 3.2.11 - minimist: 1.2.6 - prettier: 2.7.1 - prompts: 2.4.2 - string.prototype.replaceall: 1.0.6 - ts-node: ^10.9.2 - typescript: 4.9.5 - zx: 4.2.0 - -dependencies: - '@microsoft/rush-lib': 5.94.1_@types+node@22.15.2 - chalk: 4.1.2 - fast-glob: 3.2.11 - minimist: 1.2.6 - prettier: 2.7.1 - prompts: 2.4.2 - string.prototype.replaceall: 1.0.6 - ts-node: 10.9.2_5gorizoetxxmrnbx6xopn2qxji - zx: 4.2.0 - -devDependencies: - '@types/minimist': 1.2.2 - '@types/node': 22.15.2 - '@types/prompts': 2.0.14 - typescript: 4.9.5 - -packages: - - /@azure/abort-controller/1.1.0: - resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} - engines: {node: '>=12.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/abort-controller/2.1.2: - resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/core-auth/1.9.0: - resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.11.0 - tslib: 2.8.1 - dev: false - - /@azure/core-client/1.9.3: - resolution: {integrity: sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-rest-pipeline': 1.19.1 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-http/2.3.2: - resolution: {integrity: sha512-Z4dfbglV9kNZO177CNx4bo5ekFuYwwsvjLiKdZI4r84bYGv3irrbQz7JC3/rUfFH2l4T/W6OFleJaa2X0IaQqw==} - engines: {node: '>=14.0.0'} - deprecated: This package is no longer supported. Please migrate to use @azure/core-rest-pipeline - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.9.0 - '@azure/core-tracing': 1.0.0-preview.13 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - '@types/node-fetch': 2.6.2 - '@types/tunnel': 0.0.3 - form-data: 4.0.2 - node-fetch: 2.6.7 - process: 0.11.10 - tough-cookie: 4.1.4 - tslib: 2.8.1 - tunnel: 0.0.6 - uuid: 8.3.2 - xml2js: 0.5.0 - transitivePeerDependencies: - - encoding - dev: false - - /@azure/core-lro/2.7.2: - resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - tslib: 2.8.1 - dev: false - - /@azure/core-paging/1.6.2: - resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/core-rest-pipeline/1.19.1: - resolution: {integrity: sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-tracing/1.0.0-preview.13: - resolution: {integrity: sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==} - engines: {node: '>=12.0.0'} - dependencies: - '@opentelemetry/api': 1.9.0 - tslib: 2.8.1 - dev: false - - /@azure/core-tracing/1.2.0: - resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/core-util/1.11.0: - resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - tslib: 2.8.1 - dev: false - - /@azure/identity/2.1.0: - resolution: {integrity: sha512-BPDz1sK7Ul9t0l9YKLEa8PHqWU4iCfhGJ+ELJl6c8CP3TpJt2urNCbm0ZHsthmxRsYoMPbz2Dvzj30zXZVmAFw==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.9.0 - '@azure/core-client': 1.9.3 - '@azure/core-rest-pipeline': 1.19.1 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - '@azure/msal-browser': 2.39.0 - '@azure/msal-common': 7.6.0 - '@azure/msal-node': 1.18.4 - events: 3.3.0 - jws: 4.0.0 - open: 8.4.2 - stoppable: 1.1.0 - tslib: 2.8.1 - uuid: 8.3.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/logger/1.1.4: - resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/msal-browser/2.39.0: - resolution: {integrity: sha512-kks/n2AJzKUk+DBqZhiD+7zeQGBl+WpSOQYzWy6hff3bU0ZrYFqr4keFLlzB5VKuKZog0X59/FGHb1RPBDZLVg==} - engines: {node: '>=0.8.0'} - dependencies: - '@azure/msal-common': 13.3.3 - dev: false - - /@azure/msal-common/13.3.1: - resolution: {integrity: sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-common/13.3.3: - resolution: {integrity: sha512-n278DdCXKeiWhLwhEL7/u9HRMyzhUXLefeajiknf6AmEedoiOiv2r5aRJ7LXdT3NGPyubkdIbthaJlVtmuEqvA==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-common/7.6.0: - resolution: {integrity: sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-node/1.18.4: - resolution: {integrity: sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==} - engines: {node: 10 || 12 || 14 || 16 || 18} - deprecated: A newer major version of this library is available. Please upgrade to the latest available version. - dependencies: - '@azure/msal-common': 13.3.1 - jsonwebtoken: 9.0.2 - uuid: 8.3.2 - dev: false - - /@azure/storage-blob/12.11.0: - resolution: {integrity: sha512-na+FisoARuaOWaHWpmdtk3FeuTWf2VWamdJ9/TJJzj5ZdXPLC3juoDgFs6XVuJIoK30yuBpyFBEDXVRK4pB7Tg==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-http': 2.3.2 - '@azure/core-lro': 2.7.2 - '@azure/core-paging': 1.6.2 - '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.1.4 - events: 3.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - encoding - dev: false - - /@babel/code-frame/7.26.2: - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: false - - /@babel/generator/7.27.0: - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - dev: false - - /@babel/helper-string-parser/7.25.9: - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-identifier/7.25.9: - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/parser/7.27.0: - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.27.0 - dev: false - - /@babel/template/7.27.0: - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - dev: false - - /@babel/traverse/7.27.0: - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/types/7.27.0: - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - dev: false - - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: false - - /@devexpress/error-stack-parser/2.0.6: - resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} - dependencies: - stackframe: 1.3.4 - dev: false - - /@jridgewell/gen-mapping/0.3.8: - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@jridgewell/resolve-uri/3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array/1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/sourcemap-codec/1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: false - - /@jridgewell/trace-mapping/0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /@microsoft/rush-lib/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-qXeqtYYe4ImyYyaAIR+ZdZEpNUeOZSaP+sbfksvDu9oa4kNH+5pCemII8NSfmQd9Dx7zPGPNiGf4zE4/Jcs6VA==} - engines: {node: '>=5.6.0'} - dependencies: - '@pnpm/link-bins': 5.3.25 - '@rushstack/heft-config-file': 0.11.9_@types+node@22.15.2 - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/package-deps-hash': 4.0.10_@types+node@22.15.2 - '@rushstack/rig-package': 0.3.18 - '@rushstack/rush-amazon-s3-build-cache-plugin': 5.94.1_@types+node@22.15.2 - '@rushstack/rush-azure-storage-build-cache-plugin': 5.94.1_@types+node@22.15.2 - '@rushstack/stream-collator': 4.0.228_@types+node@22.15.2 - '@rushstack/terminal': 0.5.3_@types+node@22.15.2 - '@rushstack/ts-command-line': 4.13.2 - '@types/node-fetch': 2.6.2 - '@yarnpkg/lockfile': 1.0.2 - builtin-modules: 3.1.0 - cli-table: 0.3.11 - colors: 1.2.5 - dependency-path: 9.2.8 - figures: 3.0.0 - git-repo-info: 2.1.1 - glob: 7.0.6 - glob-escape: 0.0.2 - https-proxy-agent: 5.0.1 - ignore: 5.1.9 - inquirer: 7.3.3 - js-yaml: 3.13.1 - jszip: 3.8.0 - lodash: 4.17.21 - node-fetch: 2.6.7 - npm-check: 6.0.1 - npm-package-arg: 6.1.1 - npm-packlist: 2.1.5 - read-package-tree: 5.1.6 - resolve: 1.22.10 - rxjs: 6.6.7 - semver: 7.3.8 - ssri: 8.0.1 - strict-uri-encode: 2.0.0 - tapable: 2.2.1 - tar: 6.1.15 - true-case-path: 2.2.1 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: false - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: false - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - dev: false - - /@opentelemetry/api/1.9.0: - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - dev: false - - /@pnpm/crypto.base32-hash/1.0.1: - resolution: {integrity: sha512-pzAXNn6KxTA3kbcI3iEnYs4vtH51XEVqmK/1EiD18MaPKylhqy8UvMJK3zKG+jeP82cqQbozcTGm4yOQ8i3vNw==} - engines: {node: '>=14.6'} - dependencies: - rfc4648: 1.5.4 - dev: false - - /@pnpm/error/1.4.0: - resolution: {integrity: sha512-vxkRrkneBPVmP23kyjnYwVOtipwlSl6UfL+h+Xa3TrABJTz5rYBXemlTsU5BzST8U4pD7YDkTb3SQu+MMuIDKA==} - engines: {node: '>=10.16'} - dev: false - - /@pnpm/link-bins/5.3.25: - resolution: {integrity: sha512-9Xq8lLNRHFDqvYPXPgaiKkZ4rtdsm7izwM/cUsFDc5IMnG0QYIVBXQbgwhz2UvjUotbJrvfKLJaCfA3NGBnLDg==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/package-bins': 4.1.0 - '@pnpm/read-modules-dir': 2.0.3 - '@pnpm/read-package-json': 4.0.0 - '@pnpm/read-project-manifest': 1.1.7 - '@pnpm/types': 6.4.0 - '@zkochan/cmd-shim': 5.4.1 - is-subdir: 1.2.0 - is-windows: 1.0.2 - mz: 2.7.0 - normalize-path: 3.0.0 - p-settle: 4.1.1 - ramda: 0.27.2 - dev: false - - /@pnpm/package-bins/4.1.0: - resolution: {integrity: sha512-57/ioGYLBbVRR80Ux9/q2i3y8Q+uQADc3c+Yse8jr/60YLOi3jcWz13e2Jy+ANYtZI258Qc5wk2X077rp0Ly/Q==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/types': 6.4.0 - fast-glob: 3.2.11 - is-subdir: 1.2.0 - dev: false - - /@pnpm/read-modules-dir/2.0.3: - resolution: {integrity: sha512-i9OgRvSlxrTS9a2oXokhDxvQzDtfqtsooJ9jaGoHkznue5aFCTSrNZFQ6M18o8hC03QWfnxaKi0BtOvNkKu2+A==} - engines: {node: '>=10.13'} - dependencies: - mz: 2.7.0 - dev: false - - /@pnpm/read-package-json/4.0.0: - resolution: {integrity: sha512-1cr2tEwe4YU6SI0Hmg+wnsr6yxBt2iJtqv6wrF84On8pS9hx4A2PLw3CIgbwxaG0b+ur5wzhNogwl4qD5FLFNg==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/types': 6.4.0 - load-json-file: 6.2.0 - normalize-package-data: 3.0.3 - dev: false - - /@pnpm/read-project-manifest/1.1.7: - resolution: {integrity: sha512-tj8ExXZeDcMmMUj7D292ETe/RiEirr1X1wpT6Zy85z2MrFYoG9jfCJpps40OdZBNZBhxbuKtGPWKVSgXD0yrVw==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/types': 6.4.0 - '@pnpm/write-project-manifest': 1.1.7 - detect-indent: 6.1.0 - fast-deep-equal: 3.1.3 - graceful-fs: 4.2.4 - is-windows: 1.0.2 - json5: 2.2.3 - parse-json: 5.2.0 - read-yaml-file: 2.1.0 - sort-keys: 4.2.0 - strip-bom: 4.0.0 - dev: false - - /@pnpm/types/6.4.0: - resolution: {integrity: sha512-nco4+4sZqNHn60Y4VE/fbtlShCBqipyUO+nKRPvDHqLrecMW9pzHWMVRxk4nrMRoeowj3q0rX3GYRBa8lsHTAg==} - engines: {node: '>=10.16'} - dev: false - - /@pnpm/types/8.9.0: - resolution: {integrity: sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==} - engines: {node: '>=14.6'} - dev: false - - /@pnpm/write-project-manifest/1.1.7: - resolution: {integrity: sha512-OLkDZSqkA1mkoPNPvLFXyI6fb0enCuFji6Zfditi/CLAo9kmIhQFmEUDu4krSB8i908EljG8YwL5Xjxzm5wsWA==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/types': 6.4.0 - json5: 2.2.3 - mz: 2.7.0 - write-file-atomic: 3.0.3 - write-yaml-file: 4.2.0 - dev: false - - /@rushstack/heft-config-file/0.11.9_@types+node@22.15.2: - resolution: {integrity: sha512-01JFmD+G44v5btO0fVIbVBJCfGWLTN2l4Y/+IVU8D9eR14+wYJjV5CO25uxydDynMr334URFcITuzG21L9L0GA==} - engines: {node: '>=10.13.0'} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/rig-package': 0.3.18 - jsonpath-plus: 4.0.0 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/node-core-library/3.55.2_@types+node@22.15.2: - resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 22.15.2 - colors: 1.2.5 - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.10 - semver: 7.3.8 - z-schema: 5.0.5 - dev: false - - /@rushstack/package-deps-hash/4.0.10_@types+node@22.15.2: - resolution: {integrity: sha512-oW4M9olWay3qIpIULtpolh0MY1QprY2CqrrgUl7NpyMn1/r0laT8EUbkTylWRnytvXaNTDBlRz99+CdU1DKqgA==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/rig-package/0.3.18: - resolution: {integrity: sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==} - dependencies: - resolve: 1.22.10 - strip-json-comments: 3.1.1 - dev: false - - /@rushstack/rush-amazon-s3-build-cache-plugin/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-NCZ5YscW9Qi9avvgspE76dfHtCcsSMpfm3X4D9gaTcGPyE7RpWY5yMTZhO31Z5g0NM6cw6eWEfKwJvZ5nGbnBQ==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/rush-sdk': 5.94.1_@types+node@22.15.2 - https-proxy-agent: 5.0.1 - node-fetch: 2.6.7 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@rushstack/rush-azure-storage-build-cache-plugin/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-uIdyoeGHyFlAnmAHF0KKDsg5KBde9nRl15x8wTr/zwzwydMMIdbfxHAMc3C78YE05SUYeIIut4qh5KCoEn9/Hw==} - dependencies: - '@azure/identity': 2.1.0 - '@azure/storage-blob': 12.11.0 - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/rush-sdk': 5.94.1_@types+node@22.15.2 - '@rushstack/terminal': 0.5.3_@types+node@22.15.2 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@rushstack/rush-sdk/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-T5euwYB4GzBGGCWCdk0djjHqsI7boGWKjutyNb+AguB7WsnRjDujEHC7CdosYtbsJo5caIwEdi9sspiaS4vyjA==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@types/node-fetch': 2.6.2 - tapable: 2.2.1 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/stream-collator/4.0.228_@types+node@22.15.2: - resolution: {integrity: sha512-x7KR0IVNOEZBegdw7u2LVugD0U9uMw3IR1gPwV9bNWEC01cObc+9wk21suUxkzDtMVdKcNYoiZ814WnUqOF7pQ==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/terminal': 0.5.3_@types+node@22.15.2 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/terminal/0.5.3_@types+node@22.15.2: - resolution: {integrity: sha512-AFKlWyw6C3vWvRrkXIcchxUooNHSzZ0AS5mGbdon3tjnxhqnMitjdk0WZl2382i50Zz3WE6Fd3LFurVbrNrEyw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@types/node': 22.15.2 - wordwrap: 1.0.0 - dev: false - - /@rushstack/ts-command-line/4.13.2: - resolution: {integrity: sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.2 - dev: false - - /@sindresorhus/is/0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: false - - /@szmarczak/http-timer/1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - dependencies: - defer-to-connect: 1.1.3 - dev: false - - /@tsconfig/node10/1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: false - - /@tsconfig/node12/1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: false - - /@tsconfig/node14/1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: false - - /@tsconfig/node16/1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: false - - /@types/argparse/1.0.38: - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: false - - /@types/fs-extra/9.0.13: - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@types/lodash/4.17.16: - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - dev: false - - /@types/minimatch/3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: false - - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - /@types/node-fetch/2.6.12: - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - dependencies: - '@types/node': 22.15.2 - form-data: 4.0.2 - dev: false - - /@types/node-fetch/2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - dependencies: - '@types/node': 22.15.2 - form-data: 3.0.3 - dev: false - - /@types/node/16.18.126: - resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==} - dev: false - - /@types/node/22.15.2: - resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} - dependencies: - undici-types: 6.21.0 - - /@types/normalize-package-data/2.4.4: - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: false - - /@types/parse-json/4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: false - - /@types/prompts/2.0.14: - resolution: {integrity: sha512-HZBd99fKxRWpYCErtm2/yxUZv6/PBI9J7N4TNFffl5JbrYMHBwF25DjQGTW3b3jmXq+9P6/8fCIb2ee57BFfYA==} - dependencies: - '@types/node': 22.15.2 - dev: true - - /@types/responselike/1.0.3: - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@types/tunnel/0.0.3: - resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@vue/compiler-core/3.5.13: - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - dependencies: - '@babel/parser': 7.27.0 - '@vue/shared': 3.5.13 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - dev: false - - /@vue/compiler-dom/3.5.13: - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - dev: false - - /@vue/compiler-sfc/3.5.13: - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - dependencies: - '@babel/parser': 7.27.0 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.3 - source-map-js: 1.2.1 - dev: false - - /@vue/compiler-ssr/3.5.13: - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 - dev: false - - /@vue/shared/3.5.13: - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - dev: false - - /@yarnpkg/lockfile/1.0.2: - resolution: {integrity: sha512-MqJ00WXw89ga0rK6GZkdmmgv3bAsxpJixyTthjcix73O44pBqotyU2BejBkLuIsaOBI6SEu77vAnSyLe5iIHkw==} - dev: false - - /@zkochan/cmd-shim/5.4.1: - resolution: {integrity: sha512-odWb1qUzt0dIOEUPyWBEpFDYQPRjEMr/dbHHAfgBkVkYR9aO7Zo+I7oYWrXIxl+cKlC7+49ftPm8uJxL1MA9kw==} - engines: {node: '>=10.13'} - dependencies: - cmd-extension: 1.0.2 - graceful-fs: 4.2.11 - is-windows: 1.0.2 - dev: false - - /acorn-walk/8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - dependencies: - acorn: 8.14.1 - dev: false - - /acorn/8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /agent-base/7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - dev: false - - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: false - - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: false - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: false - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /any-promise/1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /arg/4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: false - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: false - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false - - /array-buffer-byte-length/1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - dev: false - - /array-differ/3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - dev: false - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: false - - /array-union/3.0.1: - resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} - engines: {node: '>=12'} - dev: false - - /arraybuffer.prototype.slice/1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - dev: false - - /arrify/1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: false - - /arrify/2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: false - - /asap/2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /async-function/1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - dev: false - - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /available-typed-arrays/1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.1.0 - dev: false - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - - /better-path-resolve/1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: false - - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /boxen/5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: false - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /brace-expansion/2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: false - - /braces/3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: false - - /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false - - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /builtin-modules/3.1.0: - resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==} - engines: {node: '>=6'} - dev: false - - /builtins/1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: false - - /cacheable-request/6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: false - - /call-bind-apply-helpers/1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - dev: false - - /call-bind/1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - dev: false - - /call-bound/1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - dev: false - - /callsite-record/4.1.5: - resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} - dependencies: - '@devexpress/error-stack-parser': 2.0.6 - '@types/lodash': 4.17.16 - callsite: 1.0.0 - chalk: 2.4.2 - highlight-es: 1.0.3 - lodash: 4.17.21 - pinkie-promise: 2.0.1 - dev: false - - /callsite/1.0.0: - resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} - dev: false - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: false - - /camelcase-keys/6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: false - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false - - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: false - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chardet/0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false - - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /ci-info/2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /cli-boxes/2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: false - - /cli-cursor/3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: false - - /cli-spinners/2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: false - - /cli-table/0.3.11: - resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} - engines: {node: '>= 0.2.0'} - dependencies: - colors: 1.0.3 - dev: false - - /cli-width/3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: false - - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - - /clone-response/1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: false - - /clone/1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: false - - /cmd-extension/1.0.2: - resolution: {integrity: sha512-iWDjmP8kvsMdBmLTHxFaqXikO8EdFRDfim7k6vUHglY/2xJ5jLrPsnQGijdfp4U+sr/BeecG0wKm02dSIAeQ1g==} - engines: {node: '>=10'} - dev: false - - /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: false - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /colors/1.0.3: - resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} - engines: {node: '>=0.1.90'} - dev: false - - /colors/1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: false - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - - /commander/9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - requiresBuild: true - dev: false - optional: true - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /configstore/5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: false - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /create-require/1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: false - - /cross-spawn/7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /crypto-random-string/2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: false - - /data-view-buffer/1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: false - - /data-view-byte-length/1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: false - - /data-view-byte-offset/1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dev: false - - /debug/4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /debuglog/1.0.1: - resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dev: false - - /decamelize-keys/1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: false - - /decamelize/1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /decompress-response/3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: false - - /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false - - /defaults/1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: false - - /defer-to-connect/1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: false - - /define-data-property/1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - dev: false - - /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false - - /define-properties/1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: false - - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - - /depcheck/1.4.7: - resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@babel/parser': 7.27.0 - '@babel/traverse': 7.27.0 - '@vue/compiler-sfc': 3.5.13 - callsite: 1.0.0 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - debug: 4.4.0 - deps-regex: 0.2.0 - findup-sync: 5.0.0 - ignore: 5.3.2 - is-core-module: 2.16.1 - js-yaml: 3.14.1 - json5: 2.2.3 - lodash: 4.17.21 - minimatch: 7.4.6 - multimatch: 5.0.0 - please-upgrade-node: 3.2.0 - readdirp: 3.6.0 - require-package-name: 2.0.1 - resolve: 1.22.10 - resolve-from: 5.0.0 - semver: 7.7.1 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /dependency-path/9.2.8: - resolution: {integrity: sha512-S0OhIK7sIyAsph8hVH/LMCTDL3jozKtlrPx3dMQrlE2nAlXTquTT+AcOufphDMTQqLkfn4acvfiem9I1IWZ4jQ==} - engines: {node: '>=14.6'} - dependencies: - '@pnpm/crypto.base32-hash': 1.0.1 - '@pnpm/types': 8.9.0 - encode-registry: 3.0.1 - semver: 7.3.8 - dev: false - - /deps-regex/0.2.0: - resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} - dev: false - - /detect-file/1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - dev: false - - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: false - - /dezalgo/1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 - dev: false - - /diff/4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: false - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: false - - /dot-prop/5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: false - - /dunder-proto/1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - dev: false - - /duplexer/0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: false - - /duplexer3/0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: false - - /ecdsa-sig-formatter/1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /encode-registry/3.0.1: - resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} - engines: {node: '>=10'} - dependencies: - mem: 8.1.1 - dev: false - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - - /entities/4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false - - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: false - - /es-abstract/1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 - dev: false - - /es-define-property/1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - dev: false - - /es-errors/1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: false - - /es-object-atoms/1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - dev: false - - /es-set-tostringtag/2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: false - - /es-to-primitive/1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - dev: false - - /escalade/3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - dev: false - - /escape-goat/2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - dev: false - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: false - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false - - /event-stream/3.3.4: - resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} - dependencies: - duplexer: 0.1.2 - from: 0.1.7 - map-stream: 0.1.0 - pause-stream: 0.0.11 - split: 0.3.3 - stream-combiner: 0.0.4 - through: 2.3.8 - dev: false - - /events/3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: false - - /expand-tilde/2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 - dev: false - - /external-editor/3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: false - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - - /fast-glob/3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: false - - /fastq/1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - dependencies: - reusify: 1.1.0 - dev: false - - /figures/3.0.0: - resolution: {integrity: sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: false - - /fill-range/7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: false - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: false - - /find-yarn-workspace-root2/1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.8 - pkg-dir: 4.2.0 - dev: false - - /findup-sync/5.0.0: - resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} - engines: {node: '>= 10.13.0'} - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - dev: false - - /for-each/0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - dev: false - - /form-data/3.0.3: - resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - dev: false - - /form-data/4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - dev: false - - /from/0.1.7: - resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} - dev: false - - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-extra/7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - - /function-bind/1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: false - - /function.prototype.name/1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - dev: false - - /functions-have-names/1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-intrinsic/1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - dev: false - - /get-proto/1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - dev: false - - /get-stream/4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.2 - dev: false - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.2 - dev: false - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: false - - /get-symbol-description/1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - dev: false - - /git-repo-info/2.1.1: - resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} - engines: {node: '>= 4.0'} - dev: false - - /giturl/1.0.3: - resolution: {integrity: sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==} - engines: {node: '>= 0.10.0'} - dev: false - - /glob-escape/0.0.2: - resolution: {integrity: sha512-L/cXYz8x7qer1HAyUQ+mbjcUsJVdpRxpAf7CwqHoNBs9vTpABlGfNN4tzkDxt+u3Z7ZncVyKlCNPtzb0R/7WbA==} - engines: {node: '>= 0.10'} - dev: false - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob/7.0.6: - resolution: {integrity: sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /global-dirs/3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - dependencies: - ini: 2.0.0 - dev: false - - /global-modules/1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - dev: false - - /global-modules/2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - dependencies: - global-prefix: 3.0.0 - dev: false - - /global-prefix/1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - dev: false - - /global-prefix/3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: false - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false - - /globalthis/1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - dev: false - - /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.11 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - - /globby/12.2.0: - resolution: {integrity: sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - array-union: 3.0.1 - dir-glob: 3.0.1 - fast-glob: 3.2.11 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 4.0.0 - dev: false - - /gopd/1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - dev: false - - /got/9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: false - - /graceful-fs/4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - - /graceful-fs/4.2.4: - resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} - dev: false - - /hard-rejection/2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: false - - /has-bigints/1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - dev: false - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: false - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: false - - /has-property-descriptors/1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.1 - dev: false - - /has-proto/1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - dev: false - - /has-symbols/1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - dev: false - - /has-tostringtag/1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.1.0 - dev: false - - /has-yarn/2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - dev: false - - /hasown/2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: false - - /highlight-es/1.0.3: - resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} - dependencies: - chalk: 2.4.2 - is-es2016-keyword: 1.0.0 - js-tokens: 3.0.2 - dev: false - - /homedir-polyfill/1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 - dev: false - - /hosted-git-info/2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false - - /hosted-git-info/4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: false - - /http-cache-semantics/4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - - /http-proxy-agent/7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent/7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false - - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /ignore-walk/3.0.4: - resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} - dependencies: - minimatch: 3.1.2 - dev: false - - /ignore/5.1.9: - resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} - engines: {node: '>= 4'} - dev: false - - /ignore/5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - dev: false - - /immediate/3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - - /import-fresh/3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: false - - /import-lazy/2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: false - - /import-lazy/4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: false - - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: false - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: false - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - - /ini/2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - dev: false - - /inquirer/7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.0.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: false - - /internal-slot/1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - dev: false - - /is-array-buffer/3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - dev: false - - /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false - - /is-async-function/2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - dev: false - - /is-bigint/1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - dependencies: - has-bigints: 1.1.0 - dev: false - - /is-boolean-object/1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: false - - /is-callable/1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false - - /is-ci/2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: false - - /is-core-module/2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.2 - dev: false - - /is-data-view/1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - dev: false - - /is-date-object/1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: false - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false - - /is-es2016-keyword/1.0.0: - resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} - dev: false - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-finalizationregistry/1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - dev: false - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-generator-function/1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - dev: false - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-installed-globally/0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: false - - /is-interactive/1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false - - /is-map/2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: false - - /is-npm/5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} - dev: false - - /is-number-object/1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: false - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: false - - /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: false - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: false - - /is-plain-obj/1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: false - - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - - /is-regex/1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: false - - /is-set/2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: false - - /is-shared-array-buffer/1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - dev: false - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-string/1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: false - - /is-subdir/1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: false - - /is-symbol/1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - dev: false - - /is-typed-array/1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.19 - dev: false - - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false - - /is-unicode-supported/0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false - - /is-weakmap/2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: false - - /is-weakref/1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - dev: false - - /is-weakset/2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - dev: false - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: false - - /is-yarn-global/0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: false - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isarray/2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: false - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - - /jju/1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - dev: false - - /js-tokens/3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: false - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false - - /js-yaml/3.13.1: - resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: false - - /jsesc/3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /json-buffer/3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: false - - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false - - /json5/2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /jsonfile/4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonpath-plus/4.0.0: - resolution: {integrity: sha512-e0Jtg4KAzDJKKwzbLaUtinCn0RZseWBVRTRGihSpvFlM3wTR7ExSp+PTdeTsDrLNJUe7L7JYJe8mblHX5SCT6A==} - engines: {node: '>=10.0'} - dev: false - - /jsonwebtoken/9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.7.1 - dev: false - - /jszip/3.8.0: - resolution: {integrity: sha512-cnpQrXvFSLdsR9KR5/x7zdf6c3m8IhZfZzSblFEHSqBaVwD2nvJ4CuCKLyvKvwBgZm08CgfSoiTBQLm5WW9hGw==} - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - set-immediate-shim: 1.0.1 - dev: false - - /jwa/1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jwa/2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jws/3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - - /jws/4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - dev: false - - /keyv/3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: false - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false - - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: false - - /latest-version/5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} - dependencies: - package-json: 6.5.0 - dev: false - - /lie/3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - dependencies: - immediate: 3.0.6 - dev: false - - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /load-json-file/6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 - dev: false - - /load-yaml-file/0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: false - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: false - - /lodash.get/4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - dev: false - - /lodash.includes/4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false - - /lodash.isboolean/3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false - - /lodash.isequal/4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - dev: false - - /lodash.isinteger/4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false - - /lodash.isnumber/3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false - - /lodash.isplainobject/4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false - - /lodash.isstring/4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false - - /lodash.once/4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /log-symbols/4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: false - - /lowercase-keys/1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: false - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: false - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: false - - /magic-string/0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /make-error/1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: false - - /map-age-cleaner/0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: false - - /map-obj/1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: false - - /map-obj/4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: false - - /map-stream/0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - dev: false - - /math-intrinsics/1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - dev: false - - /mem/8.1.1: - resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} - engines: {node: '>=10'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 - dev: false - - /meow/9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: false - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: false - - /micromatch/4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: false - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false - - /mimic-fn/3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - dev: false - - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false - - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: false - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /minimatch/7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimist-options/4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: false - - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: false - - /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minipass/5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /multimatch/5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - dev: false - - /mute-stream/0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: false - - /mz/2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid/3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - - /node-emoji/1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - dependencies: - lodash: 4.17.21 - dev: false - - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /node-fetch/2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /normalize-package-data/2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.10 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: false - - /normalize-package-data/3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.16.1 - semver: 7.7.1 - validate-npm-package-license: 3.0.4 - dev: false - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-url/4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: false - - /npm-bundled/1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-check/6.0.1: - resolution: {integrity: sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ==} - engines: {node: '>=10.9.0'} - hasBin: true - dependencies: - callsite-record: 4.1.5 - chalk: 4.1.2 - co: 4.6.0 - depcheck: 1.4.7 - execa: 5.1.1 - giturl: 1.0.3 - global-modules: 2.0.0 - globby: 11.1.0 - inquirer: 7.3.3 - is-ci: 2.0.0 - lodash: 4.17.21 - meow: 9.0.0 - minimatch: 3.1.2 - node-emoji: 1.11.0 - ora: 5.4.1 - package-json: 6.5.0 - path-exists: 4.0.0 - pkg-dir: 5.0.0 - preferred-pm: 3.1.4 - rc-config-loader: 4.1.3 - semver: 7.3.8 - semver-diff: 3.1.1 - strip-ansi: 6.0.1 - text-table: 0.2.0 - throat: 6.0.2 - update-notifier: 5.1.0 - xtend: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /npm-normalize-package-bin/1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: false - - /npm-package-arg/6.1.1: - resolution: {integrity: sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==} - dependencies: - hosted-git-info: 2.8.9 - osenv: 0.1.5 - semver: 5.7.2 - validate-npm-package-name: 3.0.0 - dev: false - - /npm-packlist/2.1.5: - resolution: {integrity: sha512-KCfK3Vi2F+PH1klYauoQzg81GQ8/GGjQRKYY6tRnpQUPKTs/1gBZSRWtTEd7jGdSn1LZL7gpAmJT+BcS55k2XQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - glob: 7.2.3 - ignore-walk: 3.0.4 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: false - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /object-inspect/1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - dev: false - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false - - /object.assign/4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - dev: false - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: false - - /open/8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /ora/5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: false - - /os-homedir/1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: false - - /os-tmpdir/1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: false - - /osenv/0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - deprecated: This package is no longer supported. - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: false - - /own-keys/1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - dev: false - - /p-cancelable/1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: false - - /p-defer/1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - dev: false - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: false - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: false - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: false - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: false - - /p-reflect/2.1.0: - resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} - engines: {node: '>=8'} - dev: false - - /p-settle/4.1.1: - resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} - engines: {node: '>=10'} - dependencies: - p-limit: 2.3.0 - p-reflect: 2.1.0 - dev: false - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: false - - /package-json/6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} - dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.1 - dev: false - - /pako/1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - dev: false - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: false - - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: false - - /parse-passwd/1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: false - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: false - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: false - - /pause-stream/0.0.11: - resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} - dependencies: - through: 2.3.8 - dev: false - - /picocolors/1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - dev: false - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: false - - /pinkie-promise/2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: false - - /pinkie/2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: false - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: false - - /pkg-dir/5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - dev: false - - /please-upgrade-node/3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - dependencies: - semver-compare: 1.0.0 - dev: false - - /possible-typed-array-names/1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - dev: false - - /postcss/8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: false - - /preferred-pm/3.1.4: - resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.2.0 - dev: false - - /prepend-http/2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: false - - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /process/0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false - - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: false - - /ps-tree/1.2.0: - resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} - engines: {node: '>= 0.10'} - hasBin: true - dependencies: - event-stream: 3.3.4 - dev: false - - /psl/1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - dependencies: - punycode: 2.3.1 - dev: false - - /pump/3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - - /punycode/2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: false - - /pupa/2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} - dependencies: - escape-goat: 2.1.1 - dev: false - - /querystringify/2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: false - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - - /quick-lru/4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: false - - /ramda/0.27.2: - resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} - dev: false - - /rc-config-loader/4.1.3: - resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} - dependencies: - debug: 4.4.0 - js-yaml: 4.1.0 - json5: 2.2.3 - require-from-string: 2.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.6 - strip-json-comments: 2.0.1 - dev: false - - /read-package-json/2.1.2: - resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==} - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - dependencies: - glob: 7.2.3 - json-parse-even-better-errors: 2.3.1 - normalize-package-data: 2.5.0 - npm-normalize-package-bin: 1.0.1 - dev: false - - /read-package-tree/5.1.6: - resolution: {integrity: sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==} - deprecated: The functionality that this package provided is now in @npmcli/arborist - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - once: 1.4.0 - read-package-json: 2.1.2 - readdir-scoped-modules: 1.1.0 - dev: false - - /read-pkg-up/7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: false - - /read-pkg/5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: false - - /read-yaml-file/2.1.0: - resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} - engines: {node: '>=10.13'} - dependencies: - js-yaml: 4.1.0 - strip-bom: 4.0.0 - dev: false - - /readable-stream/2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream/3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - - /readdir-scoped-modules/1.1.0: - resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - graceful-fs: 4.2.11 - once: 1.4.0 - dev: false - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /redent/3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: false - - /reflect.getprototypeof/1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - dev: false - - /regexp.prototype.flags/1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - dev: false - - /registry-auth-token/4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} - dependencies: - rc: 1.2.8 - dev: false - - /registry-url/5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} - dependencies: - rc: 1.2.8 - dev: false - - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false - - /require-package-name/2.0.1: - resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - dev: false - - /requires-port/1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: false - - /resolve-dir/1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - dev: false - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: false - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: false - - /resolve/1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: false - - /responselike/1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: false - - /restore-cursor/3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: false - - /reusify/1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rfc4648/1.5.4: - resolution: {integrity: sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==} - dev: false - - /run-async/2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: false - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: false - - /rxjs/6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: false - - /safe-array-concat/1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - dev: false - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - - /safe-push-apply/1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - dev: false - - /safe-regex-test/1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - dev: false - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - - /sax/1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - dev: false - - /semver-compare/1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: false - - /semver-diff/3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /semver/5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: false - - /semver/6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: false - - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /semver/7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /set-function-length/1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - dev: false - - /set-function-name/2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - dev: false - - /set-immediate-shim/1.0.1: - resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} - engines: {node: '>=0.10.0'} - dev: false - - /set-proto/1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - dev: false - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /side-channel-list/1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - dev: false - - /side-channel-map/1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - dev: false - - /side-channel-weakmap/1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - dev: false - - /side-channel/1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - dev: false - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: false - - /slash/4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: false - - /sort-keys/4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} - dependencies: - is-plain-obj: 2.1.0 - dev: false - - /source-map-js/1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - dev: false - - /spdx-correct/3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 - dev: false - - /spdx-exceptions/2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - dev: false - - /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - dev: false - - /spdx-license-ids/3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - dev: false - - /split/0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - dependencies: - through: 2.3.8 - dev: false - - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false - - /ssri/8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /stackframe/1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false - - /stoppable/1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - dev: false - - /stream-combiner/0.0.4: - resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} - dependencies: - duplexer: 0.1.2 - dev: false - - /strict-uri-encode/2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false - - /string-argv/0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: false - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string.prototype.replaceall/1.0.6: - resolution: {integrity: sha512-OA8VDhE7ssNFlyoDXUHxw6V5cjgPrtosyJKqJX5i1P5tV9eUynsbhx1yz0g+Ye4fjFwAxhKLxt8GSRx2Aqc+Sw==} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - is-regex: 1.2.1 - dev: false - - /string.prototype.trim/1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - dev: false - - /string.prototype.trimend/1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - dev: false - - /string.prototype.trimstart/1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - dev: false - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-bom/3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: false - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: false - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false - - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: false - - /strip-json-comments/2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: false - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: false - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: false - - /tapable/2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: false - - /tar/6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: false - - /thenify-all/1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify/3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /throat/6.0.2: - resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} - dev: false - - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false - - /tmp/0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: false - - /to-readable-stream/1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: false - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: false - - /tough-cookie/4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: false - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /trim-newlines/3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: false - - /true-case-path/2.2.1: - resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} - dev: false - - /ts-node/10.9.2_5gorizoetxxmrnbx6xopn2qxji: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.2 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: false - - /tslib/1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - - /tslib/2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - dev: false - - /tunnel/0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - dev: false - - /type-fest/0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - dev: false - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: false - - /type-fest/0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: false - - /type-fest/0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: false - - /type-fest/0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: false - - /typed-array-buffer/1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - dev: false - - /typed-array-byte-length/1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - dev: false - - /typed-array-byte-offset/1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - dev: false - - /typed-array-length/1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - dev: false - - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: false - - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - /unbox-primitive/1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - dev: false - - /undici-types/6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - /unique-string/2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - dependencies: - crypto-random-string: 2.0.0 - dev: false - - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify/0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify/2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: false - - /update-notifier/5.1.0: - resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} - engines: {node: '>=10'} - dependencies: - boxen: 5.1.2 - chalk: 4.1.2 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 - is-installed-globally: 0.4.0 - is-npm: 5.0.0 - is-yarn-global: 0.3.0 - latest-version: 5.1.0 - pupa: 2.1.1 - semver: 7.3.8 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 - dev: false - - /url-parse-lax/3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: false - - /url-parse/1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: false - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - - /uuid/8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false - - /v8-compile-cache-lib/3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: false - - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: false - - /validate-npm-package-name/3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: false - - /validator/13.15.0: - resolution: {integrity: sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==} - engines: {node: '>= 0.10'} - dev: false - - /wcwidth/1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: false - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-boxed-primitive/1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - dev: false - - /which-builtin-type/1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - dev: false - - /which-collection/1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - dev: false - - /which-pm/2.2.0: - resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: false - - /which-typed-array/1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - dev: false - - /which/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /widest-line/3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - dependencies: - string-width: 4.2.3 - dev: false - - /wordwrap/1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: false - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false - - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: false - - /write-yaml-file/4.2.0: - resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} - engines: {node: '>=10.13'} - dependencies: - js-yaml: 4.1.0 - write-file-atomic: 3.0.3 - dev: false - - /xdg-basedir/4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - dev: false - - /xml2js/0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - dev: false - - /xmlbuilder/11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: false - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false - - /yargs-parser/20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false - - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: false - - /yn/3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: false - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: false - - /z-schema/5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.15.0 - optionalDependencies: - commander: 9.5.0 - dev: false - - /zx/4.2.0: - resolution: {integrity: sha512-/4f7FaJecA9I655KXKXIHO3CFNYjAz2uSmTz6v2eNlKdrQKyz4VyF3RjqFuP6nQG+Hd3+NjOvrVNBkv8Ne9d4Q==} - engines: {node: '>= 14.13.0'} - hasBin: true - dependencies: - '@types/fs-extra': 9.0.13 - '@types/minimist': 1.2.2 - '@types/node': 16.18.126 - '@types/node-fetch': 2.6.12 - chalk: 4.1.2 - fs-extra: 10.1.0 - globby: 12.2.0 - minimist: 1.2.6 - node-fetch: 2.7.0 - ps-tree: 1.2.0 - which: 2.0.2 - transitivePeerDependencies: - - encoding - dev: false diff --git a/common/autoinstallers/create/src/cli.ts b/common/autoinstallers/create/src/cli.ts deleted file mode 100644 index b2d3a019..00000000 --- a/common/autoinstallers/create/src/cli.ts +++ /dev/null @@ -1,150 +0,0 @@ -import minimist, { ParsedArgs } from 'minimist' -import fs, { promises as fsp, constants } from 'fs' -import path from 'path' -import chalk from 'chalk' -import prompts from 'prompts' -import { RushConfiguration } from '@microsoft/rush-lib' -import { $ } from 'zx' -import readline from 'readline' -import { createProject } from './create' -import { logger } from './logger' - -export enum ProjectType { - Library = 'lib', - // Infra = 'infra', - // Component = 'component', - // App = 'app', -} - -export interface CreateScriptArgv extends ParsedArgs { - name?: string; - // type: ProjectType; -} - -export const PACKAGE_NAME_SCOPE = 'visactor'; - -function verifyProjectName(name?: string): { valid: boolean; message?: string } { - if (!name) { - return { - valid: false, - message: `project name can't be empty"`, - } - } - - if (name.match(new RegExp(`/^@?${PACKAGE_NAME_SCOPE}/`))) { - return { - valid: false, - message: `don't input with prefix 'PACKAGE_NAME_SCOPE'`, - } - } - - const projects = RushConfiguration.loadFromDefaultLocation({ - startingFolder: process.cwd(), - }) - const isExistsProject = projects.findProjectByShorthandName(`@${PACKAGE_NAME_SCOPE}/${name}`) - if (isExistsProject) { - return { - valid: false, - message: 'project name has exists in rush.json `projects` field', - } - } - - if (!name.match(/^[a-z.-]+$/)) { - return { - valid: false, - message: 'package name only support chars: a-z . -', - } - } - - return { valid: true } -} - -function getProjectRelativePath(type: ProjectType, projectName: string) { - const projectPathMap: Record = { - lib: 'packages', - // infra: 'infra', - } - - return `${projectPathMap[type]}/${projectName}` -} - -async function create() { - const argv = minimist(process.argv.slice(2)) as CreateScriptArgv - - let projectName = argv.name - - if (!projectName) { - const { name } = await prompts({ - type: 'text', - name: 'name', - message: `What's your project named? ${chalk.reset.gray(`(@${PACKAGE_NAME_SCOPE}/_____)`)}`, - validate: (name) => { - const { valid, message } = verifyProjectName(name) - if (valid) { - return true - } - return message! - }, - }) - - projectName = name - } - - const { valid, message } = verifyProjectName(projectName) - if (!valid) { - logger.error(message) - process.exit(1) - } - - const projectRelativePath = getProjectRelativePath(ProjectType.Library, projectName!) - const projectPath = path.resolve(process.cwd(), projectRelativePath) - try { - await fsp.access(projectPath, constants.R_OK | constants.W_OK) - logger.error(`The path ${projectRelativePath} you will created exists`) - process.exit(1) - } catch (_err) {} - - const { description = '' } = await prompts({ - type: 'text', - name: 'description', - message: `description of project ${chalk.reset.gray('(default: "")')}`, - }) - - await createProject(projectName!, projectRelativePath, description, argv) - - await appendProjectToRushJson(projectName!, projectRelativePath) - - $`rush --debug update` -} - - -function appendProjectToRushJson(packageName: string, projectRelativePath: string) { - return new Promise((resolve) => { - const rushJsonPath = path.resolve(process.cwd(), 'rush.json') - - const result: string[] = [] - const rl = readline.createInterface({ input: fs.createReadStream(rushJsonPath) }) - rl.on('line', (l) => { - if (l.trim().startsWith('"projects":')) { - result.push(l) - result.push(' {') - result.push(` "packageName": "@${PACKAGE_NAME_SCOPE}/${packageName}",`) - result.push(` "projectFolder": "${projectRelativePath}",`) - result.push(` "shouldPublish": false`) - result.push(' },') - } else { - result.push(l) - } - }) - - rl.on('close', () => { - fs.writeFileSync(rushJsonPath, result.join('\n'), { encoding: 'utf-8' }) - logger.info(`Append project ${packageName} to rush.json successful`) - resolve(undefined) - }) - }) -} - -create().catch((err) => { - console.error('[rush create] failed', err) -}) diff --git a/common/autoinstallers/create/src/create.ts b/common/autoinstallers/create/src/create.ts deleted file mode 100644 index 01e57ba0..00000000 --- a/common/autoinstallers/create/src/create.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { logger } from './logger' -import { getTemplateDir, appleTemplateProject } from './template' -import type { CreateScriptArgv, ProjectType } from './cli' -import { PACKAGE_NAME_SCOPE } from './cli' - -export type Creator = (params: { - projectName: string; - projectRelativePath: string; - description: string; -}) => Promise; - -export const createLibrary: Creator = async ({ projectName, description, projectRelativePath }) => { - // absolute path - const templateProject = getTemplateDir('library') - - await appleTemplateProject({ - sourceDir: templateProject, - targetDir: projectRelativePath, - context: { - projectName, - description, - scope: PACKAGE_NAME_SCOPE, - }, - }) -} - -export const createInfra: Creator = async ({ projectName, description, projectRelativePath }) => { - // absolute path - const templateProject = getTemplateDir('infra') - - await appleTemplateProject({ - sourceDir: templateProject, - targetDir: projectRelativePath, - context: { - projectName, - description, - scope: PACKAGE_NAME_SCOPE, - }, - }) -} - -const creatorMap: Partial> = { - lib: createLibrary, - // infra: createInfra, -} - -export const createProject = async ( - projectName: string, - projectRelativePath: string, - description: string, - _options: CreateScriptArgv, -) => { - logger.info(`creating project "@${PACKAGE_NAME_SCOPE}/${projectName}" ...`) - - const creator = creatorMap['lib']! - await creator({ projectName, description, projectRelativePath }) - - logger.info(`created in \`${projectRelativePath}\``) -} diff --git a/common/autoinstallers/create/src/global.d.ts b/common/autoinstallers/create/src/global.d.ts deleted file mode 100644 index 5d0c8349..00000000 --- a/common/autoinstallers/create/src/global.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module 'string.prototype.replaceall' { - type ReplaceAll = (source: string, sbuStr: RegExp | string, newSubStr: string) => string; - - const replaceAll: ReplaceAll = () => {} - - export default replaceAll -} diff --git a/common/autoinstallers/create/src/logger.ts b/common/autoinstallers/create/src/logger.ts deleted file mode 100644 index 99a1277d..00000000 --- a/common/autoinstallers/create/src/logger.ts +++ /dev/null @@ -1,15 +0,0 @@ -import chalk from 'chalk' - -export const logger = { - info: (...messages: any[]) => console.info( - chalk.greenBright.bold('[rush create]'), - ...messages, - ), - - error: (...messages: any[]) => { - console.error( - chalk.redBright.bold('[rush create][error]'), - ...messages, - ) - }, -} diff --git a/common/autoinstallers/create/src/template.ts b/common/autoinstallers/create/src/template.ts deleted file mode 100644 index 56dee976..00000000 --- a/common/autoinstallers/create/src/template.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* eslint-disable no-await-in-loop */ -import path from 'path' -import { promises as fs, existsSync } from 'fs' -import glob from 'fast-glob' -import replaceAll from 'string.prototype.replaceall' - -/** template variables context */ -export interface TemplateContext { - projectName: string; - description: string; - scope: string; -} - -export const getTemplateDir = (mode: string) => path.join(__dirname, '../templates', mode) - -/** - * compile the template text with Handlebars like syntax - * https://handlebarsjs.com/guide/expressions.html#basic-usage - */ -export const compileTemplateText = (template: string, context: TemplateContext): string => { - let result = template - - for (const [key, value] of Object.entries(context)) { - // nodejs < 14 not supported `replaceAll` - result = replaceAll(result, `{{${key}}}`, value) - } - - return result -} - -export const appleTemplateProject = async ({ - sourceDir, - targetDir, - context, -}: { - /** absolute path for template project dir */ - sourceDir: string; - /** path relative from cwd */ - targetDir: string; - /** template variables context */ - context: TemplateContext; -}) => { - // path relative from templateProject - const files = await glob(['**/*', '**/.*'], { cwd: sourceDir }) - - for (const file of files) { - const sourceFilePath = path.join(sourceDir, file) - const targetFilePath = path.join(targetDir, file) - console.info('[appleTemplateProject]', sourceFilePath) - const sourceFile = await fs.readFile(sourceFilePath, { encoding: 'utf-8' }) - - const targetFile = compileTemplateText(sourceFile, context) - - const targetFileDir = path.dirname(targetFilePath) - if (!existsSync(targetFileDir)) { - await fs.mkdir(targetFileDir, { recursive: true }) - } - - await fs.writeFile(targetFilePath, targetFile, { flag: 'w', encoding: 'utf-8' }) - } -} diff --git a/common/autoinstallers/create/templates/library/.eslintrc.js b/common/autoinstallers/create/templates/library/.eslintrc.js deleted file mode 100644 index d3df3db1..00000000 --- a/common/autoinstallers/create/templates/library/.eslintrc.js +++ /dev/null @@ -1,7 +0,0 @@ -require('@rushstack/eslint-patch/modern-module-resolution'); - -module.exports = { - extends: ['@internal/eslint-config/profile/lib'], - parserOptions: { tsconfigRootDir: __dirname }, - // ignorePatterns: [], -}; diff --git a/common/autoinstallers/create/templates/library/README.md b/common/autoinstallers/create/templates/library/README.md deleted file mode 100644 index 24315ddc..00000000 --- a/common/autoinstallers/create/templates/library/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# @{{scope}}/{{projectName}} - -## Description - -{{description}} - -## Usage - -```typescript -import { xxx } from '@{{scope}}/{{projectName}}'; -``` diff --git a/common/autoinstallers/create/templates/library/bundler.config.js b/common/autoinstallers/create/templates/library/bundler.config.js deleted file mode 100644 index ec3d3af4..00000000 --- a/common/autoinstallers/create/templates/library/bundler.config.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = { - formats: ["cjs", "es", "umd"], -}; diff --git a/common/autoinstallers/create/templates/library/package.json b/common/autoinstallers/create/templates/library/package.json deleted file mode 100644 index ae46574a..00000000 --- a/common/autoinstallers/create/templates/library/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "@{{scope}}/{{projectName}}", - "version": "0.0.1", - "description": "{{description}}", - "sideEffects": false, - "main": "cjs/index.js", - "module": "es/index.js", - "types": "es/index.d.ts", - "files": [ - "cjs", - "es", - "dist" - ], - "scripts": { - "compile": "tsc --noEmit", - "eslint": "eslint --debug --fix src/", - "build": "bundle", - "dev": "bundle --clean -f es -w", - "start": "vite ./vite", - "prepublishOnly": "npm run build" - }, - "dependencies": {}, - "devDependencies": { - "@internal/bundler": "workspace:*", - "@internal/eslint-config": "workspace:*", - "@internal/ts-config": "workspace:*", - "@rushstack/eslint-patch": "~1.1.4", - "react": "^18.0.0", - "react-dom": "^18.0.0", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", - "@vitejs/plugin-react": "3.1.0", - "eslint": "~8.18.0", - "vite": "3.2.6", - "typescript": "4.9.5" - } -} diff --git a/common/autoinstallers/create/templates/library/src/global.d.ts b/common/autoinstallers/create/templates/library/src/global.d.ts deleted file mode 100644 index 415c2c82..00000000 --- a/common/autoinstallers/create/templates/library/src/global.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare const __VERSION__: string; diff --git a/common/autoinstallers/create/templates/library/src/index.ts b/common/autoinstallers/create/templates/library/src/index.ts deleted file mode 100644 index a45af27d..00000000 --- a/common/autoinstallers/create/templates/library/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const version = __VERSION__; diff --git a/common/autoinstallers/create/templates/library/tsconfig.json b/common/autoinstallers/create/templates/library/tsconfig.json deleted file mode 100644 index 47fb0bf8..00000000 --- a/common/autoinstallers/create/templates/library/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "@internal/ts-config/tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "outDir": "output" - }, - "include": [ - "src" - ] -} diff --git a/common/autoinstallers/create/templates/library/vite/index.html b/common/autoinstallers/create/templates/library/vite/index.html deleted file mode 100644 index e0d1c840..00000000 --- a/common/autoinstallers/create/templates/library/vite/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Vite + React + TS - - -
- - - diff --git a/common/autoinstallers/create/templates/library/vite/public/vite.svg b/common/autoinstallers/create/templates/library/vite/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/common/autoinstallers/create/templates/library/vite/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/common/autoinstallers/create/templates/library/vite/src/App.css b/common/autoinstallers/create/templates/library/vite/src/App.css deleted file mode 100644 index b9d355df..00000000 --- a/common/autoinstallers/create/templates/library/vite/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/common/autoinstallers/create/templates/library/vite/src/App.tsx b/common/autoinstallers/create/templates/library/vite/src/App.tsx deleted file mode 100644 index d6dcc835..00000000 --- a/common/autoinstallers/create/templates/library/vite/src/App.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React, { useState } from 'react'; -import reactLogo from './assets/react.svg'; -import viteLogo from '/vite.svg'; -import './App.css'; - -function App() { - const [count, setCount] = useState(0); - - return ( - <> - -

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

Click on the Vite and React logos to learn more

- - ); -} - -export default App; diff --git a/common/autoinstallers/create/templates/library/vite/src/assets/react.svg b/common/autoinstallers/create/templates/library/vite/src/assets/react.svg deleted file mode 100644 index 6c87de9b..00000000 --- a/common/autoinstallers/create/templates/library/vite/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/common/autoinstallers/create/templates/library/vite/src/index.css b/common/autoinstallers/create/templates/library/vite/src/index.css deleted file mode 100644 index 2c3fac68..00000000 --- a/common/autoinstallers/create/templates/library/vite/src/index.css +++ /dev/null @@ -1,69 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/common/autoinstallers/create/templates/library/vite/src/main.tsx b/common/autoinstallers/create/templates/library/vite/src/main.tsx deleted file mode 100644 index b3ad8a59..00000000 --- a/common/autoinstallers/create/templates/library/vite/src/main.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './App.tsx'; -import './index.css'; - -ReactDOM.render( - - - , - document.getElementById('root') as HTMLElement -); diff --git a/common/autoinstallers/create/templates/library/vite/src/vite-env.d.ts b/common/autoinstallers/create/templates/library/vite/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/common/autoinstallers/create/templates/library/vite/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/common/autoinstallers/create/templates/library/vite/tsconfig.json b/common/autoinstallers/create/templates/library/vite/tsconfig.json deleted file mode 100644 index 4af7feed..00000000 --- a/common/autoinstallers/create/templates/library/vite/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext" - ], - "module": "ESNext", - "skipLibCheck": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react", - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": [ - "src" - ], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] -} diff --git a/common/autoinstallers/create/templates/library/vite/tsconfig.node.json b/common/autoinstallers/create/templates/library/vite/tsconfig.node.json deleted file mode 100644 index 42872c59..00000000 --- a/common/autoinstallers/create/templates/library/vite/tsconfig.node.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/common/autoinstallers/create/templates/library/vite/vite.config.ts b/common/autoinstallers/create/templates/library/vite/vite.config.ts deleted file mode 100644 index c8f4f283..00000000 --- a/common/autoinstallers/create/templates/library/vite/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite'; -import react from '@vitejs/plugin-react'; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react({ jsxRuntime: 'classic' })] -}); diff --git a/common/autoinstallers/create/tsconfig.json b/common/autoinstallers/create/tsconfig.json deleted file mode 100644 index 51771570..00000000 --- a/common/autoinstallers/create/tsconfig.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "include": ["src"], - "exclude": ["template"], - "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": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* 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": "ESNext", /* 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": [], /* Specify multiple folders that act like `./node_modules/@types`. */ - "types": ["node"], /* 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": "./", /* 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. */ - }, - "ts-node": { - "transpileOnly": true, - "compilerOptions": { - "module": "commonjs", - }, - } -} diff --git a/common/autoinstallers/lint/change-all.ts b/common/autoinstallers/lint/change-all.ts deleted file mode 100644 index 4b3a7fe4..00000000 --- a/common/autoinstallers/lint/change-all.ts +++ /dev/null @@ -1,68 +0,0 @@ -import path from 'path'; -import chalk from 'chalk'; -import minimist, { ParsedArgs } from 'minimist'; -import { spawnSync, execSync } from 'child_process'; - -interface RunScriptArgv extends ParsedArgs { - message?: string; - type?: string; - 'not-commit'?: boolean; -} - -function run() { - const commitLineConfigPath = path.resolve(__dirname, './commitlint.config.js'); - const commitLintBinPath = path.resolve(__dirname, './node_modules/.bin/commitlint'); - const argv: RunScriptArgv = minimist(process.argv.slice(2)); - let message = argv.message; - let bumpType = argv.type; - let notCommit = argv['not-commit']; - - if (!message) { - const lastCommitMessage = execSync('git log -1 --pretty=%B ').toString(); - - if (!lastCommitMessage) { - process.exit(1); - } - - console.log( - chalk.green( - `[Notice] no message is supplied, we'll use latest commit message: ${chalk.red.bold(lastCommitMessage)}` - ) - ); - message = lastCommitMessage; - } else { - const result = spawnSync('sh', ['-c', `echo ${message} | ${commitLintBinPath} --config ${commitLineConfigPath}`], { - stdio: 'inherit' - }); - - if (result.status !== 0) { - process.exit(1); - } - } - - if (!bumpType) { - console.log( - chalk.green(`[Notice] no bumpType is supplied, we'll use default bumpType: ${chalk.red.bold('patch')}`) - ); - bumpType = 'patch'; - } - - spawnSync('sh', ['-c', `rush change --bulk --bump-type '${bumpType}' --message '${message}'`], { - stdio: 'inherit', - shell: false - }); - - if (!notCommit) { - spawnSync('sh', ['-c', 'git add --all'], { - stdio: 'inherit', - shell: false - }); - - spawnSync('sh', ['-c', `git commit -m 'docs: update changlog of rush'`], { - stdio: 'inherit', - shell: false - }); - } -} - -run(); diff --git a/common/autoinstallers/lint/commit-lint.js b/common/autoinstallers/lint/commit-lint.js deleted file mode 100644 index 75cdd717..00000000 --- a/common/autoinstallers/lint/commit-lint.js +++ /dev/null @@ -1,24 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const child_process = require("child_process"); - -const gitPath = path.resolve(__dirname, "../../../.git"); -const configPath = path.resolve(__dirname, "./commitlint.config.js"); -const commitlintBinPath = path.resolve(__dirname, "./node_modules/.bin/commitlint"); - -if (!fs.existsSync(gitPath)) { - console.error("no valid .git path"); - process.exit(1); -} - -const result = child_process.spawnSync( - "sh", - ["-c", `${commitlintBinPath} --config ${configPath} --cwd ${path.dirname(gitPath)} --edit`], - { - stdio: "inherit", - }, -); - -if (result.status !== 0) { - process.exit(1); -} diff --git a/common/autoinstallers/lint/commitlint.config.js b/common/autoinstallers/lint/commitlint.config.js deleted file mode 100644 index f505321c..00000000 --- a/common/autoinstallers/lint/commitlint.config.js +++ /dev/null @@ -1,44 +0,0 @@ -module.exports = { - extends: ['@commitlint/config-conventional'], - rules: { - 'not-allowed-chars': [2, 'always'], - 'header-max-length': [0, 'always', 200], - 'header-min-length': [2, 'always', 16], - 'type-enum': [ - 2, - 'always', - [ - 'build', - 'chore', - 'ci', - 'docs', - 'feat', - 'fix', - 'perf', - 'refactor', - 'revert', - 'style', - 'test', - 'wip', - 'release', - 'demo' - ] - ] - }, - plugins: [ - { - rules: { - 'not-allowed-chars': params => { - const { raw } = params; - const reg = - /^[a-zA-Z0-9\s`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]+$/im; - - return [ - reg.exec(raw), - 'Your commit message should only contain english characters, numbers, empty space, and special characters.' - ]; - } - } - } - ] -}; diff --git a/common/autoinstallers/lint/package.json b/common/autoinstallers/lint/package.json deleted file mode 100644 index e416797b..00000000 --- a/common/autoinstallers/lint/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "lint", - "version": "0.0.1", - "private": true, - "dependencies": { - "@commitlint/cli": "17.0.3", - "@commitlint/config-conventional": "17.0.3", - "@microsoft/rush-lib": "5.94.1", - "commitizen": "4.2.5", - "eslint": "~8.18.0", - "lint-staged": "13.0.3", - "minimist": "1.2.6", - "prettier": "2.7.1", - "ts-node": "^10.9.2", - "chalk": "4.1.2" - }, - "devDependencies": { - "@types/minimist": "1.2.2", - "@types/node": "*", - "typescript": "5.0.2" - } -} diff --git a/common/autoinstallers/lint/pnpm-lock.yaml b/common/autoinstallers/lint/pnpm-lock.yaml deleted file mode 100644 index 4b5ff6de..00000000 --- a/common/autoinstallers/lint/pnpm-lock.yaml +++ /dev/null @@ -1,5127 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - '@commitlint/cli': 17.0.3 - '@commitlint/config-conventional': 17.0.3 - '@microsoft/rush-lib': 5.94.1 - '@types/minimist': 1.2.2 - '@types/node': '*' - chalk: 4.1.2 - commitizen: 4.2.5 - eslint: ~8.18.0 - lint-staged: 13.0.3 - minimist: 1.2.6 - prettier: 2.7.1 - ts-node: ^10.9.2 - typescript: 5.0.2 - -dependencies: - '@commitlint/cli': 17.0.3 - '@commitlint/config-conventional': 17.0.3 - '@microsoft/rush-lib': 5.94.1_@types+node@22.15.2 - chalk: 4.1.2 - commitizen: 4.2.5_sih53j22iwo4i6pyctnx5zarnu - eslint: 8.18.0 - lint-staged: 13.0.3 - minimist: 1.2.6 - prettier: 2.7.1 - ts-node: 10.9.2_sih53j22iwo4i6pyctnx5zarnu - -devDependencies: - '@types/minimist': 1.2.2 - '@types/node': 22.15.2 - typescript: 5.0.2 - -packages: - - /@azure/abort-controller/1.1.0: - resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} - engines: {node: '>=12.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/abort-controller/2.1.2: - resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/core-auth/1.9.0: - resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.11.0 - tslib: 2.8.1 - dev: false - - /@azure/core-client/1.9.3: - resolution: {integrity: sha512-/wGw8fJ4mdpJ1Cum7s1S+VQyXt1ihwKLzfabS1O/RDADnmzVc01dHn44qD0BvGH6KlZNzOMW95tEpKqhkCChPA==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-rest-pipeline': 1.19.1 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-http/2.3.2: - resolution: {integrity: sha512-Z4dfbglV9kNZO177CNx4bo5ekFuYwwsvjLiKdZI4r84bYGv3irrbQz7JC3/rUfFH2l4T/W6OFleJaa2X0IaQqw==} - engines: {node: '>=14.0.0'} - deprecated: This package is no longer supported. Please migrate to use @azure/core-rest-pipeline - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.9.0 - '@azure/core-tracing': 1.0.0-preview.13 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - '@types/node-fetch': 2.6.2 - '@types/tunnel': 0.0.3 - form-data: 4.0.2 - node-fetch: 2.6.7 - process: 0.11.10 - tough-cookie: 4.1.4 - tslib: 2.8.1 - tunnel: 0.0.6 - uuid: 8.3.2 - xml2js: 0.5.0 - transitivePeerDependencies: - - encoding - dev: false - - /@azure/core-lro/2.7.2: - resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - tslib: 2.8.1 - dev: false - - /@azure/core-paging/1.6.2: - resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/core-rest-pipeline/1.19.1: - resolution: {integrity: sha512-zHeoI3NCs53lLBbWNzQycjnYKsA1CVKlnzSNuSFcUDwBp8HHVObePxrM7HaX+Ha5Ks639H7chNC9HOaIhNS03w==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.9.0 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-tracing/1.0.0-preview.13: - resolution: {integrity: sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==} - engines: {node: '>=12.0.0'} - dependencies: - '@opentelemetry/api': 1.9.0 - tslib: 2.8.1 - dev: false - - /@azure/core-tracing/1.2.0: - resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/core-util/1.11.0: - resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - tslib: 2.8.1 - dev: false - - /@azure/identity/2.1.0: - resolution: {integrity: sha512-BPDz1sK7Ul9t0l9YKLEa8PHqWU4iCfhGJ+ELJl6c8CP3TpJt2urNCbm0ZHsthmxRsYoMPbz2Dvzj30zXZVmAFw==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.9.0 - '@azure/core-client': 1.9.3 - '@azure/core-rest-pipeline': 1.19.1 - '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.11.0 - '@azure/logger': 1.1.4 - '@azure/msal-browser': 2.39.0 - '@azure/msal-common': 7.6.0 - '@azure/msal-node': 1.18.4 - events: 3.3.0 - jws: 4.0.0 - open: 8.4.2 - stoppable: 1.1.0 - tslib: 2.8.1 - uuid: 8.3.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/logger/1.1.4: - resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.8.1 - dev: false - - /@azure/msal-browser/2.39.0: - resolution: {integrity: sha512-kks/n2AJzKUk+DBqZhiD+7zeQGBl+WpSOQYzWy6hff3bU0ZrYFqr4keFLlzB5VKuKZog0X59/FGHb1RPBDZLVg==} - engines: {node: '>=0.8.0'} - dependencies: - '@azure/msal-common': 13.3.3 - dev: false - - /@azure/msal-common/13.3.1: - resolution: {integrity: sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-common/13.3.3: - resolution: {integrity: sha512-n278DdCXKeiWhLwhEL7/u9HRMyzhUXLefeajiknf6AmEedoiOiv2r5aRJ7LXdT3NGPyubkdIbthaJlVtmuEqvA==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-common/7.6.0: - resolution: {integrity: sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-node/1.18.4: - resolution: {integrity: sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==} - engines: {node: 10 || 12 || 14 || 16 || 18} - deprecated: A newer major version of this library is available. Please upgrade to the latest available version. - dependencies: - '@azure/msal-common': 13.3.1 - jsonwebtoken: 9.0.2 - uuid: 8.3.2 - dev: false - - /@azure/storage-blob/12.11.0: - resolution: {integrity: sha512-na+FisoARuaOWaHWpmdtk3FeuTWf2VWamdJ9/TJJzj5ZdXPLC3juoDgFs6XVuJIoK30yuBpyFBEDXVRK4pB7Tg==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-http': 2.3.2 - '@azure/core-lro': 2.7.2 - '@azure/core-paging': 1.6.2 - '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.1.4 - events: 3.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - encoding - dev: false - - /@babel/code-frame/7.26.2: - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - dev: false - - /@babel/generator/7.27.0: - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - dev: false - - /@babel/helper-string-parser/7.25.9: - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-identifier/7.25.9: - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/parser/7.27.0: - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.27.0 - dev: false - - /@babel/template/7.27.0: - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - dev: false - - /@babel/traverse/7.27.0: - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/types/7.27.0: - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - dev: false - - /@commitlint/cli/17.0.3: - resolution: {integrity: sha512-oAo2vi5d8QZnAbtU5+0cR2j+A7PO8zuccux65R/EycwvsZrDVyW518FFrnJK2UQxbRtHFFIG+NjQ6vOiJV0Q8A==} - engines: {node: '>=v14'} - hasBin: true - dependencies: - '@commitlint/format': 17.8.1 - '@commitlint/lint': 17.8.1 - '@commitlint/load': 17.8.1 - '@commitlint/read': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - lodash: 4.17.21 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: false - - /@commitlint/config-conventional/17.0.3: - resolution: {integrity: sha512-HCnzTm5ATwwwzNVq5Y57poS0a1oOOcd5pc1MmBpLbGmSysc4i7F/++JuwtdFPu16sgM3H9J/j2zznRLOSGVO2A==} - engines: {node: '>=v14'} - dependencies: - conventional-changelog-conventionalcommits: 5.0.0 - dev: false - - /@commitlint/config-validator/17.8.1: - resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - ajv: 8.17.1 - dev: false - - /@commitlint/config-validator/19.8.0: - resolution: {integrity: sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==} - engines: {node: '>=v18'} - dependencies: - '@commitlint/types': 19.8.0 - ajv: 8.17.1 - dev: false - optional: true - - /@commitlint/ensure/17.8.1: - resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - dev: false - - /@commitlint/execute-rule/17.8.1: - resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} - engines: {node: '>=v14'} - dev: false - - /@commitlint/execute-rule/19.8.0: - resolution: {integrity: sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==} - engines: {node: '>=v18'} - dev: false - optional: true - - /@commitlint/format/17.8.1: - resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - chalk: 4.1.2 - dev: false - - /@commitlint/is-ignored/17.8.1: - resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - semver: 7.5.4 - dev: false - - /@commitlint/lint/17.8.1: - resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/is-ignored': 17.8.1 - '@commitlint/parse': 17.8.1 - '@commitlint/rules': 17.8.1 - '@commitlint/types': 17.8.1 - dev: false - - /@commitlint/load/17.8.1: - resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/execute-rule': 17.8.1 - '@commitlint/resolve-extends': 17.8.1 - '@commitlint/types': 17.8.1 - '@types/node': 20.5.1 - chalk: 4.1.2 - cosmiconfig: 8.3.6_typescript@5.8.3 - cosmiconfig-typescript-loader: 4.4.0_iwag63elrqyuvuqfuez5hjipae - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.2_6v72ipms7rozpqco4327g2xjdm - typescript: 5.8.3 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: false - - /@commitlint/load/19.8.0_sih53j22iwo4i6pyctnx5zarnu: - resolution: {integrity: sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==} - engines: {node: '>=v18'} - requiresBuild: true - dependencies: - '@commitlint/config-validator': 19.8.0 - '@commitlint/execute-rule': 19.8.0 - '@commitlint/resolve-extends': 19.8.0 - '@commitlint/types': 19.8.0 - chalk: 5.4.1 - cosmiconfig: 9.0.0_typescript@5.0.2 - cosmiconfig-typescript-loader: 6.1.0_hxwsehgdaco5p5wdty72tbvofq - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - transitivePeerDependencies: - - '@types/node' - - typescript - dev: false - optional: true - - /@commitlint/message/17.8.1: - resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} - engines: {node: '>=v14'} - dev: false - - /@commitlint/parse/17.8.1: - resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.8.1 - conventional-changelog-angular: 6.0.0 - conventional-commits-parser: 4.0.0 - dev: false - - /@commitlint/read/17.8.1: - resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/top-level': 17.8.1 - '@commitlint/types': 17.8.1 - fs-extra: 11.3.0 - git-raw-commits: 2.0.11 - minimist: 1.2.6 - dev: false - - /@commitlint/resolve-extends/17.8.1: - resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/config-validator': 17.8.1 - '@commitlint/types': 17.8.1 - import-fresh: 3.3.1 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - dev: false - - /@commitlint/resolve-extends/19.8.0: - resolution: {integrity: sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==} - engines: {node: '>=v18'} - dependencies: - '@commitlint/config-validator': 19.8.0 - '@commitlint/types': 19.8.0 - global-directory: 4.0.1 - import-meta-resolve: 4.1.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - dev: false - optional: true - - /@commitlint/rules/17.8.1: - resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/ensure': 17.8.1 - '@commitlint/message': 17.8.1 - '@commitlint/to-lines': 17.8.1 - '@commitlint/types': 17.8.1 - execa: 5.1.1 - dev: false - - /@commitlint/to-lines/17.8.1: - resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} - engines: {node: '>=v14'} - dev: false - - /@commitlint/top-level/17.8.1: - resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} - engines: {node: '>=v14'} - dependencies: - find-up: 5.0.0 - dev: false - - /@commitlint/types/17.8.1: - resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} - engines: {node: '>=v14'} - dependencies: - chalk: 4.1.2 - dev: false - - /@commitlint/types/19.8.0: - resolution: {integrity: sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==} - engines: {node: '>=v18'} - dependencies: - '@types/conventional-commits-parser': 5.0.1 - chalk: 5.4.1 - dev: false - optional: true - - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: false - - /@devexpress/error-stack-parser/2.0.6: - resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} - dependencies: - stackframe: 1.3.4 - dev: false - - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@humanwhocodes/config-array/0.9.5: - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - deprecated: Use @eslint/object-schema instead - dev: false - - /@jridgewell/gen-mapping/0.3.8: - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@jridgewell/resolve-uri/3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array/1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/sourcemap-codec/1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: false - - /@jridgewell/trace-mapping/0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /@microsoft/rush-lib/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-qXeqtYYe4ImyYyaAIR+ZdZEpNUeOZSaP+sbfksvDu9oa4kNH+5pCemII8NSfmQd9Dx7zPGPNiGf4zE4/Jcs6VA==} - engines: {node: '>=5.6.0'} - dependencies: - '@pnpm/link-bins': 5.3.25 - '@rushstack/heft-config-file': 0.11.9_@types+node@22.15.2 - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/package-deps-hash': 4.0.10_@types+node@22.15.2 - '@rushstack/rig-package': 0.3.18 - '@rushstack/rush-amazon-s3-build-cache-plugin': 5.94.1_@types+node@22.15.2 - '@rushstack/rush-azure-storage-build-cache-plugin': 5.94.1_@types+node@22.15.2 - '@rushstack/stream-collator': 4.0.228_@types+node@22.15.2 - '@rushstack/terminal': 0.5.3_@types+node@22.15.2 - '@rushstack/ts-command-line': 4.13.2 - '@types/node-fetch': 2.6.2 - '@yarnpkg/lockfile': 1.0.2 - builtin-modules: 3.1.0 - cli-table: 0.3.11 - colors: 1.2.5 - dependency-path: 9.2.8 - figures: 3.0.0 - git-repo-info: 2.1.1 - glob: 7.0.6 - glob-escape: 0.0.2 - https-proxy-agent: 5.0.1 - ignore: 5.1.9 - inquirer: 7.3.3 - js-yaml: 3.13.1 - jszip: 3.8.0 - lodash: 4.17.21 - node-fetch: 2.6.7 - npm-check: 6.0.1 - npm-package-arg: 6.1.1 - npm-packlist: 2.1.5 - read-package-tree: 5.1.6 - resolve: 1.22.10 - rxjs: 6.6.7 - semver: 7.3.8 - ssri: 8.0.1 - strict-uri-encode: 2.0.0 - tapable: 2.2.1 - tar: 6.1.15 - true-case-path: 2.2.1 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: false - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: false - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - dev: false - - /@opentelemetry/api/1.9.0: - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - dev: false - - /@pnpm/crypto.base32-hash/1.0.1: - resolution: {integrity: sha512-pzAXNn6KxTA3kbcI3iEnYs4vtH51XEVqmK/1EiD18MaPKylhqy8UvMJK3zKG+jeP82cqQbozcTGm4yOQ8i3vNw==} - engines: {node: '>=14.6'} - dependencies: - rfc4648: 1.5.4 - dev: false - - /@pnpm/error/1.4.0: - resolution: {integrity: sha512-vxkRrkneBPVmP23kyjnYwVOtipwlSl6UfL+h+Xa3TrABJTz5rYBXemlTsU5BzST8U4pD7YDkTb3SQu+MMuIDKA==} - engines: {node: '>=10.16'} - dev: false - - /@pnpm/link-bins/5.3.25: - resolution: {integrity: sha512-9Xq8lLNRHFDqvYPXPgaiKkZ4rtdsm7izwM/cUsFDc5IMnG0QYIVBXQbgwhz2UvjUotbJrvfKLJaCfA3NGBnLDg==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/package-bins': 4.1.0 - '@pnpm/read-modules-dir': 2.0.3 - '@pnpm/read-package-json': 4.0.0 - '@pnpm/read-project-manifest': 1.1.7 - '@pnpm/types': 6.4.0 - '@zkochan/cmd-shim': 5.4.1 - is-subdir: 1.2.0 - is-windows: 1.0.2 - mz: 2.7.0 - normalize-path: 3.0.0 - p-settle: 4.1.1 - ramda: 0.27.2 - dev: false - - /@pnpm/package-bins/4.1.0: - resolution: {integrity: sha512-57/ioGYLBbVRR80Ux9/q2i3y8Q+uQADc3c+Yse8jr/60YLOi3jcWz13e2Jy+ANYtZI258Qc5wk2X077rp0Ly/Q==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/types': 6.4.0 - fast-glob: 3.3.3 - is-subdir: 1.2.0 - dev: false - - /@pnpm/read-modules-dir/2.0.3: - resolution: {integrity: sha512-i9OgRvSlxrTS9a2oXokhDxvQzDtfqtsooJ9jaGoHkznue5aFCTSrNZFQ6M18o8hC03QWfnxaKi0BtOvNkKu2+A==} - engines: {node: '>=10.13'} - dependencies: - mz: 2.7.0 - dev: false - - /@pnpm/read-package-json/4.0.0: - resolution: {integrity: sha512-1cr2tEwe4YU6SI0Hmg+wnsr6yxBt2iJtqv6wrF84On8pS9hx4A2PLw3CIgbwxaG0b+ur5wzhNogwl4qD5FLFNg==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/types': 6.4.0 - load-json-file: 6.2.0 - normalize-package-data: 3.0.3 - dev: false - - /@pnpm/read-project-manifest/1.1.7: - resolution: {integrity: sha512-tj8ExXZeDcMmMUj7D292ETe/RiEirr1X1wpT6Zy85z2MrFYoG9jfCJpps40OdZBNZBhxbuKtGPWKVSgXD0yrVw==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/types': 6.4.0 - '@pnpm/write-project-manifest': 1.1.7 - detect-indent: 6.1.0 - fast-deep-equal: 3.1.3 - graceful-fs: 4.2.4 - is-windows: 1.0.2 - json5: 2.2.3 - parse-json: 5.2.0 - read-yaml-file: 2.1.0 - sort-keys: 4.2.0 - strip-bom: 4.0.0 - dev: false - - /@pnpm/types/6.4.0: - resolution: {integrity: sha512-nco4+4sZqNHn60Y4VE/fbtlShCBqipyUO+nKRPvDHqLrecMW9pzHWMVRxk4nrMRoeowj3q0rX3GYRBa8lsHTAg==} - engines: {node: '>=10.16'} - dev: false - - /@pnpm/types/8.9.0: - resolution: {integrity: sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==} - engines: {node: '>=14.6'} - dev: false - - /@pnpm/write-project-manifest/1.1.7: - resolution: {integrity: sha512-OLkDZSqkA1mkoPNPvLFXyI6fb0enCuFji6Zfditi/CLAo9kmIhQFmEUDu4krSB8i908EljG8YwL5Xjxzm5wsWA==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/types': 6.4.0 - json5: 2.2.3 - mz: 2.7.0 - write-file-atomic: 3.0.3 - write-yaml-file: 4.2.0 - dev: false - - /@rushstack/heft-config-file/0.11.9_@types+node@22.15.2: - resolution: {integrity: sha512-01JFmD+G44v5btO0fVIbVBJCfGWLTN2l4Y/+IVU8D9eR14+wYJjV5CO25uxydDynMr334URFcITuzG21L9L0GA==} - engines: {node: '>=10.13.0'} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/rig-package': 0.3.18 - jsonpath-plus: 4.0.0 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/node-core-library/3.55.2_@types+node@22.15.2: - resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 22.15.2 - colors: 1.2.5 - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.10 - semver: 7.3.8 - z-schema: 5.0.5 - dev: false - - /@rushstack/package-deps-hash/4.0.10_@types+node@22.15.2: - resolution: {integrity: sha512-oW4M9olWay3qIpIULtpolh0MY1QprY2CqrrgUl7NpyMn1/r0laT8EUbkTylWRnytvXaNTDBlRz99+CdU1DKqgA==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/rig-package/0.3.18: - resolution: {integrity: sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==} - dependencies: - resolve: 1.22.10 - strip-json-comments: 3.1.1 - dev: false - - /@rushstack/rush-amazon-s3-build-cache-plugin/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-NCZ5YscW9Qi9avvgspE76dfHtCcsSMpfm3X4D9gaTcGPyE7RpWY5yMTZhO31Z5g0NM6cw6eWEfKwJvZ5nGbnBQ==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/rush-sdk': 5.94.1_@types+node@22.15.2 - https-proxy-agent: 5.0.1 - node-fetch: 2.6.7 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@rushstack/rush-azure-storage-build-cache-plugin/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-uIdyoeGHyFlAnmAHF0KKDsg5KBde9nRl15x8wTr/zwzwydMMIdbfxHAMc3C78YE05SUYeIIut4qh5KCoEn9/Hw==} - dependencies: - '@azure/identity': 2.1.0 - '@azure/storage-blob': 12.11.0 - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/rush-sdk': 5.94.1_@types+node@22.15.2 - '@rushstack/terminal': 0.5.3_@types+node@22.15.2 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@rushstack/rush-sdk/5.94.1_@types+node@22.15.2: - resolution: {integrity: sha512-T5euwYB4GzBGGCWCdk0djjHqsI7boGWKjutyNb+AguB7WsnRjDujEHC7CdosYtbsJo5caIwEdi9sspiaS4vyjA==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@types/node-fetch': 2.6.2 - tapable: 2.2.1 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/stream-collator/4.0.228_@types+node@22.15.2: - resolution: {integrity: sha512-x7KR0IVNOEZBegdw7u2LVugD0U9uMw3IR1gPwV9bNWEC01cObc+9wk21suUxkzDtMVdKcNYoiZ814WnUqOF7pQ==} - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@rushstack/terminal': 0.5.3_@types+node@22.15.2 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/terminal/0.5.3_@types+node@22.15.2: - resolution: {integrity: sha512-AFKlWyw6C3vWvRrkXIcchxUooNHSzZ0AS5mGbdon3tjnxhqnMitjdk0WZl2382i50Zz3WE6Fd3LFurVbrNrEyw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@rushstack/node-core-library': 3.55.2_@types+node@22.15.2 - '@types/node': 22.15.2 - wordwrap: 1.0.0 - dev: false - - /@rushstack/ts-command-line/4.13.2: - resolution: {integrity: sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.2 - dev: false - - /@sindresorhus/is/0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: false - - /@szmarczak/http-timer/1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - dependencies: - defer-to-connect: 1.1.3 - dev: false - - /@tsconfig/node10/1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: false - - /@tsconfig/node12/1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: false - - /@tsconfig/node14/1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: false - - /@tsconfig/node16/1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: false - - /@types/argparse/1.0.38: - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: false - - /@types/conventional-commits-parser/5.0.1: - resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} - dependencies: - '@types/node': 22.15.2 - dev: false - optional: true - - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@types/lodash/4.17.16: - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - dev: false - - /@types/minimatch/3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: false - - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - /@types/node-fetch/2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - dependencies: - '@types/node': 22.15.2 - form-data: 3.0.3 - dev: false - - /@types/node/20.5.1: - resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} - dev: false - - /@types/node/22.15.2: - resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} - dependencies: - undici-types: 6.21.0 - - /@types/normalize-package-data/2.4.4: - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: false - - /@types/parse-json/4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: false - - /@types/responselike/1.0.3: - resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@types/tunnel/0.0.3: - resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} - dependencies: - '@types/node': 22.15.2 - dev: false - - /@vue/compiler-core/3.5.13: - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - dependencies: - '@babel/parser': 7.27.0 - '@vue/shared': 3.5.13 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - dev: false - - /@vue/compiler-dom/3.5.13: - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - dev: false - - /@vue/compiler-sfc/3.5.13: - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - dependencies: - '@babel/parser': 7.27.0 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.3 - source-map-js: 1.2.1 - dev: false - - /@vue/compiler-ssr/3.5.13: - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 - dev: false - - /@vue/shared/3.5.13: - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - dev: false - - /@yarnpkg/lockfile/1.0.2: - resolution: {integrity: sha512-MqJ00WXw89ga0rK6GZkdmmgv3bAsxpJixyTthjcix73O44pBqotyU2BejBkLuIsaOBI6SEu77vAnSyLe5iIHkw==} - dev: false - - /@zkochan/cmd-shim/5.4.1: - resolution: {integrity: sha512-odWb1qUzt0dIOEUPyWBEpFDYQPRjEMr/dbHHAfgBkVkYR9aO7Zo+I7oYWrXIxl+cKlC7+49ftPm8uJxL1MA9kw==} - engines: {node: '>=10.13'} - dependencies: - cmd-extension: 1.0.2 - graceful-fs: 4.2.11 - is-windows: 1.0.2 - dev: false - - /JSONStream/1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - dev: false - - /acorn-jsx/5.3.2_acorn@8.14.1: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.14.1 - dev: false - - /acorn-walk/8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - dependencies: - acorn: 8.14.1 - dev: false - - /acorn/8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /agent-base/7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} - engines: {node: '>= 14'} - dev: false - - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: false - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: false - - /ajv/8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - dev: false - - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: false - - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: false - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-regex/6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - dev: false - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: false - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false - - /any-promise/1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /arg/4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: false - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: false - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false - - /array-differ/3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - dev: false - - /array-ify/1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - dev: false - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: false - - /arrify/1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: false - - /arrify/2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: false - - /asap/2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /astral-regex/2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: false - - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /at-least-node/1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: false - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - - /better-path-resolve/1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: false - - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /boxen/5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: false - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /brace-expansion/2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: false - - /braces/3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: false - - /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false - - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /builtin-modules/3.1.0: - resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==} - engines: {node: '>=6'} - dev: false - - /builtins/1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: false - - /cacheable-request/6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: false - - /cachedir/2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} - engines: {node: '>=6'} - dev: false - - /call-bind-apply-helpers/1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - dev: false - - /callsite-record/4.1.5: - resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} - dependencies: - '@devexpress/error-stack-parser': 2.0.6 - '@types/lodash': 4.17.16 - callsite: 1.0.0 - chalk: 2.4.2 - highlight-es: 1.0.3 - lodash: 4.17.21 - pinkie-promise: 2.0.1 - dev: false - - /callsite/1.0.0: - resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} - dev: false - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: false - - /camelcase-keys/6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: false - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false - - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: false - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chalk/5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false - optional: true - - /chardet/0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false - - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /ci-info/2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: false - - /cli-boxes/2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: false - - /cli-cursor/3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: false - - /cli-spinners/2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: false - - /cli-table/0.3.11: - resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} - engines: {node: '>= 0.2.0'} - dependencies: - colors: 1.0.3 - dev: false - - /cli-truncate/2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - dev: false - - /cli-truncate/3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - dev: false - - /cli-width/3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: false - - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - - /cliui/8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - - /clone-response/1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: false - - /clone/1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: false - - /cmd-extension/1.0.2: - resolution: {integrity: sha512-iWDjmP8kvsMdBmLTHxFaqXikO8EdFRDfim7k6vUHglY/2xJ5jLrPsnQGijdfp4U+sr/BeecG0wKm02dSIAeQ1g==} - engines: {node: '>=10'} - dev: false - - /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: false - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /colorette/2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: false - - /colors/1.0.3: - resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} - engines: {node: '>=0.1.90'} - dev: false - - /colors/1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: false - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - - /commander/9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: false - - /commitizen/4.2.5_sih53j22iwo4i6pyctnx5zarnu: - resolution: {integrity: sha512-9sXju8Qrz1B4Tw7kC5KhnvwYQN88qs2zbiB8oyMsnXZyJ24PPGiNM3nHr73d32dnE3i8VJEXddBFIbOgYSEXtQ==} - engines: {node: '>= 12'} - hasBin: true - dependencies: - cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0_sih53j22iwo4i6pyctnx5zarnu - dedent: 0.7.0 - detect-indent: 6.1.0 - find-node-modules: 2.1.3 - find-root: 1.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - inquirer: 8.2.4 - is-utf8: 0.2.1 - lodash: 4.17.21 - minimist: 1.2.6 - strip-bom: 4.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@types/node' - - typescript - dev: false - - /compare-func/2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - dev: false - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /configstore/5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: false - - /conventional-changelog-angular/6.0.0: - resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} - engines: {node: '>=14'} - dependencies: - compare-func: 2.0.0 - dev: false - - /conventional-changelog-conventionalcommits/5.0.0: - resolution: {integrity: sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==} - engines: {node: '>=10'} - dependencies: - compare-func: 2.0.0 - lodash: 4.17.21 - q: 1.5.1 - dev: false - - /conventional-commit-types/3.0.0: - resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} - dev: false - - /conventional-commits-parser/4.0.0: - resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} - engines: {node: '>=14'} - hasBin: true - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - meow: 8.1.2 - split2: 3.2.2 - dev: false - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /cosmiconfig-typescript-loader/4.4.0_iwag63elrqyuvuqfuez5hjipae: - resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} - engines: {node: '>=v14.21.3'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' - typescript: '>=4' - dependencies: - '@types/node': 20.5.1 - cosmiconfig: 8.3.6_typescript@5.8.3 - ts-node: 10.9.2_6v72ipms7rozpqco4327g2xjdm - typescript: 5.8.3 - dev: false - - /cosmiconfig-typescript-loader/6.1.0_hxwsehgdaco5p5wdty72tbvofq: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} - engines: {node: '>=v18'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=9' - typescript: '>=5' - dependencies: - '@types/node': 22.15.2 - cosmiconfig: 9.0.0_typescript@5.0.2 - jiti: 2.4.2 - typescript: 5.0.2 - dev: false - optional: true - - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /cosmiconfig/8.3.6_typescript@5.8.3: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - typescript: 5.8.3 - dev: false - - /cosmiconfig/9.0.0_typescript@5.0.2: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - typescript: 5.0.2 - dev: false - optional: true - - /create-require/1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: false - - /cross-spawn/7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /crypto-random-string/2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: false - - /cz-conventional-changelog/3.3.0_sih53j22iwo4i6pyctnx5zarnu: - resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} - engines: {node: '>= 10'} - dependencies: - chalk: 2.4.2 - commitizen: 4.2.5_sih53j22iwo4i6pyctnx5zarnu - conventional-commit-types: 3.0.0 - lodash.map: 4.6.0 - longest: 2.0.1 - word-wrap: 1.2.5 - optionalDependencies: - '@commitlint/load': 19.8.0_sih53j22iwo4i6pyctnx5zarnu - transitivePeerDependencies: - - '@types/node' - - typescript - dev: false - - /dargs/7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - dev: false - - /debug/4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /debuglog/1.0.1: - resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - dev: false - - /decamelize-keys/1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: false - - /decamelize/1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /decompress-response/3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: false - - /dedent/0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: false - - /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false - - /deep-is/0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: false - - /defaults/1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: false - - /defer-to-connect/1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: false - - /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false - - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - - /depcheck/1.4.7: - resolution: {integrity: sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@babel/parser': 7.27.0 - '@babel/traverse': 7.27.0 - '@vue/compiler-sfc': 3.5.13 - callsite: 1.0.0 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - debug: 4.4.0 - deps-regex: 0.2.0 - findup-sync: 5.0.0 - ignore: 5.3.2 - is-core-module: 2.16.1 - js-yaml: 3.14.1 - json5: 2.2.3 - lodash: 4.17.21 - minimatch: 7.4.6 - multimatch: 5.0.0 - please-upgrade-node: 3.2.0 - readdirp: 3.6.0 - require-package-name: 2.0.1 - resolve: 1.22.10 - resolve-from: 5.0.0 - semver: 7.7.1 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /dependency-path/9.2.8: - resolution: {integrity: sha512-S0OhIK7sIyAsph8hVH/LMCTDL3jozKtlrPx3dMQrlE2nAlXTquTT+AcOufphDMTQqLkfn4acvfiem9I1IWZ4jQ==} - engines: {node: '>=14.6'} - dependencies: - '@pnpm/crypto.base32-hash': 1.0.1 - '@pnpm/types': 8.9.0 - encode-registry: 3.0.1 - semver: 7.3.8 - dev: false - - /deps-regex/0.2.0: - resolution: {integrity: sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==} - dev: false - - /detect-file/1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - dev: false - - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: false - - /dezalgo/1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 - dev: false - - /diff/4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: false - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: false - - /doctrine/3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: false - - /dot-prop/5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: false - - /dunder-proto/1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - dev: false - - /duplexer3/0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: false - - /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false - - /ecdsa-sig-formatter/1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false - - /encode-registry/3.0.1: - resolution: {integrity: sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw==} - engines: {node: '>=10'} - dependencies: - mem: 8.1.1 - dev: false - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - - /entities/4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false - - /env-paths/2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: false - optional: true - - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: false - - /es-define-property/1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - dev: false - - /es-errors/1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: false - - /es-object-atoms/1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - dev: false - - /es-set-tostringtag/2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: false - - /escalade/3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - dev: false - - /escape-goat/2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - dev: false - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: false - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: false - - /eslint-scope/7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: false - - /eslint-utils/3.0.0_eslint@8.18.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.18.0 - eslint-visitor-keys: 2.1.0 - dev: false - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: false - - /eslint-visitor-keys/3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false - - /eslint/8.18.0: - resolution: {integrity: sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.9.5 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-utils: 3.0.0_eslint@8.18.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 6.0.2 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - v8-compile-cache: 2.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /espree/9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2_acorn@8.14.1 - eslint-visitor-keys: 3.4.3 - dev: false - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /esquery/1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: false - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: false - - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: false - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: false - - /events/3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: false - - /execa/6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 3.0.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: false - - /expand-tilde/2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 - dev: false - - /external-editor/3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: false - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - - /fast-glob/3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: false - - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: false - - /fast-levenshtein/2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: false - - /fast-uri/3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - dev: false - - /fastq/1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - dependencies: - reusify: 1.1.0 - dev: false - - /figures/3.0.0: - resolution: {integrity: sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: false - - /figures/3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: false - - /file-entry-cache/6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: false - - /fill-range/7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: false - - /find-node-modules/2.1.3: - resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} - dependencies: - findup-sync: 4.0.0 - merge: 2.1.1 - dev: false - - /find-root/1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: false - - /find-yarn-workspace-root2/1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.8 - pkg-dir: 4.2.0 - dev: false - - /findup-sync/4.0.0: - resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} - engines: {node: '>= 8'} - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - dev: false - - /findup-sync/5.0.0: - resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==} - engines: {node: '>= 10.13.0'} - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - dev: false - - /flat-cache/3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: false - - /flatted/3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - dev: false - - /form-data/3.0.3: - resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - dev: false - - /form-data/4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - dev: false - - /fs-extra/11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-extra/7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - - /fs-extra/9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - - /function-bind/1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: false - - /functional-red-black-tree/1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: false - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-intrinsic/1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - dev: false - - /get-proto/1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - dev: false - - /get-stream/4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.2 - dev: false - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.2 - dev: false - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: false - - /git-raw-commits/2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - dev: false - - /git-repo-info/2.1.1: - resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} - engines: {node: '>= 4.0'} - dev: false - - /giturl/1.0.3: - resolution: {integrity: sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==} - engines: {node: '>= 0.10.0'} - dev: false - - /glob-escape/0.0.2: - resolution: {integrity: sha512-L/cXYz8x7qer1HAyUQ+mbjcUsJVdpRxpAf7CwqHoNBs9vTpABlGfNN4tzkDxt+u3Z7ZncVyKlCNPtzb0R/7WbA==} - engines: {node: '>= 0.10'} - dev: false - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob/7.0.6: - resolution: {integrity: sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /global-directory/4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - dependencies: - ini: 4.1.1 - dev: false - optional: true - - /global-dirs/0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - dependencies: - ini: 1.3.8 - dev: false - - /global-dirs/3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - dependencies: - ini: 2.0.0 - dev: false - - /global-modules/1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - dev: false - - /global-modules/2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - dependencies: - global-prefix: 3.0.0 - dev: false - - /global-prefix/1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - dev: false - - /global-prefix/3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: false - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false - - /globals/13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: false - - /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - - /gopd/1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - dev: false - - /got/9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.3 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: false - - /graceful-fs/4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - - /graceful-fs/4.2.4: - resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} - dev: false - - /hard-rejection/2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: false - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: false - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: false - - /has-symbols/1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - dev: false - - /has-tostringtag/1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.1.0 - dev: false - - /has-yarn/2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - dev: false - - /hasown/2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - dev: false - - /highlight-es/1.0.3: - resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} - dependencies: - chalk: 2.4.2 - is-es2016-keyword: 1.0.0 - js-tokens: 3.0.2 - dev: false - - /homedir-polyfill/1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 - dev: false - - /hosted-git-info/2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false - - /hosted-git-info/4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: false - - /http-cache-semantics/4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - - /http-proxy-agent/7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent/7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false - - /human-signals/3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} - dev: false - - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /ignore-walk/3.0.4: - resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} - dependencies: - minimatch: 3.1.2 - dev: false - - /ignore/5.1.9: - resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} - engines: {node: '>= 4'} - dev: false - - /ignore/5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - dev: false - - /immediate/3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - - /import-fresh/3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: false - - /import-lazy/2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: false - - /import-lazy/4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: false - - /import-meta-resolve/4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - dev: false - optional: true - - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: false - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: false - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - - /ini/2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - dev: false - - /ini/4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false - optional: true - - /inquirer/7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.0.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: false - - /inquirer/8.2.4: - resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: false - - /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false - - /is-ci/2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: false - - /is-core-module/2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.2 - dev: false - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false - - /is-es2016-keyword/1.0.0: - resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} - dev: false - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-fullwidth-code-point/4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: false - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-installed-globally/0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: false - - /is-interactive/1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false - - /is-npm/5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} - dev: false - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: false - - /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: false - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: false - - /is-plain-obj/1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: false - - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-stream/3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /is-subdir/1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: false - - /is-text-path/1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: false - - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false - - /is-unicode-supported/0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false - - /is-utf8/0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: false - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: false - - /is-yarn-global/0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: false - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - - /jiti/2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - dev: false - optional: true - - /jju/1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - dev: false - - /js-tokens/3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: false - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false - - /js-yaml/3.13.1: - resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: false - - /jsesc/3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /json-buffer/3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: false - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: false - - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false - - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: false - - /json-schema-traverse/1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false - - /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: false - - /json5/2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /jsonfile/4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonparse/1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - dev: false - - /jsonpath-plus/4.0.0: - resolution: {integrity: sha512-e0Jtg4KAzDJKKwzbLaUtinCn0RZseWBVRTRGihSpvFlM3wTR7ExSp+PTdeTsDrLNJUe7L7JYJe8mblHX5SCT6A==} - engines: {node: '>=10.0'} - dev: false - - /jsonwebtoken/9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.7.1 - dev: false - - /jszip/3.8.0: - resolution: {integrity: sha512-cnpQrXvFSLdsR9KR5/x7zdf6c3m8IhZfZzSblFEHSqBaVwD2nvJ4CuCKLyvKvwBgZm08CgfSoiTBQLm5WW9hGw==} - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - set-immediate-shim: 1.0.1 - dev: false - - /jwa/1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jwa/2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jws/3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - - /jws/4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - dev: false - - /keyv/3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: false - - /keyv/4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: false - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false - - /latest-version/5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} - dependencies: - package-json: 6.5.0 - dev: false - - /levn/0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: false - - /lie/3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - dependencies: - immediate: 3.0.6 - dev: false - - /lilconfig/2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} - engines: {node: '>=10'} - dev: false - - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /lint-staged/13.0.3: - resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.20 - commander: 9.5.0 - debug: 4.4.0 - execa: 6.1.0 - lilconfig: 2.0.5 - listr2: 4.0.5 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-inspect: 1.13.4 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.7.1 - transitivePeerDependencies: - - enquirer - - supports-color - dev: false - - /listr2/4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.4.1 - rxjs: 7.8.2 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: false - - /load-json-file/6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 - dev: false - - /load-yaml-file/0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: false - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: false - - /lodash.camelcase/4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - dev: false - - /lodash.get/4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. - dev: false - - /lodash.includes/4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false - - /lodash.isboolean/3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false - - /lodash.isequal/4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - dev: false - - /lodash.isinteger/4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false - - /lodash.isnumber/3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false - - /lodash.isplainobject/4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false - - /lodash.isstring/4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false - - /lodash.kebabcase/4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - dev: false - - /lodash.map/4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - dev: false - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: false - - /lodash.mergewith/4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - dev: false - - /lodash.once/4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false - - /lodash.snakecase/4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - dev: false - - /lodash.startcase/4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - dev: false - - /lodash.uniq/4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: false - - /lodash.upperfirst/4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - dev: false - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /log-symbols/4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: false - - /log-update/4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - dev: false - - /longest/2.0.1: - resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} - engines: {node: '>=0.10.0'} - dev: false - - /lowercase-keys/1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: false - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: false - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: false - - /magic-string/0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - dev: false - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /make-error/1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: false - - /map-age-cleaner/0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: false - - /map-obj/1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: false - - /map-obj/4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: false - - /math-intrinsics/1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - dev: false - - /mem/8.1.1: - resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} - engines: {node: '>=10'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 - dev: false - - /meow/8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: false - - /meow/9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: false - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - - /merge/2.1.1: - resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - dev: false - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: false - - /micromatch/4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: false - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false - - /mimic-fn/3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - dev: false - - /mimic-fn/4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: false - - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false - - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: false - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /minimatch/7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimist-options/4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: false - - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: false - - /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minipass/5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /multimatch/5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - dev: false - - /mute-stream/0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: false - - /mz/2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid/3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: false - - /node-emoji/1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - dependencies: - lodash: 4.17.21 - dev: false - - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /normalize-package-data/2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.10 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: false - - /normalize-package-data/3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.16.1 - semver: 7.7.1 - validate-npm-package-license: 3.0.4 - dev: false - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-url/4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: false - - /npm-bundled/1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-check/6.0.1: - resolution: {integrity: sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ==} - engines: {node: '>=10.9.0'} - hasBin: true - dependencies: - callsite-record: 4.1.5 - chalk: 4.1.2 - co: 4.6.0 - depcheck: 1.4.7 - execa: 5.1.1 - giturl: 1.0.3 - global-modules: 2.0.0 - globby: 11.1.0 - inquirer: 7.3.3 - is-ci: 2.0.0 - lodash: 4.17.21 - meow: 9.0.0 - minimatch: 3.1.2 - node-emoji: 1.11.0 - ora: 5.4.1 - package-json: 6.5.0 - path-exists: 4.0.0 - pkg-dir: 5.0.0 - preferred-pm: 3.1.4 - rc-config-loader: 4.1.3 - semver: 7.3.8 - semver-diff: 3.1.1 - strip-ansi: 6.0.1 - text-table: 0.2.0 - throat: 6.0.2 - update-notifier: 5.1.0 - xtend: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /npm-normalize-package-bin/1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: false - - /npm-package-arg/6.1.1: - resolution: {integrity: sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==} - dependencies: - hosted-git-info: 2.8.9 - osenv: 0.1.5 - semver: 5.7.2 - validate-npm-package-name: 3.0.0 - dev: false - - /npm-packlist/2.1.5: - resolution: {integrity: sha512-KCfK3Vi2F+PH1klYauoQzg81GQ8/GGjQRKYY6tRnpQUPKTs/1gBZSRWtTEd7jGdSn1LZL7gpAmJT+BcS55k2XQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - glob: 7.2.3 - ignore-walk: 3.0.4 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: false - - /npm-run-path/5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: false - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /object-inspect/1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - dev: false - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: false - - /onetime/6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: false - - /open/8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /optionator/0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - dev: false - - /ora/5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: false - - /os-homedir/1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: false - - /os-tmpdir/1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: false - - /osenv/0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - deprecated: This package is no longer supported. - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: false - - /p-cancelable/1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: false - - /p-defer/1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - dev: false - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: false - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: false - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: false - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: false - - /p-map/4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - - /p-reflect/2.1.0: - resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} - engines: {node: '>=8'} - dev: false - - /p-settle/4.1.1: - resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} - engines: {node: '>=10'} - dependencies: - p-limit: 2.3.0 - p-reflect: 2.1.0 - dev: false - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: false - - /package-json/6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} - dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.1 - dev: false - - /pako/1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - dev: false - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: false - - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: false - - /parse-passwd/1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: false - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: false - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-key/4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: false - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: false - - /picocolors/1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - dev: false - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /pidtree/0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - dev: false - - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: false - - /pinkie-promise/2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: false - - /pinkie/2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: false - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: false - - /pkg-dir/5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - dev: false - - /please-upgrade-node/3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - dependencies: - semver-compare: 1.0.0 - dev: false - - /postcss/8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - dev: false - - /preferred-pm/3.1.4: - resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.2.0 - dev: false - - /prelude-ls/1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: false - - /prepend-http/2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: false - - /prettier/2.7.1: - resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /process/0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false - - /psl/1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - dependencies: - punycode: 2.3.1 - dev: false - - /pump/3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - - /punycode/2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: false - - /pupa/2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} - dependencies: - escape-goat: 2.1.1 - dev: false - - /q/1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - deprecated: |- - You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. - - (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - dev: false - - /querystringify/2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: false - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - - /quick-lru/4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: false - - /ramda/0.27.2: - resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} - dev: false - - /rc-config-loader/4.1.3: - resolution: {integrity: sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==} - dependencies: - debug: 4.4.0 - js-yaml: 4.1.0 - json5: 2.2.3 - require-from-string: 2.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.6 - strip-json-comments: 2.0.1 - dev: false - - /read-package-json/2.1.2: - resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==} - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - dependencies: - glob: 7.2.3 - json-parse-even-better-errors: 2.3.1 - normalize-package-data: 2.5.0 - npm-normalize-package-bin: 1.0.1 - dev: false - - /read-package-tree/5.1.6: - resolution: {integrity: sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==} - deprecated: The functionality that this package provided is now in @npmcli/arborist - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - once: 1.4.0 - read-package-json: 2.1.2 - readdir-scoped-modules: 1.1.0 - dev: false - - /read-pkg-up/7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: false - - /read-pkg/5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: false - - /read-yaml-file/2.1.0: - resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} - engines: {node: '>=10.13'} - dependencies: - js-yaml: 4.1.0 - strip-bom: 4.0.0 - dev: false - - /readable-stream/2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream/3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - - /readdir-scoped-modules/1.1.0: - resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - graceful-fs: 4.2.11 - once: 1.4.0 - dev: false - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /redent/3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: false - - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: false - - /registry-auth-token/4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} - dependencies: - rc: 1.2.8 - dev: false - - /registry-url/5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} - dependencies: - rc: 1.2.8 - dev: false - - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false - - /require-package-name/2.0.1: - resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - dev: false - - /requires-port/1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: false - - /resolve-dir/1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - dev: false - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: false - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: false - - /resolve-global/1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: false - - /resolve/1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: false - - /responselike/1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: false - - /restore-cursor/3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: false - - /reusify/1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rfc4648/1.5.4: - resolution: {integrity: sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==} - dev: false - - /rfdc/1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - dev: false - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - - /run-async/2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: false - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: false - - /rxjs/6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: false - - /rxjs/7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - dependencies: - tslib: 2.8.1 - dev: false - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - - /sax/1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - dev: false - - /semver-compare/1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: false - - /semver-diff/3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /semver/5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: false - - /semver/6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: false - - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /semver/7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /semver/7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /set-immediate-shim/1.0.1: - resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} - engines: {node: '>=0.10.0'} - dev: false - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: false - - /slice-ansi/3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: false - - /slice-ansi/4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: false - - /slice-ansi/5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: false - - /sort-keys/4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} - dependencies: - is-plain-obj: 2.1.0 - dev: false - - /source-map-js/1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - dev: false - - /spdx-correct/3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 - dev: false - - /spdx-exceptions/2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - dev: false - - /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - dev: false - - /spdx-license-ids/3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - dev: false - - /split2/3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - dependencies: - readable-stream: 3.6.2 - dev: false - - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false - - /ssri/8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /stackframe/1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false - - /stoppable/1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - dev: false - - /strict-uri-encode/2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false - - /string-argv/0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - dev: false - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: false - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-ansi/7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.1.0 - dev: false - - /strip-bom/3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: false - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: false - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false - - /strip-final-newline/3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: false - - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: false - - /strip-json-comments/2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: false - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: false - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: false - - /tapable/2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: false - - /tar/6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /text-extensions/1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - dev: false - - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: false - - /thenify-all/1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify/3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /throat/6.0.2: - resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} - dev: false - - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false - - /through2/4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.2 - dev: false - - /tmp/0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: false - - /to-readable-stream/1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: false - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: false - - /tough-cookie/4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: false - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /trim-newlines/3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: false - - /true-case-path/2.2.1: - resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} - dev: false - - /ts-node/10.9.2_6v72ipms7rozpqco4327g2xjdm: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.5.1 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: false - - /ts-node/10.9.2_sih53j22iwo4i6pyctnx5zarnu: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.2 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.0.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: false - - /tslib/1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - - /tslib/2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - dev: false - - /tunnel/0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - dev: false - - /type-check/0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: false - - /type-fest/0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - dev: false - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: false - - /type-fest/0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: false - - /type-fest/0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: false - - /type-fest/0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: false - - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: false - - /typescript/5.0.2: - resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} - engines: {node: '>=12.20'} - hasBin: true - - /typescript/5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} - engines: {node: '>=14.17'} - hasBin: true - dev: false - - /undici-types/6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - /unique-string/2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - dependencies: - crypto-random-string: 2.0.0 - dev: false - - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify/0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify/2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: false - - /update-notifier/5.1.0: - resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} - engines: {node: '>=10'} - dependencies: - boxen: 5.1.2 - chalk: 4.1.2 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 - is-installed-globally: 0.4.0 - is-npm: 5.0.0 - is-yarn-global: 0.3.0 - latest-version: 5.1.0 - pupa: 2.1.1 - semver: 7.3.8 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 - dev: false - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - dev: false - - /url-parse-lax/3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: false - - /url-parse/1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: false - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - - /uuid/8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false - - /v8-compile-cache-lib/3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: false - - /v8-compile-cache/2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - dev: false - - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: false - - /validate-npm-package-name/3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: false - - /validator/13.15.0: - resolution: {integrity: sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==} - engines: {node: '>= 0.10'} - dev: false - - /wcwidth/1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: false - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-pm/2.2.0: - resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: false - - /which/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /widest-line/3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - dependencies: - string-width: 4.2.3 - dev: false - - /word-wrap/1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /wordwrap/1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: false - - /wrap-ansi/6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false - - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: false - - /write-yaml-file/4.2.0: - resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} - engines: {node: '>=10.13'} - dependencies: - js-yaml: 4.1.0 - write-file-atomic: 3.0.3 - dev: false - - /xdg-basedir/4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - dev: false - - /xml2js/0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - dev: false - - /xmlbuilder/11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: false - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false - - /yaml/2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} - engines: {node: '>= 14'} - hasBin: true - dev: false - - /yargs-parser/20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false - - /yargs-parser/21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: false - - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: false - - /yargs/17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: false - - /yn/3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: false - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: false - - /z-schema/5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.15.0 - optionalDependencies: - commander: 9.5.0 - dev: false diff --git a/common/autoinstallers/lint/prettier.ts b/common/autoinstallers/lint/prettier.ts deleted file mode 100644 index 4748c05f..00000000 --- a/common/autoinstallers/lint/prettier.ts +++ /dev/null @@ -1,44 +0,0 @@ -import minimist, { ParsedArgs } from "minimist"; -import { spawnSync } from "child_process"; -import { RushConfiguration } from "@microsoft/rush-lib"; - -interface PrettierScriptArgv extends ParsedArgs { - dir?: string; - ext?: string; -} - -function run() { - const cwd = process.cwd(); - const rushConfiguration = RushConfiguration.loadFromDefaultLocation({ startingFolder: cwd }); - - const argv: PrettierScriptArgv = minimist(process.argv.slice(2)); - const configFilePath = rushConfiguration.rushJsonFolder + "/.prettierrc.js"; - const ignoreFilePath = rushConfiguration.rushJsonFolder + "/.prettierignore"; - - let ext = "{ts,tsx,less}"; - if (argv.ext) { - const length = argv.ext.split(",").length; - ext = length === 1 ? `${argv.ext}` : `{${argv.ext}}`; - } - - let patterns = `{apps,libs}/**/src/**/**/*.${ext}`; - if (argv.dir) { - patterns = `${argv.dir}/src/**/**/*.${ext}`; - } - - console.log(patterns); - - spawnSync( - "sh", - [ - "-c", - `prettier --config ${configFilePath} --ignore-path ${ignoreFilePath} --write ${patterns}`, - ], - { - shell: false, - stdio: [0, 1, 2], - }, - ); -} - -run(); diff --git a/common/autoinstallers/lint/tsconfig.json b/common/autoinstallers/lint/tsconfig.json deleted file mode 100644 index 57b9dd91..00000000 --- a/common/autoinstallers/lint/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - "target": "ESNext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "module": "ESNext" /* 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. */, - "types": ["node"] /* Disable emitting comments. */, - "noEmit": true /* Disable emitting files from a compilation. */, - "noEmitOnError": true /* Disable emitting files if any type checking errors are reported. */, - - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, - "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": false /* Disable error reporting for unused labels. */, - "allowUnreachableCode": false /* 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. */ - }, - "ts-node": { - "transpileOnly": true, - "compilerOptions": { - "module": "commonjs" - } - } -} diff --git a/common/autoinstallers/run-script/package.json b/common/autoinstallers/run-script/package.json deleted file mode 100644 index 9596b9ca..00000000 --- a/common/autoinstallers/run-script/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "run-script", - "version": "0.0.1", - "private": true, - "dependencies": { - "@microsoft/rush-lib": "5.94.1", - "minimist": "1.2.6", - "ts-node": "^10.9.2" - }, - "devDependencies": { - "@types/node": "*", - "@types/minimist": "1.2.2", - "typescript": "5.0.2" - } -} diff --git a/common/autoinstallers/run-script/pnpm-lock.yaml b/common/autoinstallers/run-script/pnpm-lock.yaml deleted file mode 100644 index 116eed22..00000000 --- a/common/autoinstallers/run-script/pnpm-lock.yaml +++ /dev/null @@ -1,3717 +0,0 @@ -lockfileVersion: '6.0' - -dependencies: - '@microsoft/rush-lib': - specifier: 5.94.1 - version: 5.94.1(@types/node@0.0.0) - minimist: - specifier: 1.2.6 - version: 1.2.6 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@0.0.0)(typescript@5.0.2) - -devDependencies: - '@types/minimist': - specifier: 1.2.2 - version: 1.2.2 - '@types/node': - specifier: '*' - version: 0.0.0 - typescript: - specifier: 5.0.2 - version: 5.0.2 - -packages: - - /@azure/abort-controller@1.1.0: - resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} - engines: {node: '>=12.0.0'} - dependencies: - tslib: 2.5.0 - dev: false - - /@azure/core-auth@1.4.0: - resolution: {integrity: sha512-HFrcTgmuSuukRf/EdPmqBrc5l6Q5Uu+2TbuhaKbgaCpP2TfAeiNaQPAadxO+CYBRHGUzIDteMAjFspFLDLnKVQ==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - tslib: 2.5.0 - dev: false - - /@azure/core-client@1.7.2: - resolution: {integrity: sha512-ye5554gnVnXdfZ64hptUtETgacXoRWxYv1JF5MctoAzTSH5dXhDPZd9gOjDPyWMcLIk58pnP5+p5vGX6PYn1ag==} - engines: {node: '>=14.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.4.0 - '@azure/core-rest-pipeline': 1.10.3 - '@azure/core-tracing': 1.0.1 - '@azure/core-util': 1.3.1 - '@azure/logger': 1.0.4 - tslib: 2.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-http@2.3.2: - resolution: {integrity: sha512-Z4dfbglV9kNZO177CNx4bo5ekFuYwwsvjLiKdZI4r84bYGv3irrbQz7JC3/rUfFH2l4T/W6OFleJaa2X0IaQqw==} - engines: {node: '>=14.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.4.0 - '@azure/core-tracing': 1.0.0-preview.13 - '@azure/core-util': 1.3.1 - '@azure/logger': 1.0.4 - '@types/node-fetch': 2.6.2 - '@types/tunnel': 0.0.3 - form-data: 4.0.0 - node-fetch: 2.6.7 - process: 0.11.10 - tough-cookie: 4.1.2 - tslib: 2.5.0 - tunnel: 0.0.6 - uuid: 8.3.2 - xml2js: 0.5.0 - transitivePeerDependencies: - - encoding - dev: false - - /@azure/core-lro@2.5.2: - resolution: {integrity: sha512-tucUutPhBwCPu6v16KEFYML81npEL6gnT+iwewXvK5ZD55sr0/Vw2jfQETMiKVeARRrXHB2QQ3SpxxGi1zAUWg==} - engines: {node: '>=14.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-util': 1.3.1 - '@azure/logger': 1.0.4 - tslib: 2.5.0 - dev: false - - /@azure/core-paging@1.5.0: - resolution: {integrity: sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.0 - dev: false - - /@azure/core-rest-pipeline@1.10.3: - resolution: {integrity: sha512-AMQb0ttiGJ0MIV/r+4TVra6U4+90mPeOveehFnrqKlo7dknPJYdJ61wOzYJXJjDxF8LcCtSogfRelkq+fCGFTw==} - engines: {node: '>=14.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.4.0 - '@azure/core-tracing': 1.0.1 - '@azure/core-util': 1.3.1 - '@azure/logger': 1.0.4 - form-data: 4.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - tslib: 2.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-tracing@1.0.0-preview.13: - resolution: {integrity: sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==} - engines: {node: '>=12.0.0'} - dependencies: - '@opentelemetry/api': 1.4.1 - tslib: 2.5.0 - dev: false - - /@azure/core-tracing@1.0.1: - resolution: {integrity: sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==} - engines: {node: '>=12.0.0'} - dependencies: - tslib: 2.5.0 - dev: false - - /@azure/core-util@1.3.1: - resolution: {integrity: sha512-pjfOUAb+MPLODhGuXot/Hy8wUgPD0UTqYkY3BiYcwEETrLcUCVM1t0roIvlQMgvn1lc48TGy5bsonsFpF862Jw==} - engines: {node: '>=14.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - tslib: 2.5.0 - dev: false - - /@azure/identity@2.1.0: - resolution: {integrity: sha512-BPDz1sK7Ul9t0l9YKLEa8PHqWU4iCfhGJ+ELJl6c8CP3TpJt2urNCbm0ZHsthmxRsYoMPbz2Dvzj30zXZVmAFw==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.4.0 - '@azure/core-client': 1.7.2 - '@azure/core-rest-pipeline': 1.10.3 - '@azure/core-tracing': 1.0.1 - '@azure/core-util': 1.3.1 - '@azure/logger': 1.0.4 - '@azure/msal-browser': 2.36.0 - '@azure/msal-common': 7.6.0 - '@azure/msal-node': 1.17.1 - events: 3.3.0 - jws: 4.0.0 - open: 8.4.2 - stoppable: 1.1.0 - tslib: 2.5.0 - uuid: 8.3.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/logger@1.0.4: - resolution: {integrity: sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.5.0 - dev: false - - /@azure/msal-browser@2.36.0: - resolution: {integrity: sha512-OrVDZ9ftO7ExqZVHripAt+doKg6G14YbP2LoSygiWQoSqoO4CejoXLRLqANc/HGg18N0p/oaRETw4IHZvwsxZw==} - engines: {node: '>=0.8.0'} - dependencies: - '@azure/msal-common': 12.1.0 - dev: false - - /@azure/msal-common@12.1.0: - resolution: {integrity: sha512-9RUiv0evSHvYtvF7r9ksShw9FgCeT6Rf6JB/SOMbMzI0VySZDUBSE+0b9e7DgL2Ph8wSARIh3m8c5pCK9TRY3w==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-common@7.6.0: - resolution: {integrity: sha512-XqfbglUTVLdkHQ8F9UQJtKseRr3sSnr9ysboxtoswvaMVaEfvyLtMoHv9XdKUfOc0qKGzNgRFd9yRjIWVepl6Q==} - engines: {node: '>=0.8.0'} - dev: false - - /@azure/msal-node@1.17.1: - resolution: {integrity: sha512-1lC80yV+Y/gHqkYJ21Qy1Ej/cI/Kt1JcdY0xiM7/+mcEuBAkArR9B1YMY538PMZ5GfyVlYkCHYh/N0CBD5FJlQ==} - engines: {node: 10 || 12 || 14 || 16 || 18} - dependencies: - '@azure/msal-common': 12.1.0 - jsonwebtoken: 9.0.0 - uuid: 8.3.2 - dev: false - - /@azure/storage-blob@12.11.0: - resolution: {integrity: sha512-na+FisoARuaOWaHWpmdtk3FeuTWf2VWamdJ9/TJJzj5ZdXPLC3juoDgFs6XVuJIoK30yuBpyFBEDXVRK4pB7Tg==} - engines: {node: '>=12.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-http': 2.3.2 - '@azure/core-lro': 2.5.2 - '@azure/core-paging': 1.5.0 - '@azure/core-tracing': 1.0.0-preview.13 - '@azure/logger': 1.0.4 - events: 3.3.0 - tslib: 2.5.0 - transitivePeerDependencies: - - encoding - dev: false - - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: false - - /@babel/generator@7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: false - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 - dev: false - - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: false - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: false - - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: false - - /@babel/parser@7.16.4: - resolution: {integrity: sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.4 - dev: false - - /@babel/parser@7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.4 - dev: false - - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - dev: false - - /@babel/traverse@7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: false - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: false - - /@devexpress/error-stack-parser@2.0.6: - resolution: {integrity: sha512-fneVypElGUH6Be39mlRZeAu00pccTlf4oVuzf9xPJD1cdEqI8NyAiQua/EW7lZdrbMUbgyXcJmfKPefhYius3A==} - dependencies: - stackframe: 1.3.4 - dev: false - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: false - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - dev: false - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: false - - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: false - - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - - /@microsoft/rush-lib@5.94.1(@types/node@0.0.0): - resolution: {integrity: sha512-qXeqtYYe4ImyYyaAIR+ZdZEpNUeOZSaP+sbfksvDu9oa4kNH+5pCemII8NSfmQd9Dx7zPGPNiGf4zE4/Jcs6VA==} - engines: {node: '>=5.6.0'} - dependencies: - '@pnpm/link-bins': 5.3.25 - '@rushstack/heft-config-file': 0.11.9(@types/node@0.0.0) - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@rushstack/package-deps-hash': 4.0.10(@types/node@0.0.0) - '@rushstack/rig-package': 0.3.18 - '@rushstack/rush-amazon-s3-build-cache-plugin': 5.94.1(@types/node@0.0.0) - '@rushstack/rush-azure-storage-build-cache-plugin': 5.94.1(@types/node@0.0.0) - '@rushstack/stream-collator': 4.0.228(@types/node@0.0.0) - '@rushstack/terminal': 0.5.3(@types/node@0.0.0) - '@rushstack/ts-command-line': 4.13.2 - '@types/node-fetch': 2.6.2 - '@yarnpkg/lockfile': 1.0.2 - builtin-modules: 3.1.0 - cli-table: 0.3.11 - colors: 1.2.5 - dependency-path: 9.2.8 - figures: 3.0.0 - git-repo-info: 2.1.1 - glob: 7.0.6 - glob-escape: 0.0.2 - https-proxy-agent: 5.0.1 - ignore: 5.1.9 - inquirer: 7.3.3 - js-yaml: 3.13.1 - jszip: 3.8.0 - lodash: 4.17.21 - node-fetch: 2.6.7 - npm-check: 6.0.1 - npm-package-arg: 6.1.1 - npm-packlist: 2.1.5 - read-package-tree: 5.1.6 - resolve: 1.22.2 - rxjs: 6.6.7 - semver: 7.3.8 - ssri: 8.0.1 - strict-uri-encode: 2.0.0 - tapable: 2.2.1 - tar: 6.1.13 - true-case-path: 2.2.1 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: false - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: false - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: false - - /@opentelemetry/api@1.4.1: - resolution: {integrity: sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==} - engines: {node: '>=8.0.0'} - dev: false - - /@pnpm/crypto.base32-hash@1.0.1: - resolution: {integrity: sha512-pzAXNn6KxTA3kbcI3iEnYs4vtH51XEVqmK/1EiD18MaPKylhqy8UvMJK3zKG+jeP82cqQbozcTGm4yOQ8i3vNw==} - engines: {node: '>=14.6'} - dependencies: - rfc4648: 1.5.2 - dev: false - - /@pnpm/error@1.4.0: - resolution: {integrity: sha512-vxkRrkneBPVmP23kyjnYwVOtipwlSl6UfL+h+Xa3TrABJTz5rYBXemlTsU5BzST8U4pD7YDkTb3SQu+MMuIDKA==} - engines: {node: '>=10.16'} - dev: false - - /@pnpm/link-bins@5.3.25: - resolution: {integrity: sha512-9Xq8lLNRHFDqvYPXPgaiKkZ4rtdsm7izwM/cUsFDc5IMnG0QYIVBXQbgwhz2UvjUotbJrvfKLJaCfA3NGBnLDg==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/package-bins': 4.1.0 - '@pnpm/read-modules-dir': 2.0.3 - '@pnpm/read-package-json': 4.0.0 - '@pnpm/read-project-manifest': 1.1.7 - '@pnpm/types': 6.4.0 - '@zkochan/cmd-shim': 5.4.1 - is-subdir: 1.2.0 - is-windows: 1.0.2 - mz: 2.7.0 - normalize-path: 3.0.0 - p-settle: 4.1.1 - ramda: 0.27.2 - dev: false - - /@pnpm/package-bins@4.1.0: - resolution: {integrity: sha512-57/ioGYLBbVRR80Ux9/q2i3y8Q+uQADc3c+Yse8jr/60YLOi3jcWz13e2Jy+ANYtZI258Qc5wk2X077rp0Ly/Q==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/types': 6.4.0 - fast-glob: 3.2.12 - is-subdir: 1.2.0 - dev: false - - /@pnpm/read-modules-dir@2.0.3: - resolution: {integrity: sha512-i9OgRvSlxrTS9a2oXokhDxvQzDtfqtsooJ9jaGoHkznue5aFCTSrNZFQ6M18o8hC03QWfnxaKi0BtOvNkKu2+A==} - engines: {node: '>=10.13'} - dependencies: - mz: 2.7.0 - dev: false - - /@pnpm/read-package-json@4.0.0: - resolution: {integrity: sha512-1cr2tEwe4YU6SI0Hmg+wnsr6yxBt2iJtqv6wrF84On8pS9hx4A2PLw3CIgbwxaG0b+ur5wzhNogwl4qD5FLFNg==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/types': 6.4.0 - load-json-file: 6.2.0 - normalize-package-data: 3.0.3 - dev: false - - /@pnpm/read-project-manifest@1.1.7: - resolution: {integrity: sha512-tj8ExXZeDcMmMUj7D292ETe/RiEirr1X1wpT6Zy85z2MrFYoG9jfCJpps40OdZBNZBhxbuKtGPWKVSgXD0yrVw==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/error': 1.4.0 - '@pnpm/types': 6.4.0 - '@pnpm/write-project-manifest': 1.1.7 - detect-indent: 6.1.0 - fast-deep-equal: 3.1.3 - graceful-fs: 4.2.4 - is-windows: 1.0.2 - json5: 2.2.3 - parse-json: 5.2.0 - read-yaml-file: 2.1.0 - sort-keys: 4.2.0 - strip-bom: 4.0.0 - dev: false - - /@pnpm/types@6.4.0: - resolution: {integrity: sha512-nco4+4sZqNHn60Y4VE/fbtlShCBqipyUO+nKRPvDHqLrecMW9pzHWMVRxk4nrMRoeowj3q0rX3GYRBa8lsHTAg==} - engines: {node: '>=10.16'} - dev: false - - /@pnpm/types@8.9.0: - resolution: {integrity: sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==} - engines: {node: '>=14.6'} - dev: false - - /@pnpm/write-project-manifest@1.1.7: - resolution: {integrity: sha512-OLkDZSqkA1mkoPNPvLFXyI6fb0enCuFji6Zfditi/CLAo9kmIhQFmEUDu4krSB8i908EljG8YwL5Xjxzm5wsWA==} - engines: {node: '>=10.16'} - dependencies: - '@pnpm/types': 6.4.0 - json5: 2.2.3 - mz: 2.7.0 - write-file-atomic: 3.0.3 - write-yaml-file: 4.2.0 - dev: false - - /@rushstack/heft-config-file@0.11.9(@types/node@0.0.0): - resolution: {integrity: sha512-01JFmD+G44v5btO0fVIbVBJCfGWLTN2l4Y/+IVU8D9eR14+wYJjV5CO25uxydDynMr334URFcITuzG21L9L0GA==} - engines: {node: '>=10.13.0'} - dependencies: - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@rushstack/rig-package': 0.3.18 - jsonpath-plus: 4.0.0 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/node-core-library@3.55.2(@types/node@0.0.0): - resolution: {integrity: sha512-SaLe/x/Q/uBVdNFK5V1xXvsVps0y7h1sN7aSJllQyFbugyOaxhNRF25bwEDnicARNEjJw0pk0lYnJQ9Kr6ev0A==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@types/node': 0.0.0 - colors: 1.2.5 - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.2 - semver: 7.3.8 - z-schema: 5.0.5 - dev: false - - /@rushstack/package-deps-hash@4.0.10(@types/node@0.0.0): - resolution: {integrity: sha512-oW4M9olWay3qIpIULtpolh0MY1QprY2CqrrgUl7NpyMn1/r0laT8EUbkTylWRnytvXaNTDBlRz99+CdU1DKqgA==} - dependencies: - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/rig-package@0.3.18: - resolution: {integrity: sha512-SGEwNTwNq9bI3pkdd01yCaH+gAsHqs0uxfGvtw9b0LJXH52qooWXnrFTRRLG1aL9pf+M2CARdrA9HLHJys3jiQ==} - dependencies: - resolve: 1.22.2 - strip-json-comments: 3.1.1 - dev: false - - /@rushstack/rush-amazon-s3-build-cache-plugin@5.94.1(@types/node@0.0.0): - resolution: {integrity: sha512-NCZ5YscW9Qi9avvgspE76dfHtCcsSMpfm3X4D9gaTcGPyE7RpWY5yMTZhO31Z5g0NM6cw6eWEfKwJvZ5nGbnBQ==} - dependencies: - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@rushstack/rush-sdk': 5.94.1(@types/node@0.0.0) - https-proxy-agent: 5.0.1 - node-fetch: 2.6.7 - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@rushstack/rush-azure-storage-build-cache-plugin@5.94.1(@types/node@0.0.0): - resolution: {integrity: sha512-uIdyoeGHyFlAnmAHF0KKDsg5KBde9nRl15x8wTr/zwzwydMMIdbfxHAMc3C78YE05SUYeIIut4qh5KCoEn9/Hw==} - dependencies: - '@azure/identity': 2.1.0 - '@azure/storage-blob': 12.11.0 - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@rushstack/rush-sdk': 5.94.1(@types/node@0.0.0) - '@rushstack/terminal': 0.5.3(@types/node@0.0.0) - transitivePeerDependencies: - - '@types/node' - - encoding - - supports-color - dev: false - - /@rushstack/rush-sdk@5.94.1(@types/node@0.0.0): - resolution: {integrity: sha512-T5euwYB4GzBGGCWCdk0djjHqsI7boGWKjutyNb+AguB7WsnRjDujEHC7CdosYtbsJo5caIwEdi9sspiaS4vyjA==} - dependencies: - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@types/node-fetch': 2.6.2 - tapable: 2.2.1 - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/stream-collator@4.0.228(@types/node@0.0.0): - resolution: {integrity: sha512-x7KR0IVNOEZBegdw7u2LVugD0U9uMw3IR1gPwV9bNWEC01cObc+9wk21suUxkzDtMVdKcNYoiZ814WnUqOF7pQ==} - dependencies: - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@rushstack/terminal': 0.5.3(@types/node@0.0.0) - transitivePeerDependencies: - - '@types/node' - dev: false - - /@rushstack/terminal@0.5.3(@types/node@0.0.0): - resolution: {integrity: sha512-AFKlWyw6C3vWvRrkXIcchxUooNHSzZ0AS5mGbdon3tjnxhqnMitjdk0WZl2382i50Zz3WE6Fd3LFurVbrNrEyw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - dependencies: - '@rushstack/node-core-library': 3.55.2(@types/node@0.0.0) - '@types/node': 0.0.0 - wordwrap: 1.0.0 - dev: false - - /@rushstack/ts-command-line@4.13.2: - resolution: {integrity: sha512-bCU8qoL9HyWiciltfzg7GqdfODUeda/JpI0602kbN5YH22rzTxyqYvv7aRLENCM7XCQ1VRs7nMkEqgJUOU8Sag==} - dependencies: - '@types/argparse': 1.0.38 - argparse: 1.0.10 - colors: 1.2.5 - string-argv: 0.3.1 - dev: false - - /@sindresorhus/is@0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: false - - /@szmarczak/http-timer@1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} - dependencies: - defer-to-connect: 1.1.3 - dev: false - - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: false - - /@tsconfig/node10@1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: false - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: false - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: false - - /@tsconfig/node16@1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: false - - /@types/argparse@1.0.38: - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - dev: false - - /@types/keyv@3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 0.0.0 - dev: false - - /@types/lodash@4.14.194: - resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} - dev: false - - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: false - - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - - /@types/node-fetch@2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - dependencies: - '@types/node': 0.0.0 - form-data: 3.0.1 - dev: false - - /@types/node@0.0.0: - resolution: {integrity: sha512-WTVTibPZsmWNm4thlkPnc0QPbT4+Vw+48e4otLxwdBVZduwrZ2pDvAH9dnpOe/fQnNl84PO4XOq3dHAyjaornA==} - - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: false - - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: false - - /@types/responselike@1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 0.0.0 - dev: false - - /@types/tunnel@0.0.3: - resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} - dependencies: - '@types/node': 0.0.0 - dev: false - - /@vue/compiler-core@3.2.47: - resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} - dependencies: - '@babel/parser': 7.21.4 - '@vue/shared': 3.2.47 - estree-walker: 2.0.2 - source-map: 0.6.1 - dev: false - - /@vue/compiler-dom@3.2.47: - resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} - dependencies: - '@vue/compiler-core': 3.2.47 - '@vue/shared': 3.2.47 - dev: false - - /@vue/compiler-sfc@3.2.47: - resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} - dependencies: - '@babel/parser': 7.16.4 - '@vue/compiler-core': 3.2.47 - '@vue/compiler-dom': 3.2.47 - '@vue/compiler-ssr': 3.2.47 - '@vue/reactivity-transform': 3.2.47 - '@vue/shared': 3.2.47 - estree-walker: 2.0.2 - magic-string: 0.25.9 - postcss: 8.4.22 - source-map: 0.6.1 - dev: false - - /@vue/compiler-ssr@3.2.47: - resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} - dependencies: - '@vue/compiler-dom': 3.2.47 - '@vue/shared': 3.2.47 - dev: false - - /@vue/reactivity-transform@3.2.47: - resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} - dependencies: - '@babel/parser': 7.21.4 - '@vue/compiler-core': 3.2.47 - '@vue/shared': 3.2.47 - estree-walker: 2.0.2 - magic-string: 0.25.9 - dev: false - - /@vue/shared@3.2.47: - resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} - dev: false - - /@yarnpkg/lockfile@1.0.2: - resolution: {integrity: sha512-MqJ00WXw89ga0rK6GZkdmmgv3bAsxpJixyTthjcix73O44pBqotyU2BejBkLuIsaOBI6SEu77vAnSyLe5iIHkw==} - dev: false - - /@zkochan/cmd-shim@5.4.1: - resolution: {integrity: sha512-odWb1qUzt0dIOEUPyWBEpFDYQPRjEMr/dbHHAfgBkVkYR9aO7Zo+I7oYWrXIxl+cKlC7+49ftPm8uJxL1MA9kw==} - engines: {node: '>=10.13'} - dependencies: - cmd-extension: 1.0.2 - graceful-fs: 4.2.11 - is-windows: 1.0.2 - dev: false - - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: false - - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: false - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: false - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: false - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: false - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: false - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false - - /array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - dev: false - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: false - - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: false - - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: false - - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - - /better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: false - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: false - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /boxen@5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: false - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: false - - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: false - - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /builtin-modules@3.1.0: - resolution: {integrity: sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==} - engines: {node: '>=6'} - dev: false - - /builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: false - - /cacheable-request@6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 - dev: false - - /callsite-record@4.1.5: - resolution: {integrity: sha512-OqeheDucGKifjQRx524URgV4z4NaKjocGhygTptDea+DLROre4ZEecA4KXDq+P7qlGCohYVNOh3qr+y5XH5Ftg==} - dependencies: - '@devexpress/error-stack-parser': 2.0.6 - '@types/lodash': 4.14.194 - callsite: 1.0.0 - chalk: 2.4.2 - highlight-es: 1.0.3 - lodash: 4.17.21 - pinkie-promise: 2.0.1 - dev: false - - /callsite@1.0.0: - resolution: {integrity: sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==} - dev: false - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: false - - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: false - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false - - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: false - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: false - - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /cli-boxes@2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: false - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: false - - /cli-spinners@2.8.0: - resolution: {integrity: sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==} - engines: {node: '>=6'} - dev: false - - /cli-table@0.3.11: - resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} - engines: {node: '>= 0.2.0'} - dependencies: - colors: 1.0.3 - dev: false - - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: false - - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - - /clone-response@1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: false - - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: false - - /cmd-extension@1.0.2: - resolution: {integrity: sha512-iWDjmP8kvsMdBmLTHxFaqXikO8EdFRDfim7k6vUHglY/2xJ5jLrPsnQGijdfp4U+sr/BeecG0wKm02dSIAeQ1g==} - engines: {node: '>=10'} - dev: false - - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: false - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /colors@1.0.3: - resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} - engines: {node: '>=0.1.90'} - dev: false - - /colors@1.2.5: - resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} - engines: {node: '>=0.1.90'} - dev: false - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - requiresBuild: true - dev: false - optional: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /configstore@5.0.1: - resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} - engines: {node: '>=8'} - dependencies: - dot-prop: 5.3.0 - graceful-fs: 4.2.11 - make-dir: 3.1.0 - unique-string: 2.0.0 - write-file-atomic: 3.0.3 - xdg-basedir: 4.0.0 - dev: false - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: false - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: false - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: false - - /debuglog@1.0.1: - resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} - dev: false - - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: false - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /decompress-response@3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: false - - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: false - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: false - - /defer-to-connect@1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: false - - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - - /depcheck@1.4.3: - resolution: {integrity: sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@babel/parser': 7.16.4 - '@babel/traverse': 7.21.4 - '@vue/compiler-sfc': 3.2.47 - camelcase: 6.3.0 - cosmiconfig: 7.1.0 - debug: 4.3.4 - deps-regex: 0.1.4 - ignore: 5.1.9 - is-core-module: 2.12.0 - js-yaml: 3.14.1 - json5: 2.2.3 - lodash: 4.17.21 - minimatch: 3.1.2 - multimatch: 5.0.0 - please-upgrade-node: 3.2.0 - query-ast: 1.0.5 - readdirp: 3.6.0 - require-package-name: 2.0.1 - resolve: 1.22.2 - sass: 1.62.0 - scss-parser: 1.0.6 - semver: 7.3.8 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - dev: false - - /dependency-path@9.2.8: - resolution: {integrity: sha512-S0OhIK7sIyAsph8hVH/LMCTDL3jozKtlrPx3dMQrlE2nAlXTquTT+AcOufphDMTQqLkfn4acvfiem9I1IWZ4jQ==} - engines: {node: '>=14.6'} - dependencies: - '@pnpm/crypto.base32-hash': 1.0.1 - '@pnpm/types': 8.9.0 - encode-registry: 3.0.0 - semver: 7.3.8 - dev: false - - /deps-regex@0.1.4: - resolution: {integrity: sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA==} - dev: false - - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: false - - /dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 - dev: false - - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: false - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: false - - /dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: false - - /duplexer3@0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: false - - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /encode-registry@3.0.0: - resolution: {integrity: sha512-2fRYji8K6FwYuQ6EPBKR/J9mcqb7kIoNqt1vGvJr3NrvKfncRiNm00Oxo6gi/YJF8R5Sp2bNFSFdGKTG0rje1Q==} - engines: {node: '>=10'} - dependencies: - mem: 8.1.1 - dev: false - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: false - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: false - - /escape-goat@2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - dev: false - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: false - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false - - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: false - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: false - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: false - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: false - - /figures@3.0.0: - resolution: {integrity: sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: false - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: false - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: false - - /find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - dev: false - - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: false - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: false - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: false - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: false - - /git-repo-info@2.1.1: - resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} - engines: {node: '>= 4.0'} - dev: false - - /giturl@1.0.1: - resolution: {integrity: sha512-wQourBdI13n8tbjcZTDl6k+ZrCRMU6p9vfp9jknZq+zfWc8xXNztpZFM4XkPHVzHcMSUZxEMYYKZjIGkPlei6Q==} - engines: {node: '>= 0.10.0'} - dev: false - - /glob-escape@0.0.2: - resolution: {integrity: sha512-L/cXYz8x7qer1HAyUQ+mbjcUsJVdpRxpAf7CwqHoNBs9vTpABlGfNN4tzkDxt+u3Z7ZncVyKlCNPtzb0R/7WbA==} - engines: {node: '>= 0.10'} - dev: false - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob@7.0.6: - resolution: {integrity: sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} - dependencies: - ini: 2.0.0 - dev: false - - /global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - dependencies: - global-prefix: 3.0.0 - dev: false - - /global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: false - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: false - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - - /got@9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.0 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: false - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - - /graceful-fs@4.2.4: - resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} - dev: false - - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: false - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: false - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: false - - /has-yarn@2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - dev: false - - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: false - - /highlight-es@1.0.3: - resolution: {integrity: sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==} - dependencies: - chalk: 2.4.2 - is-es2016-keyword: 1.0.0 - js-tokens: 3.0.2 - dev: false - - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false - - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: false - - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - dev: false - - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /ignore-walk@3.0.4: - resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} - dependencies: - minimatch: 3.1.2 - dev: false - - /ignore@5.1.9: - resolution: {integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==} - engines: {node: '>= 4'} - dev: false - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: false - - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - - /immutable@4.3.0: - resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} - dev: false - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: false - - /import-lazy@2.1.0: - resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} - engines: {node: '>=4'} - dev: false - - /import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - dev: false - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: false - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: false - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - - /ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - dev: false - - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.0.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: false - - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: false - - /is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: false - - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} - dependencies: - has: 1.0.3 - dev: false - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false - - /is-es2016-keyword@1.0.0: - resolution: {integrity: sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==} - dev: false - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} - dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: false - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false - - /is-npm@5.0.0: - resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} - engines: {node: '>=10'} - dev: false - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: false - - /is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: false - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: false - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: false - - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: false - - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: false - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false - - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: false - - /is-yarn-global@0.3.0: - resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} - dev: false - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - - /jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - dev: false - - /js-tokens@3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: false - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false - - /js-yaml@3.13.1: - resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: false - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /json-buffer@3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: false - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: false - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonpath-plus@4.0.0: - resolution: {integrity: sha512-e0Jtg4KAzDJKKwzbLaUtinCn0RZseWBVRTRGihSpvFlM3wTR7ExSp+PTdeTsDrLNJUe7L7JYJe8mblHX5SCT6A==} - engines: {node: '>=10.0'} - dev: false - - /jsonwebtoken@9.0.0: - resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash: 4.17.21 - ms: 2.1.3 - semver: 7.3.8 - dev: false - - /jszip@3.8.0: - resolution: {integrity: sha512-cnpQrXvFSLdsR9KR5/x7zdf6c3m8IhZfZzSblFEHSqBaVwD2nvJ4CuCKLyvKvwBgZm08CgfSoiTBQLm5WW9hGw==} - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - set-immediate-shim: 1.0.1 - dev: false - - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - - /jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - dev: false - - /keyv@3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: false - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false - - /latest-version@5.1.0: - resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} - engines: {node: '>=8'} - dependencies: - package-json: 6.5.0 - dev: false - - /lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - dependencies: - immediate: 3.0.6 - dev: false - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /load-json-file@6.2.0: - resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 5.2.0 - strip-bom: 4.0.0 - type-fest: 0.6.0 - dev: false - - /load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: false - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: false - - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: false - - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: false - - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: false - - /lowercase-keys@1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: false - - /lowercase-keys@2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: false - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: false - - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: false - - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: false - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: false - - /map-age-cleaner@0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: false - - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: false - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: false - - /mem@8.1.1: - resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} - engines: {node: '>=10'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 - dev: false - - /meow@9.0.0: - resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize: 1.2.0 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: false - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: false - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: false - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false - - /mimic-fn@3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - dev: false - - /mimic-response@1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false - - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: false - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: false - - /minimist@1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - dev: false - - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: false - - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /multimatch@5.0.0: - resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} - engines: {node: '>=10'} - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - dev: false - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: false - - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - - /node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - dependencies: - lodash: 4.17.21 - dev: false - - /node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: false - - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.12.0 - semver: 7.3.8 - validate-npm-package-license: 3.0.4 - dev: false - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-url@4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: false - - /npm-bundled@1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-check@6.0.1: - resolution: {integrity: sha512-tlEhXU3689VLUHYEZTS/BC61vfeN2xSSZwoWDT6WLuenZTpDmGmNT5mtl15erTR0/A15ldK06/NEKg9jYJ9OTQ==} - engines: {node: '>=10.9.0'} - hasBin: true - dependencies: - callsite-record: 4.1.5 - chalk: 4.1.2 - co: 4.6.0 - depcheck: 1.4.3 - execa: 5.1.1 - giturl: 1.0.1 - global-modules: 2.0.0 - globby: 11.1.0 - inquirer: 7.3.3 - is-ci: 2.0.0 - lodash: 4.17.21 - meow: 9.0.0 - minimatch: 3.1.2 - node-emoji: 1.11.0 - ora: 5.4.1 - package-json: 6.5.0 - path-exists: 4.0.0 - pkg-dir: 5.0.0 - preferred-pm: 3.0.3 - rc-config-loader: 4.1.2 - semver: 7.3.8 - semver-diff: 3.1.1 - strip-ansi: 6.0.1 - text-table: 0.2.0 - throat: 6.0.2 - update-notifier: 5.1.0 - xtend: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /npm-normalize-package-bin@1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: false - - /npm-package-arg@6.1.1: - resolution: {integrity: sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==} - dependencies: - hosted-git-info: 2.8.9 - osenv: 0.1.5 - semver: 5.7.1 - validate-npm-package-name: 3.0.0 - dev: false - - /npm-packlist@2.1.5: - resolution: {integrity: sha512-KCfK3Vi2F+PH1klYauoQzg81GQ8/GGjQRKYY6tRnpQUPKTs/1gBZSRWtTEd7jGdSn1LZL7gpAmJT+BcS55k2XQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - glob: 7.2.3 - ignore-walk: 3.0.4 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: false - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: false - - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.8.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: false - - /os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: false - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: false - - /osenv@0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: false - - /p-cancelable@1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: false - - /p-defer@1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - dev: false - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: false - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: false - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: false - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: false - - /p-reflect@2.1.0: - resolution: {integrity: sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg==} - engines: {node: '>=8'} - dev: false - - /p-settle@4.1.1: - resolution: {integrity: sha512-6THGh13mt3gypcNMm0ADqVNCcYa3BK6DWsuJWFCuEKP1rpY+OKGp7gaZwVmLspmic01+fsg/fN57MfvDzZ/PuQ==} - engines: {node: '>=10'} - dependencies: - p-limit: 2.3.0 - p-reflect: 2.1.0 - dev: false - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: false - - /package-json@6.5.0: - resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} - engines: {node: '>=8'} - dependencies: - got: 9.6.0 - registry-auth-token: 4.2.2 - registry-url: 5.1.0 - semver: 6.3.0 - dev: false - - /pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - dev: false - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: false - - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.21.4 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: false - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: false - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: false - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: false - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: false - - /pinkie-promise@2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: false - - /pinkie@2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: false - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: false - - /pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - dev: false - - /please-upgrade-node@3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - dependencies: - semver-compare: 1.0.0 - dev: false - - /postcss@8.4.22: - resolution: {integrity: sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: false - - /preferred-pm@3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - dev: false - - /prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: false - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false - - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: false - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: false - - /pupa@2.1.1: - resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} - engines: {node: '>=8'} - dependencies: - escape-goat: 2.1.1 - dev: false - - /query-ast@1.0.5: - resolution: {integrity: sha512-JK+1ma4YDuLjvKKcz9JZ70G+CM9qEOs/l1cZzstMMfwKUabTJ9sud5jvDGrUNuv03yKUgs82bLkHXJkDyhRmBw==} - dependencies: - invariant: 2.2.4 - lodash: 4.17.21 - dev: false - - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: false - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: false - - /ramda@0.27.2: - resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} - dev: false - - /rc-config-loader@4.1.2: - resolution: {integrity: sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==} - dependencies: - debug: 4.3.4 - js-yaml: 4.1.0 - json5: 2.2.3 - require-from-string: 2.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.6 - strip-json-comments: 2.0.1 - dev: false - - /read-package-json@2.1.2: - resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==} - dependencies: - glob: 7.2.3 - json-parse-even-better-errors: 2.3.1 - normalize-package-data: 2.5.0 - npm-normalize-package-bin: 1.0.1 - dev: false - - /read-package-tree@5.1.6: - resolution: {integrity: sha512-FCX1aT3GWyY658wzDICef4p+n0dB+ENRct8E/Qyvppj6xVpOYerBHfUu7OP5Rt1/393Tdglguf5ju5DEX4wZNg==} - deprecated: The functionality that this package provided is now in @npmcli/arborist - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - once: 1.4.0 - read-package-json: 2.1.2 - readdir-scoped-modules: 1.1.0 - dev: false - - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: false - - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: false - - /read-yaml-file@2.1.0: - resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} - engines: {node: '>=10.13'} - dependencies: - js-yaml: 4.1.0 - strip-bom: 4.0.0 - dev: false - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - - /readdir-scoped-modules@1.1.0: - resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - graceful-fs: 4.2.11 - once: 1.4.0 - dev: false - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: false - - /registry-auth-token@4.2.2: - resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} - engines: {node: '>=6.0.0'} - dependencies: - rc: 1.2.8 - dev: false - - /registry-url@5.1.0: - resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} - engines: {node: '>=8'} - dependencies: - rc: 1.2.8 - dev: false - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false - - /require-package-name@2.0.1: - resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} - dev: false - - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: false - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: false - - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.12.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: false - - /responselike@1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: false - - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: false - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rfc4648@1.5.2: - resolution: {integrity: sha512-tLOizhR6YGovrEBLatX1sdcuhoSCXddw3mqNVAcKxGJ+J0hFeJ+SjeWCv5UPA/WU3YzWPPuCVYgXBKZUPGpKtg==} - dev: false - - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: false - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: false - - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: false - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - - /sass@1.62.0: - resolution: {integrity: sha512-Q4USplo4pLYgCi+XlipZCWUQz5pkg/ruSSgJ0WRDSb/+3z9tXUOkQ7QPYn4XrhZKYAK4HlpaQecRwKLJX6+DBg==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 3.5.3 - immutable: 4.3.0 - source-map-js: 1.0.2 - dev: false - - /sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - dev: false - - /scss-parser@1.0.6: - resolution: {integrity: sha512-SH3TaoaJFzfAtqs3eG1j5IuHJkeEW5rKUPIjIN+ZorLAyJLHItQGnsgwHk76v25GtLtpT9IqfAcqK4vFWdiw+w==} - engines: {node: '>=6.0.0'} - dependencies: - invariant: 2.2.4 - lodash: 4.17.21 - dev: false - - /semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: false - - /semver-diff@3.1.1: - resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: false - - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: false - - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: false - - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /set-immediate-shim@1.0.1: - resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} - engines: {node: '>=0.10.0'} - dev: false - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: false - - /sort-keys@4.2.0: - resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} - engines: {node: '>=8'} - dependencies: - is-plain-obj: 2.1.0 - dev: false - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: false - - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: false - - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - dev: false - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: false - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - dev: false - - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: false - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false - - /ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false - - /stoppable@1.1.0: - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} - engines: {node: '>=4', npm: '>=6'} - dev: false - - /strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false - - /string-argv@0.3.1: - resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} - engines: {node: '>=0.6.19'} - dev: false - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: false - - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: false - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false - - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: false - - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: false - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: false - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: false - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: false - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: false - - /tar@6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 4.2.8 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: false - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /throat@6.0.2: - resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} - dev: false - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: false - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: false - - /to-readable-stream@1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: false - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: false - - /tough-cookie@4.1.2: - resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} - engines: {node: '>=6'} - dependencies: - psl: 1.9.0 - punycode: 2.3.0 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: false - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: false - - /true-case-path@2.2.1: - resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} - dev: false - - /ts-node@10.9.2(@types/node@0.0.0)(typescript@5.0.2): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 0.0.0 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.0.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: false - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: false - - /tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - dev: false - - /type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - dev: false - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: false - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: false - - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: false - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: false - - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: false - - /typescript@5.0.2: - resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} - engines: {node: '>=12.20'} - hasBin: true - - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - dependencies: - crypto-random-string: 2.0.0 - dev: false - - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: false - - /update-notifier@5.1.0: - resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} - engines: {node: '>=10'} - dependencies: - boxen: 5.1.2 - chalk: 4.1.2 - configstore: 5.0.1 - has-yarn: 2.1.0 - import-lazy: 2.1.0 - is-ci: 2.0.0 - is-installed-globally: 0.4.0 - is-npm: 5.0.0 - is-yarn-global: 0.3.0 - latest-version: 5.1.0 - pupa: 2.1.1 - semver: 7.3.8 - semver-diff: 3.1.1 - xdg-basedir: 4.0.0 - dev: false - - /url-parse-lax@3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: false - - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: false - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false - - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: false - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: false - - /validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: false - - /validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} - engines: {node: '>= 0.10'} - dev: false - - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: false - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: false - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - dependencies: - string-width: 4.2.3 - dev: false - - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: false - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false - - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: false - - /write-yaml-file@4.2.0: - resolution: {integrity: sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==} - engines: {node: '>=10.13'} - dependencies: - js-yaml: 4.1.0 - write-file-atomic: 3.0.3 - dev: false - - /xdg-basedir@4.0.0: - resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} - engines: {node: '>=8'} - dev: false - - /xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.2.4 - xmlbuilder: 11.0.1 - dev: false - - /xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: false - - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: false - - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false - - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false - - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: false - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: false - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: false - - /z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.9.0 - optionalDependencies: - commander: 9.5.0 - dev: false diff --git a/common/autoinstallers/run-script/run.ts b/common/autoinstallers/run-script/run.ts deleted file mode 100644 index 7f311c15..00000000 --- a/common/autoinstallers/run-script/run.ts +++ /dev/null @@ -1,30 +0,0 @@ -import minimist, { ParsedArgs } from "minimist"; -import { RushConfiguration } from "@microsoft/rush-lib"; -import { spawnSync } from "child_process"; - -interface RunScriptArgv extends ParsedArgs { - project?: string; - script?: string; -} - -function run() { - const argv: RunScriptArgv = minimist(process.argv.slice(2)); - const projects = RushConfiguration.loadFromDefaultLocation({ - startingFolder: process.cwd(), - }); - - const targetProject = projects.findProjectByShorthandName(argv.project!); - - if (targetProject) { - const result = spawnSync("sh", ["-c", `rushx ${argv.script}`], { - cwd: targetProject?.projectFolder, - shell: false, - stdio: [0, 1, 2], - }); - if (result.status !== 0) { - process.exit(result.status); - } - } -} - -run(); diff --git a/common/autoinstallers/run-script/tsconfig.json b/common/autoinstallers/run-script/tsconfig.json deleted file mode 100644 index 57b9dd91..00000000 --- a/common/autoinstallers/run-script/tsconfig.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - "target": "ESNext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "module": "ESNext" /* 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. */, - "types": ["node"] /* Disable emitting comments. */, - "noEmit": true /* Disable emitting files from a compilation. */, - "noEmitOnError": true /* Disable emitting files if any type checking errors are reported. */, - - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, - "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": false /* Disable error reporting for unused labels. */, - "allowUnreachableCode": false /* 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. */ - }, - "ts-node": { - "transpileOnly": true, - "compilerOptions": { - "module": "commonjs" - } - } -} diff --git a/common/config/rush/.npmrc b/common/config/rush/.npmrc deleted file mode 100644 index 8643dba0..00000000 --- a/common/config/rush/.npmrc +++ /dev/null @@ -1,23 +0,0 @@ -# Rush uses this file to configure the NPM package registry during installation. It is applicable -# to PNPM, NPM, and Yarn package managers. It is used by operations such as "rush install", -# "rush update", and the "install-run.js" scripts. -# -# NOTE: The "rush publish" command uses .npmrc-publish instead. -# -# Before invoking the package manager, Rush will copy this file to the folder where installation -# is performed. The copied file will omit any config lines that reference environment variables -# that are undefined in that session; this avoids problems that would otherwise result due to -# a missing variable being replaced by an empty string. -# -# * * * SECURITY WARNING * * * -# -# It is NOT recommended to store authentication tokens in a text file on a lab machine, because -# other unrelated processes may be able to read the file. Also, the file may persist indefinitely, -# for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# -registry=https://registry.npmjs.org/ -always-auth=false - diff --git a/common/config/rush/.npmrc-publish b/common/config/rush/.npmrc-publish deleted file mode 100644 index bae448b6..00000000 --- a/common/config/rush/.npmrc-publish +++ /dev/null @@ -1,20 +0,0 @@ -# This config file is very similar to common/config/rush/.npmrc, except that .npmrc-publish -# is used by the "rush publish" command, as publishing often involves different credentials -# and registries than other operations. -# -# Before invoking the package manager, Rush will copy this file to "common/temp/publish-home/.npmrc" -# and then temporarily map that folder as the "home directory" for the current user account. -# This enables the same settings to apply for each project folder that gets published. The copied file -# will omit any config lines that reference environment variables that are undefined in that session; -# this avoids problems that would otherwise result due to a missing variable being replaced by -# an empty string. -# -# * * * SECURITY WARNING * * * -# -# It is NOT recommended to store authentication tokens in a text file on a lab machine, because -# other unrelated processes may be able to read the file. Also, the file may persist indefinitely, -# for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# diff --git a/common/config/rush/.pnpmfile.cjs b/common/config/rush/.pnpmfile.cjs deleted file mode 100644 index b13d6ca7..00000000 --- a/common/config/rush/.pnpmfile.cjs +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -/** - * When using the PNPM package manager, you can use pnpmfile.js to workaround - * dependencies that have mistakes in their package.json file. (This feature is - * functionally similar to Yarn's "resolutions".) - * - * For details, see the PNPM documentation: - * https://pnpm.js.org/docs/en/hooks.html - * - * IMPORTANT: SINCE THIS FILE CONTAINS EXECUTABLE CODE, MODIFYING IT IS LIKELY TO INVALIDATE - * ANY CACHED DEPENDENCY ANALYSIS. After any modification to pnpmfile.js, it's recommended to run - * "rush update --full" so that PNPM will recalculate all version selections. - */ -module.exports = { - hooks: { - readPackage - } -}; - -/** - * This hook is invoked during installation before a package's dependencies - * are selected. - * The `packageJson` parameter is the deserialized package.json - * contents for the package that is about to be installed. - * The `context` parameter provides a log() function. - * The return value is the updated object. - */ -function readPackage(packageJson, context) { - - // // The karma types have a missing dependency on typings from the log4js package. - // if (packageJson.name === '@types/karma') { - // context.log('Fixed up dependencies for @types/karma'); - // packageJson.dependencies['log4js'] = '0.6.38'; - // } - - return packageJson; -} diff --git a/common/config/rush/artifactory.json b/common/config/rush/artifactory.json deleted file mode 100644 index 26806547..00000000 --- a/common/config/rush/artifactory.json +++ /dev/null @@ -1,109 +0,0 @@ -/** - * This configuration file manages Rush integration with JFrog Artifactory services. - * More documentation is available on the Rush website: https://rushjs.io - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/artifactory.schema.json", - - "packageRegistry": { - /** - * (Required) Set this to "true" to enable Rush to manage tokens for an Artifactory NPM registry. - * When enabled, "rush install" will automatically detect when the user's ~/.npmrc - * authentication token is missing or expired. And "rush setup" will prompt the user to - * renew their token. - * - * The default value is false. - */ - "enabled": false, - - /** - * (Required) Specify the URL of your NPM registry. This is the same URL that appears in - * your .npmrc file. It should look something like this example: - * - * https://your-company.jfrog.io/your-project/api/npm/npm-private/ - */ - "registryUrl": "", - - /** - * A list of custom strings that "rush setup" should add to the user's ~/.npmrc file at the time - * when the token is updated. This could be used for example to configure the company registry - * to be used whenever NPM is invoked as a standalone command (but it's not needed for Rush - * operations like "rush add" and "rush install", which get their mappings from the monorepo's - * common/config/rush/.npmrc file). - * - * NOTE: The ~/.npmrc settings are global for the user account on a given machine, so be careful - * about adding settings that may interfere with other work outside the monorepo. - */ - "userNpmrcLinesToAdd": [ - // "@example:registry=https://your-company.jfrog.io/your-project/api/npm/npm-private/" - ], - - /** - * (Required) Specifies the URL of the Artifactory control panel where the user can generate - * an API key. This URL is printed after the "visitWebsite" message. - * It should look something like this example: https://your-company.jfrog.io/ - * Specify an empty string to suppress this line entirely. - */ - "artifactoryWebsiteUrl": "", - - /** - * Uncomment this line to specify the type of credential to save in the user's ~/.npmrc file. - * The default is "password", which means the user's API token will be traded in for an - * npm password specific to that registry. Optionally you can specify "authToken", which - * will save the user's API token as credentials instead. - */ - // "credentialType": "password", - - /** - * These settings allow the "rush setup" interactive prompts to be customized, for - * example with messages specific to your team or configuration. Specify an empty string - * to suppress that message entirely. - */ - "messageOverrides": { - /** - * Overrides the message that normally says: - * "This monorepo consumes packages from an Artifactory private NPM registry." - */ - // "introduction": "", - - /** - * Overrides the message that normally says: - * "Please contact the repository maintainers for help with setting up an Artifactory user account." - */ - // "obtainAnAccount": "", - - /** - * Overrides the message that normally says: - * "Please open this URL in your web browser:" - * - * The "artifactoryWebsiteUrl" string is printed after this message. - */ - // "visitWebsite": "", - - /** - * Overrides the message that normally says: - * "Your user name appears in the upper-right corner of the JFrog website." - */ - // "locateUserName": "", - - /** - * Overrides the message that normally says: - * "Click 'Edit Profile' on the JFrog website. Click the 'Generate API Key' - * button if you haven't already done so previously." - */ - // "locateApiKey": "" - - /** - * Overrides the message that normally prompts: - * "What is your Artifactory user name?" - */ - // "userNamePrompt": "" - - /** - * Overrides the message that normally prompts: - * "What is your Artifactory API key?" - */ - // "apiKeyPrompt": "" - } - } -} diff --git a/common/config/rush/build-cache.json b/common/config/rush/build-cache.json deleted file mode 100644 index 45571cbd..00000000 --- a/common/config/rush/build-cache.json +++ /dev/null @@ -1,100 +0,0 @@ -/** - * This configuration file manages Rush's build cache feature. - * More documentation is available on the Rush website: https://rushjs.io - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/build-cache.schema.json", - - /** - * (Required) EXPERIMENTAL - Set this to true to enable the build cache feature. - * - * See https://rushjs.io/pages/maintainer/build_cache/ for details about this experimental feature. - */ - "buildCacheEnabled": false, - - /** - * (Required) Choose where project build outputs will be cached. - * - * Possible values: "local-only", "azure-blob-storage", "amazon-s3" - */ - "cacheProvider": "local-only", - - /** - * Setting this property overrides the cache entry ID. If this property is set, it must contain - * a [hash] token. - * - * Other available tokens: - * - [projectName] - * - [projectName:normalize] - * - [phaseName] - * - [phaseName:normalize] - * - [phaseName:trimPrefix] - */ - // "cacheEntryNamePattern": "[projectName:normalize]-[phaseName:normalize]-[hash]" - - /** - * Use this configuration with "cacheProvider"="azure-blob-storage" - */ - "azureBlobStorageConfiguration": { - /** - * (Required) The name of the the Azure storage account to use for build cache. - */ - // "storageAccountName": "example", - - /** - * (Required) The name of the container in the Azure storage account to use for build cache. - */ - // "storageContainerName": "my-container", - - /** - * The Azure environment the storage account exists in. Defaults to AzurePublicCloud. - * - * Possible values: "AzurePublicCloud", "AzureChina", "AzureGermany", "AzureGovernment" - */ - // "azureEnvironment": "AzurePublicCloud", - - /** - * An optional prefix for cache item blob names. - */ - // "blobPrefix": "my-prefix", - - /** - * If set to true, allow writing to the cache. Defaults to false. - */ - // "isCacheWriteAllowed": true - }, - - /** - * Use this configuration with "cacheProvider"="amazon-s3" - */ - "amazonS3Configuration": { - /** - * (Required unless s3Endpoint is specified) The name of the bucket to use for build cache. - * Example: "my-bucket" - */ - // "s3Bucket": "my-bucket", - - /** - * (Required unless s3Bucket is specified) The Amazon S3 endpoint of the bucket to use for build cache. - * This should not include any path; use the s3Prefix to set the path. - * Examples: "my-bucket.s3.us-east-2.amazonaws.com" or "http://localhost:9000" - */ - // "s3Endpoint": "https://my-bucket.s3.us-east-2.amazonaws.com", - - /** - * (Required) The Amazon S3 region of the bucket to use for build cache. - * Example: "us-east-1" - */ - // "s3Region": "us-east-1", - - /** - * An optional prefix ("folder") for cache items. It should not start with "/". - */ - // "s3Prefix": "my-prefix", - - /** - * If set to true, allow writing to the cache. Defaults to false. - */ - // "isCacheWriteAllowed": true - } -} diff --git a/common/config/rush/command-line.json b/common/config/rush/command-line.json deleted file mode 100644 index 88e6e667..00000000 --- a/common/config/rush/command-line.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/command-line.schema.json", - "commands": [ - { - "name": "rebuild", - "summary": "", - "enableParallelism": false, - "commandKind": "bulk", - "ignoreMissingScript": true, - "allowWarningsInSuccessfulBuild": true - }, - { - "name": "build", - "summary": "", - "enableParallelism": false, - "commandKind": "bulk", - "ignoreMissingScript": true, - "allowWarningsInSuccessfulBuild": true - }, - { - "name": "compile", - "summary": "", - "enableParallelism": false, - "commandKind": "bulk", - "ignoreMissingScript": true, - "allowWarningsInSuccessfulBuild": true - }, - { - "name": "eslint", - "summary": "", - "enableParallelism": false, - "commandKind": "bulk", - "ignoreMissingScript": true, - "ignoreDependencyOrder": true, - "allowWarningsInSuccessfulBuild": true - }, - { - "name": "test", - "summary": "", - "enableParallelism": false, - "commandKind": "bulk", - "ignoreMissingScript": true, - "ignoreDependencyOrder": true, - "allowWarningsInSuccessfulBuild": true - }, - { - "name": "run", - "summary": "", - "commandKind": "global", - "autoinstallerName": "run-script", - "safeForSimultaneousRushProcesses": true, - "shellCommand": "ts-node common/autoinstallers/run-script/run.ts" - }, - { - "name": "commitlint", - "commandKind": "global", - "summary": "Used by the commit-msg Git hook. This command invokes commitlint to lint commit message.", - "autoinstallerName": "lint", - "safeForSimultaneousRushProcesses": true, - "shellCommand": "node common/autoinstallers/lint/commit-lint.js" - }, - { - "name": "lint-staged", - "commandKind": "global", - "summary": "Used by the pre-commit Git hook. This command invokes eslint to lint staged changes.", - "autoinstallerName": "lint", - "safeForSimultaneousRushProcesses": true, - "shellCommand": "lint-staged" - }, - { - "name": "prettier", - "commandKind": "global", - "summary": "Used by the pre-commit Git hook. This command invokes Prettier to reformat staged changes.", - "safeForSimultaneousRushProcesses": true, - "autoinstallerName": "lint", - "shellCommand": "ts-node common/autoinstallers/lint/prettier.ts" - }, - { - "name": "create", - "commandKind": "global", - "summary": "Create a project in 'packages' dir", - "autoinstallerName": "create", - "safeForSimultaneousRushProcesses": true, - "shellCommand": "ts-node common/autoinstallers/create/src/cli.ts" - }, - { - "commandKind": "global", - "name": "start", - "summary": "Start the development server", - "description": "Run this command to start VMind development server", - "shellCommand": "rush run -p @visactor/vmind -s start" - }, - { - "commandKind": "global", - "name": "vmind", - "summary": "Start the development server", - "description": "Run this command to start VMind development server", - "shellCommand": "rush run -p @visactor/vmind -s start" - }, - { - "name": "change-all", - "commandKind": "global", - "autoinstallerName": "run-script", - "summary": "Run rush change width lint", - "description": "Run rush change width lint", - "safeForSimultaneousRushProcesses": true, - "shellCommand": "ts-node common/autoinstallers/lint/change-all.ts" - }, - { - "commandKind": "global", - "name": "docs", - "summary": "Start the document development server", - "description": "Run this command to start document development server", - "shellCommand": "rush run -p @internal/docs -s start" - } - ], - "parameters": [ - { - "parameterKind": "string", - "longName": "--dir", - "description": "Specify which dir will handle", - "associatedCommands": [ - "prettier" - ], - "argumentName": "DIR", - "required": false - }, - { - "parameterKind": "string", - "longName": "--ext", - "description": "Specify which file type will handle, example `rush prettier --ext 'tsx,scss'`", - "associatedCommands": [ - "prettier" - ], - "argumentName": "EXT", - "required": false - }, - { - "parameterKind": "string", - "longName": "--project", - "shortName": "-p", - "description": "Specify the name of the main Rush project to be run", - "associatedCommands": [ - "run" - ], - "argumentName": "PROJECT_NAME", - "required": true - }, - { - "parameterKind": "string", - "longName": "--script", - "shortName": "-s", - "description": "Specify script name in project", - "associatedCommands": [ - "run" - ], - "argumentName": "SCRIPT_NAME", - "required": true - }, - { - "parameterKind": "string", - "longName": "--message", - "shortName": "-m", - "description": "Write a message for change", - "associatedCommands": [ - "change-all" - ], - "argumentName": "MESSAGE", - "required": false - }, - { - "parameterKind": "flag", - "longName": "--not-commit", - "shortName": "-n", - "description": "not commit after run rush change", - "associatedCommands": [ - "change-all" - ], - "required": false - }, - { - "parameterKind": "choice", - "longName": "--type", - "shortName": "-t", - "description": "The bump type of change: major, minor, patch, none", - "associatedCommands": [ - "change-all" - ], - "alternatives": [ - { - "name": "patch", - "description": "A patch change" - }, - { - "name": "minor", - "description": "A minor change" - }, - { - "name": "major", - "description": "A major change" - } - ] - } - ] -} diff --git a/common/config/rush/common-versions.json b/common/config/rush/common-versions.json deleted file mode 100644 index 548de126..00000000 --- a/common/config/rush/common-versions.json +++ /dev/null @@ -1,62 +0,0 @@ -/** - * This configuration file specifies NPM dependency version selections that affect all projects - * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", - - /** - * A table that specifies a "preferred version" for a given NPM package. This feature is typically used - * to hold back an indirect dependency to a specific older version, or to reduce duplication of indirect dependencies. - * - * The "preferredVersions" value can be any SemVer range specifier (e.g. "~1.2.3"). Rush injects these values into - * the "dependencies" field of the top-level common/temp/package.json, which influences how the package manager - * will calculate versions. The specific effect depends on your package manager. Generally it will have no - * effect on an incompatible or already constrained SemVer range. If you are using PNPM, similar effects can be - * achieved using the pnpmfile.js hook. See the Rush documentation for more details. - * - * After modifying this field, it's recommended to run "rush update --full" so that the package manager - * will recalculate all version selections. - */ - "preferredVersions": { - /** - * When someone asks for "^1.0.0" make sure they get "1.2.3" when working in this repo, - * instead of the latest version. - */ - // "some-library": "1.2.3" - }, - - /** - * When set to true, for all projects in the repo, all dependencies will be automatically added as preferredVersions, - * except in cases where different projects specify different version ranges for a given dependency. For older - * package managers, this tended to reduce duplication of indirect dependencies. However, it can sometimes cause - * trouble for indirect dependencies with incompatible peerDependencies ranges. - * - * The default value is true. If you're encountering installation errors related to peer dependencies, - * it's recommended to set this to false. - * - * After modifying this field, it's recommended to run "rush update --full" so that the package manager - * will recalculate all version selections. - */ - // "implicitlyPreferredVersions": false, - - /** - * The "rush check" command can be used to enforce that every project in the repo must specify - * the same SemVer range for a given dependency. However, sometimes exceptions are needed. - * The allowedAlternativeVersions table allows you to list other SemVer ranges that will be - * accepted by "rush check" for a given dependency. - * - * IMPORTANT: THIS TABLE IS FOR *ADDITIONAL* VERSION RANGES THAT ARE ALTERNATIVES TO THE - * USUAL VERSION (WHICH IS INFERRED BY LOOKING AT ALL PROJECTS IN THE REPO). - * This design avoids unnecessary churn in this file. - */ - "allowedAlternativeVersions": { - /** - * For example, allow some projects to use an older TypeScript compiler - * (in addition to whatever "usual" version is being used by other projects in the repo): - */ - // "typescript": [ - // "4.0.2" - // ] - } -} diff --git a/common/config/rush/experiments.json b/common/config/rush/experiments.json deleted file mode 100644 index 498d8125..00000000 --- a/common/config/rush/experiments.json +++ /dev/null @@ -1,50 +0,0 @@ -/** - * This configuration file allows repo maintainers to enable and disable experimental - * Rush features. More documentation is available on the Rush website: https://rushjs.io - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/experiments.schema.json", - - /** - * By default, 'rush install' passes --no-prefer-frozen-lockfile to 'pnpm install'. - * Set this option to true to pass '--frozen-lockfile' instead for faster installs. - */ - // "usePnpmFrozenLockfileForRushInstall": true, - - /** - * By default, 'rush update' passes --no-prefer-frozen-lockfile to 'pnpm install'. - * Set this option to true to pass '--prefer-frozen-lockfile' instead to minimize shrinkwrap changes. - */ - // "usePnpmPreferFrozenLockfileForRushUpdate": true, - - /** - * If using the 'preventManualShrinkwrapChanges' option, restricts the hash to only include the layout of external dependencies. - * Used to allow links between workspace projects or the addition/removal of references to existing dependency versions to not - * cause hash changes. - */ - // "omitImportersFromPreventManualShrinkwrapChanges": true, - - /** - * If true, the chmod field in temporary project tar headers will not be normalized. - * This normalization can help ensure consistent tarball integrity across platforms. - */ - // "noChmodFieldInTarHeaderNormalization": true, - - /** - * If true, build caching will respect the allowWarningsInSuccessfulBuild flag and cache builds with warnings. - * This will not replay warnings from the cached build. - */ - // "buildCacheWithAllowWarningsInSuccessfulBuild": true, - - /** - * If true, the phased commands feature is enabled. To use this feature, create a "phased" command - * in common/config/rush/command-line.json. - */ - // "phasedCommands": true, - - /** - * If true, perform a clean install after when running `rush install` or `rush update` if the - * `.npmrc` file has changed since the last install. - */ - // "cleanInstallAfterNpmrcChanges": true -} diff --git a/common/config/rush/pnpm-config.json b/common/config/rush/pnpm-config.json deleted file mode 100644 index dae57c3b..00000000 --- a/common/config/rush/pnpm-config.json +++ /dev/null @@ -1,205 +0,0 @@ -/** - * This configuration file provides settings specific to the PNPM package manager. - * More documentation is available on the Rush website: https://rushjs.io - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", - - /** - * If true, then `rush install` and `rush update` will use the PNPM workspaces feature - * to perform the install, instead of the old model where Rush generated the symlinks - * for each projects's node_modules folder. - * - * When using workspaces, Rush will generate a `common/temp/pnpm-workspace.yaml` file referencing - * all local projects to install. Rush will also generate a `.pnpmfile.cjs` shim which implements - * Rush-specific features such as preferred versions. The user's `common/config/rush/.pnpmfile.cjs` - * is invoked by the shim. - * - * This option is strongly recommended. The default value is false. - */ - "useWorkspaces": true, - - /** - * If true, then Rush will add the `--strict-peer-dependencies` command-line parameter when - * invoking PNPM. This causes `rush update` to fail if there are unsatisfied peer dependencies, - * which is an invalid state that can cause build failures or incompatible dependency versions. - * (For historical reasons, JavaScript package managers generally do not treat this invalid - * state as an error.) - * - * PNPM documentation: https://pnpm.io/npmrc#strict-peer-dependencies - * - * The default value is false to avoid legacy compatibility issues. - * It is strongly recommended to set `strictPeerDependencies=true`. - */ - // "strictPeerDependencies": true, - - /** - * Environment variables that will be provided to PNPM. - */ - // "environmentVariables": { - // "NODE_OPTIONS": { - // "value": "--max-old-space-size=4096", - // "override": false - // } - // }, - - /** - * Specifies the location of the PNPM store. There are two possible values: - * - * - `local` - use the `pnpm-store` folder in the current configured temp folder: - * `common/temp/pnpm-store` by default. - * - `global` - use PNPM's global store, which has the benefit of being shared - * across multiple repo folders, but the disadvantage of less isolation for builds - * (for example, bugs or incompatibilities when two repos use different releases of PNPM) - * - * In both cases, the store path can be overridden by the environment variable `RUSH_PNPM_STORE_PATH`. - * - * The default value is `local`. - */ - // "pnpmStore": "global", - - /** - * If true, then `rush install` will report an error if manual modifications - * were made to the PNPM shrinkwrap file without running `rush update` afterwards. - * - * This feature protects against accidental inconsistencies that may be introduced - * if the PNPM shrinkwrap file (`pnpm-lock.yaml`) is manually edited. When this - * feature is enabled, `rush update` will append a hash to the file as a YAML comment, - * and then `rush update` and `rush install` will validate the hash. Note that this - * does not prohibit manual modifications, but merely requires `rush update` be run - * afterwards, ensuring that PNPM can report or repair any potential inconsistencies. - * - * To temporarily disable this validation when invoking `rush install`, use the - * `--bypass-policy` command-line parameter. - * - * The default value is false. - */ - // "preventManualShrinkwrapChanges": true, - - /** - * The "globalOverrides" setting provides a simple mechanism for overriding version selections - * for all dependencies of all projects in the monorepo workspace. The settings are copied - * into the `pnpm.overrides` field of the `common/temp/package.json` file that is generated - * by Rush during installation. - * - * Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by - * `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`, - * and `globalOverrides` has lowest precedence. - * - * PNPM documentation: https://pnpm.io/package_json#pnpmoverrides - */ - "globalOverrides": { - // "@visactor/vrender-core": "0.17.2-alpha.0", - // "@visactor/vrender-kits": "0.17.2-alpha.0", - // "@visactor/vrender-components": "0.17.2-alpha.0" - }, - - /** - * The `globalPeerDependencyRules` setting provides various settings for suppressing validation errors - * that are reported during installation with `strictPeerDependencies=true`. The settings are copied - * into the `pnpm.peerDependencyRules` field of the `common/temp/package.json` file that is generated - * by Rush during installation. - * - * Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by - * `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`, - * and `globalOverrides` has lowest precedence. - * - * https://pnpm.io/package_json#pnpmpeerdependencyrules - */ - "globalPeerDependencyRules": { - // "ignoreMissing": ["@eslint/*"], - // "allowedVersions": { "react": "17" }, - // "allowAny": ["@babel/*"] - }, - - /** - * The `globalPackageExtension` setting provides a way to patch arbitrary package.json fields - * for any PNPM dependency of the monorepo. The settings are copied into the `pnpm.packageExtensions` - * field of the `common/temp/package.json` file that is generated by Rush during installation. - * The `globalPackageExtension` setting has similar capabilities as `.pnpmfile.cjs` but without - * the downsides of an executable script (nondeterminism, unreliable caching, performance concerns). - * - * Order of precedence: `.pnpmfile.cjs` has the highest precedence, followed by - * `unsupportedPackageJsonSettings`, `globalPeerDependencyRules`, `globalPackageExtensions`, - * and `globalOverrides` has lowest precedence. - * - * PNPM documentation: https://pnpm.io/package_json#pnpmpackageextensions - */ - "globalPackageExtensions": { - // "fork-ts-checker-webpack-plugin": { - // "dependencies": { - // "@babel/core": "1" - // }, - // "peerDependencies": { - // "eslint": ">= 6" - // }, - // "peerDependenciesMeta": { - // "eslint": { - // "optional": true - // } - // } - // } - }, - - /** - * The `globalNeverBuiltDependencies` setting suppresses the `preinstall`, `install`, and `postinstall` - * lifecycle events for the specified NPM dependencies. This is useful for scripts with poor practices - * such as downloading large binaries without retries or attempting to invoke OS tools such as - * a C++ compiler. (PNPM's terminology refers to these lifecycle events as "building" a package; - * it has nothing to do with build system operations such as `rush build` or `rushx build`.) - * The settings are copied into the `pnpm.neverBuiltDependencies` field of the `common/temp/package.json` - * file that is generated by Rush during installation. - * - * PNPM documentation: https://pnpm.io/package_json#pnpmneverbuiltdependencies - */ - "globalNeverBuiltDependencies": [ - // "fsevents" - ], - - /** - * The `globalAllowedDeprecatedVersions` setting suppresses installation warnings for package - * versions that the NPM registry reports as being deprecated. This is useful if the - * deprecated package is an indirect dependency of an external package that has not released a fix. - * The settings are copied into the `pnpm.allowedDeprecatedVersions` field of the `common/temp/package.json` - * file that is generated by Rush during installation. - * - * PNPM documentation: https://pnpm.io/package_json#pnpmalloweddeprecatedversions - * - * If you are working to eliminate a deprecated version, it's better to specify `allowedDeprecatedVersions` - * in the package.json file for individual Rush projects. - */ - "globalAllowedDeprecatedVersions": { - // "request": "*" - }, - - /** - * (THIS FIELD IS MACHINE GENERATED) The "globalPatchedDependencies" field is updated automatically - * by the `rush-pnpm patch-commit` command. It is a dictionary, where the key is an NPM package name - * and exact version, and the value is a relative path to the associated patch file. - * - * PNPM documentation: https://pnpm.io/package_json#pnpmpatcheddependencies - */ - "globalPatchedDependencies": {}, - - /** - * (USE AT YOUR OWN RISK) This is a free-form property bag that will be copied into - * the `common/temp/package.json` file that is generated by Rush during installation. - * This provides a way to experiment with new PNPM features. These settings will override - * any other Rush configuration associated with a given JSON field except for `.pnpmfile.cjs`. - * - * USAGE OF THIS SETTING IS NOT SUPPORTED BY THE RUSH MAINTAINERS AND MAY CAUSE RUSH - * TO MALFUNCTION. If you encounter a missing PNPM setting that you believe should - * be supported, please create a GitHub issue or PR. Note that Rush does not aim to - * support every possible PNPM setting, but rather to promote a battle-tested installation - * strategy that is known to provide a good experience for large teams with lots of projects. - */ - "unsupportedPackageJsonSettings": { - // "dependencies": { - // "not-a-good-practice": "*" - // }, - // "scripts": { - // "do-something": "echo Also not a good practice" - // }, - // "pnpm": { "futurePnpmFeature": true } - } -} diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml deleted file mode 100644 index f56d7cdc..00000000 --- a/common/config/rush/pnpm-lock.yaml +++ /dev/null @@ -1,14071 +0,0 @@ -lockfileVersion: 5.4 - -importers: - - .: - specifiers: {} - - ../../docs: - specifiers: - '@arco-design/web-react': 2.46.1 - '@types/highlightjs': ^9.12.0 - '@types/markdown-it': ^13.0.0 - '@types/react': ^18.0.0 - '@types/react-dom': ^18.0.0 - '@visactor/vutils': ~0.19.3 - '@vitejs/plugin-react': 3.1.0 - axios: ^1.4.0 - chalk: ^3.0.0 - chokidar: ^3.5.0 - fs-extra: 10.1.0 - globby: 11.1.0 - highlight.js: ^11.8.0 - htmlparser2: ^4.1.0 - lodash: 4.17.21 - markdown-it: ^13.0.0 - marked: ^0.3.19 - react: ^18.0.0 - react-dom: ^18.0.0 - react-router-dom: 6.9.0 - typescript: 4.9.5 - vite: 3.2.6 - yargs: ^17.1.1 - dependencies: - '@arco-design/web-react': 2.46.1_27kzlijtntas6645qwojwuhdba - '@visactor/vutils': 0.19.5 - axios: 1.9.0 - highlight.js: 11.11.1 - lodash: 4.17.21 - markdown-it: 13.0.2 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - react-router-dom: 6.9.0_nnrd3gsncyragczmpvfhocinkq - devDependencies: - '@types/highlightjs': 9.12.6 - '@types/markdown-it': 13.0.9 - '@types/react': 18.3.20 - '@types/react-dom': 18.3.6_@types+react@18.3.20 - '@vitejs/plugin-react': 3.1.0_vite@3.2.6 - chalk: 3.0.0 - chokidar: 3.6.0 - fs-extra: 10.1.0 - globby: 11.1.0 - htmlparser2: 4.1.0 - marked: 0.3.19 - typescript: 4.9.5 - vite: 3.2.6 - yargs: 17.7.2 - - ../../packages/calculator: - specifiers: - '@internal/bundler': workspace:* - '@internal/eslint-config': workspace:* - '@internal/jest-config': workspace:* - '@internal/ts-config': workspace:* - '@jest/globals': ~29.5.0 - '@types/jest': ~29.5.0 - '@types/node': '*' - '@typescript-eslint/eslint-plugin': 5.30.0 - '@typescript-eslint/parser': 5.30.0 - '@visactor/vutils': ~0.19.3 - jest: ~29.5.0 - jest-environment-jsdom: ~29.5.0 - node-sql-parser: ~4.17.0 - npm-run-all: ^4.1.5 - rimraf: ^3.0.2 - ts-jest: ~29.2.5 - ts-node: ^10.9.2 - ts-pattern: ~4.1.4 - typescript: 4.9.5 - dependencies: - '@visactor/vutils': 0.19.5 - node-sql-parser: 4.17.0 - ts-pattern: 4.1.4 - devDependencies: - '@internal/bundler': link:../../tools/bundler - '@internal/eslint-config': link:../../share/eslint-config - '@internal/jest-config': link:../../share/jest-config - '@internal/ts-config': link:../../share/ts-config - '@jest/globals': 29.5.0 - '@types/jest': 29.5.14 - '@types/node': 22.15.1 - '@typescript-eslint/eslint-plugin': 5.30.0_dwvk2jxdxtyxgoclhbqbxvd22a - '@typescript-eslint/parser': 5.30.0_typescript@4.9.5 - jest: 29.5.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-environment-jsdom: 29.5.0 - npm-run-all: 4.1.5 - rimraf: 3.0.2 - ts-jest: 29.2.6_doipufordlnvh5g4adbwayvyvy - ts-node: 10.9.2_h6k6hc6r4guqd4kfcmr723djsq - typescript: 4.9.5 - - ../../packages/chart-advisor: - specifiers: - '@internal/bundler': workspace:* - '@internal/eslint-config': workspace:* - '@internal/jest-config': workspace:* - '@internal/ts-config': workspace:* - '@jest/globals': ~29.5.0 - '@rushstack/eslint-patch': ~1.1.4 - '@types/jest': ~29.5.0 - '@types/node': '*' - '@typescript-eslint/eslint-plugin': 5.30.0 - '@typescript-eslint/parser': 5.30.0 - '@visactor/vutils': ~0.19.3 - jest: ~29.5.0 - jest-environment-jsdom: ~29.5.0 - npm-run-all: ^4.1.5 - rimraf: ^3.0.2 - ts-jest: ~29.2.5 - typescript: 4.9.5 - undici-types: ^5.27.2 - dependencies: - '@visactor/vutils': 0.19.5 - devDependencies: - '@internal/bundler': link:../../tools/bundler - '@internal/eslint-config': link:../../share/eslint-config - '@internal/jest-config': link:../../share/jest-config - '@internal/ts-config': link:../../share/ts-config - '@jest/globals': 29.5.0 - '@rushstack/eslint-patch': 1.1.4 - '@types/jest': 29.5.14 - '@types/node': 22.15.1 - '@typescript-eslint/eslint-plugin': 5.30.0_dwvk2jxdxtyxgoclhbqbxvd22a - '@typescript-eslint/parser': 5.30.0_typescript@4.9.5 - jest: 29.5.0_@types+node@22.15.1 - jest-environment-jsdom: 29.5.0 - npm-run-all: 4.1.5 - rimraf: 3.0.2 - ts-jest: 29.2.6_doipufordlnvh5g4adbwayvyvy - typescript: 4.9.5 - undici-types: 5.28.4 - - ../../packages/generate-vchart: - specifiers: - '@internal/bundler': workspace:* - '@internal/eslint-config': workspace:* - '@internal/jest-config': workspace:* - '@internal/ts-config': workspace:* - '@jest/globals': ~29.5.0 - '@rushstack/eslint-patch': ~1.1.4 - '@types/jest': ~29.5.0 - '@types/node': '*' - '@typescript-eslint/eslint-plugin': 5.30.0 - '@typescript-eslint/parser': 5.30.0 - '@visactor/vchart-theme': ~1.12.2 - '@visactor/vutils': ~0.19.3 - dayjs: ~1.11.10 - jest: ~29.5.0 - jest-environment-jsdom: ~29.5.0 - node-sql-parser: ~4.17.0 - npm-run-all: ^4.1.5 - rimraf: ^3.0.2 - ts-jest: ~29.2.5 - ts-node: ^10.9.2 - ts-pattern: ~4.1.4 - typescript: 4.9.5 - dependencies: - '@visactor/vchart-theme': 1.12.2 - '@visactor/vutils': 0.19.5 - dayjs: 1.11.13 - node-sql-parser: 4.17.0 - ts-pattern: 4.1.4 - devDependencies: - '@internal/bundler': link:../../tools/bundler - '@internal/eslint-config': link:../../share/eslint-config - '@internal/jest-config': link:../../share/jest-config - '@internal/ts-config': link:../../share/ts-config - '@jest/globals': 29.5.0 - '@rushstack/eslint-patch': 1.1.4 - '@types/jest': 29.5.14 - '@types/node': 22.15.1 - '@typescript-eslint/eslint-plugin': 5.30.0_dwvk2jxdxtyxgoclhbqbxvd22a - '@typescript-eslint/parser': 5.30.0_typescript@4.9.5 - jest: 29.5.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-environment-jsdom: 29.5.0 - npm-run-all: 4.1.5 - rimraf: 3.0.2 - ts-jest: 29.2.6_doipufordlnvh5g4adbwayvyvy - ts-node: 10.9.2_h6k6hc6r4guqd4kfcmr723djsq - typescript: 4.9.5 - - ../../packages/vmind: - specifiers: - '@arco-design/web-react': 2.46.1 - '@ffmpeg/ffmpeg': ^0.11.6 - '@internal/bundler': workspace:* - '@internal/eslint-config': workspace:* - '@internal/jest-config': workspace:* - '@internal/ts-config': workspace:* - '@jest/globals': ~29.5.0 - '@monaco-editor/react': ~4.7.0 - '@rollup/plugin-dynamic-import-vars': ~2.1.0 - '@rushstack/eslint-patch': ~1.1.4 - '@stdlib/stats-base-dists-t-quantile': 0.2.1 - '@types/array-normalize': ~2.0.5 - '@types/density-clustering': ~1.3.3 - '@types/euclidean-distance': ~1.0.3 - '@types/jest': ~29.5.0 - '@types/js-yaml': ~4.0.9 - '@types/node': '*' - '@types/react': ^18.0.0 - '@types/react-dom': ^18.0.0 - '@typescript-eslint/eslint-plugin': 5.30.0 - '@typescript-eslint/parser': 5.30.0 - '@visactor/calculator': workspace:2.0.10 - '@visactor/chart-advisor': workspace:2.0.10 - '@visactor/generate-vchart': workspace:2.0.10 - '@visactor/vchart': ^1.13.2 - '@visactor/vchart-theme': ~1.12.2 - '@visactor/vdataset': ~0.19.3 - '@visactor/vrender-core': 0.21.8 - '@visactor/vutils': ~0.19.3 - '@vitejs/plugin-react': 3.1.0 - alasql: ~4.3.2 - array-normalize: ~2.0.0 - axios: ^1.4.0 - bayesian-changepoint: ~1.0.1 - canvas: ^2.11.2 - dayjs: ~1.11.10 - density-clustering: ~1.3.0 - dotenv: ~16.3.1 - eslint: ~8.18.0 - eslint-config-prettier: 8.5.0 - eslint-plugin-import: ^2.27.5 - eslint-plugin-jsx-a11y: ^6.7.1 - eslint-plugin-prettier: ^4.2.1 - eslint-plugin-react: 7.30.1 - euclidean-distance: ~1.0.0 - express: ~4.21.1 - jest: ~29.5.0 - jest-environment-jsdom: ~29.5.0 - js-yaml: ~4.1.0 - json5: ~2.2.3 - jsonrepair: ~3.8.1 - jstat: ~1.9.6 - less: 4.1.3 - react: ^18.0.0 - react-dom: ^18.0.0 - react-router-dom: 6.9.0 - sass: ^1.65.1 - string-similarity-js: ~2.1.4 - ts-jest: ~29.2.5 - ts-node: ^10.9.2 - typescript: 4.9.5 - util: ~0.12.5 - vite: 3.2.6 - vite-plugin-css: ~1.0.4 - vite-plugin-libcss: ~1.1.1 - dependencies: - '@stdlib/stats-base-dists-t-quantile': 0.2.1 - '@visactor/calculator': link:../calculator - '@visactor/chart-advisor': link:../chart-advisor - '@visactor/generate-vchart': link:../generate-vchart - '@visactor/vchart-theme': 1.12.2_@visactor+vchart@1.13.9 - '@visactor/vdataset': 0.19.5 - '@visactor/vutils': 0.19.5 - alasql: 4.3.3 - array-normalize: 2.0.0 - axios: 1.9.0 - bayesian-changepoint: 1.0.1 - dayjs: 1.11.13 - density-clustering: 1.3.0 - euclidean-distance: 1.0.0 - js-yaml: 4.1.0 - json5: 2.2.3 - jsonrepair: 3.8.1 - jstat: 1.9.6 - string-similarity-js: 2.1.4 - devDependencies: - '@arco-design/web-react': 2.46.1_27kzlijtntas6645qwojwuhdba - '@ffmpeg/ffmpeg': 0.11.6 - '@internal/bundler': link:../../tools/bundler - '@internal/eslint-config': link:../../share/eslint-config - '@internal/jest-config': link:../../share/jest-config - '@internal/ts-config': link:../../share/ts-config - '@jest/globals': 29.5.0 - '@monaco-editor/react': 4.7.0_nnrd3gsncyragczmpvfhocinkq - '@rollup/plugin-dynamic-import-vars': 2.1.5 - '@rushstack/eslint-patch': 1.1.4 - '@types/array-normalize': 2.0.5 - '@types/density-clustering': 1.3.3 - '@types/euclidean-distance': 1.0.3 - '@types/jest': 29.5.14 - '@types/js-yaml': 4.0.9 - '@types/node': 22.15.1 - '@types/react': 18.3.20 - '@types/react-dom': 18.3.6_@types+react@18.3.20 - '@typescript-eslint/eslint-plugin': 5.30.0_cow5zg7tx6c3eisi5a4ud5kwia - '@typescript-eslint/parser': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq - '@visactor/vchart': 1.13.9 - '@visactor/vrender-core': 0.21.8 - '@vitejs/plugin-react': 3.1.0_vite@3.2.6 - canvas: 2.11.2 - dotenv: 16.3.2 - eslint: 8.18.0 - eslint-config-prettier: 8.5.0_eslint@8.18.0 - eslint-plugin-import: 2.31.0_eslint@8.18.0 - eslint-plugin-jsx-a11y: 6.10.2_eslint@8.18.0 - eslint-plugin-prettier: 4.2.1_ohknqdiadpdc4n44qqsbqlxxwa - eslint-plugin-react: 7.30.1_eslint@8.18.0 - express: 4.21.2 - jest: 29.5.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-environment-jsdom: 29.5.0_canvas@2.11.2 - less: 4.1.3 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - react-router-dom: 6.9.0_nnrd3gsncyragczmpvfhocinkq - sass: 1.87.0 - ts-jest: 29.2.6_doipufordlnvh5g4adbwayvyvy - ts-node: 10.9.2_h6k6hc6r4guqd4kfcmr723djsq - typescript: 4.9.5 - util: 0.12.5 - vite: 3.2.6_74mdfjwjjuekt5dohrm44kqp7i - vite-plugin-css: 1.0.4 - vite-plugin-libcss: 1.1.1_vite@3.2.6 - - ../../share/eslint-config: - specifiers: - '@typescript-eslint/eslint-plugin': 5.30.0 - '@typescript-eslint/parser': 5.30.0 - eslint: ~8.18.0 - eslint-config-prettier: 8.5.0 - eslint-plugin-promise: 6.0.0 - eslint-plugin-react: 7.30.1 - eslint-plugin-react-hooks: 4.6.0 - typescript: 4.9.5 - dependencies: - '@typescript-eslint/eslint-plugin': 5.30.0_cow5zg7tx6c3eisi5a4ud5kwia - '@typescript-eslint/parser': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq - eslint-config-prettier: 8.5.0_eslint@8.18.0 - eslint-plugin-promise: 6.0.0_eslint@8.18.0 - eslint-plugin-react: 7.30.1_eslint@8.18.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.18.0 - devDependencies: - eslint: 8.18.0 - typescript: 4.9.5 - - ../../share/jest-config: - specifiers: - '@jest/globals': ~29.5.0 - '@types/jest': ~29.5.0 - jest: ~29.5.0 - jest-environment-jsdom: ~29.5.0 - jsdom: ~22.1.0 - typescript: 4.9.5 - dependencies: - '@jest/globals': 29.5.0 - jest-environment-jsdom: 29.5.0 - jsdom: 22.1.0 - devDependencies: - '@types/jest': 29.5.14 - jest: 29.5.0 - typescript: 4.9.5 - - ../../share/ts-config: - specifiers: {} - - ../../tools/bundler: - specifiers: - '@babel/core': 7.20.12 - '@babel/generator': 7.21.1 - '@babel/plugin-proposal-class-properties': 7.18.6 - '@babel/plugin-proposal-export-default-from': 7.18.10 - '@babel/plugin-transform-private-methods': 7.25.9 - '@babel/preset-env': 7.20.2 - '@babel/preset-react': 7.18.6 - '@babel/preset-typescript': 7.18.6 - '@internal/eslint-config': workspace:* - '@internal/ts-config': workspace:* - '@rollup/plugin-alias': 5.0.0 - '@rollup/plugin-babel': 6.0.3 - '@rollup/plugin-commonjs': 24.1.0 - '@rollup/plugin-json': 6.0.1 - '@rollup/plugin-node-resolve': 15.0.2 - '@rollup/plugin-replace': 5.0.2 - '@rollup/plugin-terser': 0.4.1 - '@rollup/plugin-typescript': 11.1.0 - '@rollup/plugin-url': 8.0.1 - '@rushstack/eslint-patch': ~1.1.4 - '@trufflesuite/spinnies': 0.1.1 - '@types/babel__core': 7.20.0 - '@types/clean-css': 4.2.6 - '@types/debug': 4.1.7 - '@types/fs-extra': 9.0.13 - '@types/glob-watcher': 5.0.2 - '@types/gulp': 4.0.10 - '@types/gulp-if': 0.0.34 - '@types/gulp-match': 1.1.2 - '@types/gulp-sourcemaps': 0.0.35 - '@types/less': 3.0.3 - '@types/lodash': 4.14.182 - '@types/merge2': 1.4.0 - '@types/minimist': 1.2.2 - '@types/ms': 0.7.31 - '@types/node': '*' - '@types/semver': 7.3.12 - '@types/terser': 3.12.0 - '@types/through2': 2.0.38 - '@types/undertaker': 1.2.8 - '@types/vinyl': 2.0.7 - '@types/yargs-parser': 21.0.0 - autoprefixer: 10.4.13 - babel-plugin-import: 1.13.6 - clean-css: 5.3.2 - debug: 4.3.4 - eslint: ~8.18.0 - fs-extra: 10.1.0 - glob-watcher: 5.0.5 - globby: 11.1.0 - gulp: 4.0.2 - gulp-clean: 0.4.0 - gulp-if: 3.0.0 - gulp-match: 1.1.0 - gulp-replace: 1.1.4 - gulp-sourcemaps: 3.0.0 - gulp-typescript: 6.0.0-alpha.1 - less: 4.1.3 - lodash: 4.17.21 - merge2: 1.4.1 - ms: 2.1.3 - postcss: 8.4.21 - rollup: 3.20.5 - semver: 7.3.4 - terser: 5.17.1 - through2: 4.0.2 - ts-node: ^10.9.2 - typescript: 4.9.5 - undertaker: 1.3.0 - vinyl: 2.2.1 - vitest: 0.30.1 - yargs-parser: 21.1.1 - dependencies: - '@babel/core': 7.20.12 - '@babel/generator': 7.21.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.20.12 - '@babel/plugin-transform-private-methods': 7.25.9_@babel+core@7.20.12 - '@babel/preset-env': 7.20.2_@babel+core@7.20.12 - '@babel/preset-react': 7.18.6_@babel+core@7.20.12 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@rollup/plugin-alias': 5.0.0_rollup@3.20.5 - '@rollup/plugin-babel': 6.0.3_i2zi3w2axzphgkbxj6nc7ioafa - '@rollup/plugin-commonjs': 24.1.0_rollup@3.20.5 - '@rollup/plugin-json': 6.0.1_rollup@3.20.5 - '@rollup/plugin-node-resolve': 15.0.2_rollup@3.20.5 - '@rollup/plugin-replace': 5.0.2_rollup@3.20.5 - '@rollup/plugin-terser': 0.4.1_rollup@3.20.5 - '@rollup/plugin-typescript': 11.1.0_ivokygnvpraqsbyfg47pib5bri - '@rollup/plugin-url': 8.0.1_rollup@3.20.5 - '@trufflesuite/spinnies': 0.1.1 - autoprefixer: 10.4.13_postcss@8.4.21 - babel-plugin-import: 1.13.6 - clean-css: 5.3.2 - debug: 4.3.4 - fs-extra: 10.1.0 - glob-watcher: 5.0.5 - globby: 11.1.0 - gulp: 4.0.2 - gulp-clean: 0.4.0 - gulp-if: 3.0.0 - gulp-match: 1.1.0 - gulp-replace: 1.1.4 - gulp-sourcemaps: 3.0.0 - gulp-typescript: 6.0.0-alpha.1_typescript@4.9.5 - less: 4.1.3 - lodash: 4.17.21 - merge2: 1.4.1 - ms: 2.1.3 - postcss: 8.4.21 - rollup: 3.20.5 - semver: 7.3.4 - terser: 5.17.1 - through2: 4.0.2 - undertaker: 1.3.0 - vinyl: 2.2.1 - yargs-parser: 21.1.1 - devDependencies: - '@internal/eslint-config': link:../../share/eslint-config - '@internal/ts-config': link:../../share/ts-config - '@rushstack/eslint-patch': 1.1.4 - '@types/babel__core': 7.20.0 - '@types/clean-css': 4.2.6 - '@types/debug': 4.1.7 - '@types/fs-extra': 9.0.13 - '@types/glob-watcher': 5.0.2 - '@types/gulp': 4.0.10 - '@types/gulp-if': 0.0.34 - '@types/gulp-match': 1.1.2 - '@types/gulp-sourcemaps': 0.0.35 - '@types/less': 3.0.3 - '@types/lodash': 4.14.182 - '@types/merge2': 1.4.0 - '@types/minimist': 1.2.2 - '@types/ms': 0.7.31 - '@types/node': 22.15.1 - '@types/semver': 7.3.12 - '@types/terser': 3.12.0 - '@types/through2': 2.0.38 - '@types/undertaker': 1.2.8 - '@types/vinyl': 2.0.7 - '@types/yargs-parser': 21.0.0 - eslint: 8.18.0 - ts-node: 10.9.2_h6k6hc6r4guqd4kfcmr723djsq - typescript: 4.9.5 - vitest: 0.30.1_less@4.1.3+terser@5.17.1 - - ../../tools/typescript-json-schema: - specifiers: - '@types/chai': ^4.2.21 - '@types/glob': ^7.1.4 - '@types/json-schema': ^7.0.9 - '@types/mocha': ^9.0.0 - '@types/node': '*' - ajv: ^8.12.0 - ajv-formats: ^2.1.1 - chai: ^4.3.4 - glob: ^7.1.7 - mocha: ^9.1.3 - path-equal: ^1.2.5 - safe-stable-stringify: ^2.2.0 - source-map-support: ^0.5.20 - ts-node: ^10.9.2 - typescript: 4.9.5 - yargs: ^17.1.1 - dependencies: - '@types/json-schema': 7.0.15 - '@types/node': 22.15.1 - glob: 7.2.3 - path-equal: 1.2.5 - safe-stable-stringify: 2.5.0 - ts-node: 10.9.2_h6k6hc6r4guqd4kfcmr723djsq - typescript: 4.9.5 - yargs: 17.7.2 - devDependencies: - '@types/chai': 4.3.20 - '@types/glob': 7.2.0 - '@types/mocha': 9.1.1 - ajv: 8.17.1 - ajv-formats: 2.1.1_ajv@8.17.1 - chai: 4.5.0 - mocha: 9.2.2 - source-map-support: 0.5.21 - -packages: - - /@ampproject/remapping/2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - /@arco-design/color/0.4.0: - resolution: {integrity: sha512-s7p9MSwJgHeL8DwcATaXvWT3m2SigKpxx4JA1BGPHL4gfvaQsmQfrLBDpjOJFJuJ2jG2dMt3R3P8Pm9E65q18g==} - dependencies: - color: 3.2.1 - - /@arco-design/web-react/2.46.1_27kzlijtntas6645qwojwuhdba: - resolution: {integrity: sha512-XjG44rODJklDu++OApvxjt/TbRrgkNqVq6grt/H+9skysm46jFn2SwhuSljBHmjo11LtIeB1m/OMPMaFtafeYg==} - peerDependencies: - react: '>=16' - react-dom: '>=16' - dependencies: - '@arco-design/color': 0.4.0 - '@babel/runtime': 7.27.0 - b-tween: 0.3.3 - b-validate: 1.5.3 - compute-scroll-into-view: 1.0.20 - dayjs: 1.11.13 - lodash: 4.17.21 - number-precision: 1.6.0 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - react-focus-lock: 2.13.6_po4keleilqsm4vrhgxl2cr46aq - react-transition-group: 4.4.5_nnrd3gsncyragczmpvfhocinkq - resize-observer-polyfill: 1.5.1 - scroll-into-view-if-needed: 2.2.20 - shallowequal: 1.1.0 - transitivePeerDependencies: - - '@types/react' - - /@babel/code-frame/7.26.2: - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - /@babel/compat-data/7.26.8: - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - - /@babel/core/7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.20.12 - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /@babel/core/7.26.10: - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.26.10 - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator/7.21.1: - resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - /@babel/generator/7.27.0: - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - /@babel/helper-annotate-as-pure/7.25.9: - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.27.0 - dev: false - - /@babel/helper-compilation-targets/7.27.0: - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - /@babel/helper-create-class-features-plugin/7.27.0_@babel+core@7.20.12: - resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.26.5_@babel+core@7.20.12 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.27.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-create-regexp-features-plugin/7.27.0_@babel+core@7.20.12: - resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 - semver: 6.3.1 - dev: false - - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.10 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-environment-visitor/7.24.7: - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.27.0 - dev: false - - /@babel/helper-member-expression-to-functions/7.25.9: - resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-module-imports/7.25.9: - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - - /@babel/helper-module-transforms/7.26.0_@babel+core@7.20.12: - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - /@babel/helper-module-transforms/7.26.0_@babel+core@7.26.10: - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-optimise-call-expression/7.25.9: - resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.27.0 - dev: false - - /@babel/helper-plugin-utils/7.26.5: - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - - /@babel/helper-remap-async-to-generator/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-replace-supers/7.26.5_@babel+core@7.20.12: - resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-skip-transparent-expression-wrappers/7.25.9: - resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-string-parser/7.25.9: - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-identifier/7.25.9: - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-option/7.25.9: - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - /@babel/helper-wrap-function/7.25.9: - resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helpers/7.27.0: - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - - /@babel/parser/7.27.0: - resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.27.0 - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-class-static-block/7.21.0_@babel+core@7.20.12: - resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.20.12: - resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-export-default-from': 7.25.9_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.25.9_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.20.12: - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-private-property-in-object/7.21.11_@babel+core@7.20.12: - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-syntax-export-default-from/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-syntax-import-assertions/7.26.0_@babel+core@7.20.12: - resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-syntax-import-attributes/7.26.0_@babel+core@7.20.12: - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-jsx/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-syntax-typescript/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - - /@babel/plugin-transform-arrow-functions/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-async-to-generator/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-remap-async-to-generator': 7.25.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-block-scoped-functions/7.26.5_@babel+core@7.20.12: - resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-block-scoping/7.27.0_@babel+core@7.20.12: - resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-classes/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5_@babel+core@7.20.12 - '@babel/traverse': 7.27.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-computed-properties/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/template': 7.27.0 - dev: false - - /@babel/plugin-transform-destructuring/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-dotall-regex/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-duplicate-keys/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-exponentiation-operator/7.26.3_@babel+core@7.20.12: - resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-for-of/7.26.9_@babel+core@7.20.12: - resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-function-name/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-literals/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-member-expression-literals/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-modules-amd/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-commonjs/7.26.3_@babel+core@7.20.12: - resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-systemjs/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-umd/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.26.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-named-capturing-groups-regex/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-new-target/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-object-super/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-replace-supers': 7.26.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-optional-chaining/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-parameters/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-private-methods/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-property-literals/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-react-display-name/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-react-jsx-development/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.25.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-react-jsx-self/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: true - - /@babel/plugin-transform-react-jsx-source/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: true - - /@babel/plugin-transform-react-jsx/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx': 7.25.9_@babel+core@7.20.12 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-react-pure-annotations/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-regenerator/7.27.0_@babel+core@7.20.12: - resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - regenerator-transform: 0.15.2 - dev: false - - /@babel/plugin-transform-reserved-words/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-shorthand-properties/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-spread/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-sticky-regex/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-template-literals/7.26.8_@babel+core@7.20.12: - resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-typeof-symbol/7.27.0_@babel+core@7.20.12: - resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-typescript/7.27.0_@babel+core@7.20.12: - resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-syntax-typescript': 7.25.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-unicode-escapes/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/plugin-transform-unicode-regex/7.25.9_@babel+core@7.20.12: - resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.27.0_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - dev: false - - /@babel/preset-env/7.20.2_@babel+core@7.20.12: - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-static-block': 7.21.0_@babel+core@7.20.12 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.21.11_@babel+core@7.20.12 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-import-assertions': 7.26.0_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-async-to-generator': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.26.5_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.27.0_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-duplicate-keys': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.26.3_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.26.9_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-modules-amd': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.26.3_@babel+core@7.20.12 - '@babel/plugin-transform-modules-systemjs': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-modules-umd': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-new-target': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-regenerator': 7.27.0_@babel+core@7.20.12 - '@babel/plugin-transform-reserved-words': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-sticky-regex': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.26.8_@babel+core@7.20.12 - '@babel/plugin-transform-typeof-symbol': 7.27.0_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-escapes': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-regex': 7.25.9_@babel+core@7.20.12 - '@babel/preset-modules': 0.1.6_@babel+core@7.20.12 - '@babel/types': 7.27.0 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 - core-js-compat: 3.41.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-modules/0.1.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.25.9_@babel+core@7.20.12 - '@babel/types': 7.27.0 - esutils: 2.0.3 - dev: false - - /@babel/preset-react/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx-development': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-react-pure-annotations': 7.25.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.26.5 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-typescript': 7.27.0_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/runtime/7.27.0: - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - - /@babel/template/7.27.0: - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - - /@babel/traverse/7.27.0: - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/types/7.27.0: - resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - /@bcoe/v8-coverage/0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - /@esbuild/android-arm/0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64/0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - /@ffmpeg/ffmpeg/0.11.6: - resolution: {integrity: sha512-uN8J8KDjADEavPhNva6tYO9Fj0lWs9z82swF3YXnTxWMBoFLGq3LZ6FLlIldRKEzhOBKnkVfA8UnFJuvGvNxcA==} - engines: {node: '>=12.16.1'} - dependencies: - is-url: 1.2.4 - node-fetch: 2.7.0 - regenerator-runtime: 0.13.11 - resolve-url: 0.2.1 - transitivePeerDependencies: - - encoding - dev: true - - /@gulp-sourcemaps/identity-map/2.0.1: - resolution: {integrity: sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==} - engines: {node: '>= 0.10'} - dependencies: - acorn: 6.4.2 - normalize-path: 3.0.0 - postcss: 7.0.39 - source-map: 0.6.1 - through2: 3.0.2 - dev: false - - /@gulp-sourcemaps/map-sources/1.0.0: - resolution: {integrity: sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==} - engines: {node: '>= 0.10'} - dependencies: - normalize-path: 2.1.1 - through2: 2.0.5 - dev: false - - /@humanwhocodes/config-array/0.9.5: - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - deprecated: Use @eslint/object-schema instead - - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - /@jest/console/29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - dev: true - - /@jest/core/29.7.0: - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0_@types+node@22.15.1 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /@jest/core/29.7.0_ts-node@10.9.2: - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /@jest/environment/29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - jest-mock: 29.7.0 - - /@jest/expect-utils/29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 - - /@jest/expect/29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - /@jest/fake-timers/29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.1 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - /@jest/globals/29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - /@jest/globals/29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/reporters/29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.1 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/schemas/29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - - /@jest/source-map/29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - - /@jest/test-result/29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - dev: true - - /@jest/test-sequencer/29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - dev: true - - /@jest/transform/29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.20.12 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.7 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - /@jest/types/29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.1 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - - /@jridgewell/gen-mapping/0.3.8: - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - /@jridgewell/resolve-uri/3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array/1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - /@jridgewell/source-map/0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - /@jridgewell/sourcemap-codec/1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - /@jridgewell/trace-mapping/0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - /@mapbox/node-pre-gyp/1.0.11: - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - dependencies: - detect-libc: 2.0.4 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.7.1 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@monaco-editor/loader/1.5.0: - resolution: {integrity: sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw==} - dependencies: - state-local: 1.0.7 - dev: true - - /@monaco-editor/react/4.7.0_nnrd3gsncyragczmpvfhocinkq: - resolution: {integrity: sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==} - peerDependencies: - monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - dependencies: - '@monaco-editor/loader': 1.5.0 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - dev: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - /@parcel/watcher-android-arm64/2.5.1: - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-darwin-arm64/2.5.1: - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-darwin-x64/2.5.1: - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-freebsd-x64/2.5.1: - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-linux-arm-glibc/2.5.1: - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-linux-arm-musl/2.5.1: - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-linux-arm64-glibc/2.5.1: - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-linux-arm64-musl/2.5.1: - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-linux-x64-glibc/2.5.1: - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-linux-x64-musl/2.5.1: - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-win32-arm64/2.5.1: - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-win32-ia32/2.5.1: - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher-win32-x64/2.5.1: - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@parcel/watcher/2.5.1: - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - requiresBuild: true - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 - dev: true - optional: true - - /@remix-run/router/1.4.0: - resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==} - engines: {node: '>=14'} - - /@resvg/resvg-js-android-arm-eabi/2.4.1: - resolution: {integrity: sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - requiresBuild: true - optional: true - - /@resvg/resvg-js-android-arm64/2.4.1: - resolution: {integrity: sha512-/QleoRdPfsEuH9jUjilYcDtKK/BkmWcK+1LXM8L2nsnf/CI8EnFyv7ZzCj4xAIvZGAy9dTYr/5NZBcTwxG2HQg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - requiresBuild: true - optional: true - - /@resvg/resvg-js-darwin-arm64/2.4.1: - resolution: {integrity: sha512-U1oMNhea+kAXgiEXgzo7EbFGCD1Edq5aSlQoe6LMly6UjHzgx2W3N5kEXCwU/CgN5FiQhZr7PlSJSlcr7mdhfg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@resvg/resvg-js-darwin-x64/2.4.1: - resolution: {integrity: sha512-avyVh6DpebBfHHtTQTZYSr6NG1Ur6TEilk1+H0n7V+g4F7x7WPOo8zL00ZhQCeRQ5H4f8WXNWIEKL8fwqcOkYw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@resvg/resvg-js-linux-arm-gnueabihf/2.4.1: - resolution: {integrity: sha512-isY/mdKoBWH4VB5v621co+8l101jxxYjuTkwOLsbW+5RK9EbLciPlCB02M99ThAHzI2MYxIUjXNmNgOW8btXvw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@resvg/resvg-js-linux-arm64-gnu/2.4.1: - resolution: {integrity: sha512-uY5voSCrFI8TH95vIYBm5blpkOtltLxLRODyhKJhGfskOI7XkRw5/t1u0sWAGYD8rRSNX+CA+np86otKjubrNg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@resvg/resvg-js-linux-arm64-musl/2.4.1: - resolution: {integrity: sha512-6mT0+JBCsermKMdi/O2mMk3m7SqOjwi9TKAwSngRZ/nQoL3Z0Z5zV+572ztgbWr0GODB422uD8e9R9zzz38dRQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@resvg/resvg-js-linux-x64-gnu/2.4.1: - resolution: {integrity: sha512-60KnrscLj6VGhkYOJEmmzPlqqfcw1keDh6U+vMcNDjPhV3B5vRSkpP/D/a8sfokyeh4VEacPSYkWGezvzS2/mg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@resvg/resvg-js-linux-x64-musl/2.4.1: - resolution: {integrity: sha512-0AMyZSICC1D7ge115cOZQW8Pcad6PjWuZkBFF3FJuSxC6Dgok0MQnLTs2MfMdKBlAcwO9dXsf3bv9tJZj8pATA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@resvg/resvg-js-win32-arm64-msvc/2.4.1: - resolution: {integrity: sha512-76XDFOFSa3d0QotmcNyChh2xHwk+JTFiEQBVxMlHpHMeq7hNrQJ1IpE1zcHSQvrckvkdfLboKRrlGB86B10Qjw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /@resvg/resvg-js-win32-ia32-msvc/2.4.1: - resolution: {integrity: sha512-odyVFGrEWZIzzJ89KdaFtiYWaIJh9hJRW/frcEcG3agJ464VXkN/2oEVF5ulD+5mpGlug9qJg7htzHcKxDN8sg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@resvg/resvg-js-win32-x64-msvc/2.4.1: - resolution: {integrity: sha512-vY4kTLH2S3bP+puU5x7hlAxHv+ulFgcK6Zn3efKSr0M0KnZ9A3qeAjZteIpkowEFfUeMPNg2dvvoFRJA9zqxSw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@resvg/resvg-js/2.4.1: - resolution: {integrity: sha512-wTOf1zerZX8qYcMmLZw3czR4paI4hXqPjShNwJRh5DeHxvgffUS5KM7XwxtbIheUW6LVYT5fhT2AJiP6mU7U4A==} - engines: {node: '>= 10'} - optionalDependencies: - '@resvg/resvg-js-android-arm-eabi': 2.4.1 - '@resvg/resvg-js-android-arm64': 2.4.1 - '@resvg/resvg-js-darwin-arm64': 2.4.1 - '@resvg/resvg-js-darwin-x64': 2.4.1 - '@resvg/resvg-js-linux-arm-gnueabihf': 2.4.1 - '@resvg/resvg-js-linux-arm64-gnu': 2.4.1 - '@resvg/resvg-js-linux-arm64-musl': 2.4.1 - '@resvg/resvg-js-linux-x64-gnu': 2.4.1 - '@resvg/resvg-js-linux-x64-musl': 2.4.1 - '@resvg/resvg-js-win32-arm64-msvc': 2.4.1 - '@resvg/resvg-js-win32-ia32-msvc': 2.4.1 - '@resvg/resvg-js-win32-x64-msvc': 2.4.1 - - /@rollup/plugin-alias/5.0.0_rollup@3.20.5: - resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - rollup: 3.20.5 - slash: 4.0.0 - dev: false - - /@rollup/plugin-babel/6.0.3_i2zi3w2axzphgkbxj6nc7ioafa: - resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - rollup: - optional: true - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.25.9 - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - '@types/babel__core': 7.20.0 - rollup: 3.20.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@rollup/plugin-commonjs/24.1.0_rollup@3.20.5: - resolution: {integrity: sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.27.0 - rollup: 3.20.5 - dev: false - - /@rollup/plugin-dynamic-import-vars/2.1.5: - resolution: {integrity: sha512-Mymi24fd9hlRifdZV/jYIFj1dn99F34imiYu3KzlAcgBcRi3i9SucgW/VRo5SQ9K4NuQ7dCep6pFWgNyhRdFHQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4 - astring: 1.9.0 - estree-walker: 2.0.2 - fast-glob: 3.3.3 - magic-string: 0.30.17 - dev: true - - /@rollup/plugin-json/6.0.1_rollup@3.20.5: - resolution: {integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - rollup: 3.20.5 - dev: false - - /@rollup/plugin-node-resolve/15.0.2_rollup@3.20.5: - resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.10 - rollup: 3.20.5 - dev: false - - /@rollup/plugin-replace/5.0.2_rollup@3.20.5: - resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - magic-string: 0.27.0 - rollup: 3.20.5 - dev: false - - /@rollup/plugin-terser/0.4.1_rollup@3.20.5: - resolution: {integrity: sha512-aKS32sw5a7hy+fEXVy+5T95aDIwjpGHCTv833HXVtyKMDoVS7pBr5K3L9hEQoNqbJFjfANPrNpIXlTQ7is00eA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.x || ^3.x - peerDependenciesMeta: - rollup: - optional: true - dependencies: - rollup: 3.20.5 - serialize-javascript: 6.0.2 - smob: 0.0.6 - terser: 5.17.1 - dev: false - - /@rollup/plugin-typescript/11.1.0_ivokygnvpraqsbyfg47pib5bri: - resolution: {integrity: sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - resolve: 1.22.10 - rollup: 3.20.5 - typescript: 4.9.5 - dev: false - - /@rollup/plugin-url/8.0.1_rollup@3.20.5: - resolution: {integrity: sha512-8ajztphXb5e19dk3Iwjtm2eSYJR8jFQubZ8pJ1GG2MBMM7/qUedLnZAN+Vt4jqbcT/m27jfjIBocvrzV0giNRw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.1.4_rollup@3.20.5 - make-dir: 3.1.0 - mime: 3.0.0 - rollup: 3.20.5 - dev: false - - /@rollup/pluginutils/5.1.4: - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - dev: true - - /@rollup/pluginutils/5.1.4_rollup@3.20.5: - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.7 - estree-walker: 2.0.2 - picomatch: 4.0.2 - rollup: 3.20.5 - dev: false - - /@rtsao/scc/1.1.0: - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - dev: true - - /@rushstack/eslint-patch/1.1.4: - resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==} - dev: true - - /@sinclair/typebox/0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - /@sinonjs/commons/3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - dependencies: - type-detect: 4.0.8 - - /@sinonjs/fake-timers/10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - dependencies: - '@sinonjs/commons': 3.0.1 - - /@stdlib/array-base-filled/0.2.2: - resolution: {integrity: sha512-T7nB7dni5Y4/nsq6Gc1bAhYfzJbcOdqsmVZJUI698xpDbhCdVCIIaEbf0PnDMGN24psN+5mgAVmnNBom+uF0Xg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/array-base-zeros/0.2.2: - resolution: {integrity: sha512-iwxqaEtpi4c2qpqabmhFdaQGkzgo5COwjHPn2T0S0wfJuM1VuVl5UBl15syr+MmZPJQOB1eBbh6F1uTh9597qw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-base-filled': 0.2.2 - dev: false - - /@stdlib/array-float32/0.2.2: - resolution: {integrity: sha512-pTcy1FNQrrJLL1LMxJjuVpcKJaibbGCFFTe41iCSXpSOC8SuTBuNohrO6K9+xR301Ruxxn4yrzjJJ6Fa3nQJ2g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-float32array-support': 0.2.2 - dev: false - - /@stdlib/array-float64/0.2.2: - resolution: {integrity: sha512-ZmV5wcacGrhT0maw9dfLXNv4N3ZwFUV3D7ItFfZFGFnKIJbubrWzwtaYnxzIXigrDc8g3F6FVHRpsQLMxq0/lA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-float64array-support': 0.2.2 - dev: false - - /@stdlib/array-uint16/0.2.2: - resolution: {integrity: sha512-z5c/Izw43HkKfb1pTgEUMAS8GFvhtHkkHZSjX3XJN+17P0VjknxjlSvPiCBGqaDX9jXtlWH3mn1LSyDKtJQoeA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-uint16array-support': 0.2.2 - dev: false - - /@stdlib/array-uint32/0.2.2: - resolution: {integrity: sha512-3T894I9C2MqZJJmRCYFTuJp4Qw9RAt+GzYnVPyIXoK1h3TepUXe9VIVx50cUFIibdXycgu0IFGASeAb3YMyupw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-uint32array-support': 0.2.2 - dev: false - - /@stdlib/array-uint8/0.2.2: - resolution: {integrity: sha512-Ip9MUC8+10U9x0crMKWkpvfoUBBhWzc6k5SI4lxx38neFVmiJ3f+5MBADEagjpoKSBs71vlY2drnEZe+Gs2Ytg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-uint8array-support': 0.2.2 - dev: false - - /@stdlib/assert-has-float32array-support/0.2.2: - resolution: {integrity: sha512-pi2akQl8mVki43fF1GNQVLYW0bHIPp2HuRNThX9GjB3OFQTpvrV8/3zPSh4lOxQa5gRiabgf0+Rgeu3AOhEw9A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-float32array': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - dev: false - - /@stdlib/assert-has-float64array-support/0.2.2: - resolution: {integrity: sha512-8L3GuKY1o0dJARCOsW9MXcugXapaMTpSG6dGxyNuUVEvFfY5UOzcj9/JIDal5FjqSgqVOGL5qZl2qtRwub34VA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-float64array': 0.2.2 - dev: false - - /@stdlib/assert-has-generator-support/0.2.2: - resolution: {integrity: sha512-TcE9BGV8i7B2OmxPlJ/2DUrAwG0W4fFS/DE7HmVk68PXVZsgyNQ/WP/IHBoazHDjhN5c3dU21c20kM/Bw007Rw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-eval': 0.2.2 - dev: false - - /@stdlib/assert-has-own-property/0.2.2: - resolution: {integrity: sha512-m5rV4Z2/iNkwx2vRsNheM6sQZMzc8rQQOo90LieICXovXZy8wA5jNld4kRKjMNcRt/TjrNP7i2Rhh8hruRDlHg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/assert-has-symbol-support/0.2.2: - resolution: {integrity: sha512-vCsGGmDZz5dikGgdF26rIL0y0nHvH7qaVf89HLLTybceuZijAqFSJEqcB3Gpl5uaeueLNAWExHi2EkoUVqKHGg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/assert-has-tostringtag-support/0.2.2: - resolution: {integrity: sha512-bSHGqku11VH0swPEzO4Y2Dr+lTYEtjSWjamwqCTC8udOiOIOHKoxuU4uaMGKJjVfXG1L+XefLHqzuO5azxdRaA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-symbol-support': 0.2.2 - dev: false - - /@stdlib/assert-has-uint16array-support/0.2.2: - resolution: {integrity: sha512-aL188V7rOkkEH4wYjfpB+1waDO4ULxo5ppGEK6X0kG4YiXYBL2Zyum53bjEQvo0Nkn6ixe18dNzqqWWytBmDeg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-uint16array': 0.2.2 - '@stdlib/constants-uint16-max': 0.2.2 - dev: false - - /@stdlib/assert-has-uint32array-support/0.2.2: - resolution: {integrity: sha512-+UHKP3mZOACkJ9CQjeKNfbXHm5HGQB862V5nV5q3UQlHPzhslnXKyG1SwAxTx+0g88C/2vlDLeqG8H4TH2UTFA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-uint32array': 0.2.2 - '@stdlib/constants-uint32-max': 0.2.2 - dev: false - - /@stdlib/assert-has-uint8array-support/0.2.2: - resolution: {integrity: sha512-VfzrB0BMik9MvPyKcMDJL3waq4nM30RZUrr2EuuQ/RbUpromRWSDbzGTlRq5SfjtJrHDxILPV3rytDCc03dgWA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-uint8array': 0.2.2 - '@stdlib/constants-uint8-max': 0.2.2 - dev: false - - /@stdlib/assert-is-array/0.2.2: - resolution: {integrity: sha512-aJyTX2U3JqAGCATgaAX9ygvDHc97GCIKkIhiZm/AZaLoFHPtMA1atQ4bKcefEC8Um9eefryxTHfFPfSr9CoNQQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-big-endian/0.2.2: - resolution: {integrity: sha512-mPEl30/bqZh++UyQbxlyOuB7k0wC73y5J9nD2J6Ud6Fcl76R5IAGHRW0WT3W18is/6jG1jzMd8hrISFyD7N0sA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-uint16': 0.2.2 - '@stdlib/array-uint8': 0.2.2 - dev: false - - /@stdlib/assert-is-boolean/0.2.2: - resolution: {integrity: sha512-3KFLRTYZpX6u95baZ6PubBvjehJs2xBU6+zrenR0jx8KToUYCnJPxqqj7JXRhSD+cOURmcjj9rocVaG9Nz18Pg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.2.2 - '@stdlib/boolean-ctor': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-buffer/0.2.2: - resolution: {integrity: sha512-4/WMFTEcDYlVbRhxY8Wlqag4S70QCnn6WmQ4wmfiLW92kqQHsLvTNvdt/qqh/SDyDV31R/cpd3QPsVN534dNEA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-object-like': 0.2.2 - dev: false - - /@stdlib/assert-is-float32array/0.2.2: - resolution: {integrity: sha512-hxEKz/Y4m1NYuOaiQKoqQA1HeAYwNXFqSk3FJ4hC71DuGNit2tuxucVyck3mcWLpLmqo0+Qlojgwo5P9/C/9MQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-float64array/0.2.2: - resolution: {integrity: sha512-3R1wLi6u/IHXsXMtaLnvN9BSpqAJ8tWhwjOOr6kadDqCWsU7Odc7xKLeAXAInAxwnV8VDpO4ifym4A3wehazPQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-function/0.2.2: - resolution: {integrity: sha512-whY69DUYWljCJ79Cvygp7VzWGOtGTsh3SQhzNuGt+ut6EsOW+8nwiRkyBXYKf/MOF+NRn15pxg8cJEoeRgsPcA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-type-of': 0.2.2 - dev: false - - /@stdlib/assert-is-little-endian/0.2.2: - resolution: {integrity: sha512-KMzPndj85jDiE1+hYCpw12k2OQOVkfpCo7ojCmCl8366wtKGEaEdGbz1iH98zkxRvnZLSMXcYXI2z3gtdmB0Ag==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-uint16': 0.2.2 - '@stdlib/array-uint8': 0.2.2 - dev: false - - /@stdlib/assert-is-number/0.2.2: - resolution: {integrity: sha512-sWpJ59GqGbmlcdYSUV/OYkmQW8k47w10+E0K0zPu1x1VKzhjgA5ZB2sJcpgI8Vt3ckRLjdhuc62ZHJkrJujG7A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.2.2 - '@stdlib/number-ctor': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-object-like/0.2.2: - resolution: {integrity: sha512-MjQBpHdEebbJwLlxh/BKNH8IEHqY0YlcCMRKOQU0UOlILSJg0vG+GL4fDDqtx9FSXxcTqC+w3keHx8kAKvQhzg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-tools-array-function': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/assert-is-object/0.2.2: - resolution: {integrity: sha512-sNnphJuHyMDHHHaonlx6vaCKMe4sHOn0ag5Ck4iW3kJtM2OZB2J4h8qFcwKzlMk7fgFu7vYNGCZtpm1dYbbUfQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-array': 0.2.2 - dev: false - - /@stdlib/assert-is-plain-object/0.2.2: - resolution: {integrity: sha512-o4AFWgBsSNzZAOOfIrxoDFYTqnLuGiaHDFwIeZGUHdpQeav2Fll+sGeaqOcekF7yKawoswnwWdJqTsjapb4Yzw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-own-property': 0.2.2 - '@stdlib/assert-is-function': 0.2.2 - '@stdlib/assert-is-object': 0.2.2 - '@stdlib/utils-get-prototype-of': 0.2.2 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-regexp/0.2.2: - resolution: {integrity: sha512-2JtiUtRJxPaVXL7dkWoV3n5jouI65DwYDXsDXg3xo23TXlTNGgU/HhKO4FWC1Yqju7YMZi0hcZSW6E9v8ISqeQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.2.2 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-string/0.2.2: - resolution: {integrity: sha512-SOkFg4Hq443hkadM4tzcwTHWvTyKP9ULOZ8MSnnqmU0nBX1zLVFLFGY8jnF6Cary0dL0V7QQBCfuxqKFM6u2PQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-uint16array/0.2.2: - resolution: {integrity: sha512-w3+HeTiXGLJGw5nCqr0WbvgArNMEj7ulED1Yd19xXbmmk2W1ZUB+g9hJDOQTiKsTU4AVyH4/As+aA8eDVmWtmg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-uint32array/0.2.2: - resolution: {integrity: sha512-3F4nIHg1Qp0mMIsImWUC8DwQ3qBK5vdIJTjS2LufLbFBhHNmv5kK1yJiIXQDTLkENU0STZe05TByo01ZNLOmDQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-is-uint8array/0.2.2: - resolution: {integrity: sha512-51WnDip6H2RrN0CbqWmfqySAjam8IZ0VjlfUDc3PtcgrZGrKKjVgyHAsT/L3ZDydwF+aB94uvYJu5QyrCPNaZw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/assert-tools-array-function/0.2.2: - resolution: {integrity: sha512-FYeT7X9x0C8Nh+MN6IJUDz+7i7yB6mio2/SDlrvyepjyPSU/cfHfwW0GEOnQhxZ+keLZC/YqDD930WjRODwMdA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-array': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/string-format': 0.2.2 - dev: false - - /@stdlib/boolean-ctor/0.2.2: - resolution: {integrity: sha512-qIkHzmfxDvGzQ3XI9R7sZG97QSaWG5TvWVlrvcysOGT1cs6HtQgnf4D//SRzZ52VLm8oICP+6OKtd8Hpm6G7Ww==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/complex-float32-ctor/0.0.2: - resolution: {integrity: sha512-QsTLynhTRmDT0mSkfdHj0FSqQSxh2nKx+vvrH3Y0/Cd/r0WoHFZwyibndDxshfkf9B7nist8QKyvV82I3IZciA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-number': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/number-float64-base-to-float32': 0.2.2 - '@stdlib/string-format': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-define-property': 0.2.4 - dev: false - - /@stdlib/complex-float32-reim/0.1.2: - resolution: {integrity: sha512-24H+t1xwQF6vhOoMZdDA3TFB4M+jb5Swm/FwNaepovlzVIG2NlthUZs6mZg1T3oegqesIRQRwhpn4jIPjuGiTw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float32': 0.2.2 - '@stdlib/complex-float32-ctor': 0.0.2 - dev: false - - /@stdlib/complex-float32/0.2.1: - resolution: {integrity: sha512-tp83HfJzcZLK7/6P6gZPcAa/8F/aHS7gBHgB6ft45d/n6oE+/VbnyOvsJKanRv8S96kBRj8xkvlWHz4IiBrT0Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-number': 0.2.2 - '@stdlib/number-float64-base-to-float32': 0.2.2 - '@stdlib/string-format': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-define-property': 0.2.4 - dev: false - - /@stdlib/complex-float64-ctor/0.0.3: - resolution: {integrity: sha512-oixCtBif+Uab2rKtgedwQTbQTEC+wVSu4JQH935eJ8Jo0eL6vXUHHlVrkLgYKlCDLvq5px1QQn42Czg/ixh6Gw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-number': 0.2.2 - '@stdlib/complex-float32-ctor': 0.0.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/string-format': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-define-property': 0.2.4 - dev: false - - /@stdlib/complex-float64-reim/0.1.2: - resolution: {integrity: sha512-q6RnfgbUunApAYuGmkft1oOM3x3xVMVJwNRlRgfIXwKDb8pYt+S/CeIwi3Su5SF6ay3AqA1s+ze7m21osXAJyw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/complex-float64-ctor': 0.0.3 - dev: false - - /@stdlib/complex-float64/0.2.1: - resolution: {integrity: sha512-vN9GqlSaonoREf8/RIN9tfNLnkfN4s7AI0DPsGnvc1491oOqq9UqMw8rYTrnxuum9/OaNAAUqDkb5GLu5uTveQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-number': 0.2.2 - '@stdlib/complex-float32': 0.2.1 - '@stdlib/string-format': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-define-property': 0.2.4 - dev: false - - /@stdlib/complex-reim/0.2.1: - resolution: {integrity: sha512-67nakj+HwBRx/ha3j/sLbrMr2hwFVgEZtaczOgn1Jy/cU03lKvNbMkR7QI9s+sA+b+A3yJB3ob8ZQSqh3D1+dA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/complex-float64': 0.2.1 - dev: false - - /@stdlib/complex-reimf/0.2.1: - resolution: {integrity: sha512-6HyPPmo0CEHoBjOg2w70mMFLcFEunM78ljnW6kf1OxjM/mqMaBM1NRpDrQoFwCIdh1RF1ojl3JR0YLllEf0qyQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float32': 0.2.2 - '@stdlib/complex-float32': 0.2.1 - dev: false - - /@stdlib/constants-float32-max/0.2.2: - resolution: {integrity: sha512-uxvIm/KmIeZP4vyfoqPd72l5/uidnCN9YJT3p7Z2LD8hYN3PPLu6pd/5b51HMFLwfkZ27byRJ9+YK6XnneJP0Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float32-smallest-normal/0.2.2: - resolution: {integrity: sha512-2qkGjGML2/8P9YguHnac2AKXLbfycpYdCxKmuXQdAVzMMNCJWjHoIqZMFG29WBEDBOP057X+48S6WhIqoxRpWA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-e/0.2.2: - resolution: {integrity: sha512-7fxHaABwosbUzpBsw6Z9Dd9MqUYne8x+44EjohVcWDr0p0mHB/DXVYEYTlwEP/U/XbRrKdO3jUG6IO/GsEjzWg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-eps/0.2.2: - resolution: {integrity: sha512-61Pb2ip9aPhHXxiCn+VZ0UVw2rMYUp0xrX93FXyB3UTLacrofRKLMKtbV0SFac4VXx5igv2+0G+h6G/fwCgjyw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-eulergamma/0.2.2: - resolution: {integrity: sha512-XsuVud0d1hLTQspFzgUSH2e3IawTXLlJi2k4Vg0Nn6juulxfNO9PnAGtHz+p1BynYF/YwN+qhKnISQxrN31rsQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-exponent-bias/0.2.2: - resolution: {integrity: sha512-zLWkjzDYHSsBsXB/4mwHysOGl64JS3XBt/McjvjCLc/IZpfsUNFxLCl7oVCplXzYYHcQj/RfEBFy6cxQ6FvdpQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-fourth-pi/0.2.2: - resolution: {integrity: sha512-j0NOg45ouibms4ML8pfS/eDrurdtnhJTNPCGQM4mg3X+1ljsuO0pvkpVCvuz29t5J23KTcfGBXXr90ikoBmjlw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-gamma-lanczos-g/0.2.2: - resolution: {integrity: sha512-hCaZbZ042htCy9mlGrfUEbz4d0xW/DLdr3vHs5KiBWU+G+WHVH33vubSnEoyT0ugWpAk2ZqWXe/V8sLGgOu0xg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-half-ln-two/0.2.2: - resolution: {integrity: sha512-yv1XhzZR2AfJmnAGL0kdWlIUhc/vqdWol+1Gq2brXPVfgqbUmJu5XZuuK+jZA2k+fHyvRHNEwQRv9OPnOjchFg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-half-pi/0.2.2: - resolution: {integrity: sha512-lM3SiDsZCKiuF5lPThZFFqioIwh1bUiBUnnDMLB04/QkVRCAaXUo+dsq2hOB6iBhHoYhiKds6T+PsHSBlpqAaA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-high-word-abs-mask/0.2.2: - resolution: {integrity: sha512-YtYngcHlw9qvOpmsSlkNHi6cy/7Y7QkyYh5kJbDvuOUXPDKa3rEwBln4mKjbWsXhmmN0bk7TLypH7Ryd/UAjUQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-high-word-exponent-mask/0.2.2: - resolution: {integrity: sha512-LhYUXvpnLOFnWr8ucHA9N/H75VxcS2T9EoBDTmWBZoKj2Pg0icGVDmcNciRLIWbuPA9osgcKpxoU+ADIfaipVA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-high-word-sign-mask/0.2.1: - resolution: {integrity: sha512-Fep/Ccgvz5i9d5k96zJsDjgXGno8HJfmH7wihLmziFmA2z9t7NSacH4/BH4rPJ5yXFHLkacNLDxaF1gO1XpcLA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-high-word-significand-mask/0.2.2: - resolution: {integrity: sha512-eDDyiQ5PR1/qyklrW0Pus0ZopM7BYjkWTjqhSHhj0DibH6UMwSMlIl4ddCh3VX37p5eByuAavnaPgizk5c9mUw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-ln-sqrt-two-pi/0.2.2: - resolution: {integrity: sha512-C9YS9W/lvv54wUC7DojQSRH9faKw0sMAM09oMRVm8OOYNr01Rs1wXeSPStl9ns4qiV/G13vZzd1I3nGqgqihbw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-ln-two/0.2.2: - resolution: {integrity: sha512-EQ8EJ6B1wPfuhva0aApKIsF7lTna++txV4AUzL2wTfwDHw6RzWpA44u+k54KnLF8ZXUNIYDNQHHvtzdfKrFzCA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-max-base2-exponent-subnormal/0.2.1: - resolution: {integrity: sha512-D1wBNn54Hu2pK6P/yBz0FtPBI3/7HdgK8igYjWDKWUKzC92R/6PHZ9q5NzedcGxoBs8MUk1zNpP0tZyYj9Y4YQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-max-base2-exponent/0.2.2: - resolution: {integrity: sha512-KmDe98pJ2HXz2SbqyFfSDhlSSVD7JssjbZ5K11HEK2avqMcoCbdHH20T+6/TpA01VqaK8dLbeyphOfALcDdMKA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-max-ln/0.2.2: - resolution: {integrity: sha512-FPAEGjnoQMDPWJbCyyto7HWQ/SY2jjD8IkjyD8aOwENqbswjCbOINXRiK2ar27OOXG7Dv7CCpFpoorTxv0gmfA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-max-safe-integer/0.2.2: - resolution: {integrity: sha512-d+sxmxhkt980SDFhnnRDSpujPQTv4nEt5Ox3L86HgYZU4mQU/wbzYVkMuHIANW9x3ehww5blnGXTKYG9rQCXAw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-max-safe-nth-factorial/0.1.0: - resolution: {integrity: sha512-sppIfkBbeyKNwfRbmNFi5obI7Q+IJCQzfWKYqvzmEJVOkmEg6hhtEeFc8zZJGCU7+Pndc3M2wdbTT5a3rhamHw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-max/0.2.2: - resolution: {integrity: sha512-S3kcIKTK65hPqirziof3KTYqfFKopgaTnaiDlDKdzaCzBZ5qkrAcRd4vl+W1KHoZruUyWC2/RYZUa/8+h075TQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-min-base2-exponent-subnormal/0.2.1: - resolution: {integrity: sha512-fTXfvctXWj/48gK+gbRBrHuEHEKY4QOJoXSGp414Sz6vUxHusHJJ686p8ze3XqM7CY6fmL09ZgdGz/uhJl/7lw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-min-base2-exponent/0.2.2: - resolution: {integrity: sha512-YZmBiKik6LbWB4EOZ/ZUs/u6OIF742xNK8mhEqL0OEN4NuJe3OdErpOic6KjMmHjQuqCXdFoSqsWZaFHcIN7HA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-min-ln/0.2.2: - resolution: {integrity: sha512-N1Sxjo3uTdEIpHeG2TzaX06UuvpcKHvjYKpIMhJSajbxvfVDURHlc9kIpfbP9C9/YYoCy0FvewA/kvbqNaYypA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-ninf/0.2.2: - resolution: {integrity: sha512-Iu+wZs/vgudAKVg9FEcRY3FadkmvsWuq/wJ3jIHjhaP5xcnoF3XJUO4IneEndybHwehfJL65NShnDsJcg1gicw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/number-ctor': 0.2.2 - dev: false - - /@stdlib/constants-float64-pi/0.2.2: - resolution: {integrity: sha512-ix34KmpUQ0LUM++L6avLhM9LFCcGTlsUDyWD/tYVGZBiIzDS3TMKShHRkZvC+v87fuyYNPoxolYtk5AlbacI6g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-pinf/0.2.2: - resolution: {integrity: sha512-UcwnWaSkUMD8QyKADwkXPlY7yOosCPZpE2EDXf/+WOzuWi5vpsec+JaasD5ggAN8Rv8OTVmexTFs1uZfrHgqVQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-smallest-normal/0.2.2: - resolution: {integrity: sha512-GXNBkdqLT9X+dU59O1kmb7W5da/RhSXSvxx0xG5r7ipJPOtRLfTXGGvvTzWD4xA3Z5TKlrEL6ww5sph9BsPJnA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-smallest-subnormal/0.2.2: - resolution: {integrity: sha512-KuF+scDOsP0okx8RLF+q3l1RheaYChf+u/HbhzFbz82GeCIdIVp86UMwoBgfn8AT8cnR5SrtvLtQw15MGfa/vg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-sqrt-eps/0.2.2: - resolution: {integrity: sha512-X7LnGfnwNnhiwlY+zd3FX6zclsx61MaboGTNAAdaV78YjBDTdGdWMHk5MQo1U17ryPlhdGphOAejhDHeaSnTXQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-sqrt-two-pi/0.2.2: - resolution: {integrity: sha512-I8Ylr64x8AFSQ2hFBT8szuIBAy2wqPx69taJMzfcmuM5SnSbS8SE/H19YnCimZErVFo4bz0Rh8Fp3edN4i6teQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-sqrt-two/0.2.2: - resolution: {integrity: sha512-iqqouCuS9pUhjD91i5siScxLDtQTF1HsSZor6jaZRviMiOjCj/mjzxxTFHWUlU/rxHMBBhj/u7i12fv6a7dCAQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-float64-two-pi/0.2.2: - resolution: {integrity: sha512-cyXuwYOersVsA8tDSJ0ocMbtOc5KGxjlGvYC4vrpLQVkgNpxcGbA57n6JvaGmNk7+InXXbQ7qhTWGbTNgafcLQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-int32-max/0.2.1: - resolution: {integrity: sha512-vKtp3q/HdAeGG8BJBZdNzFrYpVQeleODgvOxh9Pn/TX1Ktjc50I9TVl7nTVWsT2QnacruOorILk2zNsdgBHPUQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-int32-max/0.3.0: - resolution: {integrity: sha512-jYN84QfG/yP2RYw98OR6UYehFFs0PsGAihV6pYU0ey+WF9IOXgSjRP56KMoZ7ctHwl4wsnj9I+qB2tGuEXr+pQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-uint16-max/0.2.2: - resolution: {integrity: sha512-qaFXbxgFnAkt73P5Ch7ODb0TsOTg0LEBM52hw6qt7+gTMZUdS0zBAiy5J2eEkTxA9rD9X3nIyUtLf2C7jafNdw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-uint32-max/0.2.2: - resolution: {integrity: sha512-2G44HQgIKDrh3tJUkmvtz+eM+uwDvOMF+2I3sONcTHacANb+zP7la4LDYiTp+HFkPJyfh/kPapXBiHpissAb1A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/constants-uint8-max/0.2.2: - resolution: {integrity: sha512-ZTBQq3fqS/Y4ll6cPY5SKaS266EfmKP9PW3YLJaTELmYIzVo9w2RFtfCqN05G3olTQ6Le9MUEE/C6VFgZNElDQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/error-tools-fmtprodmsg/0.2.2: - resolution: {integrity: sha512-2IliQfTes4WV5odPidZFGD5eYDswZrPXob7oOu95Q69ERqImo8WzSwnG2EDbHPyOyYCewuMfM5Ha6Ggf+u944Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/fs-exists/0.2.2: - resolution: {integrity: sha512-uGLqc7izCIam2aTyv0miyktl4l8awgRkCS39eIEvvvnKIaTBF6pxfac7FtFHeEQKE3XhtKsOmdQ/yJjUMChLuA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/fs-resolve-parent-path/0.2.2: - resolution: {integrity: sha512-ZG78ouZc+pdPLtU+sSpYTvbKTiLUgn6NTtlVFYmcmkYRFn+fGOOakwVuhYMcYG6ti10cLD6WzB/YujxIt8f+nA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-own-property': 0.2.2 - '@stdlib/assert-is-function': 0.2.2 - '@stdlib/assert-is-plain-object': 0.2.2 - '@stdlib/assert-is-string': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/fs-exists': 0.2.2 - '@stdlib/process-cwd': 0.2.2 - '@stdlib/string-format': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/function-ctor/0.2.2: - resolution: {integrity: sha512-qSn1XQnnhgCSYBfFy4II0dY5eW4wdOprgDTHcOJ3PkPWuZHDC1fXZsok1OYAosHqIiIw44zBFcMS/JRex4ebdQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/math-base-assert-is-even/0.2.3: - resolution: {integrity: sha512-cziGv8F/aNyfME7Wx2XJjnYBnf9vIeh8yTIzlLELd0OqGHqfsHU5OQxxcl9x5DbjZ1G/w0lphWxHFHYCuwFCHw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-assert-is-infinite/0.2.2: - resolution: {integrity: sha512-4zDZuinC3vkXRdQepr0ZTwWX3KgM0VIWqYthOmCSgLLA87L9M9z9MgUZL1QeYeYa0+60epjDcQ8MS3ecT70Jxw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-assert-is-integer/0.2.5: - resolution: {integrity: sha512-Zi8N66GbWtSCR3OUsRdBknjNlX+aBN8w6CaVEP5+Jy/a7MgMYzevS52TNS5sm8jqzKBlFhZlPLex+Zl2GlPvSA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-assert-is-nan/0.2.2: - resolution: {integrity: sha512-QVS8rpWdkR9YmHqiYLDVLsCiM+dASt/2feuTl4T/GSdou3Y/PS/4j/tuDvCDoHDNfDkULUW+FCVjKYpbyoeqBQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-assert-is-negative-zero/0.2.2: - resolution: {integrity: sha512-WvKNuBZ6CDarOTzOuFLmO1jwZnFD+butIvfD2Ws6SsuqSCiWOaF4OhIckqPzo1XEdkqqhRNPqBxqc0D+hsEYVA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-assert-is-odd/0.2.1: - resolution: {integrity: sha512-V4qQuCO6/AA5udqlNatMRZ8R/MgpqD8mPIkFrpSZJdpLcGYSz815uAAf3NBOuWXkE2Izw0/Tg/hTQ+YcOW2g5g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-assert-is-even': 0.2.3 - dev: false - - /@stdlib/math-base-assert-is-odd/0.3.0: - resolution: {integrity: sha512-V44F3xdR5/bHXqqYvE/AldLnVmijLr/rgf7EjnJXXDQLfPCgemy0iHTFl19N68KG1YO9SMPdyOaNjh4K0O9Qqw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-assert-is-even': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-assert-is-positive-zero/0.2.2: - resolution: {integrity: sha512-mMX5xsemKpHRAgjpVJCb3eVZ3WIkZh6KnHQH8i8n4vI44pcdpN5rcTdEAMlhLjxT/rT7H2wq85f7/FRsq9r9rw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-napi-binary/0.2.1: - resolution: {integrity: sha512-ewGarSRaz5gaLsE17yJ4me03e56ICgPAA0ru0SYFCeMK2E5Z4Z2Lbu7HAQTTg+8XhpoaZSw0h2GJopTV7PCKmw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/complex-float32': 0.2.1 - '@stdlib/complex-float64': 0.2.1 - '@stdlib/complex-reim': 0.2.1 - '@stdlib/complex-reimf': 0.2.1 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-napi-binary/0.3.0: - resolution: {integrity: sha512-bhwsmGMOMN1srcpNAFRjDMSXe9ue1s/XmaoBBlqcG6S2nqRQlIVnKKH4WZx4hmC1jDqoFXuNPJGE47VXpVV+mA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/complex-float32-ctor': 0.0.2 - '@stdlib/complex-float32-reim': 0.1.2 - '@stdlib/complex-float64-ctor': 0.0.3 - '@stdlib/complex-float64-reim': 0.1.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-napi-unary/0.2.3: - resolution: {integrity: sha512-BCyJmpq2S8EFo2yMt1z+v1EL7nn8RHcM6jn7fa8n3BTP679K0MSlawIh3A0CFogfrTdjPM4G44VO1ddsdLExcg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/complex-float32-ctor': 0.0.2 - '@stdlib/complex-float32-reim': 0.1.2 - '@stdlib/complex-float64-ctor': 0.0.3 - '@stdlib/complex-float64-reim': 0.1.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-abs/0.2.2: - resolution: {integrity: sha512-cw5CXj05c/L0COaD9J+paHXwmoN5IBYh+Spk0331f1pEMvGxSO1KmCREZaooUEEFKPhKDukEHKeitja2yAQh4Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-acos/0.2.3: - resolution: {integrity: sha512-f66Ikq0E3U5XQm6sTu4UHwP3TmcPrVgSK/mZTvg2JenswZ6qPtGO1A8KHZ5+/5bk1TSc9EW4zDGUqWG7mGzT4Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-fourth-pi': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-asin': 0.2.3 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-asin/0.2.3: - resolution: {integrity: sha512-Ju1UFJspOOL630SqBtVmUh3lHv5JMu1szcAgx7kQupJwZiwWljoVQ5MmxlNY4l3nGM5oMokenlqTDNXOau43lw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-fourth-pi': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-beta/0.2.1: - resolution: {integrity: sha512-/crN/ptCu7ld7KodGkYUJIweUTHdxO5mw+rgkrMqNVqJ83QQPd1czB6hvNYFLfmhy3ckj7t/UYoYhhg/x/Wd7g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-e': 0.2.2 - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-special-pow': 0.2.1 - '@stdlib/math-base-special-sqrt': 0.2.2 - dev: false - - /@stdlib/math-base-special-beta/0.3.0: - resolution: {integrity: sha512-SWUF1AZLqaEJ8g1Lj0/UOfj955AsIS3QPYH/ZMijELVxCwmp7VRgalI0AxMM09IraJt1cH5WrSwSnouH1WC3ZQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-e': 0.2.2 - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-special-pow': 0.3.0 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-betainc/0.2.2: - resolution: {integrity: sha512-95tzDgn5d9RV9al4gxHwKfszd9M6AizlpnhAiwIi0JwqcO+OY3xgbABWal4/H09Tb8DaC9jDqiyGuyPuB0iDew==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-special-kernel-betainc': 0.2.2 - dev: false - - /@stdlib/math-base-special-binomcoef/0.2.3: - resolution: {integrity: sha512-RxnQ/QGgKUeqTvBL+7IH8rNKQYCfGs0I3PsFYfb0e9V1O2yIVvthURUpzjukurZM89JRapK1dN6aeZ5UM71Zgw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-max-safe-integer': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-odd': 0.3.0 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-gcd': 0.2.1 - dev: false - - /@stdlib/math-base-special-ceil/0.2.2: - resolution: {integrity: sha512-zGkDaMcPrxQ9Zo+fegf2MyI8UPIrVTK5sc/FgCN9qdwEFJTKGLsBd249T3xH7L2MDxx5JbIMGrr6L4U4uEm2Hw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-copysign/0.2.2: - resolution: {integrity: sha512-m9nWIQhKsaNrZtS2vIPeToWDbzs/T0d0NWy7gSci38auQVufSbF6FYnCKl0f+uwiWlh5GYXs0uVbyCp7FFXN+A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/constants-float64-high-word-sign-mask': 0.2.1 - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/number-float64-base-from-words': 0.2.2 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-cos/0.2.1: - resolution: {integrity: sha512-Yre+ASwsv4pQJk5dqY6488ZfmYDA6vtUTdapAVjCx28NluSFhXw1+S8EmsqnzYnqp/4x7Y1H7V2UPZfw+AdnbQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-special-kernel-cos': 0.2.3 - '@stdlib/math-base-special-kernel-sin': 0.2.3 - '@stdlib/math-base-special-rempio2': 0.2.1 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - dev: false - - /@stdlib/math-base-special-erfc/0.2.4: - resolution: {integrity: sha512-tVI+mMnW+oDfQXwoH86sZ8q4ximpUXX6wZFCYZB6KcO5GXeKuvK74DnU0YyIm+sTV+r9WJiTSBEW9iVQLZOkzg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/number-float64-base-set-low-word': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-erfcinv/0.2.3: - resolution: {integrity: sha512-B8u7WZiIh0+rX8VWNOwvjPWpmeKBHIQoJtIigUseBgbch/rmgV43k63MCkjh2u+V2SmcFo38yD94qJg5bYyWeA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-exp/0.2.4: - resolution: {integrity: sha512-G6pZqu1wA4WwBj7DcnztA+/ro61wXJUTpKFLOwrIb2f/28pHGpA//Lub+3vAk6/ksAkhJ+qM/dfdM2ue7zLuEw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-ldexp': 0.2.3 - '@stdlib/math-base-special-trunc': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-expm1/0.2.3: - resolution: {integrity: sha512-uJlYZjPjG9X8owuwp1h1/iz9xf21v3dlyEAuutQ0NoacUDzZKVSCbQ3Of0i2Mujn+4N+kjCvEeph6cqhfYAl+A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-half-ln-two': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/number-float64-base-from-words': 0.2.2 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-set-high-word': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-factorial/0.2.1: - resolution: {integrity: sha512-uqsANeW4gHFzhgDrV9X0INEwO74MPzQvDVXbxY9+b0E13Vq2HHCi0GqdtPOWXdhOCUk8RkLRs9GizU3X6Coy8A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-gamma': 0.2.1 - dev: false - - /@stdlib/math-base-special-factorial/0.3.0: - resolution: {integrity: sha512-tXdXqstF4gmy4HpzALo3Bhkj2UQSlyk+PU3alWXZH5XtKUozHuXhQDnak+2c4w0JqnKxHq4mnaR2qgjfkDNZcA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-max-safe-nth-factorial': 0.1.0 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-gamma': 0.2.1 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-floor/0.2.3: - resolution: {integrity: sha512-zTkxVRawtWwJ4NmAT/1e+ZsIoBj1JqUquGOpiNVGNIKtyLOeCONZlZSbN7zuxPkshvmcSjpQ/VLKR8Tw/37E9A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-fmod/0.1.0: - resolution: {integrity: sha512-osHwmEOT5MPWOXRx8y3wKCp362eGHIcJRt8LARJJICr/qTZlu1HMnZnbwuhfy1NIQzpJ8aLOhEdl2PrProTt3A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/constants-float64-high-word-exponent-mask': 0.2.2 - '@stdlib/constants-float64-high-word-sign-mask': 0.2.1 - '@stdlib/constants-float64-high-word-significand-mask': 0.2.2 - '@stdlib/constants-float64-min-base2-exponent': 0.2.2 - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/number-float64-base-from-words': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-gamma-delta-ratio/0.2.2: - resolution: {integrity: sha512-lan+cfafH7aoyUxa88vLO+pYwLA+0uiyVFmCumxDemQUboCrTiNCYhBjONFGI/ljE3RukHoE3ZV4AccIcx526A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-e': 0.2.2 - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/constants-float64-gamma-lanczos-g': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-factorial': 0.2.1 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-gamma': 0.2.1 - '@stdlib/math-base-special-gamma-lanczos-sum': 0.3.0 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-special-pow': 0.3.0 - dev: false - - /@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled/0.3.0: - resolution: {integrity: sha512-hScjKZvueOK5piX84ZLIV3ZiYvtvYtcixN8psxkPIxJlN7Bd5nAmSkEOBL+T+LeW2RjmdEMXFFJMF7FsK1js/Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-gamma-lanczos-sum/0.3.0: - resolution: {integrity: sha512-q13p6r7G0TmbD54cU8QgG8wGgdGGznV9dNKiNszw+hOqCQ+1DqziG8I6vN64R3EQLP7QN4yVprZcmuXSK+fgsg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-gamma/0.2.1: - resolution: {integrity: sha512-Sfq1HnVoL4kN9EDHH3YparEAF0r7QD5jNFppUTOXmrqkofgImSl5tLttttnr2I7O9zsNhYkBAiTx9q0y25bAiA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-eulergamma': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/constants-float64-sqrt-two-pi': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-negative-zero': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-pow': 0.2.1 - '@stdlib/math-base-special-sin': 0.2.1 - dev: false - - /@stdlib/math-base-special-gamma/0.3.0: - resolution: {integrity: sha512-YfW+e5xuSDoUxgpquXPrFtAbdwOzE7Kqt7M0dcAkDNot8/yUn+QmrDGzURyBVzUyhRm9SaC9bACHxTShdJkcuA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-eulergamma': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/constants-float64-sqrt-two-pi': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-negative-zero': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-pow': 0.3.0 - '@stdlib/math-base-special-sin': 0.2.1 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-gamma1pm1/0.2.2: - resolution: {integrity: sha512-lNT1lk0ifK2a/ta3GfR5V8KvfgkgheE44n5AQ/07BBfcVBMiAdqNuyjSMeWqsH/zVGzjU6G8+kLBzmaJXivPXQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-expm1': 0.2.3 - '@stdlib/math-base-special-gamma': 0.2.1 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - dev: false - - /@stdlib/math-base-special-gammainc/0.2.2: - resolution: {integrity: sha512-ffKZFiv/41SXs2Xms7IW3lPnICR898yfWAidq5uKjOLgRb3wrzNjq0sZ6EAVXvdBwyGULvSjyud28PpVhDLv3A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-e': 0.2.2 - '@stdlib/constants-float64-gamma-lanczos-g': 0.2.2 - '@stdlib/constants-float64-max': 0.2.2 - '@stdlib/constants-float64-max-ln': 0.2.2 - '@stdlib/constants-float64-min-ln': 0.2.2 - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/constants-float64-sqrt-eps': 0.2.2 - '@stdlib/constants-float64-sqrt-two-pi': 0.2.2 - '@stdlib/constants-float64-two-pi': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-erfc': 0.2.4 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-gamma': 0.3.0 - '@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled': 0.3.0 - '@stdlib/math-base-special-gamma1pm1': 0.2.2 - '@stdlib/math-base-special-gammaln': 0.2.2 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-special-log1pmx': 0.2.3 - '@stdlib/math-base-special-max': 0.3.0 - '@stdlib/math-base-special-min': 0.2.3 - '@stdlib/math-base-special-pow': 0.3.0 - '@stdlib/math-base-special-powm1': 0.3.1 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/math-base-tools-continued-fraction': 0.2.2 - '@stdlib/math-base-tools-evalpoly': 0.2.2 - '@stdlib/math-base-tools-sum-series': 0.2.2 - dev: false - - /@stdlib/math-base-special-gammaincinv/0.2.2: - resolution: {integrity: sha512-bIZ94ob1rY87seDWsvBTBRxp8Ja2Y46DLtQYuaylHUQuK+I2xKy8XKL2ZHPsOfuwhXRqm+q+91PDjPEAdH1dQw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float32-max': 0.2.2 - '@stdlib/constants-float32-smallest-normal': 0.2.2 - '@stdlib/constants-float64-ln-sqrt-two-pi': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/constants-float64-sqrt-two-pi': 0.2.2 - '@stdlib/constants-float64-two-pi': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-erfcinv': 0.2.3 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-gamma': 0.3.0 - '@stdlib/math-base-special-gammainc': 0.2.2 - '@stdlib/math-base-special-gammaln': 0.2.2 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-min': 0.2.3 - '@stdlib/math-base-special-pow': 0.3.0 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/math-base-tools-evalpoly': 0.2.2 - debug: 2.6.9 - dev: false - - /@stdlib/math-base-special-gammaln/0.2.2: - resolution: {integrity: sha512-opG6HUlspi/GLvQAr4pcwyAevm7BYuymlopgNZ1VulWUvksDpytalaX3zva0idlD2HvniKrDmzHngT1N9p0J1A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-sinpi': 0.2.1 - '@stdlib/math-base-special-trunc': 0.2.2 - dev: false - - /@stdlib/math-base-special-gcd/0.2.1: - resolution: {integrity: sha512-w10k9W176lDkbiDIwnmVr1nkTyypTQLwA3/CN9qEUmXh/u8NlxkSnDYBpArcWnxE0oFaIggw8sLJ58TuMvxMaw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/constants-int32-max': 0.2.1 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - dev: false - - /@stdlib/math-base-special-kernel-betainc/0.2.2: - resolution: {integrity: sha512-DQwQUWQkmZtjRgdvZ1yZOEdAYLQoEUEndbr47Z69Oe6AgwKwxxpZUh09h9imKheFCFHLVnwVUz20azIM5KifQw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-e': 0.2.2 - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/constants-float64-gamma-lanczos-g': 0.2.2 - '@stdlib/constants-float64-half-pi': 0.2.2 - '@stdlib/constants-float64-max': 0.2.2 - '@stdlib/constants-float64-max-ln': 0.2.2 - '@stdlib/constants-float64-min-ln': 0.2.2 - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/constants-float64-smallest-normal': 0.2.2 - '@stdlib/constants-int32-max': 0.3.0 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-asin': 0.2.3 - '@stdlib/math-base-special-beta': 0.3.0 - '@stdlib/math-base-special-binomcoef': 0.2.3 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-expm1': 0.2.3 - '@stdlib/math-base-special-factorial': 0.3.0 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-gamma': 0.3.0 - '@stdlib/math-base-special-gamma-delta-ratio': 0.2.2 - '@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled': 0.3.0 - '@stdlib/math-base-special-gammainc': 0.2.2 - '@stdlib/math-base-special-gammaln': 0.2.2 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-special-max': 0.3.0 - '@stdlib/math-base-special-maxabs': 0.3.0 - '@stdlib/math-base-special-min': 0.2.3 - '@stdlib/math-base-special-minabs': 0.2.3 - '@stdlib/math-base-special-pow': 0.3.0 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/math-base-tools-continued-fraction': 0.2.2 - '@stdlib/math-base-tools-sum-series': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/math-base-special-kernel-betaincinv/0.1.1: - resolution: {integrity: sha512-DZLALmQj0m3Wx8L8/na8Jj9vluNj4Z5DxmAPvnA1AWGYy7KsotmP4HXwgSTlsfbXeF3iGcrmworPOo4HJUSxIQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/constants-float64-half-pi': 0.2.2 - '@stdlib/constants-float64-max': 0.2.2 - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/constants-float64-smallest-normal': 0.2.2 - '@stdlib/constants-float64-smallest-subnormal': 0.2.2 - '@stdlib/constants-float64-sqrt-two': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-acos': 0.2.3 - '@stdlib/math-base-special-asin': 0.2.3 - '@stdlib/math-base-special-beta': 0.2.1 - '@stdlib/math-base-special-betainc': 0.2.2 - '@stdlib/math-base-special-cos': 0.2.1 - '@stdlib/math-base-special-erfcinv': 0.2.3 - '@stdlib/math-base-special-exp': 0.2.4 - '@stdlib/math-base-special-expm1': 0.2.3 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-gamma-delta-ratio': 0.2.2 - '@stdlib/math-base-special-gammaincinv': 0.2.2 - '@stdlib/math-base-special-kernel-betainc': 0.2.2 - '@stdlib/math-base-special-ldexp': 0.2.3 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-special-max': 0.2.1 - '@stdlib/math-base-special-min': 0.2.3 - '@stdlib/math-base-special-pow': 0.2.1 - '@stdlib/math-base-special-round': 0.2.1 - '@stdlib/math-base-special-signum': 0.2.2 - '@stdlib/math-base-special-sin': 0.2.1 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/math-base-tools-evalpoly': 0.2.2 - dev: false - - /@stdlib/math-base-special-kernel-cos/0.2.3: - resolution: {integrity: sha512-K5FbN25SmEc5Z89GejUkrZpqCv05ZX6D7g9SUFcKWFJ1fwiZNgxrF8q4aJtGDQhuV3q66C1gaKJyQeLq/OI8lQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-kernel-sin/0.2.3: - resolution: {integrity: sha512-PFnlGdapUaCaMXqZr+tG5Ioq+l4TCyGE5e8XEYlsyhNDILf0XE2ghHzlROA/wW365Arl4sPLWUoo4oH98DUPqw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-ldexp/0.2.3: - resolution: {integrity: sha512-yD4YisQGVTJmTJUshuzpaoq34sxJtrU+Aw4Ih39mzgXiQi6sh3E3nijB8WXDNKr2v05acUWJ1PRMkkJSfu16Kg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-max-base2-exponent': 0.2.2 - '@stdlib/constants-float64-max-base2-exponent-subnormal': 0.2.1 - '@stdlib/constants-float64-min-base2-exponent-subnormal': 0.2.1 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-copysign': 0.2.2 - '@stdlib/number-float32-base-to-word': 0.2.2 - '@stdlib/number-float64-base-exponent': 0.2.2 - '@stdlib/number-float64-base-from-words': 0.2.2 - '@stdlib/number-float64-base-normalize': 0.2.3 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-ln/0.2.4: - resolution: {integrity: sha512-lSB47USaixrEmxwadT0/yByvTtxNhaRwN0FIXt5oj38bsgMXGW4V8xrANOy1N+hrn3KGfHJNDyFPYbXWVdMTIw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-set-high-word': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-log1p/0.2.3: - resolution: {integrity: sha512-1Pu3attNR+DcskIvhvyls+2KRZ0UCHQ/jP2tvgFI9bWDCgb4oEimXPzjFteGNg9Mj6WlAW2b9wU9tHt3bp8R3g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-set-high-word': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-log1pmx/0.2.3: - resolution: {integrity: sha512-HfjDXcbFztm/GQRrn7a9FMYS0rm/4VPXWa50sYQzBHSYaEwYv5Y1awaZz+cA/ncuqAq1Mw0dfcwEMNRmZtnxEQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-log1p': 0.2.3 - '@stdlib/math-base-tools-sum-series': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-max/0.2.1: - resolution: {integrity: sha512-jsA3x5azfclbULDFwvHjNlB2nciUDHwrw7qHP/QlSdJi47E1iBDNYdzhlOa3JKzblbrITpzgZEsGBcpCinEInQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-positive-zero': 0.2.2 - dev: false - - /@stdlib/math-base-special-max/0.3.0: - resolution: {integrity: sha512-yXsmdFCLHRB24l34Kn1kHZXHKoGqBxPY/5Mi+n5qLg+FwrX85ZG6KGVbO3DfcpG1NxDTcEKb1hxbUargI0P5fw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-positive-zero': 0.2.2 - '@stdlib/math-base-napi-binary': 0.2.1 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-maxabs/0.3.0: - resolution: {integrity: sha512-SDj+rGD9itZ/YG2hKzhLX4Tf13SNJdOyNsMy1ezjec6Az3xJXKzv2wJAJIteo0KF6jQnEDkI/F6OIF65MY+o0g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-binary': 0.2.1 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-max': 0.2.1 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-min/0.2.3: - resolution: {integrity: sha512-tNrKnkcHCRVWzteZJpZ/xql9B6N6EzecnUVizDYqG9y66bOVtI+TADcQ5I/bijEwAIi2BjrIVeq/TBEgQEQBkw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-negative-zero': 0.2.2 - '@stdlib/math-base-napi-binary': 0.2.1 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-minabs/0.2.3: - resolution: {integrity: sha512-IV7PSL09S2GHmsxxtFgebPEwLm/wHnC1e1ulP8Uiuo2zinOiv4NXy2tpf9T+nq95d0ICFMnr9IGxFs6Nd74hRw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-binary': 0.2.1 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-min': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-pow/0.2.1: - resolution: {integrity: sha512-7SvgVzDkuilZKrHh4tPiXx9fypF/V7PSvAcUVjvcRj5kVEwv/15RpzlmCJlT9B20VPSx4gJ1S0UIA6xgmYFuAg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/constants-float64-high-word-significand-mask': 0.2.2 - '@stdlib/constants-float64-ln-two': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-odd': 0.2.1 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-copysign': 0.2.2 - '@stdlib/math-base-special-ldexp': 0.2.3 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-set-high-word': 0.2.2 - '@stdlib/number-float64-base-set-low-word': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/number-uint32-base-to-int32': 0.2.2 - dev: false - - /@stdlib/math-base-special-pow/0.3.0: - resolution: {integrity: sha512-sMDYRUYGFyMXDHcCYy7hE07lV7jgI6rDspLMROKyESWcH4n8j54XE4/0w0i8OpdzR40H895MaPWU/tVnU1tP6w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/constants-float64-high-word-significand-mask': 0.2.2 - '@stdlib/constants-float64-ln-two': 0.2.2 - '@stdlib/constants-float64-ninf': 0.2.2 - '@stdlib/constants-float64-pinf': 0.2.2 - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-integer': 0.2.5 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-assert-is-odd': 0.3.0 - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-copysign': 0.2.2 - '@stdlib/math-base-special-ldexp': 0.2.3 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-set-high-word': 0.2.2 - '@stdlib/number-float64-base-set-low-word': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/number-uint32-base-to-int32': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-powm1/0.3.1: - resolution: {integrity: sha512-Pz7e2JlZH9EktJCDuyFPoT9IxMUSiZiJquyh2xB92NQQi9CAIdyaPUryNo36LxG65bne5GZF47MeiWCE8oWgiA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-binary': 0.3.0 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-expm1': 0.2.3 - '@stdlib/math-base-special-fmod': 0.1.0 - '@stdlib/math-base-special-ln': 0.2.4 - '@stdlib/math-base-special-pow': 0.3.0 - '@stdlib/math-base-special-trunc': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-rempio2/0.2.1: - resolution: {integrity: sha512-ErV5EAe3SQCSijg4Pi4Z0sRPOGrODF3jkyCeiLM+iYj2TMOwDaOWQ0xCTME0p9G45TDrbZCLM5arxN83TfzgXQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-base-zeros': 0.2.2 - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/constants-float64-high-word-exponent-mask': 0.2.2 - '@stdlib/constants-float64-high-word-significand-mask': 0.2.2 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/math-base-special-ldexp': 0.2.3 - '@stdlib/math-base-special-round': 0.2.1 - '@stdlib/number-float64-base-from-words': 0.2.2 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/number-float64-base-get-low-word': 0.2.2 - dev: false - - /@stdlib/math-base-special-round/0.2.1: - resolution: {integrity: sha512-ibeKiN9z//6wS4H4uaa+vGnh/t1vJtZYXz+NqRVtwoP+nnE/mtL+fIrBlAnkIWVIH+smQPNNo8qsohjyGLBvUQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/math-base-special-signum/0.2.2: - resolution: {integrity: sha512-cszwgkfeMTnUiORRWdWv6Q/tpoXkXkMYNMoAFO5qzHTuahnDP37Lkn8fTmCEtgHEasg3Cm69xLbqP0UDuNPHyA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-sin/0.2.1: - resolution: {integrity: sha512-IQ6+bzfiZ6/VUn5DIe6iwCsYERE1pwtAOsAWkgNZ1Ih3FzXUxdEOyHtv1zraPrVUb8mR+V5q7OfAGy8TCTnkUg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-high-word-abs-mask': 0.2.2 - '@stdlib/constants-float64-high-word-exponent-mask': 0.2.2 - '@stdlib/math-base-special-kernel-cos': 0.2.3 - '@stdlib/math-base-special-kernel-sin': 0.2.3 - '@stdlib/math-base-special-rempio2': 0.2.1 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - dev: false - - /@stdlib/math-base-special-sinpi/0.2.1: - resolution: {integrity: sha512-Q3yCp1CoD7gemIILO28bU7iBn8OFiCgXm9vP/9q0tRBxmjtiUnjqbFd+3jRXdAmiCc/B/bPjwGBtVnCnrEMY9g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-pi': 0.2.2 - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/math-base-special-copysign': 0.2.2 - '@stdlib/math-base-special-cos': 0.2.1 - '@stdlib/math-base-special-sin': 0.2.1 - dev: false - - /@stdlib/math-base-special-sqrt/0.2.2: - resolution: {integrity: sha512-YWxe9vVE5blDbRPDAdZfU03vfGTBHy/8pLDa/qLz7SiJj5n5sVWKObdbMR2oPHF4c6DaZh4IYkrcHFleiY8YkQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-special-trunc/0.2.2: - resolution: {integrity: sha512-cvizbo6oFEbdiv7BrtEMODGW+cJcBgyAIleJnIpCf75C722Y/IZgWikWhACSjv4stxGywFubx85B7uvm3vLgwA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-unary': 0.2.3 - '@stdlib/math-base-special-ceil': 0.2.2 - '@stdlib/math-base-special-floor': 0.2.3 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/math-base-tools-continued-fraction/0.2.2: - resolution: {integrity: sha512-5dm72lTXwSVOsBsOLF57RZqqHehRd9X3HKdQ3WhOoHx7fNc0lxJJEDjtK8gMdV3NvfoER1MBiGbs2h23oaK5qw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-generator-support': 0.2.2 - '@stdlib/constants-float32-smallest-normal': 0.2.2 - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - dev: false - - /@stdlib/math-base-tools-evalpoly/0.2.2: - resolution: {integrity: sha512-vLvfkMkccXZGFiyI3GPf8Ayi6vPEZeHgENnoBDGC+eMIDIoVWmOpVWsjpUz8xtc5xGNsa1hKalSI40IrouHsYA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/function-ctor': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/math-base-tools-sum-series/0.2.2: - resolution: {integrity: sha512-P3X+jMONClp93ucJi1Up/x26uwL0kH20CMV9bLzcQyRY8Mceh7jPZuEwzGQR0jq/tJ/4J7AnHg4kdrx4Pd+BNA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-generator-support': 0.2.2 - '@stdlib/constants-float64-eps': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - dev: false - - /@stdlib/number-ctor/0.2.2: - resolution: {integrity: sha512-98pL4f1uiXVIw9uRV6t4xecMFUYRRTUoctsqDDV8MSRtKEYDzqkWCNz/auupJFJ135L1ejzkejh73fASsgcwKQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/number-float32-base-to-word/0.2.2: - resolution: {integrity: sha512-/I866ocLExPpAjgZnHAjeaBw3ZHg5tVPcRdJoTPEiBG2hwD/OonHdCsfB9lu6FxO6sbp7I9BR1JolCoEyrhmYg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float32': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-exponent/0.2.2: - resolution: {integrity: sha512-mYivBQKCuu54ulorf5A5rIhFaGPjGvmtkxhvK14q7gzRA80si83dk8buUsLpeeYsakg7yLn10RCVjBEP9/gm7Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.2.2 - '@stdlib/constants-float64-high-word-exponent-mask': 0.2.2 - '@stdlib/number-float64-base-get-high-word': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-from-words/0.2.2: - resolution: {integrity: sha512-SzMDXSnIDZ8l3PDmtN9TPKTf0mUmh83kKCtj4FisKTcTbcmUmT/ovmrpMTiqdposymjHBieNvGiCz/K03NmlAA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-get-high-word/0.2.2: - resolution: {integrity: sha512-LMNQAHdLZepKOFMRXAXLuq30GInmEdTtR0rO7Ka4F3m7KpYvw84JMyvZByMQHBu+daR6JNr2a/o9aFjmVIe51g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-get-low-word/0.2.2: - resolution: {integrity: sha512-VZjflvoQ9//rZwwuhl7uSLUnnscdIIYmBrHofnBHRjHwdLGUzSd9PM0iagtvI82OHw5QnydBYI4hohBeAAg+aQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-normalize/0.2.3: - resolution: {integrity: sha512-HT+3fhYZOEg2JgHBWS/ysc9ZveQZV10weKbtxhLHOsvceQVp1GbThsLik62mU2/3f96S9MgiVfPfSDI3jnBoYw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-smallest-normal': 0.2.2 - '@stdlib/math-base-assert-is-infinite': 0.2.2 - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-abs': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-set-high-word/0.2.2: - resolution: {integrity: sha512-bLvH15GJgX5URMaOOJAQgO8/dCJPYUQoXPZH7ecSC3XnnVMfWEf43knkjEGYCnWp4nro5hPRElbtdV4mKEjpUg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-set-low-word/0.2.2: - resolution: {integrity: sha512-E1pGjTwacJ+Tkt5rKQNdwitKnM1iDgMlulYosNdn6CtvU0Pkq359bNhscMscxehdY3MifwuJpuGzDWD2EGUXzQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - '@stdlib/number-float64-base-to-words': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-float64-base-to-float32/0.2.2: - resolution: {integrity: sha512-T5snDkVNZY6pomrSW/qLWQfZ9JHgqCFLi8jaaarfNj2o+5NMUuvvRifLUIacTm8/uC96xB0j3+wKTh1zbIV5ig==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float32': 0.2.2 - dev: false - - /@stdlib/number-float64-base-to-words/0.2.2: - resolution: {integrity: sha512-nkFHHXoMhb3vcfl7ZvzgiNdqBdBfbKxHtgvDXRxrNQoVmyYbnjljjYD489d2/TAhe+Zvn7qph6QLgTod3zaeww==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.2.2 - '@stdlib/array-uint32': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - '@stdlib/os-byte-order': 0.2.2 - '@stdlib/os-float-word-order': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - '@stdlib/utils-library-manifest': 0.2.2 - dev: false - - /@stdlib/number-uint32-base-to-int32/0.2.2: - resolution: {integrity: sha512-NPADfdHE/3VEifKDttXM24dRj5YQqxwh2wTRD8fQrpHeaWiMIUo8yDqWrrFNIdLVAcqjL2SwWpo4VJ7oKTYaIA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/object-ctor/0.2.1: - resolution: {integrity: sha512-HEIBBpfdQS9Nh5mmIqMk9fzedx6E0tayJrVa2FD7No86rVuq/Ikxq1QP7qNXm+i6z9iNUUS/lZq7BmJESWO/Zg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/os-byte-order/0.2.2: - resolution: {integrity: sha512-2y6rHAvZo43YmZu9u/E/7cnqZa0hNTLoIiMpV1IxQ/7iv03xZ45Z3xyvWMk0b7bAWwWL7iUknOAAmEchK/kHBA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-big-endian': 0.2.2 - '@stdlib/assert-is-little-endian': 0.2.2 - dev: false - - /@stdlib/os-float-word-order/0.2.2: - resolution: {integrity: sha512-5xpcEuxv/CudKctHS5czKdM7Bj/gC+sm/5R5bRPYyqxANM67t365j3v2v8rmmOxkEp9t0fa8Dggx8VmOkpJXaA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/os-byte-order': 0.2.2 - dev: false - - /@stdlib/process-cwd/0.2.2: - resolution: {integrity: sha512-8Q/nA/ud5d5PEzzG6ZtKzcOw+RMLm5CWR8Wd+zVO5vcPj+JD7IV7M2lBhbzfUzr63Torrf/vEhT3cob8vUHV/A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/regexp-extended-length-path/0.2.2: - resolution: {integrity: sha512-z3jqauEsaxpsQU3rj1A1QnOgu17pyW5kt+Az8QkoTk7wqNE8HhPikI6k4o7XBHV689rSFWZCl4c4W+7JAiNObQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/regexp-function-name/0.2.2: - resolution: {integrity: sha512-0z/KRsgHJJ3UQkmBeLH+Nin0hXIeA+Fw1T+mnG2V5CHnTA6FKlpxJxWrvwLEsRX7mR/DNtDp06zGyzMFE/4kig==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/stats-base-dists-t-quantile/0.2.1: - resolution: {integrity: sha512-59sdJjHsOMd9JlZ/Kdz4Jc/QHESejDRATw/G/zHafMrO6vIhaus9Y5O2PYUzPQx7nR6i5hsXnT8OQwqZ+RoVNQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-assert-is-nan': 0.2.2 - '@stdlib/math-base-special-kernel-betaincinv': 0.1.1 - '@stdlib/math-base-special-signum': 0.2.2 - '@stdlib/math-base-special-sqrt': 0.2.2 - '@stdlib/utils-constant-function': 0.2.2 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.2 - dev: false - - /@stdlib/string-base-format-interpolate/0.2.2: - resolution: {integrity: sha512-i9nU9rAB2+o/RR66TS9iQ8x+YzeUDL1SGiAo6GY3hP6Umz5Dx9Qp/v8T69gWVsb4a1YSclz5+YeCWaFgwvPjKA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/string-base-format-tokenize/0.2.2: - resolution: {integrity: sha512-kXq2015i+LJjqth5dN+hYnvJXBSzRm8w0ABWB5tYAsIuQTpQK+mSo2muM8JBEFEnqUHAwpUsu2qNTK/9o8lsJg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/string-base-lowercase/0.4.0: - resolution: {integrity: sha512-IH35Z5e4T+S3b3SfYY39mUhrD2qvJVp4VS7Rn3+jgj4+C3syocuAPsJ8C4OQXWGfblX/N9ymizbpFBCiVvMW8w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/string-base-replace/0.2.2: - resolution: {integrity: sha512-Y4jZwRV4Uertw7AlA/lwaYl1HjTefSriN5+ztRcQQyDYmoVN3gzoVKLJ123HPiggZ89vROfC+sk/6AKvly+0CA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/string-format/0.2.2: - resolution: {integrity: sha512-GUa50uxgMAtoItsxTbMmwkyhIwrCxCrsjzk3nAbLnt/1Kt1EWOWMwsALqZdD6K4V/xSJ4ns6PZur3W6w+vKk9g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/string-base-format-interpolate': 0.2.2 - '@stdlib/string-base-format-tokenize': 0.2.2 - dev: false - - /@stdlib/string-replace/0.2.2: - resolution: {integrity: sha512-czNS5IU7sBuHjac45Y3VWUTsUoi82yc8JsMZrOMcjgSrEuDrVmA6sNJg7HC1DuSpdPjm/v9uUk102s1gIfk3Nw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-function': 0.2.2 - '@stdlib/assert-is-regexp': 0.2.2 - '@stdlib/assert-is-string': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/string-base-replace': 0.2.2 - '@stdlib/string-format': 0.2.2 - '@stdlib/utils-escape-regexp-string': 0.2.2 - dev: false - - /@stdlib/symbol-ctor/0.2.2: - resolution: {integrity: sha512-XsmiTfHnTb9jSPf2SoK3O0wrNOXMxqzukvDvtzVur1XBKfim9+seaAS4akmV1H3+AroAXQWVtde885e1B6jz1w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/utils-constant-function/0.2.2: - resolution: {integrity: sha512-ezRenGy5zU4R0JTfha/bpF8U+Hx0b52AZV++ca/pcaQVvPBRkgCsJacXX0eDbexoBB4+ZZ1vcyIi4RKJ0RRlbQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/utils-constructor-name/0.2.2: - resolution: {integrity: sha512-TBtO3MKDAf05ij5ajmyBCbpKKt0Lfahn5tu18gqds4PkFltgcw5tVZfSHY5DZ2HySJQ2GMMYjPW2Kbg6yPCSVg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-buffer': 0.2.2 - '@stdlib/regexp-function-name': 0.2.2 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/utils-convert-path/0.2.2: - resolution: {integrity: sha512-8nNuAgt23Np9NssjShUrPK42c6gRTweGuoQw+yTpTfBR9VQv8WFyt048n8gRGUlAHizrdMNpEY9VAb7IBzpVYw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-string': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/regexp-extended-length-path': 0.2.2 - '@stdlib/string-base-lowercase': 0.4.0 - '@stdlib/string-format': 0.2.2 - '@stdlib/string-replace': 0.2.2 - dev: false - - /@stdlib/utils-define-nonenumerable-read-only-property/0.2.2: - resolution: {integrity: sha512-V3mpAesJemLYDKG376CsmoczWPE/4LKsp8xBvUxCt5CLNAx3J/1W39iZQyA5q6nY1RStGinGn1/dYZwa8ig0Uw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-property': 0.2.4 - dev: false - - /@stdlib/utils-define-property/0.2.4: - resolution: {integrity: sha512-XlMdz7xwuw/sqXc9LbsV8XunCzZXjbZPC+OAdf4t4PBw4ZRwGzlTI6WED+f4PYR5Tp9F1cHgLPyMYCIBfA2zRg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/string-format': 0.2.2 - dev: false - - /@stdlib/utils-escape-regexp-string/0.2.2: - resolution: {integrity: sha512-areCibzgpmvm6pGKBg+mXkSDJW4NxtS5jcAT7RtunGMdAYhA/I5whISMPaeJkIT2XhjjFkjKBaIs5pF6aPr4fQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-string': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/string-format': 0.2.2 - dev: false - - /@stdlib/utils-eval/0.2.2: - resolution: {integrity: sha512-MaFpWZh3fGcTjUeozju5faXqH8w4MRVfpO/M5pon3osTM0by8zrKiI5D9oWqNVygb9JBd+etE+4tj2L1nr5j2A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: false - - /@stdlib/utils-get-prototype-of/0.2.2: - resolution: {integrity: sha512-eDb1BAvt7GW/jduBkfuQrUsA9p09mV8RW20g0DWPaxci6ORYg/UB0tdbAA23aZz2QUoxdYY5s/UJxlq/GHwoKQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-function': 0.2.2 - '@stdlib/object-ctor': 0.2.1 - '@stdlib/utils-native-class': 0.2.2 - dev: false - - /@stdlib/utils-global/0.2.2: - resolution: {integrity: sha512-A4E8VFHn+1bpfJ4PA8H2b62CMQpjv2A+H3QDEBrouLFWne0wrx0TNq8vH6VYHxx9ZRxhgWQjfHiSAxtUJobrbQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-boolean': 0.2.2 - '@stdlib/error-tools-fmtprodmsg': 0.2.2 - '@stdlib/string-format': 0.2.2 - dev: false - - /@stdlib/utils-library-manifest/0.2.2: - resolution: {integrity: sha512-YqzVLuBsB4wTqzdUtRArAjBJoT3x61iop2jFChXexhl6ejV3vDpHcukEEkqIOcJKut+1cG5TLJdexgHNt1C0NA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/fs-resolve-parent-path': 0.2.2 - '@stdlib/utils-convert-path': 0.2.2 - debug: 2.6.9 - resolve: 1.22.10 - dev: false - - /@stdlib/utils-native-class/0.2.2: - resolution: {integrity: sha512-cSn/FozbEpfR/FlJAoceQtZ8yUJFhZ8RFkbEsxW/7+H4o09yln3lBS0HSfUJISYNtpTNN/2/Fup88vmvwspvwA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-own-property': 0.2.2 - '@stdlib/assert-has-tostringtag-support': 0.2.2 - '@stdlib/symbol-ctor': 0.2.2 - dev: false - - /@stdlib/utils-type-of/0.2.2: - resolution: {integrity: sha512-RLGFxPNgY9AtVVrFGdKO6Y3pOd/Ov2WA4O2/czZN/AbgYzbPdoF0KkfvHRIney6k+TtvoyYB8YqZXJ4G88f9BQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-constructor-name': 0.2.2 - '@stdlib/utils-global': 0.2.2 - dev: false - - /@tootallnate/once/2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - /@trufflesuite/spinnies/0.1.1: - resolution: {integrity: sha512-jltEtmFJj6xmQqr85gP8OqBHCEiId+zw+uAsb3DyLLRD17O6sySW6Afa2Z/jpzSafj+32ssDfLJ+c0of1NLqcA==} - dependencies: - chalk: 4.1.2 - cli-cursor: 3.1.0 - strip-ansi: 6.0.1 - dev: false - - /@tsconfig/node10/1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - /@tsconfig/node12/1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - /@tsconfig/node14/1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - /@tsconfig/node16/1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - /@turf/boolean-clockwise/6.5.0: - resolution: {integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - - /@turf/clone/6.5.0: - resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==} - dependencies: - '@turf/helpers': 6.5.0 - - /@turf/flatten/6.5.0: - resolution: {integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - - /@turf/helpers/6.5.0: - resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} - - /@turf/invariant/6.5.0: - resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==} - dependencies: - '@turf/helpers': 6.5.0 - - /@turf/meta/3.14.0: - resolution: {integrity: sha512-OtXqLQuR9hlQ/HkAF/OdzRea7E0eZK1ay8y8CBXkoO2R6v34CsDrWYLMSo0ZzMsaQDpKo76NPP2GGo+PyG1cSg==} - - /@turf/meta/6.5.0: - resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} - dependencies: - '@turf/helpers': 6.5.0 - - /@turf/rewind/6.5.0: - resolution: {integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==} - dependencies: - '@turf/boolean-clockwise': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - - /@types/array-normalize/2.0.5: - resolution: {integrity: sha512-o60338Bls/NAg8eBEezb1Cxrc/JrquyS0iiylZuCINh1MnOZuxbA99hOmiwyrleSipaLf2cugHMwkknjyV7ljw==} - dev: true - - /@types/babel__core/7.20.0: - resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 - - /@types/babel__generator/7.27.0: - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - dependencies: - '@babel/types': 7.27.0 - - /@types/babel__template/7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - - /@types/babel__traverse/7.20.7: - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} - dependencies: - '@babel/types': 7.27.0 - - /@types/chai-subset/1.3.6_@types+chai@4.3.20: - resolution: {integrity: sha512-m8lERkkQj+uek18hXOZuec3W/fCRTrU4hrnXjH3qhHy96ytuPaPiWGgu7sJb7tZxZonO75vYAjCvpe/e4VUwRw==} - peerDependencies: - '@types/chai': <5.2.0 - dependencies: - '@types/chai': 4.3.20 - dev: true - - /@types/chai/4.3.20: - resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - dev: true - - /@types/clean-css/4.2.6: - resolution: {integrity: sha512-Ze1tf+LnGPmG6hBFMi0B4TEB0mhF7EiMM5oyjLDNPE9hxrPU0W+5+bHvO+eFPA+bt0iC1zkQMoU/iGdRVjcRbw==} - dependencies: - '@types/node': 22.15.1 - source-map: 0.6.1 - dev: true - - /@types/debug/4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - dependencies: - '@types/ms': 0.7.31 - dev: true - - /@types/density-clustering/1.3.3: - resolution: {integrity: sha512-p2zEz57kHxWVg39XZ9QQVW6ity4rC3/1cCeLqm2eqqomvOrf8CFYaw7jO8gdYuchO4532ak0Z0f/vBr9irwG/w==} - dev: true - - /@types/estree/1.0.7: - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - - /@types/euclidean-distance/1.0.3: - resolution: {integrity: sha512-xC2/ybsj2K+/B7QeoRzvkmhfweUuOkkUGvpefkp4wKrdk7XnzFlepETI2dkYsb0ladJhTwI6P2VfKoEIhy68gA==} - dev: true - - /@types/expect/1.20.4: - resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} - - /@types/fs-extra/9.0.13: - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - dependencies: - '@types/node': 22.15.1 - dev: true - - /@types/glob-stream/8.0.2: - resolution: {integrity: sha512-kyuRfGE+yiSJWzSO3t74rXxdZNdYfLcllO0IUha4eX1fl40pm9L02Q/TEc3mykTLjoWz4STBNwYnUWdFu3I0DA==} - dependencies: - '@types/node': 22.15.1 - '@types/picomatch': 4.0.0 - '@types/streamx': 2.9.5 - dev: true - - /@types/glob-watcher/5.0.2: - resolution: {integrity: sha512-MZeh2nIzibl/euv5UV0femkGzcKTSE4G2+zv48d6ymeitWwCx52+4X+FqzML9oH2mQnPs+N/JHp3CsBPj1x1Ug==} - dependencies: - '@types/node': 22.15.1 - dev: true - - /@types/glob/7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 22.15.1 - dev: true - - /@types/graceful-fs/4.1.9: - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - dependencies: - '@types/node': 22.15.1 - - /@types/gulp-if/0.0.34: - resolution: {integrity: sha512-r2A04hHDC+ZWMRAm+3q6/UeC3ggvl+TZm9P1+2umnp4q9bOlBmUQnR178Io3c0DkZPQAwup8VNtOvmvaWCpP5w==} - dependencies: - '@types/node': 22.15.1 - '@types/vinyl': 2.0.7 - dev: true - - /@types/gulp-match/1.1.2: - resolution: {integrity: sha512-R/yI2NT2NJk2e8F5G0BAUM/f4c03QcxE7oWOGOgCccy1ABbkoH8NUBEuEnd1/MKr0lqO0EyGWJtgH5kqWf6zNA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/vinyl': 2.0.7 - dev: true - - /@types/gulp-sourcemaps/0.0.35: - resolution: {integrity: sha512-vUBuizwA4CAV3Mke0DJYHQxyN4YOB1aAql284qAO7Et7fe0hmnPi/R9Fhu2UhxMuSxAwFktsJUOQk5dJHOU1eA==} - dependencies: - '@types/node': 22.15.1 - '@types/vinyl': 2.0.7 - dev: true - - /@types/gulp/4.0.10: - resolution: {integrity: sha512-spgZHJFqiEJGwqGlf7T/k4nkBpBcLgP7T0EfN6G2vvnhUfvd4uO1h8RwpXOE8x/54DVYUs1XCAtBHkX/R3axAQ==} - dependencies: - '@types/undertaker': 1.2.8 - '@types/vinyl-fs': 3.0.5 - chokidar: 3.6.0 - dev: true - - /@types/highlightjs/9.12.6: - resolution: {integrity: sha512-Qfd1DUrwE851Hc3tExADJY4qY8yeZMt06Xw9AJm/UtpneepJS3MZY29c33BY0wP899veaaHD4gZzYiSuQm84Fg==} - dev: true - - /@types/istanbul-lib-coverage/2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - /@types/istanbul-lib-report/3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - /@types/istanbul-reports/3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - /@types/jest/29.5.14: - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - dev: true - - /@types/js-yaml/4.0.9: - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - dev: true - - /@types/jsdom/20.0.1: - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - dependencies: - '@types/node': 22.15.1 - '@types/tough-cookie': 4.0.5 - parse5: 7.3.0 - - /@types/json-schema/7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - /@types/json5/0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/less/3.0.3: - resolution: {integrity: sha512-1YXyYH83h6We1djyoUEqTlVyQtCfJAFXELSKW2ZRtjHD4hQ82CC4lvrv5D0l0FLcKBaiPbXyi3MpMsI9ZRgKsw==} - dev: true - - /@types/linkify-it/3.0.5: - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - dev: true - - /@types/lodash/4.14.182: - resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} - dev: true - - /@types/markdown-it/13.0.9: - resolution: {integrity: sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw==} - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 - dev: true - - /@types/mdurl/1.0.5: - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - dev: true - - /@types/merge2/1.4.0: - resolution: {integrity: sha512-MRHDvln2ldZELrUC8n1PGaQzZ33aNh8uDcsGehREW0zR1Fr818a4/JTZjO9eloHPPxnpUp8fz/YFTRc5CWm7Xw==} - dependencies: - '@types/node': 22.15.1 - dev: true - - /@types/minimatch/5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true - - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/mocha/9.1.1: - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - dev: true - - /@types/ms/0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: true - - /@types/node/22.15.1: - resolution: {integrity: sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==} - dependencies: - undici-types: 6.21.0 - - /@types/picomatch/4.0.0: - resolution: {integrity: sha512-J1Bng+wlyEERWSgJQU1Pi0HObCLVcr994xT/M+1wcl/yNRTGBupsCxthgkdYG+GCOMaQH7iSVUY3LJVBBqG7MQ==} - dev: true - - /@types/prop-types/15.7.14: - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - - /@types/react-dom/18.3.6_@types+react@18.3.20: - resolution: {integrity: sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==} - peerDependencies: - '@types/react': ^18.0.0 - dependencies: - '@types/react': 18.3.20 - dev: true - - /@types/react/18.3.20: - resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==} - dependencies: - '@types/prop-types': 15.7.14 - csstype: 3.1.3 - - /@types/resolve/1.20.2: - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - dev: false - - /@types/semver/7.3.12: - resolution: {integrity: sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==} - dev: true - - /@types/stack-utils/2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - /@types/streamx/2.9.5: - resolution: {integrity: sha512-IHYsa6jYrck8VEdSwpY141FTTf6D7boPeMq9jy4qazNrFMA4VbRz/sw5LSsfR7jwdDcx0QKWkUexZvsWBC2eIQ==} - dependencies: - '@types/node': 22.15.1 - dev: true - - /@types/terser/3.12.0: - resolution: {integrity: sha512-J0Wy8A7ULEqVJftkWhrXZbH0iBk4tYuTj0gBiiveKaY9deNi6cCsxl0ApJ27ojqwYv51bvEw85lOb8Wt4ng9zA==} - deprecated: This is a stub types definition. terser provides its own type definitions, so you do not need this installed. - dependencies: - terser: 5.17.1 - dev: true - - /@types/through2/2.0.38: - resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==} - dependencies: - '@types/node': 22.15.1 - dev: true - - /@types/tough-cookie/4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - /@types/undertaker-registry/1.0.4: - resolution: {integrity: sha512-tW77pHh2TU4uebWXWeEM5laiw8BuJ7pyJYDh6xenOs75nhny2kVgwYbegJ4BoLMYsIrXaBpKYaPdYO3/udG+hg==} - dev: true - - /@types/undertaker/1.2.8: - resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} - dependencies: - '@types/node': 22.15.1 - '@types/undertaker-registry': 1.0.4 - async-done: 1.3.2 - dev: true - - /@types/vinyl-fs/3.0.5: - resolution: {integrity: sha512-ckYz9giHgV6U10RFuf9WsDQ3X86EFougapxHmmoxLK7e6ICQqO8CE+4V/3lBN148V5N1pb4nQMmMjyScleVsig==} - dependencies: - '@types/glob-stream': 8.0.2 - '@types/node': 22.15.1 - '@types/vinyl': 2.0.7 - dev: true - - /@types/vinyl/2.0.7: - resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} - dependencies: - '@types/expect': 1.20.4 - '@types/node': 22.15.1 - - /@types/yargs-parser/21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - - /@types/yargs/17.0.33: - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - dependencies: - '@types/yargs-parser': 21.0.0 - - /@typescript-eslint/eslint-plugin/5.30.0_cow5zg7tx6c3eisi5a4ud5kwia: - resolution: {integrity: sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/parser': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq - '@typescript-eslint/scope-manager': 5.30.0 - '@typescript-eslint/type-utils': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq - '@typescript-eslint/utils': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq - debug: 4.3.4 - eslint: 8.18.0 - functional-red-black-tree: 1.0.1 - ignore: 5.3.2 - regexpp: 3.2.0 - semver: 7.7.1 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/eslint-plugin/5.30.0_dwvk2jxdxtyxgoclhbqbxvd22a: - resolution: {integrity: sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/parser': 5.30.0_typescript@4.9.5 - '@typescript-eslint/scope-manager': 5.30.0 - '@typescript-eslint/type-utils': 5.30.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.30.0_typescript@4.9.5 - debug: 4.3.4 - functional-red-black-tree: 1.0.1 - ignore: 5.3.2 - regexpp: 3.2.0 - semver: 7.7.1 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser/5.30.0_typescript@4.9.5: - resolution: {integrity: sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.30.0 - '@typescript-eslint/types': 5.30.0 - '@typescript-eslint/typescript-estree': 5.30.0_typescript@4.9.5 - debug: 4.3.4 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser/5.30.0_vwud3sodsb5zxmzckoj7rdwdbq: - resolution: {integrity: sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.30.0 - '@typescript-eslint/types': 5.30.0 - '@typescript-eslint/typescript-estree': 5.30.0_typescript@4.9.5 - debug: 4.3.4 - eslint: 8.18.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/scope-manager/5.30.0: - resolution: {integrity: sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.30.0 - '@typescript-eslint/visitor-keys': 5.30.0 - - /@typescript-eslint/type-utils/5.30.0_typescript@4.9.5: - resolution: {integrity: sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/utils': 5.30.0_typescript@4.9.5 - debug: 4.3.4 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/type-utils/5.30.0_vwud3sodsb5zxmzckoj7rdwdbq: - resolution: {integrity: sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/utils': 5.30.0_vwud3sodsb5zxmzckoj7rdwdbq - debug: 4.3.4 - eslint: 8.18.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/types/5.30.0: - resolution: {integrity: sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /@typescript-eslint/typescript-estree/5.30.0_typescript@4.9.5: - resolution: {integrity: sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.30.0 - '@typescript-eslint/visitor-keys': 5.30.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.7.1 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/utils/5.30.0_typescript@4.9.5: - resolution: {integrity: sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.15 - '@typescript-eslint/scope-manager': 5.30.0 - '@typescript-eslint/types': 5.30.0 - '@typescript-eslint/typescript-estree': 5.30.0_typescript@4.9.5 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils/5.30.0_vwud3sodsb5zxmzckoj7rdwdbq: - resolution: {integrity: sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.15 - '@typescript-eslint/scope-manager': 5.30.0 - '@typescript-eslint/types': 5.30.0 - '@typescript-eslint/typescript-estree': 5.30.0_typescript@4.9.5 - eslint: 8.18.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.18.0 - transitivePeerDependencies: - - supports-color - - typescript - - /@typescript-eslint/visitor-keys/5.30.0: - resolution: {integrity: sha512-6WcIeRk2DQ3pHKxU1Ni0qMXJkjO/zLjBymlYBy/53qxe7yjEFSvzKLDToJjURUhSl2Fzhkl4SMXQoETauF74cw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.30.0 - eslint-visitor-keys: 3.4.3 - - /@ungap/promise-all-settled/1.1.2: - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - dev: true - - /@visactor/vchart-theme/1.12.2: - resolution: {integrity: sha512-r298TUdK+CKbHGVYWgQnNSEB5uqpFvF2/aMNZ/2POQnd2CovAPJOx2nTE6hAcOn8rra2FwJ2xF8AyP1O5OhrTw==} - peerDependencies: - '@visactor/vchart': '>=1.10.4' - dev: false - - /@visactor/vchart-theme/1.12.2_@visactor+vchart@1.13.9: - resolution: {integrity: sha512-r298TUdK+CKbHGVYWgQnNSEB5uqpFvF2/aMNZ/2POQnd2CovAPJOx2nTE6hAcOn8rra2FwJ2xF8AyP1O5OhrTw==} - peerDependencies: - '@visactor/vchart': '>=1.10.4' - dependencies: - '@visactor/vchart': 1.13.9 - dev: false - - /@visactor/vchart/1.13.9: - resolution: {integrity: sha512-5MUrnqYW3RVMQdRERJlbfebQqa9REdHH3mRR2YHKReuRinXSndIi1tVMjJMiCZN1TAMsA6tx2Ew6Zv2jJtiy3g==} - dependencies: - '@visactor/vdataset': 0.19.5 - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-hierarchy': 0.16.6 - '@visactor/vgrammar-projection': 0.16.6 - '@visactor/vgrammar-sankey': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vgrammar-venn': 0.16.6 - '@visactor/vgrammar-wordcloud': 0.16.6 - '@visactor/vgrammar-wordcloud-shape': 0.16.6 - '@visactor/vrender-components': 0.22.10 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vscale': 0.19.5 - '@visactor/vutils': 0.19.5 - '@visactor/vutils-extension': 1.13.9 - - /@visactor/vdataset/0.19.5: - resolution: {integrity: sha512-8sOzJKHRLTdjmCDGemroxo3t3iWYrw4aDgPaCUbV1GiKuttC4CdTJlVsfq/JLdSldvMgNDTAmovAchVgjBNH6Q==} - dependencies: - '@turf/flatten': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/rewind': 6.5.0 - '@visactor/vutils': 0.19.5 - d3-dsv: 2.0.0 - d3-geo: 1.12.1 - d3-hexbin: 0.2.2 - d3-hierarchy: 3.1.2 - eventemitter3: 4.0.7 - geobuf: 3.0.2 - geojson-dissolve: 3.1.0 - path-browserify: 1.0.1 - pbf: 3.3.0 - point-at-length: 1.1.0 - simple-statistics: 7.8.8 - simplify-geojson: 1.0.5 - topojson-client: 3.1.0 - - /@visactor/vgrammar-coordinate/0.16.6: - resolution: {integrity: sha512-stLKmcoz+qLnHxrQVpMNL6wtc53Sd5+mGXLo+56KG7DDxwAUg/p5rWEJW84tfYW1QvfC3xJxiC1iWHK+KkfFPg==} - dependencies: - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-core/0.16.6: - resolution: {integrity: sha512-+K3mP/VQyNzsLtnf21Y9hmGU5gyRmaiLMIhVOvaSd0+vlSVB2rJKCVe9wSj3Q2IZXtLHI9mXe7nFV0m1AUVXkA==} - dependencies: - '@visactor/vdataset': 0.19.5 - '@visactor/vgrammar-coordinate': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vrender-components': 0.22.10 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vscale': 0.19.5 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-hierarchy/0.16.6: - resolution: {integrity: sha512-aekYeT5Z6CUeztLf3OpjBj+plyM8s6AzwlTNlEw3UIiluofARli+jlRRYHdXZuvSk2yGhL7q1DK7WTw/6hZ+Nw==} - dependencies: - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-projection/0.16.6: - resolution: {integrity: sha512-RsE4lgWVBKGlCGI/IIApAZAbGDd8fnGK/1iNk+afaTW9nTmCMyqakZ/d1s0iSiVHYZMY7XPAJzv1bkoFr7za8A==} - dependencies: - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vutils': 0.19.5 - d3-geo: 1.12.1 - - /@visactor/vgrammar-sankey/0.16.6: - resolution: {integrity: sha512-ijGkm26s7oI4xvV2EhE9lH8SsutM+b6Pn3M34nO5dH7M+kIrFfF70RRPz1xSb+dXf9Es/cm7K935YtUwoqfE/A==} - dependencies: - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-util/0.16.6: - resolution: {integrity: sha512-E6X7w6DXm6oee4wfVFbiBpy+BUY1UcCMexMxMuPI2FFVgaZbsKAh2bbMwwSpVvCFZp4gUEwMRYUetoJXJ+hdSw==} - dependencies: - '@visactor/vrender-core': 0.22.10 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-venn/0.16.6: - resolution: {integrity: sha512-/fObOTB/dZ8P2cD/lgnB//bs3Wv4ivpcM3bf7TIEE0KvO6Sf91Kc5ajH/ld2feWyS7bogW/Qm2jESc/KYd3J7g==} - dependencies: - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-wordcloud-shape/0.16.6: - resolution: {integrity: sha512-XF6qnwvvw1EocAYuUMnObgL32aVzC2scEyb0CYy7Fw285cghoAYMRiw99Jgntsvy22fNENJjzzGWC36w71te7Q==} - dependencies: - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vscale': 0.19.5 - '@visactor/vutils': 0.19.5 - - /@visactor/vgrammar-wordcloud/0.16.6: - resolution: {integrity: sha512-bdLHriR6YHIT37gKXhufPSrJgH5tDciDRkO/R1V26yMpJ/jQKmte8xL5YRC25/ah4txKexuCTyloQj5qTiynTQ==} - dependencies: - '@visactor/vgrammar-core': 0.16.6 - '@visactor/vgrammar-util': 0.16.6 - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vutils': 0.19.5 - - /@visactor/vrender-components/0.22.10: - resolution: {integrity: sha512-rfsci9y9AkEp/TCqCs0wpYdmPYqRnViEZ3EF9yiKhuFMExzdO8opga7JPfHJSbGCMoaqU5mWVCiEALsQkFuRQg==} - dependencies: - '@visactor/vrender-core': 0.22.10 - '@visactor/vrender-kits': 0.22.10 - '@visactor/vscale': 0.19.5 - '@visactor/vutils': 0.19.5 - - /@visactor/vrender-core/0.21.8: - resolution: {integrity: sha512-5tHGC8HaMQ+LkMyO+yD82gYvSg2Gw+PdxVRM+A8kVbINDmElME336nCM8tQObbWRt8UlqZOUvUkzKmczsiralA==} - dependencies: - '@visactor/vutils': 0.19.5 - color-convert: 2.0.1 - dev: true - - /@visactor/vrender-core/0.22.10: - resolution: {integrity: sha512-I2+/odcPphPujZtA26S4RG8Yn9BNPt4jlcsbOPwDGP5MvN7oLkWTSMgu4C9r0/lWYvfkwi5JpaoU8lLBZT7e6w==} - dependencies: - '@visactor/vutils': 0.19.5 - color-convert: 2.0.1 - - /@visactor/vrender-kits/0.22.10: - resolution: {integrity: sha512-XjhThrOLvd1m7+o2jKNGKZSSAlHQG4cIm7H6BV2ew9/eQ532Fj8Vd7N17KU8bBnXzPulCmPpnEFj++E4Mnoqpg==} - dependencies: - '@resvg/resvg-js': 2.4.1 - '@visactor/vrender-core': 0.22.10 - '@visactor/vutils': 0.19.5 - gifuct-js: 2.1.2 - lottie-web: 5.12.2 - roughjs: 4.5.2 - - /@visactor/vscale/0.19.5: - resolution: {integrity: sha512-KiXrn184Fh5aJBl/IcOK5irkJr0jwrpNjLPJ/0wfepYSycyEF5z7lDdfnvoJFEcMoljYjDQVg6Fxg9Adozc6vg==} - dependencies: - '@visactor/vutils': 0.19.5 - - /@visactor/vutils-extension/1.13.9: - resolution: {integrity: sha512-eLrfbqt2THKXtl9GMwpZNeMdlUENvNWDtX1TUme59TOjYad+duvZNqUD/5ZLKZ8GScgRXdzBZzr8pezDpCBLow==} - dependencies: - '@visactor/vdataset': 0.19.5 - '@visactor/vutils': 0.19.5 - - /@visactor/vutils/0.19.5: - resolution: {integrity: sha512-sSU9Gnmnej7LgkENKkdmVqx1I3ZYVugDbGP0KEzgo8j+txAwrthEQTSeFwZcVS0iYrAvSzpmAVuN0/NRo6+vpg==} - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - eventemitter3: 4.0.7 - - /@vitejs/plugin-react/3.1.0_vite@3.2.6: - resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.1.0-beta.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx-self': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx-source': 7.25.9_@babel+core@7.20.12 - magic-string: 0.27.0 - react-refresh: 0.14.2 - vite: 3.2.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@vitest/expect/0.30.1: - resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} - dependencies: - '@vitest/spy': 0.30.1 - '@vitest/utils': 0.30.1 - chai: 4.5.0 - dev: true - - /@vitest/runner/0.30.1: - resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} - dependencies: - '@vitest/utils': 0.30.1 - concordance: 5.0.4 - p-limit: 4.0.0 - pathe: 1.1.2 - dev: true - - /@vitest/snapshot/0.30.1: - resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} - dependencies: - magic-string: 0.30.17 - pathe: 1.1.2 - pretty-format: 27.5.1 - dev: true - - /@vitest/spy/0.30.1: - resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} - dependencies: - tinyspy: 2.2.1 - dev: true - - /@vitest/utils/0.30.1: - resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} - dependencies: - concordance: 5.0.4 - loupe: 2.3.7 - pretty-format: 27.5.1 - dev: true - - /abab/2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - - /abbrev/1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: true - - /abs-svg-path/0.1.1: - resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} - - /accepts/1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: true - - /acorn-globals/7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - dependencies: - acorn: 8.14.1 - acorn-walk: 8.3.4 - - /acorn-jsx/5.3.2_acorn@8.14.1: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.14.1 - - /acorn-walk/8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - dependencies: - acorn: 8.14.1 - - /acorn/6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /acorn/8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - /ajv-formats/2.1.1_ajv@8.17.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.17.1 - dev: true - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - /ajv/8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - dev: true - - /alasql/4.3.3: - resolution: {integrity: sha512-IP64TOG+zBTPA41OB2NJVkM3urEIhvZtYwtPFC/1QSH7nCzwShIwWfxwyOhTK7yzF/ZaNGEpc3Eexyzb2nUbFg==} - engines: {node: '>=15'} - hasBin: true - dependencies: - cross-fetch: 4.1.0 - yargs: 16.2.0 - transitivePeerDependencies: - - encoding - dev: false - - /ansi-colors/1.1.0: - resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-colors/4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: true - - /ansi-colors/4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: false - - /ansi-cyan/0.1.1: - resolution: {integrity: sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - - /ansi-gray/0.1.1: - resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-red/0.1.1: - resolution: {integrity: sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-wrap: 0.1.0 - dev: false - - /ansi-regex/2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: false - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles/5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - /ansi-wrap/0.1.0: - resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} - engines: {node: '>=0.10.0'} - dev: false - - /anymatch/2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - dev: false - - /anymatch/3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - /append-buffer/1.0.2: - resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} - engines: {node: '>=0.10.0'} - dependencies: - buffer-equal: 1.0.1 - dev: false - - /aproba/2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true - - /archy/1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: false - - /are-we-there-yet/2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: true - - /arg/4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - /aria-query/5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - dev: true - - /arr-diff/1.1.0: - resolution: {integrity: sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-slice: 0.2.3 - dev: false - - /arr-diff/4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-filter/1.1.2: - resolution: {integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==} - engines: {node: '>=0.10.0'} - dependencies: - make-iterator: 1.0.1 - dev: false - - /arr-flatten/1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-map/2.0.2: - resolution: {integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==} - engines: {node: '>=0.10.0'} - dependencies: - make-iterator: 1.0.1 - dev: false - - /arr-union/2.1.0: - resolution: {integrity: sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-union/3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: false - - /array-bounds/1.0.1: - resolution: {integrity: sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==} - dev: false - - /array-buffer-byte-length/1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - - /array-each/1.0.1: - resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} - engines: {node: '>=0.10.0'} - dev: false - - /array-flatten/1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - - /array-includes/3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - - /array-initial/1.1.0: - resolution: {integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==} - engines: {node: '>=0.10.0'} - dependencies: - array-slice: 1.1.0 - is-number: 4.0.0 - dev: false - - /array-last/1.3.0: - resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 4.0.0 - dev: false - - /array-normalize/2.0.0: - resolution: {integrity: sha512-WofPolGg9OqpmfYh2qqOJ0yeJ9Idjn+EcQ+Nyy3eQbqtuz0MRyqTEHB0PH/Ypp2PpsOAfjsqTMzu1fHOaPzO1Q==} - dependencies: - array-bounds: 1.0.1 - dev: false - - /array-slice/0.2.3: - resolution: {integrity: sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==} - engines: {node: '>=0.10.0'} - dev: false - - /array-slice/1.1.0: - resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} - engines: {node: '>=0.10.0'} - dev: false - - /array-sort/1.0.0: - resolution: {integrity: sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==} - engines: {node: '>=0.10.0'} - dependencies: - default-compare: 1.0.0 - get-value: 2.0.6 - kind-of: 5.1.0 - dev: false - - /array-source/0.0.4: - resolution: {integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==} - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - /array-unique/0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: false - - /array.prototype.findlastindex/1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - dev: true - - /array.prototype.flat/1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.1.0 - - /array.prototype.flatmap/1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-shim-unscopables: 1.1.0 - - /arraybuffer.prototype.slice/1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - /assertion-error/1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /assign-symbols/1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: false - - /ast-types-flow/0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true - - /astring/1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - dev: true - - /async-done/1.3.2: - resolution: {integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==} - engines: {node: '>= 0.10'} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - process-nextick-args: 2.0.1 - stream-exhaust: 1.0.2 - - /async-each/1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - dev: false - - /async-function/1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - /async-settle/1.0.0: - resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} - engines: {node: '>= 0.10'} - dependencies: - async-done: 1.3.2 - dev: false - - /async/3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - dev: true - - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - /atob/2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false - - /autoprefixer/10.4.13_postcss@8.4.21: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001715 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - dev: false - - /available-typed-arrays/1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.1.0 - - /axe-core/4.10.3: - resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} - engines: {node: '>=4'} - dev: true - - /axios/1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.2 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: false - - /axobject-query/4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - dev: true - - /b-tween/0.3.3: - resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==} - - /b-validate/1.5.3: - resolution: {integrity: sha512-iCvCkGFskbaYtfQ0a3GmcQCHl/Sv1GufXFGuUQ+FE+WJa7A/espLOuFIn09B944V8/ImPj71T4+rTASxO2PAuA==} - - /babel-jest/29.7.0_@babel+core@7.20.12: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.20.12 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.0 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3_@babel+core@7.20.12 - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-import/1.13.6: - resolution: {integrity: sha512-N7FYnGh0DFsvDRkAPsvFq/metVfVD7P2h1rokOPpEH4cZbdRHCW+2jbXt0nnuqowkm/xhh2ww1anIdEpfYa7ZA==} - dependencies: - '@babel/helper-module-imports': 7.25.9 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-istanbul/6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.26.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - /babel-plugin-jest-hoist/29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@types/babel__core': 7.20.0 - '@types/babel__traverse': 7.20.7 - dev: true - - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - core-js-compat: 3.41.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-preset-current-node-syntax/1.1.0_@babel+core@7.20.12: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-import-attributes': 7.26.0_@babel+core@7.20.12 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - - /babel-preset-jest/29.6.3_@babel+core@7.20.12: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0_@babel+core@7.20.12 - dev: true - - /bach/1.2.0: - resolution: {integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==} - engines: {node: '>= 0.10'} - dependencies: - arr-filter: 1.1.2 - arr-flatten: 1.1.0 - arr-map: 2.0.2 - array-each: 1.0.1 - array-initial: 1.1.0 - array-last: 1.3.0 - async-done: 1.3.2 - async-settle: 1.0.0 - now-and-later: 2.0.1 - dev: false - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /base/0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.1 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: false - - /bayesian-changepoint/1.0.1: - resolution: {integrity: sha512-OhSHWfGiEcBtI46b5guJGmj6pJEjvyaXsRPCAQy5MPoVaDZ38poXmzVZLSIuw6VLQmZs58+uf5F9iFA4NVmTTA==} - dev: false - - /big-integer/1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: false - - /binary-extensions/1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - dev: false - - /binary-extensions/2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: true - - /binaryextensions/2.3.0: - resolution: {integrity: sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==} - engines: {node: '>=0.8'} - dev: false - - /bindings/1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - dependencies: - file-uri-to-path: 1.0.0 - dev: false - optional: true - - /blueimp-md5/2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - dev: true - - /body-parser/1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - dev: true - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion/2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - - /braces/2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - dev: false - - /braces/3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - - /browser-stdout/1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: true - - /browserslist/4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001715 - electron-to-chromium: 1.5.142 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3_browserslist@4.24.4 - - /bs-logger/0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - - /bser/2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - - /buffer-equal/1.0.1: - resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} - engines: {node: '>=0.4'} - dev: false - - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - /builtin-modules/3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: false - - /bytes/3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - dev: true - - /cac/6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /cache-base/1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.1 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: false - - /call-bind-apply-helpers/1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - /call-bind/1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - /call-bound/1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - /camelcase/3.0.0: - resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} - engines: {node: '>=0.10.0'} - dev: false - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - - /caniuse-lite/1.0.30001715: - resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} - - /canvas/2.11.2: - resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} - engines: {node: '>=6'} - requiresBuild: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - nan: 2.22.2 - simple-get: 3.1.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /chai/4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /chalk/3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - - /check-error/1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 - dev: true - - /chokidar/2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - dependencies: - anymatch: 2.0.0 - async-each: 1.0.6 - braces: 2.3.2 - glob-parent: 3.1.0 - inherits: 2.0.4 - is-binary-path: 1.0.1 - is-glob: 4.0.3 - normalize-path: 3.0.0 - path-is-absolute: 1.0.1 - readdirp: 2.2.1 - upath: 1.2.0 - optionalDependencies: - fsevents: 1.2.13 - dev: false - - /chokidar/3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /chokidar/3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /chokidar/4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - dependencies: - readdirp: 4.1.2 - dev: true - - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: true - - /ci-info/3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - /cjs-module-lexer/1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - dev: true - - /class-utils/0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: false - - /clean-css/5.3.2: - resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} - engines: {node: '>= 10.0'} - dependencies: - source-map: 0.6.1 - dev: false - - /cli-cursor/3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: false - - /cliui/3.2.0: - resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi: 2.1.0 - dev: false - - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - /cliui/8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - /clone-buffer/1.0.0: - resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} - engines: {node: '>= 0.10'} - dev: false - - /clone-stats/1.0.0: - resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} - dev: false - - /clone/2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - dev: false - - /cloneable-readable/1.1.3: - resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} - dependencies: - inherits: 2.0.4 - process-nextick-args: 2.0.1 - readable-stream: 2.3.8 - dev: false - - /co/4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /code-point-at/1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - dev: false - - /collect-v8-coverage/1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - dev: true - - /collection-map/1.0.0: - resolution: {integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-map: 2.0.2 - for-own: 1.0.0 - make-iterator: 1.0.1 - dev: false - - /collection-visit/1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: false - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-string/1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - /color/3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - /commondir/1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - - /component-emitter/1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - dev: false - - /compute-scroll-into-view/1.0.11: - resolution: {integrity: sha512-uUnglJowSe0IPmWOdDtrlHXof5CTIJitfJEyITHBW6zDVOGu9Pjk5puaLM73SLcwak0L4hEjO7Td88/a6P5i7A==} - - /compute-scroll-into-view/1.0.20: - resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /concat-stream/1.4.11: - resolution: {integrity: sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==} - engines: {'0': node >= 0.8} - dependencies: - inherits: 2.0.4 - readable-stream: 1.1.14 - typedarray: 0.0.7 - - /concat-stream/1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - dev: false - - /concat-stream/2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - - /concordance/5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.3.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.3.4 - well-known-symbols: 2.0.0 - dev: true - - /confbox/0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - dev: true - - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - - /content-disposition/0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /content-type/1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true - - /convert-source-map/1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - /convert-source-map/2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - /cookie-signature/1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true - - /cookie/0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - dev: true - - /copy-anything/2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - dependencies: - is-what: 3.14.1 - - /copy-descriptor/0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: false - - /copy-props/2.0.5: - resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} - dependencies: - each-props: 1.3.2 - is-plain-object: 5.0.0 - dev: false - - /core-js-compat/3.41.0: - resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} - dependencies: - browserslist: 4.24.4 - dev: false - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - /create-jest/29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0 - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /create-jest/29.7.0_@types+node@22.15.1: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0_@types+node@22.15.1 - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /create-jest/29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /create-require/1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - /cross-fetch/4.1.0: - resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - dev: false - - /cross-spawn/6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - - /cross-spawn/7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /css/3.0.0: - resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.6.0 - dev: false - - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - /cssom/0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - - /cssstyle/3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} - dependencies: - rrweb-cssom: 0.6.0 - dev: false - - /csstype/3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - /d/1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - dev: false - - /d3-array/1.2.4: - resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} - - /d3-dsv/2.0.0: - resolution: {integrity: sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==} - hasBin: true - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - - /d3-geo/1.12.1: - resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} - dependencies: - d3-array: 1.2.4 - - /d3-hexbin/0.2.2: - resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} - - /d3-hierarchy/3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - - /damerau-levenshtein/1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true - - /data-urls/3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - - /data-urls/4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - dev: false - - /data-view-buffer/1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - /data-view-byte-length/1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - /data-view-byte-offset/1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - /date-time/3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} - dependencies: - time-zone: 1.0.0 - dev: true - - /dayjs/1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - - /debug-fabulous/1.1.0: - resolution: {integrity: sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==} - dependencies: - debug: 3.2.7 - memoizee: 0.4.17 - object-assign: 4.1.1 - dev: false - - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - dependencies: - ms: 2.0.0 - - /debug/3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - dependencies: - ms: 2.1.3 - - /debug/4.3.3_supports-color@8.1.1: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 8.1.1 - dev: true - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decamelize/1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /decamelize/4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - dev: true - - /decimal.js/10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} - - /decode-uri-component/0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false - - /decompress-response/4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} - dependencies: - mimic-response: 2.1.0 - dev: true - - /dedent/1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - dev: true - - /deep-eql/4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.1.0 - dev: true - - /deep-is/0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - /deepmerge/4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - /default-compare/1.0.0: - resolution: {integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 5.1.0 - dev: false - - /default-resolution/2.0.0: - resolution: {integrity: sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==} - engines: {node: '>= 0.10'} - dev: false - - /define-data-property/1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - /define-properties/1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - /define-property/0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.7 - dev: false - - /define-property/1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.3 - dev: false - - /define-property/2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - dev: false - - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - - /density-clustering/1.3.0: - resolution: {integrity: sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==} - dev: false - - /depd/2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - - /destroy/1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - - /detect-file/1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - dev: false - - /detect-libc/1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - optional: true - - /detect-libc/2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - dev: true - - /detect-newline/2.1.0: - resolution: {integrity: sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==} - engines: {node: '>=0.10.0'} - dev: false - - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - - /detect-node-es/1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - /diff-sequences/29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - /diff/4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - /diff/5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dev: true - - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - - /doctrine/2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - - /doctrine/3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - - /dom-helpers/5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - dependencies: - '@babel/runtime': 7.27.0 - csstype: 3.1.3 - - /dom-serializer/1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - dev: true - - /domelementtype/2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domexception/4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - dependencies: - webidl-conversions: 7.0.0 - - /domhandler/3.3.0: - resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domhandler/4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils/2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - dev: true - - /dotenv/16.3.2: - resolution: {integrity: sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==} - engines: {node: '>=12'} - dev: true - - /dunder-proto/1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - /duplexify/3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - dev: false - - /duplexify/4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 3.6.2 - stream-shift: 1.0.3 - dev: false - - /each-props/1.3.2: - resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==} - dependencies: - is-plain-object: 2.0.4 - object.defaults: 1.1.0 - dev: false - - /ee-first/1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true - - /ejs/3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - jake: 10.9.2 - dev: true - - /electron-to-chromium/1.5.142: - resolution: {integrity: sha512-Ah2HgkTu/9RhTDNThBtzu2Wirdy4DC9b0sMT1pUhbkZQ5U/iwmE+PHZX1MpjD5IkJCc2wSghgGG/B04szAx07w==} - - /emittery/0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - - /encodeurl/1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - - /encodeurl/2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - dev: true - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - - /entities/2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: true - - /entities/3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} - engines: {node: '>=0.12'} - dev: false - - /entities/6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} - engines: {node: '>=0.12'} - - /errno/0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - requiresBuild: true - dependencies: - prr: 1.0.1 - optional: true - - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - - /es-abstract/1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-regex: 1.2.1 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 - - /es-define-property/1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - /es-errors/1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - /es-object-atoms/1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - - /es-set-tostringtag/2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - /es-shim-unscopables/1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.2 - - /es-to-primitive/1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - /es5-ext/0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - requiresBuild: true - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - dev: false - - /es6-iterator/2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - dev: false - - /es6-symbol/3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - dependencies: - d: 1.0.2 - ext: 1.7.0 - dev: false - - /es6-weak-map/2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - dev: false - - /esbuild-android-64/0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-android-arm64/0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-64/0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-darwin-arm64/0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-64/0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-freebsd-arm64/0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-32/0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-64/0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm/0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm64/0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-mips64le/0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-ppc64le/0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-riscv64/0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-s390x/0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-netbsd-64/0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-openbsd-64/0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /esbuild-sunos-64/0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-32/0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-64/0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild-windows-arm64/0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /esbuild/0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 - dev: true - - /escalade/3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - /escape-html/1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - /escodegen/2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - /eslint-config-prettier/8.5.0_eslint@8.18.0: - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.18.0 - - /eslint-import-resolver-node/0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.10 - dev: true - - /eslint-module-utils/2.12.0_eslint@8.18.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} - engines: {node: '>=4'} - peerDependencies: - eslint: '*' - peerDependenciesMeta: - eslint: - optional: true - dependencies: - debug: 3.2.7 - eslint: 8.18.0 - dev: true - - /eslint-plugin-import/2.31.0_eslint@8.18.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.18.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0_eslint@8.18.0 - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - dev: true - - /eslint-plugin-jsx-a11y/6.10.2_eslint@8.18.0: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.10.3 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.18.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - dev: true - - /eslint-plugin-prettier/4.2.1_ohknqdiadpdc4n44qqsbqlxxwa: - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.18.0 - eslint-config-prettier: 8.5.0_eslint@8.18.0 - prettier-linter-helpers: 1.0.0 - dev: true - - /eslint-plugin-promise/6.0.0_eslint@8.18.0: - resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - eslint: 8.18.0 - dev: false - - /eslint-plugin-react-hooks/4.6.0_eslint@8.18.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.18.0 - dev: false - - /eslint-plugin-react/7.30.1_eslint@8.18.0: - resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.3 - doctrine: 2.1.0 - eslint: 8.18.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - - /eslint-scope/5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - /eslint-scope/7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - /eslint-utils/3.0.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-utils/3.0.0_eslint@8.18.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.18.0 - eslint-visitor-keys: 2.1.0 - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - - /eslint-visitor-keys/3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /eslint/8.18.0: - resolution: {integrity: sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.9.5 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-utils: 3.0.0_eslint@8.18.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 6.0.2 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - v8-compile-cache: 2.4.0 - transitivePeerDependencies: - - supports-color - - /esniff/2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - dev: false - - /espree/9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2_acorn@8.14.1 - eslint-visitor-keys: 3.4.3 - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - /esquery/1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - - /estraverse/4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - /etag/1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - - /euclidean-distance/1.0.0: - resolution: {integrity: sha512-3+1fOi9GKT2PhSX+uKZ/cX4F98wLY2gTibZPPZeToEPvHZNLnnoymcJgQzWeeIMvqciQRIhn9KEKY7QVplC7hQ==} - dev: false - - /event-emitter/0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - dev: false - - /eventemitter3/4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /exit/0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expand-brackets/2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: false - - /expand-tilde/2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 - dev: false - - /expect/29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - 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 - - /express/4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - dev: true - - /ext/1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - dependencies: - type: 2.7.3 - dev: false - - /extend-shallow/1.1.4: - resolution: {integrity: sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 1.1.0 - dev: false - - /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: false - - /extend-shallow/3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: false - - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false - - /extglob/2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: false - - /fancy-log/1.3.3: - resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==} - engines: {node: '>= 0.10'} - dependencies: - ansi-gray: 0.1.1 - color-support: 1.1.3 - parse-node-version: 1.0.1 - time-stamp: 1.1.0 - dev: false - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - /fast-diff/1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - - /fast-glob/3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - /fast-levenshtein/1.1.4: - resolution: {integrity: sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==} - dev: false - - /fast-levenshtein/2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - /fast-uri/3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - dev: true - - /fastq/1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - dependencies: - reusify: 1.1.0 - - /fb-watchman/2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - - /file-entry-cache/6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - - /file-source/0.6.1: - resolution: {integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==} - dependencies: - stream-source: 0.3.5 - - /file-uri-to-path/1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - dev: false - optional: true - - /filelist/1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - dependencies: - minimatch: 5.1.6 - dev: true - - /fill-range/4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: false - - /fill-range/7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /finalhandler/1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - dev: true - - /find-up/1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - dev: false - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /findup-sync/2.0.0: - resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} - engines: {node: '>= 0.10'} - dependencies: - detect-file: 1.0.0 - is-glob: 3.1.0 - micromatch: 3.1.10 - resolve-dir: 1.0.1 - dev: false - - /findup-sync/3.0.0: - resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} - engines: {node: '>= 0.10'} - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 3.1.10 - resolve-dir: 1.0.1 - dev: false - - /fined/1.2.0: - resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} - engines: {node: '>= 0.10'} - dependencies: - expand-tilde: 2.0.2 - is-plain-object: 2.0.4 - object.defaults: 1.1.0 - object.pick: 1.3.0 - parse-filepath: 1.0.2 - dev: false - - /flagged-respawn/1.0.1: - resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} - engines: {node: '>= 0.10'} - dev: false - - /flat-cache/3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - - /flat/5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - - /flatted/3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - /flush-write-stream/1.1.1: - resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - dev: false - - /focus-lock/1.3.6: - resolution: {integrity: sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==} - engines: {node: '>=10'} - dependencies: - tslib: 2.8.1 - - /follow-redirects/1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - - /for-each/0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - - /for-in/1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: false - - /for-own/1.0.0: - resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - dev: false - - /fork-stream/0.0.4: - resolution: {integrity: sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==} - dev: false - - /form-data/4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - - /forwarded/0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: true - - /fraction.js/4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - dev: false - - /fragment-cache/0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: false - - /fresh/0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true - - /fs-mkdirp-stream/1.0.0: - resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} - engines: {node: '>= 0.10'} - dependencies: - graceful-fs: 4.2.11 - through2: 2.0.5 - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents/1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - requiresBuild: true - dependencies: - bindings: 1.5.0 - nan: 2.22.2 - dev: false - optional: true - - /fsevents/2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true - - /function-bind/1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - /function.prototype.name/1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - - /functional-red-black-tree/1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - /functions-have-names/1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - /gauge/3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: true - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - /geobuf/3.0.2: - resolution: {integrity: sha512-ASgKwEAQQRnyNFHNvpd5uAwstbVYmiTW0Caw3fBb509tNTqXyAAPMyFs5NNihsLZhLxU1j/kjFhkhLWA9djuVg==} - hasBin: true - dependencies: - concat-stream: 2.0.0 - pbf: 3.3.0 - shapefile: 0.6.6 - - /geojson-dissolve/3.1.0: - resolution: {integrity: sha512-JXHfn+A3tU392HA703gJbjmuHaQOAE/C1KzbELCczFRFux+GdY6zt1nKb1VMBHp4LWeE7gUY2ql+g06vJqhiwQ==} - dependencies: - '@turf/meta': 3.14.0 - geojson-flatten: 0.2.4 - geojson-linestring-dissolve: 0.0.1 - topojson-client: 3.1.0 - topojson-server: 3.0.1 - - /geojson-flatten/0.2.4: - resolution: {integrity: sha512-LiX6Jmot8adiIdZ/fthbcKKPOfWjTQchX/ggHnwMZ2e4b0I243N1ANUos0LvnzepTEsj0+D4fIJ5bKhBrWnAHA==} - hasBin: true - dependencies: - get-stdin: 6.0.0 - minimist: 1.2.0 - - /geojson-linestring-dissolve/0.0.1: - resolution: {integrity: sha512-Y8I2/Ea28R/Xeki7msBcpMvJL2TaPfaPKP8xqueJfQ9/jEhps+iOJxOR2XCBGgVb12Z6XnDb1CMbaPfLepsLaw==} - - /get-caller-file/1.0.3: - resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} - dev: false - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - /get-func-name/2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true - - /get-intrinsic/1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - /get-proto/1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - /get-stdin/6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /get-symbol-description/1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - - /get-value/2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: false - - /gifuct-js/2.1.2: - resolution: {integrity: sha512-rI2asw77u0mGgwhV3qA+OEgYqaDn5UNqgs+Bx0FGwSpuqfYn+Ir6RQY5ENNQ8SbIiG/m5gVa7CD5RriO4f4Lsg==} - dependencies: - js-binary-schema-parser: 2.0.3 - - /glob-parent/3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - dev: false - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - - /glob-stream/6.1.0: - resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} - engines: {node: '>= 0.10'} - dependencies: - extend: 3.0.2 - glob: 7.2.3 - glob-parent: 3.1.0 - is-negated-glob: 1.0.0 - ordered-read-streams: 1.0.1 - pumpify: 1.5.1 - readable-stream: 2.3.8 - remove-trailing-separator: 1.1.0 - to-absolute-glob: 2.0.2 - unique-stream: 2.3.1 - dev: false - - /glob-watcher/5.0.5: - resolution: {integrity: sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==} - engines: {node: '>= 0.10'} - dependencies: - anymatch: 2.0.0 - async-done: 1.3.2 - chokidar: 2.1.8 - is-negated-glob: 1.0.0 - just-debounce: 1.1.0 - normalize-path: 3.0.0 - object.defaults: 1.1.0 - dev: false - - /glob/7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /glob/8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: false - - /global-modules/1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - dev: false - - /global-prefix/1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - dev: false - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - /globals/13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - - /globalthis/1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - /glogg/1.0.2: - resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==} - engines: {node: '>= 0.10'} - dependencies: - sparkles: 1.0.1 - dev: false - - /gopd/1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - /graceful-fs/4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - /growl/1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - dev: true - - /gulp-clean/0.4.0: - resolution: {integrity: sha512-DARK8rNMo4lHOFLGTiHEJdf19GuoBDHqGUaypz+fOhrvOs3iFO7ntdYtdpNxv+AzSJBx/JfypF0yEj9ks1IStQ==} - engines: {node: '>=0.9'} - dependencies: - fancy-log: 1.3.3 - plugin-error: 0.1.2 - rimraf: 2.7.1 - through2: 2.0.5 - vinyl: 2.2.1 - dev: false - - /gulp-cli/2.3.0: - resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==} - engines: {node: '>= 0.10'} - hasBin: true - dependencies: - ansi-colors: 1.1.0 - archy: 1.0.0 - array-sort: 1.0.0 - color-support: 1.1.3 - concat-stream: 1.6.2 - copy-props: 2.0.5 - fancy-log: 1.3.3 - gulplog: 1.0.0 - interpret: 1.4.0 - isobject: 3.0.1 - liftoff: 3.1.0 - matchdep: 2.0.0 - mute-stdout: 1.0.1 - pretty-hrtime: 1.0.3 - replace-homedir: 1.0.0 - semver-greatest-satisfied-range: 1.1.0 - v8flags: 3.2.0 - yargs: 7.1.2 - dev: false - - /gulp-if/3.0.0: - resolution: {integrity: sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==} - dependencies: - gulp-match: 1.1.0 - ternary-stream: 3.0.0 - through2: 3.0.2 - dev: false - - /gulp-match/1.1.0: - resolution: {integrity: sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==} - dependencies: - minimatch: 3.1.2 - dev: false - - /gulp-replace/1.1.4: - resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} - engines: {node: '>=10'} - dependencies: - '@types/node': 22.15.1 - '@types/vinyl': 2.0.7 - istextorbinary: 3.3.0 - replacestream: 4.0.3 - yargs-parser: 21.1.1 - dev: false - - /gulp-sourcemaps/3.0.0: - resolution: {integrity: sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==} - engines: {node: '>= 6'} - dependencies: - '@gulp-sourcemaps/identity-map': 2.0.1 - '@gulp-sourcemaps/map-sources': 1.0.0 - acorn: 6.4.2 - convert-source-map: 1.9.0 - css: 3.0.0 - debug-fabulous: 1.1.0 - detect-newline: 2.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - strip-bom-string: 1.0.0 - through2: 2.0.5 - dev: false - - /gulp-typescript/6.0.0-alpha.1_typescript@4.9.5: - resolution: {integrity: sha512-KoT0TTfjfT7w3JItHkgFH1T/zK4oXWC+a8xxKfniRfVcA0Fa1bKrIhztYelYmb+95RB80OLMBreknYkdwzdi2Q==} - engines: {node: '>= 8'} - peerDependencies: - typescript: '~2.7.1 || >=2.8.0-dev || >=2.9.0-dev || ~3.0.0 || >=3.0.0-dev || >=3.1.0-dev || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.7.0-dev ' - dependencies: - ansi-colors: 4.1.3 - plugin-error: 1.0.1 - source-map: 0.7.4 - through2: 3.0.2 - typescript: 4.9.5 - vinyl: 2.2.1 - vinyl-fs: 3.0.3 - dev: false - - /gulp/4.0.2: - resolution: {integrity: sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==} - engines: {node: '>= 0.10'} - hasBin: true - dependencies: - glob-watcher: 5.0.5 - gulp-cli: 2.3.0 - undertaker: 1.3.0 - vinyl-fs: 3.0.3 - dev: false - - /gulplog/1.0.0: - resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==} - engines: {node: '>= 0.10'} - dependencies: - glogg: 1.0.2 - dev: false - - /has-bigints/1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-property-descriptors/1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.1 - - /has-proto/1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - - /has-symbols/1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - /has-tostringtag/1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.1.0 - - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true - - /has-value/0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: false - - /has-value/1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: false - - /has-values/0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: false - - /has-values/1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: false - - /hasown/2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - - /highlight.js/11.11.1: - resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} - engines: {node: '>=12.0.0'} - dev: false - - /homedir-polyfill/1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 - dev: false - - /hosted-git-info/2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - /html-encoding-sniffer/3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - dependencies: - whatwg-encoding: 2.0.0 - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /htmlparser2/4.1.0: - resolution: {integrity: sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==} - dependencies: - domelementtype: 2.3.0 - domhandler: 3.3.0 - domutils: 2.8.0 - entities: 2.2.0 - dev: true - - /http-errors/2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - - /http-proxy-agent/5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - - /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - /ignore/5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - /image-size/0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true - requiresBuild: true - optional: true - - /immutable/5.1.1: - resolution: {integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==} - dev: true - - /import-fresh/3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - /import-local/3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false - - /internal-slot/1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - - /interpret/1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - dev: false - - /invert-kv/1.0.0: - resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} - engines: {node: '>=0.10.0'} - dev: false - - /ipaddr.js/1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: true - - /is-absolute/1.0.0: - resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} - engines: {node: '>=0.10.0'} - dependencies: - is-relative: 1.0.0 - is-windows: 1.0.2 - dev: false - - /is-accessor-descriptor/1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - dependencies: - hasown: 2.0.2 - dev: false - - /is-arguments/1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - dev: true - - /is-array-buffer/3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - /is-arrayish/0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - /is-async-function/2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - /is-bigint/1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - dependencies: - has-bigints: 1.1.0 - - /is-binary-path/1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} - dependencies: - binary-extensions: 1.13.1 - dev: false - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: true - - /is-boolean-object/1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - - /is-builtin-module/3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 - dev: false - - /is-callable/1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - /is-core-module/2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.2 - - /is-data-descriptor/1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.2 - dev: false - - /is-data-view/1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - /is-date-object/1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - /is-descriptor/0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - dev: false - - /is-descriptor/1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - dev: false - - /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false - - /is-extendable/1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: false - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - /is-finalizationregistry/1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - - /is-fullwidth-code-point/1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - dependencies: - number-is-nan: 1.0.1 - dev: false - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - - /is-generator-function/1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - /is-glob/3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-map/2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - /is-module/1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: false - - /is-negated-glob/1.0.0: - resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} - engines: {node: '>=0.10.0'} - dev: false - - /is-number-object/1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - /is-number/3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /is-number/4.0.0: - resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - - /is-plain-object/5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: false - - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - /is-promise/2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - dev: false - - /is-reference/1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - dependencies: - '@types/estree': 1.0.7 - dev: false - - /is-regex/1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - /is-relative/1.0.0: - resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} - engines: {node: '>=0.10.0'} - dependencies: - is-unc-path: 1.0.0 - dev: false - - /is-set/2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - /is-shared-array-buffer/1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-string/1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - /is-symbol/1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - - /is-typed-array/1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.19 - - /is-unc-path/1.0.0: - resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} - engines: {node: '>=0.10.0'} - dependencies: - unc-path-regex: 0.1.2 - dev: false - - /is-unicode-supported/0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - - /is-url/1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - dev: true - - /is-utf8/0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: false - - /is-valid-glob/1.0.0: - resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} - engines: {node: '>=0.10.0'} - dev: false - - /is-weakmap/2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - /is-weakref/1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - - /is-weakset/2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - /is-what/3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false - - /isarray/0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isarray/2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /isobject/2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: false - - /isobject/3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false - - /istanbul-lib-coverage/3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - /istanbul-lib-instrument/5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.27.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /istanbul-lib-instrument/6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.26.10 - '@babel/parser': 7.27.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report/3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true - - /istextorbinary/3.3.0: - resolution: {integrity: sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==} - engines: {node: '>=8'} - dependencies: - binaryextensions: 2.3.0 - textextensions: 3.3.0 - dev: false - - /jake/10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - dev: true - - /jest-changed-files/29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - dev: true - - /jest-circus/29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-cli/29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0 - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /jest-cli/29.7.0_@types+node@22.15.1: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0_@types+node@22.15.1 - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0_@types+node@22.15.1 - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /jest-cli/29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0_ts-node@10.9.2 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /jest-config/29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0_@babel+core@7.20.12 - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-config/29.7.0_@types+node@22.15.1: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - babel-jest: 29.7.0_@babel+core@7.20.12 - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-config/29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - babel-jest: 29.7.0_@babel+core@7.20.12 - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.2_h6k6hc6r4guqd4kfcmr723djsq - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-diff/29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - /jest-docblock/29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each/29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - dev: true - - /jest-environment-jsdom/29.5.0: - resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 22.15.1 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - /jest-environment-jsdom/29.5.0_canvas@2.11.2: - resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 22.15.1 - canvas: 2.11.2 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3_canvas@2.11.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node/29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - jest-mock: 29.7.0 - jest-util: 29.7.0 - dev: true - - /jest-get-type/29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - /jest-haste-map/29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.1 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - /jest-leak-detector/29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true - - /jest-matcher-utils/29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - /jest-message-util/29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.26.2 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - /jest-mock/29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - jest-util: 29.7.0 - - /jest-pnp-resolver/1.2.3_jest-resolve@29.7.0: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.7.0 - dev: true - - /jest-regex-util/29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - /jest-resolve-dependencies/29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve/29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3_jest-resolve@29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.10 - resolve.exports: 2.0.3 - slash: 3.0.0 - dev: true - - /jest-runner/29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime/29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot/29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.20.12 - '@babel/generator': 7.21.1 - '@babel/plugin-syntax-jsx': 7.25.9_@babel+core@7.20.12 - '@babel/plugin-syntax-typescript': 7.25.9_@babel+core@7.20.12 - '@babel/types': 7.27.0 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0_@babel+core@7.20.12 - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 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 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - /jest-util/29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - /jest-validate/29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - dev: true - - /jest-watcher/29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.15.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - dev: true - - /jest-worker/29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 22.15.1 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - /jest/29.5.0: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /jest/29.5.0_@types+node@22.15.1: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0_@types+node@22.15.1 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /jest/29.5.0_mb2oyrpzg3jg7gqunu3hmdvhw4: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0_ts-node@10.9.2 - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /js-binary-schema-parser/2.0.3: - resolution: {integrity: sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==} - - /js-string-escape/1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - dev: true - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - - /jsdom/20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.14.1 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.5.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.2 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.1 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - /jsdom/20.0.3_canvas@2.11.2: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.14.1 - acorn-globals: 7.0.1 - canvas: 2.11.2 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.5.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.2 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.1 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /jsdom/22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - cssstyle: 3.0.0 - data-urls: 4.0.0 - decimal.js: 10.5.0 - domexception: 4.0.0 - form-data: 4.0.2 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 - parse5: 7.3.0 - rrweb-cssom: 0.6.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - ws: 8.18.1 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - /jsesc/3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - dev: false - - /jsesc/3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - /json-parse-better-errors/1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - /json-schema-traverse/1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - - /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - /json5/1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5/2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - /jsonrepair/3.8.1: - resolution: {integrity: sha512-5wnjaO53EJOhfLFY92nvBz2B9gqF9ql/D4HKUb1WOSBaqtVcAifFfmurblnhCJn/ySqKFA8U3n7nhGMAu/hEjQ==} - hasBin: true - dev: false - - /jstat/1.9.6: - resolution: {integrity: sha512-rPBkJbK2TnA8pzs93QcDDPlKcrtZWuuCo2dVR0TFLOJSxhqfWOVCSp8aV3/oSbn+4uY4yw1URtLpHQedtmXfug==} - dev: false - - /jsx-ast-utils/3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - - /just-debounce/1.1.0: - resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==} - dev: false - - /keyv/4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - - /kind-of/1.1.0: - resolution: {integrity: sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==} - engines: {node: '>=0.10.0'} - dev: false - - /kind-of/3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of/4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of/5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: false - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false - - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - - /language-subtag-registry/0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - dev: true - - /language-tags/1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - dependencies: - language-subtag-registry: 0.3.23 - dev: true - - /last-run/1.1.1: - resolution: {integrity: sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==} - engines: {node: '>= 0.10'} - dependencies: - default-resolution: 2.0.0 - es6-weak-map: 2.0.3 - dev: false - - /lazystream/1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - dependencies: - readable-stream: 2.3.8 - dev: false - - /lcid/1.0.0: - resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} - engines: {node: '>=0.10.0'} - dependencies: - invert-kv: 1.0.0 - dev: false - - /lead/1.0.0: - resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} - engines: {node: '>= 0.10'} - dependencies: - flush-write-stream: 1.1.1 - dev: false - - /less/4.1.3: - resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.8.1 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.3.1 - source-map: 0.6.1 - - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn/0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - /liftoff/3.1.0: - resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} - engines: {node: '>= 0.8'} - dependencies: - extend: 3.0.2 - findup-sync: 3.0.0 - fined: 1.2.0 - flagged-respawn: 1.0.1 - is-plain-object: 2.0.4 - object.map: 1.0.1 - rechoir: 0.6.2 - resolve: 1.22.10 - dev: false - - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /linkify-it/4.0.1: - resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} - dependencies: - uc.micro: 1.0.6 - dev: false - - /load-json-file/1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 - dev: false - - /load-json-file/4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - - /local-pkg/0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.debounce/4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: false - - /lodash.memoize/4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /log-symbols/4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - - /loose-envify/1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - - /lottie-web/5.12.2: - resolution: {integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==} - - /loupe/2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - dependencies: - get-func-name: 2.0.2 - dev: true - - /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - - /lru-queue/0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - dependencies: - es5-ext: 0.10.64 - dev: false - - /magic-string/0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - /magic-string/0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true - - /make-dir/2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - requiresBuild: true - dependencies: - pify: 4.0.1 - semver: 5.7.2 - optional: true - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - - /make-dir/4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - dependencies: - semver: 7.7.1 - dev: true - - /make-error/1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - /make-iterator/1.0.1: - resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: false - - /makeerror/1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - - /map-cache/0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: false - - /map-visit/1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: false - - /markdown-it/13.0.2: - resolution: {integrity: sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==} - hasBin: true - dependencies: - argparse: 2.0.1 - entities: 3.0.1 - linkify-it: 4.0.1 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: false - - /marked/0.3.19: - resolution: {integrity: sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==} - engines: {node: '>=0.10.0'} - hasBin: true - dev: true - - /matchdep/2.0.0: - resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==} - engines: {node: '>= 0.10.0'} - dependencies: - findup-sync: 2.0.0 - micromatch: 3.1.10 - resolve: 1.22.10 - stack-trace: 0.0.10 - dev: false - - /math-intrinsics/1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - /md5-hex/3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} - dependencies: - blueimp-md5: 2.19.0 - dev: true - - /mdurl/1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: false - - /media-typer/0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: true - - /memoizee/0.4.17: - resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} - engines: {node: '>=0.12'} - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-weak-map: 2.0.3 - event-emitter: 0.3.5 - is-promise: 2.2.2 - lru-queue: 0.1.0 - next-tick: 1.1.0 - timers-ext: 0.1.8 - dev: false - - /memorystream/0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true - - /merge-descriptors/1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - dev: true - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /methods/1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true - - /micromatch/3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: false - - /micromatch/4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - - /mime/1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - /mime/3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - /mimic-response/2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - dev: true - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimatch/4.2.1: - resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch/5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - - /minimatch/9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimist/1.2.0: - resolution: {integrity: sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==} - - /minimist/1.2.6: - resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} - - /minimist/1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: true - - /minipass/5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: true - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: true - - /mixin-deep/1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: false - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /mlly/1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - dependencies: - acorn: 8.14.1 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.1 - dev: true - - /mocha/9.2.2: - resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} - engines: {node: '>= 12.0.0'} - hasBin: true - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3_supports-color@8.1.1 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - dev: true - - /ms/2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - /mute-stdout/1.0.1: - resolution: {integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==} - engines: {node: '>= 0.10'} - dev: false - - /nan/2.22.2: - resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} - - /nanoid/3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /nanoid/3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - /nanomatch/1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: false - - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - /needle/3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} - engines: {node: '>= 4.4.x'} - hasBin: true - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - sax: 1.4.1 - optional: true - - /negotiator/0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - - /next-tick/1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: false - - /nice-try/1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true - - /node-addon-api/7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - dev: true - optional: true - - /node-fetch/2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - - /node-int64/0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - /node-releases/2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - /node-sql-parser/4.17.0: - resolution: {integrity: sha512-3IhovpmUBpcETnoKK/KBdkz2mz53kVG5E1dnqz1QuYvtzdxYZW5xaGGEvW9u6Yyy2ivwR3eUZrn9inmEVef02w==} - engines: {node: '>=8'} - dependencies: - big-integer: 1.6.52 - dev: false - - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - - /normalize-package-data/2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.10 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - - /normalize-path/2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - dependencies: - remove-trailing-separator: 1.1.0 - dev: false - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - /normalize-range/0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - dev: false - - /now-and-later/2.0.1: - resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} - engines: {node: '>= 0.10'} - dependencies: - once: 1.4.0 - dev: false - - /npm-run-all/4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.6 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.8.2 - string.prototype.padend: 3.1.6 - dev: true - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /npmlog/5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - dev: true - - /number-is-nan/1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - dev: false - - /number-precision/1.6.0: - resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==} - - /nwsapi/2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - /object-copy/0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: false - - /object-inspect/1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - /object-visit/1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - - /object.assign/4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - /object.defaults/1.1.0: - resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} - engines: {node: '>=0.10.0'} - dependencies: - array-each: 1.0.1 - array-slice: 1.1.0 - for-own: 1.0.0 - isobject: 3.0.1 - dev: false - - /object.entries/1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - /object.fromentries/2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - - /object.groupby/1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - dev: true - - /object.hasown/1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - - /object.map/1.0.1: - resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} - engines: {node: '>=0.10.0'} - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - dev: false - - /object.pick/1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - - /object.reduce/1.0.1: - resolution: {integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==} - engines: {node: '>=0.10.0'} - dependencies: - for-own: 1.0.0 - make-iterator: 1.0.1 - dev: false - - /object.values/1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - /on-finished/2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - - /optionator/0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - /ordered-read-streams/1.0.1: - resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} - dependencies: - readable-stream: 2.3.8 - dev: false - - /os-locale/1.4.0: - resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} - engines: {node: '>=0.10.0'} - dependencies: - lcid: 1.0.0 - dev: false - - /own-keys/1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-limit/4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.2.1 - dev: true - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - - /parse-filepath/1.0.2: - resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} - engines: {node: '>=0.8'} - dependencies: - is-absolute: 1.0.0 - map-cache: 0.2.2 - path-root: 0.1.1 - dev: false - - /parse-json/2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - dependencies: - error-ex: 1.3.2 - dev: false - - /parse-json/4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - - /parse-node-version/1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} - - /parse-passwd/1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: false - - /parse-svg-path/0.1.2: - resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} - - /parse5/7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - dependencies: - entities: 6.0.0 - - /parseurl/1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - - /pascalcase/0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: false - - /path-browserify/1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - /path-data-parser/0.1.0: - resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} - - /path-dirname/1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - dev: false - - /path-equal/1.2.5: - resolution: {integrity: sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g==} - dev: false - - /path-exists/2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie-promise: 2.0.1 - dev: false - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - /path-key/2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-root-regex/0.1.2: - resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} - engines: {node: '>=0.10.0'} - dev: false - - /path-root/0.1.1: - resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} - engines: {node: '>=0.10.0'} - dependencies: - path-root-regex: 0.1.2 - dev: false - - /path-source/0.1.3: - resolution: {integrity: sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==} - dependencies: - array-source: 0.0.4 - file-source: 0.6.1 - - /path-to-regexp/0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - dev: true - - /path-type/1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - pinkie-promise: 2.0.1 - dev: false - - /path-type/3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - /pathe/1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: true - - /pathe/2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - dev: true - - /pathval/1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - - /pbf/3.3.0: - resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} - hasBin: true - dependencies: - ieee754: 1.2.1 - resolve-protobuf-schema: 2.1.0 - - /picocolors/0.2.1: - resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} - dev: false - - /picocolors/1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - /picomatch/4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - /pidtree/0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: false - - /pify/3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: true - - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - optional: true - - /pinkie-promise/2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: false - - /pinkie/2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: false - - /pirates/4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /pkg-types/1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - dev: true - - /plugin-error/0.1.2: - resolution: {integrity: sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-cyan: 0.1.1 - ansi-red: 0.1.1 - arr-diff: 1.1.0 - arr-union: 2.1.0 - extend-shallow: 1.1.4 - dev: false - - /plugin-error/1.0.1: - resolution: {integrity: sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==} - engines: {node: '>= 0.10'} - dependencies: - ansi-colors: 1.1.0 - arr-diff: 4.0.0 - arr-union: 3.1.0 - extend-shallow: 3.0.2 - dev: false - - /point-at-length/1.1.0: - resolution: {integrity: sha512-nNHDk9rNEh/91o2Y8kHLzBLNpLf80RYd2gCun9ss+V0ytRSf6XhryBTx071fesktjbachRmGuUbId+JQmzhRXw==} - dependencies: - abs-svg-path: 0.1.1 - isarray: 0.0.1 - parse-svg-path: 0.1.2 - - /points-on-curve/0.2.0: - resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} - - /points-on-path/0.2.1: - resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - - /posix-character-classes/0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: false - - /possible-typed-array-names/1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - /postcss-value-parser/4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false - - /postcss/7.0.39: - resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} - engines: {node: '>=6.0.0'} - dependencies: - picocolors: 0.2.1 - source-map: 0.6.1 - dev: false - - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - /prelude-ls/1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - /prettier-linter-helpers/1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.3.0 - dev: true - - /pretty-format/27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /pretty-format/29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - /pretty-hrtime/1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: false - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - - /prop-types/15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - /protocol-buffers-schema/3.6.0: - resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} - - /proxy-addr/2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: true - - /proxy-from-env/1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false - - /prr/1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - optional: true - - /psl/1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - dependencies: - punycode: 2.3.1 - - /pump/2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - - /pumpify/1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - dev: false - - /punycode/2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - /pure-rand/6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - dev: true - - /qs/6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.1.0 - dev: true - - /querystringify/2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - /randombytes/2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - - /range-parser/1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true - - /raw-body/2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true - - /react-clientside-effect/1.2.7_react@18.3.1: - resolution: {integrity: sha512-gce9m0Pk/xYYMEojRI9bgvqQAkl6hm7ozQvqWPyQx+kULiatdHgkNM1QG4DQRx5N9BAzWSCJmt9mMV8/KsdgVg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - dependencies: - '@babel/runtime': 7.27.0 - react: 18.3.1 - - /react-dom/18.3.1_react@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - /react-focus-lock/2.13.6_po4keleilqsm4vrhgxl2cr46aq: - resolution: {integrity: sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.27.0 - '@types/react': 18.3.20 - focus-lock: 1.3.6 - prop-types: 15.8.1 - react: 18.3.1 - react-clientside-effect: 1.2.7_react@18.3.1 - use-callback-ref: 1.3.3_po4keleilqsm4vrhgxl2cr46aq - use-sidecar: 1.1.3_po4keleilqsm4vrhgxl2cr46aq - - /react-is/16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - /react-is/17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - - /react-is/18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - /react-refresh/0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - dev: true - - /react-router-dom/6.9.0_nnrd3gsncyragczmpvfhocinkq: - resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - dependencies: - '@remix-run/router': 1.4.0 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - react-router: 6.9.0_react@18.3.1 - - /react-router/6.9.0_react@18.3.1: - resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16.8' - dependencies: - '@remix-run/router': 1.4.0 - react: 18.3.1 - - /react-transition-group/4.4.5_nnrd3gsncyragczmpvfhocinkq: - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' - dependencies: - '@babel/runtime': 7.27.0 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1_react@18.3.1 - - /react/18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - - /read-pkg-up/1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - dev: false - - /read-pkg/1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - dev: false - - /read-pkg/3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - - /readable-stream/1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - /readable-stream/2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream/3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readdirp/2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} - dependencies: - graceful-fs: 4.2.11 - micromatch: 3.1.10 - readable-stream: 2.3.8 - dev: false - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /readdirp/4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - dev: true - - /rechoir/0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.10 - dev: false - - /reflect.getprototypeof/1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - /regenerate-unicode-properties/10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: false - - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: false - - /regenerator-runtime/0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: true - - /regenerator-runtime/0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - /regenerator-transform/0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - dependencies: - '@babel/runtime': 7.27.0 - dev: false - - /regex-not/1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: false - - /regexp.prototype.flags/1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - - /regexpu-core/6.2.0: - resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - dev: false - - /regjsgen/0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - dev: false - - /regjsparser/0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - dependencies: - jsesc: 3.0.2 - dev: false - - /remove-bom-buffer/3.0.0: - resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - is-utf8: 0.2.1 - dev: false - - /remove-bom-stream/1.2.0: - resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} - engines: {node: '>= 0.10'} - dependencies: - remove-bom-buffer: 3.0.0 - safe-buffer: 5.2.1 - through2: 2.0.5 - dev: false - - /remove-trailing-separator/1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: false - - /repeat-element/1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: false - - /repeat-string/1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false - - /replace-ext/1.0.1: - resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} - engines: {node: '>= 0.10'} - dev: false - - /replace-homedir/1.0.0: - resolution: {integrity: sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==} - engines: {node: '>= 0.10'} - dependencies: - homedir-polyfill: 1.0.3 - is-absolute: 1.0.0 - remove-trailing-separator: 1.1.0 - dev: false - - /replacestream/4.0.3: - resolution: {integrity: sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==} - dependencies: - escape-string-regexp: 1.0.5 - object-assign: 4.1.1 - readable-stream: 2.3.8 - dev: false - - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename/1.0.1: - resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} - dev: false - - /requires-port/1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - /resize-observer-polyfill/1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - - /resolve-cwd/3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-dir/1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - dev: false - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - /resolve-options/1.1.0: - resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} - engines: {node: '>= 0.10'} - dependencies: - value-or-function: 3.0.0 - dev: false - - /resolve-protobuf-schema/2.1.0: - resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} - dependencies: - protocol-buffers-schema: 3.6.0 - - /resolve-url/0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - - /resolve.exports/2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - dev: true - - /resolve/1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /resolve/2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /restore-cursor/3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: false - - /ret/0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: false - - /reusify/1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - /rimraf/2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - dependencies: - glob: 7.2.3 - - /rollup/2.79.2: - resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /rollup/3.20.5: - resolution: {integrity: sha512-Mx6NE3nLPIP6a9ReV4dTPOYYmDiyarJNtSbc37Jx0jvh8SHySoFPgyZAp9aDP3LnYvaJOrz+fclcwq3oZDzlnA==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /roughjs/4.5.2: - resolution: {integrity: sha512-2xSlLDKdsWyFxrveYWk9YQ/Y9UfK38EAMRNkYkMqYBJvPX8abCa9PN0x3w02H8Oa6/0bcZICJU+U95VumPqseg==} - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - points-on-path: 0.2.1 - - /rrweb-cssom/0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: false - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - - /rw/1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - - /safe-array-concat/1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /safe-push-apply/1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - /safe-regex-test/1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - /safe-regex/1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: false - - /safe-stable-stringify/2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - dev: false - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - /sass/1.87.0: - resolution: {integrity: sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - chokidar: 4.0.3 - immutable: 5.1.1 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.1 - dev: true - - /sax/1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - optional: true - - /saxes/6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - dependencies: - xmlchars: 2.2.0 - - /scheduler/0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - dependencies: - loose-envify: 1.4.0 - - /scroll-into-view-if-needed/2.2.20: - resolution: {integrity: sha512-P9kYMrhi9f6dvWwTGpO5I3HgjSU/8Mts7xL3lkoH5xlewK7O9Obdc5WmMCzppln7bCVGNmf3qfoZXrpCeyNJXw==} - dependencies: - compute-scroll-into-view: 1.0.11 - - /semver-greatest-satisfied-range/1.1.0: - resolution: {integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==} - engines: {node: '>= 0.10'} - dependencies: - sver-compat: 1.5.0 - dev: false - - /semver/5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - /semver/6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - /semver/7.3.4: - resolution: {integrity: sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /semver/7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - /send/0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - dev: true - - /serialize-javascript/6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - dev: true - - /serialize-javascript/6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - dependencies: - randombytes: 2.1.0 - dev: false - - /serve-static/1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - dev: true - - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - /set-function-length/1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - /set-function-name/2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - /set-proto/1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - - /set-value/2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: false - - /setprototypeof/1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: true - - /shallowequal/1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - /shapefile/0.6.6: - resolution: {integrity: sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==} - hasBin: true - dependencies: - array-source: 0.0.4 - commander: 2.20.3 - path-source: 0.1.3 - slice-source: 0.4.1 - stream-source: 0.3.5 - text-encoding: 0.6.4 - - /shebang-command/1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex/1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /shell-quote/1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} - engines: {node: '>= 0.4'} - dev: true - - /side-channel-list/1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - /side-channel-map/1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - /side-channel-weakmap/1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - /side-channel/1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - /siginfo/2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - /simple-concat/1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true - - /simple-get/3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} - dependencies: - decompress-response: 4.2.1 - once: 1.4.0 - simple-concat: 1.0.1 - dev: true - - /simple-statistics/7.8.8: - resolution: {integrity: sha512-CUtP0+uZbcbsFpqEyvNDYjJCl+612fNgjT8GaVuvMG7tBuJg8gXGpsP5M7X658zy0IcepWOZ6nPBu1Qb9ezA1w==} - - /simple-swizzle/0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - - /simplify-geojson/1.0.5: - resolution: {integrity: sha512-02l1W4UipP5ivNVq6kX15mAzCRIV1oI3tz0FUEyOsNiv1ltuFDjbNhO+nbv/xhbDEtKqWLYuzpWhUsJrjR/ypA==} - hasBin: true - dependencies: - concat-stream: 1.4.11 - minimist: 1.2.6 - simplify-geometry: 0.0.2 - - /simplify-geometry/0.0.2: - resolution: {integrity: sha512-ZEyrplkqgCqDlL7V8GbbYgTLlcnNF+MWWUdy8s8ZeJru50bnI71rDew/I+HG36QS2mPOYAq1ZjwNXxHJ8XOVBw==} - - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - /slash/4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: false - - /slice-source/0.4.1: - resolution: {integrity: sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==} - - /smob/0.0.6: - resolution: {integrity: sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw==} - dev: false - - /snapdragon-node/2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: false - - /snapdragon-util/3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /snapdragon/0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - dev: false - - /source-map-js/1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - /source-map-resolve/0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: false - - /source-map-resolve/0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - dev: false - - /source-map-support/0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - /source-map-url/0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: false - - /source-map/0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - /source-map/0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false - - /sparkles/1.0.1: - resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} - engines: {node: '>= 0.10'} - dev: false - - /spdx-correct/3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 - - /spdx-exceptions/2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - - /spdx-license-ids/3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - - /split-string/3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: false - - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - /stack-trace/0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: false - - /stack-utils/2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - - /stackback/0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /state-local/1.0.7: - resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - dev: true - - /static-extend/0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: false - - /statuses/2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true - - /std-env/3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} - dev: true - - /stream-exhaust/1.0.2: - resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} - - /stream-shift/1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: false - - /stream-source/0.3.5: - resolution: {integrity: sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==} - - /string-length/4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - - /string-similarity-js/2.1.4: - resolution: {integrity: sha512-uApODZNjCHGYROzDSAdCmAHf60L/pMDHnP/yk6TAbvGg7JSPZlSto/ceCI7hZEqzc53/juU2aOJFkM2yUVTMTA==} - dev: false - - /string-width/1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: false - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - /string.prototype.includes/2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - dev: true - - /string.prototype.matchall/4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - /string.prototype.padend/3.1.6: - resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - dev: true - - /string.prototype.trim/1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - /string.prototype.trimend/1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - /string.prototype.trimstart/1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - /string_decoder/0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - - /strip-ansi/3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: false - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - - /strip-bom-string/1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-bom/2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - dependencies: - is-utf8: 0.2.1 - dev: false - - /strip-bom/3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - /strip-literal/1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - dependencies: - acorn: 8.14.1 - dev: true - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /sver-compat/1.5.0: - resolution: {integrity: sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==} - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - dev: false - - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - /tar/6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: true - - /ternary-stream/3.0.0: - resolution: {integrity: sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==} - dependencies: - duplexify: 4.1.3 - fork-stream: 0.0.4 - merge-stream: 2.0.0 - through2: 3.0.2 - dev: false - - /terser/5.17.1: - resolution: {integrity: sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 - commander: 2.20.3 - source-map-support: 0.5.21 - - /test-exclude/6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - /text-encoding/0.6.4: - resolution: {integrity: sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==} - deprecated: no longer maintained - - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - /textextensions/3.3.0: - resolution: {integrity: sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==} - engines: {node: '>=8'} - dev: false - - /through2-filter/3.0.0: - resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} - dependencies: - through2: 2.0.5 - xtend: 4.0.2 - dev: false - - /through2/2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: false - - /through2/3.0.2: - resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /through2/4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.2 - dev: false - - /time-stamp/1.1.0: - resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} - engines: {node: '>=0.10.0'} - dev: false - - /time-zone/1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} - dev: true - - /timers-ext/0.1.8: - resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} - engines: {node: '>=0.12'} - dependencies: - es5-ext: 0.10.64 - next-tick: 1.1.0 - dev: false - - /tinybench/2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - dev: true - - /tinypool/0.4.0: - resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} - engines: {node: '>=14.0.0'} - dev: true - - /tinyspy/2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - dev: true - - /tmpl/1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - /to-absolute-glob/2.0.2: - resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} - engines: {node: '>=0.10.0'} - dependencies: - is-absolute: 1.0.0 - is-negated-glob: 1.0.0 - dev: false - - /to-object-path/0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /to-regex-range/2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: false - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /to-regex/3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: false - - /to-through/2.0.0: - resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} - engines: {node: '>= 0.10'} - dependencies: - through2: 2.0.5 - dev: false - - /toidentifier/1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: true - - /topojson-client/3.1.0: - resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} - hasBin: true - dependencies: - commander: 2.20.3 - - /topojson-server/3.0.1: - resolution: {integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==} - hasBin: true - dependencies: - commander: 2.20.3 - - /tough-cookie/4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - /tr46/3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - dependencies: - punycode: 2.3.1 - - /tr46/4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} - dependencies: - punycode: 2.3.1 - dev: false - - /ts-jest/29.2.6_doipufordlnvh5g4adbwayvyvy: - resolution: {integrity: sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_mb2oyrpzg3jg7gqunu3hmdvhw4 - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.1 - typescript: 4.9.5 - yargs-parser: 21.1.1 - dev: true - - /ts-node/10.9.2_h6k6hc6r4guqd4kfcmr723djsq: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.15.1 - acorn: 8.14.1 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - /ts-pattern/4.1.4: - resolution: {integrity: sha512-Mcw65oUd1w5ktKi5BRwrnz16Otwk9iv7P0dKgvbi+A1albCDgnixohSqNLuFwIp5dzxPmTPm0iDQ6p1ZJr9uGw==} - dev: false - - /tsconfig-paths/3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib/1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - /tslib/2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - /tsutils/3.21.0_typescript@4.9.5: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - - /type-check/0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - - /type-detect/4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - /type-detect/4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - dev: true - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - /type-fest/0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - - /type-is/1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: true - - /type/2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - dev: false - - /typed-array-buffer/1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - /typed-array-byte-length/1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - /typed-array-byte-offset/1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - /typed-array-length/1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - /typedarray/0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - /typedarray/0.0.7: - resolution: {integrity: sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==} - - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - /uc.micro/1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: false - - /ufo/1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - dev: true - - /unbox-primitive/1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - /unc-path-regex/0.1.2: - resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} - engines: {node: '>=0.10.0'} - dev: false - - /undertaker-registry/1.0.1: - resolution: {integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==} - engines: {node: '>= 0.10'} - dev: false - - /undertaker/1.3.0: - resolution: {integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==} - engines: {node: '>= 0.10'} - dependencies: - arr-flatten: 1.1.0 - arr-map: 2.0.2 - bach: 1.2.0 - collection-map: 1.0.0 - es6-weak-map: 2.0.3 - fast-levenshtein: 1.1.4 - last-run: 1.1.1 - object.defaults: 1.1.0 - object.reduce: 1.0.1 - undertaker-registry: 1.0.1 - dev: false - - /undici-types/5.28.4: - resolution: {integrity: sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww==} - dev: true - - /undici-types/6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - /unicode-canonical-property-names-ecmascript/2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - dev: false - - /unicode-match-property-ecmascript/2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - dev: false - - /unicode-match-property-value-ecmascript/2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - dev: false - - /unicode-property-aliases-ecmascript/2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: false - - /union-value/1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: false - - /unique-stream/2.3.1: - resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} - dependencies: - json-stable-stringify-without-jsonify: 1.0.1 - through2-filter: 3.0.0 - dev: false - - /universalify/0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - /universalify/2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - /unpipe/1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true - - /unset-value/1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: false - - /upath/1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - dev: false - - /update-browserslist-db/1.1.3_browserslist@4.24.4: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - - /urix/0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: false - - /url-parse/1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - - /use-callback-ref/1.3.3_po4keleilqsm4vrhgxl2cr46aq: - resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.20 - react: 18.3.1 - tslib: 2.8.1 - - /use-sidecar/1.1.3_po4keleilqsm4vrhgxl2cr46aq: - resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.20 - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.8.1 - - /use/3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: false - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /util/0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.0 - is-typed-array: 1.1.15 - which-typed-array: 1.1.19 - dev: true - - /utils-merge/1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true - - /v8-compile-cache-lib/3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - /v8-compile-cache/2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - - /v8-to-istanbul/9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - dev: true - - /v8flags/3.2.0: - resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} - engines: {node: '>= 0.10'} - dependencies: - homedir-polyfill: 1.0.3 - dev: false - - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - /value-or-function/3.0.0: - resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} - engines: {node: '>= 0.10'} - dev: false - - /vary/1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: true - - /vinyl-fs/3.0.3: - resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} - engines: {node: '>= 0.10'} - dependencies: - fs-mkdirp-stream: 1.0.0 - glob-stream: 6.1.0 - graceful-fs: 4.2.11 - is-valid-glob: 1.0.0 - lazystream: 1.0.1 - lead: 1.0.0 - object.assign: 4.1.7 - pumpify: 1.5.1 - readable-stream: 2.3.8 - remove-bom-buffer: 3.0.0 - remove-bom-stream: 1.2.0 - resolve-options: 1.1.0 - through2: 2.0.5 - to-through: 2.0.0 - value-or-function: 3.0.0 - vinyl: 2.2.1 - vinyl-sourcemap: 1.1.0 - dev: false - - /vinyl-sourcemap/1.1.0: - resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} - engines: {node: '>= 0.10'} - dependencies: - append-buffer: 1.0.2 - convert-source-map: 1.9.0 - graceful-fs: 4.2.11 - normalize-path: 2.1.1 - now-and-later: 2.0.1 - remove-bom-buffer: 3.0.0 - vinyl: 2.2.1 - dev: false - - /vinyl/2.2.1: - resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} - engines: {node: '>= 0.10'} - dependencies: - clone: 2.1.2 - clone-buffer: 1.0.0 - clone-stats: 1.0.0 - cloneable-readable: 1.1.3 - remove-trailing-separator: 1.1.0 - replace-ext: 1.0.1 - dev: false - - /vite-node/0.30.1_j25dxl6mgdxe7fwpg2bkfdl2f4: - resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.7.4 - pathe: 1.1.2 - picocolors: 1.1.1 - vite: 3.2.6_j25dxl6mgdxe7fwpg2bkfdl2f4 - transitivePeerDependencies: - - '@types/node' - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-plugin-css/1.0.4: - resolution: {integrity: sha512-5Tj8Lc7uwlLVd3Ns8ixDH9CjjAPS12OuIiheY4IOZuiaOwH9sAEzgB/svNMmW28ePimaNTPfyTrRX8ZONjqFqA==} - dev: true - - /vite-plugin-libcss/1.1.1_vite@3.2.6: - resolution: {integrity: sha512-WAk6U9iYWMbcu7cdw4wACpVebZiLHMyyE9KTcBzzkTt1cnXj3a7loIoIGNblx+xMb9quPpO3iRbNTOnIFDzgmg==} - peerDependencies: - vite: '*' - dependencies: - minimatch: 9.0.5 - vite: 3.2.6_74mdfjwjjuekt5dohrm44kqp7i - dev: true - - /vite/3.2.6: - resolution: {integrity: sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - esbuild: 0.15.18 - postcss: 8.4.21 - resolve: 1.22.10 - rollup: 2.79.2 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite/3.2.6_74mdfjwjjuekt5dohrm44kqp7i: - resolution: {integrity: sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 22.15.1 - esbuild: 0.15.18 - less: 4.1.3 - postcss: 8.4.21 - resolve: 1.22.10 - rollup: 2.79.2 - sass: 1.87.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vite/3.2.6_j25dxl6mgdxe7fwpg2bkfdl2f4: - resolution: {integrity: sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 22.15.1 - esbuild: 0.15.18 - less: 4.1.3 - postcss: 8.4.21 - resolve: 1.22.10 - rollup: 2.79.2 - terser: 5.17.1 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vitest/0.30.1_less@4.1.3+terser@5.17.1: - resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.20 - '@types/chai-subset': 1.3.6_@types+chai@4.3.20 - '@types/node': 22.15.1 - '@vitest/expect': 0.30.1 - '@vitest/runner': 0.30.1 - '@vitest/snapshot': 0.30.1 - '@vitest/spy': 0.30.1 - '@vitest/utils': 0.30.1 - acorn: 8.14.1 - acorn-walk: 8.3.4 - cac: 6.7.14 - chai: 4.5.0 - concordance: 5.0.4 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.17 - pathe: 1.1.2 - picocolors: 1.1.1 - source-map: 0.6.1 - std-env: 3.9.0 - strip-literal: 1.3.0 - tinybench: 2.9.0 - tinypool: 0.4.0 - vite: 3.2.6_j25dxl6mgdxe7fwpg2bkfdl2f4 - vite-node: 0.30.1_j25dxl6mgdxe7fwpg2bkfdl2f4 - why-is-node-running: 2.3.0 - transitivePeerDependencies: - - less - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /w3c-xmlserializer/4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - dependencies: - xml-name-validator: 4.0.0 - - /walker/1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - /webidl-conversions/7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - /well-known-symbols/2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - dev: true - - /whatwg-encoding/2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - dependencies: - iconv-lite: 0.6.3 - - /whatwg-mimetype/3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - /whatwg-url/11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - - /whatwg-url/12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} - dependencies: - tr46: 4.1.1 - webidl-conversions: 7.0.0 - dev: false - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - /which-boxed-primitive/1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - /which-builtin-type/1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.0 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - - /which-collection/1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - /which-module/1.0.0: - resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} - dev: false - - /which-typed-array/1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - /which/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /why-is-node-running/2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: true - - /word-wrap/1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - /workerpool/6.2.0: - resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} - dev: true - - /wrap-ansi/2.1.0: - resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} - engines: {node: '>=0.10.0'} - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - dev: false - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - /write-file-atomic/4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - /ws/8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - /xml-name-validator/4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /y18n/3.2.2: - resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - dev: false - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - /yallist/3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yargs-parser/20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - - /yargs-parser/21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - /yargs-parser/5.0.1: - resolution: {integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==} - dependencies: - camelcase: 3.0.0 - object.assign: 4.1.7 - dev: false - - /yargs-unparser/2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - dev: true - - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - /yargs/17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - /yargs/7.1.2: - resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==} - dependencies: - camelcase: 3.0.0 - cliui: 3.2.0 - decamelize: 1.2.0 - get-caller-file: 1.0.3 - os-locale: 1.4.0 - read-pkg-up: 1.0.1 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 1.0.2 - which-module: 1.0.0 - y18n: 3.2.2 - yargs-parser: 5.0.1 - dev: false - - /yn/3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - - /yocto-queue/1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} - engines: {node: '>=12.20'} - dev: true diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json deleted file mode 100644 index 0e7b1440..00000000 --- a/common/config/rush/repo-state.json +++ /dev/null @@ -1,4 +0,0 @@ -// DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. -{ - "preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" -} diff --git a/common/config/rush/rush-plugins.json b/common/config/rush/rush-plugins.json deleted file mode 100644 index 752e3732..00000000 --- a/common/config/rush/rush-plugins.json +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This configuration file manages Rush's plugin feature. - */ -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush-plugins.schema.json", - "plugins": [ - /** - * Each item configures a plugin to be loaded by Rush. - */ - // { - // /** - // * The name of the NPM package that provides the plugin. - // */ - // "packageName": "@scope/my-rush-plugin", - // /** - // * The name of the plugin. This can be found in the "pluginName" - // * field of the "rush-plugin-manifest.json" file in the NPM package folder. - // */ - // "pluginName": "my-plugin-name", - // /** - // * The name of a Rush autoinstaller that will be used for installation, which - // * can be created using "rush init-autoinstaller". Add the plugin's NPM package - // * to the package.json "dependencies" of your autoinstaller, then run - // * "rush update-autoinstaller". - // */ - // "autoinstallerName": "rush-plugins" - // } - ] -} \ No newline at end of file diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json deleted file mode 100644 index eb5958a8..00000000 --- a/common/config/rush/version-policies.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "definitionName": "lockStepVersion", - "policyName": "vmindMin", - "version": "2.0.10", - "mainProject": "@visactor/vmind", - "nextBump": "patch" - } -] diff --git a/common/git-hooks/commit-msg b/common/git-hooks/commit-msg deleted file mode 100644 index d1d363bf..00000000 --- a/common/git-hooks/commit-msg +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -node common/scripts/install-run-rush.js commitlint || exit $? #++ \ No newline at end of file diff --git a/common/git-hooks/pre-commit b/common/git-hooks/pre-commit deleted file mode 100644 index d402b2b7..00000000 --- a/common/git-hooks/pre-commit +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -# log rush change to stdout -STAGE_FILES=$(git diff --cached --name-only) - -if [[ $STAGE_FILES != "" ]] ; then - changedFiles='' - # 红色文本的 ANSI 转义序列 - RED='\033[0;31m' - # 大字体的 ANSI 转义序列 - BIG_FONT='\033[1m' - - # 重置颜色的 ANSI 转义序列 - RESET='\033[0m' - - for fileName in $STAGE_FILES;do - if [[ $fileName =~ ^packages/.*\/src/.* ]]; then - changedFiles="${changedFiles} - ${RED}${fileName}${RESET}" - fi - done; - - if [[ $changedFiles != "" ]] ; then - - echo " - [Notice]: please check, do you need to run ${RED}${BIG_FONT}rush change-all${RESET} to generate changelog, - you has modified some src files, include: - ${changedFiles} - " - fi -fi - -# lint-staged -node common/scripts/install-run-rush.js lint-staged || exit $? #++ - -# local pre-commit -if [ -f "common/scripts/pre-commit" ]; then - common/scripts/pre-commit -fi diff --git a/common/git-hooks/pre-push b/common/git-hooks/pre-push deleted file mode 100644 index e2335f56..00000000 --- a/common/git-hooks/pre-push +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -while read local_ref local_sha remote_ref remote_sha -do - # 检查是否是hotfix发布分支 - if [[ $local_ref = refs/heads/hotfix/* && $local_ref =~ ^refs/heads/hotfix/[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Hotfix branch, skipping local test" - exit 0 - fi - - # 检查是否是release发布分支 - if [[ $local_ref = refs/heads/release/* && $local_ref =~ ^refs/heads/release/[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Release branch, skipping local test" - exit 0 - fi - - # 检查是否是同步代码发布分支 - if [[ $local_ref = refs/heads/sync/main-* && $local_ref =~ ^refs/heads/sync/main-[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Auto sync code branch, skipping local test" - exit 0 - fi - - # 检查是否是changelog分支 - if [[ $local_ref = refs/heads/sync/docs/generate-changelog-* && $local_ref =~ ^refs/heads/docs/generate-changelog-[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Auto changelog branch, skipping local test" - exit 0 - fi - - # 检查是否是删除操作 - if [ "$local_sha" = "0000000000000000000000000000000000000000" ]; then - echo "Ignoring push deletion. Skipping local test." - exit 0 - fi - - # 其他推送逻辑... - #node common/scripts/install-run-rush.js test --only tag:package -done - diff --git a/common/scripts/apply-prerelease-version.js b/common/scripts/apply-prerelease-version.js deleted file mode 100644 index b9fd22a4..00000000 --- a/common/scripts/apply-prerelease-version.js +++ /dev/null @@ -1,19 +0,0 @@ -const writePrereleaseVersion = require('./set-prerelease-version'); -const checkAndUpdateNextBump = require('./version-policies'); -const parseVersion = require('./parse-version'); - - -function run() { - const preReleaseName = process.argv.slice(2)[0]; - const nextVersionOrNextBump = process.argv.slice(2)[1]; - const buildName = process.argv.slice(2)[2]; - const nextBump = checkAndUpdateNextBump(nextVersionOrNextBump); - const parsedNextVersion = nextVersionOrNextBump ? parseVersion(nextVersionOrNextBump) : null; - const nextVersion = parsedNextVersion ? `${parsedNextVersion.major}.${parsedNextVersion.minor}.${parsedNextVersion.patch}`: null; - - console.log('[apply prerelease version]: ', preReleaseName, nextBump, nextVersion); - - writePrereleaseVersion(nextBump, preReleaseName, nextVersion, buildName); -} - -run() diff --git a/common/scripts/apply-release-version.js b/common/scripts/apply-release-version.js deleted file mode 100644 index b9fd22a4..00000000 --- a/common/scripts/apply-release-version.js +++ /dev/null @@ -1,19 +0,0 @@ -const writePrereleaseVersion = require('./set-prerelease-version'); -const checkAndUpdateNextBump = require('./version-policies'); -const parseVersion = require('./parse-version'); - - -function run() { - const preReleaseName = process.argv.slice(2)[0]; - const nextVersionOrNextBump = process.argv.slice(2)[1]; - const buildName = process.argv.slice(2)[2]; - const nextBump = checkAndUpdateNextBump(nextVersionOrNextBump); - const parsedNextVersion = nextVersionOrNextBump ? parseVersion(nextVersionOrNextBump) : null; - const nextVersion = parsedNextVersion ? `${parsedNextVersion.major}.${parsedNextVersion.minor}.${parsedNextVersion.patch}`: null; - - console.log('[apply prerelease version]: ', preReleaseName, nextBump, nextVersion); - - writePrereleaseVersion(nextBump, preReleaseName, nextVersion, buildName); -} - -run() diff --git a/common/scripts/get-package-json.js b/common/scripts/get-package-json.js deleted file mode 100644 index a3afad33..00000000 --- a/common/scripts/get-package-json.js +++ /dev/null @@ -1,8 +0,0 @@ -const fs = require('fs') - -function getPackageJson(pkgJsonPath) { - const pkgJson = fs.readFileSync(pkgJsonPath, { encoding: 'utf-8' }) - return JSON.parse(pkgJson); -} - -module.exports = getPackageJson; \ No newline at end of file diff --git a/common/scripts/hotfix-release.js b/common/scripts/hotfix-release.js deleted file mode 100644 index a4b840a6..00000000 --- a/common/scripts/hotfix-release.js +++ /dev/null @@ -1,99 +0,0 @@ -/** - * prelease - */ - -const { spawnSync } = require('child_process') -const fs = require('fs') -const path = require('path') -const checkAndUpdateNextBump = require('./version-policies'); -const getPackageJson = require('./get-package-json'); -const writePrereleaseVersion = require('./set-prerelease-version'); -const parseVersion = require('./parse-version'); - - -function run() { - let hotfixName = process.argv.slice(2)[0]; - let hotfixType = ''; - const cwd = process.cwd(); - const rushJson = getPackageJson(path.join(__dirname, '../../rush.json')); - const package = rushJson.projects.find((project) => project.packageName === '@visactor/vmind'); - - if (!package) { - return; - } - const pkgJsonPath = path.join(__dirname, '../../', package.projectFolder, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - const currentVersion = pkgJson.version; - const preReleaseName = ''; - let regRes = null; - - if (typeof hotfixName === 'string' && hotfixName && (regRes = /^((hotfix)(?:\.(?:0|[1-9]))*)$/.exec(hotfixName))) { - hotfixType = regRes[2]; - regRes = parseVersion(currentVersion); - - } else if (!hotfixName) { - regRes = parseVersion(currentVersion) - - if (regRes.buildName) { - hotfixType = regRes.buildType; - - if (regRes.hotfixName !== hotfixType) { - hotfixName = `${hotfixType}.${parseInt(regRes.buildName, 10) + 1}`; - } else { - hotfixName = `${hotfixType}.0`; - } - - console.log(`\x1b[31m[warning]\x1b[0m no hotfix-name supply, auto calculate hotfix-name \x1b[31m${hotfixName}\x1b[0m`); - } else { - hotfixName = `hotfix.0`; - hotfixType = 'hotfix'; - - console.log('\x1b[31m[warning]\x1b[0m no hotfix-name supply, default to \x1b[31m alpha.0\x1b[0m') - } - } else { - console.log(`\x1b[31m[error]\x1b[0m hotfixName: \x1b[31m ${hotfixName} \x1b[0m 不符合规范,只允许 alpha.0 , beta.1, rc.3 类似的格式 `) - } - - if (hotfixName && hotfixType) { - - // 1. apply version and update version of package.json - writePrereleaseVersion('', '', currentVersion, hotfixName) - - // 2. build all the packages - spawnSync('sh', ['-c', `rush build --only tag:package`], { - stdio: 'inherit', - shell: false, - }); - - // 3. publish to npm - spawnSync('sh', ['-c', `rush publish --publish --include-all --tag ${hotfixType}`], { - stdio: 'inherit', - shell: false, - }); - - // 4. update version of local packages to shrinkwrap - spawnSync('sh', ['-c', `rush update`], { - stdio: 'inherit', - shell: false, - }); - - if (package) { - const pkgJsonPath = path.join(__dirname, '../../', package.projectFolder, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - - // 5. add the the changes - spawnSync('sh', ['-c', `git add --all`], { - stdio: 'inherit', - shell: false, - }); - - // 6. commit all the changes - spawnSync('sh', ['-c', `git commit -m "build: hotfix version ${pkgJson.version}"`], { - stdio: 'inherit', - shell: false, - }); - } - } -} - -run() diff --git a/common/scripts/install-run-rush-pnpm.js b/common/scripts/install-run-rush-pnpm.js deleted file mode 100644 index 5c149955..00000000 --- a/common/scripts/install-run-rush-pnpm.js +++ /dev/null @@ -1,28 +0,0 @@ -// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. -// -// This script is intended for usage in an automated build environment where the Rush command may not have -// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush -// specified in the rush.json configuration file (if not already installed), and then pass a command-line to the -// rush-pnpm command. -// -// An example usage would be: -// -// node common/scripts/install-run-rush-pnpm.js pnpm-command -// -// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ - -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -var __webpack_exports__ = {}; -/*!*****************************************************!*\ - !*** ./lib-esnext/scripts/install-run-rush-pnpm.js ***! - \*****************************************************/ - -// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. -require('./install-run-rush'); -//# sourceMappingURL=install-run-rush-pnpm.js.map -module.exports = __webpack_exports__; -/******/ })() -; -//# sourceMappingURL=install-run-rush-pnpm.js.map \ No newline at end of file diff --git a/common/scripts/install-run-rush.js b/common/scripts/install-run-rush.js deleted file mode 100644 index cada1ede..00000000 --- a/common/scripts/install-run-rush.js +++ /dev/null @@ -1,214 +0,0 @@ -// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. -// -// This script is intended for usage in an automated build environment where the Rush command may not have -// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush -// specified in the rush.json configuration file (if not already installed), and then pass a command-line to it. -// An example usage would be: -// -// node common/scripts/install-run-rush.js install -// -// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ - -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ 657147: -/*!*********************!*\ - !*** external "fs" ***! - \*********************/ -/***/ ((module) => { - -module.exports = require("fs"); - -/***/ }), - -/***/ 371017: -/*!***********************!*\ - !*** external "path" ***! - \***********************/ -/***/ ((module) => { - -module.exports = require("path"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. -(() => { -/*!************************************************!*\ - !*** ./lib-esnext/scripts/install-run-rush.js ***! - \************************************************/ -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! path */ 371017); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ 657147); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); -// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. - - -const { installAndRun, findRushJsonFolder, RUSH_JSON_FILENAME, runWithErrorAndStatusCode } = require('./install-run'); -const PACKAGE_NAME = '@microsoft/rush'; -const RUSH_PREVIEW_VERSION = 'RUSH_PREVIEW_VERSION'; -const INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE = 'INSTALL_RUN_RUSH_LOCKFILE_PATH'; -function _getRushVersion(logger) { - const rushPreviewVersion = process.env[RUSH_PREVIEW_VERSION]; - if (rushPreviewVersion !== undefined) { - logger.info(`Using Rush version from environment variable ${RUSH_PREVIEW_VERSION}=${rushPreviewVersion}`); - return rushPreviewVersion; - } - const rushJsonFolder = findRushJsonFolder(); - const rushJsonPath = path__WEBPACK_IMPORTED_MODULE_0__.join(rushJsonFolder, RUSH_JSON_FILENAME); - try { - const rushJsonContents = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(rushJsonPath, 'utf-8'); - // Use a regular expression to parse out the rushVersion value because rush.json supports comments, - // but JSON.parse does not and we don't want to pull in more dependencies than we need to in this script. - const rushJsonMatches = rushJsonContents.match(/\"rushVersion\"\s*\:\s*\"([0-9a-zA-Z.+\-]+)\"/); - return rushJsonMatches[1]; - } - catch (e) { - throw new Error(`Unable to determine the required version of Rush from rush.json (${rushJsonFolder}). ` + - "The 'rushVersion' field is either not assigned in rush.json or was specified " + - 'using an unexpected syntax.'); - } -} -function _getBin(scriptName) { - switch (scriptName.toLowerCase()) { - case 'install-run-rush-pnpm.js': - return 'rush-pnpm'; - case 'install-run-rushx.js': - return 'rushx'; - default: - return 'rush'; - } -} -function _run() { - const [nodePath /* Ex: /bin/node */, scriptPath /* /repo/common/scripts/install-run-rush.js */, ...packageBinArgs /* [build, --to, myproject] */] = process.argv; - // Detect if this script was directly invoked, or if the install-run-rushx script was invokved to select the - // appropriate binary inside the rush package to run - const scriptName = path__WEBPACK_IMPORTED_MODULE_0__.basename(scriptPath); - const bin = _getBin(scriptName); - if (!nodePath || !scriptPath) { - throw new Error('Unexpected exception: could not detect node path or script path'); - } - let commandFound = false; - let logger = { info: console.log, error: console.error }; - for (const arg of packageBinArgs) { - if (arg === '-q' || arg === '--quiet') { - // The -q/--quiet flag is supported by both `rush` and `rushx`, and will suppress - // any normal informational/diagnostic information printed during startup. - // - // To maintain the same user experience, the install-run* scripts pass along this - // flag but also use it to suppress any diagnostic information normally printed - // to stdout. - logger = { - info: () => { }, - error: console.error - }; - } - else if (!arg.startsWith('-') || arg === '-h' || arg === '--help') { - // We either found something that looks like a command (i.e. - doesn't start with a "-"), - // or we found the -h/--help flag, which can be run without a command - commandFound = true; - } - } - if (!commandFound) { - console.log(`Usage: ${scriptName} [args...]`); - if (scriptName === 'install-run-rush-pnpm.js') { - console.log(`Example: ${scriptName} pnpm-command`); - } - else if (scriptName === 'install-run-rush.js') { - console.log(`Example: ${scriptName} build --to myproject`); - } - else { - console.log(`Example: ${scriptName} custom-command`); - } - process.exit(1); - } - runWithErrorAndStatusCode(logger, () => { - const version = _getRushVersion(logger); - logger.info(`The rush.json configuration requests Rush version ${version}`); - const lockFilePath = process.env[INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE]; - if (lockFilePath) { - logger.info(`Found ${INSTALL_RUN_RUSH_LOCKFILE_PATH_VARIABLE}="${lockFilePath}", installing with lockfile.`); - } - return installAndRun(logger, PACKAGE_NAME, version, bin, packageBinArgs, lockFilePath); - }); -} -_run(); -//# sourceMappingURL=install-run-rush.js.map -})(); - -module.exports = __webpack_exports__; -/******/ })() -; -//# sourceMappingURL=install-run-rush.js.map \ No newline at end of file diff --git a/common/scripts/install-run-rushx.js b/common/scripts/install-run-rushx.js deleted file mode 100644 index b05df262..00000000 --- a/common/scripts/install-run-rushx.js +++ /dev/null @@ -1,28 +0,0 @@ -// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. -// -// This script is intended for usage in an automated build environment where the Rush command may not have -// been preinstalled, or may have an unpredictable version. This script will automatically install the version of Rush -// specified in the rush.json configuration file (if not already installed), and then pass a command-line to the -// rushx command. -// -// An example usage would be: -// -// node common/scripts/install-run-rushx.js custom-command -// -// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ - -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -var __webpack_exports__ = {}; -/*!*************************************************!*\ - !*** ./lib-esnext/scripts/install-run-rushx.js ***! - \*************************************************/ - -// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. -require('./install-run-rush'); -//# sourceMappingURL=install-run-rushx.js.map -module.exports = __webpack_exports__; -/******/ })() -; -//# sourceMappingURL=install-run-rushx.js.map \ No newline at end of file diff --git a/common/scripts/install-run.js b/common/scripts/install-run.js deleted file mode 100644 index 68b1b56f..00000000 --- a/common/scripts/install-run.js +++ /dev/null @@ -1,645 +0,0 @@ -// THIS FILE WAS GENERATED BY A TOOL. ANY MANUAL MODIFICATIONS WILL GET OVERWRITTEN WHENEVER RUSH IS UPGRADED. -// -// This script is intended for usage in an automated build environment where a Node tool may not have -// been preinstalled, or may have an unpredictable version. This script will automatically install the specified -// version of the specified tool (if not already installed), and then pass a command-line to it. -// An example usage would be: -// -// node common/scripts/install-run.js qrcode@1.2.2 qrcode https://rushjs.io -// -// For more information, see: https://rushjs.io/pages/maintainer/setup_new_repo/ - -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ 679877: -/*!************************************************!*\ - !*** ./lib-esnext/utilities/npmrcUtilities.js ***! - \************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "syncNpmrc": () => (/* binding */ syncNpmrc) -/* harmony export */ }); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ 657147); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path */ 371017); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See LICENSE in the project root for license information. -// IMPORTANT - do not use any non-built-in libraries in this file - - -/** - * As a workaround, copyAndTrimNpmrcFile() copies the .npmrc file to the target folder, and also trims - * unusable lines from the .npmrc file. - * - * Why are we trimming the .npmrc lines? NPM allows environment variables to be specified in - * the .npmrc file to provide different authentication tokens for different registry. - * However, if the environment variable is undefined, it expands to an empty string, which - * produces a valid-looking mapping with an invalid URL that causes an error. Instead, - * we'd prefer to skip that line and continue looking in other places such as the user's - * home directory. - * - * @returns - * The text of the the .npmrc. - */ -function _copyAndTrimNpmrcFile(logger, sourceNpmrcPath, targetNpmrcPath) { - logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose - logger.info(` --> "${targetNpmrcPath}"`); - let npmrcFileLines = fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync(sourceNpmrcPath).toString().split('\n'); - npmrcFileLines = npmrcFileLines.map((line) => (line || '').trim()); - const resultLines = []; - // This finds environment variable tokens that look like "${VAR_NAME}" - const expansionRegExp = /\$\{([^\}]+)\}/g; - // Comment lines start with "#" or ";" - const commentRegExp = /^\s*[#;]/; - // Trim out lines that reference environment variables that aren't defined - for (const line of npmrcFileLines) { - let lineShouldBeTrimmed = false; - // Ignore comment lines - if (!commentRegExp.test(line)) { - const environmentVariables = line.match(expansionRegExp); - if (environmentVariables) { - for (const token of environmentVariables) { - // Remove the leading "${" and the trailing "}" from the token - const environmentVariableName = token.substring(2, token.length - 1); - // Is the environment variable defined? - if (!process.env[environmentVariableName]) { - // No, so trim this line - lineShouldBeTrimmed = true; - break; - } - } - } - } - if (lineShouldBeTrimmed) { - // Example output: - // "; MISSING ENVIRONMENT VARIABLE: //my-registry.com/npm/:_authToken=${MY_AUTH_TOKEN}" - resultLines.push('; MISSING ENVIRONMENT VARIABLE: ' + line); - } - else { - resultLines.push(line); - } - } - const combinedNpmrc = resultLines.join('\n'); - fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync(targetNpmrcPath, combinedNpmrc); - return combinedNpmrc; -} -/** - * syncNpmrc() copies the .npmrc file to the target folder, and also trims unusable lines from the .npmrc file. - * If the source .npmrc file not exist, then syncNpmrc() will delete an .npmrc that is found in the target folder. - * - * IMPORTANT: THIS CODE SHOULD BE KEPT UP TO DATE WITH Utilities._syncNpmrc() - * - * @returns - * The text of the the synced .npmrc, if one exists. If one does not exist, then undefined is returned. - */ -function syncNpmrc(sourceNpmrcFolder, targetNpmrcFolder, useNpmrcPublish, logger = { - info: console.log, - error: console.error -}) { - const sourceNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(sourceNpmrcFolder, !useNpmrcPublish ? '.npmrc' : '.npmrc-publish'); - const targetNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(targetNpmrcFolder, '.npmrc'); - try { - if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) { - return _copyAndTrimNpmrcFile(logger, sourceNpmrcPath, targetNpmrcPath); - } - else if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcPath)) { - // If the source .npmrc doesn't exist and there is one in the target, delete the one in the target - logger.info(`Deleting ${targetNpmrcPath}`); // Verbose - fs__WEBPACK_IMPORTED_MODULE_0__.unlinkSync(targetNpmrcPath); - } - } - catch (e) { - throw new Error(`Error syncing .npmrc file: ${e}`); - } -} -//# sourceMappingURL=npmrcUtilities.js.map - -/***/ }), - -/***/ 532081: -/*!********************************!*\ - !*** external "child_process" ***! - \********************************/ -/***/ ((module) => { - -module.exports = require("child_process"); - -/***/ }), - -/***/ 657147: -/*!*********************!*\ - !*** external "fs" ***! - \*********************/ -/***/ ((module) => { - -module.exports = require("fs"); - -/***/ }), - -/***/ 822037: -/*!*********************!*\ - !*** external "os" ***! - \*********************/ -/***/ ((module) => { - -module.exports = require("os"); - -/***/ }), - -/***/ 371017: -/*!***********************!*\ - !*** external "path" ***! - \***********************/ -/***/ ((module) => { - -module.exports = require("path"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. -(() => { -/*!*******************************************!*\ - !*** ./lib-esnext/scripts/install-run.js ***! - \*******************************************/ -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "RUSH_JSON_FILENAME": () => (/* binding */ RUSH_JSON_FILENAME), -/* harmony export */ "findRushJsonFolder": () => (/* binding */ findRushJsonFolder), -/* harmony export */ "getNpmPath": () => (/* binding */ getNpmPath), -/* harmony export */ "installAndRun": () => (/* binding */ installAndRun), -/* harmony export */ "runWithErrorAndStatusCode": () => (/* binding */ runWithErrorAndStatusCode) -/* harmony export */ }); -/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! child_process */ 532081); -/* harmony import */ var child_process__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(child_process__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ 657147); -/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! os */ 822037); -/* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(os__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! path */ 371017); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/npmrcUtilities */ 679877); -// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See the @microsoft/rush package's LICENSE file for license information. - - - - - -const RUSH_JSON_FILENAME = 'rush.json'; -const RUSH_TEMP_FOLDER_ENV_VARIABLE_NAME = 'RUSH_TEMP_FOLDER'; -const INSTALL_RUN_LOCKFILE_PATH_VARIABLE = 'INSTALL_RUN_LOCKFILE_PATH'; -const INSTALLED_FLAG_FILENAME = 'installed.flag'; -const NODE_MODULES_FOLDER_NAME = 'node_modules'; -const PACKAGE_JSON_FILENAME = 'package.json'; -/** - * Parse a package specifier (in the form of name\@version) into name and version parts. - */ -function _parsePackageSpecifier(rawPackageSpecifier) { - rawPackageSpecifier = (rawPackageSpecifier || '').trim(); - const separatorIndex = rawPackageSpecifier.lastIndexOf('@'); - let name; - let version = undefined; - if (separatorIndex === 0) { - // The specifier starts with a scope and doesn't have a version specified - name = rawPackageSpecifier; - } - else if (separatorIndex === -1) { - // The specifier doesn't have a version - name = rawPackageSpecifier; - } - else { - name = rawPackageSpecifier.substring(0, separatorIndex); - version = rawPackageSpecifier.substring(separatorIndex + 1); - } - if (!name) { - throw new Error(`Invalid package specifier: ${rawPackageSpecifier}`); - } - return { name, version }; -} -let _npmPath = undefined; -/** - * Get the absolute path to the npm executable - */ -function getNpmPath() { - if (!_npmPath) { - try { - if (os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32') { - // We're on Windows - const whereOutput = child_process__WEBPACK_IMPORTED_MODULE_0__.execSync('where npm', { stdio: [] }).toString(); - const lines = whereOutput.split(os__WEBPACK_IMPORTED_MODULE_2__.EOL).filter((line) => !!line); - // take the last result, we are looking for a .cmd command - // see https://github.com/microsoft/rushstack/issues/759 - _npmPath = lines[lines.length - 1]; - } - else { - // We aren't on Windows - assume we're on *NIX or Darwin - _npmPath = child_process__WEBPACK_IMPORTED_MODULE_0__.execSync('command -v npm', { stdio: [] }).toString(); - } - } - catch (e) { - throw new Error(`Unable to determine the path to the NPM tool: ${e}`); - } - _npmPath = _npmPath.trim(); - if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(_npmPath)) { - throw new Error('The NPM executable does not exist'); - } - } - return _npmPath; -} -function _ensureFolder(folderPath) { - if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(folderPath)) { - const parentDir = path__WEBPACK_IMPORTED_MODULE_3__.dirname(folderPath); - _ensureFolder(parentDir); - fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync(folderPath); - } -} -/** - * Create missing directories under the specified base directory, and return the resolved directory. - * - * Does not support "." or ".." path segments. - * Assumes the baseFolder exists. - */ -function _ensureAndJoinPath(baseFolder, ...pathSegments) { - let joinedPath = baseFolder; - try { - for (let pathSegment of pathSegments) { - pathSegment = pathSegment.replace(/[\\\/]/g, '+'); - joinedPath = path__WEBPACK_IMPORTED_MODULE_3__.join(joinedPath, pathSegment); - if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(joinedPath)) { - fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync(joinedPath); - } - } - } - catch (e) { - throw new Error(`Error building local installation folder (${path__WEBPACK_IMPORTED_MODULE_3__.join(baseFolder, ...pathSegments)}): ${e}`); - } - return joinedPath; -} -function _getRushTempFolder(rushCommonFolder) { - const rushTempFolder = process.env[RUSH_TEMP_FOLDER_ENV_VARIABLE_NAME]; - if (rushTempFolder !== undefined) { - _ensureFolder(rushTempFolder); - return rushTempFolder; - } - else { - return _ensureAndJoinPath(rushCommonFolder, 'temp'); - } -} -/** - * Resolve a package specifier to a static version - */ -function _resolvePackageVersion(logger, rushCommonFolder, { name, version }) { - if (!version) { - version = '*'; // If no version is specified, use the latest version - } - if (version.match(/^[a-zA-Z0-9\-\+\.]+$/)) { - // If the version contains only characters that we recognize to be used in static version specifiers, - // pass the version through - return version; - } - else { - // version resolves to - try { - const rushTempFolder = _getRushTempFolder(rushCommonFolder); - const sourceNpmrcFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush'); - (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)(sourceNpmrcFolder, rushTempFolder, undefined, logger); - const npmPath = getNpmPath(); - // This returns something that looks like: - // @microsoft/rush@3.0.0 '3.0.0' - // @microsoft/rush@3.0.1 '3.0.1' - // ... - // @microsoft/rush@3.0.20 '3.0.20' - // - const npmVersionSpawnResult = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(npmPath, ['view', `${name}@${version}`, 'version', '--no-update-notifier'], { - cwd: rushTempFolder, - stdio: [] - }); - if (npmVersionSpawnResult.status !== 0) { - throw new Error(`"npm view" returned error code ${npmVersionSpawnResult.status}`); - } - const npmViewVersionOutput = npmVersionSpawnResult.stdout.toString(); - const versionLines = npmViewVersionOutput.split('\n').filter((line) => !!line); - const latestVersion = versionLines[versionLines.length - 1]; - if (!latestVersion) { - throw new Error('No versions found for the specified version range.'); - } - const versionMatches = latestVersion.match(/^.+\s\'(.+)\'$/); - if (!versionMatches) { - throw new Error(`Invalid npm output ${latestVersion}`); - } - return versionMatches[1]; - } - catch (e) { - throw new Error(`Unable to resolve version ${version} of package ${name}: ${e}`); - } - } -} -let _rushJsonFolder; -/** - * Find the absolute path to the folder containing rush.json - */ -function findRushJsonFolder() { - if (!_rushJsonFolder) { - let basePath = __dirname; - let tempPath = __dirname; - do { - const testRushJsonPath = path__WEBPACK_IMPORTED_MODULE_3__.join(basePath, RUSH_JSON_FILENAME); - if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(testRushJsonPath)) { - _rushJsonFolder = basePath; - break; - } - else { - basePath = tempPath; - } - } while (basePath !== (tempPath = path__WEBPACK_IMPORTED_MODULE_3__.dirname(basePath))); // Exit the loop when we hit the disk root - if (!_rushJsonFolder) { - throw new Error('Unable to find rush.json.'); - } - } - return _rushJsonFolder; -} -/** - * Detects if the package in the specified directory is installed - */ -function _isPackageAlreadyInstalled(packageInstallFolder) { - try { - const flagFilePath = path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, INSTALLED_FLAG_FILENAME); - if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(flagFilePath)) { - return false; - } - const fileContents = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(flagFilePath).toString(); - return fileContents.trim() === process.version; - } - catch (e) { - return false; - } -} -/** - * Delete a file. Fail silently if it does not exist. - */ -function _deleteFile(file) { - try { - fs__WEBPACK_IMPORTED_MODULE_1__.unlinkSync(file); - } - catch (err) { - if (err.code !== 'ENOENT' && err.code !== 'ENOTDIR') { - throw err; - } - } -} -/** - * Removes the following files and directories under the specified folder path: - * - installed.flag - * - - * - node_modules - */ -function _cleanInstallFolder(rushTempFolder, packageInstallFolder, lockFilePath) { - try { - const flagFile = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, INSTALLED_FLAG_FILENAME); - _deleteFile(flagFile); - const packageLockFile = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, 'package-lock.json'); - if (lockFilePath) { - fs__WEBPACK_IMPORTED_MODULE_1__.copyFileSync(lockFilePath, packageLockFile); - } - else { - // Not running `npm ci`, so need to cleanup - _deleteFile(packageLockFile); - const nodeModulesFolder = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME); - if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(nodeModulesFolder)) { - const rushRecyclerFolder = _ensureAndJoinPath(rushTempFolder, 'rush-recycler'); - fs__WEBPACK_IMPORTED_MODULE_1__.renameSync(nodeModulesFolder, path__WEBPACK_IMPORTED_MODULE_3__.join(rushRecyclerFolder, `install-run-${Date.now().toString()}`)); - } - } - } - catch (e) { - throw new Error(`Error cleaning the package install folder (${packageInstallFolder}): ${e}`); - } -} -function _createPackageJson(packageInstallFolder, name, version) { - try { - const packageJsonContents = { - name: 'ci-rush', - version: '0.0.0', - dependencies: { - [name]: version - }, - description: "DON'T WARN", - repository: "DON'T WARN", - license: 'MIT' - }; - const packageJsonPath = path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, PACKAGE_JSON_FILENAME); - fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync(packageJsonPath, JSON.stringify(packageJsonContents, undefined, 2)); - } - catch (e) { - throw new Error(`Unable to create package.json: ${e}`); - } -} -/** - * Run "npm install" in the package install folder. - */ -function _installPackage(logger, packageInstallFolder, name, version, command) { - try { - logger.info(`Installing ${name}...`); - const npmPath = getNpmPath(); - const result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(npmPath, [command], { - stdio: 'inherit', - cwd: packageInstallFolder, - env: process.env - }); - if (result.status !== 0) { - throw new Error(`"npm ${command}" encountered an error`); - } - logger.info(`Successfully installed ${name}@${version}`); - } - catch (e) { - throw new Error(`Unable to install package: ${e}`); - } -} -/** - * Get the ".bin" path for the package. - */ -function _getBinPath(packageInstallFolder, binName) { - const binFolderPath = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin'); - const resolvedBinName = os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32' ? `${binName}.cmd` : binName; - return path__WEBPACK_IMPORTED_MODULE_3__.resolve(binFolderPath, resolvedBinName); -} -/** - * Write a flag file to the package's install directory, signifying that the install was successful. - */ -function _writeFlagFile(packageInstallFolder) { - try { - const flagFilePath = path__WEBPACK_IMPORTED_MODULE_3__.join(packageInstallFolder, INSTALLED_FLAG_FILENAME); - fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync(flagFilePath, process.version); - } - catch (e) { - throw new Error(`Unable to create installed.flag file in ${packageInstallFolder}`); - } -} -function installAndRun(logger, packageName, packageVersion, packageBinName, packageBinArgs, lockFilePath = process.env[INSTALL_RUN_LOCKFILE_PATH_VARIABLE]) { - const rushJsonFolder = findRushJsonFolder(); - const rushCommonFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushJsonFolder, 'common'); - const rushTempFolder = _getRushTempFolder(rushCommonFolder); - const packageInstallFolder = _ensureAndJoinPath(rushTempFolder, 'install-run', `${packageName}@${packageVersion}`); - if (!_isPackageAlreadyInstalled(packageInstallFolder)) { - // The package isn't already installed - _cleanInstallFolder(rushTempFolder, packageInstallFolder, lockFilePath); - const sourceNpmrcFolder = path__WEBPACK_IMPORTED_MODULE_3__.join(rushCommonFolder, 'config', 'rush'); - (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)(sourceNpmrcFolder, packageInstallFolder, undefined, logger); - _createPackageJson(packageInstallFolder, packageName, packageVersion); - const command = lockFilePath ? 'ci' : 'install'; - _installPackage(logger, packageInstallFolder, packageName, packageVersion, command); - _writeFlagFile(packageInstallFolder); - } - const statusMessage = `Invoking "${packageBinName} ${packageBinArgs.join(' ')}"`; - const statusMessageLine = new Array(statusMessage.length + 1).join('-'); - logger.info('\n' + statusMessage + '\n' + statusMessageLine + '\n'); - const binPath = _getBinPath(packageInstallFolder, packageBinName); - const binFolderPath = path__WEBPACK_IMPORTED_MODULE_3__.resolve(packageInstallFolder, NODE_MODULES_FOLDER_NAME, '.bin'); - // Windows environment variables are case-insensitive. Instead of using SpawnSyncOptions.env, we need to - // assign via the process.env proxy to ensure that we append to the right PATH key. - const originalEnvPath = process.env.PATH || ''; - let result; - try { - // Node.js on Windows can not spawn a file when the path has a space on it - // unless the path gets wrapped in a cmd friendly way and shell mode is used - const shouldUseShell = binPath.includes(' ') && os__WEBPACK_IMPORTED_MODULE_2__.platform() === 'win32'; - const platformBinPath = shouldUseShell ? `"${binPath}"` : binPath; - process.env.PATH = [binFolderPath, originalEnvPath].join(path__WEBPACK_IMPORTED_MODULE_3__.delimiter); - result = child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync(platformBinPath, packageBinArgs, { - stdio: 'inherit', - windowsVerbatimArguments: false, - shell: shouldUseShell, - cwd: process.cwd(), - env: process.env - }); - } - finally { - process.env.PATH = originalEnvPath; - } - if (result.status !== null) { - return result.status; - } - else { - throw result.error || new Error('An unknown error occurred.'); - } -} -function runWithErrorAndStatusCode(logger, fn) { - process.exitCode = 1; - try { - const exitCode = fn(); - process.exitCode = exitCode; - } - catch (e) { - logger.error('\n\n' + e.toString() + '\n\n'); - } -} -function _run() { - const [nodePath /* Ex: /bin/node */, scriptPath /* /repo/common/scripts/install-run-rush.js */, rawPackageSpecifier /* qrcode@^1.2.0 */, packageBinName /* qrcode */, ...packageBinArgs /* [-f, myproject/lib] */] = process.argv; - if (!nodePath) { - throw new Error('Unexpected exception: could not detect node path'); - } - if (path__WEBPACK_IMPORTED_MODULE_3__.basename(scriptPath).toLowerCase() !== 'install-run.js') { - // If install-run.js wasn't directly invoked, don't execute the rest of this function. Return control - // to the script that (presumably) imported this file - return; - } - if (process.argv.length < 4) { - console.log('Usage: install-run.js @ [args...]'); - console.log('Example: install-run.js qrcode@1.2.2 qrcode https://rushjs.io'); - process.exit(1); - } - const logger = { info: console.log, error: console.error }; - runWithErrorAndStatusCode(logger, () => { - const rushJsonFolder = findRushJsonFolder(); - const rushCommonFolder = _ensureAndJoinPath(rushJsonFolder, 'common'); - const packageSpecifier = _parsePackageSpecifier(rawPackageSpecifier); - const name = packageSpecifier.name; - const version = _resolvePackageVersion(logger, rushCommonFolder, packageSpecifier); - if (packageSpecifier.version !== version) { - console.log(`Resolved to ${name}@${version}`); - } - return installAndRun(logger, name, version, packageBinName, packageBinArgs); - }); -} -_run(); -//# sourceMappingURL=install-run.js.map -})(); - -module.exports = __webpack_exports__; -/******/ })() -; -//# sourceMappingURL=install-run.js.map \ No newline at end of file diff --git a/common/scripts/parse-version.js b/common/scripts/parse-version.js deleted file mode 100644 index 2f0012e6..00000000 --- a/common/scripts/parse-version.js +++ /dev/null @@ -1,23 +0,0 @@ -// see more about the regex here: https://semver.org/lang/zh-CN/ -// reg test: https://regex101.com/r/vkijKf/1/ - -function parseVersion(version) { - const res = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/gm.exec(version); - - if (res) { - return { - major: +res[1], - minor: +res[2], - patch: +res[3], - preReleaseName: res[4], - preReleaseType: res[4] && res[4].includes('.') ? res[4].split('.')[0] : res[4], - buildName: res[5], - buildType: res[5] && res[5].includes('.') ? res[5].split('.')[0] : res[5], - - }; - } - - return null; -} - -module.exports = parseVersion \ No newline at end of file diff --git a/common/scripts/pre-release.js b/common/scripts/pre-release.js deleted file mode 100644 index dac9064f..00000000 --- a/common/scripts/pre-release.js +++ /dev/null @@ -1,95 +0,0 @@ -/** - * prelease - */ - -const { spawnSync } = require('child_process') -const fs = require('fs') -const path = require('path') -const checkAndUpdateNextBump = require('./version-policies'); -const getPackageJson = require('./get-package-json'); -const writePrereleaseVersion = require('./set-prerelease-version'); - -const semverRegex = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-(alpha|beta|rc|hotfix)(?:\.(?:(0|[1-9])))*)$/; - -const preReleaseNameReg = /^((alpha|beta|rc|hotfix)(?:\.(?:0|[1-9]))*)$/; - -function run() { - let preReleaseName = process.argv.slice(2)[0]; - let preReleaseType = ''; - const cwd = process.cwd(); - const rushJson = getPackageJson(path.join(__dirname, '../../rush.json')); - const package = rushJson.projects.find((project) => project.packageName === '@visactor/vmind'); - let regRes = null; - - if (typeof preReleaseName === 'string' && preReleaseName && (regRes = preReleaseNameReg.exec(preReleaseName))) { - preReleaseType = regRes[2]; - } else if (!preReleaseName) { - if (package) { - const pkgJsonPath = path.join(__dirname, '../../', package.projectFolder, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - const currentVersion = pkgJson.version; - - if ((regRes = semverRegex.exec(currentVersion))) { - preReleaseType = regRes[4]; - - if (regRes[5]) { - preReleaseName = `${preReleaseType}.${parseInt(regRes[5], 10) + 1}`; - } else { - preReleaseName = `${preReleaseType}.0`; - } - - console.log(`\x1b[31m[warning]\x1b[0m no prerelease-name supply, auto calculate prerelease-name \x1b[31m${preReleaseName}\x1b[0m`); - } else { - preReleaseName = `alpha.0`; - preReleaseType = 'alpha'; - - console.log('\x1b[31m[warning]\x1b[0m no prerelease-name supply, default to \x1b[31m alpha.0\x1b[0m') - } - } - } else { - console.log(`\x1b[31m[error]\x1b[0m preReleaseName: \x1b[31m ${preReleaseName} \x1b[0m 不符合规范,只允许 alpha.0 , beta.1, rc.3, hotfix.0 类似的格式 `) - } - - if (preReleaseName && preReleaseType) { - - // 1. apply version and update version of package.json - writePrereleaseVersion(checkAndUpdateNextBump(process.argv.slice(2)[1]), preReleaseName) - - // 2. build all the packages - spawnSync('sh', ['-c', `rush build --only tag:package`], { - stdio: 'inherit', - shell: false, - }); - - // 3. publish to npm - spawnSync('sh', ['-c', `rush publish --publish --include-all --tag ${preReleaseType}`], { - stdio: 'inherit', - shell: false, - }); - - // 4. update version of local packages to shrinkwrap - spawnSync('sh', ['-c', `rush update`], { - stdio: 'inherit', - shell: false, - }); - - if (package) { - const pkgJsonPath = path.join(__dirname, '../../', package.projectFolder, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - - // 5. add the the changes - spawnSync('sh', ['-c', `git add --all`], { - stdio: 'inherit', - shell: false, - }); - - // 6. commit all the changes - spawnSync('sh', ['-c', `git commit -m "build: prerelease version ${pkgJson.version}"`], { - stdio: 'inherit', - shell: false, - }); - } - } -} - -run() diff --git a/common/scripts/release.js b/common/scripts/release.js deleted file mode 100644 index ca28a779..00000000 --- a/common/scripts/release.js +++ /dev/null @@ -1,79 +0,0 @@ -/** - * release - */ - -const { spawnSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); -const checkAndUpdateNextBump = require('./version-policies'); - -function getPackageJson(pkgJsonPath) { - const pkgJson = fs.readFileSync(pkgJsonPath, { encoding: 'utf-8' }) - return JSON.parse(pkgJson) -} - -function run() { - let releaseVersion = process.argv.slice(2)[0]; - const cwd = process.cwd(); - - // 0. update `nextBump` - checkAndUpdateNextBump(releaseVersion); - - // 1. update version of package.json, this operation will remove the common/changes - spawnSync('sh', ['-c', `rush version --bump`], { - stdio: 'inherit', - shell: false, - }); - - // 2. build all the packages - spawnSync('sh', ['-c', `rush build --only tag:package`], { - stdio: 'inherit', - shell: false, - }); - - // 3. publish to npm - spawnSync('sh', ['-c', 'rush publish --publish --include-all'], { - stdio: 'inherit', - shell: false, - }); - - // 4. update version of local packages to shrinkwrap - spawnSync('sh', ['-c', `rush update`], { - stdio: 'inherit', - shell: false, - }); - - const rushJson = getPackageJson(path.join(__dirname, '../../rush.json')); - const package = rushJson.projects.find((project) => project.name === '@visactor/vmind'); - - if (package) { - const pkgJsonPath = path.join(__dirname, '../../', project.projectFolder, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - - // 5. add tag - spawnSync('sh', ['-c', `git tag v${pkgJson.versopn}`], { - stdio: 'inherit', - shell: false, - }); - - // 6. add all the changes - spawnSync('sh', ['-c', `git add --all`], { - stdio: 'inherit', - shell: false, - }); - - // 7. commit all the changes - spawnSync('sh', ['-c', `git commit -m "build: publish version ${pkgJson.version}"`], { - stdio: 'inherit', - shell: false, - }); - - // 8. push tag to origin - spawnSync('sh', ['-c', `git push origin v${pkgJson.version}`], { - stdio: 'inherit', - shell: false, - }); - } -} - -run() diff --git a/common/scripts/set-json-file.js b/common/scripts/set-json-file.js deleted file mode 100644 index 40f0f018..00000000 --- a/common/scripts/set-json-file.js +++ /dev/null @@ -1,30 +0,0 @@ -function setJsonFileByKey(file, json, keys, newValue) { - const prevValue = keys.reduce((res, k) => { - return res[k]; - }, json); - - if (prevValue !== newValue) { - let startIndex = 0; - - keys.forEach(k => { - const keyStr = `"${k}"`; - const index = file.indexOf(keyStr, startIndex); - - if (index >= 0) { - startIndex = index + keyStr.length + 1; - } - }) - - const leftIndex = file.indexOf('"', startIndex); - const rightIndex = leftIndex >= 0 ? file.indexOf('"', leftIndex +1) : -1; - - if (leftIndex >= 0 && rightIndex >= 0) { - return `${file.slice(0, leftIndex)}"${newValue}"${file.slice(rightIndex + 1)}` - } - } - - return file; -} - -module.exports = setJsonFileByKey; - diff --git a/common/scripts/set-prerelease-version.js b/common/scripts/set-prerelease-version.js deleted file mode 100644 index 1646012c..00000000 --- a/common/scripts/set-prerelease-version.js +++ /dev/null @@ -1,92 +0,0 @@ -const fs = require('fs') -const path = require('path') -const getPackageJson = require('./get-package-json'); -const parseVersion = require('./parse-version'); -const setJsonFileByKey = require('./set-json-file'); - - -function writePrereleaseVersion(nextBump, preReleaseName, nextVersionStr, buildName) { - const rushJson = getPackageJson(path.join(__dirname, '../../rush.json')); - const projects = rushJson.projects; - const mainPackage = projects.find((project) => project.packageName === '@visactor/vmind'); - - if (!mainPackage) { - return; - } - - const mainPkgJsonPath = path.join(__dirname, '../../', mainPackage.projectFolder, 'package.json') - const mainPkgJson = getPackageJson(mainPkgJsonPath) - const mainVersion = mainPkgJson.version; - console.log(`The version of main project is ${mainVersion}`); - const curVersion = parseVersion(mainVersion); - console.log('parsed current version:', curVersion) - - if (!curVersion) { - return; - } - - if (!nextVersionStr && !curVersion.preReleaseName) { - if (nextBump === 'major') { - curVersion.major += 1; - curVersion.minor = 0; - curVersion.patch = 0; - } else if (nextBump === 'minor') { - curVersion.minor += 1; - curVersion.patch = 0; - } else { - curVersion.patch += 1; - } - } - - let nextVersion = nextVersionStr ? nextVersionStr : `${curVersion.major}.${curVersion.minor}.${curVersion.patch}`; - - if (preReleaseName && preReleaseName !== 'none') { - nextVersion = `${nextVersion}-${preReleaseName}`; - } - - if (buildName) { - nextVersion = `${nextVersion}+${buildName}`; - } - - const published = projects.filter(project => project.shouldPublish).map(project => project.packageName); - - console.log(`next version is ${nextVersion}`); - - projects.forEach(project => { - const pkgJsonPath = path.join(__dirname, '../../', project.projectFolder, 'package.json') - let jsonFile = fs.readFileSync(pkgJsonPath, { encoding: 'utf-8' }) - const pkgJson = JSON.parse(jsonFile); - - if (project.shouldPublish) { - console.log(`handle project: ${project.packageName}, from ${pkgJson.version} to ${nextVersion}`); - } else { - console.log(`handle project: ${project.packageName}, update "dependencies" and "devDependencies" `); - } - - if (project.shouldPublish) { - jsonFile = setJsonFileByKey(jsonFile, pkgJson, ['version'], nextVersion); - } - - if (pkgJson.dependencies) { - Object.keys(pkgJson.dependencies).forEach(dep => { - if (published.includes(dep)) { - jsonFile = setJsonFileByKey(jsonFile, pkgJson, ['dependencies', dep], `workspace:${nextVersion}`); - } - }); - } - - if (pkgJson.devDependencies) { - Object.keys(pkgJson.devDependencies).forEach(dep => { - if (published.includes(dep)) { - jsonFile = setJsonFileByKey(jsonFile, pkgJson, ['devDependencies', dep], `workspace:${nextVersion}`); - } - }); - } - - fs.writeFileSync(pkgJsonPath, jsonFile) - }); - - -} - -module.exports = writePrereleaseVersion; diff --git a/common/scripts/sort_deps.js b/common/scripts/sort_deps.js deleted file mode 100644 index 861e26ab..00000000 --- a/common/scripts/sort_deps.js +++ /dev/null @@ -1,116 +0,0 @@ -/** - * sort `dependencies` `devDependencies` `peerDependencies` field in package.json - * - * NOTE: you should install prettier global `npm i -g prettier` - * - * usage: `node common/scripts/sort_deps.js [project_relative_path]` - */ -const fs = require('fs') -const path = require('path') -const { spawnSync } = require('child_process') - -function getPackageJson(pkgJsonPath) { - const pkgJson = fs.readFileSync(pkgJsonPath, { encoding: 'utf-8' }) - return JSON.parse(pkgJson) -} - -function updatePackageJson(pkgJsonPath, data) { - fs.writeFileSync(path.resolve(pkgJsonPath, 'package.json'), data, { encoding: 'utf-8' }) -} - -function isPlainObject(value) { - if (Object.prototype.toString.call(value) !== '[object Object]') { - return false - } - - const prototype = Object.getPrototypeOf(value) - return prototype === null || prototype === Object.prototype -} - -function sortObjectByKeyNameList(object, sortWith) { - let keys - let sortFn - - if (typeof sortWith === 'function') { - sortFn = sortWith - } else { - keys = sortWith - } - - const objectKeys = Object.keys(object) - return (keys || []).concat(objectKeys.sort(sortFn)).reduce(function(total, key) { - if (objectKeys.indexOf(key) !== -1) { - total[key] = object[key] - } - return total - }, Object.create(null)) -} - -const onObject - = (fn) => - (x, ...args) => - isPlainObject(x) ? fn(x, ...args) : x - -const sortObjectBy = (comparator, deep) => { - const over = onObject((object) => { - object = sortObjectByKeyNameList(object, comparator) - if (deep) { - for (const [key, value] of Object.entries(object)) { - object[key] = over(value) - } - } - return object - }) - - return over -} - -const sortObject = sortObjectBy() - -function sortDeps(data) { - if (data.dependencies) { - data.dependencies = sortObject(data.dependencies) - } - if (data.devDependencies) { - data.devDependencies = sortObject(data.devDependencies) - } - - if (data.peerDependencies) { - data.peerDependencies = sortObject(data.peerDependencies) - } -} - -function run() { - const targetDir = process.argv.slice(2)[0] - const cwd = process.cwd(); - - if (typeof targetDir === 'string') { - const pkgJsonPath = path.resolve(targetDir, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - sortDeps(pkgJson) - updatePackageJson(targetDir, JSON.stringify(pkgJson)) - - spawnSync('sh', ['-c', `prettier -w ${pkgJsonPath}`], { - stdio: 'inherit', - shell: false, - }) - } else { - const rushJson = getPackageJson(`${cwd}/rush.json`) - - rushJson.projects.forEach((project) => { - const pkgJsonPath = path.resolve(project.projectFolder, 'package.json') - const pkgJson = getPackageJson(pkgJsonPath) - - sortDeps(pkgJson) - updatePackageJson(project.projectFolder, JSON.stringify(pkgJson)) - - spawnSync('sh', ['-c', `prettier -w ${pkgJsonPath}`], { - stdio: 'inherit', - shell: false, - }) - }); - } -} - -run() - diff --git a/common/scripts/version-policies.js b/common/scripts/version-policies.js deleted file mode 100644 index ef4f9151..00000000 --- a/common/scripts/version-policies.js +++ /dev/null @@ -1,85 +0,0 @@ - -const fs = require('fs') -const path = require('path') -const parseVersion = require('./parse-version'); -const PRERELEASE = 'prerelease'; -const MINOR = 'minor'; -const MAJOR = 'major'; -const PATCH = 'patch'; -const NEXT_BUMPMS = [PRERELEASE, PATCH, MINOR, MAJOR]; -const setJsonFileByKey = require('./set-json-file'); - - -const parseNextBumpFromVersion = ( - versionString -) => { - const res = parseVersion(versionString); - - if (res) { - if (res.patch === 0) { - return res.minor == 0 ? MAJOR : MINOR; - } - - return PATCH - } - - console.error(`can parse nextBump from version: ${versionString}`) - process.exit(1); -} - -const writeNextBump = ( - nextBump, -) => { - const filePath = path.join(__dirname, '../config/rush/version-policies.json'); - let fileContent = fs.readFileSync(filePath).toString() - const json = JSON.parse(fileContent); - const curNextBump = json[0].nextBump - - if (nextBump !== curNextBump) { - fileContent = setJsonFileByKey(fileContent, json, ['0', 'nextBump'], nextBump); - - fs.writeFileSync(path.join(__dirname, '../config/rush/version-policies.json'), fileContent) - } -} - -const readNextBumpFromChanges = () => { - const changeRoot = path.join(__dirname, '../changes/@visactor/vmind'); - const filenames = fs.readdirSync(changeRoot); - - if (filenames && filenames.length) { - const changeType = []; - - filenames.forEach(fileName => { - const json = JSON.parse(fs.readFileSync(path.join(changeRoot, fileName)).toString()); - - if (json.changes && json.changes.length) { - json.changes.forEach(change => { - if (change.type && !changeType.includes(change.type)) { - changeType.push(change.type); - } - }) - } - }); - - return changeType.includes(MAJOR) ? MAJOR : changeType.includes(MINOR) ? MINOR : PATCH; - } else { - process.exit(1); - } -} - -const checkAndUpdateNextBump = (version) => { - let nextBump = PATCH; - - if (version && NEXT_BUMPMS.includes(version)) { - nextBump = version; - } else if (version) { - nextBump = parseNextBumpFromVersion(version); - } else { - nextBump = readNextBumpFromChanges(); - } - writeNextBump(nextBump); - - return nextBump; -} - -module.exports = checkAndUpdateNextBump; diff --git a/common/template/chart.d.ts b/common/template/chart.d.ts deleted file mode 100644 index 149134cd..00000000 --- a/common/template/chart.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/chart/index.d.ts'; diff --git a/common/template/chart.js b/common/template/chart.js deleted file mode 100644 index 6a034635..00000000 --- a/common/template/chart.js +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/chart/index.js'; diff --git a/common/template/component.d.ts b/common/template/component.d.ts deleted file mode 100644 index b8410a59..00000000 --- a/common/template/component.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/component/index.d.ts'; diff --git a/common/template/component.js b/common/template/component.js deleted file mode 100644 index b8ed5258..00000000 --- a/common/template/component.js +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/component/index.js'; diff --git a/common/template/core.d.ts b/common/template/core.d.ts deleted file mode 100644 index 1102f69d..00000000 --- a/common/template/core.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/core/index.d.ts'; diff --git a/common/template/core.js b/common/template/core.js deleted file mode 100644 index bcb0279f..00000000 --- a/common/template/core.js +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/core/index.js'; diff --git a/common/template/layout.d.ts b/common/template/layout.d.ts deleted file mode 100644 index 891323ba..00000000 --- a/common/template/layout.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/layout/index.d.ts'; diff --git a/common/template/layout.js b/common/template/layout.js deleted file mode 100644 index d01e034c..00000000 --- a/common/template/layout.js +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/layout/index.js'; diff --git a/common/template/mark.d.ts b/common/template/mark.d.ts deleted file mode 100644 index d76bc668..00000000 --- a/common/template/mark.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/mark/index.d.ts'; diff --git a/common/template/mark.js b/common/template/mark.js deleted file mode 100644 index 0c9e5272..00000000 --- a/common/template/mark.js +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/mark/index.js'; diff --git a/common/template/series.d.ts b/common/template/series.d.ts deleted file mode 100644 index c02441c2..00000000 --- a/common/template/series.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/series/index.d.ts'; diff --git a/common/template/series.js b/common/template/series.js deleted file mode 100644 index ba93fd16..00000000 --- a/common/template/series.js +++ /dev/null @@ -1 +0,0 @@ -export * from './esm/series/index.js'; diff --git a/docs/assets/api/en/VMind_Instance.md b/docs/assets/api/en/VMind_Instance.md deleted file mode 100644 index d4bdc80d..00000000 --- a/docs/assets/api/en/VMind_Instance.md +++ /dev/null @@ -1,113 +0,0 @@ -# VMind Instance - -## Interface Description - -The Create VMind Instance interface is used to create a VMind instance, which can be used for intelligent visualization operations. When creating a VMind instance, an options object needs to be passed in as a parameter. This object contains some key information, such as the url of the model, the type of model, and the headers of the LLM service request, etc. - - -## Interface Parameters - -### VMindOptions - -```ts -export interface VMindOptions { - /** URL of your LLM service. For gpt, default is openAI API. */ - url?: string; - /** llm request header, which has higher priority */ - headers?: HeadersInit; - /** post or get */ - method?: 'POST' | 'GET'; - /** LLM Model */ - model?: Model | string; - /** Max token in LLM Chart */ - maxTokens?: number; - /** Temperature of LLM */ - temperature?: number; - /** show llm thoughs or not */ - showThoughts?: boolean; - /** repetition penalty */ - frequencyPenalty?: number; - /** topP */ - topP?: number; - /** custom llm request func */ - customRequestFunc?: { - /** chart generation task */ - chartAdvisor?: RequestFunc; - /** data query task */ - dataQuery?: RequestFunc; - /** data extraction from text task */ - dataExtraction?: RequestFunc; - /** chart command auto generation task */ - chartCommand?: RequestFunc; - /** insight task */ - IntelligentInsight?: RequestFunc; - }; -} -``` - -### url - -The url parameter is used to specify the address of the LLM service api, the default value is https://api.openai.com/v1/chat/completions. During the use of VMind, all places that need to call LLM will send http requests to this url. - -### headers - -The headers parameter is used to specify the http headers when requesting the LLM service. The most common usage is to put your api key in the headers for authentication; of course, you can also put any fields you need in the headers. - -### method - -The method parameter is used to specify the method type when requesting LLM, usually POST. - -### model - -The model parameter is used to specify the type of model. This field will be put into the request body of the LLM service. You can import the Model type from VMind and use it as the value of the model field. Any model name other than VMind Model can also be specified. - -```ts -export enum Model { - GPT3_5 = 'gpt-3.5-turbo', - GPT3_5_1106 = 'gpt-3.5-turbo-1106', - GPT4 = 'gpt-4', - GPT_4_0613 = 'gpt-4-0613', - GPT_4o = 'gpt-4o-2024-08-06', - DOUBAO_LITE = 'doubao-lite-32K', - DOUBAO_PRO = 'doubao-pro-128k', - CHART_ADVISOR = 'chart-advisor', - DEEPSEEK_V3 = 'deepseek-chat', - DEEPSEEK_R1 = 'deepseek-reasoner' -} -``` - -### max_tokens and temperature - -These two parameters respectively determine the maximum token quantity and the randomness of each generated result of the model, see [OpenAI official documentation](https://platform.openai.com/docs/api-reference/chat/create). - -In VMind, the default values of these two parameters are 2048 and 0 respectively. - -### showThoughts - -The showThoughts parameter will affect the prompt that VMind sends to the large language model, determining whether to add the thinking process to the output results when completing tasks such as chart generation, data aggregation, etc. In VMind, showThoughts defaults to true. - -### TopP -Used to control the diversity of output tokens. The larger the TopP value, the more diverse the types of output tokens. The range is 0 to 1, and the default in VMind is 0. - -### frequencyPenalty -A number between -2.0 and 2.0. Positive values penalize new tokens based on their frequency in the text, reducing the likelihood of the model repeating the same line verbatim. The default in VMind is 0. - -### customRequestFunc - -The customRequestFunc parameter allows users to customize the method of calling LLM in each task. For example, you can request your own LLM service in the form of RPC. - -## Usage Example - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, // use gpt-4o model - headers: { // specify the header when calling the LLM service - Authorization: `Bearer ${OPENAI_API_KEY}` // Your OPENAI_API_KEY - } -}) -``` - -## Related Tutorials -[Create VMind Instance](../guide/Basic_Tutorial/Create_VMind_Instance) diff --git a/docs/assets/api/en/dataQuery.md b/docs/assets/api/en/dataQuery.md deleted file mode 100644 index 13c51637..00000000 --- a/docs/assets/api/en/dataQuery.md +++ /dev/null @@ -1,84 +0,0 @@ - -# dataQuery - -## Interface Description: -The dataQuery function is a powerful data aggregation tool. It takes three parameters: userPrompt, fieldInfo, and dataset. VMind will write SQL statements according to the user's display intent and execute the query on the dataset. The query results will be stored in the dataset property of the function return value. At the same time, the fields in the query results may change, and the updated field information will also be stored in the fieldInfo property of the return result. - -## Supported Models: -- GPT models -- Doubao models -- DeepSeek models -- Any other models - -## Interface Parameters: -```typescript -/** - * @param userPrompt(string) The user's display intent, such as "show the sales of each product". - * @param dataset(DataTable) The original dataset, which is an array of objects, each object represents a piece of data. - * @param fieldInfo(FieldInfo[]) Optional, information about the dataset fields, including field name, type, and role. If not provided, VMind will automatically parse a fieldInfo configuration based on the dataset. - * @returns new FieldInfo && new DataSet after user's query - */ -``` - -## Return Value Type: -```typescript -{ - // Updated field information. - fieldInfo: FieldInfo[]; - // Queried data table - dataTable: DataTable; -} -``` - -## Usage Example: - -```ts -import VMind from '@visactor/vmind' - -const sourceDataset = [ -{ -"Product name": "Coke", -"Sales": 2350 -}, -{ -"Product name": "Sprite", -"total_sales": 1056 -}, -{ -"Product name": "Fanta", -"total_sales": 4778 -}, -{ -"Product name": "Mirinda", -"total_sales": 3336 -} -// ...other data -] - -const sourceFieldInfo = [ -{ -"fieldName": "Product name", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure" -} -] - -const userPrompt=`Show the sales of each product` -const vmind = new VMind(options) - -// Call dataQuery with userPrompt, sourceFieldInfo, and sourceDataset to perform data aggregation -const { fieldInfo, dataset } = vmind.dataQuery(userPrompt, sourceDataset, sourceFieldInfo); -``` - -## Notes: - -- The dataQuery method will pass userPrompt and fieldInfo to the LLM to generate SQL, but the detailed data in the dataset will not be passed. -- During the execution of dataQuery, the currently supported SQL keywords are: SELECT, GROUP BY, WHERE, HAVING, ORDER BY, LIMIT. The currently supported aggregation functions are: MAX(), MIN(), SUM(), COUNT(), AVG(), but complex SQL operations such as subqueries, JOIN, conditional statements, etc. are not supported. - -## Related Tutorials -[Data Aggregation](../guide/Basic_Tutorial/Data_Aggregation) diff --git a/docs/assets/api/en/fillSpecWithData.md b/docs/assets/api/en/fillSpecWithData.md deleted file mode 100644 index 9ae9b63e..00000000 --- a/docs/assets/api/en/fillSpecWithData.md +++ /dev/null @@ -1,96 +0,0 @@ -# fillSpecWithData - -## Interface Description: -fillSpecWithData is used to fill data into a spec template to generate a complete spec. Different filling strategies will be adopted according to different chart types. - -## Interface Parameters: - -```typescript -fillSpecWithData( -spec: any, -dataset: Array>, -totalTime?: number -) -``` - -- spec (any): spec template, containing all properties except data. It can be generated by [generateChart](./generateChart) -- dataset (Array): The dataset used in the chart, which will be filled into the spec template. -- totalTime (number): Optional, chart animation duration (ms) - -## Return Value: -Returns the filled spec, which can be directly used for chart rendering - -## Usage Example: -In some cases, we may generate a chart only with data fields, without a specific dataset (for example, generate a chart based on the fields in the dataset before querying, and then complete the related queries based on the generated chart type and the fields in the chart). At this time, you can not pass the dataset when calling the generateChart method, generate the spec template, and then call the fillSpecWithData method to get the final spec for chart rendering: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = 'Show sales of goods in different regions'; -const fieldInfo = [ -{ -"fieldName": "Product Name", -"type": "string", -"role": "dimension", -"domain": [ -"Coca-Cola", -"Sprite", -"Fanta", -"clear up" -] -}, -{ -"fieldName": "region", -"type": "string", -"role": "dimension", -"domain": [ -"south", -"east", -"west", -"north" -] -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure", -"domain": [ -28, -2350 -] -} -] -// Do not pass in dataset, generate spec template -const { spec } = await vmind.generateChart(userPrompt, fieldInfo); - -// Fill data into the template -const dataset = [ -{ -"Product Name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product Name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "north", -"Sales": 1027 -}, -... -] - -const spec = vmind.fillSpecWithData(spec, dataset) -``` -## Related Tutorials -- [Intelligent Chart Generation](../guide/Basic_Tutorial/Chart_Generation) diff --git a/docs/assets/api/en/generateChart.md b/docs/assets/api/en/generateChart.md deleted file mode 100644 index 16e94aba..00000000 --- a/docs/assets/api/en/generateChart.md +++ /dev/null @@ -1,280 +0,0 @@ - -# generateChart - -## Interface Description: -The generateChart function is used to call LLM to complete intelligent generation of charts, and returns the generated chart spec, chart type, and field mapping, etc. -If the passed in dataset is undefined, a spec template will be generated, and fillSpecWithData can be called later to fill data into the spec. - -## Supported Models: -- GPT models -- Doubao models -- DeepSeek models -- [chart-advisor](../guide/Basic_Tutorial/Chart_Advisor) -- Any other models - -## Chart Type List -VMind supports 25 common chart types: -```typescript -export enum ChartType { - DynamicBarChart = 'Dynamic Bar Chart', - BarChart = 'Bar Chart', - LineChart = 'Line Chart', - AreaChart = 'Area Chart', - PieChart = 'Pie Chart', - ScatterPlot = 'Scatter Plot', - WordCloud = 'Word Cloud', - RoseChart = 'Rose Chart', - RadarChart = 'Radar Chart', - SankeyChart = 'Sankey Chart', - FunnelChart = 'Funnel Chart', - DualAxisChart = 'Dual Axis Chart', - WaterFallChart = 'Waterfall Chart', - BoxPlot = 'Box Plot', - LinearProgress = 'Linear Progress chart', - CircularProgress = 'Circular Progress chart', - LiquidChart = 'Liquid Chart', - BubbleCirclePacking = 'Bubble Circle Packing', - MapChart = 'Map Chart', - RangeColumnChart = 'Range Column Chart', - SunburstChart = 'Sunburst Chart', - TreemapChart = 'Treemap Chart', - Gauge = 'Gauge Chart', - BasicHeatMap = 'Basic Heat Map', - VennChart = 'Venn Chart' -} -``` -You can restrict the type of chart generated through the chartTypeList in the options parameter. - - -## Interface Parameters: - -```typescript -interface GenerateChartParams { - userPrompt: string; - fieldInfo: Array<{ - fieldName: string; - type: string; - role: string; - }>; - dataset?: Array>; - options?: { - chartTypeList?: ChartType[]; - colorPalette?: string[]; - animationDuration?: number; - enableDataQuery?: boolean; - theme?: ChartTheme | string; - } -} -``` - -- userPrompt (string): User's visualization intention (What information you want to show in the chart) -- fieldInfo (Array): Information about the fields in the dataset, including field name, type, etc -- dataset (Array): The raw dataset used in the chart, it can be undefined. If dataset is undefined, a spec template will be generated and fillSpecTemplateWithData can be called later to fill data into the spec template. -- options: Optional, option parameters, include the following: - - - chartTypeList (ChartType[], optional): Supported chart type list. If not undefined, a chart will be generated from the chart types specified in this list. - - enableDataQuery (boolean, optional): Determines whether to enable data aggregation during chart generation - - colorPalette (Array, optional): Used to set the color palette of the chart - - animationDuration (number, optional): Used to set the playback duration of the chart animation - - theme (ChartTheme | string, optional): Sets the theme style of the final spec. By default, VMind uses a theme style with gradient colors. You can set VChart's general light or dark theme ('light' | 'dark') or a theme style that suits your usage scenario. - -## Return Value Type: - -```typescript -interface GenerateChartResult { - /** Chart spec */ - spec: Record; - /** Chart type */ - chartType: ChartType; - /** Final visual channel mapping */ - cell: Cell; - /** Token consumption */ - usage: Usage; - /* Specific command to generate the current chart, consistent with user prompt in the case of user prompt */ - command: string; - /** Configuration time used for converting to gif/video */ - time: { - totalTime : number; - frameArr: number[]; - }; - /** Rule-based chart recommendation results, generated as a fallback when manually setting rules or when the large model generation is incorrect */ - chartAdvistorRes: { - /** Chart spec */ - spec: Record; - /** Chart type */ - chartType: ChartType; - /** Recommendation score */ - score: number - }[] -} -``` - -- spec (Object): The generated VChart chart spec. If the dataset is empty, it is a spec template that does not contain data -- chartType (ChartType): The type of the chart generated, see `Chart Type List` section -- cell (Record): The field mapping in the chart, describing how the fields in the dataset map to the various visual channels on the chart -- usage (any): Total LLM token consumption -- time (number): The duration of the chart animation, which can be used to export GIF and video -- chartAdvistorRes (Array): This result is the chart recommendation result derived based on the current data and field information through VMind's built-in rules, generated as a fallback when the model is set to `Model.CHART_ADVISOR` or the user's large model settings are incorrect and no result can be obtained. For details, see: [Rule-Based Chart Generation](../guide/Basic_Tutorial/Chart_Advisor)- - -## Usage Example: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) -const dataset=[ -{ -"Product Name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product Name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "north", -"Sales": 1027 -} -] -const userPrompt = 'Show product sales in different regions'; -const fieldInfo=vmind.getFieldInfo(dataset) - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -### Generate a chart with a custom color palette -```typescript -//Setting up a custom color palette -const colorPalette = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']; - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {colorPalette}); -``` - -VMind also comes built-in with [Arco-design](https://www.visactor.io/vchart/theme/demo/arco), [Semi-design](https://www.visactor.io/vchart/theme/demo/semi), [VeO design](https://www.visactor.io/vchart/theme/demo/arco), and other multiple theme color palettes, which can be directly imported to use: -```typescript -import VMind, {ArcoTheme} from '@visactor/vmind'; - -// Use Arco-design color palette -const {spec} = await vmind.generateChart(describe, finalFieldInfo, finalDataset, { -colorPalette: ArcoTheme.colorScheme -}); -``` -Built-in color palette list: -- `SemiTheme`: Semi design theme color palette -- `ArcoTheme`: Arco design theme color palette -- `VeOTheme`: VeO design theme color palette -- `VeOThemeFinance`: VeO design for finance industry theme color palette -- `VeOThemeGovernment`: VeO design for government industry theme color palette -- `VeOThemeConsumer`: VeO design for consumer industry theme color palette -- `VeOThemeAutomobile`: VeO design for automobile industry theme color palette -- `VeOThemeCulturalTourism`: VeO design for cultural tourism industry theme color palette -- `VeOThemeMedical`: VeO design for medical industry theme color palette -- `VeOThemeNewEnergy`: VeO design for new energy industry theme color palette - -### Limit the type of charts generated -```typescript -import VMind, {ChartType} from '@visactor/vmind'; - -//Restrict the generation of the following types of charts: bar charts, line charts, scatter plots, pie charts, word clouds -const chartTypeList = [ -ChartType.BarChart, -ChartType.LineChart, -ChartType.ScatterPlot, -ChartType.PieChart, -ChartType.WordCloud -] - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {chartTypeList}); -``` - -### Generate a spec template without a dataset -In some cases, we may generate a chart without a specific dataset, but only with data fields (for example, generate a chart based on the fields in the dataset before querying, and then complete the relevant query based on the type and fields of the chart generated), and then call the fillSpecWithData method to get the final spec for chart rendering: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = 'Show product sales in different regions'; -const fieldInfo=[ -{ -"fieldName": "Product Name", -"type": "string", -"role": "dimension", -"domain": [ -"Coke", -"Sprite", -"Fanta", -"Awake" -] -}, -{ -"fieldName": "region", -"type": "string", -"role": "dimension", -"domain": [ -"south", -"east", -"west", -"north" -] -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure", -"domain": [ -28, -2350 -] -} -] -//Do not pass in the dataset, generate a spec template -const { spec } = await vmind.generateChart(userPrompt, fieldInfo); - -//Fill in data into the template -const dataset=[ -{ -"Product Name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product Name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "north", -"Sales": 1027 -} -] - -const spec = vmind.fillSpecWithData(spec, dataset) -``` - -## Notes: - -- The generateChart method will pass the userPrompt and fieldInfo to the large language model for chart generation, but the detailed data in the dataset will not be passed. -- In the process of generating the chart, VMind will first use the large language model, according to the userPrompt and fieldInfo, to recommend a suitable chart type. Then, it will map the fields in the fieldInfo to the x-axis, y-axis, color, size and other visual channels of the chart. -- VMind will add an entrance animation to the generated chart by default, so it will also return the duration of the chart animation time. If you want to turn off the chart animation, you can set spec.animation to false. -- When the model type is set to chart-advisor, it will not call a large language model to generate charts. The results generated will include multiple types of charts. For details, please refer to [Rule-based Chart Generation](../guide/Basic_Tutorial/Chart_Advisor). - -## Related Tutorials -- [Intelligent Chart Generation](../guide/Basic_Tutorial/Chart_Generation) -- [Rule-based Chart Generation](../guide/Basic_Tutorial/Chart_Advisor) - diff --git a/docs/assets/api/en/getFieldInfo.md b/docs/assets/api/en/getFieldInfo.md deleted file mode 100644 index 8d6effbd..00000000 --- a/docs/assets/api/en/getFieldInfo.md +++ /dev/null @@ -1,90 +0,0 @@ - -# getFieldInfo - -## Interface Description - -The getFieldInfo interface is used to parse JSON-structured data to obtain field information (fieldInfo). FieldInfo includes field name, type, value range, and other information, and its structure is as follows: -```typescript -export interface FieldInfo = { - /** name of field */ - fieldName: string; - /** field type, eg: time / category / numerical */ - type: DataType; - /** field role */ - role: ROLE; - /** alias of field */ - alias?: string; - /** description of field */ - description?: string; -}; - -export enum DataType { - DATE = 'date', - TIME = 'time', - STRING = 'string', - REGION = 'region', - NUMERICAL = 'numerical', - RATIO = 'ratio', - COUNT = 'count', - FLOAT = 'float', - INT = 'int' -} - -export enum ROLE { - DIMENSION = 'dimension', - MEASURE = 'measure' -} -``` - -## Interface Parameters - -```typescript -getFieldInfo(dataset: Record[]): FieldInfo[] -``` - -- dataset: JSON-formatted data set, an array, each element of which is an object, with the key being the field name and the value being the corresponding data. - -## Return Value Type - -Returns an array of fieldInfo, representing the parsed field information. Each element is an object that contains the following attributes: -```bash -- fieldName: string type, representing the field name. -- description: string type, representing the field description, optional. -- type: DataType type, representing the field type, can be "string", "int", "float", "date". -- role: ROLE type, representing the field role, can be "dimension", "measure". -``` - -## Usage Example - -```typescript -import VMind from '@visactor/vmind' - -const dataset=[ -{ -"Product name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "north", -"Sales": 1027 -} -] - -const vmind = new VMind(options) -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -## Related Tutorials -[Data Format and Data Processing](../guide/Basic_Tutorial/Chart_Generation) diff --git a/docs/assets/api/en/getInsights.md b/docs/assets/api/en/getInsights.md deleted file mode 100644 index a45163ff..00000000 --- a/docs/assets/api/en/getInsights.md +++ /dev/null @@ -1,153 +0,0 @@ -# getInsights - -## Interface Description - -The getInsights interface generates insights for the current chart based on the VChart Spec configuration and insight options. The final insights are sorted in descending order of confidence scores. - -## Interface Parameters - -```typescript -getInsights(spec: any, options?: DataInsightOptions): { insights: Insights[], usage: Usage }; - -export interface DataInsightOptions { - /** Maximum number of insights to generate */ - maxNum?: number; - /** Maximum number of insights for each specific insight type, which takes precedence over maxNum */ - detailMaxNum?: { - types: InsightType[]; - maxNum: number; - }[]; - /** Algorithms to use */ - algorithms?: AlgorithmType[]; - /** Hyperparameter settings for each algorithm */ - algorithmOptions?: AlgorithmOptions; - /** Whether to consider chart type for insight results, e.g., clustering algorithms are only used in scatter plots */ - isLimitedbyChartType?: boolean; - /** Whether to use a large model for text polishing */ - usePolish?: boolean; - /** answer language */ - language?: 'chinese' | 'english'; -} -``` - -### Insight Types -The specific insight types are as follows, comprising 12 types in total. -```ts -export enum InsightType { - /** Minimum value */ - Min = 'min', - /** Maximum value */ - Max = 'max', - /** Average value */ - Avg = 'avg', - /** Outlier */ - Outlier = 'outlier', - /** Extreme value */ - ExtremeValue = 'extreme_value', - /** Majority value with significant contribution */ - MajorityValue = 'majority_value', - /** Turning point */ - TurningPoint = 'turning_point', - /** Overall trend */ - OverallTrend = 'overall_trend', - /** Abnormal trend */ - AbnormalTrend = 'abnormal_trend', - /** Abnormal band */ - AbnormalBand = 'abnormal_band', - /** Correlation */ - Correlation = 'correlation', - /** Volatility */ - Volatility = 'volatility' -} -``` - -### Built-in Algorithms -All built-in algorithms in VMind are as follows: -```ts -export enum AlgorithmType { - /** Overall/abnormal trend, using Mann-Kendall Test for trend detection */ - OverallTrending = 'overallTrend', - AbnormalTrend = 'abnormalTrend', - /** Pearson Correlation Coefficient / Spearman Correlation for correlation detection */ - PearsonCorrelation = 'pearsonCorrelation', - SpearmanCorrelation = 'spearmanCorrelation', - /** Statistical extreme values and majority values */ - ExtremeValue = 'extremeValue', - MajorityValue = 'majorityValue', - /** zScore global outlier detection and IQR (Interquartile Range) global outlier detection algorithms as the main statistical methods */ - StatisticsAbnormal = 'statisticsAbnormal', - /** Basic indicators, including maximum, minimum, average values */ - StatisticsBase = 'statisticsBase', - /** DBSCAN-based outlier detection algorithm */ - DbscanOutlier = 'dbscanOutlier', - /** LOF (Local Outlier Factor) local outlier factor detection algorithm */ - LOFOutlier = 'lofOutlier', - /** Bayesian Inference turning point detection algorithm */ - TurningPoint = 'turningPoint', - /** Page-Hinkley Test for time series anomaly detection */ - PageHinkley = 'pageHinkley', - /** Coefficient of Variation for periodicity detection based on the coefficient of variation */ - Volatility = 'volatility' -} -``` - -### Default Values -By default, VMind enables `isLimitedbyChartType` and `usePolish`, and all algorithms are enabled by default. - -## Return Value Type -The return value `insight` is an array of insights, with a single insight type as follows: -```ts -export interface Insight { - /** Insight name */ - name: string; - /** Insight type */ - type: InsightType; - /** Specific data corresponding to the insight */ - data: { - /** Index number */ - index: number; - /** Specific data item */ - dataItem: DataItem; - }[]; - /** Data field ID corresponding to the outlier, e.g., sales, growth rate, etc. */ - fieldId?: string; - /** Specific series name, e.g., "Northeast" | "Apple" or other specific category data names */ - seriesName?: DataCell | DataCell[]; - /** Semantic data expression, including placeholders */ - textContent?: { - // Original text content - content: string; - // Plain text after parsing variable placeholders - plainText: string; - // Mapping of variables - variables?: Record; - }; - // Specific value of the insight - value?: number | string; - /** Confidence score of the insight, used for insight sorting, the higher the score, the more important the insight */ - significant: number; - info?: { [key: string]: any }; // Additional information about this insight -} - -export interface InsightTextContent { - /** Parsed value */ - value: DataCell; - /** Formatted value */ - formatValue?: string; // Formatted value - /** Field name */ - fieldName: string; - /** Current color */ - color?: string; - /** Type of value, e.g., ascending trend or descending trend */ - valueType?: 'ascendTrend' | 'descendTrend' | string; - /** Icon type, e.g., ratio, ascending trend, or descending trend */ - icon?: 'ratio' | 'ascendTrend' | 'descendTrend' | string; - /** Whether it is a measure value */ - isMeasure?: boolean; - /** Whether it is a dimension value */ - isDimValue?: boolean; -} -``` - -### Specific Examples and Related Tutorials -[Intelligent Insights](../guide/Basic_Tutorial/Chart_Insight) diff --git a/docs/assets/api/en/parseCSVData.md b/docs/assets/api/en/parseCSVData.md deleted file mode 100644 index 0997fec8..00000000 --- a/docs/assets/api/en/parseCSVData.md +++ /dev/null @@ -1,61 +0,0 @@ - -# parseCSVData - -## Interface Description - -The parseCSVData interface is used to convert CSV strings into the dataset and field information required by VMind. - -## Interface Parameters - -```typescript -parseCSVData(csv: string): { fieldInfo: FieldInfo[], dataset: any[] } -``` - -- csv: A string type, representing the CSV string to be parsed. - -## Return Value Type - -Returns an object containing two properties: - -- fieldInfo: Type of FieldInfo[], representing the parsed field information, each element is an object, containing the following properties: - -```bash -- fieldName: string type, representing the field name. -- description: string type, representing the field description, optional. -- type: DataType type, representing the field type, can be "string", "int", "float", "date". -- role: ROLE type, representing the field role, can be "dimension", "measure". -``` - - -- dataset: DataItem type, representing the parsed dataset, each element is an object, the key is the field name, and the value is the corresponding data: -```ts -type DataItem = Record; -``` - -## Usage Example - -```typescript -import VMind from '@visactor/vmind' -const csv=`Product name,region,Sales -Coke,south,2350 -Coke,east,1027 -Coke,west,1027 -Coke,north,1027 -Sprite,south,215 -Sprite,east,654 -Sprite,west,159 -Sprite,north,28 -Fanta,south,345 -Fanta,east,654 -Fanta,west,2100 -Fanta,north,1679 -Mirinda,south,1476 -Mirinda,east,830 -Mirinda,west,532 -Mirinda,north,498` -const vmind = new VMind(options) -const { fieldInfo, dataset } = vmind.parseCSVData(csv); -``` - -## Related Tutorials -[Data Format and Data Processing](../guide/Basic_Tutorial/Chart_Generation) diff --git a/docs/assets/api/en/text2Chart.md b/docs/assets/api/en/text2Chart.md deleted file mode 100644 index d7baff74..00000000 --- a/docs/assets/api/en/text2Chart.md +++ /dev/null @@ -1,119 +0,0 @@ -# text2Chart - -## Interface Description: -The text2Chart function is used to call the LLM to complete two tasks: data extraction and intelligent chart generation. It returns the generated chart spec, chart two-dimensional data table, chart type, and field mapping, etc. This function enables the intelligent process of generating charts from plain text in one step. - -## Supported Models: -- GPT models -- Doubao models -- DeepSeek models -- Any other models - -## Chart Type List -VMind supports 25 common chart types: -```typescript -export enum ChartType { - DynamicBarChart = 'Dynamic Bar Chart', - BarChart = 'Bar Chart', - LineChart = 'Line Chart', - AreaChart = 'Area Chart', - PieChart = 'Pie Chart', - ScatterPlot = 'Scatter Plot', - WordCloud = 'Word Cloud', - RoseChart = 'Rose Chart', - RadarChart = 'Radar Chart', - SankeyChart = 'Sankey Chart', - FunnelChart = 'Funnel Chart', - DualAxisChart = 'Dual Axis Chart', - WaterFallChart = 'Waterfall Chart', - BoxPlot = 'Box Plot', - LinearProgress = 'Linear Progress chart', - CircularProgress = 'Circular Progress chart', - LiquidChart = 'Liquid Chart', - BubbleCirclePacking = 'Bubble Circle Packing', - MapChart = 'Map Chart', - RangeColumnChart = 'Range Column Chart', - SunburstChart = 'Sunburst Chart', - TreemapChart = 'Treemap Chart', - Gauge = 'Gauge Chart', - BasicHeatMap = 'Basic Heat Map', - VennChart = 'Venn Chart' -} -``` -You can restrict the type of chart generated through the chartTypeList in the options parameter. - -## Interface Parameters: - -```typescript -interface GenerateChartParams { - text: string, - userPrompt: string; - dataset?: Array>; - options?: { - fieldInfo?: FieldInfo[]; - chartTypeList?: ChartType[]; - colorPalette?: string[]; - animationDuration?: number; - theme?: ChartTheme | string; - enableDataQuery?: boolean; - } -} -``` - -- text (string): Required, the original text content -- userPrompt (string): Optional, the user's visualization intent (what data you mainly want to extract from the text and how to display it with a chart) -- options: Optional, option parameters, including: - - - fieldInfo (Array): Field information contained in the text type, including field names, types, etc.; in scenarios where fieldInfo is provided, VMind will only extract content related to the passed fieldInfo - - chartTypeList (ChartType[], optional): Supported chart type list. If not undefined, a chart will be generated from the chart types specified in this list. - - enableDataQuery (boolean, optional): Decides whether to enable data aggregation during chart generation - - colorPalette (Array, optional): Used to set the color palette of the chart - - animationDuration (number, optional): Used to set the playback duration of the chart animation - - theme (ChartTheme | string, optional): Sets the theme style of the final spec. By default, VMind uses a theme style with gradient colors. You can set VChart's general light or dark theme ('light' | 'dark') or a theme style that suits your usage scenario - -## Return Value Type: - -```typescript -interface GenerateChartResult { - /** Chart spec */ - spec: Record; - /** Extracted data */ - dataTable: DataTable; - /** Field information */ - fieldInfo: FieldInfo[]; - /** Chart type */ - chartType: ChartType; - /** Final visual channel mapping */ - cell: Cell; - /** Token consumption */ - usage: Usage; - /* Specific command to generate the current chart, consistent with user prompt if provided */ - command: string; - /** Configuration time used for converting to gif/video */ - time: { - totalTime : number; - frameArr: number[]; - }; - /** Rule-based chart recommendation results, generated when manually setting rules or when the large model generation is incorrect */ - chartAdvistorRes: { - /** Chart spec */ - spec: Record; - /** Chart type */ - chartType: ChartType; - /** Recommendation score */ - score: number - }[] -} -``` - -- spec (Object): The generated VChart chart spec. If the dataset is empty, it is a spec template without data -- dataTable (Record[]): The two-dimensional table data extracted from the text -- fieldInfo (FieldInfo): Field information extracted from the text when the user has not provided fieldInfo, i.e., the header information of the two-dimensional table -- chartType (ChartType): The generated chart type, see the "Chart Type List" section -- cell (Record): Field mapping in the chart, describing how fields in the dataset are mapped to various visual channels of the chart -- usage (any): Total LLM token consumption -- time (number): Duration information of the chart animation, can be used for exporting GIFs and videos -- chartAdvistorRes(Array): This result is the chart recommendation result deduced based on the current data and field information through VMind's built-in rules, generated as a fallback when some wrong happens in LLM. See: [Rule-Based Chart Generation](../guide/Basic_Tutorial/Chart_Advisor) - -# Usage Example -[Data Extraction - Generate Chart from Text in One Step](../guide/Basic_Tutorial/Data_Extraction) diff --git a/docs/assets/api/menu.json b/docs/assets/api/menu.json deleted file mode 100644 index 1b6f0171..00000000 --- a/docs/assets/api/menu.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "menu": "scripts", - "children": [ - { - "path": "VMind_Instance", - "title": { - "zh": "VMind实例", - "en": "VMind Instance" - } - }, - { - "path": "parseCSVData", - "title": { - "zh": "parseCSVData", - "en": "parseCSVData" - } - }, - { - "path": "getFieldInfo", - "title": { - "zh": "getFieldInfo", - "en": "getFieldInfo" - } - }, - { - "path": "fillSpecWithData", - "title": { - "zh": "fillSpecWithData", - "en": "fillSpecWithData" - } - }, - { - "path": "dataQuery", - "title": { - "zh": "dataQuery", - "en": "dataQuery" - } - }, - { - "path": "generateChart", - "title": { - "zh": "generateChart", - "en": "generateChart" - } - }, - { - "path": "text2Chart", - "title": { - "zh": "text2Chart", - "en": "text2Chart" - } - }, - { - "path": "getInsights", - "title": { - "zh": "getInsights", - "en": "getInsights" - } - } - ] -} \ No newline at end of file diff --git a/docs/assets/api/zh/VMind_Instance.md b/docs/assets/api/zh/VMind_Instance.md deleted file mode 100644 index 2ccd708a..00000000 --- a/docs/assets/api/zh/VMind_Instance.md +++ /dev/null @@ -1,114 +0,0 @@ -# VMind实例 - -## 接口描述 - -创建VMind实例接口用于创建一个VMind实例,该实例可以用于进行智能可视化操作。在创建VMind实例时,需要传入一个options对象作为参数,该对象中包含了一些关键的信息,例如模型的url,模型类型,以及LLM服务请求的headers等。 - - -## 接口参数 - -### VMindOptions - -```ts -export interface VMindOptions { - /** URL of your LLM service. For gpt, default is openAI API. */ - url?: string; - /** llm request header, which has higher priority */ - headers?: HeadersInit; - /** post or get */ - method?: 'POST' | 'GET'; - /** LLM Model */ - model?: Model | string; - /** Max token in LLM Chart */ - maxTokens?: number; - /** Temperature of LLM */ - temperature?: number; - /** show llm thoughs or not */ - showThoughts?: boolean; - /** repetition penalty */ - frequencyPenalty?: number; - /** topP */ - topP?: number; - /** custom llm request func */ - customRequestFunc?: { - /** 图表生成任务 */ - chartAdvisor?: RequestFunc; - /** 数据查询任务 */ - dataQuery?: RequestFunc; - /** 文本中提取数据任务 */ - dataExtraction?: RequestFunc; - /** 图表生成中指令生成任务 */ - chartCommand?: RequestFunc; - /** 洞察生成任务 */ - IntelligentInsight?: RequestFunc; - }; -} -``` - -### url - -url参数用于指定LLM服务api的地址,默认值是https://api.openai.com/v1/chat/completions。在使用VMind的过程中,所有需要调用LLM的地方都会向这个url发送http请求。 - -### headers - -headers参数用于指定请求LLM服务时的http headers。最常见的用法是将你的api key放入headers中用作鉴权;当然,你也可以将任何你需要的字段放入headers中。 - -### method - -method参数用于指定请求LLM时的方法类型,通常为POST。 - -### model - -model参数用于指定模型种类。这个字段将被放入LLM服务的请求体中。你可以从VMind中引入Model类型并用作model字段的值。也可以指定除VMind Model之外其他任何Model名称 - -```ts -export enum Model { - GPT3_5 = 'gpt-3.5-turbo', - GPT3_5_1106 = 'gpt-3.5-turbo-1106', - GPT4 = 'gpt-4', - GPT_4_0613 = 'gpt-4-0613', - GPT_4o = 'gpt-4o-2024-08-06', - DOUBAO_LITE = 'doubao-lite-32K', - DOUBAO_PRO = 'doubao-pro-128k', - CHART_ADVISOR = 'chart-advisor', - DEEPSEEK_V3 = 'deepseek-chat', - DEEPSEEK_R1 = 'deepseek-reasoner' -} -``` - -### max_tokens和temperature - -这两个参数分别决定模型生成内容的最大token数量和每次生成结果的随机性,详见[OpenAI官方文档](https://platform.openai.com/docs/api-reference/chat/create)。 - -在VMind中,这两个参数的默认值分别是2048和0. - -### TopP -用于控制输出tokens的多样性,TopP值越大输出的tokens类型越丰富,取值范围0~1,VMind默认为0. - - -### frequencyPenalty --2.0到2.0之间的数字,正值会根据新token在文本中出现的频率对其进行惩罚,从而降低模型逐字重复同一行的可能性。VMind默认为0. - -### showThoughts - -showThoughts参数将影响VMind传给大语言模型的prompt,决定其在完成图表生成、数据聚合等任务时,是否将思考过程添加到输出结果中。在VMind中,showThoughts默认为true。 - -### customRequestFunc - -customRequestFunc参数允许用户自定义在每种任务中调用LLM的方法。例如,你可以通过RPC的形式请求你自己的LLM服务。 - -## 使用示例 - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, //使用gpt-4o模型 - headers: { //指定调用LLM服务时的header - Authorization: `Bearer ${OPENAI_API_KEY}` //Your OPENAI_API_KEY - } -}) -``` - -## 相关教程 -[创建VMind实例](../guide/Basic_Tutorial/Create_VMind_Instance) diff --git a/docs/assets/api/zh/dataQuery.md b/docs/assets/api/zh/dataQuery.md deleted file mode 100644 index 51ec9b6c..00000000 --- a/docs/assets/api/zh/dataQuery.md +++ /dev/null @@ -1,84 +0,0 @@ -# dataQuery - -## 接口描述: -dataQuery函数是一个强大的数据聚合工具,它接收三个参数:用户展示意图userPrompt,数据集字段信息fieldInfo和原始数据集dataset。VMind会根据用户的展示意图,编写SQL语句并对dataset执行查询,查询结果会被储存在函数返回值的dataset属性中;同时,查询结果中的字段可能会发生变化,更新后的字段信息也会被储存在返回结果的fieldInfo属性中。 - -## 支持模型: -- GPT模型 -- 豆包模型 -- DeepSeek模型 -- 其他任意模型 - -## 接口参数: -``` typescript -/** - * - * @param userPrompt(string) 用户的展示意图,例如“展示各商品销售额”。 - * @param dataset(DataTable) 原始数据集,是一个对象数组,每个对象代表一条数据。 - * @param fieldInfo(FieldInfo[]) 可选,数据集字段信息,包含字段名称、类型和角色。在不传入的情况下,VMind会根据dataset自动解析一份fieldInfo配置 - * @returns new FieldInfo && new DataSet after user's query - */ -``` - -## 返回值类型: -```typescript -{ - // 更新后的字段信息。 - fieldInfo: FieldInfo[]; - // 查询后的数据表 - dataTable: DataTable; -} -``` - -## 使用示例: - -```ts -import VMind from '@visactor/vmind' - -const sourceDataset = [ - { - "Product name": "Coke", - "Sales": 2350 - }, - { - "Product name": "Sprite", - "total_sales": 1056 - }, - { - "Product name": "Fanta", - "total_sales": 4778 - }, - { - "Product name": "Mirinda", - "total_sales": 3336 - } -// ...其他数据 -] - -const sourceFieldInfo = [ - { - "fieldName": "Product name", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "Sales", - "type": "int", - "role": "measure" - } -] - -const userPrompt=`展示各商品销售额` -const vmind = new VMind(options) - -//调用dataQuery传入userPrompt,sourceFieldInfo和sourceDataset,执行数据聚合 -const { fieldInfo, dataset } = vmind.dataQuery(userPrompt, sourceDataset, sourceFieldInfo); -``` - -## 注意事项: - -- dataQuery方法会将userPrompt和fieldInfo传递给大模型用于生成SQL,dataset中的明细数据并不会被传递。 -- dataQuery执行过程中,目前支持的SQL关键词有:SELECT, GROUP BY, WHERE, HAVING, ORDER BY, LIMIT。目前支持的聚合函数有:MAX(), MIN(), SUM(), COUNT(), AVG(),但不支持子查询、JOIN、条件语句等复杂的SQL操作。 - -## 相关教程 -[数据聚合](../guide/Basic_Tutorial/Data_Aggregation) diff --git a/docs/assets/api/zh/fillSpecWithData.md b/docs/assets/api/zh/fillSpecWithData.md deleted file mode 100644 index a9dfdc15..00000000 --- a/docs/assets/api/zh/fillSpecWithData.md +++ /dev/null @@ -1,97 +0,0 @@ - -# fillSpecWithData - -## 接口描述: -fillSpecWithData用于向spec模板中填入数据,以生成一个完整的spec。根据图表类型的不同,将采取不同的填充策略。 - -## 接口参数: - -```typescript -fillSpecWithData( - spec: any, - dataset: Array>, - totalTime?: number - ) -``` - -- spec (any): spec模板,包含除data之外的所有属性。可通过[generateChart](./generateChart)生成 -- dataset (Array): 图表中使用的数据集,会被填充到spec模板中。 -- totalTime (number): 可选项,图表动画时长(ms) - -## 返回值: -返回填充后的spec,可直接用于图表渲染 - -## 使用示例: -某些情况下我们可能在仅有数据字段,没有具体的数据集的情况下生成图表(例如在查询前根据数据集中的字段生成一个图表,再根据生成的图表类型、图表中的字段完成相关查询),此时可在调用generateChart方法时不传入dataset,生成spec模板,随后再调用fillSpecWithData方法,获得最终的spec用于图表渲染: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = '展示不同地区商品销售额'; -const fieldInfo = [ - { - "fieldName": "商品名称", - "type": "string", - "role": "dimension", - "domain": [ - "可乐", - "雪碧", - "芬达", - "醒目" - ] - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension", - "domain": [ - "south", - "east", - "west", - "north" - ] - }, - { - "fieldName": "销售额", - "type": "int", - "role": "measure", - "domain": [ - 28, - 2350 - ] - } -] -//不传入dataset,生成spec模板 -const { spec } = await vmind.generateChart(userPrompt, fieldInfo); - -//向模板中填入数据 -const dataset = [ - { - "商品名称": "Coke", - "region": "south", - "销售额": 2350 - }, - { - "商品名称": "Coke", - "region": "east", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "west", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "north", - "销售额": 1027 - } -] - -const spec = vmind.fillSpecWithData(spec, dataset) -``` - -## 相关教程 -- [图表智能生成](../guide/Basic_Tutorial/Chart_Generation) diff --git a/docs/assets/api/zh/generateChart.md b/docs/assets/api/zh/generateChart.md deleted file mode 100644 index bea62f59..00000000 --- a/docs/assets/api/zh/generateChart.md +++ /dev/null @@ -1,278 +0,0 @@ - -# generateChart - -## 接口描述: -generateChart函数用于调用LLM完成图表智能生成,返回生成的图表spec、图表类型和字段映射等。 -若传入的dataset为undefined,则会生成一个spec模板,后续可调用fillSpecWithData向spec中填入数据。 - -## 支持模型: -- GPT模型 -- 豆包模型 -- DeepSeek模型 -- [chart-advisor](../guide/Basic_Tutorial/Chart_Advisor) -- 其他任意模型 - -## 图表类型列表 -VMind支持25种常见的图表类型: -```typescript -export enum ChartType { - DynamicBarChart = 'Dynamic Bar Chart', - BarChart = 'Bar Chart', - LineChart = 'Line Chart', - AreaChart = 'Area Chart', - PieChart = 'Pie Chart', - ScatterPlot = 'Scatter Plot', - WordCloud = 'Word Cloud', - RoseChart = 'Rose Chart', - RadarChart = 'Radar Chart', - SankeyChart = 'Sankey Chart', - FunnelChart = 'Funnel Chart', - DualAxisChart = 'Dual Axis Chart', - WaterFallChart = 'Waterfall Chart', - BoxPlot = 'Box Plot', - LinearProgress = 'Linear Progress chart', - CircularProgress = 'Circular Progress chart', - LiquidChart = 'Liquid Chart', - BubbleCirclePacking = 'Bubble Circle Packing', - MapChart = 'Map Chart', - RangeColumnChart = 'Range Column Chart', - SunburstChart = 'Sunburst Chart', - TreemapChart = 'Treemap Chart', - Gauge = 'Gauge Chart', - BasicHeatMap = 'Basic Heat Map', - VennChart = 'Venn Chart' -} -``` -可通过options参数中的chartTypeList限制生成的图表类型。 - -## 接口参数: - -```typescript -interface GenerateChartParams { - userPrompt: string; - fieldInfo: Array<{ - fieldName: string; - type: string; - role: string; - }>; - dataset?: Array>; - options?: { - chartTypeList?: ChartType[]; - colorPalette?: string[]; - animationDuration?: number; - enableDataQuery?: boolean; - theme?: ChartTheme | string; - } -} -``` - -- userPrompt (string): 用户的可视化意图(你想用图表展示什么信息) -- fieldInfo (Array): 数据集中字段的信息,包括字段名称,类型等 -- dataset (Array): 图表中使用的原始数据集,可以是undefined。若dataset为undefined,则会生成一个spec模板,后续可以调用fillSpecTemplateWithData将数据填充到spec模板。 -- options: 可选,选项参数,包括以下内容: - - - chartTypeList (ChartType[],可选): 支持的图表类型列表。若不为undefined,则会从该列表指定的图表类型中选择生成。 - - enableDataQuery (boolean, 可选): 决定是否在图表生成过程中开启数据聚合 - - colorPalette (Array, 可选): 用于设置图表的调色板 - - animationDuration (number, 可选): 用于设置图表动画的播放持续时间 - - theme (ChartTheme | string, 可选): 设置最终sepc的主题样式,默认为空,VMind会默认使用带渐变颜色的主题样式,可以设置 VChart 通用深浅主题('light' | 'dark')或者符合你使用场景下的主题样式 -## 返回值类型: - -```typescript -interface GenerateChartResult { - /** 图表spec */ - spec: Record; - /** 图表类型*/ - chartType: ChartType; - /** 最终的视觉通道映射 */ - cell: Cell; - /** token 消耗量 */ - usage: Usage; - /* 生成当前图表的具体指令,在user prompt的情况下跟user prompt一致 */ - command: string; - /** 转唯gif/video时所用的配置时间 *// - time: { - totalTime : number; - frameArr: number[]; - }; - /** 基于规则的图表推荐结果,在手动设置规则或者大模型生成有误情况下产生 */ - chartAdvistorRes: { - /** 图表spec */ - spec: Record; - /** 图表类型*/ - chartType: ChartType; - /** 推荐得分 */ - score: number - }[] -} -``` - -- spec (Object): 生成的VChart图表spec。若dataset为空,则为不包含数据的spec模板 -- chartType (ChartType): 生成的图表类型,参见`图表类型列表`章节 -- cell (Record): 图表中的字段映射,描述数据集中的字段如何映射到图表的各个视觉通道上 -- usage (any): LLM token总消耗 -- time (number): 图表动画的时长信息,可用于导出GIF和视频 -- chartAdvistorRes(Array): 该结果是根据当前数据和字段信息,通过VMind的内置规则推导得到的图表推荐结果,在设置模型为`Model.CHART_ADVISOR`或者用户的大模型设置有误,无法获取结果时兜底产生。详见:[基于规则的图表生成](../guide/Basic_Tutorial/Chart_Advisor) -## 使用示例: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) -const dataset=[ - { - "商品名称": "Coke", - "region": "south", - "销售额": 2350 - }, - { - "商品名称": "Coke", - "region": "east", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "west", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "north", - "销售额": 1027 - } -] -const userPrompt = '展示不同地区商品销售额'; -const fieldInfo=vmind.getFieldInfo(dataset) - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -### 使用自定义色板生成图表 -```typescript -//设置自定义色板 -const colorPalette = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']; - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {colorPalette}); -``` - -VMind还内置了[Arco-design](https://www.visactor.io/vchart/theme/demo/arco),[Semi-design](https://www.visactor.io/vchart/theme/demo/semi),[源力设计](https://www.visactor.io/vchart/theme/demo/arco)等多套主题色板,可直接导入使用: -```typescript -import VMind, {ArcoTheme} from '@visactor/vmind'; - -//使用Arco-design色板 -const {spec} = await vmind.generateChart(describe, finalFieldInfo, finalDataset, { - colorPalette: ArcoTheme.colorScheme -}); -``` -内置色板列表: -- `SemiTheme`: Semi design主题色板 -- `ArcoTheme`: Arco design主题色板 -- `VeOTheme`: 源力设计主题色板 -- `VeOThemeFinance`: 源力设计金融行业主题色板 -- `VeOThemeGovernment`: 源力设计政务行业主题色板 -- `VeOThemeConsumer`: 源力设计消费行业主题色板 -- `VeOThemeAutomobile`: 源力设计汽车行业主题色板 -- `VeOThemeCulturalTourism`: 源力设计文旅行业主题色板 -- `VeOThemeMedical`: 源力设计医药行业主题色板 -- `VeOThemeNewEnergy`: 源力设计新能源行业主题色板 - - -### 限制生成的图表类型 -```typescript -import VMind, {ChartType} from '@visactor/vmind'; - -//限制生成以下几种图表类型:柱状图,折线图,散点图,饼图,词云 -const chartTypeList = [ - ChartType.BarChart, - ChartType.LineChart, - ChartType.ScatterPlot, - ChartType.PieChart, - ChartType.WordCloud - ] - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {chartTypeList}); -``` - -### 生成不含dataset的spec模板 -某些情况下我们可能在仅有数据字段,没有具体的数据集的情况下生成图表(例如在查询前根据数据集中的字段生成一个图表,再根据生成的图表类型、图表中的字段完成相关查询),此时可在调用generateChart方法时不传入dataset,生成spec模板,随后再调用fillSpecWithData方法,获得最终的spec用于图表渲染: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = '展示不同地区商品销售额'; -const fieldInfo=[ - { - "fieldName": "商品名称", - "type": "string", - "role": "dimension", - "domain": [ - "可乐", - "雪碧", - "芬达", - "醒目" - ] - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension", - "domain": [ - "south", - "east", - "west", - "north" - ] - }, - { - "fieldName": "销售额", - "type": "int", - "role": "measure", - "domain": [ - 28, - 2350 - ] - } -] -//不传入dataset,生成spec模板 -const { spec } = await vmind.generateChart(userPrompt, fieldInfo); - -//向模板中填入数据 -const dataset=[ - { - "商品名称": "Coke", - "region": "south", - "销售额": 2350 - }, - { - "商品名称": "Coke", - "region": "east", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "west", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "north", - "销售额": 1027 - } -] - -const spec = vmind.fillSpecWithData(spec, dataset) -``` - -## 注意事项: - -- generateChart方法会将userPrompt和fieldInfo传递给大语言模型用于生成图表,但是dataset中的详细数据并不会被传递。 -- 在生成图表的过程中,VMind首先会利用大语言模型,根据userPrompt和fieldInfo,推荐一个适合的图表类型。然后,它会将fieldInfo中的字段映射到图表的x轴、y轴、颜色、尺寸等视觉通道上。 -- VMind默认会为生成的图表添加入场动画,因此它还会返回图表动画的时长time。如果你想关闭图表动画,可以将spec.animation设为false。 -- 当设定模型类型为chart-advisor时,将不需调用大型语言模型生成图表,产生的结果将包括多种图表,详情可参见[基于规则的图表生成](../guide/Basic_Tutorial/Chart_Advisor)。 -- generateChart方法不传入数据集时,无法使用智能数据聚合。 - -## 相关教程 -- [图表智能生成](../guide/Basic_Tutorial/Chart_Generation) -- [基于规则的图表生成](../guide/Basic_Tutorial/Chart_Advisor) diff --git a/docs/assets/api/zh/getFieldInfo.md b/docs/assets/api/zh/getFieldInfo.md deleted file mode 100644 index 089c571e..00000000 --- a/docs/assets/api/zh/getFieldInfo.md +++ /dev/null @@ -1,89 +0,0 @@ -# getFieldInfo - -## 接口描述 - -getFieldInfo接口用于解析JSON结构的数据以获得其中的字段信息(fieldInfo)。fieldInfo包括字段名称、类型、值域等信息,其结构如下: -```typescript -export interface FieldInfo = { - /** name of field */ - fieldName: string; - /** field type, eg: time / category / numerical */ - type: DataType; - /** field role */ - role: ROLE; - /** alias of field */ - alias?: string; - /** description of field */ - description?: string; -}; - -export enum DataType { - DATE = 'date', - TIME = 'time', - STRING = 'string', - REGION = 'region', - NUMERICAL = 'numerical', - RATIO = 'ratio', - COUNT = 'count', - FLOAT = 'float', - INT = 'int' -} - -export enum ROLE { - DIMENSION = 'dimension', - MEASURE = 'measure' -} -``` - -## 接口参数 - -```typescript -getFieldInfo(dataset: Record[]): FieldInfo[] -``` - -- dataset: JSON格式的数据集,是一个数组,每个元素是一个对象,键为字段名称,值为对应的数据。 - -## 返回值类型 - -返回一个fieldInfo数组,表示解析后的字段信息。每个元素是一个对象,包含以下属性: -```bash -- fieldName: string类型,表示字段名称。 -- description: string类型,表示字段描述,可选。 -- type: DataType类型,表示字段类型,可为"string"、"int"、"float"、"date"。 -- role: ROLE类型,表示字段角色,可为"dimension"、"measure"。 -``` - -## 使用示例 - -```typescript -import VMind from '@visactor/vmind' - -const dataset=[ - { - "Product name": "Coke", - "region": "south", - "Sales": 2350 - }, - { - "Product name": "Coke", - "region": "east", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "west", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "north", - "Sales": 1027 - } -] - -const vmind = new VMind(options) -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -## 相关教程 -[数据格式与数据处理](../guide/Basic_Tutorial/Chart_Generation) diff --git a/docs/assets/api/zh/getInsights.md b/docs/assets/api/zh/getInsights.md deleted file mode 100644 index 1790fead..00000000 --- a/docs/assets/api/zh/getInsights.md +++ /dev/null @@ -1,153 +0,0 @@ -# getInsights - -## 接口描述 - -getInsights接口会根据VChart Spec配置和洞察配置,产生当前图表的洞察结果,最终洞察结果会按照洞察置信度得分从高到低排序。 - -## 接口参数 - -```typescript -getInsights(spec: any, options?: DataInsightOptions): { insights: Insights[], usage: Usage}; - -export interface DataInsightOptions { - /** 最多产生的洞察数量 */ - maxNum?: number; - /** 具体每个洞察类型最多产生的洞察数量,优先级高于maxNum */ - detailMaxNum?: { - types: InsightType[]; - maxNum: number; - }[]; - /** 使用哪些算法 */ - algorithms?: AlgorithmType[]; - /** 每个算法的超参数设定 */ - algorithmOptions?: AlgorithmOptions; - /** 洞察结果是否考虑图表类型,例如聚类算法只在散点图中使用 */ - isLimitedbyChartType?: boolean; - /** 是否用大模型进行文本润色 */ - usePolish?: boolean; - /** 生成文本的语言 */ - language?: 'chinese' | 'english'; -} -``` - -### 洞察类型 -具体的洞察类型如下所示,共包含12种洞察类型。 -```ts -export enum InsightType { - /** 最小值 */ - Min = 'min', - /** 最大值 */ - Max = 'max', - /** 平均值 */ - Avg = 'avg', - /** 异常点 */ - Outlier = 'outlier', - /** 极值 */ - ExtremeValue = 'extreme_value', - /** 贡献占比巨大值 */ - MajorityValue = 'majority_value', - /** 转折点 */ - TurningPoint = 'turning_point', - /** 整体趋势 */ - OverallTrend = 'overall_trend', - /** 异常趋势 */ - AbnormalTrend = 'abnormal_trend', - /** 异常区间 */ - AbnormalBand = 'abnormal_band', - /** 相关性 */ - Correlation = 'correlation', - /** 周期性 */ - Volatility = 'volatility' -} -``` - -### 内置算法 -VMind所有内置算法如下: -```ts -export enum AlgorithmType { - /** 整体/异常趋势,使用Mann-Kendall Test 趋势检测算法 */ - OverallTrending = 'overallTrend', - AbnormalTrend = 'abnormalTrend', - /** Pearson Correlation Coefficient / SpearmanCorrelation 相关性检测 */ - PearsonCorrelation = 'pearsonCorrelation', - SpearmanCorrelation = 'spearmanCorrelation', - /** 统计极值和占比贡献巨大值 */ - ExtremeValue = 'extremeValue', - MajorityValue = 'majorityValue', - /** zScore 全局异常点检测和IQR (Interquartile Range) 四分位全局异常检测算法 为主的统计学方法 */ - StatisticsAbnormal = 'statisticsAbnormal', - /** 基础指标,包括最大,最小,平均值 */ - StatisticsBase = 'statisticsBase', - /** 以DBSCAN为主的离群点检测算法 */ - DbscanOutlier = 'dbscanOutlier', - /** LOF(Local Outlier Factor) 局部异常因子检测算法 */ - LOFOutlier = 'lofOutlier', - /** Bayesian Inference 转折点检测算法 */ - TurningPoint = 'turningPoint', - /** Page-Hinkley Test 时序数据异常检测算法 */ - PageHinkley = 'pageHinkley', - /** Coefficient of Variation 基于变异系数的周期性检测 */ - Volatility = 'volatility' -} -``` - -### 默认值 -默认VMind会开启`isLimitedbyChartType`以及`usePolish`,同时默认开启所有算法 - -## 返回值类型 -返回值`insight`为洞察数组,单个洞察类型如下所示: -```ts -export interface Insight { - /** 洞察名称 */ - name: string; - /** 洞察类型 */ - type: InsightType; - /** 洞察对应的具体数据 */ - data: { - /** index编号 */ - index: number; - /** 具体数据项 */ - dataItem: DataItem; - }[]; - /** 异常点对应的数据字段id,例如为销售额。增长率等 */ - fieldId?: string; - /** 具体的图元系列名称,例如可能是"东北" | "苹果"等具体的分类数据名称 */ - seriesName?: DataCell | DataCell[]; - /** 语义化数据表达,包含占位符 */ - textContent?: { - // 原始文本内容 - content: string; - // 将变量占位符解析为文本后的纯文本 - plainText: string; - // 变量的映射 - variables?: Record; - }; - // 洞察的具体值 - value?: number | string; - /** 洞察的置信度的粉,用于洞察排序,分数越高代表洞察越重要 */ - significant: number; - info?: { [key: string]: any }; // 关于此洞察的附加信息 -} - -export interface InsightTextContent { - /** 解析值 */ - value: DataCell; - /** 格式化后的值 */ - formatValue?: string; // 格式化后的值 - /** 字段名称 */ - fieldName: string; - /** 当前颜色 */ - color?: string; - /** 值的类型,例如上升趋势或下降趋势 */ - valueType?: 'ascendTrend' | 'descendTrend' | string; - /** 图标类型,例如比率、上升趋势或下降趋势 */ - icon?: 'ratio' | 'ascendTrend' | 'descendTrend' | string; - /** 是否为度量值 */ - isMeasure?: boolean; - /** 是否为维度值 */ - isDimValue?: boolean; -} -``` - -### 具体案例和相关教程 -[智能洞察](../guide/Basic_Tutorial/Chart_Insight) diff --git a/docs/assets/api/zh/parseCSVData.md b/docs/assets/api/zh/parseCSVData.md deleted file mode 100644 index 7b4585a0..00000000 --- a/docs/assets/api/zh/parseCSVData.md +++ /dev/null @@ -1,60 +0,0 @@ -# parseCSVData - -## 接口描述 - -parseCSVData接口用于将CSV字符串转换为VMind所需的数据集(dataset)和字段信息(fieldInfo)。 - -## 接口参数 - -```typescript -parseCSVData(csv: string): { fieldInfo: FieldInfo[], dataset: any[] } -``` - -- csv: string类型,表示需要解析的CSV字符串。 - -## 返回值类型 - -返回一个对象,包含两个属性: - -- fieldInfo: FieldInfo[]类型,表示解析后的字段信息,每个元素是一个对象,包含以下属性: - -```bash -- fieldName: string类型,表示字段名称。 -- description: string类型,表示字段描述,可选。 -- type: DataType类型,表示字段类型,可为"string"、"int"、"float"、"date"。 -- role: ROLE类型,表示字段角色,可为"dimension"、"measure"。 -``` - - -- dataset: DataItem类型,表示解析后的数据集,每个元素是一个对象,键为字段名称,值为对应的数据: -```ts -type DataItem = Record; -``` - -## 使用示例 - -```typescript -import VMind from '@visactor/vmind' -const csv=`Product name,region,Sales -Coke,south,2350 -Coke,east,1027 -Coke,west,1027 -Coke,north,1027 -Sprite,south,215 -Sprite,east,654 -Sprite,west,159 -Sprite,north,28 -Fanta,south,345 -Fanta,east,654 -Fanta,west,2100 -Fanta,north,1679 -Mirinda,south,1476 -Mirinda,east,830 -Mirinda,west,532 -Mirinda,north,498` -const vmind = new VMind(options) -const { fieldInfo, dataset } = vmind.parseCSVData(csv); -``` - -## 相关教程 -[数据格式与数据处理](../guide/Basic_Tutorial/Chart_Generation) diff --git a/docs/assets/api/zh/text2Chart.md b/docs/assets/api/zh/text2Chart.md deleted file mode 100644 index 756e1ff0..00000000 --- a/docs/assets/api/zh/text2Chart.md +++ /dev/null @@ -1,119 +0,0 @@ -# text2Chart - -## 接口描述: -text2Chart函数用于调用LLM完成数据提取,图表智能生成两个任务,返回生成的图表spec、图表二维数据表,图表类型和字段映射等。实现一步从普通文本生成图表的智能化过程。 - -## 支持模型: -- GPT模型 -- 豆包模型 -- DeepSeek模型 -- 其他任意模型 - -## 图表类型列表 -VMind支持25种常见的图表类型: -```typescript -export enum ChartType { - DynamicBarChart = 'Dynamic Bar Chart', - BarChart = 'Bar Chart', - LineChart = 'Line Chart', - AreaChart = 'Area Chart', - PieChart = 'Pie Chart', - ScatterPlot = 'Scatter Plot', - WordCloud = 'Word Cloud', - RoseChart = 'Rose Chart', - RadarChart = 'Radar Chart', - SankeyChart = 'Sankey Chart', - FunnelChart = 'Funnel Chart', - DualAxisChart = 'Dual Axis Chart', - WaterFallChart = 'Waterfall Chart', - BoxPlot = 'Box Plot', - LinearProgress = 'Linear Progress chart', - CircularProgress = 'Circular Progress chart', - LiquidChart = 'Liquid Chart', - BubbleCirclePacking = 'Bubble Circle Packing', - MapChart = 'Map Chart', - RangeColumnChart = 'Range Column Chart', - SunburstChart = 'Sunburst Chart', - TreemapChart = 'Treemap Chart', - Gauge = 'Gauge Chart', - BasicHeatMap = 'Basic Heat Map', - VennChart = 'Venn Chart' -} -``` -可通过options参数中的chartTypeList限制生成的图表类型。 - -## 接口参数: - -```typescript -interface GenerateChartParams { - text: string, - userPrompt: string; - dataset?: Array>; - options?: { - fieldInfo?: FieldInfo[]; - chartTypeList?: ChartType[]; - colorPalette?: string[]; - animationDuration?: number; - theme?: ChartTheme | string; - enableDataQuery?: boolean; - } -} -``` - -- text (string): 必选,原始文本内容 -- userPrompt (string): 可选,用户的可视化意图(你想从文本中主要提取哪些数据,如何用图表进行展示) -- options: 可选,选项参数,包括以下内容: - - - fieldInfo (Array): 文本类型中包含的字段信息,包括字段名称,类型等;传递了fieldInfo的场景,VMind会只提取跟传入fieldInfo相关联的内容 - - chartTypeList (ChartType[],可选): 支持的图表类型列表。若不为undefined,则会从该列表指定的图表类型中选择生成。 - - enableDataQuery (boolean, 可选): 决定是否在图表生成过程中开启数据聚合 - - colorPalette (Array, 可选): 用于设置图表的调色板 - - animationDuration (number, 可选): 用于设置图表动画的播放持续时间 - - theme (ChartTheme | string, 可选): 设置最终sepc的主题样式,默认为空,VMind会默认使用带渐变颜色的主题样式,可以设置 VChart 通用深浅主题('light' | 'dark')或者符合你使用场景下的主题样式 - -## 返回值类型: - -```typescript -interface GenerateChartResult { - /** 图表spec */ - spec: Record; - /** 提取出来的数据 */ - dataTable: DataTable; - /** 字段信息 */ - fieldInfo: FieldInfo[]; - /** 图表类型*/ - chartType: ChartType; - /** 最终的视觉通道映射 */ - cell: Cell; - /** token 消耗量 */ - usage: Usage; - /* 生成当前图表的具体指令,在user prompt的情况下跟user prompt一致 */ - command: string; - /** 转唯gif/video时所用的配置时间 *// - time: { - totalTime : number; - frameArr: number[]; - }; - /** 基于规则的图表推荐结果,在手动设置规则或者大模型生成有误情况下产生 */ - chartAdvistorRes: { - /** 图表spec */ - spec: Record; - /** 图表类型*/ - chartType: ChartType; - /** 推荐得分 */ - score: number - }[] -} -``` - -- spec (Object): 生成的VChart图表spec。若dataset为空,则为不包含数据的spec模板 -- dataTable (Record[]): 从文本中提取到的二维表数据 -- fieldInfo (FieldInfo): 在用户没有传入fieldInfo的情况下,从文本中提取到到字段信息,即二维表的表头信息 -- chartType (ChartType): 生成的图表类型,参见`图表类型列表`章节 -- cell (Record): 图表中的字段映射,描述数据集中的字段如何映射到图表的各个视觉通道上 -- usage (any): LLM token总消耗 -- time (number): 图表动画的时长信息,可用于导出GIF和视频 -- chartAdvistorRes(Array): 该结果是根据当前数据和字段信息,通过VMind的内置规则推导得到的图表推荐结果,在大模型生成图表过程有误时兜底产生。详见:[基于规则的图表生成](../guide/Basic_Tutorial/Chart_Advisor) - -# 使用实例 -[数据提取——从文本一步生成图表](../guide/Basic_Tutorial/Data_Extraction) \ No newline at end of file diff --git a/docs/assets/changelog/en/release.md b/docs/assets/changelog/en/release.md deleted file mode 100644 index 0e1541c8..00000000 --- a/docs/assets/changelog/en/release.md +++ /dev/null @@ -1,176 +0,0 @@ -# v2.0.8 - -2025-07-11 - - -**🐛 Bug fix** - -- **@visactor/vmind**: fix legend field of heatmap, and fix position of rankingBar - -**🔨 Refactor** - -- **@visactor/vmind**: update cell of radar and rose - - - -[more detail about v2.0.8](https://github.com/VisActor/VMind/releases/tag/v2.0.8) - -# v2.0.5 - -2025-04-07 - -🆕 New Features - -@visactor/vmind: add insights to annotation function -🔖 Fixes - -insights: fix some bug in dual-charts - - -[more detail about v2.0.5](https://github.com/VisActor/VMind/releases/tag/v2.0.5) - -# v2.0.3 - -2025-03-04 - -**🆕 New Features** - -- **atom**: VMind's internal atomization feature now supports function call capability - -**🔖 Fixes** - -- **chartGeneration**: Fixed issues where stacked/percentage bar charts were not working, and bar charts were not generating correctly -- **getInsights**: Fixed an issue where, if chart values were strings, the original data obtained by insights was converted to number type, potentially causing incorrect matches - -**🔖 Others** - -- **@visactor/vmind**: Optimized type definitions - -# v2.0.2 - -2025-02-23 - - -**🔖 Fix** - -- **@visactor/vmind**: fix fieldinfo may undefiend while chart-advistor - -[more detail about v2.0.2](https://github.com/VisActor/VMind/releases/tag/v2.0.2) - -# v2.0.1 - -2025-02-21 - - -**🆕 New feature** - -- **@visactor/vmind**: Support DeepSeek and other custom model with api-key -- **@visactor/vmind**: 12 new chart types added for chart generation -- **@visactor/vmind**: Add text2Chart API -- **@visactor/vmind**: Add getInsights API - -**🔖 other** - -- **@visactor/vmind**: Overall architecture upgrade - - -[more detail about v2.0.1](https://github.com/VisActor/VMind/releases/tag/v2.0.1) - -# v1.2.12 - -2024-06-17 - - -**🔖 New featureure** - -- **@visactor/vmind**: intelligent insight module -- **@visactor/vmind**: add custom model type support -- **@visactor/vmind**: take skylark model when no model type match - -[more detail about v1.2.12](https://github.com/VisActor/VMind/releases/tag/v1.2.12) - -# v1.2.11 - -2024-04-24 - - -**🐛 Fixes** - -Fix reference error in node. - -[more detail about v1.2.11](https://github.com/VisActor/VMind/releases/tag/v1.2.11) - -# v1.2.9 - -2024-04-19 - - -**🆕 New New featureures** - -- **@visactor/vmind**: Refactored the VMind basic framework: abstracted TaskNode, Application class, used Meta for flow arrangement, and improved code reusability and scalability. -- **@visactor/vmind**: Intelligent chart generation: supports generating spec templates without a data set; supports filling data into spec templates. -- **@visactor/vmind**: Intelligent chart generation: supports selecting chart types from a specified list of chart types. - -**🐛 Fixes** - -Intelligent data aggregation: replaced alasql keyword in SQL to further improve the success rate of SQL execution. - -[more detail about v1.2.9](https://github.com/VisActor/VMind/releases/tag/v1.2.9) - - -# v1.2.7 - -March 26, 2024 - -**🆕 New Features** - -- **@visactor/vmind**: support data aggregation with skylark -- **@visactor/vmind**: support rule-based chart generation -- **@visactor/vmind**: use fold to process the dataset when there are more than 1 y field - -**🐛 Bug Fixes** - -Fixed several badcases in data aggregation and chart generation. - -[For more details, please see v1.2.7](https://github.com/VisActor/VMind/releases/tag/v1.2.7) - -# v1.2.4 - -**Planned Features** - -- GIF, video export function supports node environment -- Further standardize API -- Remove unrelated dependencies -- Optimize data aggregation function, fix a large number of badcases -- Smart Chart Generation fixes badcases - -# v1.2.3 - -**Planned Features** - -- Data aggregation function, access to headless bi calculator module, vutils -- Intelligent data aggregation, generate SQL through LLM, aggregate, filter, and sort data - -# v1.2.0 - -**Planned Features** - -1. Data module restructuring, supports direct external transmission of the dataset, bypassing the interpretation of field types by LLM. -2. Intelligent chart generation accesses skylark pro, skylark2-pro-4k models -3. Optimize chart generation performance - -# v1.1.0 - -**Planned Features** - -1. Support new chart types: Dual Axis Chart, Funnel Chart, Waterfall Chart, Box Plot -2. Refactor the data module, dock with VizSchema -3. Add a fallback mechanism when the chart generation fails, recommend charts using the chart-advisor module. - -# v1.0.6-alpha.5 - -1. Support new chart types: Sankey Diagram, Radar Chart, Rose Chart. -2. Fixed dependency errors. -3. Support for node-side calls. -4. Support for entering url and request parameters during initialization, customize model request methods: you can customize parameters such as LLM service URL, request headers, request methods, model names, maximum tokens, and temperature, etc. -5. Removed the ffmpeg dependency, replaced with external input to reduce the package volume and difficulty of installing dependencies. diff --git a/docs/assets/changelog/zh/release.md b/docs/assets/changelog/zh/release.md deleted file mode 100644 index d71440c8..00000000 --- a/docs/assets/changelog/zh/release.md +++ /dev/null @@ -1,177 +0,0 @@ -# v2.0.8 - -2025-07-11 - - -**🐛 功能修复** - -- **@visactor/vmind**: fix legend field of heatmap, and fix position of rankingBar - -**🔨 功能重构** - -- **@visactor/vmind**: update cell of radar and rose - - - -[更多详情请查看 v2.0.8](https://github.com/VisActor/VMind/releases/tag/v2.0.8) - -# v2.0.5 - -2025-04-07 - -🆕 New Features - -@visactor/vmind: add insights to annotation function -🔖 Fixes - -insights: fix some bug in dual-charts - - -[更多详情请查看 v2.0.5](https://github.com/VisActor/VMind/releases/tag/v2.0.5) - -# v2.0.3 - -2025-03-04 - -**🆕 新增功能** - -- **atom**: VMind内部原子化功能支持function call能力 - -**🔖 Fix** - -- **chartGeneration**: 修复堆积类/百分比柱图不生效的问题,修复条形图无法正确生成的问题 -- **getInsights**: 修复当图表数值为string时,洞察得到的原始数据为转为number类型的数据项,导致匹配可能有误的问题 - -**🔖 其他** - -- **@visactor/vmind**: 类型定义优化 - - -# v2.0.2 - -2025-02-23 - - -**🔖 Fix** - -- **@visactor/vmind**: fix fieldinfo may undefiend while chart-advistor - -[更多详情请查看 v2.0.2](https://github.com/VisActor/VMind/releases/tag/v2.0.2) - -# v2.0.1 - -2025-02-21 - - -**🆕 新增功能** - -- **@visactor/vmind**: Support DeepSeek and other custom model with api-key -- **@visactor/vmind**: 12 new chart types added for chart generation -- **@visactor/vmind**: Add text2Chart API -- **@visactor/vmind**: Add getInsights API - -**🔖 其他** - -- **@visactor/vmind**: Overall architecture upgrade - - -[更多详情请查看 v2.0.1](https://github.com/VisActor/VMind/releases/tag/v2.0.1) - -# v1.2.12 - -2024-06-17 - - -**🔖 新增功能ure** - -- **@visactor/vmind**: intelligent insight module -- **@visactor/vmind**: add custom model type support -- **@visactor/vmind**: take skylark model when no model type match - -[更多详情请查看 v1.2.12](https://github.com/VisActor/VMind/releases/tag/v1.2.12) - -# v1.2.11 - -2024-04-24 - - -**🐛 Fixes** - -Fix reference error in node. - -[更多详情请查看 v1.2.11](https://github.com/VisActor/VMind/releases/tag/v1.2.11) - -# v1.2.9 - -2024-04-19 - - -**🆕 New 新增功能ures** - -- **@visactor/vmind**: Refactored the VMind basic framework: abstracted TaskNode, Application class, used Meta for flow arrangement, and improved code reusability and scalability. -- **@visactor/vmind**: Intelligent chart generation: supports generating spec templates without a data set; supports filling data into spec templates. -- **@visactor/vmind**: Intelligent chart generation: supports selecting chart types from a specified list of chart types. - -**🐛 Fixes** - -Intelligent data aggregation: replaced alasql keyword in SQL to further improve the success rate of SQL execution. - -[更多详情请查看 v1.2.9](https://github.com/VisActor/VMind/releases/tag/v1.2.9) - - -# v1.2.7 - -2024-03-26 - -**🆕 新增功能** - -- **@visactor/vmind**:支持 skylark 进行数据聚合 -- **@visactor/vmind**:支持规则型图表生成 -- **@visactor/vmind**:在存在多个y字段时使用fold来处理数据集 - -**🐛 功能修复** - -修复了在数据聚合和图表生成中的若干问题。 - -[更多详情请查看 v1.2.7](https://github.com/VisActor/VMind/releases/tag/v1.2.7) - -# v1.2.4 - -**规划功能:** - -- GIF、视频导出功能支持node环境 -- 进一步规范API -- 移除无关依赖 -- 数据聚合功能优化,修复大量badcase -- 图表智能生成 badcase修复 - -# v1.2.3 - -**规划功能:** - -- 数据聚合功能,接入headless bi calculator模块、vutils -- 智能数据聚合,通过大模型生成sql,对数据进行聚合、筛选、排序 - -# v1.2.0 - -**规划功能:** - -1. 数据模块改造,支持外部直接传dataset,不使用模型进行字段类型解析 -2. 图表智能生成接入skylark pro,skylark2-pro-4k模型 -3. 图表生成性能优化 - -# v1.1.0 - -**规划功能:** - -1. 新增图表类型支持:双轴图、漏斗图、瀑布图、箱型图 -2. 数据模块重构,对接VizSchema -3. 增加生成图表失败时的兜底机制,使用chart-advisor模块进行图表推荐 - -# v1.0.6-alpha.5 - -1. 新增图表类型支持:桑基图、雷达图、玫瑰图 -2. 修复依赖报错 -3. 支持node端调用 -4. 支持初始化时传入url和请求参数,自定义模型请求方式:可以自定义包括大模型服务URL、请求头、请求方法、模型名称、最大tokens和温度等参数 -5. 移除ffmpeg依赖,改为外部传入,减少了包体积和依赖安装难度 diff --git a/docs/assets/guide/en/Basic_Tutorial/Chart_Advisor.md b/docs/assets/guide/en/Basic_Tutorial/Chart_Advisor.md deleted file mode 100644 index 7f4226ad..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Chart_Advisor.md +++ /dev/null @@ -1,84 +0,0 @@ -# Rule-based Chart Generation -VMind can automatically generate charts based on the current dataset in combination with the built-in @visactor/chart-advisor. Chart-advisor is fully dependent on visualization rules and does not need to call large language models. When you use generateChart, and the LLM cannot successfully generate a chart, VMind will use chart-advisor as an alternative to create a chart. - -You can also actively choose to use chart-advisor to generate charts, just set the model type to chart-advisor when initializing the VMind object: -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ -model: Model.CHART_ADVISOR, -}) -const userPrompt = ''; -const advisorResult = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` -Since chart-advisor does not rely on large language models, userPrompt can be set to empty. -You can learn more about fieldInfo and dataset in the [Data Format and Data Processing](./Data_Process) section. - -Chart-advisor will generate several available charts based on a series of rules, at which time generateChart will return a list containing chart types, scores, and spec. - -## Example -Here is an example of a chart generated by chart-advisor using product sales data: - -```ts -const dataset = [ -{ -"Product name": "Coke", -"Sales": 2350 -}, -{ -"Product name": "Sprite", -"total_sales": 1056 -}, -{ -"Product name": "Fanta", -"total_sales": 4778 -}, -{ -"Product name": "Mirinda", -"total_sales": 3336 -} -// ...more data -] - -const fieldInfo = [ -{ -"fieldName": "Product name", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure" -} -] - -const advisorResult = await vmind.generateChart(userPrompt, fieldInfo, dataset); - -``` -The advisorResult result is as follows: -```json -[ -{ -"chartSource": "chartAdvisor", // Chart source -"spec": ..., // Generated chart spec -"chartType": "BAR CHART", // Chart type -"score": 1, // Current chart score -}, -{ -"chartSource": "chartAdvisor", -"spec": ..., // Generated chart spec -"chartType": "RADAR CHART", // Chart type -"score": 0.16666666666666666 // Current chart score -} -] -``` - -Here, score represents the degree of fit between the current chart type and the input data, the higher the score means that the chart type is more suitable for displaying the current data. - - -The generated chart is as follows: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_advisor.png) - -According to the characteristics of the input data and the field information in fieldInfo, chart-advisor will score each type of chart based on a full set of visualization rules and sort each type of chart based on the score. These rules ensure the accuracy and aesthetics of the visualization results and minimize visual confusion and visual errors in the chart. diff --git a/docs/assets/guide/en/Basic_Tutorial/Chart_Generation.md b/docs/assets/guide/en/Basic_Tutorial/Chart_Generation.md deleted file mode 100644 index 8148921e..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Chart_Generation.md +++ /dev/null @@ -1,538 +0,0 @@ -# Chart Generation -This tutorial will provide you with a detailed introduction to the intelligent chart generation feature in VMind and provide some examples. - -There are many ways to generate charts, such as using professional BI visualization tools like PowerBI, Tableau, etc., to create visual charts using the fields of datasets; or you can directly use chart libraries like VChart, ECharts, MatPlotlib, etc., to draw charts by writing code. In addition, chart libraries like VChart, Echarts also provide simple and easy-to-use chart editors, where users can upload data and create charts. - -However, traditional chart generation methods also have some problems: - -- For programming beginners, they may not know how to write code, so they cannot use chart libraries to generate charts. -- There are many types of charts, and the purpose of users' data display varies, which leads to different suitable chart types and corresponding field mappings. For non-professional users, they may not be able to accurately choose the chart type that best expresses their views. -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_chart_generation.png) -- Users have different requirements for chart styles and animations, which often require certain design capabilities to meet. Designing a stunning chart is not easy, it requires design skills and aesthetic sense, which many users lack. - -These problems increase the threshold of data visualization creation and hinder non-professional users from creating visual works that meet their intentions. - -VMind's solution is to use the natural language understanding ability and public domain knowledge of large language models, recommend suitable chart types according to the user's data and display intentions, and map the fields to the appropriate visual channels to achieve intelligent chart generation, thereby reducing the threshold for users to perform data visualization. - - -## generateChart - -The generateChart function of VMind is a powerful tool that helps you intelligently generate charts. This function requires the following parameters: -- userPrompt (string): The user's visualization intent (what information do you want to display with the chart) -- fieldInfo (Array): Information about the fields in the dataset, including field names, types, etc. -- dataset (Array): The original dataset used in the chart, which can be undefined. If the dataset is undefined, a spec template will be generated, and fillSpecTemplateWithData can be called later to fill the data into the spec template. -- options: Optional, option parameters, including: - - - chartTypeList (ChartType[], optional): The list of supported chart types. If not undefined, the chart type will be selected from the types specified in this list. - - enableDataQuery (boolean, optional): Decides whether to enable data aggregation during chart generation - - colorPalette (Array, optional): Used to set the color palette of the chart - - animationDuration (number, optional): Used to set the duration of the chart animation - - theme (ChartTheme | string, optional): Sets the theme style of the final spec. By default, VMind uses a theme style with gradient colors. You can set VChart's general light or dark theme ('light' | 'dark') or a theme style that suits your usage scenario. - - -This method will return a [VChart chart spec](https://www.visactor.io/vchart/guide/tutorial_docs/Basic/A_Basic_Spec). - -📢 **Please note: The generateChart method will pass userPrompt and fieldInfo to the large language model for chart generation, but the detailed data in the dataset will not be passed.** - -In the process of generating the chart, VMind will first use the large language model, recommend a suitable chart type based on userPrompt and fieldInfo. Then, it will map the fields in fieldInfo to the visual channels of the chart, such as the x-axis, y-axis, color, size, etc. - -VMind will add an entrance animation to the generated chart by default, so it will also return the duration of the chart animation time. If you don't want the chart animation, you can set spec.animation to false. - -You can learn more about chart animations in the [VChart animation tutorial](https://www.visactor.io/vchart/guide/tutorial_docs/Animation/Animation_Types). - -Here is an example of using generateChart to generate a chart: -```ts -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) -const userPrompt = 'show me the changes in sales rankings of various car brand'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` -You can learn how to create a VMind instance and the information of the parameters in options in [Creating a VMind Instance](./Create_VMind_Instance), and get more information about fieldInfo and dataset in the [Data Format and Data Processing](./Data_Process) section. - -You can reprocess the spec to change the color, style, animation, etc. of the chart, or you can directly render the VChart chart: - -```html - - -
- -``` -```ts -import VChart from '@visactor/vchart'; - -// Create vchart instance -const vchart = new VChart(spec, { dom: 'chart' }); -// Render Chart -vchart.renderSync(); -``` - -In userPrompt, you can describe what you want to show, which will be used as the basis for the large language model to recommend chart types; you can also pass in a color string array through options.colorPalette, which will be used as the color theme of the chart. - - -## Parameter Explanation -### userPrompt -The `userPrompt` parameter is used to describe the content you want to display with the dataset. This description will be passed to the large language model as a reference when generating the chart. - -For example, suppose we have a mobile phone brand sales dataset, as shown below: -```json -[ - { - "Brand Name": "Apple", - "Market Share": 0.5, - "Average Price": 7068, - "Net Profit": 314531 - }, - { - "Brand Name": "Samsung", - "Market Share": 0.2, - "Average Price": 6059, - "Net Profit": 362345 - }, - { - "Brand Name": "Vivo", - "Market Share": 0.05, - "Average Price": 3406, - "Net Profit": 234512 - }, - { - "Brand Name": "Nokia", - "Market Share": 0.01, - "Average Price": 1064, - "Net Profit": -1345 - }, - { - "Brand Name": "Xiaomi", - "Market Share": 0.1, - "Average Price": 4087, - "Net Profit": 131345 - } -] -``` -You can set `userPrompt` to `Show the market share of each brand`, and then call the `generateChart` method, which will generate a pie chart: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_pie.png) - - -You can also set `userPrompt` to `Show the net profit of each brand`, and the generated chart will show the net profit of each brand: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_column.png) - - -You can even specify the chart type, such as setting `userPrompt` to `Show the net profit of each brand, with a line chart`, and the generated chart will be a line chart: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_line.png) - - -You can even specify the mapping of the chart's visual channels, such as setting `userPrompt` to `Use the average price as the x-axis, net profit as the y-axis, brand name as the color, market share as the size of the point, and draw a scatter plot`: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_scatter.png) - - -The power of VMind is that you can generate the chart you want by simply describing your needs in a sentence, without worrying about the details of chart generation. This is thanks to the public knowledge mastered by the large language model. - -For example, for the following csv data: -```json -Time,Male-Breakfast,Female-Breakfast -Monday,15,22 -Tuesday,12,10 -Wednesday,15,20 -Thursday,10,12 -Friday,13,15 -Saturday,10,15 -Sunday,12,14 -``` - -If your display intention is `Show the difference in breakfast quantity between men and women`, then a dual-axis chart will be generated: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_dual_axis.png) - - -VMind also supports [dynamic bar charts (ranking bar)](https://www.visactor.io/vchart/demo/storytelling/ranking-bar), which is a narrative chart that shows the changes in the rankings of different types of data at different time points through constantly changing bar charts. To generate a dynamic bar chart, there must be a time field in the data. - -For example, we have the following dataset and field information: -```json -[ -{ -"country": "USA", -"continent": "North America", -"GDP": 239270, -"year": 1973 -}, -{ -"country": "India", -"continent": "Asia", -"GDP": 22960, -"year": 1973 -}, -{ -"country": "South Korea", -"continent": "Asia", -"GDP": 7870, -"year": 1973 -}, -{ -"country": "Indonesia", -"continent": "Asia", -"GDP": 10980, -"year": 1973 -}, -{ -"country": "Saudi Arabia", -"continent": "Asia", -"GDP": 23760, -"year": 1973 -}, -{ -"country": "Thailand", -"continent": "Asia", -"GDP": 4130, -"year": 1973 -}, -{ -"country": "Philippines", -"continent": "Asia", -"GDP": 5660, -"year": 1974 -}, -{ -"country": "Malaysia", -"continent": "Asia", -"GDP": 2780, -"year": 1974 -}, -{ -"country": "United Kingdom", -"continent": "Europe", -"GDP": 114750, -"year": 1974, -} -...... //For the complete dataset, please see the packages/vmind/__tests__/browser/src/constants/mockData.ts file in the VMind repository -] -``` -```json -[ - { - "fieldName": "country", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "continent", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "GDP", - "type": "float", - "role": "measure" - }, - { - "fieldName": "year", - "type": "date", - "role": "measure" - } -] -``` - -If `userPrompt` is `Show me the change of the GDP rankings of each country`, then a dynamic bar chart will be generated: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_dynamic_bar.gif) - - -To make VMind generate a chart that meets your expectations, you need to describe your display intention and purpose as clearly as possible in `userPrompt`. In addition, you need to ensure that the field names in the dataset have certain semantics, or add field descriptions in the field information, please refer to the [Data Format and Data Processing](./Data_Process) chapter for details. - -### With Empty User Prompt -If I have a chart, can I get a good chart generation result without manual input of intent, that is, without the input of `userPrompt`? -**The answer is yes!** -Currently, VMind supports generating a chart that the user is most likely to want to present on this data based on public domain knowledge and the content of the fields, even without user intent. Similarly, as mentioned earlier, this requires the data information and field information in the data to be as detailed and complete as possible. Imagine if the name and description of each field in my data are like `'a' | 'b' | 'c'`, it is obviously impossible to produce a high-quality chart, and this data itself has no special meaning because we do not understand what the fields represent. - -Similarly, using the previous mobile phone brand sales dataset as a test, when we do not pass in `userPrompt`, the result is as follows: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_en_text2Chart_default.jpeg) - -### options -#### enableDataQuery: Whether to enable intelligent data aggregation -In the [Data Aggregation](./Data_Aggregation) chapter, we have introduced that in order to meet the chart display requirements such as `showing the top 10 departments with the most sales` or `showing the sales of various products in the northern region`, we need to aggregate the data first, and then generate the chart. By default, the `generateChart` function will call `dataQuery` once during execution, using the same `userPrompt`, `fieldInfo` and `dataset` to aggregate the data, and then complete the subsequent chart generation steps with the aggregated data. - -However, if you are sure that your data can meet the user's chart display requirements without further aggregation, filtering and sorting, you can turn off this process by setting `enableDataQuery` to `false`: -```ts -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) -const userPrompt = 'show me the changes in sales rankings of various car brand'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {enableDataQuery: false}); // Set enableDataQuery to false to turn off data aggregation -``` -This can reduce the process of calling the LLM once, reduce token consumption, and improve chart generation speed. For more information about VMind data aggregation, please refer to the [Data Aggregation](./Data_Aggregation) chapter. - -#### chartTypeList: Limits the type of charts generated by VMind -VMind currently supports 25 common chart types in VChart: -- [Bar Chart](https://www.visactor.io/vchart/demo/bar-chart/basic-column) -- [Line Chart](https://www.visactor.io/vchart/demo/line-chart/basic-line) -- [Area Chart](https://www.visactor.io/vchart/demo/area-chart/basic-area) -- [Pie Chart](https://www.visactor.io/vchart/demo/pie-chart/basic-pie) -- [Scatter Chart](https://www.visactor.io/vchart/demo/scatter-chart/basic-scatter) -- [Dual Axis Chart](https://www.visactor.io/vchart/demo/combination/dual-axis) -- [Word Cloud](https://www.visactor.io/vchart/demo/word-cloud-chart/word-cloud-basic) -- [Rose Chart](https://www.visactor.io/vchart/demo/rose-chart/basic-rose) -- [Radar Chart](https://www.visactor.io/vchart/demo/radar-chart/basic-radar) -- [Box Plot](https://www.visactor.io/vchart/demo/box-plot/basic-box-plot) -- [Funnel Chart](https://www.visactor.io/vchart/demo/funnel-chart/basic-funnel) -- [Sankey Chart](https://www.visactor.io/vchart/demo/sankey-chart/basic-sankey) -- [Waterfall Chart](https://www.visactor.io/vchart/demo/waterfall/basic-waterfall) -- [Dynamic Bar Chart (ranking bar)](https://www.visactor.io/vchart/demo/storytelling/ranking-bar) -- [Range Bar Chart](https://www.visactor.io/vchart/demo/range-column-chart/range-bar) -- [Liquid Chart](https://www.visactor.io/vchart/demo/liquid-chart/liquid-chart) -- [Linear Progress Bar](https://www.visactor.io/vchart/demo/progress/linear-progress) -- [Circular Progress Bar](https://www.visactor.io/vchart/demo/progress/circular-progress) -- [Circle Packing Chart](https://www.visactor.io/vchart/demo/circle-packing-chart/basic-circle-packing) -- [Sunburst Chart](https://www.visactor.io/vchart/demo/sunburst-chart/basic-sunburst) -- [Gauge Chart](https://www.visactor.io/vchart/demo/gauge-chart/basic-gauge) -- [Treemap Chart](https://www.visactor.io/vchart/demo/treemap-chart/basic-treemap) -- [Heatmap Chart](https://www.visactor.io/vchart/demo/heatmap-chart/basic-heatmap) -- [Venn Chart](https://www.visactor.io/vchart/demo/venn-chart/venn-chart) -- [Map](https://www.visactor.io/vchart/demo/map-chart/basic-map) - -Depending on the `userPrompt` and `fieldInfo`, these chart types may all be recommended by the large language model. - -If you have new chart type requirements, feel free to propose them on our [Github page](https://github.com/VisActor/VMind/issues/new/choose). - -If you want to limit the types of charts VMind generates during intelligent chart generation, you can do so by setting the options.chartTypeList array: -```typescript -import VMind, {ChartType} from '@visactor/vmind'; - -// Limit to generating the following types of charts: bar charts, line charts, scatter plots, pie charts, word clouds -const chartTypeList = [ -ChartType.BarChart, -ChartType.LineChart, -ChartType.ScatterPlot, -ChartType.PieChart, -ChartType.WordCloud -] - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {chartTypeList}); -``` -In the above example, VMind will choose the chart type from bar chart, line chart, scatter plot, pie chart, word cloud for generation. If the user forcibly specifies an unsupported chart type in userPrompt, an error will be thrown. - -#### colorPalette: set the chart palette -You can specify the palette used by the chart by setting options.colorPalette to an array of colors: -```typescript -// Set custom palette -const colorPalette = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']; - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {colorPalette}); -``` -Meanwhile, VMind also has a choice of a variety of theme palettes built in such as [Arco-design](https://www.visactor.io/vchart/theme/demo/arco), [Semi-design](https://www.visactor.io/vchart/theme/demo/semi), [Original Design](https://www.visactor.io/vchart/theme/demo/arco): -```typescript -import VMind, {ArcoTheme} from '@visactor/vmind'; - -// Use Arco-design palette -const {spec} = await vmind.generateChart(describe, finalFieldInfo, finalDataset, { -colorPalette: ArcoTheme.colorScheme -}); -``` - -```typescript -import VMind, {VeOThemeFinance} from '@visactor/vmind'; - -// Use Original Design - Finance Industry Theme Palette -const {spec} = await vmind.generateChart(describe, finalFieldInfo, finalDataset, { -colorPalette: VeOThemeFinance.colorScheme -}); -``` -For more theme palettes, see [Intelligent Chart Generation API](../../api/generateChart) - - -## Explanation of return values -The type definition of the return value of the vmind.generateChart method is as follows: - -```typescript -interface GenerateChartResult { -spec: Record; -chartType: ChartType; -cell: Cell; -usage: Usage; -command: string; -time: { -totalTime : number; -frameArr: number[]; -}; -chartAdvistorRes: { -spec: Record; -chartType: ChartType; -score: number -}[] -} -``` - -### spec -Generated VChart chart spec. If the dataset is empty, it will be a spec template without data included. - -### chartType -The type of chart generated, refer to the `chartTypeList: limit the types of charts VMind generates` section of this tutorial - -### cell -Field mapping in the chart, describes how the fields in the dataset are mapped to the different visual channels of the chart. Visual channels is an important concept in data visualization, which describes how to map the attributes of data to visual elements for intuitive understanding by humans. Common visual channels include color, shape, size, orientation, position, etc. For example, through visual channels, we can map different categories in the dataset to different colored graphics, or map numerical values to the size of graphics, thereby quickly understanding the characteristics and distribution of data. - -The following shows an example of a chart being generated: -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = 'Show sales of goods in different regions'; -const fieldInfo=[ -{ -"fieldName": "Product Name", -"type": "string", -"role": "dimension", -"domain": [ -"Coca-Cola", -"Sprite", -"Fanta", -"clear up" -] -}, -{ -"fieldName": "region", -"type": "string", -"role": "dimension", -"domain": [ -"south", -"east", -"west", -"north" -] -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure", -"domain": [ -28, -2350 -] -} -] - -const dataset=[ -{ -"Product Name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product Name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "north", -"Sales": 1027 -}, -... -] -const { chartType, spec, cell } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -console.log(cell) -``` -In this example, a bar chart is generated: - -![Bar chart](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_barchart.png) - -Its cell is as follows: - -```json -{ -"x": "product name", -"y": "sales", -"color": "region" -} -``` - -This indicates that VMind maps the product name field to the x-axis of the chart, the sales field to the y-axis, and the region field to the color of the column. - -### chartAdvistorRes -This result is the chart recommendation result derived based on the current data and field information through VMind's built-in rules. It is generated as a fallback when the model is set to `Model.CHART_ADVISOR` or the user's large model settings are incorrect and cannot obtain results. See: [Rule-based Chart Generation](./Chart_Advisor) - -## Generate spec template -Even without a specific dataset and with only data fields, we may need to generate a chart. For example, we can generate a chart based on the fields in the dataset before querying, and then execute related queries based on the type of chart and the fields it contains. In this case, when calling the generateChart method, there is no need to pass in a specific dataset, but to first generate a spec template, and then obtain the final spec used for chart rendering through the fillSpecWithData method later. - -The following shows how to use the generateChart method to generate a spec template: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = 'Show sales of goods in different regions'; -const fieldInfo=[ -{ -"fieldName": "Product Name", -"type": "string", -"role": "dimension", -"domain": [ -"Coca-Cola", -"Sprite", -"Fanta", -"clear up" -] -}, -{ -"fieldName": "region", -"type": "string", -"role": "dimension", -"domain": [ -"south", -"east", -"west", -"north" -] -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure", -"domain": [ -28, -2350 -] -} -] -// Do not input dataset, generate spec template -const { chartType, spec, cell } = await vmind.generateChart(userPrompt, fieldInfo); -``` -At this point we have obtained the chart spec, field mapping cell and chart type chartType generated by VMind. We then call the fillSpecWithData method to fill in the data in the spec template: - -```typescript -// Fill in data in the template -const dataset = [ -{ -"Product Name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product Name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product Name": "Coke", -"region": "north", -"Sales": 1027 -}, -... -] - -const spec = vmind.fillSpecWithData(spec, dataset) -``` -The final generated spec can be used for rendering VChart charts. diff --git a/docs/assets/guide/en/Basic_Tutorial/Chart_Insight.md b/docs/assets/guide/en/Basic_Tutorial/Chart_Insight.md deleted file mode 100644 index 368db1e6..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Chart_Insight.md +++ /dev/null @@ -1,183 +0,0 @@ -# Intelligent Insights - -In the era of data-driven decision-making, charts serve as a core tool for data visualization, providing an intuitive way to present complex data relationships. However, relying solely on human observation and analysis of charts often makes it difficult to quickly and comprehensively uncover the hidden insights behind the data. - -This tutorial will introduce you to the intelligent insights feature in VMind, demonstrating how to quickly obtain various types of insights from charts using the `getInsights` function, along with some examples. - -## getInsights - -The `getInsights` function in VMind is a powerful tool that helps you extract chart insights and generate semantic explanations. This function requires the following two parameters: -- spec: The specific spec configuration of the current VChart chart -- options (DataInsightOptions): Insight-related configurations that control the number of specific insights, the algorithms used, and the specific configurations of the corresponding algorithms - -During the process of generating intelligent insights, VMind primarily performs two tasks: -- First, it uses built-in statistical algorithms to extract data insights contained in the current chart; -- Then, these identified insights are passed to a large model, which polishes and semantically explains these insights. During the polishing process, VMind passes field information and insight types to the large model but **does not pass any data details to the large model**. - -The second step of polishing by the large model is not mandatory and can be disabled through `options.usePolish`, in which case you will receive data insights and templated semantic content. - -### Built-in Algorithms - -Currently, VMind's built-in algorithms are primarily related to statistics, as listed below: -- LOF (Local Outlier Factor) for local outlier detection -- zScore for global outlier detection -- IQR (Interquartile Range) for global outlier detection -- Page-Hinkley Test for time series anomaly detection -- Bayesian Inference for change point detection -- Mann-Kendall Test for trend detection -- Pearson Correlation Coefficient / Spearman Correlation for correlation detection -- DBSCAN (Density-Based Spatial Clustering of Applications with Noise) algorithm -- Coefficient of Variation for periodicity detection based on the coefficient of variation -- Basic statistical indicators, such as maximum/minimum/average value/proportion anomalies, etc. - -### Large Model Polishing - -In intelligent insights, the large model serves only as a text polishing function, enhancing the readability of the final results, and is an optional configuration. - -## Insight Types - -Based on the existing built-in algorithms, VMind can identify the following 9 types of insights: -- Outliers -- Time series outliers -- Change points -- Points with significant contribution to proportion -- Anomalous intervals -- Overall trends -- Anomalous trends -- Correlations -- Basic statistical indicators - -Depending on different insight results, users can choose different annotation/highlighting methods to present them in charts. - -## Usage Example - -Below is an example of using `getInsights`: -```ts -import VMind from '@visactor/vmind'; - -const specJson = { - type: 'line', - xField: ['Year'], - yField: ['College Admission Rate'], - data: [ - { - id: 'data', - values: [ - {"Year": 1977, "College Admission Rate": 0.05}, - {"Year": 1978, "College Admission Rate": 0.07}, - {"Year": 1979, "College Admission Rate": 0.06}, - {"Year": 1980, "College Admission Rate": 0.08}, - {"Year": 1981, "College Admission Rate": 0.11}, - {"Year": 1982, "College Admission Rate": 0.17}, - {"Year": 1983, "College Admission Rate": 0.23}, - {"Year": 1984, "College Admission Rate": 0.29}, - {"Year": 1985, "College Admission Rate": 0.96}, - {"Year": 1986, "College Admission Rate": 0.3}, - {"Year": 1987, "College Admission Rate": 0.27}, - {"Year": 1988, "College Admission Rate": 0.25}, - {"Year": 1989, "College Admission Rate": 0.23}, - {"Year": 1990, "College Admission Rate": 0.22}, - {"Year": 1991, "College Admission Rate": 0.21}, - {"Year": 1992, "College Admission Rate": 0.25}, - {"Year": 1993, "College Admission Rate": 0.34}, - {"Year": 1994, "College Admission Rate": 0.36}, - {"Year": 1995, "College Admission Rate": 0.37}, - {"Year": 1996, "College Admission Rate": 0.4}, - {"Year": 1997, "College Admission Rate": 0.36}, - {"Year": 1998, "College Admission Rate": 0.34}, - {"Year": 1999, "College Admission Rate": 0.56}, - {"Year": 2000, "College Admission Rate": 0.59}, - {"Year": 2001, "College Admission Rate": 0.59}, - {"Year": 2002, "College Admission Rate": 0.63}, - {"Year": 2003, "College Admission Rate": 0.62}, - {"Year": 2004, "College Admission Rate": 0.61}, - {"Year": 2005, "College Admission Rate": 0.57}, - {"Year": 2006, "College Admission Rate": 0.57}, - {"Year": 2007, "College Admission Rate": 0.56}, - {"Year": 2008, "College Admission Rate": 0.57}, - {"Year": 2009, "College Admission Rate": 0.62}, - {"Year": 2010, "College Admission Rate": 0.69}, - {"Year": 2011, "College Admission Rate": 0.72}, - {"Year": 2012, "College Admission Rate": 0.75}, - {"Year": 2013, "College Admission Rate": 0.75}, - {"Year": 2014, "College Admission Rate": 0.74}, - {"Year": 2015, "College Admission Rate": 0.74}, - {"Year": 2016, "College Admission Rate": 0.75}, - {"Year": 2017, "College Admission Rate": 0.74}, - {"Year": 2018, "College Admission Rate": 0.81}, - {"Year": 2019, "College Admission Rate": 0.8}, - {"Year": 2020, "College Admission Rate": 0.8}, - {"Year": 2021, "College Admission Rate": 0.93}, - {"Year": 2022, "College Admission Rate": 0.96} - ] - } - ] - }; -const vmind = new VMind(options) -const { insights } = await vmind.getInsights(specJson, { - /** Generate up to maxNum insights */ - maxNum: numLimits, -}); -``` - -The final result accurately identifies the overall trend and the significantly anomalous college admission rate in 1985. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_insight_en_1.jpeg) -### Return Structure - -Taking the overall trend as an example, the structured content returned is as follows: -```ts -const outlierInsight = { - /** Type is outlier Insight */ - type: 'outlier', - /** Specific outlier data */ - data: [ - { - index: 8, - dataItem: { - Year: 1985, - College Admission Rate: 0.96, - } - } - ], - /** Numerical field */ - fieldId: 'College Admission Rate', - /** Current outlier value */ - value: 0.96, - /** Insight confidence score */ - significant: 1, - /** Current series name, since the current chart does not have a seriesField configuration, it only contains one series, so it is the default value of vmind */ - seriesName: 'vmind_default_series', - /** Detected by the pageHinkley algorithm */ - name: 'pageHinkley', - /** Specific textual meaning */ - textContent: { - /** Specific text template */ - content: '${b} period shows a significant anomaly, with a value of ${c}.', - /** Variable parsing in the template */ - variables: { - b: { - isDimValue: true, - value: 1985, - fieldName: 'Year' - }, - c: { - value: 0.96, - isMeasure: true, - fieldName: 'College Admission Rate' - } - }, - /** Result of directly replacing template variables with values */ - plainText: '1985 period shows a significant anomaly, with a value of 0.96.' - } -} -``` - -### Adding Insights - -After identifying chart insights, we can use VChart's powerful annotation capabilities to add these contents to the chart, as shown in the final effect below: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_insight_en_2.jpeg) - -## Parameter Details - -For detailed parameter explanations, see: [getInsights](../../api/getInsights) \ No newline at end of file diff --git a/docs/assets/guide/en/Basic_Tutorial/Create_VMind_Instance.md b/docs/assets/guide/en/Basic_Tutorial/Create_VMind_Instance.md deleted file mode 100644 index 02083d45..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Create_VMind_Instance.md +++ /dev/null @@ -1,209 +0,0 @@ - -# Creating a VMind Instance -To start using the VMind intelligent visualization component, you first need to create a VMind instance. When creating a VMind instance, you need to pass in an options object as a parameter. This object contains some key information, such as the URL of the model, the model type, and the headers of the LLM service request, etc. -```ts -import VMind from '@visactor/vmind' - -const vmind = new VMind(options) -``` - -The complete type definition of options is as follows: - -```ts -export interface VMindOptions { - /** URL of your LLM service. For gpt, default is openAI API. */ - url?: string; - /** llm request header, which has higher priority */ - headers?: HeadersInit; - /** post or get */ - method?: 'POST' | 'GET'; - /** LLM Model */ - model?: Model | string; - /** Max token in LLM Chart */ - maxTokens?: number; - /** Temperature of LLM */ - temperature?: number; - /** show llm thoughts or not */ - showThoughts?: boolean; - /** repetition penalty */ - frequencyPenalty?: number; - /** topP */ - topP?: number; - /** custom llm request func */ - customRequestFunc?: { - /** 图表生成任务 */ - chartAdvisor?: RequestFunc; - /** 数据查询任务 */ - dataQuery?: RequestFunc; - /** 文本中提取数据任务 */ - dataExtraction?: RequestFunc; - /** 图表生成中指令生成任务 */ - chartCommand?: RequestFunc; - /** 洞察生成任务 */ - IntelligentInsight?: RequestFunc; - }; -} -``` -In VMindOptions, most parameters will be passed directly to the LLM service. - -## Example with GPT - -If you plan to use the LLM service provided by OpenAI official and authenticate through the OpenAI API key in headers, you can simply initialize VMind like this: - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, // use gpt-4o model - headers: { // specify the header when calling the LLM service - Authorization: `Bearer ${OPENAI_API_KEY}` // Your OPENAI_API_KEY - } -}) -``` - -## Example with DeepSeek - -If you plan to use DeepSeek as the LLM service, you can register your own API key on the [DeepSeek official website](https://platform.deepseek.com/api_keys). After registration, you can register and use VMind as follows. For more details, please refer to the [DeepSeek official API documentation](https://api-docs.deepseek.com/zh-cn/). - - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - url: 'https://api.deepseek.com/chat/completions', // DeepSeek official URL - model: Model.DEEPSEEK_V3, // use DeepSeek-V3 model - headers: { - Authorization: `Bearer ${DEEPSEEK_KEY}` // Your DEEPSEEK_KEY - } -}) -``` - -## Custom Model - -If you want to use any other large model as the LLM service for VMind, similar to the previous examples, you only need to change the `url` and `model` to your model service address and add `headers` content for authentication verification. As follows: - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - url: 'Your LLM URL', - model: 'Your Model Name', - headers: { - Authorization: `Bearer ${Your Key}` - } -}) -``` - -## url -The url parameter is used to specify the address of your LLM service api. The default value is https://api.openai.com/v1/chat/completions - -In your use of VMind, all places that need to call the LLM will send http requests to this url. - -## headers -You can specify the http headers when requesting the LLM service through the headers parameter. The most common usage is to put your api key in headers for authentication; of course, you can also put any fields you need into headers. - -## method -The method parameter is used to specify the method type when requesting the LLM, usually POST. - -## model -You can specify the model type through the model parameter. This field will be put into the request body of the LLM service. You can import the Model type from VMind and use it as the value of the model field. - -```ts -import { Model } from '@visactor/vmind' -``` - -The currently supported model types are: - -```ts -export enum Model { - GPT3_5 = 'gpt-3.5-turbo', - GPT3_5_1106 = 'gpt-3.5-turbo-1106', - GPT4 = 'gpt-4', - GPT_4_0613 = 'gpt-4-0613', - GPT_4o = 'gpt-4o-2024-08-06', - DOUBAO_LITE = 'doubao-lite-32K', - DOUBAO_PRO = 'doubao-pro-128k', - CHART_ADVISOR = 'chart-advisor', - DEEPSEEK_V3 = 'deepseek-chat', - DEEPSEEK_R1 = 'deepseek-reasoner' -} -``` - -Currently, VMind uses the same technology and prompts for all large models to complete various intelligent tasks. - -## max_tokens and temperature -These two parameters respectively determine the maximum token quantity and the randomness of each generated result of the model, see [OpenAI official documentation](https://platform.openai.com/docs/api-reference/chat/create). - -In VMind, the default values of these two parameters are 2048 and 0 respectively. - -## showThoughts -[Related research](https://arxiv.org/abs/2201.11903) shows that the Chain-of-Thought can enhance the thinking reasoning ability of large language models and make the output results more in line with expectations. The showThoughts parameter will affect the prompt that VMind sends to the large language model, determining whether to add the thinking process to the output results when completing tasks such as chart generation and data aggregation. `showThoughts = true` will make the model explicitly output its thinking process, improving the accuracy of the generated results. However, this will increase the length of the model-generated results, bringing more token consumption. When performing tasks such as chart generation, VMind must wait for the model output to end before proceeding to the next step, which will also slow down the execution speed of various VMind methods. - -Therefore, if you expect better execution results, you can set showThoughts to true. If you want VMind to complete tasks such as chart generation and data aggregation with fewer tokens and faster speed, you can set this parameter to false. - -In VMind, showThoughts defaults to true. - -## Customizing the method of calling the LLM service through customRequestFunc - -VMind calls the LLM service through the requestGPT method by HTTP request. However, you can customize the method of calling the LLM in each task through the customRequestFunc parameter. For example, you can request your own LLM service in the form of RPC. -This parameter has three RequestFunc type values, the complete type definition is as follows: -```ts -type customRequestFunc= { - chartAdvisor: RequestFunc; - dataQuery: RequestFunc; -}; - -type RequestFunc = (prompt: string, userMessage: string, options: ILLMOptions | undefined) => Promise; - -export type LLMResponse = { - usage?: Usage; - /** function call res */ - toolRes?: any; - /** content */ - choices?: { - index: number; - message: any; - finish_reason?: string; - }[]; - error?: string; - [key: string]: any; -}; -``` - -chartAdvisor and dataQuery correspond to the methods of calling the LLM during chart generation, data extraction, and data aggregation, respectively. Each method needs to receive the [messages](https://platform.openai.com/docs/api-reference/chat/create#chat-create-messages), [tools](https://platform.openai.com/docs/api-reference/chat/create#chat-create-tools), and VMind options as parameters, and ensure that the returned object is the same as the OpenAI completions API structure (see [The chat completion object](https://platform.openai.com/docs/api-reference/chat/object)). -Here is an example of using RPC for intelligent chart generation: -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, - customRequestFunc: { - chartAdvisor: async (messages: LLMMessage[], tools: ToolMessage[] | undefined, _options: ILLMOptions | undefined) => { - const resp = await call_RPC_LLM_Service(messages, tools, _options) - - const { result } = resp - const content = result.content.content - const gptResponse = { - usage: {}, //token用量信息 - choices: [{ - index: 0, - message: { - role: 'assistant', - content //Put the model's generated results into content - } - }] - } - return gptResponse //return chat completion object, see https://platform.openai.com/docs/api-reference/chat/object - } - } -}) - -const { spec } = await vmind.generateChart(userInput, fieldInfo, dataset); //Call generateChart for chart generation - -``` - -# Conclusion -This tutorial details how to create a VMind instance and how to set various parameters to meet different needs. We learned how to specify the URL of the model service, how to set headers for authentication, how to choose the model type, and how to set the maximum token quantity and temperature of the model-generated content. We also learned how to control whether the model adds the thinking process to the output results through the showThoughts parameter, and how to customize the method of calling the LLM service through the customRequestFunc parameter. - -Through this tutorial, you can not only learn how to create and configure VMind instances, but also understand how to adjust and optimize the use of VMind according to your own needs and environment, so as to more effectively use VMind to complete various tasks, including chart generation, data processing, and data aggregation, etc. - diff --git a/docs/assets/guide/en/Basic_Tutorial/Data_Aggregation.md b/docs/assets/guide/en/Basic_Tutorial/Data_Aggregation.md deleted file mode 100644 index f64a03c7..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Data_Aggregation.md +++ /dev/null @@ -1,382 +0,0 @@ -# Data Aggregation - -## Overview of Data Aggregation -When we use chart libraries like VChart to draw bar charts, line charts, etc., if the dataset used has not been aggregated, it may have a negative impact on the visualization effect. -For example, suppose we have a product sales detail dataset: -```json -// Product sales dataset -[ - { - "Product name": "Coke", - "Sales": 2350 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Sprite", - "Sales": 215 - }, - { - "Product name": "Sprite", - "Sales": 654 - }, - { - "Product name": "Sprite", - "Sales": 159 - }, - { - "Product name": "Sprite", - "Sales": 28 - }, - { - "Product name": "Fanta", - "Sales": 345 - }, - { - "Product name": "Fanta", - "Sales": 654 - }, - { - "Product name": "Fanta", - "Sales": 2100 - }, - { - "Product name": "Fanta", - "Sales": 1679 - }, - { - "Product name": "Mirinda", - "Sales": 1476 - }, - { - "Product name": "Mirinda", - "Sales": 830 - }, - { - "Product name": "Mirinda", - "Sales": 532 - }, - { - "Product name": "Mirinda", - "Sales": 498 - } -] -``` -In this dataset, there are two fields Product name and Sales. It can be seen that in this dataset, multiple data have the same Product name. If we want to use this data to draw a bar chart with Product name as the X-axis and Sales as the Y-axis to show the sales in different regions, there will be multiple bars corresponding to each dimension value on the X-axis. - -Different chart libraries handle this kind of dataset differently. VChart's approach is to stack these bars for display: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_stack.png) - -Drawing charts with this unaggregated dataset may have the following problems: - -- Data overload: If the dataset is very large, there may be a large number of graphic elements in the chart, which may make the chart very chaotic, difficult to read and understand, and cause performance problems. -- Hiding important information: If the data has not been properly aggregated, it may hide some important information. For example, if you have a dataset containing daily sales, drawing this dataset directly may make the chart very chaotic. However, if you aggregate the data by month, it may be easier to see the trend of sales. -- Unclear data distribution: Unaggregated data may make the distribution characteristics of the data unclear, such as the average, median, mode, etc. - -Therefore, we usually aggregate the data appropriately before drawing the chart to better display the characteristics and trends of the data. - -At the same time, because the original dataset does not filter and sort the fields, some chart display intentions cannot be met, such as: show me the 10 departments with the highest sales, show me the sales of various products in the northern region, etc. - -Starting from version 1.2.2, VMind supports the intelligent data aggregation function. This function takes the data input by the user as a data table, generates SQL query statements according to the user's instructions using the large language model, queries data from the data table, and uses GROUP BY and aggregate functions to group, aggregate, sort, and filter the data. - - -Next, we will detail the usage of the VMind data aggregation function. - - -## dataQuery -The dataQuery function of the VMind object is a powerful data aggregation tool. It takes three parameters: userPrompt for user display intent, fieldInfo for dataset field information, and the original dataset. Detailed information about fieldInfo and dataset can be found in [Data Format and Data Processing](./Data_Process). VMind will write SQL statements based on the user's display intent, execute queries on the dataset, and the query results will be stored in the dataset property of the function return value; at the same time, the fields in the query results may change, and the updated field information will also be stored in the fieldInfo property of the return result. - -Next, let's see how to use the dataQuery function through an example: -```ts -import VMind from '@visactor/vmind' -const sourceDataset = [ - { - "Product name": "Coke", - "Sales": 2350 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Sprite", - "Sales": 215 - }, - { - "Product name": "Sprite", - "Sales": 654 - }, - { - "Product name": "Sprite", - "Sales": 159 - }, - { - "Product name": "Sprite", - "Sales": 28 - }, - { - "Product name": "Fanta", - "Sales": 345 - }, - { - "Product name": "Fanta", - "Sales": 654 - }, - { - "Product name": "Fanta", - "Sales": 2100 - }, - { - "Product name": "Fanta", - "Sales": 1679 - }, - { - "Product name": "Mirinda", - "Sales": 1476 - }, - { - "Product name": "Mirinda", - "Sales": 830 - }, - { - "Product name": "Mirinda", - "Sales": 532 - }, - { - "Product name": "Mirinda", - "Sales": 498 - } -] - -const sourceFieldInfo = [ - { - "fieldName": "Product name", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "Sales", - "type": "int", - "role": "measure" - } -] - -const userPrompt=`Show the sales of each product` -const vmind = new VMind(options) - -// Call dataQuery with userPrompt, sourceFieldInfo, and sourceDataset to perform data aggregation -const { fieldInfo, dataset } = vmind.dataQuery(userPrompt, sourceFieldInfo, sourceDataset); -``` - -In this example, the dataset returned by the dataQuery function is as follows: -```json -[ - { - "Product name": "Coke", - "total_sales": 5431 - }, - { - "Product name": "Sprite", - "total_sales": 1056 - }, - { - "Product name": "Fanta", - "total_sales": 4778 - }, - { - "Product name": "Mirinda", - "total_sales": 3336 - } -] -``` - -The returned fieldInfo is as follows: -```json -[ - { - "fieldName": "Product name", - "description": "The name of the product.", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "total_sales", - "description": "An aggregated field representing the total sales of each product. It is generated by summing up the 'Sales' values for each product.", - "type": "int", - "role": "measure" - } -] - -``` - -With this information, we can directly use fieldInfo and dataset to generate charts. You can find the specific operation steps in the [Intelligent Chart Generation](./Chart_Generation) section. - -📢 **Attention: The dataQuery method will pass the userPrompt and fieldInfo to the LLM to generate SQL, and the detailed data in the dataset will not be passed.** - -Finally, we will get the following bar chart: - - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_aggregated_bar.png) - -In this example, the SQL statement generated by VMind is: -```SQL -SELECT `Product name`, SUM(`Sales`) AS total_sales FROM dataSource GROUP BY `Product name` -``` - -This SQL statement selects the Produce name and Sales fields from the sourceDataset, groups by Produce name, and sums the Sales field to generate a new field total_sales. VMind will execute this SQL statement to get the aggregated dataset. - -It should be noted that the SQL keywords currently supported in the dataQuery execution process are: SELECT, GROUP BY, WHERE, HAVING, ORDER BY, LIMIT. The currently supported aggregation functions are: MAX(), MIN(), SUM(), COUNT(), AVG(), but complex SQL operations such as subqueries, JOIN, conditional statements, etc. are not supported. - -### Data Filtering and Sorting -In this section, we will learn how to use natural language to perform operations such as filtering and sorting on the dataset. - -First, let's take a look at the following dataset and field information: - -```ts -import VMind from '@visactor/vmind' - -const sourceDataset = [ -{ - "Product name": "Coke", - "region": "south", - "Sales": 2350 - }, - { - "Product name": "Coke", - "region": "east", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "west", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "north", - "Sales": 1027 - }, - { - "Product name": "Sprite", - "region": "south", - "Sales": 215 - }, - { - "Product name": "Sprite", - "region": "east", - "Sales": 654 - }, - { - "Product name": "Sprite", - "region": "west", - "Sales": 159 - }, - { - "Product name": "Sprite", - "region": "north", - "Sales": 28 - }, - { - "Product name": "Fanta", - "region": "south", - "Sales": 345 - }, - { - "Product name": "Fanta", - "region": "east", - "Sales": 654 - }, - { - "Product name": "Fanta", - "region": "west", - "Sales": 2100 - }, - { - "Product name": "Fanta", - "region": "north", - "Sales": 1679 - }, - { - "Product name": "Mirinda", - "region": "south", - "Sales": 1476 - }, - { - "Product name": "Mirinda", - "region": "east", - "Sales": 830 - }, - { - "Product name": "Mirinda", - "region": "west", - "Sales": 532 - }, - { - "Product name": "Mirinda", - "region": "north", - "Sales": 498 - } -] - -const sourceFieldInfo = [ - { - "fieldName": "Product name", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "Sales", - "type": "int", - "role": "measure" - } -] - -``` - -Suppose we want to show the top three products in terms of sales in the north region, we can do this: - -```ts -const userPrompt = `Show me the top three products in terms of sales in the north` -const vmind = new VMind(options) - -// Call the dataQuery method, pass in userPrompt, sourceFieldInfo, and sourceDataset to perform data aggregation -const { fieldInfo, dataset } = vmind.dataQuery(userPrompt, sourceFieldInfo, sourceDataset); -``` - -During the execution of the dataQuery method, the following SQL statement will be generated: - -```SQL -SELECT `Product name`, SUM(`Sales`) AS total_sales FROM dataSource WHERE region = 'north' GROUP BY `Product name` ORDER BY total_sales DESC LIMIT 3 -``` - -This SQL statement will filter out data where the region is 'north', then group by "Product name", and calculate the total sales of each product, finally sort by sales from high to low, and only take the top three products with the highest sales. - - -Finally, perform the chart generation operation, and we can get the following chart: - - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_order.png) diff --git a/docs/assets/guide/en/Basic_Tutorial/Data_Extraction.md b/docs/assets/guide/en/Basic_Tutorial/Data_Extraction.md deleted file mode 100644 index eded026e..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Data_Extraction.md +++ /dev/null @@ -1,61 +0,0 @@ -# Data Extraction - Generate Chart from Text in One Step - -In the previous section [Chart Generation](./Chart_Generation), we learned how to intelligently generate charts from existing structured data. However, in some scenarios, we may not have a dataset available and might only have more raw data, such as text data. In this tutorial, we will introduce how to use VMind to directly generate charts from a piece of text. - -## text2Chart -The `text2Chart` function in VMind is similar to `generateChart`, with the main difference being that the input changes from a data table and field information to plain text content, as follows: -- text (string): Required, the original text content -- userPrompt (string): Optional, the user's visualization intent (what data you mainly want to extract from the text and how to display it with a chart) -- options: Optional, option parameters, including: - - fieldInfo (Array): Field information contained in the text type, including field names, types, etc. - - chartTypeList (ChartType[], optional): Supported chart type list. If not undefined, a chart will be generated from the chart types specified in this list. - - enableDataQuery (boolean, optional): Decides whether to enable data aggregation during chart generation - - colorPalette (Array, optional): Used to set the color palette of the chart - - animationDuration (number, optional): Used to set the playback duration of the chart animation - - theme (ChartTheme | string, optional): Sets the theme style of the final spec. By default, VMind uses a theme style with gradient colors. You can set VChart's general light or dark theme ('light' | 'dark') or a theme style that suits your usage scenario - -This method will return a [VChart chart spec](https://www.visactor.io/vchart/guide/tutorial_docs/Basic/A_Basic_Spec) and a two-dimensional data table. For more details, see [Data Format and Data Processing](./Data_Process). - -Throughout the process, VMind first uses a large model to extract structured table data from the original text and automatically cleans the table data. Then, similar to intelligent chart generation, it uses the large model to obtain the recommended chart type and specific mapping method. Finally, VMind assembles the results to generate the final VChart spec. - -VMind will add an entrance animation to the generated chart by default, so it will also return the duration of the chart animation time. If you don't want the chart animation, you can set spec.animation to false. - -You can learn more about chart animations in the [VChart Animation Tutorial](https://www.visactor.io/vchart/guide/tutorial_docs/Animation/Animation_Types). - -## Usage Example -Below is an example of using text2Chart to generate a chart: - -```ts -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options); -const text = 'Among the national population[2], the number of people with a college (including junior college and above) education level is 218,360,767; the number of people with a high school (including technical secondary school) education level is 213,005,258; the number of people with a junior high school education level is 487,163,489; the number of people with a primary school education level is 349,658,828 (the above-mentioned education levels include graduates, students who have completed some courses, and students currently enrolled in various schools).'; -const userPrompt = 'Compare the proportion of the population with different education levels in this census'; -const { spec, time, dataTable } = await vmind.generateChart(text, userPrompt); - -console.log(dataTable); -// The data table result is as follows -dataTable = [ - { - "education_level": "college", - "number_of_people": 218360767 - }, - { - "education_level": "high school", - "number_of_people": 213005258 - }, - { - "education_level": "junior high school", - "number_of_people": 487163489 - }, - { - "education_level": "primary school", - "number_of_people": 349658828 - } -] -``` -The result of the chart spec is shown below: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_text2Chart_en_1.jpeg) - -## Parameter Details -The parameters of this function are almost the same as `generateChart`. For more details, see the parameter details section in [Chart Generation](./Chart_Generation). diff --git a/docs/assets/guide/en/Basic_Tutorial/Data_Process.md b/docs/assets/guide/en/Basic_Tutorial/Data_Process.md deleted file mode 100644 index 3da445fe..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/Data_Process.md +++ /dev/null @@ -1,247 +0,0 @@ - -# Data Format and Data Processing -In this tutorial, we will introduce in detail the data formats supported by VMind, and how to use the data processing functions in VMind to obtain these data. - -# VMind Data Format -## Dataset -In VMind, most functions require inputting a dataset. - -In VMind's definition, a dataset is a type of tabular data, its structure is the same as the [flattened data](https://www.visactor.io/vchart/guide/tutorial_docs/Chart_Concepts/Data/Data_Types_and_Interface) in VChart, which is an array composed of multiple data. -Take the product sales dataset as an example, the following shows an example of a dataset: -```json -// Product sales dataset -[ -{ -"Product name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "north", -"Sales": 1027 -}, -{ -"Product name": "Sprite", -"region": "south", -"Sales": 215 -}, -{ -"Product name": "Sprite", -"region": "east", -"Sales": 654 -}, -{ -"Product name": "Sprite", -"region": "west", -"Sales": 159 -}, -{ -"Product name": "Sprite", -"region": "north", -"Sales": 28 -}, -{ -"Product name": "Fanta", -"region": "south", -"Sales": 345 -}, -{ -"Product name": "Fanta", -"region": "east", -"Sales": 654 -}, -{ -"Product name": "Fanta", -"region": "west", -"Sales": 2100 -}, -{ -"Product name": "Fanta", -"region": "north", -"Sales": 1679 -}, -{ -"Product name": "Mirinda", -"region": "south", -"Sales": 1476 -}, -{ -"Product name": "Mirinda", -"region": "east", -"Sales": 830 -}, -{ -"Product name": "Mirinda", -"region": "west", -"Sales": 532 -}, -{ -"Product name": "Mirinda", -"region": "north", -"Sales": 498 -} -] -``` - - -⚠️Note: **In order for the tasks such as chart generation and data aggregation in VMind to be better executed, we recommend that you use a semantically meaningful name for each field in the data (such as Product name, region, Sales, etc.). We do not recommend using field names without any semantics (column1, column2 or random strings, etc.). The large language model will depend on the semantic information contained in the field name to select fields during chart generation and data aggregation** -## Field Information fieldInfo -In VMind, you need to use the fieldInfo object to describe the field information in the dataset. FieldInfo describes the name, type, field description, etc. of each field in the data. This information will be passed to the large language model for tasks such as chart generation and data aggregation. - -The following is the type definition of the fieldInfo object: -```ts -/** field information Of Data Table */ -export interface FieldInfo { - /** name of field */ - fieldName: string; - /** field type, eg: time / category / numerical */ - type: DataType; - /** field role */ - role: ROLE; - /** alias of field */ - alias?: string; - /** additional description of the field. This will help the model have a more comprehensive understanding of this field, improving the quality of chart generation. */ - description?: string; -} -``` -For the dataset shown in the previous section, the corresponding fieldInfo is as follows: -```json -[ -{ -"fieldName": "Product name", -"description": "Represents the name of the product, which is a string.", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "region", -"description": "Represents the region where the product is sold, which is a string.", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "Sales", -"description": "Represents the sales amount of the product, which is an integer.", -"type": "int", -"role": "measure" -} -] -``` - - -⚠️Note: **The large language model will rely on the field names and description in fieldInfo for chart generation and data aggregation. The description is not a mandatory item. FieldInfo can be generated by calling getFieldInfo or parseCSVData.** - -# Data Processing Functions -CSV data is a universal and relatively simple file format that stores tabular data in plain text. JSON is a lightweight data exchange format that can be parsed and generated by various programming languages and is widely used in web applications. In this chapter, we will introduce how to use VMind's built-in data processing functions to convert CSV data into a JSON format dataset, and obtain fieldInfo, or directly obtain fieldInfo from JSON formatted data. - -## parseCSVData -The parseCSVData function in VMind can convert a csv string into a dataset structure and generate fieldInfo by extracting field information through rules. During the execution of the function, the large language model will not be requested. -Taking the product sales dataset as an example, the following is an example of using the parseCSVData function: -```ts -import VMind from '@visactor/vmind' -const csv=`Product name,region,Sales -Coke,south,2350 -Coke,east,1027 -Coke,west,1027 -Coke,north,1027 -Sprite,south,215 -Sprite,east,654 -Sprite,west,159 -Sprite,north,28 -Fanta,south,345 -Fanta,east,654 -Fanta,west,2100 -Fanta,north,1679 -Mirinda,south,1476 -Mirinda,east,830 -Mirinda,west,532 -Mirinda,north,498` -const vmind = new VMind(options) -const { fieldInfo, dataset } = vmind.parseCSVData(csv); - -``` - -For the creation of the VMind instance and the detailed configuration in options, please refer to [Creating VMind Instance](./Create_VMind_Instance) - - -In this example, the returned dataset is the same as the product sales dataset in the previous chapter, and the returned fieldInfo is as follows: -```json -[ -{ -"fieldName": "Product name", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "region", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure" -} -] -``` - - -For the creation of the VMind instance and the detailed configuration in options, please refer to [Creating VMind Instance](./Create_VMind_Instance) - - -The dataset and fieldInfo can be directly used for chart generation and data aggregation in VMind. - -Since this function does not pass the data to the large language model, it cannot obtain the field description in fieldInfo. You can also supplement it to get better chart generation results. - -For more information on parseCSVData, refer to [parseCSVData API](../../api/parseCSVData). - - -## getFieldInfo -The getFieldInfo function in VMind is used to parse JSON structured data to obtain its field information (fieldInfo). The function obtains fieldInfo based on rules parsing, and does not request the large language model during its execution. -Here is an example of usage: -```ts -const dataset=[ -{ -"Product name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "north", -"Sales": 1027 -}, -... -] - -const vmind = new VMind(options) -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -For details on creating VMind instances and configurations in options, you can refer to [Create VMind Instance](./Create_VMind_Instance) - - -In this example, the returned fieldInfo is the same as the product sales dataset in the previous chapter. - -For more information on getFieldInfo, refer to [getFieldInfo API](../../api/getFieldInfo) diff --git a/docs/assets/guide/en/Basic_Tutorial/How_to_Get_VMind.md b/docs/assets/guide/en/Basic_Tutorial/How_to_Get_VMind.md deleted file mode 100644 index 971250db..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/How_to_Get_VMind.md +++ /dev/null @@ -1,41 +0,0 @@ -# How to Get VMind - -There are several ways to get VMind: - -- Get from npm -- Get from cdn -- Get from GitHub repository - -## Get from npm - -First, you need to install VMind in the root directory of the project using the following command - -```bash -# Install with npm -npm install @visactor/vmind - -# Install with yarn -yarn add @visactor/vmind -``` - -VMind needs to be used in conjunction with VChart. In order to draw charts, you also need to introduce VChart into the project. For specific tutorials, please refer to [VChart Quick Start](https://www.visactor.io/vchart/guide/tutorial_docs/Getting_Started) - - -## Get from cdn - -You can get VMind from the following free CDN: - -```html - - - - - -``` - -## Get from GitHub - -On GitHub, you can directly get the source code of VMind: - -- You can directly clone the source code from GitHub. -- You can also choose the corresponding version from the [release](https://github.com/VisActor/VMind/releases) page of VMind, click on Source code in Assets at the bottom of the page, download it to the local and unzip it for use. diff --git a/docs/assets/guide/en/Basic_Tutorial/How_to_Import_VMind.md b/docs/assets/guide/en/Basic_Tutorial/How_to_Import_VMind.md deleted file mode 100644 index ced86bb1..00000000 --- a/docs/assets/guide/en/Basic_Tutorial/How_to_Import_VMind.md +++ /dev/null @@ -1,51 +0,0 @@ -# How to Reference VMind in Your Project - -In the [How to Get VMind](./How_to_Get_VMind) section, we introduced how to get VMind. This section will introduce how to reference VMind under these acquisition methods one by one. - -## Using cdn - -After we get the VMind file from [cdn](./How_to_Get_VMind#cdn-获取), we can add it to the ` - - -``` - -## Using npm - -After we install `@visactor/vmind` into the project through [npm](./How_to_Get_VMind#npm-获取), we can use it in the following way: - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ -url, //default is https://api.openai.com/v1/chat/completions -model: Model.GPT3_5, -headers: { -'api-key': apiKey //Your LLM API Key -} -}) -``` diff --git a/docs/assets/guide/en/Contribution_Guide.md b/docs/assets/guide/en/Contribution_Guide.md deleted file mode 100644 index b03437fb..00000000 --- a/docs/assets/guide/en/Contribution_Guide.md +++ /dev/null @@ -1,182 +0,0 @@ -# VMind Open Source Code Contribution Guide - -Firstly, thumbs up👍🏻 for choosing to join the rank of open source contribution. Additionally, we greatly appreciate you choosing to participate in the VisActor community and contributing to this open source project. - -## VMind Contribution Guide - -The VisActor team usually develops and maintains issues on Github. Please open the [Github website](https://github.com/), click the `Sign up` button in the upper right corner, register an account of your own, and start the first step of your open source journey. - -If for some reason you can't open the Github site, you can still work on the project through [Gitee](https://gitee.com/VisActor/VChart). - -In the [VMind repository](https://github.com/VisActor/VMind), we have a [guide](https://github.com/VisActor/VMind/blob/develop/CONTRIBUTING.zh-CN.md) for all open source contributors that introduces version management, branch management, etc. **Please take a few minutes to read and understand it**. - -## Your First PullRequest - -### Step0: Install Git - -Git is a version control system used to track and manage changes in code in software development projects. It helps developers record and manage the history of code, making it easy for team collaboration, code version control, merging code, and more. With Git, you can track each version of each file and easily switch between and compare different versions. Git also provides branch management, so you can perform multiple parallel development tasks at the same time. - -- Visit the official Git website: -- Download the latest version of Git installer. -- Run the downloaded installer and follow the installation wizard's instructions to install. -- After installation, you can use the `git version` command on the command line to confirm successful installation. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/git_version.png) - -When using Git, you need to set your username and email address, as these will be used in every Git commit. Open the command line and input the following commands to set your Git username: - -```bash -git config --global user.name "your_username" -git config --global user.email "your_email@example.com" -``` - -Please replace "your_username" and "your_email@example.com" with the username and email you want to use in Git. - -### Step1: Fork the Project - -- First, you need to fork this project. Go to the [VMind project page](https://github.com/VisActor/VMind), click the Fork button in the upper right corner. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/fork_vmind.png) - -- Your github account should now have a project named xxxx(your github username)/vmind. -- Use the following command on your local computer: you should get a VMind folder. - -``` -// ssh -git clone git@github.com:xxxx(your github username)/VMind.git -// https -git clone https://github.com/xxxx(your github username)/VMind.git -``` - -### Step2: Get the Project Code - -- Enter the VMind folder and add the VMind remote address - -``` -git remote add upstream https://github.com/VisActor/VMind.git -``` - -- Get the VMind latest source code - -``` -git pull upstream develop -``` - -### Step3: Create a Branch - -- Now we can start contributing our code. VMind default branch is the develop branch. Whether it is feature development, bug fixes, or document writing, please create a new branch and merge it to the develop branch. Use the following code to create the branch: - -``` -// Create feature development branch -git checkout -b feat/xxxx - -// Create problem-fixing development branch -git checkout -b fix/xxxx - -// Create document/demo branch -git checkout -b docs/xxxx -``` - -- Now we can modify code on the branch -- Let's assume we have added some code and made a commit to the stage -- git commit -a -m "new commit" - -### Step4: Merge Changes - -- A common problem is that there is new update in the remote upstream(@visactor/vmind) which can cause conflicts when we push the Pull Request. So, before submission, we can merge the commits from other developers with our commits. Use the following code to switch to develop branch: - -``` -git checkout develop -``` - -- Use the following code to pull the latest code from remote: - -``` -git pull upstream develop -``` - -- Switch back to your own development branch: - -``` -git checkout docs/add-funnel-demo -``` - -- Merge the develop commit to branch1: - -``` -git rebase develop -``` - -- Push the update code to your own branch: - -``` -git push upstream docs/add-funnel-demo -``` - -### Step5: Submit Pull Request - -You can click the New pull request button on your github repo page. - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/create_pr.png) - -Follow the template to write down the content modified in this submission: - -- Check what type of modification this is - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/pr_template.png) - -- Fill in the related issue - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/related_issue.png) - -- If a complex change has been made, please provide background and solution - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/background_solution.png) - -After completing all related information, click Create pull request to submit - -## Mini Task Development Guides - -"**good first issue**" is a common label in the open source community, aimed to help new contributors find ideal starter issues. - -VMind's starter issues can be viewed on the [issue list](https://github.com/VisActor/VMind/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22), which currently includes two types: - -- Demo use case creation -- Simple function development - -If you currently **have time and are willing** to contribute to the community, look at the good first issue in the issue list, and pick one that interests you and suits your abilities. - -I believe you are a student who finishes what you start, so once you understand and decide to take on an issue, please leave a message under the issue to let everyone know. - -### Feature Task - -We have prepared some simple and easy-to-master feature development tasks. If you have a basic understanding of Javascript/Typescript, you can take on this type of task. - -You can learn more about VMind code architecture by implementing requirements. **You can leave a message under the issue and discuss your plan with everyone**. - -1. Based on the develop branch, pull a new `feat/***` branch for development -1. (If you've already installed it, skip this step) Install [@microsoft/rush](https://rushjs.io/pages/intro/get_started/) globally: `npm i --global @microsoft/rush` -1. Run `rush update` in the root directory -1. Run `rush start` to test VMind code locally - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_playground.png) - -Click "Set API-Key and LLM URL" at top left corner to set LLM service url and key - -5. Confirm all tests pass `rush test` -5. After completing development, run `rush change` to write changelog and submit changes -5. Commit all code, and create a Pull Request on Github, inviting others to review - -## Embrace the VisActor Community - -In addition to contributing code to VIsActor, we encourage you to participate in other activities that help the community thrive, such as: - -1. Offering suggestions for project development, feature planning, and more -2. Creating articles and videos, hosting lectures to promote VisActor -3. Writing promotional plans and executing them with the team - -VisActor is also working hard to help community builders grow together. We plan to (but are not limited to, and look forward to more suggestions from everyone) provide the following assistance: - -1. Data visualization development training based on VIsActor, to help participants quickly grow in programming skills, visualization theory, architecture design, and other aspects. -2. Regularly selecting the "Code Contribution Award" and "Community Promotion Award" -3. Organizing community members to participate in open-source activities diff --git a/docs/assets/guide/en/Getting_Started/Getting_Started.md b/docs/assets/guide/en/Getting_Started/Getting_Started.md deleted file mode 100644 index 40380a5b..00000000 --- a/docs/assets/guide/en/Getting_Started/Getting_Started.md +++ /dev/null @@ -1,251 +0,0 @@ -# Quick Start - -@VisActor/VChart provides a full-process solution from data to presentation, with "visualization narrative" and "intelligence" as its core competitiveness. The powerful generation ability of the large language model provides VChart with a natural language interaction interface, allowing us to directly call VChart's capabilities through natural language, and complete chart generation and editing simply, quickly, and with high quality. -@VisActor/VMind is a chart intelligence module based on VChart and the large language model, providing capabilities such as intelligent chart recommendation, intelligent color matching, and dialog-style chart editing, which can greatly reduce the threshold for using VChart and improve the efficiency of users in creating data visualization works. -In this tutorial, we will introduce how to use the VMind component to generate a simple chart. - -## Get VMind - -### Use NPM Package - -First, you need to install VMind in the project root directory using the following command - -```sh -# Install with npm -npm install @visactor/vmind - -# Install with yarn -yarn add @visactor/vmind -``` - -VMind needs to be used in conjunction with VChart. In order to draw charts, you also need to introduce VChart into the project. For specific tutorials, please see [Quick Start](http://www.visactor.io/vchart/guide/tutorial_docs/Getting_Started) - -## Introduce VMind - -### Import through NPM Package - -Use `import` at the top of the JavaScript file to introduce VMind - -```js -import VMind from '@visactor/vmind'; -``` - -## Initialize VMind Instance - -The complete type definition of options is as follows: -First, we need to initialize a VMind instance and use it to complete subsequent operations. VMind currently supports all mainstream models, including OpenAI GPT series, Byte Doubao series, and DeepSeek models. As long as the corresponding model API interface is provided, all models can be directly invoked. -Use the following code to initialize a VMind instance: - -```js -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, // use gpt-4o model - headers: { // specify the header when calling the LLM service - Authorization: `Bearer ${OPENAI_API_KEY}` // Your OPENAI_API_KEY - } -}) -``` - -When initializing the VMind instance, you can specify the url of the LLM service, the type of model, custom model request methods and other parameters. For detailed tutorials, please go to the [Create VMind Instance](./Basic_Tutorial/Create_VMind_Instance) chapter - -## Chart Intelligent Generation Module - -In traditional chart generation steps, in order to make a complete chart, you need to complete the following steps: - -1. First prepare a set of data you want to display -2. Specify a chart type (chart recommendation) -3. Describe how the fields in the data are mapped to the visual channels of the chart (field mapping) -4. Modify the style of each element and set the chart palette (intelligent color matching) - -And to generate a chart with VMind, you only need to: - -1. Provide a set of data you want to display (csv or JSON format) -2. Describe your requirements for the chart, such as what information you want to display in the chart, what style of color matching to use, etc. - -For example, we want to use the following product sales data to show the sales of various products in different regions: - -| Product Name | region | Sales | -| ------------ | ------ | ----- | -| Cola | south | 2350 | -| Cola | east | 1027 | -| Cola | west | 1027 | -| Cola | north | 1027 | -| Sprite | south | 215 | -| Sprite | east | 654 | -| Sprite | west | 159 | -| Sprite | north | 28 | -| Fanta | south | 345 | -| Fanta | east | 654 | -| Fanta | west | 2100 | -| Fanta | north | 1679 | -| Red Bull | south | 1476 | -| Red Bull | east | 830 | -| Red Bull | west | 532 | -| Red Bull | north | 498 | - -To use data in CSV or JSON formats in subsequent processes, it's necessary to call data processing methods to convert CSV data to a JSON format dataset and obtain fieldInfo, or directly obtain fieldInfo from JSON formatted data. VMind provides rule-based methods to get this information. These methods will not transfer detailed data to a larger model. - -We can call parseCSVData to obtain a JSON format dataset and fieldInfo from CSV data for intelligent chart generation and data aggregation: - -```ts -const csvData = `Product Name,region,Sales -Cola,south,2350 -Cola,east,1027 -Cola,west,1027 -Cola,north,1027 -Sprite,south,215 -Sprite,east,654 -Sprite,west,159 -Sprite,north,28 -Fanta,south,345 -Fanta,east,654 -Fanta,west,2100 -Fanta,north,1679 -Red Bull,south,1476 -Red Bull,east,830 -Red Bull,west,532 -Red Bull,north,498`; -//Pass in the csv string to get fieldInfo and dataset for chart generation -const { fieldInfo, dataset } = vmind.parseCSVData(csvData); -``` - -If you already have JSON formatted data, we can also call the getFieldInfo method to obtain fieldInfo from the data: -```ts -const dataset=[ -{ -"Product name": "Coke", -"region": "south", -"Sales": 2350 -}, -{ -"Product name": "Coke", -"region": "east", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "west", -"Sales": 1027 -}, -{ -"Product name": "Coke", -"region": "north", -"Sales": 1027 -}, -... -] - -const vmind = new VMind(options) -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -The content we want to show is "the changes in the sales rankings of various car brands". Call the generateChart method and pass the data and display content description directly to VMind: -```typescript -const userPrompt='show me the changes in sales rankings of various car brand' -//Call the chart generation interface to get spec and chart animation duration -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -Next, we can use VChart to draw the generated chart. -Before drawing, we need to prepare a DOM container with height and width for VChart. - -```html - - -
- -``` - -Next, we create a `VChart` instance, pass in the spec just generated and the ID of the DOM container: - -```ts -// Create vchart instance -const vchart = new VChart(spec, { dom: 'chart' }); -// Draw -vchart.renderSync(); -``` - -The generated chart is as follows: - -![Bar Chart](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/bar.gif) - -We can also make more requests for the chart, for example: - -```typescript -const userPrompt = 'Help me show the sales of various products in different regions, use line charts, and use region as the x-axis'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -The generated chart is as follows: - -![Line Chart](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/line.gif) - -## Export GIF and Video - -VMind supports exporting the generated chart as a GIF animation and video, which can be shared anytime and anywhere. -In order to implement the video export function, you need to additionally include VChart, FFMPEG, canvas related content in your project and pass them as objects to VMind. The following will show how to get the ObjectURL of the chart GIF and video: - -First, install VChart, FFMPEG, and canvas-related content: -```bash -# Install with npm -npm install @visactor/vchart -npm install @visactor/vrender-core -npm install @ffmpeg/ffmpeg^0.11.6 -npm install canvas^2.11.2 -``` -Ensure that the vrender-core version matches the vchart dependency version, for example: `"@visactor/vchart": "1.12.7"` should correspond to `"@visactor/vrender-core": "0.20.7"`. -Usage is as follows: -```typescript -import VChart from "@visactor/vchart"; -import { ManualTicker, defaultTimeline } from "@visactor/vrender-core"; -import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg/dist/ffmpeg.min.js' -import { createCanvas } from "canvas"; -import VMind from "@visactor/vmind"; - -// Initialize vmind and ffmpeg -const vmind = new VMind({}); -const ffmpeg = createFFmpeg({ - log: true, -}); -const loadFFmpeg = async () => { - if (!ffmpeg.isLoaded()) { - await ffmpeg.load(); - } -}; -// Ensure ffmpeg is loaded before using the export feature -await loadFFmpeg(); -// Export video -// Pass in the chart spec, video duration, and necessary parameters for video creation, and return the ObjectURL -const videoSrc = await vmind.exportVideo(spec, time, { - VChart, - FFmpeg: ffmpeg, - fetchFile, - ManualTicker, - defaultTimeline, - createCanvas, - }); -// Export GIF image -const gifSrc = await vmind.exportGIF(spec, time, { - VChart, - FFmpeg: ffmpeg, - fetchFile, - ManualTicker, - defaultTimeline, - createCanvas - }); -``` - -Once you get the ObjectURL of the chart, we can save it as a file. Take saving the video file as an example: - -```typescript -//Create dom element to implement file download -const a = document.createElement('a'); -a.href = videoSrc; -a.download = `${filename}.mp4`; //Set the saved file name -a.dispatchEvent(new MouseEvent('click')); //Save file -``` - -## Summary - -This chapter introduces how to install and use VMind for chart generation, and demonstrates how to save the generated chart as a GIF and video. VMind currently supports bar charts, pie charts, line charts, scatter plots, word clouds, dynamic bar charts, and more chart types are under development. VMind can recommend suitable chart types based on user data and display intentions, map fields to suitable visual channels, and automatically generate palettes that meet user needs, reducing the threshold for users to perform data visualization and helping you easily complete data narratives. diff --git a/docs/assets/guide/en/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md b/docs/assets/guide/en/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md deleted file mode 100644 index 50807003..00000000 --- a/docs/assets/guide/en/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Using Cursor with DeepSeek to Quickly Get Started with Unfamiliar Components - -key words: VisActor, VChart, VTable, VStory, VMind, VGrammar, VRender, Visualization, Chart, Data, Table, Graph, Gis, LLM ---- -In today's software development field, developers face the challenge of continuously improving development efficiency and reducing the learning curve. The core purpose of this document is to help developers achieve this goal, especially by cleverly using **component official documentation** and combining tools like **Cursor** and **DeepSeek** to let AI automatically generate the required code, quickly lowering the entry barrier. Next, we will experiment with several projects in the relatively new open-source project, VisActor (https://www.visactor.com; https://www.visactor.io/), an open-source visualization solution, to see how effective it is. - -# Preparation - -## Create a Test Project - -For example, I have a simple project initialized with `npx create-react-app my-app --template typescript`, which looks like this after starting: - - - -## Obtain DeepSeek API Key - -Register with DeepSeek and create your API key on the [DeepSeek API](https://platform.deepseek.com/api_keys) official website. - - - -## Configure Cursor - -Official website: https://www.cursor.com/ - -Download and register, open your VChart project with Cursor, and configure Cursor. - -Using DeepSeek-V3 as an example, its API model name is `deepseek-chat`, and the API address is https://api.deepseek.com/v1. For more details, see the [API usage official website](https://api-docs.deepseek.com/zh-cn). - -Create a new model on the model page, set the corresponding API address and model name. - - - -Of course, you can also use any other AI model; here, we use DeepSeek. - -# Inject Official Tutorial into @Docs - -# Practical Verification - -## VTable Test - -VTable (https://www.visactor.io/vtable/; https://www.visactor.com/vtable/) is a powerful table component in the VisActor visualization library. It is designed to meet diverse data presentation needs, offering high flexibility and customizability. Whether it's simple data listing or complex data analysis display scenarios, VTable can provide excellent solutions. - -VTable has the following core features: - -- Supports various table types: basic tables, pivot tables, transposed tables, pivot charts, etc. - -- Powerful interaction features: sorting, filtering, row and column dragging, cell editing, etc. - -- Rich cell types: text, charts, progress bars, checkboxes, sparklines, etc. - -- High-performance rendering: supports smooth display of millions of data - -- Multi-platform adaptation: perfect support for mainstream frameworks like Vue, React - -### Invoke AI Interaction Panel in Cursor and Generate Code - -After setting up the project environment, use `cmd + i` to invoke the AI interaction panel. We directly let AI generate a basic table code snippet for inserting VTable. - - - -However, the initial generation result shows that AI does not recognize VTable's `ListTable`, possibly due to the inability to accurately recognize VTable's ListTable configuration. - - - -### Inject Official Tutorial into @Docs - -To solve the above problem, we inject the official tutorial into @Docs. - - - -Explicitly specify `VisActor VTable` in the `prompt` in @Docs. After this step, we are pleasantly surprised to find that AI can correctly write the implementation logic according to the `option` in VTable. - - - -### Code Application and Effect Display - -Copy the generated code into the corresponding file, run the project, and you can see the initial effect, with the table correctly generated. - - - -Then, we continue to let AI modify the table style. AI provided reasonable modification suggestions, - - - -After running the project again, we got a display effect that better meets the requirements: - - - -## VChart Test - -### Add a Bar Chart - -Invoke AI interaction with the `cmd+i` command, and let AI help us generate a simple bar chart code first. - - - -Directly apply this spec, and we check the result; a simple bar chart is rendered. It can be seen that DeepSeek has a certain understanding of VChart, and simple charts can be directly added. Let's try a more complex scenario. - - - -### Complex Scenario, Inject Docs - -We hope to add an average auxiliary line on the y-axis, check the result, but the result is incorrect. Upon closer inspection, it can be found that although the markLine is written as if it is correct, the spec does not conform to the specification, and the average line is calculated. We solve this problem by injecting docs. - - - - - -#### Set Docs - -Enter the Cursor settings page, select `Features`, add new docs, the docs address is https://visactor.com/vchart (https://visactor.io/vchart); you can also directly add through @Docs on the editing page. - - - -### Experimental Results - -By editing again with the newly added docs, the correct result can be obtained! - - - - - -## VStory Test - -VStory (GitHub: https://github.com/VisActor/VStory/; site: https://www.visactor.io/vstory/, https://www.visactor.com/vstory/) is a narrative-oriented visualization development framework that integrates the capabilities of all VisActor visualization components, making it more challenging to use. We conduct a simple test. - -Invoke AI interaction with the `cmd+i` command, and let AI help us generate a simple dashboard demo first. - - - -It can be found that it is completely incorrect because DeepSeek uses data from 2023, and VStory had not been released at that time, so it does not know how to use it. At this point, we need to let it read the documentation to learn. - -### Inject Docs - -We solve this problem by injecting docs. - -Enter the Cursor settings page, select `Features`, add new docs, the docs address is https://visactor.com/vstory/guide/tutorial_docs/VStory_Website_Guide; you can also directly add through @Docs on the editing page. - - - -### Experimental Results - -By editing again with the newly added docs, the correct result can be obtained! - - - - - -**Since VStory uses VChart, VTable, and VRender, to achieve better results, you should add the documentation of VChart, VTable, and VRender to the context simultaneously.** - -# Simple Summary - -1. Improve Development Efficiency - -- Quick Access: Directly access VisActor API documentation through Cursor - -- Intelligent Suggestions: Precise code completion based on VisActor documentation - -2. Enhance Development Experience - -- Seamless Integration: Directly obtain VTable usage guidance in the development environment - -- Real-time Feedback: Quickly verify code effects - -3. Reduce Learning Costs - -- Documentation Assistance: Access VisActor official examples at any time - -- Code Generation: Automatically generate code that complies with VisActor standards - -4. Improve Code Quality - -- Standard Check: Ensure code complies with VTable best practices - -- Performance Optimization: Automatically generate high-performance table configurations - -# Contact Us - -GitHub: [github.com/VisActor](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2FVisActor) - -Leave a message on the VisActor WeChat subscription account (you can join the WeChat group through the subscription account menu): - - - -VisActor official website: [www.visactor.io/](https://link.juejin.cn/?target=https%3A%2F%2Fwww.visactor.io%2Fvtable); [www.visactor.](https://link.juejin.cn/?target=https%3A%2F%2Fwww.visactor.io%2Fvtable)com - -Feishu Group: - - - -Discord: https://discord.com/invite/3wPyxVyH6m - - ---- - -The doc is contributed by [玄魂](https://github.com/xuanhun) \ No newline at end of file diff --git a/docs/assets/guide/en/Intro_to_VMind.md b/docs/assets/guide/en/Intro_to_VMind.md deleted file mode 100644 index 4c349da7..00000000 --- a/docs/assets/guide/en/Intro_to_VMind.md +++ /dev/null @@ -1,73 +0,0 @@ - -# Introduction to VMind -## Preface -VisActor is a full-process visualization solution, which takes "visual storytelling" and "intelligence" as its core development direction. The components of VisActor that carry the ability of "visual storytelling" mainly include VChart, VTable, and VGrammar, all of which provide simple and easy-to-use interfaces. However, we hope that in some typical scenarios, users can generate charts and narrative works without writing code, thereby reducing the learning cost and complexity for users. The powerful generation ability of the large language model provides a natural language interaction interface for the VisActor visualization system, allowing us to directly call various functions of visualization components such as VChart and VTable through natural language, thereby completing visualization creation simply, quickly, and with high quality. - - -![VMind](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_intro_eng.png) - - -VMind is an intelligent visualization component built on the basic capabilities of visualization component libraries such as VChart and VTable. We hope that in some typical scenarios, users can generate charts and narrative works with just one sentence, thereby reducing the learning cost and complexity for users. - -## VMind Architecture Design -Intelligence is the future core direction of VisActor. Only on this basis can we truly reduce the access and development costs of developers and allow them to focus on things outside of visualization. VMind is an intelligent visualization component in the VisActor system. It provides intelligent interfaces in various ways such as rule algorithms, artificial intelligence, machine learning, and large language models to minimize the mental burden of developers using visualization components. - - -![VMind Architecture Diagram](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_structure_eng.png) - - -In the VMind component, the bottom layer is the chart rendering, animation, annotation capabilities, VChart documentation provided by the VChart chart library, and the natural language understanding and code generation capabilities provided by the LLM. Among them, the data processing and interaction layer is responsible for processing user input data and natural language, including data aggregation modules for field parsing, data conversion, aggregation, etc., and the interaction communication module is responsible for handling communication between users and VMind, VMind and the LLM, including user intent recognition, Prompt management, model communication, result parsing. - -## VMind Core Capabilities - - -![VMind Capability Diagram](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_abilities_eng.png) - - -The core capabilities of VMind include intelligent chart generation, intelligent chart editing, and intelligent color matching. -- Intelligent chart generation refers to the process of directly generating charts from the display intent + data described in natural language. -- Intelligent chart editing is the process of generating edited charts based on the original chart through the editing intent described in natural language. -- Intelligent color matching is the process of generating stylized charts from natural language. - -Advanced capabilities are further applications of core capabilities, including complete visual narrative generation, data interpretation, and insight reports. - -## VMind Chart Creation Process - - -![VMind Capability Diagram](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_progress_eng.png) - - -Based on VMind's intelligent chart generation, conversational editing, and intelligent color matching modules, we can summarize the full process of using VMind for chart creation: -First, the user provides a natural language description of the data display intent and chart data, or provides a natural language description of the chart editing intent and data news fragments, etc. These inputs are processed by the intent recognition module and routed to different modules. The intelligent chart generation module generates preliminary charts; the intelligent color matching module will generate corresponding theme color palettes according to user input, making the color matching of the chart more harmonious and beautiful; the conversational editing module will repeatedly apply a series of editing operations to fine-tune and optimize the chart until a chart that meets user needs is generated. - -The collaboration of these modules allows users to create visualization works without any threshold. This process not only greatly simplifies the complexity of chart creation but also greatly improves the efficiency and quality of chart creation. - -This process makes full use of the function call capability of the LLM. Chart generation, chart editing, and intelligent color matching are provided as functions for the model to call. LLM serves as the interface for interacting with users, selects the corresponding function according to user intent, and passes in parameters to execute the function of the corresponding module. In the future, VMind will also integrate insight extraction and data interpretation functions to interpret the generated charts, generate insight reports, or add annotations to the charts to display insight information in the data. At the same time, the model also has a powerful natural language dialogue capability, which can have multiple rounds of dialogue with users, and help users complete the entire process from chart creation to data analysis in a simple, natural, and friendly manner. Developers can easily integrate VMind into their systems as a data visualization assistant. - -## Practical Application of VMind -### Data Video -Data video is a type of video that presents and interprets data content through charts, animations, annotations, voiceovers, etc. This method can transform abstract data into intuitive graphics, present it in a more lively and interesting way, and make it easier for the audience to understand and accept. - -The steps to make a data video include: - -- Determine the data source and theme -- Collect and organize data -- Create, edit, and export charts -- Video editing -In the traditional data video production process, after collecting data, the creator needs to use professional visualization software to convert the data into charts; or use various chart libraries to draw charts through programming and export them as videos. In the era of short videos, everyone can become a video creator. However, non-professional video creators often do not have the skills to visualize data into charts and export them as videos, which greatly increases the threshold for making data videos. - -When using VMind to make data videos, users only need to describe the content they want to show in one sentence after collecting the data, and they can directly generate chart animations and support one-click export to videos and GIFs, which greatly reduces the difficulty of making data videos. - - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/cut.png) - - -### Intelligent Chart Assistant -With the intelligent chart assistant built with VMind, you can use the function call capability of the large language model to judge the user's intent and call the VMind interface to realize chart generation and data interpretation, thereby reducing the difficulty of data visualization. - - -__You can try the VMind Chart Assistant on [Cici](https://ciciai.com/bot/fUuxvgvv).__ - - -![VMind Intelligent Chart Assistant](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_assistant.png) - diff --git a/docs/assets/guide/en/VMind_OpenAPI.md b/docs/assets/guide/en/VMind_OpenAPI.md deleted file mode 100644 index fefafe3f..00000000 --- a/docs/assets/guide/en/VMind_OpenAPI.md +++ /dev/null @@ -1,90 +0,0 @@ -# VMind OpenAPI - -Built on the VMind chart generation tool, the VisActor team has launched VMind Agent, which improves the accuracy and efficiency of intelligent generation and adds multi‑turn editing capabilities. VMind Agent currently provides OpenAPI interfaces that you can call to achieve more advanced intelligent generation. The [VMind Agent Playground](/vmind/playground) offers a simple testing environment to experience VMind Agent’s capabilities. - -## VSeed - -VSeed is a domain‑specific language (DSL) for analytics. It encapsulates commonly used charting capabilities, greatly improving the efficiency of building analytic reporting platforms. In most cases, given a dataset and chart type, it can render directly; each chart type comes with extensive default conventions. - -VSeed is a subset of VChart and VTable. Its configuration is greatly simplified compared with VChart and VTable, making the options easier for large models to understand. It is a chart library specifically packaged for LLM‑driven generation. - -VSeed repository: [https://github.com/VisActor/VSeed](https://github.com/VisActor/VSeed) - -VSeed showcase: [https://visactor.github.io/VSeed/galley/chartType/line.html](https://visactor.github.io/VSeed/galley/chartType/line.html) - -VMind Agent prioritizes using VSeed for code generation for better results, while also supporting native code generation for VChart and VTable. - -## VMind Agent - -The overall technical approach of VMind Agent is as follows: - -When the user provides instructions and code blocks to VMind Agent, the agent uses the LLM to actively call tools and proceeds step by step through Generate/Edit → Check → Edit → Check … until the user’s requirements are met, outputting the corresponding code blocks and explanatory text. - -Compared with traditional chart generation tools, VMind Agent offers advantages in the following areas: -- 🤖 ReAct architecture: Reasoning–action loop implemented with LangGraph -- 🛠️ Diverse tools: Supports multiple chart generation and editing tools -- 📊 Chart types: Supports many chart and table types -- 🎨 Template system: Prebuilt chart templates -- 🔧 Chart editing: Supports modifying existing charts -- 💬 Natural language: Supports generating charts from pure natural‑language input - -### VMind Agent Architecture - -VMind Agent is composed of a Coordinator (scheduler) and a set of tools, and is implemented with the `@langchain/langgraph` library. The main modules are: - - - -#### Coordinator - -The scheduler’s main job is to determine, based on the current state, which tool to call next or whether to end the task. - -#### Generate Tool - -The generation tool is invoked when the user has not provided code or explicitly asks to regenerate code. If no chart type is specified, the tool recommends a suitable chart type based on the data. Each chart or table type provides a basic template; the LLM uses the user’s data and the template to generate the simplest code block for subsequent editing. - -#### Edit Tool - -The editing tool is the core of VMind Agent. Based on the current code and the user’s goal, the LLM breaks the task into multiple simple steps and completes them one by one. Before executing each edit step, the tool retrieves relevant materials from the knowledge base according to the step’s requirements to assist the LLM. - -#### Check Tool - -After each edit operation, the check tool verifies whether the change introduces serious errors or fails to achieve the step’s goal. If the check fails, the previous edit is rolled back. - -#### Short‑term Memory - -Each conversation records the current `sessionId`, allowing the same user to recall the state saved in previous turns and continue multi‑turn editing. - -### VMind Agent Knowledge Base - -To prevent hallucinations during editing, VMind Agent strictly limits the edit scope to the knowledge base fragments provided for each operation. The knowledge base consists of two parts: - -#### RAG - -Tutorial documents, demo examples, and Q&A content have strong independence and are well suited to a RAG approach. Relevant fragments are vectorized and stored in a vector database. For each edit operation, the system retrieves a set of related texts and code snippets for the model’s reference. When editing, if highly similar content is retrieved, the model can accurately perform the corresponding edits on the matched code snippets. - -#### Type Docs - -Configuration schemas for charts and tables are split by chart/table type and by module (e.g., axes, legends) into separate typed documentation fragments. Each fragment includes property names, types, and descriptions, and different fragments are indexed by different TopKeys. The LLM summarizes each fragment into Markdown and stores it in the database. For each TopKey, the LLM also produces a concise summary describing the scope covered by that TopKey. - -For each edit, the system first retrieves relevant TopKeys based on the instruction, then injects the associated Markdown fragments into the prompt. The LLM’s edits are strictly constrained to the range covered by the retrieved knowledge to avoid hallucination‑driven errors. - -## VMind Agent Applications - -### Playground - -VMind Agent Playground provides a simple testing environment to experience the agent’s capabilities. You can enter instructions and code blocks to see the generation and editing results. - -[VMind Agent Playground](/vmind/playground) - -### Douyin Mini Program - -Based on VMind Agent, we have developed a sample mini program. In Douyin mini programs, search for “数据智能洞察助手”. Users can input text for intelligent insights and experience the agent’s generation and editing results. - - - -## VMind OpenAPI Support - -Join our Feishu group to contact us and consult on VMind OpenAPI usage. - - - diff --git a/docs/assets/guide/en/VMind_Website_Guide.md b/docs/assets/guide/en/VMind_Website_Guide.md deleted file mode 100644 index 6a788e72..00000000 --- a/docs/assets/guide/en/VMind_Website_Guide.md +++ /dev/null @@ -1,54 +0,0 @@ - -# VMind Site Guide - -The purpose of this article is to help you use the VMind website more effectively and quickly find the information you need. - -## VMind OpenAPI - -VMind provides OpenAPI interfaces that allow you to achieve more advanced intelligent generation capabilities by calling these interfaces. You can learn more about OpenAPI in the [VMind OpenAPI](./VMind_OpenAPI) section. - -## Quick Start - -### Getting Started - -First, you need to read the [Getting Started](./Getting_Started) section of VMind. This section will teach you how to configure and use the environment required by VMind, as well as how to use VMind to build your first intelligent visualization application. - -### Learn More About VMind - -After you complete [Getting Started](./Getting_Started), you can learn about the functional positioning and related concepts of VMind in [Intro to VMind](./Intro_to_VMind). The [Create VMind Object](./Create_VMind_Object) chapter will teach you how to initialize a VMind object for subsequent operations. You can also learn about the data types supported by VMind in the [Data Input and Process](./Data_Input_and_Process) chapter. In the [Chart Generation](./Chart_Generation) chapter, you can learn more about how to use VMind for intelligent chart generation. The [Data Aggregation](./Data_Aggregation) chapter will teach you how to sort, filter, and aggregate data using VMind. - -## Documentation - -The VMind documentation provides detailed information on functions and APIs. Depending on your needs, you can view the following sections: - -- [Tutorials](./Basic_Tutorial/Create_VMind_Instance): Introduces the basic concepts of VMind and various usage methods. - -- [API](../api/VMind_Instance): Provides detailed descriptions of all available interfaces of VMind. - - - -## How to Use the Search Function - -This site provides a powerful search function that allows you to quickly find relevant usage information. Click on the search box at the top of the site, enter the keyword, and you will see the matching results in the drop-down list. Select the appropriate result to view the relevant content. - -## How to Ask Questions & Suggestions - -We are happy to help you! If you encounter any problems while using VMind, you can ask questions in the following ways: - -1. Submit an issue in the GitHub repository: Visit [VMind GitHub](https://github.com/VisActor/VMind/issues/new/choose), describe the problem you encountered in detail, and our team will respond and resolve it as soon as possible. - -2. Submit a discussion in the GitHub repository: Visit [VMind Discussion](https://github.com/VisActor/VMind/discussions), and we welcome you to share your ideas and suggestions here. Our team will respond and resolve it as soon as possible. - -## How to Report Errors - -If you find any problems in the document examples or think that some parts can be improved, please let us know. You can provide us with error correction information in the following ways: - -1. Submit a pull request in the GitHub repository: Correct the content and submit it, and a team member will review and merge it. - -2. Submit an issue: Point out the problems in the document, and a team member will verify and correct it as soon as possible. - -Thank you for your help! We will continue to improve the documentation and provide a better learning experience for all VMind users. diff --git a/docs/assets/guide/menu.json b/docs/assets/guide/menu.json deleted file mode 100644 index 4ee20fce..00000000 --- a/docs/assets/guide/menu.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "menu": "scripts", - "children": [ - { - "path": "VMind_Website_Guide", - "title": { - "zh": "VMind站点指引", - "en": "VMind Website Guide" - } - }, - { - "path": "VMind_OpenAPI", - "title": { - "zh": "VMind OpenAPI", - "en": "VMind OpenAPI" - } - }, - { - "path": "Intro_to_VMind", - "title": { - "zh": "VMind简介", - "en": "Introduction to VMind" - } - }, - { - "path": "Getting_Started", - "title": { - "zh": "快速上手", - "en": "Getting Started" - }, - "children": [ - { - "path": "Getting_Started", - "title": { - "zh": "VMind快速上手", - "en": "Getting Started with VMind" - } - }, - { - "path": "Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc", - "title": { - "zh": "使用Trace Context快速上手VisActor", - "en": "Quickly Get Started with VisActor Using Trace Context" - } - } - ] - }, - { - "path": "Contribution_Guide", - "title": { - "zh": "贡献指南", - "en": "Contribution Guide" - } - }, - { - "path": "Basic_Tutorial", - "title": { - "zh": "基础教程", - "en": "Basic Tutorial" - }, - "children": [ - { - "path": "How_to_Get_VMind", - "title": { - "zh": "如何获取VMind", - "en": "How to Get VMind" - } - }, - { - "path": "How_to_Import_VMind", - "title": { - "zh": "如何在项目中引用 VMind", - "en": "How to Import VMind" - } - }, - { - "path": "Create_VMind_Instance", - "title": { - "zh": "创建VMind实例", - "en": "Create VMind Instance" - } - }, - { - "path": "Data_Process", - "title": { - "zh": "数据格式与数据处理", - "en": "Data Format and Data Process" - } - }, - { - "path": "Data_Aggregation", - "title": { - "zh": "智能数据聚合", - "en": "Intelligent Data Aggregation" - } - }, - { - "path": "Chart_Generation", - "title": { - "zh": "图表智能生成", - "en": "Intelligent Chart Generation" - } - }, - { - "path": "Chart_Advisor", - "title": { - "zh": "基于规则的图表生成", - "en": "Rule-based Chart Generation" - } - }, - { - "path": "Data_Extraction", - "title": { - "zh": "数据提取——从文本一步生成图表", - "en": "Text to Chart" - } - }, - { - "path": "Chart_Insight", - "title": { - "zh": "智能洞察", - "en": "Auto Insight" - } - } - ] - } - ] -} \ No newline at end of file diff --git a/docs/assets/guide/zh/Basic_Tutorial/Chart_Advisor.md b/docs/assets/guide/zh/Basic_Tutorial/Chart_Advisor.md deleted file mode 100644 index 0da2e0ce..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Chart_Advisor.md +++ /dev/null @@ -1,84 +0,0 @@ -# 基于规则的图表生成 -VMind可以结合内建的@visactor/chart-advisor,自动根据当前数据集生成图表。chart-advisor完整依赖于可视化规则,不需要调用大型语言模型。当你使用generateChart,而大模型无法成功生成图表时,VMind会使用chart-advisor作为备选方案来创建一个图表。 - -你同样可以主动选择使用chart-advisor来生成图表,只需在初始化VMind对象时,将模型类型设置为chart-advisor: -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ -model: Model.CHART_ADVISOR, -}) -const userPrompt = ''; -const advisorResult = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` -由于chart-advisor不依赖大型模型,userPrompt可以设为空。 -你可以在[数据格式与数据处理](./Data_Process)章节了解fieldInfo和dataset的更多相关信息。 - -chart-advisor会根据一系列规则生成几种可用的图表,此时generateChart将返回包含图表类型、得分以及spec的列表。 - -## 示例 -下面是一个使用商品销售额数据,通过chart-advisor生成图表的示例: - -```ts -const dataset = [ -{ -"Product name": "Coke", -"Sales": 2350 -}, -{ -"Product name": "Sprite", -"total_sales": 1056 -}, -{ -"Product name": "Fanta", -"total_sales": 4778 -}, -{ -"Product name": "Mirinda", -"total_sales": 3336 -} -// ...more data -] - -const fieldInfo = [ -{ -"fieldName": "Product name", -"type": "string", -"role": "dimension" -}, -{ -"fieldName": "Sales", -"type": "int", -"role": "measure" -} -] - -const advisorResult = await vmind.generateChart(userPrompt, fieldInfo, dataset); - -``` -advisorResult结果如下: -```json -[ -{ -"chartSource": "chartAdvisor", //图表来源 -"spec": ..., //生成的图表spec -"chartType": "BAR CHART", //图表类型 -"score": 1, //当前图表得分 -}, -{ -"chartSource": "chartAdvisor", -"spec": ..., //生成的图表spec -"chartType": "RADAR CHART", //图表类型 -"score": 0.16666666666666666 //当前图表得分 -} -] -``` - -其中,score表示当前图表类型与输入数据的匹配程度,分数越高表示该类型的图表越适用于展示当前数据。 - - -生成的图表如下: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_advisor.png) - -根据输入数据的特性以及fieldInfo中的字段信息,chart-advisor会基于一整套可视化规则,为每种图表类型打分,并依分数将各图表类型排序。这些规则确保了可视化结果的准确度和美观性,并尽可能地减少图表中的视觉混乱和视觉错误。 diff --git a/docs/assets/guide/zh/Basic_Tutorial/Chart_Generation.md b/docs/assets/guide/zh/Basic_Tutorial/Chart_Generation.md deleted file mode 100644 index 309fa323..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Chart_Generation.md +++ /dev/null @@ -1,545 +0,0 @@ -# 图表生成 -本教程将向你详细介绍VMind中的图表智能生成功能,并提供一些示例。 - -生成图表的方式有很多,比如你可以在PowerBI、Tableau等专业的BI可视化工具中,利用数据集的字段来制作可视化图表;或者你也可以直接使用VChart、ECharts、MatPlotlib等图表库,通过编写代码来绘制图表。此外,VChart、Echarts等图表库还提供了简单易用的图表编辑器,用户可以上传数据并进行图表制作。 - -然而,传统的图表生成方式也存在一些问题: - -- 对于编程新手来说,他们可能不会编写代码,也就无法使用图表库来生成图表。 -- 图表类型繁多,用户展示数据的目的各不相同,这就导致了适合展示的图表类型和对应的字段映射也会有所不同。对于非专业用户来说,他们可能无法准确地选择出最能表达自己观点的图表类型。 -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_chart_generation.png) -- 用户对于图表样式、动画的需求各不相同,往往需要一定的设计能力才能满足。设计出令人眼前一亮的图表并不容易,它需要设计技能和审美意识,而这些是许多用户所缺乏的。 - -这些问题增加了数据可视化的创作门槛,阻碍了非专业用户创作符合自己意图的可视化作品。 - -VMind的解决方案是,利用大语言模型的自然语言理解能力和公域知识,根据用户的数据和展示意图,推荐合适的图表类型,并将字段映射到合适的视觉通道上,实现图表的智能生成,从而降低用户进行数据可视化的门槛。 - - -## generateChart -VMind的generateChart函数是一个强大的工具,它可以帮助你智能生成图表。这个函数需要以下几个参数: -- userPrompt (string): 用户的可视化意图(你想用图表展示什么信息) -- fieldInfo (Array): 数据集中字段的信息,包括字段名称,类型等 -- dataset (Array): 图表中使用的原始数据集,可以是undefined。若dataset为undefined,则会生成一个spec模板,后续可以调用fillSpecTemplateWithData将数据填充到spec模板。 -- options: 可选,选项参数,包括以下内容: - - - chartTypeList (ChartType[],可选): 支持的图表类型列表。若不为undefined,则会从该列表指定的图表类型中选择生成。 - - enableDataQuery (boolean, 可选): 决定是否在图表生成过程中开启数据聚合 - - colorPalette (Array, 可选): 用于设置图表的调色板 - - animationDuration (number, 可选): 用于设置图表动画的播放持续时间 - - theme (ChartTheme | string, 可选): 设置最终sepc的主题样式,默认为空,VMind会默认使用带渐变颜色的主题样式,可以设置 VChart 通用深浅主题('light' | 'dark')或者符合你使用场景下的主题样式 - -这个方法会返回一个[VChart图表spec](https://www.visactor.io/vchart/guide/tutorial_docs/Basic/A_Basic_Spec)。 - -📢 **请注意:generateChart方法会将userPrompt和fieldInfo传递给大语言模型用于生成图表,但是dataset中的详细数据并不会被传递。** - -在生成图表的过程中,VMind首先会利用大语言模型,根据userPrompt和fieldInfo,推荐一个适合的图表类型。然后,它会将fieldInfo中的字段映射到图表的x轴、y轴、颜色、尺寸等视觉通道上。 - -VMind默认会为生成的图表添加入场动画,因此它还会返回图表动画的时长time。如果你不想要图表动画,可以将spec.animation设为false。 - -你可以在[VChart动画教程](https://www.visactor.io/vchart/guide/tutorial_docs/Animation/Animation_Types)中了解更多关于图表动画的信息。 - -下面是一个使用generateChart生成图表的例子: -```ts -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) -const userPrompt = 'show me the changes in sales rankings of various car brand'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` -你可以在[创建VMind实例](./Create_VMind_Instance)中了解如何创建VMind实例和options中的参数信息,在[数据格式与数据处理](./Data_Process)章节中获取更多关于fieldInfo和dataset的相关信息。 - -你可以对spec进行二次加工,改变图表的颜色、样式、动画等配置,也可以直接渲染VChart图表: - -```html - - -
- -``` -```ts -import VChart from '@visactor/vchart'; - -// Create vchart instance -const vchart = new VChart(spec, { dom: 'chart' }); -// Render Chart -vchart.renderSync(); -``` - -在userPrompt中,你可以描述你想展示的内容,这将作为大语言模型推荐图表类型时的依据;你也可以通过options.colorPalette传入一个颜色字符串数组,它将被用作图表的颜色主题。 - - - -## 参数详解 -### userPrompt -`userPrompt`参数是你用来描述你想要用数据集展示的内容,这个描述会被传递给大语言模型,作为生成图表时的参考依据。 - -举个例子,假设我们有一个手机品牌销售数据集,如下所示: -```json -[ - { - "品牌名称": "Apple", - "市场份额": 0.5, - "平均价格": 7068, - "净利润": 314531 - }, - { - "品牌名称": "Samsung", - "市场份额": 0.2, - "平均价格": 6059, - "净利润": 362345 - }, - { - "品牌名称": "Vivo", - "市场份额": 0.05, - "平均价格": 3406, - "净利润": 234512 - }, - { - "品牌名称": "Nokia", - "市场份额": 0.01, - "平均价格": 1064, - "净利润": -1345 - }, - { - "品牌名称": "Xiaomi", - "市场份额": 0.1, - "平均价格": 4087, - "净利润": 131345 - } -] -``` -你可以将`userPrompt`设置为`展示各品牌市场占有率`,然后调用`generateChart`方法,这样就会生成一个饼图: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_pie.png) - - -你也可以设置`userPrompt`为`展示各品牌的净利润`,这样生成的图表就会展示各品牌的净利润情况: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_column.png) - - -你还可以指定图表类型,比如设置`userPrompt`为`展示各品牌的净利润,用折线图`,这样生成的图表就会是一个折线图: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_line.png) - - -你甚至可以指定图表视觉通道的映射,例如设置`userPrompt`为`使用平均价格做x轴,净利润做y轴,品牌名称用作颜色,市场份额做点的大小,绘制散点图`: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_scatter.png) - - -VMind的强大之处在于,你只需要用一句话描述你的需求,就可以生成你想要的图表,而无需关心图表生成的细节。这得益于大语言模型所掌握的公域知识。 - -例如,对于下面这份csv数据: -```json -时间,男-早餐,女-早餐 -周一,15,22 -周二,12,10 -周三,15,20 -周四,10,12 -周五,13,15 -周六,10,15 -周日,12,14 -``` - -如果你输入的展示意图为`展示男女早餐饭量不同`,那么就会生成一个双轴图: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_dual_axis.png) - - -VMind还支持[动态条形图(ranking bar)](https://www.visactor.io/vchart/demo/storytelling/ranking-bar),这是一种叙事图表,它通过不断变化的柱状图展示不同时间节点不同种类的数据在排名上的变化。为了生成一个动态条形图,数据中必须有一个时间字段。 - -例如,我们有下面的数据集和字段信息: -```json -[ - { - "country": "USA", - "continent": "North America", - "GDP": 239270, - "year": 1973 - }, - { - "country": "India", - "continent": "Asia", - "GDP": 22960, - "year": 1973 - }, - { - "country": "South Korea", - "continent": "Asia", - "GDP": 7870, - "year": 1973 - }, - { - "country": "Indonesia", - "continent": "Asia", - "GDP": 10980, - "year": 1973 - }, - { - "country": "Saudi Arabia", - "continent": "Asia", - "GDP": 23760, - "year": 1973 - }, - { - "country": "Thailand", - "continent": "Asia", - "GDP": 4130, - "year": 1973 - }, - { - "country": "Philippines", - "continent": "Asia", - "GDP": 5660, - "year": 1974 - }, - { - "country": "Malaysia", - "continent": "Asia", - "GDP": 2780, - "year": 1974 - }, - { - "country": "United Kingdom", - "continent": "Europe", - "GDP": 114750, - "year": 1974, - } - ...... //完整数据集请见VMind仓库中的packages/vmind/__tests__/browser/src/constants/mockData.ts文件 -] -``` -```json -[ - { - "fieldName": "country", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "continent", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "GDP", - "type": "float", - "role": "measure" - }, - { - "fieldName": "year", - "type": "date", - "role": "measure" - } -] -``` - -如果`userPrompt`为`Show me the change of the GDP rankings of each country`,那么就会生成一个动态条形图: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_dynamic_bar.gif) - -为了让VMind生成符合预期的图表,你需要在`userPrompt`中尽可能清晰地描述你的展示意图和目的。此外,你还需要确保数据集的字段名称具有一定的语义,或者在字段信息中添加字段描述,具体请参见[数据格式与数据处理](./Data_Process)章节。 - -### User Prompt 为空 -如果我有一个图表,在不进行人工意图的输入下,即没有`userPrompt`的输入情况下,我可以得到一个较好的图表生成结果吗? -**答案是,yes!** -目前 VMind 支持在没有用户意图的情况下,根据公域知识以及字段的信息内容,去产生一个用户最可能想要在这个数据上进行呈现的图表内容。同样与前文,这需要数据中的数据信息和字段信息尽可能的详细和完整,设想如果我的数据每个字段的名称和描述都为`'a' | 'b' | 'c'`这样的内容,显然无法产生一个高质量的图表,这个数据本身也没有特别的意义,因为我们并不了解其中的字段到底代表了什么含义。 - -同样以前文的手机品牌销售额数据集作为测试,当我们不传入`userPrompt`时,结果如下所示 -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_1.jpeg) - -### options -#### enableDataQuery: 是否开启智能数据聚合 -在[数据聚合](./Data_Aggregation)章节中,我们已经介绍过,为了满足`展示销售额最多的10个部门`或`展示北方区域各商品的销售额`等图表展示需求,我们需要先对数据进行聚合,然后再生成图表。在默认情况下,`generateChart`函数会在执行过程中调用一次`dataQuery`,使用相同的`userPrompt`,`fieldInfo`和`dataset`对数据进行聚合,然后使用聚合后的数据完成后续的图表生成步骤。 - -然而,如果你确定你的数据无需进行进一步的聚合、筛选和排序就可以满足用户的图表展示需求,你可以通过将`enableDataQuery`设置为`false`来关闭这一流程: -```ts -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) -const userPrompt = 'show me the changes in sales rankings of various car brand'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {enableDataQuery: false}); //将enableDataQuery设置为false,关闭数据聚合 -``` -这样做可以减少一次调用大模型的过程,降低token消耗,提高图表生成速度。关于VMind数据聚合的更多信息,请参考[数据聚合](./Data_Aggregation)章节。 - -#### chartTypeList: 限制VMind生成的图表类型 -VMind目前支持VChart中常见的25种图表类型: -- [柱状图](https://www.visactor.io/vchart/demo/bar-chart/basic-column) -- [折线图](https://www.visactor.io/vchart/demo/line-chart/basic-line) -- [面积图](https://www.visactor.io/vchart/demo/area-chart/basic-area) -- [饼图](https://www.visactor.io/vchart/demo/pie-chart/basic-pie) -- [散点图](https://www.visactor.io/vchart/demo/scatter-chart/basic-scatter) -- [双轴图](https://www.visactor.io/vchart/demo/combination/dual-axis) -- [词云](https://www.visactor.io/vchart/demo/word-cloud-chart/word-cloud-basic) -- [玫瑰图](https://www.visactor.io/vchart/demo/rose-chart/basic-rose) -- [雷达图](https://www.visactor.io/vchart/demo/radar-chart/basic-radar) -- [箱型图](https://www.visactor.io/vchart/demo/box-plot/basic-box-plot) -- [漏斗图](https://www.visactor.io/vchart/demo/funnel-chart/basic-funnel) -- [桑基图](https://www.visactor.io/vchart/demo/sankey-chart/basic-sankey) -- [瀑布图](https://www.visactor.io/vchart/demo/waterfall/basic-waterfall) -- [动态条形图(ranking bar)](https://www.visactor.io/vchart/demo/storytelling/ranking-bar) -- [区间条形图](https://www.visactor.io/vchart/demo/range-column-chart/range-bar) -- [水波图](https://www.visactor.io/vchart/demo/liquid-chart/liquid-chart) -- [条形进度条](https://www.visactor.io/vchart/demo/progress/linear-progress) -- [环形进度条](https://www.visactor.io/vchart/demo/progress/circular-progress) -- [嵌套圆图](https://www.visactor.io/vchart/demo/circle-packing-chart/basic-circle-packing) -- [旭日图](https://www.visactor.io/vchart/demo/sunburst-chart/basic-sunburst) -- [仪表盘图](https://www.visactor.io/vchart/demo/gauge-chart/basic-gauge) -- [矩形树图](https://www.visactor.io/vchart/demo/treemap-chart/basic-treemap) -- [热力图](https://www.visactor.io/vchart/demo/heatmap-chart/basic-heatmap) -- [韦恩图](https://www.visactor.io/vchart/demo/venn-chart/venn-chart) -- [地图](https://www.visactor.io/vchart/demo/map-chart/basic-map) - -根据`userPrompt`和`fieldInfo`的不同,这些图表类型都有可能被大语言模型推荐。 -如果你有新的图表类型需求,欢迎在我们的[Github页面](https://github.com/VisActor/VMind/issues/new/choose)提出。 - -如果你想限制VMind在图表智能生成中生成的图表类型,可以通过设置options.chartTypeList数组: -```typescript -import VMind, { ChartType } from '@visactor/vmind'; - -//限制生成以下几种图表类型:柱状图,折线图,散点图,饼图,词云 -const chartTypeList = [ - ChartType.BarChart, - ChartType.LineChart, - ChartType.ScatterPlot, - ChartType.PieChart, - ChartType.WordCloud - ] - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {chartTypeList}); -``` -在上面的例子中,VMind将会在柱状图,折线图,散点图,饼图,词云中选择图表类型进行生成。若用户在userPrompt强行指定了不支持的图表类型,将会抛出错误。 - -#### colorPalette: 设置图表色板 -可以通过将options.colorPalette设置为一个颜色数组来指定图表所使用的色板: -```typescript -//设置自定义色板 -const colorPalette = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']; - -const { spec } = await vmind.generateChart(userPrompt, fieldInfo, dataset, {colorPalette}); -``` -同时,VMind还内置了[Arco-design](https://www.visactor.io/vchart/theme/demo/arco),[Semi-design](https://www.visactor.io/vchart/theme/demo/semi),[源力设计](https://www.visactor.io/vchart/theme/demo/arco)等多套主题色板: -```typescript -import VMind, {ArcoTheme} from '@visactor/vmind'; - -//使用Arco-design色板 -const {spec} = await vmind.generateChart(describe, finalFieldInfo, finalDataset, { - colorPalette: ArcoTheme.colorScheme -}); -``` - -```typescript -import VMind, { VeOThemeFinance } from '@visactor/vmind'; - -//使用源力设计-金融行业主题色板 -const {spec} = await vmind.generateChart(describe, finalFieldInfo, finalDataset, { - colorPalette: VeOThemeFinance.colorScheme -}); -``` -更多主题色板参见[图表智能生成API](../../api/generateChart) - - -## 返回值详解 -vmind.generateChart方法返回值类型定义如下: - -```typescript -interface GenerateChartResult { - /** 图表spec */ - spec: Record; - /** 图表类型*/ - chartType: ChartType; - /** 最终的视觉通道映射 */ - cell: Cell; - /** token 消耗量 */ - usage: Usage; - /* 生成当前图表的具体指令,在user prompt的情况下跟user prompt一致 */ - command: string; - /** 转唯gif/video时所用的配置时间 *// - time: { - totalTime : number; - frameArr: number[]; - }; - /** 基于规则的图表推荐结果,在手动设置规则或者大模型生成有误情况下产生 */ - chartAdvistorRes: { - /** 图表spec */ - spec: Record; - /** 图表类型*/ - chartType: ChartType; - /** 推荐得分 */ - score: number - }[] -} -``` - -### spec -生成的VChart图表spec。若dataset为空,则为不包含数据的spec模板 - -### chartType -生成的图表类型,参见本教程的`chartTypeList: 限制VMind生成的图表类型`章节 - -### cell -图表中的字段映射,描述数据集中的字段如何映射到图表的各个视觉通道上。视觉通道(Visual Channel)是数据可视化中的一个重要概念,用于描述如何将数据的属性映射到视觉元素,以便人类直观理解。常见的视觉通道包括颜色、形状、大小、方位、位置等。例如,通过视觉通道,我们可以将数据集中的不同类别映射到不同颜色的图形,或者将数值大小映射到图形的大小,从而帮助我们快速理解数据的特性和分布。 - -下面展示一个图表生成的例子: -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = '展示不同地区商品销售额'; -const fieldInfo=[ - { - "fieldName": "商品名称", - "type": "string", - "role": "dimension", - "domain": [ - "可乐", - "雪碧", - "芬达", - "醒目" - ] - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension", - "domain": [ - "south", - "east", - "west", - "north" - ] - }, - { - "fieldName": "销售额", - "type": "int", - "role": "measure", - "domain": [ - 28, - 2350 - ] - } -] - -const dataset=[ - { - "商品名称": "Coke", - "region": "south", - "销售额": 2350 - }, - { - "商品名称": "Coke", - "region": "east", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "west", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "north", - "销售额": 1027 - }, - ... -] -const { chartType, spec, cell } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -console.log(cell) -``` -在这个例子中,生成了一个柱状图: - -![柱状图](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_barchart.png) - -其cell如下: - -```json -{ - "x": "商品名称", - "y": "销售额", - "color": "region" -} -``` - -这表示VMind将商品名称字段映射到图表的x轴,销售额字段映射到y轴,region字段映射到柱子的颜色上。 - -### chartAdvistorRes -该结果是根据当前数据和字段信息,通过VMind的内置规则推导得到的图表推荐结果,在设置模型为`Model.CHART_ADVISOR`或者用户的大模型设置有误,无法获取结果时兜底产生。详见:[基于规则的图表生成](./Chart_Advisor) - -## 生成spec模板 -在没有具体数据集、仅有数据字段的情况下,我们也可能需要生成图表。比如,在进行查询之前,我们可以根据数据集中的字段先生成一个图表,之后依据图表的类型和含有的字段执行相关查询。在这种情况下,调用generateChart方法时无需传入具体的数据集,而是先产生一个spec模板,后续再通过fillSpecWithData方法获取最终用于图表渲染的spec。 - -下面展示如何使用generateChart方法生成一个spec模板: - -```typescript -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options) - -const userPrompt = '展示不同地区商品销售额'; -const fieldInfo=[ - { - "fieldName": "商品名称", - "type": "string", - "role": "dimension", - "domain": [ - "可乐", - "雪碧", - "芬达", - "醒目" - ] - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension", - "domain": [ - "south", - "east", - "west", - "north" - ] - }, - { - "fieldName": "销售额", - "type": "int", - "role": "measure", - "domain": [ - 28, - 2350 - ] - } -] -//不传入dataset,生成spec模板 -const { chartType, spec, cell } = await vmind.generateChart(userPrompt, fieldInfo); -``` -此时我们已经得到了VMind生成的图表spec、字段映射cell和图表类型chartType。随后我们调用fillSpecWithData方法,向spec模板中填入数据: - -```typescript -//向模板中填入数据 -const dataset=[ - { - "商品名称": "Coke", - "region": "south", - "销售额": 2350 - }, - { - "商品名称": "Coke", - "region": "east", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "west", - "销售额": 1027 - }, - { - "商品名称": "Coke", - "region": "north", - "销售额": 1027 - }, - ... -] - -const spec = vmind.fillSpecWithData(spec, dataset) -``` -最终生成的spec可以用于渲染VChart图表。 diff --git a/docs/assets/guide/zh/Basic_Tutorial/Chart_Insight.md b/docs/assets/guide/zh/Basic_Tutorial/Chart_Insight.md deleted file mode 100644 index 06243243..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Chart_Insight.md +++ /dev/null @@ -1,179 +0,0 @@ -# 智能洞察 - -在数据驱动决策的时代,图表作为数据可视化的核心工具,能够直观地呈现复杂的数据关系。然而,单纯依赖人眼观察和分析图表,往往难以快速、全面地挖掘出数据背后隐藏的洞察。 - -本教程将向你介绍VMind中智能洞察功能,如何通过`getInsights`快速从图表中获取各种类型的洞察,并提供一些示例。 - -## getInsights -VMind的`getInsights`函数是一个强大的工具,它可以帮你从图表中获取图表洞察,并产生语义化的解释。这个函数只需要如下两个参数: -- spec: 当前VChart图表的具体spec配置 -- options (DataInsightOptions): 洞察相关配置,控制了具体洞察的数量,使用的算法和对应算法的具体配置 - -在产生智能洞察的过程中,VMind主要做了两件事情, -- 先通过内置的统计学算法,获取当前图表中蕴含的数据洞察; -- 再这些识别出来的洞察传递给大模型;让大模型对这些洞察进行润色和语义化解释,在润色过程中,VMind会将字段信息和洞察类型传递给大模型,**并不会把任何数据细节传递给大模型**; - -其中第二部大模型润色并不是必须的,可以通过`options.usePolish`对其进行关闭,此时会得到数据洞察和模版化的语义内容。 - -### 内置算法 -目前VMind内置的算法主要为统计学相关算法,具体如下所示: -- LOF(Local Outlier Factor) 局部异常因子检测算法 -- zScore 全局异常点检测 -- IQR (Interquartile Range) 四分位全局异常检测算法 -- Page-Hinkley Test 时序数据异常检测算法 -- Bayesian Inference 转折点检测算法 -- Mann-Kendall Test 趋势检测算法 -- Pearson Correlation Coefficient / SpearmanCorrelation 相关性检测 -- DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 算法 -- Coefficient of Variation 基于变异系数的周期性检测 -- 基础的统计指标,例如最大/最小/平均值/占比异常等等 - -### 大模型润色 -大模型在智能洞察中,只是起到了一个文本润色功能,使得最终的结果有着较强的可读性,是个可选配置。 - -## 洞察类型 -目前根据已有的内置算法,VMind可以识别出以下9类不同的洞察类型: - - 异常点 - - 时序异常点 - - 转折点 - - 占比贡献巨大点 - - 异常区间 - - 整体趋势 - - 异常趋势 - - 相关性 - - 基础统计指标 - -根据不同的洞察结果,用户可以选取不同的标注/高亮方式在图表中进行呈现。 - -## 使用案例 -下面是一个使用`getInsights`的例子: -```ts -import VMind from '@visactor/vmind'; - -const specJson = { - type: 'line', - xField: ['年份'], - yField: ['高考录取率'], - data: [ - { - id: 'data', - values: [ - {"年份": 1977, "高考录取率": 0.05}, - {"年份": 1978, "高考录取率": 0.07}, - {"年份": 1979, "高考录取率": 0.06}, - {"年份": 1980, "高考录取率": 0.08}, - {"年份": 1981, "高考录取率": 0.11}, - {"年份": 1982, "高考录取率": 0.17}, - {"年份": 1983, "高考录取率": 0.23}, - {"年份": 1984, "高考录取率": 0.29}, - {"年份": 1985, "高考录取率": 0.96}, - {"年份": 1986, "高考录取率": 0.3}, - {"年份": 1987, "高考录取率": 0.27}, - {"年份": 1988, "高考录取率": 0.25}, - {"年份": 1989, "高考录取率": 0.23}, - {"年份": 1990, "高考录取率": 0.22}, - {"年份": 1991, "高考录取率": 0.21}, - {"年份": 1992, "高考录取率": 0.25}, - {"年份": 1993, "高考录取率": 0.34}, - {"年份": 1994, "高考录取率": 0.36}, - {"年份": 1995, "高考录取率": 0.37}, - {"年份": 1996, "高考录取率": 0.4}, - {"年份": 1997, "高考录取率": 0.36}, - {"年份": 1998, "高考录取率": 0.34}, - {"年份": 1999, "高考录取率": 0.56}, - {"年份": 2000, "高考录取率": 0.59}, - {"年份": 2001, "高考录取率": 0.59}, - {"年份": 2002, "高考录取率": 0.63}, - {"年份": 2003, "高考录取率": 0.62}, - {"年份": 2004, "高考录取率": 0.61}, - {"年份": 2005, "高考录取率": 0.57}, - {"年份": 2006, "高考录取率": 0.57}, - {"年份": 2007, "高考录取率": 0.56}, - {"年份": 2008, "高考录取率": 0.57}, - {"年份": 2009, "高考录取率": 0.62}, - {"年份": 2010, "高考录取率": 0.69}, - {"年份": 2011, "高考录取率": 0.72}, - {"年份": 2012, "高考录取率": 0.75}, - {"年份": 2013, "高考录取率": 0.75}, - {"年份": 2014, "高考录取率": 0.74}, - {"年份": 2015, "高考录取率": 0.74}, - {"年份": 2016, "高考录取率": 0.75}, - {"年份": 2017, "高考录取率": 0.74}, - {"年份": 2018, "高考录取率": 0.81}, - {"年份": 2019, "高考录取率": 0.8}, - {"年份": 2020, "高考录取率": 0.8}, - {"年份": 2021, "高考录取率": 0.93}, - {"年份": 2022, "高考录取率": 0.96} - ] - } - ] - }; -const vmind = new VMind(options) -const { insights } = await vmind.getInsights(specJson, { - /** 最多产生 maxNum个洞察内容 */ - maxNum: numLimits, -}); -``` - -最终产生的结果如下: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_insight_1.jpeg) - -可以准确识别出整体的趋势以及1985年明显异常的高考录取率 - -### 返回结构 -以整体趋势为例,返回的结构化内容如下: -```ts -const outlierInsight = { - /** 类型为异常点Insight */ - type: 'outlier', - /** 具体的异常点数据 */ - data: [ - { - index: 8, - dataItem: { - 年份: 1985, - 高考录取率: 0.96, - } - } - ], - /** 数值字段 */ - fieldId: '高考录取率', - /** 当前异常点数值 */ - value: 0.96, - /** 洞察置信度得分 */ - significant: 1, - /** 当前系列名称,因为当前图表没有进行seriesField配置,只包含一个系列,因此为vmind的默认值 */ - seriesName: 'vmind_default_series', - /** 通过pageHinkley算法检测得到 */ - name: 'pageHinkley', - /** 具体的文本话含义 */ - textContent: { - /** 具体的文本模版 */ - content: '${b}期间出现显著异常,值为${c}。', - /** 模版中的变量解析 */ - variables: { - b: { - isDimValue: true, - value: 1985, - fieldName: '年份' - }, - c: { - value: 0.96, - isMeasure: true, - fieldName: '高考录取率' - } - }, - /** 直接将模版变量进行数值替换的结果 */ - plainText: '1985期间出现显著异常,值为0.96。' - } -} -``` - -### 洞察添加 - -识别出图表洞察后,我们可以借助VChart强大的标注能力,将这些内容添加到图表中,最终效果可以如下图所示: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_insight_2.jpeg) - -## 参数详解 -具体参数详解可见:[getInsights](../../api/getInsights) \ No newline at end of file diff --git a/docs/assets/guide/zh/Basic_Tutorial/Create_VMind_Instance.md b/docs/assets/guide/zh/Basic_Tutorial/Create_VMind_Instance.md deleted file mode 100644 index c4699717..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Create_VMind_Instance.md +++ /dev/null @@ -1,217 +0,0 @@ -# 创建VMind实例 -要开始使用VMind智能可视化组件,首先你需要创建一个VMind实例。在创建VMind实例时,你需要传入一个options对象作为参数,这个对象中包含了一些关键的信息,例如模型的url,模型类型,以及LLM服务请求的headers等。 -```ts -import VMind from '@visactor/vmind' - -const vmind = new VMind(options) -``` - -options的完整类型定义如下: - -```ts -export interface VMindOptions { - /** URL of your LLM service. For gpt, default is openAI API. */ - url?: string; - /** llm request header, which has higher priority */ - headers?: HeadersInit; - /** post or get */ - method?: 'POST' | 'GET'; - /** LLM Model */ - model?: Model | string; - /** Max token in LLM Chart */ - maxTokens?: number; - /** Temperature of LLM */ - temperature?: number; - /** show llm thoughs or not */ - showThoughts?: boolean; - /** repetition penalty */ - frequencyPenalty?: number; - /** topP */ - topP?: number; - /** custom llm request func */ - customRequestFunc?: { - /** 图表生成任务 */ - chartAdvisor?: RequestFunc; - /** 数据查询任务 */ - dataQuery?: RequestFunc; - /** 文本中提取数据任务 */ - dataExtraction?: RequestFunc; - /** 图表生成中指令生成任务 */ - chartCommand?: RequestFunc; - /** 洞察生成任务 */ - IntelligentInsight?: RequestFunc; - }; -} - -``` -在ILLMOptions中,大部分参数都会直接传递给LLM服务。 - -## GPT为例 -如果你打算使用openAI官方提供的LLM服务,并通过headers中的openAI api key进行鉴权,你可以这样简单地初始化VMind: -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, //使用gpt-4o模型 - headers: { //指定调用LLM服务时的header - Authorization: `Bearer ${OPENAI_API_KEY}` //Your OPENAI_API_KEY - } -}) -``` - -## DeepSeek为例 -如果你打算使用deepSeek作为 LLM 服务,可以前往[DeepSeek官网](https://platform.deepseek.com/api_keys)注册属于你自己的 API key,注册完成后可以按照以下方式进行 VMind 的注册和使用,更详细内容可以参考[DeepSeek官方 API 文档](https://api-docs.deepseek.com/zh-cn/) -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - url: 'https://api.deepseek.com/chat/completions' // DeepSeek 官方 url - model: Model.DEEPSEEK_V3, // 使用DeepSeek-V3模型 - headers: { - Authorization: `Bearer ${DEEPSEEK_KEY}` //Your DEEPSEEK_KEY - } -}) -``` - -## 任意自定义模型 -如果你想要使用其他任何大模型作为VMind的 LLM 服务,与前面例子相同,只需要将`url`和`model`改为你的模型服务地址,同步添加`headers`内容作为鉴权校验。具体如下: -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - url: 'Your LLM URL', - model: 'Your Model Name', - headers: { - Authorization: `Bearer ${Your Key}` - } -}) -``` -在接下来的章节,我们将对ILLMOptions中的参数进行详细的解释。 - -## url -url参数用于指定你的LLM服务api的地址,默认值是https://api.openai.com/v1/chat/completions - -在你使用VMind的过程中,所有需要调用LLM的地方都会向这个url发送http请求。 - -## headers -你可以通过headers参数来指定请求LLM服务时的http headers。最常见的用法是将你的api key放入headers中用作鉴权;当然,你也可以将任何你需要的字段放入headers中。 - -## method -method参数用于指定请求LLM时的方法类型,通常为POST。 - -## model -你可以通过model参数来指定模型种类。这个字段将被放入LLM服务的请求体中。你可以从VMind中引入Model类型并用作model字段的值。 -```ts -import { Model } from '@visactor/vmind' -``` - -目前支持的模型种类有: -```ts -export enum Model { - GPT3_5 = 'gpt-3.5-turbo', - GPT3_5_1106 = 'gpt-3.5-turbo-1106', - GPT4 = 'gpt-4', - GPT_4_0613 = 'gpt-4-0613', - GPT_4o = 'gpt-4o-2024-08-06', - DOUBAO_LITE = 'doubao-lite-32K', - DOUBAO_PRO = 'doubao-pro-128k', - CHART_ADVISOR = 'chart-advisor', - DEEPSEEK_V3 = 'deepseek-chat', - DEEPSEEK_R1 = 'deepseek-reasoner' -} -``` - -目前,VMind 对于所有的大模型都会使用相同的技术和prompt来完成各种智能任务. - -## maxTokens和temperature -这两个参数分别决定模型生成内容的最大token数量和每次生成结果的随机性,详见[OpenAI官方文档](https://platform.openai.com/docs/api-reference/chat/create)。 - -在VMind中,这两个参数的默认值分别是2048和0。 - -## showThoughts -[相关研究](https://arxiv.org/abs/2201.11903)表明,思维链(Chain-of-Thought)可以增强大语言模型的思维推理能力,使输出的结果更加符合预期。showThoughts参数将影响VMind传给大语言模型的prompt,决定其在完成图表生成、数据聚合等任务时,是否将思考过程添加到输出结果中。`showThoughts = true`会使模型将其思考过程显式地输出,提高生成结果的准确性。然而,这会增加模型生成结果的长度,带来更多的token消耗。在执行图表生成等任务时,VMind必须等待模型输出结束后才能进行后续步骤,这也将减慢VMind各项方法的执行速度。 - -因此,如果你期望获得更好的执行效果,可以将showThoughts设置为true。如果你希望VMind能够以更少的token数量和更快的速度完成图表生成、数据聚合等任务,可以将这个参数设置为false。 - -在VMind中,showThoughts默认为true。 - -## 通过customRequestFunc自定义LLM服务调用方法 - -VMind默认通过LLM配置的地址,通过HTTP请求进行LLM服务的调用。然而,你可以通过customRequestFunc参数,自定义在每种任务中调用LLM的方法。例如,你可以通过RPC的形式请求你自己的LLM服务。 -该参数有三个requestFunc类型的值,完整的类型定义如下: -```ts -type customRequestFunc= { - chartAdvisor?: RequestFunc; - dataQuery?: RequestFunc; - dataExtraction?: RequestFunc; - chartCommand?: RequestFunc; - IntelligentInsight?: RequestFunc; -}; - -type RequestFunc = ( - messages: LLMMessage[], - tools: ToolMessage[] | undefined, - options: ILLMOptions | undefined -) => Promise; - -/** LLM Messages api */ -export interface LLMMessage { - /** prompt role, system or user query or tool result */ - role: 'system' | 'user' | 'assistant' | 'tool'; - content: string; - name?: string; - tool_calls?: ToolCall[]; - tool_call_id?: string; -} - -export interface LLMResponse { - usage?: Usage; - /** function call res */ - toolRes?: any; - /** content */ - choices?: { - index: number; - message: any; - finish_reason?: string; - }[]; - error?: string; - [key: string]: any; -} -``` - -chartAdvisor和dataQuery分别对应图表生成,数据处理和数据聚合时调用LLM的方法。每个方法需要接收传给大模型的Messages(详情见[messages](https://platform.openai.com/docs/api-reference/chat/create#chat-create-messages)), function call配置(详情见[tools](https://platform.openai.com/docs/api-reference/chat/create#chat-create-tools))以及VMind options作为参数,并确保返回的对象与OpenAI completions API结构相同(详情请见[The chat completion object](https://platform.openai.com/docs/api-reference/chat/object))。 -下面展示一个使用RPC进行图表智能生成的例子: -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - model: Model.GPT4o, - customRequestFunc: { - chartAdvisor: async (messages: LLMMessage[], tools: ToolMessage[] | undefined, _options: ILLMOptions | undefined) => { - const resp = await call_RPC_LLM_Service(messages, tools, _options) - - const { result } = resp - const content = result.content.content - const gptResponse = { - usage: {}, //token用量信息 - choices: [{ - index: 0, - message: { - role: 'assistant', - content //将模型的生成结果放入content中 - } - }] - } - return gptResponse //返回chat completion object,见https://platform.openai.com/docs/api-reference/chat/object - } - } -}) - -const { spec } = await vmind.generateChart(userInput, fieldInfo, dataset); //调用generateChart进行图表生成 - -``` - -# 总结 -本教程详细介绍了如何创建VMind实例,以及如何设置各种参数以满足不同的需求。我们学习了如何指定模型服务的url,如何设置headers以进行鉴权,如何选择模型类型,以及如何设置模型生成内容的最大token数量和temperature。我们还了解了如何通过showThoughts参数来控制模型是否将思考过程添加到输出结果中,以及如何通过customRequestFunc参数来自定义LLM服务的调用方法。 - -通过本教程,你不仅可以学会如何创建和配置VMind实例,更了解了如何根据自己的需求和环境来调整和优化VMind的使用,从而更有效地利用VMind来完成各种任务,包括图表生成、数据处理和数据聚合等。 diff --git a/docs/assets/guide/zh/Basic_Tutorial/Data_Aggregation.md b/docs/assets/guide/zh/Basic_Tutorial/Data_Aggregation.md deleted file mode 100644 index 2db18f09..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Data_Aggregation.md +++ /dev/null @@ -1,386 +0,0 @@ -# 数据聚合 - -## 数据聚合概述 -当我们使用VChart等图表库来绘制柱状图、折线图等图表时,如果使用的数据集dataset并未经过聚合处理,可能会对可视化效果产生不良影响。 -举例来说,假设我们有一份商品销售额明细数据集: -```json -// 商品销售数据集 -[ - { - "Product name": "Coke", - "Sales": 2350 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Sprite", - "Sales": 215 - }, - { - "Product name": "Sprite", - "Sales": 654 - }, - { - "Product name": "Sprite", - "Sales": 159 - }, - { - "Product name": "Sprite", - "Sales": 28 - }, - { - "Product name": "Fanta", - "Sales": 345 - }, - { - "Product name": "Fanta", - "Sales": 654 - }, - { - "Product name": "Fanta", - "Sales": 2100 - }, - { - "Product name": "Fanta", - "Sales": 1679 - }, - { - "Product name": "Mirinda", - "Sales": 1476 - }, - { - "Product name": "Mirinda", - "Sales": 830 - }, - { - "Product name": "Mirinda", - "Sales": 532 - }, - { - "Product name": "Mirinda", - "Sales": 498 - } -] -``` -在这个数据集中,有两个字段Product name和Sales。可以看出在这个数据集中,有多条数据具有相同的Product name。如果我们想使用这份数据将Product name作为X轴,Sales作为Y轴来绘制柱状图,展示不同地区的销售额,则在X轴每个维值下面将有多条柱子与之对应。 - -对于这种数据集,不同图表库的处理方式不同。VChart的处理方式是将这些柱子堆叠起来进行展示: - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_stack.png) - -使用这种未聚合的数据集绘制图表可能会有以下几个问题: - -- 数据过载:如果数据集非常大,那么图表中可能会有大量的图元,这可能会使图表变得非常混乱,难以阅读和理解,还会导致性能问题。 -- 隐藏重要的信息:如果数据没有经过适当的聚合,那么可能会隐藏一些重要的信息。例如,如果你有一个包含每天销售额的数据集,那么直接绘制这个数据集可能会导致图表变得非常混乱。但是,如果你将数据按月聚合,那么可能会更容易看出销售额的趋势。 -- 数据分布不清:未聚合的数据可能会使得数据的分布特征不明显,例如平均值、中位数、众数等。 - -因此,通常在绘制图表之前,我们会先对数据进行适当的聚合,以便更好地展示数据的特征和趋势。 - -同时由于原始的数据集没有对字段进行筛选和排序,某些图表展示意图无法满足,例如:帮我展示销售额最多的10个部门,帮我展示北方区域各商品的销售额等。 - -VMind 1.2.2版本开始支持智能数据聚合功能。该功能会将用户传入的数据作为一张数据表,使用大语言模型根据用户的指令生成SQL查询语句,从数据表中查询数据,并通过GROUP BY和聚合函数对数据进行分组聚合、排序、筛选。 - - -接下来,我们将详细介绍VMind数据聚合功能的使用方法。 - - -## dataQuery -VMind对象的dataQuery函数是一个强大的数据聚合工具。它接收三个参数:用户展示意图userPrompt,数据集字段信息fieldInfo和原始数据集dataset。你可以在[数据格式与数据处理](./Data_Process)中找到关于fieldInfo和dataset的详细信息。VMind会根据用户的展示意图,编写SQL语句并对dataset执行查询,查询结果会被储存在函数返回值的dataset属性中;同时,查询结果中的字段可能会发生变化,更新后的字段信息也会被储存在返回结果的fieldInfo属性中。 - -下面,让我们通过一个示例来看看如何使用dataQuery函数: -```ts -import VMind from '@visactor/vmind' -const sourceDataset = [ - { - "Product name": "Coke", - "Sales": 2350 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Coke", - "Sales": 1027 - }, - { - "Product name": "Sprite", - "Sales": 215 - }, - { - "Product name": "Sprite", - "Sales": 654 - }, - { - "Product name": "Sprite", - "Sales": 159 - }, - { - "Product name": "Sprite", - "Sales": 28 - }, - { - "Product name": "Fanta", - "Sales": 345 - }, - { - "Product name": "Fanta", - "Sales": 654 - }, - { - "Product name": "Fanta", - "Sales": 2100 - }, - { - "Product name": "Fanta", - "Sales": 1679 - }, - { - "Product name": "Mirinda", - "Sales": 1476 - }, - { - "Product name": "Mirinda", - "Sales": 830 - }, - { - "Product name": "Mirinda", - "Sales": 532 - }, - { - "Product name": "Mirinda", - "Sales": 498 - } -] - -const sourceFieldInfo = [ - { - "fieldName": "Product name", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "Sales", - "type": "int", - "role": "measure" - } -] - -const userPrompt=`展示各商品销售额` -const vmind = new VMind(options) - -//调用dataQuery传入userPrompt,sourceFieldInfo和sourceDataset,执行数据聚合 -const { fieldInfo, dataset } = vmind.dataQuery(userPrompt, sourceFieldInfo, sourceDataset); -``` - -在这个例子中,dataQuery函数返回的dataset如下: -```json -[ - { - "Product name": "Coke", - "total_sales": 5431 - }, - { - "Product name": "Sprite", - "total_sales": 1056 - }, - { - "Product name": "Fanta", - "total_sales": 4778 - }, - { - "Product name": "Mirinda", - "total_sales": 3336 - } -] -``` - -返回的fieldInfo如下: -```json -[ - { - "fieldName": "Product name", - "description": "The name of the product.", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "total_sales", - "description": "An aggregated field representing the total sales of each product. It is generated by summing up the 'Sales' values for each product.", - "type": "int", - "role": "measure" - } -] -``` - -有了这些信息,我们就可以直接使用fieldInfo和dataset生成图表了。具体的操作步骤,你可以在[图表智能生成](./Chart_Generation)章节中找到。 - -📢 **注意:dataQuery方法会将userPrompt和fieldInfo传递给大模型用于生成SQL,dataset中的明细数据并不会被传递。** - -最后,我们将得到如下的柱状图: - - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_aggregated_bar.png) - -在这个例子中,VMind生成的SQL语句为: -```SQL -SELECT `Product name`, SUM(`Sales`) AS total_sales FROM dataSource GROUP BY `Product name` -``` - -这条SQL语句从sourceDataset中筛选出Produce name和Sales两个字段,按照Produce name进行分组,并对Sales字段进行了求和,生成了新的字段total_sales。VMind将执行这一sql语句,得到聚合后的数据集。 - -需要注意的是,dataQuery执行过程中,目前支持的SQL关键词有:SELECT, GROUP BY, WHERE, HAVING, ORDER BY, LIMIT。目前支持的聚合函数有:MAX(), MIN(), SUM(), COUNT(), AVG(),但不支持子查询、JOIN、条件语句等复杂的SQL操作。 - -### 数据筛选与排序 -在这个部分,我们将学习如何使用自然语言来对数据集进行筛选和排序等操作。 - -首先,让我们看一下下面的数据集(dataset)和字段信息(fieldInfo): - -```ts -import VMind from '@visactor/vmind' - -const sourceDataset = [ -{ - "商品名称": "可乐", - "region": "south", - "销售额": 2350 - }, - { - "商品名称": "可乐", - "region": "east", - "销售额": 1027 - }, - { - "商品名称": "可乐", - "region": "west", - "销售额": 1027 - }, - { - "商品名称": "可乐", - "region": "north", - "销售额": 1027 - }, - { - "商品名称": "雪碧", - "region": "south", - "销售额": 215 - }, - { - "商品名称": "雪碧", - "region": "east", - "销售额": 654 - }, - { - "商品名称": "雪碧", - "region": "west", - "销售额": 159 - }, - { - "商品名称": "雪碧", - "region": "north", - "销售额": 28 - }, - { - "商品名称": "芬达", - "region": "south", - "销售额": 345 - }, - { - "商品名称": "芬达", - "region": "east", - "销售额": 654 - }, - { - "商品名称": "芬达", - "region": "west", - "销售额": 2100 - }, - { - "商品名称": "芬达", - "region": "north", - "销售额": 1679 - }, - { - "商品名称": "醒目", - "region": "south", - "销售额": 1476 - }, - { - "商品名称": "醒目", - "region": "east", - "销售额": 830 - }, - { - "商品名称": "醒目", - "region": "west", - "销售额": 532 - }, - { - "商品名称": "醒目", - "region": "north", - "销售额": 498 - } -] - -const sourceFieldInfo = [ - { - "fieldName": "商品名称", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "销售额", - "type": "int", - "role": "measure" - } -] - -``` - -假设我们想要展示北方区域销售额排名前三的商品,我们可以这样做: - -```ts -const userPrompt = `帮我展示北方排名前三的商品销售额` -const vmind = new VMind(options) - -// 调用dataQuery方法,传入userPrompt,sourceFieldInfo和sourceDataset,执行数据聚合 -const { fieldInfo, dataset } = vmind.dataQuery(userPrompt, sourceFieldInfo, sourceDataset); -``` - -在dataQuery方法执行过程中,会生成如下的SQL语句: - -```SQL -SELECT `商品名称`, SUM(`销售额`) AS total_sales FROM dataSource WHERE region = 'north' GROUP BY `商品名称` ORDER BY total_sales DESC LIMIT 3 -``` - -这个SQL语句将筛选出区域(region)为'north'的数据,然后按照"商品名称"进行分组,并计算每个商品的总销售额,最后按照销售额从高到低排序,并只取销售额最高的前三个商品。 - - -最后,执行图表生成操作,我们就可以得到如下的图表: - - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_order.png) - - - - - diff --git a/docs/assets/guide/zh/Basic_Tutorial/Data_Extraction.md b/docs/assets/guide/zh/Basic_Tutorial/Data_Extraction.md deleted file mode 100644 index f1bfa018..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Data_Extraction.md +++ /dev/null @@ -1,62 +0,0 @@ -# 数据提取——从文本一步生成图表 - -在前文[图表生成](./Chart_Generation)中,我们已经了解了如何从已有的结构化数据中智能生成图表。然而在部分场景中,我们并不一定已有数据集,可能有的事更为原始的数据,例如:文本数据。 -在本篇教程中,我们将介绍如果通过 VMind , 直接从一段文本中直接生成图表。 - -## text2Chart -VMind的`text2Chart`函数与`generateChart`类似,主要不同在于,此时的入参从数据表和字段信息变成了纯文本内容,具体如下: -- text (string): 必选,原始文本内容 -- userPrompt (string): 可选,用户的可视化意图(你想从文本中主要提取哪些数据,如何用图表进行展示) -- options: 可选,选项参数,包括以下内容: - - fieldInfo (Array): 文本类型中包含的字段信息,包括字段名称,类型等 - - chartTypeList (ChartType[],可选): 支持的图表类型列表。若不为undefined,则会从该列表指定的图表类型中选择生成。 - - enableDataQuery (boolean, 可选): 决定是否在图表生成过程中开启数据聚合 - - colorPalette (Array, 可选): 用于设置图表的调色板 - - animationDuration (number, 可选): 用于设置图表动画的播放持续时间 - - theme (ChartTheme | string, 可选): 设置最终sepc的主题样式,默认为空,VMind会默认使用带渐变颜色的主题样式,可以设置 VChart 通用深浅主题('light' | 'dark')或者符合你使用场景下的主题样式 - -这个方法会返回一个[VChart图表spec](https://www.visactor.io/vchart/guide/tutorial_docs/Basic/A_Basic_Spec)和一个二维数据表,详见[数据格式与数据处理](./Data_Process)。 - -在整个过程中,VMind首先会用大模型从原始文本中提取结构化的表格数据,并且自动对表格数据进行数据清理,之后就跟智能生成图表一样,再利用大模型得到推荐的图表类型和具体映射方式,最终VMind根据结果生成拼装产生最终的VChart spec. - -VMind默认会为生成的图表添加入场动画,因此它还会返回图表动画的时长time。如果你不想要图表动画,可以将spec.animation设为false。 - -你可以在[VChart动画教程](https://www.visactor.io/vchart/guide/tutorial_docs/Animation/Animation_Types)中了解更多关于图表动画的信息。 - -## 使用案例 -下面是一个使用text2Chart生成图表的例子: - -```ts -import VMind from '@visactor/vmind'; - -const vmind = new VMind(options); -const text = '全国人口[2]中,拥有大学(指大专及以上)文化程度的人口为218360767人;拥有高中(含中专)文化程度的人口为213005258人;拥有初中文化程度的人口为487163489人;拥有小学文化程度的人口为349658828人(以上各种受教育程度的人包括各类学校的毕业生、肄业生和在校生)。'; -const userPrompt = '对比本次人口普查各文化程度的人口比重'; -const { spec, time, dataTable } = await vmind.generateChart(text, userPrompt); - -console.log(dataTable); -// 数据表结果如下所示 -dataTable = [ - { - "文化程度": "大学", - "人口数量": 218360767 - }, - { - "文化程度": "高中", - "人口数量": 213005258 - }, - { - "文化程度": "初中", - "人口数量": 487163489 - }, - { - "文化程度": "小学", - "人口数量": 349658828 - } -] -``` -其中图表spec的结果如下图所示: -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_text_2_chart_1.jpeg) - -## 参数详解 -该函数的参数几乎与`generateChart`相同,详见:[图表生成](./Chart_Generation)参数详解部分 \ No newline at end of file diff --git a/docs/assets/guide/zh/Basic_Tutorial/Data_Process.md b/docs/assets/guide/zh/Basic_Tutorial/Data_Process.md deleted file mode 100644 index 795602d9..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/Data_Process.md +++ /dev/null @@ -1,242 +0,0 @@ -# 数据格式与数据处理 -在这篇教程中,我们将向你详细介绍VMind所支持的数据格式,并介绍如何使用VMind中的数据处理函数来获得这些数据。 - -# VMind数据格式 -## 数据集dataset -在VMind中,大部分函数都需要输入一个数据集dataset。 - -在VMind的定义中,数据集dataset是一种表格数据(Tabular Data),其结构与VChart中[展平的数据](https://www.visactor.io/vchart/guide/tutorial_docs/Chart_Concepts/Data/Data_Types_and_Interface)相同,是由多条数据组成的数组。 -以商品销售数据集为例,下面展示一个dataset的例子: -```json -// 商品销售数据集 -[ - { - "Product name": "Coke", - "region": "south", - "Sales": 2350 - }, - { - "Product name": "Coke", - "region": "east", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "west", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "north", - "Sales": 1027 - }, - { - "Product name": "Sprite", - "region": "south", - "Sales": 215 - }, - { - "Product name": "Sprite", - "region": "east", - "Sales": 654 - }, - { - "Product name": "Sprite", - "region": "west", - "Sales": 159 - }, - { - "Product name": "Sprite", - "region": "north", - "Sales": 28 - }, - { - "Product name": "Fanta", - "region": "south", - "Sales": 345 - }, - { - "Product name": "Fanta", - "region": "east", - "Sales": 654 - }, - { - "Product name": "Fanta", - "region": "west", - "Sales": 2100 - }, - { - "Product name": "Fanta", - "region": "north", - "Sales": 1679 - }, - { - "Product name": "Mirinda", - "region": "south", - "Sales": 1476 - }, - { - "Product name": "Mirinda", - "region": "east", - "Sales": 830 - }, - { - "Product name": "Mirinda", - "region": "west", - "Sales": 532 - }, - { - "Product name": "Mirinda", - "region": "north", - "Sales": 498 - } -] -``` - - -⚠️注意: **为了让VMind中的图表生成、数据聚合等任务能够更好地执行,我们建议你对数据中的每一个字段使用具有一定语义的名称(例如Product name,region,Sales等)。我们不建议使用没有任何语义的字段名称(column1,column2或随机字符串等)。大语言模型将依赖字段名称中蕴含的语义信息在图表生成、数据聚合时对字段进行选择** -## 字段信息fieldInfo -在VMind中,你需要使用fieldInfo对象来描述数据集中的字段信息。fieldInfo描述了数据中每个字段的名称、类型、字段描述等信息。这些信息将被传给LLM用于图表生成、数据聚合等任务中。 - -下面是fieldInfo对象的类型定义,其中必选信息为上述提到的`fieldName | type | role ` -```ts -/** field information Of Data Table */ -export interface FieldInfo { - /** name of field */ - fieldName: string; - /** field type, eg: time / category / numerical */ - type: DataType; - /** field role */ - role: ROLE; - /** alias of field */ - alias?: string; - /** description of field */ - description?: string; -} -``` -对于上一个章节中展示的数据集,其对应的fieldInfo如下: -```json -[ - { - "fieldName": "Product name", - "description": "Represents the name of the product, which is a string.", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "region", - "description": "Represents the region where the product is sold, which is a string.", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "Sales", - "description": "Represents the sales amount of the product, which is an integer.", - "type": "int", - "role": "measure" - } -] -``` - - -⚠️注意: **大语言模型将依赖fieldInfo中的字段名和description,在图表生成、数据聚合时对字段进行选择,description不是必选项。fieldInfo可通过调用getFieldInfo或parseCSVData生成。** - -# 数据处理函数 -CSV数据是一种通用的、相对简单的文件格式,它以纯文本形式存储表格数据。JSON是一种轻量级的数据交换格式,可以被多种编程语言解析和生成,被广泛应用于Web应用程序中。在本章,我们将介绍如何使用VMind内置的数据处理函数,将CSV数据转换为JSON格式的数据集dataset,并获取字段信息fieldInfo,或者直接从JSON格式的数据中获取fieldInfo。 - -## parseCSVData -VMind中的parseCSVData函数能够将csv字符串转换为dataset结构,并通过规则提取字段信息生成fieldInfo。在函数执行过程中,不会请求大语言模型。 -以商品销售数据集为例,下面是parseCSVData函数的使用示例: -```ts -import VMind from '@visactor/vmind' -const csv=`Product name,region,Sales -Coke,south,2350 -Coke,east,1027 -Coke,west,1027 -Coke,north,1027 -Sprite,south,215 -Sprite,east,654 -Sprite,west,159 -Sprite,north,28 -Fanta,south,345 -Fanta,east,654 -Fanta,west,2100 -Fanta,north,1679 -Mirinda,south,1476 -Mirinda,east,830 -Mirinda,west,532 -Mirinda,north,498` -const vmind = new VMind(options) -const { fieldInfo, dataset } = vmind.parseCSVData(csv); - -``` - -关于VMind实例的创建以及options中的详细配置,可以参见[创建VMind实例](./Create_VMind_Instance) - - -在这个例子中,该函数返回的dataset与上一章的商品销售数据集dataset相同,返回的fieldInfo如下: -```json -[ - { - "fieldName": "Product name", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "region", - "type": "string", - "role": "dimension" - }, - { - "fieldName": "Sales", - "type": "int", - "role": "measure" - } -] -``` -dataset和fieldInfo可直接用于VMind中的图表生成、数据聚合。 - -由于该函数未将数据传递给大语言模型,无法获得fieldInfo中的字段描述description。你也可以对其进行补充,以获得更好的图表生成效果。 - -parseCSVData更多信息参见[parseCSVData API](../../api/parseCSVData) - - -## getFieldInfo -VMind中的getFieldInfo函数用于解析JSON结构的数据以获得其中的字段信息(fieldInfo)。该函数基于规则解析获得fieldInfo,在函数执行过程中,不会请求大语言模型。 -使用示例如下: -```ts -const dataset=[ - { - "Product name": "Coke", - "region": "south", - "Sales": 2350 - }, - { - "Product name": "Coke", - "region": "east", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "west", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "north", - "Sales": 1027 - }, - ... -] - -const vmind = new VMind(options) -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -关于VMind实例的创建以及options中的详细配置,可以参见[创建VMind实例](./Create_VMind_Instance) - - -在这个例子中,返回的fieldInfo与上一章的商品销售数据集相同。 - -getFieldInfo更多信息参见[getFieldInfo API](../../api/getFieldInfo) - diff --git a/docs/assets/guide/zh/Basic_Tutorial/How_to_Get_VMind.md b/docs/assets/guide/zh/Basic_Tutorial/How_to_Get_VMind.md deleted file mode 100644 index bab2ce19..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/How_to_Get_VMind.md +++ /dev/null @@ -1,41 +0,0 @@ -# 如何获取 VMind - -获取 VMind 的方式有以下几种: - -- 从 npm 获取 -- 从 cdn 获取 -- 从 GitHub 仓库获取 - -## npm 获取 - -首先,你需要在项目根目录下使用以下命令安装 VMind - -```bash -# 使用 npm 安装 -npm install @visactor/vmind - -# 使用 yarn 安装 -yarn add @visactor/vmind -``` - -VMind 需要配合 VChart 一起使用。为了进行图表绘制,你还需要在项目中引入 VChart,具体教程详见[VChart快速上手](https://www.visactor.io/vchart/guide/tutorial_docs/Getting_Started) - - -## cdn 获取 - -可以从以下免费的 CDN 中获取 VMind: - -```html - - - - - -``` - -## GitHub 获取 - -从 GitHub 上你可以直接获取 VMind 的源码: - -- 你可以直接从 GitHub clone 源码。 -- 你也可以从 VMind 的  [release](https://github.com/VisActor/VMind/releases)  页面选择对应的版本,点击页面下方 Assets 中的 Source code,将其下载至本地解压后使用。 diff --git a/docs/assets/guide/zh/Basic_Tutorial/How_to_Import_VMind.md b/docs/assets/guide/zh/Basic_Tutorial/How_to_Import_VMind.md deleted file mode 100644 index ce739861..00000000 --- a/docs/assets/guide/zh/Basic_Tutorial/How_to_Import_VMind.md +++ /dev/null @@ -1,51 +0,0 @@ -# 如何在项目中引用 VMind - -在[如何获取 VMind](./How_to_Get_VMind)章节中我们介绍了获取 VMind 的方式,本章节会一一介绍这些获取方式下如何引用 VMind - -## cdn 使用 - -我们从 [cdn](./How_to_Get_VMind#cdn-获取) 获取到 VMind 文件后,就可以将其添加到 HTML 文件的 ` - - -``` - -## npm 使用 - -我们通过 [npm](./How_to_Get_VMind#npm-获取) 的方式将 `@visactor/vmind` 安装到项目之后,就可以通过如下方式进行使用了: - -```ts -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - url, //default is https://api.openai.com/v1/chat/completions - model: Model.GPT3_5, - headers: { - 'api-key': apiKey //Your LLM API Key - } -}) -``` diff --git a/docs/assets/guide/zh/Contribution_Guide.md b/docs/assets/guide/zh/Contribution_Guide.md deleted file mode 100644 index 2c236ba3..00000000 --- a/docs/assets/guide/zh/Contribution_Guide.md +++ /dev/null @@ -1,210 +0,0 @@ -# VMind开源代码贡献指南 -首先为你选择加入开源贡献行列的行为点赞👍🏻。再者,十分感谢你选择参与到 VisActor 社区,为这个开源项目做出贡献。 - - - - -## VMind贡献指南 - -VisActor 团队通常在 github 上进行开发和 issue 维护,请打开 [Github 网站](https://github.com/),点击右上角 `Sign up` 按钮,注册一个自己的账号,开启你开源之旅的第一步。 - -如果因为特殊情况,你无法打开 Github 站点,也可以通过 [Gitee](https://gitee.com/VisActor/VChart) 进行项目开发。 - -在 [VMind 仓库](https://github.com/VisActor/VMind)中,我们有一份面向所有开源贡献者的[指南](https://github.com/VisActor/VMind/blob/develop/CONTRIBUTING.zh-CN.md),介绍了有关版本管理、分支管理等内容,**请花几分钟时间阅读了解一下**。 - - - - -## 你的第一个 PullRequest - -### Step0:安装 Git - -Git是一种版本控制系统,用于跟踪和管理软件开发项目中的代码变更。它帮助开发者记录和管理代码的历史记录,方便团队协作、代码版本控制、合并代码等操作。通过Git,您可以追踪每个文件的每个版本,并轻松地在不同版本之间进行切换和比较。Git还提供了分支管理功能,使得可以同时进行多个并行开发任务。 - -- 访问Git官方网站: -- 下载最新版本的Git安装程序。 -- 运行下载的安装程序,按照安装向导的提示进行安装。 -- 安装完成后,你可以通过命令行使用 `git version` 命令确认安装成功。 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/git_version.png) - - -使用Git时,需要设置你的用户名和电子邮件地址,因为每次Git提交都会使用这些信息。打开命令行,输入以下命令来设置你的Git用户名: - -```bash -git config --global user.name "your_username" -git config --global user.email "your_email@example.com" -``` - -请将 "your_username"和your_email@example.com替换为你想在Git中使用的用户名和邮箱。 - - - -### Step1:Fork 项目 - -- 首先需要 fork 这个项目,进入[VMind 项目页面](https://github.com/VisActor/VMind),点击右上角的 Fork 按钮 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/fork_vmind.png) - -- 你的 github 帐号中会出现 xxxx(你的github用户名)/vmind这个项目 -- 在本地电脑上使用以下命令: 得到一个 VMind 文件夹 - -``` -// ssh -git clone git@github.com:xxxx(你的github用户名)/VMind.git -// https -git clone https://github.com/xxxx(你的github用户名)/VMind.git -``` - - - - -### Step2:获取项目代码 - -- 进入 VMind 文件夹,添加 VMind 的远程地址 - -``` -git remote add upstream https://github.com/VisActor/VMind.git -``` - -- 获取 VMind 最新源码 - -``` -git pull upstream develop -``` - - - - -### Step3:创建分支 - -- 好了,现在可以开始贡献我们的代码了。VMind 默认分支为 develop 分支。无论是功能开发、bug 修复、文档编写,都请新建立一个分支,再合并到 develop 分支上。使用以下代码创建分支: - -``` -// 创建功能开发分支 -git checkout -b feat/xxxx - -// 创建问题修复开发分支 -git checkout -b fix/xxxx - -// 创建文档、demo分支 -git checkout -b docs/xxxx -``` - -- 现在我们可以在分支上更改代码了 -- 假设我们已经添加了一些代码,提交到代码库 -- git commit -a -m "new commit" - - - - -### Step4:合并修改 - -- 一个常见的问题是远程的 upstream (@visactor/vmind) 有了新的更新, 从而会导致我们提交的 Pull Request 时会导致冲突。 因此我们可以在提交前先把远程其他开发者的 commit 和我们的 commit 合并。使用以下代码切换到 develop 分支: - -``` -git checkout develop -``` - -- 使用以下代码拉出远程的最新代码: - -``` -git pull upstream develop -``` - -- 切换回自己的开发分支: - -``` -git checkout docs/add-funnel-demo -``` - -- 把 develop 的 commit 合并到 branch1: - -``` -git rebase develop -``` - -- 把更新代码提交到自己的分支中: - -``` -git push upstream docs/add-funnel-demo -``` - - - - -### Step5:提交Pull Request - -你可以在你的 github 代码仓库页面点击 New pull request 按钮。 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/create_pr.png) - -按照模板填写本次提交的修改内容: - -- 勾选这是什么类型的修改 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/pr_template.png) - -- 填写关联的 issue - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/related_issue.png) - - - -- 若有复杂变更,请说明背景和解决方案 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/background_solution.png) - -相关信息填写完成后,点击 Create pull request 提交 - - - - -## Mini Task 开发指南 - -"**good first issue**" 是一个在开源社区常见的标签,这个标签的目的是帮助新贡献者找到适合入门的问题。 - -VMind 的入门问题,你可以通过 [issue 列表](https://github.com/VisActor/VMind/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) 查看,目前包括两类: - -- Demo 案例制作 -- 简单功能开发 - -如果你当前**有时间和意愿**参与到社区贡献,可以在 issue 里看一看 **good first issue**,选择一个感兴趣、适合自己的认领。 - -相信你一定是一个有始有终的同学,所以,当你了解并决定认领一个 issue 后,请在 issue 下留言告知大家。 - - - - -### Feature Task - -我们准备了一些简单、易上手的特性开发任务,如果你有一定的 Javascript / Typescript 基础,可以认领这类任务。 - -你可以通过需求开发,更快地了解 VMind 代码架构。**你可以在 issue 下留言,和大家讨论自己的方案**。 - -1. 请基于 develop 分支,新拉一个 `feat/***`分支进行开发 -1. (如果你已经安装,请跳过此步骤)全局安装 [@microsoft/rush](https://rushjs.io/pages/intro/get_started/):`npm i --global @microsoft/rush` -1. 根目录下运行 `rush update` -1. `rush start` 在本地运行 VMind 代码的测试页面 - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind_playground.png) - -点击左上角“Set API-Key and LLM URL”设置LLM服务url和key - -5. 确认所有的测试都是通过的 `rush test` -5. 开发完成后,运行 `rush change` 命令,编写 changelog 并提交 -5. 提交所有代码,并在 Github 创建 Pull Request,邀请其他人进行 review - -## 拥抱VisActor社区 - -在你为VIsActor贡献代码之余,我们鼓励你参与其他让社区更加繁荣的事情,比如: - -1. 为项目的发展、功能规划 等提建议 -2. 创作文章、视频,开办讲座来宣传VisActor -3. 撰写推广计划,同团队一同执行 - -VisActor 也在努力帮助参与社区建设的同学一同成长,我们计划(但不限于,期待大家更多的建议)提供如下帮助: - -1. 以VIsActor 为基础的数据可视化研发培训,帮助参与的同学在编程技能、可视化理论、架构设计等多个方面快速成长。 -2. 定期评选“代码贡献奖”和“社区推广奖” -3. 组织社区成员参与开源活动 diff --git a/docs/assets/guide/zh/Getting_Started/Getting_Started.md b/docs/assets/guide/zh/Getting_Started/Getting_Started.md deleted file mode 100644 index 32e7fd23..00000000 --- a/docs/assets/guide/zh/Getting_Started/Getting_Started.md +++ /dev/null @@ -1,252 +0,0 @@ -# 快速上手 - -@VisActor/VChart 提供从数据到展现的全流程解决方案,以“可视化叙事”及“智能化”为核心竞争力。大语言模型强大的生成能力为 VChart 提供了一个自然语言的交互接口,允许我们通过自然语言直接调用 VChart 的各项能力,简单、快速、高质量地完成图表生成与编辑。 -@VisActor/VMind 是基于 VChart 和大语言模型的图表智能模块,提供图表智能推荐、智能配色、对话式图表编辑等能力,能够极大地降低 VChart 的使用门槛,提高用户创作数据可视化作品的效率。 -在本教程中,我们将介绍如何使用 VMind 组件 生成一个简单的图表。 - -## 获取 VMind - -### 使用 NPM 包 - -首先,你需要在项目根目录下使用以下命令安装 VMind - -```sh -# 使用 npm 安装 -npm install @visactor/vmind - -# 使用 yarn 安装 -yarn add @visactor/vmind -``` - -VMind 需要配合 VChart 一起使用。为了进行图表绘制,你还需要在项目中引入 VChart。具体教程详见 [快速上手](http://www.visactor.io/vchart/guide/tutorial_docs/Getting_Started) - -## 引入 VMind - -### 通过 NPM 包引入 - -在 JavaScript 文件顶部使用 `import` 引入 VMind - -```js -import VMind from '@visactor/vmind'; -``` - -## 初始化 VMind 实例 - -首先我们需要初始化一个 VMind 实例,并用它完成后续操作。VMind 目前支持所有主流模型,包括 OpenAI GPT系列,字节豆包系列以及 DeepSeek 等模型,只要提供对应的模型API接口,所有模型均可以直接调用。 -使用以下代码初始化一个 VMind 实例: - -```js -import VMind, { Model } from '@visactor/vmind' - -const vmind = new VMind({ - url, //指定你的大模型服务url。default is https://api.openai.com/v1/chat/completions - model: Model.GPT4o, //指定你指定的模型 - headers: { //指定调用大模型服务时的header - 'api-key': apiKey //Your LLM API Key - } -}) -``` - -在初始化VMind实例时,你可以指定大模型服务的url,模型种类,自定义模型请求方法等参数。详细教程请前往[创建VMind实例](./Basic_Tutorial/Create_VMind_Instance)章节 - -## 图表智能生成模块 - -在传统的图表生成步骤中,为了制作一个完整的图表,你需要完成以下步骤: - -1. 首先准备一份想要进行展示的数据 -2. 指定一个图表类型(图表推荐) -3. 描述数据中的字段如何映射到图表的视觉通道上(字段映射) -4. 对各个元素进行样式修改,并设置图表色板(智能配色) - -而使用 VMind 生成一张图表,你仅需要: - -1. 提供一份想要展示的数据(csv 或JSON格式) -2. 描述你对图表的要求,例如想在图表中展示哪些信息,使用何种风格的配色等等 - -例如,我们想使用下面的商品销售额数据,展示不同区域各商品销售额: - -| 商品名称 | region | 销售额 | -| -------- | ------ | ------ | -| 可乐 | south | 2350 | -| 可乐 | east | 1027 | -| 可乐 | west | 1027 | -| 可乐 | north | 1027 | -| 雪碧 | south | 215 | -| 雪碧 | east | 654 | -| 雪碧 | west | 159 | -| 雪碧 | north | 28 | -| 芬达 | south | 345 | -| 芬达 | east | 654 | -| 芬达 | west | 2100 | -| 芬达 | north | 1679 | -| 醒目 | south | 1476 | -| 醒目 | east | 830 | -| 醒目 | west | 532 | -| 醒目 | north | 498 | - -为了在后续流程中使用csv或JSON格式的数据,需要调用数据处理方法,将CSV数据转换为JSON格式的数据集dataset,并获取字段信息fieldInfo,或者直接从JSON格式的数据中获取fieldInfo。VMind提供了基于规则的方法来获取这些信息。这些方法都不会把明细数据传给大模型。 - -我们可以调用parseCSVData,从CSV数据获取JSON格式的dataset和fieldInfo,用于图表智能生成和数据聚合: - -```ts -const csvData = `商品名称,region,销售额 -可乐,south,2350 -可乐,east,1027 -可乐,west,1027 -可乐,north,1027 -雪碧,south,215 -雪碧,east,654 -雪碧,west,159 -雪碧,north,28 -芬达,south,345 -芬达,east,654 -芬达,west,2100 -芬达,north,1679 -醒目,south,1476 -醒目,east,830 -醒目,west,532 -醒目,north,498`; -//传入csv字符串,获得fieldInfo和dataset用于图表生成 -const { fieldInfo, dataset } = vmind.parseCSVData(csvData); -``` - -如果你已经有了一份JSON格式的数据,我们也可以调用getFieldInfo方法,从数据中获取fieldInfo: -```ts -const dataset=[ - { - "Product name": "Coke", - "region": "south", - "Sales": 2350 - }, - { - "Product name": "Coke", - "region": "east", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "west", - "Sales": 1027 - }, - { - "Product name": "Coke", - "region": "north", - "Sales": 1027 - }, - ... -] - -const vmind = new VMind(options) -const fieldInfo = vmind.getFieldInfo(dataset); -``` - -我们想要展示的内容为“各品牌汽车销量排行的变化”。调用generateChart方法,将数据和展示内容描述直接传递给VMind: -```typescript -const userPrompt='show me the changes in sales rankings of various car brand' -//调用图表生成接口,获得spec和图表动画时长 - const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -接下来,我们就可以使用 VChart 绘制生成的图表。 -在绘图前我们需要为 VChart 准备一个具备高宽的 DOM 容器。 - -```html - - -
- -``` - -接下来,我们创建一个 `VChart` 实例,传入刚刚生成的 spec 和 DOM 容器的 ID: - -```ts -// 创建 vchart 实例 -const vchart = new VChart(spec, { dom: 'chart' }); -// 绘制 -vchart.renderSync(); -``` - -生成的图表如下: - -![柱状图](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/bar.gif) - -我们还可对图表提更多的要求,例如: - -```typescript -const userPrompt = '帮我展示不同区域各商品销售额,使用折线图,region做x轴'; -const { spec, time } = await vmind.generateChart(userPrompt, fieldInfo, dataset); -``` - -生成的图表如下: - -![折线图](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/line.gif) - -## 导出 GIF 和视频 - -VMind 支持将生成的图表导出为 GIF 格式的动画和视频,随时随地进行分享。 -为了实现视频导出功能,你需要在项目中额外引入`VChart, FFMPEG, canvas`相关内容,并将其作为对象传入VMind。下面将展示如何获得图表 GIF 和视频的 ObjectURL: - -首先安装VChart,FFMPEG以及canvas相关内容: -```bash -# 使用 npm 安装 -npm install @visactor/vchart -npm install @visactor/vrender-core -npm install @ffmpeg/ffmpeg^0.11.6 -npm install canvas^2.11.2 -``` -同时确保vrender-core版本与vchart依赖版本一致,如:`"@visactor/vchart": "1.12.7"`对应的版本应该为,`"@visactor/vrender-core": "0.20.7"` -具体使用如下: - -```typescript -import VChart from "@visactor/vchart"; -import { ManualTicker, defaultTimeline } from "@visactor/vrender-core"; -import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg/dist/ffmpeg.min.js' -import { createCanvas } from "canvas"; -import VMind from "@visactor/vmind"; - -// 初始化vmind和ffmpeg -const vmind = new VMind({}); -const ffmpeg = createFFmpeg({ - log: true, -}); -const loadFFmpeg = async () => { - if (!ffmpeg.isLoaded()) { - await ffmpeg.load(); - } -}; -// 确保在使用导出功能前已经加载了ffmpeg -await loadFFmpeg(); -//导出视频 -//传入图表spec,视频时长和视频化必要参数,返回ObjectURL -const videoSrc = await vmind.exportVideo(spec, time, { - VChart, - FFmpeg: ffmpeg, - fetchFile, - ManualTicker, - defaultTimeline, - createCanvas, - }); -//导出GIF图片 -const gifSrc = await vmind.exportGIF(spec, time, { - VChart, - FFmpeg: ffmpeg, - fetchFile, - ManualTicker, - defaultTimeline, - createCanvas - }); -``` - -一旦获得图表的 ObjectURL,我们可以将其保存为文件。以保存视频文件为例: - -```typescript -//创建dom元素,实现文件下载 -const a = document.createElement('a'); -a.href = videoSrc; -a.download = `${filename}.mp4`; //设置保存的文件名 -a.dispatchEvent(new MouseEvent('click')); //保存文件 -``` - -## 总结 - -本章介绍了如何安装并使用 VMind 进行图表生成,并演示了如何将生成的图表保存为 GIF 和视频。VMind 目前支持柱状图、饼图、折线图、散点图、词云、动态条形图,更多图表类型正在开发中。VMind 能够根据用户数据和展示意图,推荐合适的图表类型,并将字段映射到合适的视觉通道上,自动生成符合用户需求的色板,降低用户进行数据可视化的门槛,帮助您轻松完成数据叙事。 diff --git a/docs/assets/guide/zh/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md b/docs/assets/guide/zh/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md deleted file mode 100644 index c028f7d8..00000000 --- a/docs/assets/guide/zh/Getting_Started/Quickly_Get_Started_with_VisActor_Using_Trae_Context_Doc.md +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: 有了Trae 上下文doc功能 ,快速上手VisActor,再也不用提oncall了 - -key words: VisActor,VChart,VTable,VStrory,VMind,VGrammar,VRender,Visualization,Chart,Data,Table,Graph,Gis,LLM ---- -# 什么是Trae - -Trae(中国区: https://www.trae.com.cn/?utm_source=school&utm_medium=oncam&utm_campaign=visactor ,海外版:https://www.trae.ai/ ),致力于成为真正的 AI 工程师(The Real Al Engineer)。Trae 旗下的 AI IDE 产品,以智能生产力为核心,无缝融入你的开发流程,与你默契配合,更高质量、高效率完成每一个任务。 - - - -# 什么上下文Doc 功能 - -指定上下文可以让 AI 助手提供更精准的回答,但是大模型对一个组件的理解的实时程度是低于组件自己的官方文档的。如果我们在使用一个不熟悉的组件的时候,如果能将该组件的相关文档引入到上下文中,可以大大的提升智能化编程水平。 - - - -Trae 使用 “#” 来指定上下文。 - - - -输入“#Doc:”,可以索引文档集。 我们添加VisActor 的文档,进行测试。 目前Trae 还没有内置任何文档集,所以需要手动添加。 - -首先添加文档集: - - - - - -这里我们通过url的方式添加各组件的入口url: - -* VChart:https://www.visactor.io/vchart/ - -* VTable:https://www.visactor.io/vtable - -* VMind:https://www.visactor.io/vmind - -* .... - - - -整个过程略微缓慢,但是索引效果,明显好于 Cursor。 - - - - - -下面我们实地测试一下引用文档作为上下文是否会给编程带来实际的益处。 - -# 效果测试 - -## 创建测试项目 - -我们创建一个最简单web 项目 - -``` -npm create vite@latest my-ts-web -- --template typescript -cd my-ts-web - -``` - - -# 实践验证 - -## 新增一个线图 - -我们要求Trae 生成一段代码,在当前文件中添加一个VChart 线图。 - - - -生成的结果还是有错误的。 - - - -我们下面引入文档,看看是不是会有所改变。 - - - -重新生成的代码修复了之前的api 错误调用。 - - - -生成了一个正确的线图。 - - - -## 加大难度 - -首先我们来修改数据,显示三条线。 - - - -问题的分析和答案都比较靠谱: - - - - - -主要修改点: - -1. 重构了数据结构,使用type字段来区分不同系列 - -1. 使用seriesField来指定系列的分类字段 - -1. 每个数据点包含year(x轴)、value(y轴)和type(系列)三个字段 - - - -修改入场动画效果: - - - - - -主要修改: - -1. 添加了animation配置 - -1. appear设置入场动画为fadeIn(淡入淡出) - -1. duration设置动画持续时间为1000毫秒 - -结果如下: - - - - - -## 更多问答 - -因为有了官方文档,我们可以让Trae 回答更多类型的问题,不只是代码本身。 - -比如基本的图表概念: - - - -或者 具体用法: - - - -导航到更相关文档: - - - - - -# 简单总结 - -Trae 结合文档有如下好处: - -1. 提升开发效率 - -- 快速访问:通过Marscode直接查阅VisActor API文档 - -- 智能提示:基于VisActor文档的精准代码补全 - -2. 增强开发体验 - -- 无缝集成:在开发环境中直接获取VTable使用指导 - -- 实时反馈:快速验证代码效果 - -3. 降低学习成本 - -- 文档辅助:随时查阅VisActor官方示例 - -- 代码生成:自动生成符合VisActor规范的代码 - -4. 提高代码质量 - -- 规范检查:确保代码符合VisActor最佳实践 - -- 性能优化:自动生成高性能表格配置 - -# 联系我们 - -github :[github.com/VisActor](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2FVisActor) - -VisActor 微信订阅号留言(可以通过订阅号菜单加入微信群): - - - -VisActor 官网:[www.visactor.io/](https://link.juejin.cn/?target=https%3A%2F%2Fwww.visactor.io%2Fvtable) ; [www.visactor.](https://link.juejin.cn/?target=https%3A%2F%2Fwww.visactor.io%2Fvtable)com - -飞书群: - - - -discord:https://discord.com/invite/3wPyxVyH6m - - ---- - -The doc is contributed by [玄魂](https://github.com/xuanhun) diff --git a/docs/assets/guide/zh/Intro_to_VMind.md b/docs/assets/guide/zh/Intro_to_VMind.md deleted file mode 100644 index 1ca6bbd4..00000000 --- a/docs/assets/guide/zh/Intro_to_VMind.md +++ /dev/null @@ -1,86 +0,0 @@ -# VMind简介 -## 前言 -VisActor是一款全流程可视化解决方案,它以“可视化叙事”和“智能化”为核心发展方向。VisActor承载“可视化叙事” 能力的组件主要有VChart、VTable 和 VGrammar,它们都提供了简单易用的接口。然而,我们希望在一些典型场景中,用户能够无需编写代码就能生成图表和叙事作品,以此降低用户的学习成本和使用复杂度。大语言模型的强大生成能力为VisActor可视化体系提供了一个自然语言的交互接口,使我们能够通过自然语言直接调用VChart、VTable等可视化组件的各项功能,从而简单、快速、高质量地完成可视化创作。 - - -![VMind](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_intro_ch.png) - - -VMind是在VChart、VTable等可视化组件库的基础能力之上,构建的一个智能可视化组件。我们希望在一些典型场景中,用户能够只需一句话就能生成图表和叙事作品,以此降低用户的学习成本和使用复杂度。 - -## VMind架构设计 -智能化是VisActor的未来核心方向,只有在此基础上,我们才能真正降低开发者的接入和研发成本,让他们能够将注意力集中在可视化之外。VMind是VisActor体系中的智能可视化组件,它基于规则算法、人工智能、机器学习、大语言模型等多种方式提供智能化接口,以最大限度降低开发者使用可视化组件的心智负担。 - - -![VMind架构图](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_structrure_ch.png) - - -在VMind组件中,最底层是由VChart图表库提供的图表渲染、动画、标注能力、VChart文档,以及大语言模型提供的自然语言理解、代码生成能力。其中,数据处理与交互层负责处理用户输入的数据和自然语言,包括数据聚合模块进行字段解析、数据转换、聚合等操作,交互通信模块负责处理用户与VMind、VMind与大语言模型之间的通信,包括用户意图识别、Prompt管理,模型通信,结果解析。 - - -## VMind核心能力 - - -![VMind能力图](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_abilities_ch.png) - - -VMind的核心能力包括图表智能生成、图表智能编辑和智能配色。 -- 图表智能生成,是指从自然语言描述的展示意图+数据直接生成图表的过程 -- 图表智能编辑是在原有图表的基础上,通过自然语言描述编辑意图,生成编辑后的图表 -- 智能配色是从自然语言生成风格化图表的过程。 - -进阶能力是对核心能力的进一步应用,包括完整的可视化叙事生成、数据解读与洞察报告。 - - -## VMind图表创作流程 - - -![VMind能力图](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_progress_ch.png) - - -基于VMind的图表智能生成、对话式编辑和智能配色模块,我们可以概括出使用VMind进行图表创作的全流程: -首先,用户提供自然语言描述的数据展示意图和图表数据,或者提供自然语言描述的图表编辑意图和数据新闻片段等。这些输入经过意图识别模块的处理,路由到不同模块。图表智能生成模块生成初步的图表;智能配色模块会根据用户的输入生成相应的主题色板,使得图表的颜色搭配更加和谐、美观;对话式编辑模块会反复应用一系列编辑操作,对图表进行微调和优化,直到生成一张满足用户需求的图表。 - -这些模块之间的协同作用,使得用户可以零门槛创作可视化作品。这种流程不仅大大简化了图表创作的复杂度,也极大地提升了图表创作的效率和质量。 - -这一流程充分利用了大模型的function call能力。图表生成、图表编辑与智能配色作为function供模型调用,LLM作为与用户交互的接口,根据用户意图选择对应的function并传入参数,执行对应模块的功能。在未来,VMind还将集成洞察提取、数据解读功能,对生成的图表进行解读,生成洞察报告,或者在图表中添加标注展示数据中的洞察信息。与此同时,模型还具有强大的自然语言对话能力,能够与用户进行多轮对话,简单、自然、友好地帮助用户完成从图表创作到数据分析的全过程。开发人员可以轻松地将VMind集成到他们的系统中,作为一个数据可视化助手。 - - - -## VMind使用场景 -### 数据视频 -数据视频是一种将数据内容通过图表、动画、标注、旁白等形式进行展示和解读的视频类型。这种方式能够将原本抽象的数据转化为直观的图形,以更加生动有趣的方式呈现,使观众更容易理解和接受。 - -制作数据视频的步骤包括: - -- 确定数据来源和主题 -- 收集和整理数据 -- 制作、编辑和导出图表 -- 视频编辑 -在传统的数据视频制作流程中,创作者需要在收集数据后,使用专业的可视化软件将数据转化为图表;或者使用各种图表库,通过编程绘制图表并导出为视频。在短视频时代,每个人都有可能成为视频的创作者。但是,非专业的视频创作者往往没有将数据可视化为图表并导出为视频的技能,这就大大提高了制作数据视频的门槛。 - -而使用 VMind 制作数据视频,用户只需要在收集好数据之后,用一句话描述想要展示的内容,就能直接生成图表动画,并支持一键导出为视频和 GIF,这极大地降低了制作数据视频的难度。 - - -![](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/cut.png) - - - -### 图表智能助手 -借助VMind打造的图表智能助手,你可以利用大语言模型的function call能力,判断用户的意图并调用VMind接口,实现图表的生成和数据的解读,从而降低数据可视化的难度。 - - -__你可以在[Cici](https://ciciai.com/bot/fUuxvgvv)体验VMind图表助手。__ - - -![VMind图表智能助手](https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/vmind/tutorials/VMind_assistant.png) - - - - - - - - - - diff --git a/docs/assets/guide/zh/VMind_OpenAPI.md b/docs/assets/guide/zh/VMind_OpenAPI.md deleted file mode 100644 index 18846485..00000000 --- a/docs/assets/guide/zh/VMind_OpenAPI.md +++ /dev/null @@ -1,90 +0,0 @@ -# VMind OpenAPI - -在VMind图表生成工具的基础上,VisActor团队全新推出了VMind Agent,提升了智能生成的准确性和效率,并新增了多轮编辑能力。目前VMind Agent提供了OpenAPI接口,你可以通过调用这些接口来实现更高级的智能生成能力。[VMind Agent Playground](/vmind/playground)提供了一个简单的测试环境,方便体验VMind Agent的能力。 - -## VSeed - -VSeed是一个面向分析领域的DSL, 封装了该领域常用的图表能力, 极大地提升分析式报表平台的搭建效率。一般情况下, 给定数据集和图表类型, 即可直接出图,每类图表类型存在大量的默认约定逻辑。 - -VSeed是VChart和VTable的子集,配置相比VChart和VTable大幅简化,配置项更适合大模型理解,是专为LLM生成封装的图表库。 - -VSeed 项目仓库:[https://github.com/VisActor/VSeed](https://github.com/VisActor/VSeed) - -VSeed 能力展示:[https://visactor.github.io/VSeed/galley/chartType/line.html](https://visactor.github.io/VSeed/galley/chartType/line.html) - -VMind Agent优先推荐使用VSeed进行代码生成,生成效果更加优秀,也同时支持VChart和VTable的原生代码生成。 - -## VMind Agent - -VMind Agent的整体技术方案如下: - -用户输入的指令和代码块,输入VMind Agent后,Agent会基于LLM主动调用工具,开始逐步进行 生成/编辑 -> 检查 -> 编辑 -> 检查 ...... 任务流,最终完成用户的要求,输出对应的代码块和文本解释说明。 - -相比传统的图表生成工具,VMind Agent在一下方面有优势: -- 🤖 ReAct 架构: 基于 LangGraph 实现的推理-行动循环 -- 🛠️ 多样化工具: 支持多种图表生成和编辑工具 -- 📊 图表类型: 支持多种图表类型和表格类型 -- 🎨 模板系统: 预置多种图表模板 -- 🔧 图表编辑: 支持对现有图表进行修改 -- 💬 自然语言: 支持纯自然语言输入生成图表 - -### VMind Agent 架构 - -VMind Agent 主要由Coordinator调度器和若干工具组成,基于`@langchain/langgraph库`完成Agent的实现。主要模块如下: - - - -#### Coordinator - -调度器主要工作是:基于当前状态,判断下一步应该调用哪一个工具,或结束任务。 - -#### Generate Tool - -生成工具在用户没有输入代码,或指令要求重新生成代码时调用。如果没有指定图表类型,工具会基于数据推荐适合的图表类型。每一种图表/表格类型都会提供基础的模版,LLM会基于用户的数据和模版生成最简单的代码块,供进一步编辑使用。 - -#### Edit Tool - -编辑工具是VMind Agent的核心部分,LLM会基于当前的代码和用户的目标,将任务拆分为多个简单的步骤并逐一完成。在执行每次编辑任务前,工具会基于本次步骤的任务要求,在知识库中召回对应的资料,辅助LLM进行编辑。 - -#### Check Tool - -检查工具在每一步编辑操作后执行,用来检查当次编辑操作是否会引起恶性错误,或是否没有达到当次步骤的目标。如果检查不通过,会回退上一次编辑操作。 - -#### 短期记忆 - -每一次对话会记录当前的sessionId,方便同一个用户进行多轮对话时,找回之前轮次的对话所记录的状态,方便用户进行多轮编辑操作。 - -### VMind Agent 知识库 - -为了避免LLM在编辑代码时出现幻觉,VMind Agent将编辑范围严格限制在每次编辑操作提供的知识库片段中。知识库主要分为两部分: - -#### RAG - -教程文档、示例Demo和Q&A问答内容,内容独立性强,适合使用RAG方案。相应片段进行向量化后,存入向量数据库。每次进行编辑操作时,会召回对应的若干文本及代码片段,供大模型参考。 -大模型进行编辑时,如果召回有非常接近的内容,会已经对应的代码片段准确进行相应的编辑。 - -#### Type Docs - -图表和表格的配置Schema,按照不同的图表/表格类型,以及不同的模块(例如坐标轴、图例等)进行拆分,组织成一个个类型说明片段。每个片段中有该部分对应的属性名称、属性类型和属性说明,不同的片段使用不同的TopKey进行索引。使用LLM将每个每个片段进行归纳总结,生成对应的说明Markdown片段,存储在数据库中。每一个TopKey也依据对应的Markdown片段,使用LLM总结一段简单的说明,介绍这个TopKey下的功能范围。 - -每次编辑时,首先依据编辑指令召回对应的若干TopKey,之后将TopKey对应的Markdown文本片段,作为知识库加入prompt中,大模型的编辑操作会被严格限制在本次召回的知识库的范围,避免幻觉影响编辑结果。 - -## VMind Agent 应用 - -### Playground - -VMind Agent Playground提供了一个简单的测试环境,方便体验VMind Agent的能力。你可以在Playground中输入指令和代码块,查看Agent的生成和编辑结果。 - -[VMind Agent Playground](/vmind/playground) - -### 抖音小程序 - -基于VMind Agent的,我们开发了一个示例小程序,抖音小程序搜索 数据智能洞察助手 对话小程序,用户可以在小程序中输入需要进行智能洞察的文本,体验Agent的生成和编辑结果。 - - - -## VMind OpenAPI 使用咨询 - -加入飞书群欢迎联系我们,咨询VMind OpenAPI的使用方案。 - - diff --git a/docs/assets/guide/zh/VMind_Website_Guide.md b/docs/assets/guide/zh/VMind_Website_Guide.md deleted file mode 100644 index c712c20f..00000000 --- a/docs/assets/guide/zh/VMind_Website_Guide.md +++ /dev/null @@ -1,55 +0,0 @@ - -# VMind站点指南 - -本篇文章的目的是为了帮助你更有效地使用 VMind 网站,让你能更快地找到你需要的信息。 - -## VMind OpenAPI - -VMind 提供了 OpenAPI 接口,你可以通过调用这些接口来实现更高级的智能生成能力。你可以在[VMind OpenAPI](./VMind_OpenAPI)章节了解更多关于 OpenAPI 的信息。 - -## 快速开始 - -### 快速上手 - -首先,你需要阅读 VMind 的[快速上手](./Getting_Started)章节。这个章节会教你如何配置和使用 VMind 所需的环境,以及如何使用 VMind 构建你的第一个智能可视化应用。 - -### 深入了解 VMind - -在你完成[快速上手](./Getting_Started)后,你可以在[VMind简介](./Intro_to_VMind)了解 VMind 的功能定位和相关概念。 -[创建VMind对象](./Create_VMind_Object)章节将教你如何初始化一个 VMind 对象以进行后续操作。你还可以通过阅读[数据处理与输入](./Data_Input_and_Process)章节来了解 VMind 支持的数据类型。在[图表生成](./Chart_Generation)章节,你可以深入了解如何使用 VMind 进行图表智能生成。[数据聚合](./Data_Aggregation)章节将教你如何使用 VMind 对数据进行排序、筛选、聚合等操作。 - -## 文档 - -VMind 的文档提供了详细的功能和 API 信息。根据你的需求,你可以查看以下几个部分: - -- [教程](./Basic_Tutorial/Create_VMind_Instance):介绍了 VMind 的基本概念和各种使用方法。 - -- [API](../api/VMind_Instance):提供了 VMind 的所有可用接口的详细说明。 - - - -## 如何使用搜索功能 - -本站点提供了一个强大的搜索功能,让你可以快速找到相关的使用信息。点击站点顶部的搜索框,输入关键词后,你将在下拉列表中看到匹配的结果。选择合适的结果即可查看相关内容。 - -## 如何提问&建议 - -我们很高兴为你提供帮助! 如果你在使用 VMind 过程中遇到问题,可以通过以下方式提问: - -1. 在 GitHub 仓库中提交一个 issue:访问 [VMind GitHub](https://github.com/VisActor/VMind/issues/new/choose),详细描述你遇到的问题,我们的团队将尽快回应并解决。 - -2. 在 GitHub 仓库提交一个 discussion:访问 [VMind Discussion](https://github.com/VisActor/VMind/discussions),非常欢迎你在这里提出你的想法和建议,我们的团队将尽快回应并解决。 - -## 如何纠错 - -如果你在文档示例中发现问题,或者认为某些部分可以改进,务必告诉我们。你可以通过以下方式为我们提纠错信息: - -1. 在 GitHub 仓库中提交一个 pull request:纠正的内容并提交,会有团队成员审核并合并。 - -2. 提交一个 issue:指出文档中存在的问题,团队成员会尽快核实并修正。 - -感谢你的帮助!我们将不断完善文档,为所有 VMind 用户提供更好的学习体验。 diff --git a/docs/assets/openManus/Amazon_Fashion_Sales_Analysis_Report.md b/docs/assets/openManus/Amazon_Fashion_Sales_Analysis_Report.md deleted file mode 100644 index fbfca095..00000000 --- a/docs/assets/openManus/Amazon_Fashion_Sales_Analysis_Report.md +++ /dev/null @@ -1,125 +0,0 @@ -# Amazon Fashion Sales Analysis and Growth Strategy -## January 2025 Performance Review and 10% Growth Plan - -## Executive Summary - -This comprehensive analysis examines the January 2025 sales data from your Amazon Fashion store to identify patterns, trends, and opportunities for growth. The analysis reveals several key insights, including day-of-week performance variations, the impact of discount strategies, and customer purchasing behaviors. Based on these findings, we've developed a multi-faceted strategy projected to increase sales by 14%, well above the requested 10% target. The strategy focuses on optimizing day-specific promotions, enhancing customer purchase behavior, refining pricing and promotion tactics, and improving inventory management. This report provides both detailed analysis and actionable recommendations with implementation timelines to achieve sustainable growth. - -## Data Analysis Methodology - -The analysis began with a thorough exploration of the January 2025 sales data, which included 31 days of daily metrics covering orders, customers, units sold, and various financial indicators. The data was preprocessed to create derived metrics such as average order value, units per order, profit margins, and day-of-week features. Comprehensive statistical analysis was performed to identify patterns, correlations, and anomalies in the data. Multiple visualizations were created to illustrate key trends and relationships, providing a foundation for data-driven strategy development. - -## Sales Performance Overview - -January 2025 showed overall healthy performance with a total of 1,213 orders, generating approximately $166,000 in gross sales and $57,000 in net profit. The average daily performance included 39 orders, 101 units sold, and $5,349 in gross sales, with an average order value of $136.11 and a profit margin of 34.11%. The data revealed significant day-to-day variations, with a notable peak on January 14th that substantially outperformed all other days. - -### Weekly Performance Trends - -The sales data demonstrated a clear pattern of growth and decline throughout the month. Week 3 (January 15-21) showed peak performance with 316 orders, $45,546 in gross sales, and $15,827 in net profit. This represented a 39.8% increase in orders and a 49.9% increase in gross sales compared to Week 1. However, Weeks 4 and 5 showed a progressive decline, with Week 5 recording only 148 orders and $20,751 in gross sales. This mid-month peak followed by end-of-month decline suggests a cyclical pattern that requires strategic intervention to maintain momentum throughout the entire month. - -Average order value also fluctuated weekly, peaking in Week 3 at $144.97, while Week 4 had the lowest AOV at $125.07. This 16% variation in AOV between weeks indicates significant potential for optimization through targeted promotional strategies. Profit margins showed similar fluctuations, ranging from 31.64% in Week 4 to 36.44% in Week 5, suggesting opportunities for margin improvement through strategic product mix and pricing adjustments. - -### Day-of-Week Analysis - -The analysis revealed substantial performance variations by day of week. Tuesdays consistently outperformed other days with an average of 52.25 orders and $7,152 in gross sales, while Thursdays showed the weakest performance with only 28.6 orders and $3,763 in gross sales. This 82.7% difference in order volume between the best and worst-performing days represents a significant opportunity for targeted interventions to boost underperforming days. - -Weekend days (Saturday and Sunday) averaged higher orders (43.88) compared to weekdays (37.48), but showed lower average order values ($129.74 vs. $138.33). This suggests different shopping behaviors between weekday and weekend customers, with weekend shoppers making more frequent but smaller purchases. Mondays showed the highest average order value at $146.42, indicating potential for premium product focus on this day. - -### Outlier Analysis: January 14th - -Tuesday, January 14th stood out as an exceptional outlier, with 79 orders (82.31% above the average Tuesday), $11,752 in gross sales (109.14% above average), and $4,010 in net profit (113.58% above average). This single day accounted for approximately 7% of the month's total sales. The exceptional performance extended across all metrics, including a higher average order value ($148.76 vs. $128.29) and more units per order (2.84 vs. 2.42) compared to other Tuesdays. - -The dramatic outperformance of January 14th suggests specific factors that drove success on this day, potentially including promotional activities, external events, or seasonal factors. Identifying and replicating these success factors represents a significant opportunity for boosting overall sales performance. - -## Customer Behavior Insights - -The analysis revealed several important patterns in customer purchasing behavior that provide opportunities for optimization. The near-perfect 100% conversion rate across all days suggests most visitors are returning customers or highly qualified leads, indicating a loyal customer base but also potential for expanding reach to new customers. - -Customers purchased an average of 2.57 units per order, with higher units per order on Tuesdays (2.84) and lower on weekends (2.35). This variation suggests different shopping motivations throughout the week and opportunities for increasing basket size through strategic cross-selling and bundling. The data also showed that orders and unique customers were nearly identical, indicating most customers place only one order per day, highlighting potential for encouraging multiple purchases. - -## Financial Performance Analysis - -Profit margins showed significant variation, ranging from 26.97% to 42.03%, with an average of 34.11%. Weekdays demonstrated higher profit margins (35.47%) compared to weekends (33.38%), suggesting different product mix preferences between weekday and weekend shoppers. The correlation analysis revealed a moderate positive relationship (0.41) between profit margin and average order value, indicating that higher-value orders tend to be more profitable. - -The cost structure analysis showed Amazon fees remained relatively consistent at 19-21% of gross sales, while product costs varied more significantly, ranging from 38.39% to 50.67% of gross sales. This variation in product costs suggests opportunities for optimizing the product mix to favor higher-margin items during strategic promotional periods. - -## Discount and Shipping Impact - -The analysis of discount strategies revealed that medium discounts ($1-2 per order) correlated with the highest orders (44.17), gross sales ($6,174.53), and net profit ($2,129.66). Higher discounts showed diminishing returns, with lower profit margins (32.09% for high discounts vs. 34.60% for low discounts) and no corresponding increase in order volume. Discounts showed negative correlations with average order value (-0.10) and profit margin (-0.32), suggesting the need for strategic application to maximize overall profitability. - -Shipping charge analysis showed that medium shipping charges ($5-6 per order) correlated with the highest profit margins (35.47%). Shipping charges showed minimal correlation with orders (-0.01) and sales (0.01), suggesting limited price sensitivity to shipping costs within the current range. The negative correlation (-0.39) between shipping and discount suggests these are used as alternative promotional tactics, providing an opportunity for more strategic coordination between these levers. - -## Data-Driven Growth Strategies - -Based on the comprehensive analysis of January 2025 sales data, we've developed a multi-faceted strategy to achieve a minimum 10% increase in sales for the upcoming month. The strategy focuses on four key areas: day-of-week optimization, customer behavior optimization, pricing and promotion refinement, and inventory management improvements. - -### Day-of-Week Optimization Strategies - -The significant performance variations by day of week present clear opportunities for targeted interventions. For Tuesdays, which already show strong performance, we recommend enhancing their success by analyzing what made January 14th exceptional and implementing similar tactics on all Tuesdays. This includes implementing 3-hour flash sales with medium-level discounts ($1-2 per order) that showed optimal performance in our analysis, and scheduling targeted email campaigns to be delivered Monday evening to drive Tuesday traffic. These Tuesday enhancements are projected to increase Tuesday sales by 15%, contributing 3% to overall monthly sales. - -For underperforming Thursdays, we recommend a rescue plan featuring Thursday-exclusive promotions, free shipping offers, and bundle deals to increase units per order from the current 2.57 average. These Thursday interventions are expected to increase Thursday sales by 20%, contributing 2% to overall monthly sales. - -Weekend strategies should focus on improving average order value, which currently lags behind weekday performance. This includes promoting higher-value items on weekends and implementing tiered shipping discounts that increase with order value to encourage larger weekend purchases. These weekend AOV improvements are projected to increase weekend AOV by 8%, contributing 1.5% to overall monthly sales. - -### Customer Behavior Optimization - -To increase units per order from the current 2.57 average, we recommend implementing AI-powered product recommendations based on cart contents, offering tiered discounts for purchasing multiple items, and featuring complementary products on product pages and during checkout. These strategies are expected to increase average units per order to 2.8 (+9%), contributing 2% to overall monthly sales. - -To encourage repeat purchases within the same month, we recommend sending follow-up emails with time-limited discount codes for next purchases and implementing a points-based loyalty program. These repeat purchase incentives are projected to generate 5% additional orders from repeat customers, contributing 1% to overall monthly sales. - -### Pricing and Promotion Optimization - -Based on the analysis of discount impact, we recommend refining the discount strategy to focus on the medium discount range ($1-2 per order) that showed highest orders, gross sales, and net profit. Discounts should be applied strategically to products with higher profit margins to maintain overall profitability. This optimized discount strategy is expected to improve conversion while maintaining profit margins, contributing 1.5% to overall monthly sales. - -For shipping strategy, we recommend implementing free shipping for orders above $150 to increase average order value (currently $136.11) and focusing on medium shipping charges ($5-6) that showed highest profit margins. These shipping optimizations are projected to increase AOV by 5%, contributing 1% to overall monthly sales. - -### Inventory and Product Mix Strategies - -To optimize the product mix, we recommend identifying and featuring products with above-average profit margins and expanding selection in categories showing highest units per order. This product mix optimization is expected to improve overall profit margin while increasing sales, contributing 1% to overall monthly sales. - -To address the observed decline in sales during Weeks 4-5, we recommend creating special promotions for the last week of the month and implementing a strategic discounting of slow-moving inventory during the final week. These end-of-month boost strategies are projected to reduce the Week 4-5 decline by 50%, contributing 1% to overall monthly sales. - -## Implementation Plan - -The implementation of these strategies should follow a phased approach over four weeks: - -Week 1 should focus on building the foundation by setting up technical infrastructure for all promotions, preparing email templates and marketing materials, and configuring discount rules and shipping tiers. - -Week 2 should launch the core strategies, including the Tuesday Power Day strategy, Units Per Order initiatives, and Discount Strategy Refinement. - -Week 3 should expand the implementation to include the Thursday Rescue Plan, Weekend AOV Improvement tactics, and Repeat Purchase Incentives. - -Week 4 should focus on optimization by deploying the End-of-Month Sales Boost, fine-tuning all strategies based on early results, and preparing for continuation in the following month. - -## Expected Results - -The combined impact of these strategies is projected to increase sales by 14%, exceeding the 10% target: -- Day-of-Week Optimization: +6.5% -- Customer Behavior Optimization: +3.0% -- Pricing and Promotion Optimization: +2.5% -- Inventory and Product Mix Strategies: +2.0% - -This comprehensive approach provides a buffer for any strategies that may underperform expectations while maintaining or improving profit margins. The strategies are designed to be sustainable and scalable, providing a foundation for continued growth beyond the immediate target period. - -## Conclusion - -The January 2025 sales data reveals a healthy business with significant opportunities for optimization and growth. By strategically addressing day-of-week performance variations, enhancing customer purchase behavior, refining pricing and promotion tactics, and improving inventory management, we project a 14% increase in sales for the upcoming month. The recommended strategies are data-driven, actionable, and designed to not only increase sales volume but also maintain or improve profit margins. Implementation should follow the phased approach outlined in this report, with ongoing monitoring and adjustment to maximize results. - -## Appendix: Key Visualizations - -The analysis includes several key visualizations that illustrate the patterns and insights discussed in this report: - -1. Daily Gross Sales Trend - January 2025 -2. Weekly Gross Sales - January 2025 -3. Average Daily Orders by Day of Week -4. Weekend vs Weekday Performance Comparison -5. January 14th vs Average Tuesday Comparison -6. Impact of Discount Levels on Sales Metrics -7. Profit Margin by Discount Range -8. Units per Order vs Average Order Value -9. Impact of Shipping Levels on Sales Metrics -10. Daily Profit Margin Trend - January 2025 -11. Daily Average Order Value Trend - January 2025 -12. Correlation Matrix of Sales Metrics - -These visualizations provide visual confirmation of the patterns identified in the analysis and support the strategic recommendations outlined in this report. diff --git a/docs/assets/openManus/Readme.md b/docs/assets/openManus/Readme.md deleted file mode 100644 index c5a8bb65..00000000 --- a/docs/assets/openManus/Readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Case of Sales Analysis and Strategies for Amazon Store - -The current folder contains all execution artifacts of [the Sales Analysis and Strategies for Amazon Store case in manus](https://manus.im/share/c3onakN6Iajcm1Vt1xAVG7?replay=1) \ No newline at end of file diff --git a/docs/assets/openManus/amazon_sales_jan2025.csv b/docs/assets/openManus/amazon_sales_jan2025.csv deleted file mode 100644 index 177fcadd..00000000 --- a/docs/assets/openManus/amazon_sales_jan2025.csv +++ /dev/null @@ -1,32 +0,0 @@ -Date,Orders,Unique Customers,Units Sold,Gross Sales,Shipping Revenue,Coupon Discounts,Amazon Fees,Product Costs,Net Profit -2025-01-01,37,37,83,4813.44,275.91,706.65,734.33,2241.35,1407.02 -2025-01-02,43,43,111,6182.74,489.61,833.44,848.23,2936.95,2053.73 -2025-01-03,32,31,114,6914.35,427.26,888.52,1074.84,3491.21,1887.05 -2025-01-04,41,41,91,6138.23,471.18,643.65,747.82,3200.84,2017.1 -2025-01-05,46,46,102,7394.39,509.73,966.82,903.9,3815.65,2217.75 -2025-01-06,32,32,116,9157.3,676.22,1369.04,1550.84,4377.13,2536.5 -2025-01-07,35,35,86,4861.82,316.4,520.24,688.49,2652.06,1317.44 -2025-01-08,38,38,99,5039.76,339.21,634.59,643.19,2639.77,1461.42 -2025-01-09,41,40,114,3188.5,206.54,458.72,482.53,1611.58,842.2 -2025-01-10,35,34,101,7134.65,398.52,977.72,1185.78,3647.03,1722.64 -2025-01-11,38,37,92,7297.66,523.05,984.09,970.22,3590.15,2276.24 -2025-01-12,33,33,96,4047.84,236.49,546.96,637.02,1921.81,1178.54 -2025-01-13,41,41,96,6275.02,318.33,740.29,785.14,3047.13,2020.79 -2025-01-14,41,41,107,7174.17,497.63,822.73,883.15,3772.07,2193.85 -2025-01-15,79,78,93,11752.01,650.04,1650.78,1784.91,5305.32,3661.04 -2025-01-16,42,42,95,6619.66,517.75,930.1,1009.09,3055.68,2142.54 -2025-01-17,30,30,101,5610.81,441.11,804.33,887.89,2550.68,1809.03 -2025-01-18,34,33,94,3523.28,272.86,513.21,576.29,1599.82,1106.82 -2025-01-19,35,35,93,6922.58,423.0,869.25,1236.03,3707.36,1532.94 -2025-01-20,40,39,93,7336.22,370.21,917.58,1107.61,3817.52,1863.72 -2025-01-21,51,50,109,6450.31,502.15,902.49,899.03,3208.5,1942.45 -2025-01-22,41,40,108,3916.81,246.15,518.97,656.89,1800.89,1186.22 -2025-01-23,29,29,105,4221.79,333.52,570.36,575.22,2107.36,1302.38 -2025-01-24,24,24,102,3652.92,288.25,510.64,534.56,1816.77,1079.19 -2025-01-25,37,37,112,6503.53,491.6,939.76,811.04,3039.23,2205.1 -2025-01-26,46,46,91,7251.14,426.61,847.66,881.17,3577.61,2371.32 -2025-01-27,35,35,104,5985.29,368.41,710.93,1063.94,2931.9,1646.94 -2025-01-28,31,31,92,6759.36,510.56,707.7,1150.17,3457.99,1954.07 -2025-01-29,44,44,90,4047.1,240.83,521.73,654.65,2078.22,1033.33 -2025-01-30,43,42,98,5567.35,306.68,566.74,804.69,2530.53,1972.07 -2025-01-31,44,44,88,3293.75,219.71,406.05,429.5,1605.58,1072.33 diff --git a/docs/assets/openManus/aov_trend.png b/docs/assets/openManus/aov_trend.png deleted file mode 100644 index 31cafa7834ff3a7114e61fa0beba7e3c21b3bf55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326655 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

GNnCmq*x%{0#bl3-Nr64ZCOS}wP~arQMC)5P!0 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�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

=mcI45#o%o1V(iy<)nAU6uSglcNK+bGkUBTa-X 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 d-6uleqQ@i^nWc6{6Am{P2KR7llJF(mN_D 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%0DT6MF-^?2>W112h?6y;wZZ>zB|YmG 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%0DP1wK})#O;OTt?9Q2{gNgpEq#!z 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

tA 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 2.5) -- **January 14, 2025 (Tuesday)**: - - Orders: 79 (significantly higher than average) - - Gross Sales: $11,752.01 (significantly higher than average) - - Net Profit: $4,010.05 (significantly higher than average) - -### Initial Observations -1. Weekend sales are higher than weekday sales on average -2. January 14th shows exceptional performance across multiple metrics -3. Conversion rate is consistently near 100%, suggesting most visitors make purchases -4. Profit margins vary significantly (26.97% to 42.03%) -5. Average order value is higher on weekdays than weekends diff --git a/docs/assets/openManus/home/ubuntu/analysis/sales_analysis_results.txt b/docs/assets/openManus/home/ubuntu/analysis/sales_analysis_results.txt deleted file mode 100644 index 2fec0e66..00000000 --- a/docs/assets/openManus/home/ubuntu/analysis/sales_analysis_results.txt +++ /dev/null @@ -1,85 +0,0 @@ -# Amazon Fashion Sales Analysis - January 2025 - -## Weekly Sales Summary - Week Orders Gross Sales Net Profit Units Sold Average_Order_Value Profit_Margin - 1 226 30386.58 9871.64 595 135.442626 32.708879 - 2 275 37780.80 13559.80 697 136.042737 35.675951 - 3 316 45545.99 15827.16 851 144.970516 34.343915 - 4 248 31341.21 10050.28 607 125.066667 31.643778 - 5 148 20750.81 7593.51 387 139.948597 36.441550 - -## Day of Week Analysis -Day_of_Week Orders Gross Sales Net Profit Units Sold Average_Order_Value Profit_Margin Conversion_Rate - Monday 34.75 5232.0825 1872.7900 96.75 146.423938 35.822693 100.000000 - Tuesday 52.25 7152.3300 2410.6700 135.00 133.406436 33.274309 100.357143 - Wednesday 30.20 4313.9020 1537.0080 81.40 143.503032 35.605238 100.000000 - Thursday 28.60 3763.0660 1183.6480 73.20 131.742903 31.753670 100.000000 - Friday 44.00 6015.2760 2078.3560 113.60 137.213694 34.383283 100.000000 - Saturday 41.75 5397.4900 1805.6050 102.75 129.425496 33.383204 100.641026 - Sunday 46.00 6054.1400 2137.7675 114.50 130.048484 34.691468 100.000000 - -## Correlation Analysis - Orders Units Sold Gross Sales Net Profit Average_Order_Value Units_per_Order Profit_Margin Shipping_per_Order Discount_per_Order -Orders 1.00 0.98 0.97 0.93 0.09 0.13 0.04 -0.01 0.21 -Units Sold 0.98 1.00 0.99 0.95 0.26 0.33 0.05 0.02 0.17 -Gross Sales 0.97 0.99 1.00 0.98 0.32 0.32 0.14 0.01 0.17 -Net Profit 0.93 0.95 0.98 1.00 0.38 0.31 0.33 -0.02 0.12 -Average_Order_Value 0.09 0.26 0.32 0.38 1.00 0.89 0.41 0.07 -0.10 -Units_per_Order 0.13 0.33 0.32 0.31 0.89 1.00 0.08 0.12 -0.12 -Profit_Margin 0.04 0.05 0.14 0.33 0.41 0.08 1.00 -0.04 -0.32 -Shipping_per_Order -0.01 0.02 0.01 -0.02 0.07 0.12 -0.04 1.00 -0.39 -Discount_per_Order 0.21 0.17 0.17 0.12 -0.10 -0.12 -0.32 -0.39 1.00 - -## Outlier Analysis (January 14th) - 13 -Date 2025-01-14 00:00:00 -Day_of_Week Tuesday -Orders 79 -Units Sold 224 -Gross Sales 11752.01 -Net Profit 4010.05 -Average_Order_Value 148.75962 -Units_per_Order 2.835443 -Profit_Margin 34.122248 -Discount_per_Order 1.992278 - -## Comparing January 14th (Tuesday) with average Tuesday -Orders: Jan 14 = 79.00, Avg Tuesday = 43.33, Difference = 35.67 (82.31%) -Units Sold: Jan 14 = 224.00, Avg Tuesday = 105.33, Difference = 118.67 (112.66%) -Gross Sales: Jan 14 = 11752.01, Avg Tuesday = 5619.10, Difference = 6132.91 (109.14%) -Net Profit: Jan 14 = 4010.05, Avg Tuesday = 1877.54, Difference = 2132.51 (113.58%) -Average_Order_Value: Jan 14 = 148.76, Avg Tuesday = 128.29, Difference = 20.47 (15.96%) -Units_per_Order: Jan 14 = 2.84, Avg Tuesday = 2.42, Difference = 0.41 (17.04%) -Profit_Margin: Jan 14 = 34.12, Avg Tuesday = 32.99, Difference = 1.13 (3.43%) -Discount_per_Order: Jan 14 = 1.99, Avg Tuesday = 1.64, Difference = 0.35 (21.50%) - -## Discount Impact Analysis -Correlation between Discount_per_Order and other metrics: -Discount_per_Order 1.000000 -Orders 0.205425 -Units Sold 0.170070 -Average_Order_Value -0.097984 -Units_per_Order -0.120498 -Gross Sales 0.173755 -Net Profit 0.117784 - -Impact of discount levels: -Discount_Range Orders Units Sold Gross Sales Net Profit Average_Order_Value Units_per_Order Profit_Margin - Low (0-1) 31.111111 79.222222 4126.292222 1426.725556 132.357850 2.541760 34.598545 - Medium (1-2) 44.166667 116.444444 6174.531667 2129.664444 140.308968 2.637570 34.314201 - High (2-3) 34.500000 82.000000 4381.797500 1431.975000 125.683370 2.351389 32.088781 - -## Shipping Revenue Impact Analysis -Correlation between Shipping_per_Order and other metrics: -Shipping_per_Order 1.000000 -Orders -0.008446 -Units Sold 0.019099 -Average_Order_Value 0.066474 -Units_per_Order 0.119193 -Gross Sales 0.005687 -Net Profit -0.020329 - -Impact of shipping levels: -Shipping_Range Orders Units Sold Gross Sales Net Profit Average_Order_Value Units_per_Order Profit_Margin - Low (3-5) 36.200000 91.000000 4941.178000 1704.150000 135.848036 2.519047 33.325092 - Medium (5-6) 40.142857 102.714286 5400.252857 1911.112857 132.681980 2.509347 35.470619 \ No newline at end of file diff --git a/docs/assets/openManus/home/ubuntu/todo.md b/docs/assets/openManus/home/ubuntu/todo.md deleted file mode 100644 index 89e072b9..00000000 --- a/docs/assets/openManus/home/ubuntu/todo.md +++ /dev/null @@ -1,13 +0,0 @@ -# Amazon Fashion Sales Analysis Todo List - -## Data Preparation and Analysis -- [x] Load and explore the Amazon Fashion Sales data -- [x] Clean and preprocess data (create derived metrics) -- [x] Perform comprehensive sales analysis -- [x] Create data visualizations -- [x] Identify key insights and trends - -## Strategy Development and Reporting -- [x] Develop data-driven strategies to boost sales by 10% -- [x] Prepare comprehensive analysis report -- [x] Deliver final report with recommendations diff --git a/docs/assets/openManus/key_insights.md b/docs/assets/openManus/key_insights.md deleted file mode 100644 index 25354b86..00000000 --- a/docs/assets/openManus/key_insights.md +++ /dev/null @@ -1,60 +0,0 @@ -# Key Insights and Trends - Amazon Fashion Sales January 2025 - -## Sales Patterns and Trends - -### Weekly Trends -1. **Peak Performance in Week 3**: Week 3 (January 15-21) showed the highest performance with 316 orders, $45,545.99 in gross sales, and $15,827.16 in net profit. -2. **Consistent Growth and Decline**: Sales showed growth from Week 1 to Week 3, followed by a decline in Weeks 4 and 5, suggesting a mid-month peak pattern. -3. **Average Order Value Fluctuation**: AOV peaked in Week 3 at $144.97, while Week 4 had the lowest AOV at $125.07. - -### Day of Week Patterns -1. **Tuesday Performance**: Tuesdays show the highest average orders (52.25) and gross sales ($7,152.33). -2. **Weekend vs. Weekday**: Weekend days (Saturday and Sunday) average higher orders (43.88) compared to weekdays (37.48). -3. **AOV Variation by Day**: Mondays have the highest average order value ($146.42), while Saturdays have the lowest ($129.43). -4. **Thursday Underperformance**: Thursdays consistently show the lowest performance across orders, sales, and profit. - -### Outlier Analysis -1. **January 14th Anomaly**: Tuesday, January 14th showed exceptional performance: - - 79 orders (82.31% above average Tuesday) - - $11,752.01 gross sales (109.14% above average) - - $4,010.05 net profit (113.58% above average) - - This single day accounted for approximately 7% of the month's total sales. - -## Customer Behavior Insights - -### Order Patterns -1. **Conversion Rate Consistency**: Nearly perfect 100% conversion rate across all days, suggesting most visitors are returning customers or highly qualified leads. -2. **Units per Order**: Average of 2.57 units per order, with highest on Tuesdays (2.84) and lowest on weekends (2.35). -3. **One-time Purchasers**: Orders and unique customers are nearly identical, indicating most customers place only one order per day. - -## Financial Performance Insights - -### Profit Metrics -1. **Profit Margin Variation**: Profit margins range from 26.97% to 42.03%, with an average of 34.11%. -2. **Weekday vs. Weekend Profitability**: Weekdays show higher profit margins (35.47%) compared to weekends (33.38%). -3. **Correlation with AOV**: Profit margin has a moderate positive correlation (0.41) with average order value. - -### Cost Structure -1. **Amazon Fee Consistency**: Amazon fees remain relatively consistent at 19-21% of gross sales. -2. **Product Cost Variation**: Product costs range from 38.39% to 50.67% of gross sales, suggesting variable product mix. - -## Discount and Shipping Impact - -### Discount Analysis -1. **Medium Discount Sweet Spot**: Medium discounts (1-2$ per order) correlate with highest orders (44.17), gross sales ($6,174.53), and net profit ($2,129.66). -2. **Discount-Profit Relationship**: Higher discounts correlate with lower profit margins (32.09% for high discounts vs. 34.60% for low discounts). -3. **Negative Correlation**: Discounts show negative correlation with AOV (-0.10) and profit margin (-0.32). - -### Shipping Analysis -1. **Medium Shipping Sweet Spot**: Medium shipping charges ($5-6 per order) correlate with highest profit margins (35.47%). -2. **Minimal Impact**: Shipping charges show minimal correlation with orders (-0.01) and sales (0.01). -3. **Discount-Shipping Relationship**: Negative correlation (-0.39) between shipping and discount, suggesting they may be used as alternative promotional tactics. - -## Opportunities for Growth - -1. **Tuesday Optimization**: Leverage the success factors from January 14th to replicate performance on other Tuesdays. -2. **Weekend AOV Improvement**: Focus on increasing weekend AOV, which currently lags behind weekday performance. -3. **Thursday Enhancement**: Develop specific strategies to boost underperforming Thursday sales. -4. **Discount Strategy Refinement**: Optimize discount strategy around the 1-2$ per order range that shows best overall performance. -5. **Units per Order Increase**: Potential to increase units per order, particularly on weekends. -6. **Week 4-5 Performance**: Address the sales decline in the last two weeks of the month. diff --git a/docs/assets/openManus/orders_by_day.png b/docs/assets/openManus/orders_by_day.png deleted file mode 100644 index c5e6f03e5be1e04797a05e40ed9c854ca5303a3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161002 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

#ezRX^x9YEkRI3}$s9#K3!%OpER_{O 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 diff --git a/docs/assets/openManus/profit_margin_by_discount.png b/docs/assets/openManus/profit_margin_by_discount.png deleted file mode 100644 index c94fa15a6dffba4a60c0a5794f5ac5b36a6022f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107150 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

^6AwTojm7cf}lu# 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 diff --git a/docs/assets/openManus/sales_growth_strategies.md b/docs/assets/openManus/sales_growth_strategies.md deleted file mode 100644 index 7778e877..00000000 --- a/docs/assets/openManus/sales_growth_strategies.md +++ /dev/null @@ -1,90 +0,0 @@ -# Data-Driven Strategies to Boost Sales by 10% - -Based on the comprehensive analysis of January 2025 sales data, the following strategies are recommended to achieve a 10% increase in sales for the upcoming month: - -## 1. Day-of-Week Optimization Strategies - -### Tuesday Power Day Enhancement -- **Replicate January 14th Success**: Analyze what made January 14th exceptional (82% more orders than average Tuesday) and implement similar tactics on all Tuesdays. -- **Tuesday Flash Sales**: Implement 3-hour flash sales on Tuesdays with medium-level discounts ($1-2 per order) that showed optimal performance. -- **Tuesday Email Campaign**: Schedule targeted email campaigns to be delivered Monday evening to drive Tuesday traffic. -- **Expected Impact**: +15% increase in Tuesday sales, contributing +3% to overall monthly sales. - -### Thursday Rescue Plan -- **Thursday-Exclusive Promotions**: Create Thursday-only promotions to boost the lowest-performing day of the week. -- **Free Shipping Thursday**: Offer free shipping on Thursdays to overcome the lowest-performing day. -- **Bundle Deals**: Introduce product bundles on Thursdays to increase units per order from current 2.57 average. -- **Expected Impact**: +20% increase in Thursday sales, contributing +2% to overall monthly sales. - -### Weekend AOV Improvement -- **Premium Weekend Focus**: Promote higher-value items on weekends to increase the weekend AOV (currently $129.74 vs. weekday $138.33). -- **Tiered Shipping Discounts**: Implement shipping discounts that increase with order value to encourage larger weekend purchases. -- **Expected Impact**: +8% increase in weekend AOV, contributing +1.5% to overall monthly sales. - -## 2. Customer Behavior Optimization - -### Increase Units Per Order -- **Strategic Cross-Selling**: Implement AI-powered product recommendations based on cart contents. -- **Bundle Pricing**: Offer tiered discounts for purchasing multiple items (e.g., 5% off for 2 items, 10% off for 3+ items). -- **Complementary Product Highlights**: Feature complementary products on product pages and during checkout. -- **Expected Impact**: Increase average units per order from 2.57 to 2.8 (+9%), contributing +2% to overall monthly sales. - -### Repeat Purchase Incentives -- **Post-Purchase Discount Codes**: Send follow-up emails with time-limited discount codes for next purchase. -- **Loyalty Program Launch**: Implement a points-based loyalty program to encourage repeat purchases within the same month. -- **Expected Impact**: Generate 5% additional orders from repeat customers, contributing +1% to overall monthly sales. - -## 3. Pricing and Promotion Optimization - -### Discount Strategy Refinement -- **Optimize Discount Levels**: Focus on the medium discount range ($1-2 per order) that showed highest orders (44.17), gross sales ($6,174.53), and net profit ($2,129.66). -- **Targeted Discount Application**: Apply discounts strategically to products with higher profit margins to maintain overall profitability. -- **Expected Impact**: Optimize conversion while maintaining profit margins, contributing +1.5% to overall monthly sales. - -### Shipping Strategy Enhancement -- **Free Shipping Threshold**: Implement free shipping for orders above $150 to increase AOV (current average: $136.11). -- **Shipping Tier Optimization**: Focus on medium shipping charges ($5-6) that showed highest profit margins (35.47%). -- **Expected Impact**: Increase AOV by 5%, contributing +1% to overall monthly sales. - -## 4. Inventory and Product Mix Strategies - -### Product Mix Optimization -- **Promote High-Margin Products**: Identify and feature products with above-average profit margins. -- **Category Expansion**: Expand selection in categories showing highest units per order. -- **Expected Impact**: Improve overall profit margin while increasing sales, contributing +1% to overall monthly sales. - -### End-of-Month Sales Boost -- **Month-End Promotion**: Create special promotions for the last week of the month to address the observed decline in Weeks 4-5. -- **Inventory Clearance Strategy**: Strategic discounting of slow-moving inventory during the final week. -- **Expected Impact**: Reduce Week 4-5 decline by 50%, contributing +1% to overall monthly sales. - -## Implementation Timeline and Expected Results - -### Week 1: Foundation -- Set up technical infrastructure for all promotions -- Prepare email templates and marketing materials -- Configure discount rules and shipping tiers - -### Week 2: Launch -- Implement Tuesday Power Day strategy -- Launch Units Per Order initiatives -- Begin Discount Strategy Refinement - -### Week 3: Expansion -- Roll out Thursday Rescue Plan -- Implement Weekend AOV Improvement tactics -- Launch Repeat Purchase Incentives - -### Week 4: Optimization -- Deploy End-of-Month Sales Boost -- Fine-tune all strategies based on early results -- Prepare for next month continuation - -### Expected Overall Impact -- Day-of-Week Optimization: +6.5% -- Customer Behavior Optimization: +3.0% -- Pricing and Promotion Optimization: +2.5% -- Inventory and Product Mix Strategies: +2.0% -- **Total Expected Sales Increase: +14.0%** - -This comprehensive approach exceeds the 10% sales increase target while maintaining or improving profit margins, providing a buffer for any strategies that may underperform expectations. diff --git a/docs/assets/openManus/weekend_comparison.png b/docs/assets/openManus/weekend_comparison.png deleted file mode 100644 index b3d84d263b30003f9414cfc8ccc1ab814ea6c5b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97141 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 Ay8r+H diff --git a/docs/assets/openManus/weekly_sales.png b/docs/assets/openManus/weekly_sales.png deleted file mode 100644 index 3209e44c666ee51804556eeccf872186925bb07c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99774 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 obpGcH)%E`@4S@gaPfeSHjqjM06~X;VxxrU1Ra - - - - -As a chart intelligence assistant, VMind can generate corresponding charts based on the natural language description entered by the user. It can also realize secondary filtering, aggregation, and sorting of data through the intelligent data aggregation module. - -Whether you need to display a time series line chart or a bar chart of different categories, VMind can quickly respond and help you select the chart type and generate the chart. With VMind, users can create both aesthetically pleasing and information-rich charts without in-depth chart design knowledge, greatly improving work efficiency. - -## Experience address: -- [Coze](https://www.coze.com/s/Zs8MNnSod/) -- [Discord](https://discord.gg/sajqrVSP): Join the Discord channel and @VMind Chart Master bot experience in chat. diff --git a/docs/assets/scenario/en/Data_Development.md b/docs/assets/scenario/en/Data_Development.md deleted file mode 100644 index 4c0820e6..00000000 --- a/docs/assets/scenario/en/Data_Development.md +++ /dev/null @@ -1,57 +0,0 @@ -# Data Development -In python Notebook scenarios such as data development, it is suitable to call VMind Open API to generate charts after SQL queries, and integrate intelligent visualization capabilities in Notebook with py-vchart rendering charts. - - - - - -## Sample Code -```python -''' -In the Notebook scene, VMind Open API can be called to generate charts after SQL queries, and combined with py-vchart for chart rendering -VMind supports chart generation based on large language models and rules -The chart generation process will not pass detailed data to the large language model, so you can eat it with confidence -''' - -import requests -import pandas as pd -from pyvchart import render_chart - -url = "" # VMind Open API url - -# Dataset queried: -print('SQL query result: ') -display(sales_data_df) - -sales_data_json =sales_data_df.to_json(orient="records", force_ascii=False) - -userPrompt = "Help me display sales of various products in different regions" # User's presentation intent - -print() -print('Display intent input: ') -print(userPrompt) -print() - -body = { -"data": sales_data_json, -"userPrompt": userPrompt, -"model": "doubao" # Use the doubao model -} - -# Call VMind Open API to generate chart -response = requests.post(url, headers=headers, json=body) - -chart = response.json().get('chart')[0] -spec = chart.get('spec') -chartType = chart.get('chartType') - -# print(spec) -print('Generated chart type: '+chartType) - -# Call py-vchart to render chart -render_chart(spec) -``` - -## Related Reading -- [VMind Open API](./Open_API) -- [py-vchart](https://visactor.io/vchart/guide/tutorial_docs/Cross-terminal_and_Developer_Ecology/python) diff --git a/docs/assets/scenario/en/Data_Video.md b/docs/assets/scenario/en/Data_Video.md deleted file mode 100644 index 949a455e..00000000 --- a/docs/assets/scenario/en/Data_Video.md +++ /dev/null @@ -1,14 +0,0 @@ -# Data Video Creation -Data video is a video format that displays and introduces data content through charts, animations, annotations, voiceovers, etc. It can make complex data more understandable and guide the audience to acquire useful information and insights. Data video is widely used in business presentations, news reports, educational training, and other fields. It is an efficient way of data presentation and is very popular among various short video platforms. - -The traditional data video production process requires the creator to draw the data into charts using professional visualization software after collecting the data, or use various chart libraries to code and draw charts and then export them as videos. In the era of short videos, everyone can be the creator of videos. However, non-professional video creators often lack the ability to visualize data into charts and then export them as videos, which greatly increases the threshold for data video production. - -Based on VMind and video editing tools, it is easy to create rich and colorful data videos. After generating animated charts using the VMind chart intelligent generation module, users can export them as videos or GIFs, import them into professional video editing software like imovie, premiere pro, and so on, to create a complete data video. - - - - - -By integrating VMind into video editing tools, the creation of data videos will also form a complete cycle. - - diff --git a/docs/assets/scenario/en/Document_Assistant.md b/docs/assets/scenario/en/Document_Assistant.md deleted file mode 100644 index 2632d786..00000000 --- a/docs/assets/scenario/en/Document_Assistant.md +++ /dev/null @@ -1,12 +0,0 @@ -# Document Assistant -When writing reports or documents, accurate and beautiful charts are indispensable. The Document Assistant built on VMind can help users quickly generate charts from selected data and insert them into documents. - - - - - - -In addition, VMind will also introduce an intelligent insight feature, which can intelligently identify insights in chart data and automatically add annotations to them. These annotations can directly display specific data values, provide additional explanations and contextual information, and help readers better understand the charts. - - - diff --git a/docs/assets/scenario/en/OpenManus_VMind.md b/docs/assets/scenario/en/OpenManus_VMind.md deleted file mode 100644 index fc8c75b9..00000000 --- a/docs/assets/scenario/en/OpenManus_VMind.md +++ /dev/null @@ -1,257 +0,0 @@ -# OpenManus X VMind: Quickly Build Your Data Analysis Assistant - -## Introduction to OpenManus - - -[OpenManus](https://github.com/FoundationAgents/OpenManus) is a concise and versatile Agent framework. Through the pluggable design of Tools and Prompts, it supports various tool invocation capabilities such as Computer Use, Browser Use, and Planning Use. - -In OpenManus, you can use the basic manus agent to try out various tasks and conduct interesting explorations. You can also use OpenManus as a platform to unleash your creativity. By writing unique tools and prompts, you can create a one - of - a - kind agent. - -**Raise your hand 🙋, so the question is, are there any examples?** - -**Hello, yes, examples are coming right up!** - -## DataAnalysis Agent - -### Data Analysis Tasks -Our lives are filled with a vast amount of data in various industries such as economy, tourism, the Internet, and retail. If you ask DeepSeek how much data we can generate in a day, DeepSeek will tell you: The International Data Corporation (IDC) predicts that the global annual data volume will reach **175ZB (zettabytes)** in 2025, which is equivalent to approximately **479EB (exabytes)** per day (1EB = 10^18 bytes). - -In such a large amount of data, data analysis, data presentation, and final data consumption have always been hot topics. How to use AI tools to assist in analysis or even let them do the analysis for you is the focus. The remarkable data analysis ability of Manus has left a deep impression on everyone. Turning to OpenManus, can OpenManus do what Manus can? - -**The answer is: No, but also yes.** - -Perhaps directly using OpenManus cannot achieve the same effect as Manus, because OpenManus is a very concise and versatile Agent framework, and its tool library does not have suitable data analysis tools yet. However, precisely because OpenManus is a very simple and versatile Agent framework, as long as you dare to add tools to the library, OpenManus will use them, ultimately achieving a 1 + 1 > 2 effect. - -So, we, [VisActor](https://www.visactor.com/) , in collaboration with the OpenManus team, integrated the open - source intelligent visualization solution VMind to add a DataAnalysis Agent to OpenManus. - -### Integration Method -Compared with the application ideas of general Agents in the data analysis scenario, we have made some minor changes, as follows: - - - - -General OpenManus uses general Python tools to generate various Python code tasks. In the data analysis scenario, this includes but is not limited to data processing, data reporting, and data visualization. - -Our change is to extract the data visualization part into a separate tool, making the application scenario of this tool more focused and in - depth. The functions of this tool include data visualization, data insight, and adding data insights to charts. For details, please refer to [ReadMe](https://github.com/FoundationAgents/OpenManus/blob/main/app/tool/chart_visualization/README.md): - - - -The original Python tool will then focus more on data processing/data reporting tasks. - -#### Python Tool Modification -Thanks to the existing manus architecture, adding a dedicated Python tool has become very smooth and simple. Observing the original Python tool, we can find that its structure is also very simple and clear, as follows: -- The name, description, and parameters directly correspond to the prompt parameters of the function call in the large language model. -- The execute function is the corresponding function executed when the current Python tool is called, and it will ultimately call the _run_code function to obtain the result. - -```python -class PythonExecute(BaseTool): - """A tool for executing Python code with timeout and safety restrictions.""" - - name: str = "python_execute" - description: str = "Executes Python code string. Note: Only print outputs are visible, function return values are not captured. Use print statements to see results." - parameters: dict = { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "The Python code to execute.", - }, - }, - "required": ["code"], - } - - def _run_code(self, code: str, result_dict: dict, safe_globals: dict) -> None - - - async def execute( - self, - code: str, - timeout: int = 5, - ) -> Dict: - """ - Executes the provided Python code with a timeout. - - Args: - code (str): The Python code to execute. - timeout (int): Execution timeout in seconds. - - Returns: - Dict: Contains 'output' with execution output or error message and 'success' status. - """ -``` - -What we do is very simple. We only need to inherit this function and modify the existing prompt to make it a tool suitable for data analysis. The result is as follows. We mainly clarify the following points through the prompt: - -- In the prompt, clarify that the main tasks are data analysis, data reporting, and other ordinary code writing tasks. -- Hope the large language model can provide dataset overview, details of each column in the dataset, basic data statistics, generate derived indicators, time - series comparison, outliers, key insights, etc. -- Guide the large language model to conduct multiple analyses based on existing analyses to form in - depth and meaningful analysis data. - -```python -from app.config import config -from app.tool.python_execute import PythonExecute - -class NormalPythonExecute(PythonExecute): - """A tool for executing Python code with timeout and safety restrictions.""" - - name: str = "python_execute" - description: str = """Execute Python code for in-depth data analysis / data report(task conclusion) / other normal task without direct visualization.""" - parameters: dict = { - "type": "object", - "properties": { - "code_type": { - "description": "code type, data process / data report / others", - "type": "string", - "default": "process", - "enum": ["process", "report", "others"], - }, - "code": { - "type": "string", - "description": """Python code to execute. -# Note -1. The code should generate a comprehensive text-based report containing dataset overview, column details, basic statistics, derived metrics, timeseries comparisons, outliers, and key insights. -2. Use print() for all outputs so the analysis (including sections like 'Dataset Overview' or 'Preprocessing Results') is clearly visible and save it also -3. Save any report / processed files / each analysis result in worksapce directory: {directory} -4. Data reports need to be content-rich, including your overall analysis process and corresponding data visualization. -5. You can invode this tool step-by-step to do data analysis from summary to in-depth with data report saved also""".format( - directory=config.workspace_root - ), - }, - }, - "required": ["code"], - } - - async def execute(self, code: str, code_type: str | None = None, timeout=5): - return await super().execute(code, timeout) -``` - -Through the above operations, we can obtain a tool proficient in using Python code for data analysis/data reporting by simply modifying the prompt. Adding it to the manus tool library completes your customized creation. - -#### Data Analysis Agent -After having our dedicated tool, it becomes even simpler to form our data analysis agent! - -**Step 1: Inherit ToolCallAgent** - -ToolCallAgent is a general agent that calls various tools. By inheriting it, we already have the ability to call tools to solve problems. - -```python -""" Inherit ToolCallAgent """ -class DataAnalysis(ToolCallAgent): - """ - A data analysis agent that uses planning to solve various data analysis tasks. - - This agent extends ToolCallAgent with a comprehensive set of tools and capabilities, - including Data Analysis, Chart Visualization, Data Report. - """ -``` - -**Step 2: Rewrite the prompt** - -Modify the system_prompt and next_step_prompt to inject the soul of the agent. - -```python -class DataAnalysis(ToolCallAgent): - """ - A data analysis agent that uses planning to solve various data analysis tasks. - - This agent extends ToolCallAgent with a comprehensive set of tools and capabilities, - including Data Analysis, Chart Visualization, Data Report. - """ - - name: str = "DataAnalysis" - description: str = "An analytical agent that utilizes multiple tools to solve diverse data analysis tasks" - - # Modify your own prompt - system_prompt: str = SYSTEM_PROMPT.format(directory=config.workspace_root) - next_step_prompt: str = NEXT_STEP_PROMPT -``` - -**Step 3: Inject Tools** - -The last step is to inject usable tools, and then we're done. - -```python -class DataAnalysis(ToolCallAgent): - """ - A data analysis agent that uses planning to solve various data analysis tasks. - - This agent extends ToolCallAgent with a comprehensive set of tools and capabilities, - including Data Analysis, Chart Visualization, Data Report. - """ - - name: str = "DataAnalysis" - description: str = "An analytical agent that utilizes multiple tools to solve diverse data analysis tasks" - - system_prompt: str = SYSTEM_PROMPT.format(directory=config.workspace_root) - next_step_prompt: str = NEXT_STEP_PROMPT - - max_observe: int = 15000 - max_steps: int = 20 - - # Inject usable tools - available_tools: ToolCollection = Field( - default_factory=lambda: ToolCollection( - NormalPythonExecute(), - VisualizationPrepare(), - DataVisualization(), - Terminate(), - ) - ) -``` -### Final Results -#### Manus - -So, what's the final result? Can it reach the level of Manus? Let's find out. We tried a classic analysis case on Manus: -- [Original case replay address](https://manus.im/share/c3onakN6Iajcm1Vt1xAVG7?replay=1) -- [Address of all generated products in the case](https://github.com/VisActor/VMind/tree/develop/docs/assets/openManus) - - - - -This is a typical data analysis scenario. Given monthly sales data, Manus was expected to provide a plan for a 10% sales increase in the next month. Manus completed this task very well, generating a detailed report and many data analysis results and data visualization results. - -#### OpenManus Running Results - -After adding VMind to OpenManus, the data analysis and chart generation capabilities of OpenManus have significantly improved on the basis of the original general architecture. It can generate multiple high - quality Markdown data analysis reports and rich and accurate data visualization results. - -**Task Decomposition** - -The agent will decompose the overall task into sub - tasks such as data processing, data analysis, data visualization, pattern recognition, strategy generation, and final report generation for execution. - - - -**Final Report** - -After all tasks are completed, we generated the final data report and multiple intermediate analysis result reports. The data report also contains links to the generated visualization results. - - - -**Visualization Results** - -The following is a partial display of data visualization results. It can generate interactive chart pages (rendered by VChart) with data annotations. - - - -## In Conclusion -### Summary - -Thanks to the concise and versatile design of OpenManus, adding a new tool or agent on its basis is a very simple task 🚀 Developers only need to focus on the specific implementation and input - output of their own tools, without spending a lot of energy on the agent framework, interaction, and communication with large language models. They can easily create their own agents! The DataAnalysis Agent is such an example. We only need to design the corresponding data analysis tools to have super - strong data analysis capabilities. Perhaps this is the feeling of standing on the shoulders of giants! - -### Next Steps - -This is just a small attempt. There are still many problems at present. In the future, we will continue to improve the scheduling ability of data analysis tools and integrate a more powerful VMind mcp service. Our goal is to build a full - process tool integrating data analysis, chart recommendation, automatic beautification, automatic layout, and automatic report generation. The products include charts, reports, posters, dashboards, and presentations. - -### Welcome to Communicate and Contribute - -Finally, we welcome everyone to participate in the open - source construction of OpenManus and VisActor in various ways, such as submitting issues, writing code, adding comments, and giving stars. These are all forms of support for open - source projects. - -OpenManus: https://github.com/FoundationAgents/OpenManus - -VMind: https://github.com/VisActor/VMind - -VisActor Feishu communication group: - - - -VisActor WeChat official account: - - \ No newline at end of file diff --git a/docs/assets/scenario/en/Open_API.md b/docs/assets/scenario/en/Open_API.md deleted file mode 100644 index fc0db826..00000000 --- a/docs/assets/scenario/en/Open_API.md +++ /dev/null @@ -1,165 +0,0 @@ -# VMind Open API -For some scenarios that are not suitable for accessing the front-end SDK (such as Python Notebook or backend scenarios) or that are inconvenient to apply for LLM service, we also provide Open API service, users can use VMind through HTTP requests to meet diverse chart visualization needs. - -## Open API request example: -```curl -curl --location 'VMind Open API service address' \ ---header 'api-key: service secret key' \ ---form 'data="[ -{ -\"Product Name\": \"Cola\", -\"region\": \"south\", -\"sales\": 2350 -}, -{ -\"Product Name\": \"Cola\", -\"region\": \"east\", -\"sales\": 1027 -}, -{ -\"Product Name\": \"Cola\", -\"region\": \"west\", -\"sales\": 1027 -} -]"' \ ---form 'model="doubao"' \ ---form 'userPrompt="Show me the sales of products in the north"' \ -``` - -Return Value: -```json -{ -"chart": [ -{ -"chartType": "BAR CHART", // Chart type -"spec": { // Generated VChart Spec -"type": "bar", -"xField": [ -"region", -"Product Name" -], -"yField": "sales", -"seriesField": "Product Name", -//...Omit more spec content -}, -"usage": { // LLM token consumption details -"completion_tokens": 19, -"prompt_tokens": 1109, -"total_tokens": 1128 -}, -"time": { // Chart animation duration -"totalTime": 2000, -"frameArr": [] -} -} -] -} -``` - -The VMind Open API currently supports multiple models for intelligent data aggregation and chart generation, as well as chart-advisor for rule-based chart recommendations. The specific supported models are as follows: -- doubao: Default value, corresponding to the doubao-pro-32k-240828 model (Pro model released on 240828) -- doubao-1.5-pro-32k: Corresponding to the Doubao 1.5 Pro model released on 250115 -- doubao-1.5-lite-32k: Corresponding to the Doubao 1.5 Lite model released on 250115 -- Others: For example, GPT series models and DeepSeek series models - -## Interface Description -### /generateChart -- Generate vchart spec for chart rendering according to the data and user's input natural language. -- If userPrompt and model are empty, the LLM will not be called, and the chart recommendation will only be based on the data to generate a series of chart spec, sorted by recommendation degree. -- If data is empty, a spec template without data will be generated, and the fillSpecWithData interface can be filled with data later. -- VMind ensures that only data field information (field names, field types) are passed to the LLM, and detailed data will not be passed to the LLM. -#### Invocation Method -POST -#### Parameter Description -- data -Description: The dataset used in the chart, with a JSON array structure. It can be empty. If data is empty, a spec template will be generated, and the fillSpecWithData interface can be used to fill in the data later. - -- userPrompt -Description: Optional, user's input in natural language, string type. It can specify chart type and field allocation, and further perform data aggregation, filtering, sorting. -Examples: -``` -Show me the sales of each product in different regions -Show the sales data of each product using a line chart -Top three products in terms of sales in the north -Which product sold the most -Sales status of products in different regions -Show the sales data of each product, with region as the x-axis and product type as the color -``` - -- model -Optional values: doubao | doubao-1.5-pro-32k | doubao-1.5-lite-32k -Description: Optional. Specifies the model type, defaults to the doubao model. Also supports GPT series and DeepSeek series models, available upon request. - -- mode -Optional value: "accuracyFirst" , "performanceFirst" -Description: Optional, chart generation mode, whether to prioritize performance or accuracy. AccuracyFirst will improve the accuracy of data aggregation and chart generation, but the generation speed will be affected. PerformanceFirst will improve the speed of chart generation and data aggregation, but accuracy may be affected. The default is performanceFirst - -- enableDataQuery -Optional value: true or false -Description: Optional, whether to enable intelligent data aggregation. After opening, it will support data aggregation, filtering, sorting, grouping, etc. in userPrompt, such as: -``` -Show me the sales of products in the north -Show the top 3 products sold in the south -Generate a line chart, aggregated by date -Show the top 5 products in terms of sales -``` -The default is true, enabling it will increase the interface response time. - -- chartTypeList -String array -Description: Optional, chart type list, used to restrict the chart types generated by the chart generation service. Only chart types in this list will be generated. If this parameter is not passed, all chart types will be generated by default. - -Optional values: - -``` -"Bar Chart" -"Line Chart" -"Pie Chart" -"Scatter Plot" -"Word Cloud" -"Rose Chart" -"Radar Chart" -"Sankey Chart" -"Funnel Chart" -"Dual Axis Chart" -"Waterfall Chart" -"Box Plot" -"Dynamic Bar Chart" -``` - -Example: -```json -[ -"Bar Chart", -"Line Chart", -"Pie Chart", -"Scatter Plot" -]//Only generate bar chart, line chart, pie chart, scatter plot -``` - -#### Return Value -- chart - -Description: Chart generation result, json array structure - -```typescript -type chartGenerationResult = { -chart:{ -chartType : string; //Chart type -spec: Spec; //The vchart spec corresponding to this chart type, which can be used for front-end rendering -score: number; //Chart recommendation score, the higher the score, the more suitable the current data is for displaying with this type of chart -chartSource: string //Chart source, chartAdvisor represents rule-based chart recommendation, does not call the LLM; if the LLM is called to complete the chart generation, it will be the corresponding model name -}[] -} -``` - -## Contact Information -If you are interested in VMind Open API integration, please join the Lark group to create topics, or follow our WeChat public account to join the WeChat group and contact the relevant personnel. - -- Lark: - - - -- WeChat Public Account (you can join the WeChat group and Lark group through the public account menu): - -![](http://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/visactor-site/blog/a39d9483e530417ba9a780f4d079c201.gif) diff --git a/docs/assets/scenario/en/Wordcloud_Cube.md b/docs/assets/scenario/en/Wordcloud_Cube.md deleted file mode 100644 index abeac622..00000000 --- a/docs/assets/scenario/en/Wordcloud_Cube.md +++ /dev/null @@ -1,26 +0,0 @@ -# Visual Narration - Word Cloud Cube -VisActor has been consistently dedicated to exploring the application of data visualization in narrative scenarios. VMind will also be combined with VChart narrative template to launch the intelligent narrative function. - -We have combined VMind with the Coze platform to launch the Word Cloud Cube robot. Users only need to upload the title and core words of the word cloud, and VMind will intelligently generate personalized word clouds of various themes for users. - - - - - -
- - - -Although VMind itself has the ability to automatically infer chart types based on data and intelligently generate species, constraints need to be added to the results under the scenario of Word Cloud Cube. The VMind node service has encapsulated the VMind component, only allowing VMind to choose and generate from our specified word cloud template. - - - -In the future, we will add a variety of theme templates, such as holidays, zodiacs, etc., to provide more possibilities and inspirations for users' creations. At the same time, we will also support the generation of GIF animations, allowing the word cloud to show a unique dynamic effect, giving it stronger visual impact and expressiveness. - -Of course, we will also break through the limitations of word clouds and upgrade the Word Cloud Cube to a "Card Cube" which can create with a wider range and more stunning effects. In the meantime, we will also promote the overall upgrade of VMind to make it more intelligent, achieve qualitative improvement in all aspects such as code generation, chart configuration, automatic beautification, story arrangement, and serve more developers through open source services. - -## Experience Link: -- [Coze](https://www.coze.cn/s/iY7WbPQ2/) - -## Related Reading -- [Full Bloom in One Thought, Coze Combined with VisActor Text to Picture Combat Summary](https://juejin.cn/post/7340307383505436712) diff --git a/docs/assets/scenario/menu.json b/docs/assets/scenario/menu.json deleted file mode 100644 index d5b25661..00000000 --- a/docs/assets/scenario/menu.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "menu": "scripts", - "children": [ - { - "path": "OpenManus_VMind", - "title": { - "zh": "OpenManus X VMind : 快速打造你的数据分析助手", - "en": "OpenManus X VMind: Quickly Build Your Data Analysis Assistant" - } - }, - { - "path": "Chart_Assistant", - "title": { - "zh": "图表助手", - "en": "Chart Assistant" - } - }, - { - "path": "Wordcloud_Cube", - "title": { - "zh": "可视化叙事-词云魔方", - "en": "Visual Narration: Word Cloud Cube" - } - }, - { - "path": "Data_Video", - "title": { - "zh": "数据视频创作", - "en": "Data video creation" - } - }, - { - "path": "Document_Assistant", - "title": { - "zh": "文档助手", - "en": "Document Assistant" - } - }, - { - "path": "Data_Development", - "title": { - "zh": "数据开发", - "en": "Data Development" - } - } - ] -} \ No newline at end of file diff --git a/docs/assets/scenario/zh/Chart_Assistant.md b/docs/assets/scenario/zh/Chart_Assistant.md deleted file mode 100644 index 67f1b564..00000000 --- a/docs/assets/scenario/zh/Chart_Assistant.md +++ /dev/null @@ -1,15 +0,0 @@ -# 图表智能助手 -VMind可以成为大语言模型的可视化代理(agent),负责处理图表生成、图表编辑等相关任务,从而打造出“图表智能助手”。这个助手既可以作为一个独立的机器人提供服务,也可以以Copilot形式接入其他产品。 - - - - - - -作为图表智能助手,VMind可以根据用户输入的自然语言描述,自动生成相应的图表。还可通过智能数据聚合模块实现数据的二次筛选、聚合、排序。 - -无论你需要展示的是时间序列的折线图,还是不同类别的柱状图,VMind都能迅速响应并帮助你选择图表类型及生成图表。有了VMind,用户无需深厚的图表设计知识,就可以制作出既美观又信息丰富的图表,极大地提高了工作效率。 - -## 体验地址: -- [Coze](https://www.coze.com/s/Zs8MNnSod/) -- [Discord](https://discord.gg/sajqrVSP): 加入Discord频道,在聊天中 @VMind Chart Master 机器人即可体验 diff --git a/docs/assets/scenario/zh/Data_Development.md b/docs/assets/scenario/zh/Data_Development.md deleted file mode 100644 index 9bd9b650..00000000 --- a/docs/assets/scenario/zh/Data_Development.md +++ /dev/null @@ -1,57 +0,0 @@ -# 数据开发 -在数据开发等python Notebook场景中,适合在SQL查询结束后,调用VMind Open API进行图表生成,配合py-vchart渲染图表,在Notebook中集成智能可视化能力。 - - - - - -## 示例代码 -```python -''' -在Notebook场景下,可在SQL查询后调用VMind Open API进行图表生成,并结合py-vchart进行图表渲染 -VMind支持基于大模型的图表生成和基于规则的图表生成 -图表生成过程不会将明细数据传给大模型,尽可放心食用 -''' - -import requests -import pandas as pd -from pyvchart import render_chart - -url = "" #VMind OPen API url - -# 查询出的数据集: -print('sql查询结果:') -display(sales_data_df) - -sales_data_json =sales_data_df.to_json(orient="records", force_ascii=False) - -userPrompt = "帮我展示不同区域各商品销售额" # 用户的展示意图 - -print() -print('输入展示意图:') -print(userPrompt) -print() - -body = { - "data": sales_data_json, - "userPrompt": userPrompt, - "model": "doubao" # 使用豆包模型 -} - -# 调用VMind open api进行图表生成 -response = requests.post(url, headers=headers, json=body) - -chart = response.json().get('chart')[0] -spec = chart.get('spec') -chartType = chart.get('chartType') - -# print(spec) -print('生成的图表类型: '+chartType) - -# 调用py-vchart渲染图表 -render_chart(spec) -``` - -## 相关阅读 -- [VMind Open API](./Open_API) -- [py-vchart](https://visactor.io/vchart/guide/tutorial_docs/Cross-terminal_and_Developer_Ecology/python) diff --git a/docs/assets/scenario/zh/Data_Video.md b/docs/assets/scenario/zh/Data_Video.md deleted file mode 100644 index f7b7333b..00000000 --- a/docs/assets/scenario/zh/Data_Video.md +++ /dev/null @@ -1,14 +0,0 @@ -# 数据视频创作 -数据视频是一种通过图表、动画、标注、旁白等方式展示和介绍数据内容的视频形式。它能将复杂的数据变得更加易懂,并引导观众获取有用的信息和见解。数据视频广泛应用于商业展示、新闻报道、教育培训等方面,是一种高效的数据展现方式,受到了各大短视频平台的喜爱。 - -传统的数据视频制作流程需要创作者在收集数据后,使用专业的可视化软件将数据绘制为图表;或使用各种图表库,通过编码绘制图表并导出为视频。在短视频时代,每个人都可能是视频的创作者。然而,非专业的视频创作者往往不具备将数据可视化为图表并导出为视频的能力,这大大提高了数据视频的制作门槛。 - -基于VMind 结合视频编辑工具,可以很容易制作丰富多彩的数据视频。使用VMind图表智能生成模块生成带动画的图表后,用户可以将其导出为视频或者GIF,导入到剪映、pr等专业的视频剪辑软件中,制作一个完整的数据视频。 - - - - - -将VMind集成到视频剪辑工具中,数据视频的创作也将形成完整的闭环。 - - diff --git a/docs/assets/scenario/zh/Document_Assistant.md b/docs/assets/scenario/zh/Document_Assistant.md deleted file mode 100644 index 7d35dd43..00000000 --- a/docs/assets/scenario/zh/Document_Assistant.md +++ /dev/null @@ -1,12 +0,0 @@ -# 文档助手 -在撰写报告或文档时,准确而美观的图表是必不可少的。基于VMind打造文档助手,能够帮助用户快速从选定的数据中生成图表,并插入到文档中。 - - - - - - -此外,VMind还将推出智能洞察功能,这个功能能够智能地识别图表数据中的洞察,并自动为其添加标注。这些标注可以直接展示具体的数据数值,同时提供额外的解释和上下文信息,帮助读者更好地理解图表。 - - - diff --git a/docs/assets/scenario/zh/OpenManus_VMind.md b/docs/assets/scenario/zh/OpenManus_VMind.md deleted file mode 100644 index 67736be8..00000000 --- a/docs/assets/scenario/zh/OpenManus_VMind.md +++ /dev/null @@ -1,249 +0,0 @@ -# OpenManus X VMind : 快速打造你的数据分析助手 -## OpenManus 简介 - - -[OpenManus](https://github.com/FoundationAgents/OpenManus) 是一个简洁通用的 Agent 框架,通过可插拔的 Tools 和 Prompt 组合设计,支持 Computer Use、Browser Use 和 Planning Use 等多种工具调用能力 -在OpenManus中,你可以使用基础的manus agent来尝试完成你的各种任务和有趣的探索,也可以以OpenManus为载体,挥洒你自己的创意,通过编写独特的tools和prompt,实现独一无二的agent - -**举手🙋,那么问题来了,有比如吗?** - -**你好,有的,🌰马上就端上来了!** - -## 🌰:DataAnalysis Agent - -### 数据分析任务 - -我们生活中充斥着大量的数据,经济、旅游、互联网、零售等各行各业,如果你去询问DeepSeek一天我们可以产生多少数据,DeepSeek会告诉你:国际数据公司(IDC)预测,2025 年全球年数据量将达 **175ZB(泽字节)**,相当于 **每天约 479EB(艾字节)**(1EB=10^18 字节) - -在如此繁多海量的数据中,进行数据分析,数据展示和最终数据消费一直以来是一个热门的话题,而如何使用AI工具辅助分析,甚至帮你分析更是焦点。Manus令人赞叹的数据分析能力给所有人都留下了深刻的印象,转过头看向OpenManus,Manus可以,OpenManus可以吗? - -**答案是:不可以,但也可以。** - -或许直接使用OpenManus无法达到Manus的效果,因为OpenMaus是个非常简洁通用的Agent框架,其工具库里还没有趁手的数据分析利器;但正因为OpenManus是个非常简单通用的Agent框架,你只要敢往工具库里加,OpenManus就敢用,最后达到1 + 1 > 2的效果。 - -于是我们 [VisActor](https://www.visactor.com/) 联合OpenManus团队,集成开源智能可视化解决方案 VMind ,为OpenManus 添加一个 DataAnalysis Agent。 - -### 接入方式 - -相比于通用的Agent对于数据分析场景的应用思路,我们做了一些些微小的改动,具体如下: - - - - - -通用的OpenManus,会使用通用的python工具去实现各种各样,各种各类的pyhton代码生成任务,在数据分析场景,包括且不限于:数据处理、数据报告、数据可视化等; -而我们的改动在于,将数据可视化这一部分提取成了一个单独的tool,使得这个工具对应的使用场景更加聚焦和深入,这个tool的功能包括:数据可视化、数据洞察以及将数据洞察添加到图表中三个功能,详细可见[ReadMe](https://github.com/FoundationAgents/OpenManus/blob/main/app/tool/chart_visualization/README_zh.md): - - - -而原本的python tool将会更加专注在数据处理/数据报告的任务上。 -#### Python Tool改造 -得益于已有的manus架构,新增一个专属python tool变的十分的丝滑和简单,观察原有的python tool,可以发现其结构也十分简单清晰,具体如下: -- name/description/parameters直接对应了大模型中function call的prompt参数。 -- execute是当前python tool被调用时执行的对应函数,而执行中最终会调用_run_code函数得到结果 - -```python -class PythonExecute(BaseTool): - """A tool for executing Python code with timeout and safety restrictions.""" - - name: str = "python_execute" - description: str = "Executes Python code string. Note: Only print outputs are visible, function return values are not captured. Use print statements to see results." - parameters: dict = { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "The Python code to execute.", - }, - }, - "required": ["code"], - } - - def _run_code(self, code: str, result_dict: dict, safe_globals: dict) -> None - - - async def execute( - self, - code: str, - timeout: int = 5, - ) -> Dict: - """ - Executes the provided Python code with a timeout. - - Args: - code (str): The Python code to execute. - timeout (int): Execution timeout in seconds. - - Returns: - Dict: Contains 'output' with execution output or error message and 'success' status. - """ -``` -而我们做事情非常简单,我们只需要继承这个函数,改一下已有的prompt,将其引导成适合做数据分析的工具就可以了!结果如下所示,主要通过prompt明确以下几个内容 -- 在prompt中明确任务主要为:数据分析,数据报告和其他普通的代码编写任务 -- 希望大模型可以提供:数据集总览,数据集各列详情,基础的数据统计信息,生成派生指标,时序对比,异常值,关键洞察等 -- 引导大模型可以根据已有的分析多次分析,形成深入有意义的分析数据 - -```python -from app.config import config -from app.tool.python_execute import PythonExecute - -class NormalPythonExecute(PythonExecute): - """A tool for executing Python code with timeout and safety restrictions.""" - - name: str = "python_execute" - description: str = """Execute Python code for in-depth data analysis / data report(task conclusion) / other normal task without direct visualization.""" - parameters: dict = { - "type": "object", - "properties": { - "code_type": { - "description": "code type, data process / data report / others", - "type": "string", - "default": "process", - "enum": ["process", "report", "others"], - }, - "code": { - "type": "string", - "description": """Python code to execute. -# Note -1. The code should generate a comprehensive text-based report containing dataset overview, column details, basic statistics, derived metrics, timeseries comparisons, outliers, and key insights. -2. Use print() for all outputs so the analysis (including sections like 'Dataset Overview' or 'Preprocessing Results') is clearly visible and save it also -3. Save any report / processed files / each analysis result in worksapce directory: {directory} -4. Data reports need to be content-rich, including your overall analysis process and corresponding data visualization. -5. You can invode this tool step-by-step to do data analysis from summary to in-depth with data report saved also""".format( - directory=config.workspace_root - ), - }, - }, - "required": ["code"], - } - - async def execute(self, code: str, code_type: str | None = None, timeout=5): - return await super().execute(code, timeout) -``` - -通过以上操作,我们通过简单的prompt修改,就可以得到一个精通python代码进行数据分析/数据报告的工具,将其加入到manus的使用工具库中,就完成了你的专属打造。 - -#### 数据分析Agent - -在有了我们的专属Tool之后,形成我们的数据分析Agent就更加简单了! - -**第一步:继承ToolCallAgent** - -ToolCallAgent是一个调用各种tool的通用agent,我们继承它就已经拥有了调用tool解决问题的能力 -```python -""" 继承ToolCallAgent """ -class DataAnalysis(ToolCallAgent): - """ - A data analysis agent that uses planning to solve various data analysis tasks. - - This agent extends ToolCallAgent with a comprehensive set of tools and capabilities, - including Data Analysis, Chart Visualization, Data Report. - """ -``` - -**第二步:改写prompt** - -修改system_prompt和next_step_prompt,注入agent的灵魂 -```python -class DataAnalysis(ToolCallAgent): - """ - A data analysis agent that uses planning to solve various data analysis tasks. - - This agent extends ToolCallAgent with a comprehensive set of tools and capabilities, - including Data Analysis, Chart Visualization, Data Report. - """ - - name: str = "DataAnalysis" - description: str = "An analytical agent that utilizes multiple tools to solve diverse data analysis tasks" - - # 修改你自己的prompt - system_prompt: str = SYSTEM_PROMPT.format(directory=config.workspace_root) - next_step_prompt: str = NEXT_STEP_PROMPT -``` - -**第三步:Tool注入** - -最后一步,注入可使用的Tool,就大功告成 -```python -class DataAnalysis(ToolCallAgent): - """ - A data analysis agent that uses planning to solve various data analysis tasks. - - This agent extends ToolCallAgent with a comprehensive set of tools and capabilities, - including Data Analysis, Chart Visualization, Data Report. - """ - - name: str = "DataAnalysis" - description: str = "An analytical agent that utilizes multiple tools to solve diverse data analysis tasks" - - system_prompt: str = SYSTEM_PROMPT.format(directory=config.workspace_root) - next_step_prompt: str = NEXT_STEP_PROMPT - - max_observe: int = 15000 - max_steps: int = 20 - - # 注入可使用的tools - available_tools: ToolCollection = Field( - default_factory=lambda: ToolCollection( - NormalPythonExecute(), - VisualizationPrepare(), - DataVisualization(), - Terminate(), - ) - ) -``` -### 最终效果 -#### Manus -那么最终效果如何呢,是否能够企及Manus的高度呢?让我们一试便知; -我们尝试Manus上的一个经典分析案例: -- [原始案例回放地址](https://manus.im/share/c3onakN6Iajcm1Vt1xAVG7?replay=1) -- [案例中所有生成产物地址](https://github.com/VisActor/VMind/tree/develop/docs/assets/openManus) - - - - -这是一个典型的数据分析场景,给Manus一个月度的销售数据,期望给出下个月10%销售增长的计划;Manus很好的完成了这个任务,生成了一个详细的报告,并且产生了很多数据分析的数据结果和数据可视化结果。 - -#### OpenManus 运行结果 -在OpenManus上加入VMind之后,OpenManus的数据分析能力和图表生成能力在原有的通用架构基础上有了显著的提升,可以生成多个高质量的markdown数据分析报告和丰富准确的数据可视化结果。 - -**任务拆解** - -Agent会将整体任务拆分成:数据处理、数据分析,数据可视化,模式识别,策略生成和最终报告生成这几个子任务进行执行 - - - -**最终报告** - -在所有任务完成之后,我们产生了最终的数据报告和多个中间分析结果的报告,数据报告中同样包含生成的可视化结果链接 - - - - -**可视化结果** - -以下是部分数据可视化结果展示,可以生成可交互式的图表页面(VChart渲染)并且带有数据标注 - - - -## 写在最后 -### 总结 -得益于OpenManus简洁通用的设计,在其基础上新增Tool或者Agent是一件相当简单的事情🚀 -开发者只要关注自己工具的具体实现和输入输出,而不用花大量精力在Agent的框架,交互以及与大模型的通信上,轻松打造属于自己的Agent! -DataAnalysis Agent就是这样的一个例子,我们只需设计对应的数据分析工具,就能拥有超强的数据分析能力,或许,这就是站在巨人肩膀上的感觉吧! -### 下一步 -这只是我们一个小小的尝试,目前还有很多问题,后续我们会继续完善 数据分析工具的调度能力,以及集成更强大的 VMind mcp 服务。我们的目标是打造一个集数据分析、图表推荐、自动美化、自动布局、自动报告生成的全流程工具。 产物包括图表、报告、海报、看板以及演示文稿。 -### 欢迎交流与共建 -最后,欢迎大家以各种方式参与 OpenManus 和 VisActor 的开源建设,提 issue,写代码,加评论,点 Star,都是对开源项目的支持。 - -OpenManus:https://github.com/FoundationAgents/OpenManus - -VMind:https://github.com/VisActor/VMind - - -VisActor 飞书交流群: - - -VisActor 微信公众号: - - diff --git a/docs/assets/scenario/zh/Open_API.md b/docs/assets/scenario/zh/Open_API.md deleted file mode 100644 index 143322b3..00000000 --- a/docs/assets/scenario/zh/Open_API.md +++ /dev/null @@ -1,165 +0,0 @@ -# VMind Open API -对于某些不适合接入前端SDK(例如Python Notebook或后端场景)或者不方便申请LLM服务的场景,我们还提供了Open API服务,用户可以通过HTTP请求的形式使用VMind,满足多样化的图表可视化需求。 - -## Open API请求示例: -```curl -curl --location 'VMind Open API服务地址' \ ---header 'api-key: 服务密钥' \ ---form 'data="[ - { - \"商品名称\": \"可乐\", - \"region\": \"south\", - \"销售额\": 2350 - }, - { - \"商品名称\": \"可乐\", - \"region\": \"east\", - \"销售额\": 1027 - }, - { - \"商品名称\": \"可乐\", - \"region\": \"west\", - \"销售额\": 1027 - } -]"' \ ---form 'model="doubao"' \ ---form 'userPrompt="帮我展示北方各商品销售额"' \ -``` - -返回值: -```json -{ - "chart": [ - { - "chartType": "BAR CHART", //图表类型 - "spec": { //生成的VChart Spec - "type": "bar", - "xField": [ - "region", - "商品名称" - ], - "yField": "销售额", - "seriesField": "商品名称", - //...省略更多spec内容 - }, - "usage": { //LLM token消耗明细 - "completion_tokens": 19, - "prompt_tokens": 1109, - "total_tokens": 1128 - }, - "time": { //图表动画时长 - "totalTime": 2000, - "frameArr": [] - } - } - ] -} -``` - -VMind Open API目前支持多种模型进行智能数据聚合和图表生成,以及chart-advisor完成基于规则的图表推荐,具体支持模型如下所示: -- doubao: 默认值,对应doubao-pro-32k-240828模型,即240828发布的pro模型 -- doubao-1.5-pro-32k: 对应250115发布的豆包1.5pro模型 -- doubao-1.5-lite-32k: 对应250115发布的豆包1.5lite模型 -- 其他:例如gpt系列模型和deepseek系列模型 - -## 接口说明 -### /generateChart -- 根据数据和用户输入的自然语言,生成vchart spec用于图表渲染。 -- 若userPrompt和model为空,则不调用大模型,仅根据数据完成图表推荐,生成一系列图表spec,根据推荐程度排序。 -- 若data为空,则生成不包含数据的spec模板,后期可调用fillSpecWithData接口填充数据。 -- VMind确保仅将数据字段信息(字段名称、字段类型)传递给大模型,明细数据不会传递给大模型。 -#### 调用方法 -POST -#### 参数说明 -- data -说明:图表中使用的数据集,json 数组结构。可以为空。data为空则生成spec模板,后期可调用fillSpecWithData接口填充数据。 - -- userPrompt -说明:可选,用户输入的自然语言,字符串类型。可指定图表类型和字段分配,可进一步进行数据聚合、筛选、排序。 -示例: -``` -帮我展示不同区域各商品销售额 -展示各商品销售数据,使用折线图 -北方销售额前三的商品 -哪种商品卖的最多 -不同地区商品销售状况 -展示各商品销售数据,地区做x轴,商品类型做颜色 -``` - -- model -可选值:doubao | doubao-1.5-pro-32k | doubao-1.5-lite-32k -说明:可选,模型类型,默认支持doubao模型;同时也支持gpt系列和deepseek系列,可以按需提供 - -- mode -可选值:"accuracyFirst" , "performanceFirst" -说明:可选,图表生成模式,性能优先还是准确性优先。accuracyFirst会导致数据聚合和图表生成准确性提高,但生成速度将会受影响。performanceFirst会提高图表生成和数据聚合的速度,但准确性可能会受影响。默认为performanceFirst - -- enableDataQuery -可选值:true或false -说明:可选,是否开启智能数据聚合。开启后将支持userPrompt中的数据聚合、筛选、排序、分组等指令,例如: -``` -帮我展示北方各商品销售额 -展示南方卖的最多的3种商品 -生成折线图,按照日期聚合 -展示销量前5名的商品 -``` -默认为true,开启后会增加接口响应时间。 - -- chartTypeList -字符串数组 -说明:可选,图表类型列表,用于限制图表生成服务生成的图表类型。仅会生成该列表中的图表类型。不传该参数则默认生成所有图表类型。 - -可选值: - -``` -"Bar Chart" -"Line Chart" -"Pie Chart" -"Scatter Plot" -"Word Cloud" -"Rose Chart" -"Radar Chart" -"Sankey Chart" -"Funnel Chart" -"Dual Axis Chart" -"Waterfall Chart" -"Box Plot" -"Dynamic Bar Chart" -``` - -示例: -```json -[ -"Bar Chart", -"Line Chart", -"Pie Chart", -"Scatter Plot" -]//仅生成柱状图、折线图、饼图、散点图 -``` - -#### 返回值 -- chart - -说明:图表生成结果,json数组结构 - -```typescript -type chartGenerationResult = { -chart:{ - chartType : string; //图表类型 - spec: Spec; //该图表类型对应的vchart spec,可用于前端渲染 - score: number; //图表推荐得分,分数越高代表当前数据越适合用这种图表展示 - chartSource: string //图表来源,chartAdvisor表示基于规则的图表推荐,不调用大模型;若调用大模型完成了图表生成,则为对应的模型名 - }[] -} -``` - -## 联系方式 -若有VMind Open API接入意向,欢迎加入飞书群创建话题,或关注微信公众号,加入微信群联系相关人员。 - -- 飞书: - - - -- 微信公众号(通过公众号菜单可以加入微信群和飞书群): - -![](http://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/visactor-site/blog/a39d9483e530417ba9a780f4d079c201.gif) diff --git a/docs/assets/scenario/zh/Wordcloud_Cube.md b/docs/assets/scenario/zh/Wordcloud_Cube.md deleted file mode 100644 index 412bae55..00000000 --- a/docs/assets/scenario/zh/Wordcloud_Cube.md +++ /dev/null @@ -1,26 +0,0 @@ -# 可视化叙事-词云魔方 -VisActor一直致力于探究数据可视化在叙事场景中的应用,VMind也将与VChart叙事模板相结合,推出智能叙事功能。 - -我们将VMind与Coze平台结合,推出了词云魔方机器人。用户只需要上传词云的标题和核心词,VMind便能智能地为用户生成各种主题的个性化词云。 - - - - - -
- - - -VMind 本身具备根据数据自动推断图表类型,并智能生成spec 的能力,但是在词云魔方场景下,需要对结果进行约束。VMind node 服务对VMind 组件进行了一层封装,只允许VMind 在我们规定的词云模版中进行选择生成。 - - - -未来我们将添加各种各样的主题模板,如节日、生肖等,给用户的创作提供更多可能和灵感。同时,我们还将支持生成GIF动图,让词云展现出独特的动态效果,使其具有更强的视觉冲击力和表达力。 - -当然,我们也会突破词云的限制,将词云魔方升级成为“卡片魔方”,可以生成使用范围更广,效果更惊艳的作品。同时也借此,整体推动VMind的升级,使其更加智能化,在代码生成,图表配置,自动美化,故事编排等各个方面都能有质的提升,并通过开源服务更多的开发者。 - -## 体验地址: -- [Coze](https://www.coze.cn/s/iY7WbPQ2/) - -## 相关阅读 -- [一念生花,Coze 结合VisActor 文生图实战总结](https://juejin.cn/post/7340307383505436712) diff --git a/docs/debugging.md b/docs/debugging.md new file mode 100644 index 00000000..fd9dee4e --- /dev/null +++ b/docs/debugging.md @@ -0,0 +1,73 @@ +# Debug Skills + +## Recommended: Codex or Claude Code + +Use your existing coding agent for everyday development and debugging. It provides the model, tool execution and conversation management; this repository supplies the Skill. Codex and Claude Code are the documented host targets. Other compatible agents may work, but do not have dedicated setup instructions or compatibility guarantees here. + +Both hosts load complete Skill directories. Codex uses `.agents/skills/` in a project; Claude Code uses `.claude/skills/`. See the [official Codex instructions](https://learn.chatgpt.com/docs/build-skills) and [Claude Code instructions](https://code.claude.com/docs/en/skills). + +The following local setup uses a fresh directory so it does not overwrite an existing Skill installation. Start in this repository's root, with your chosen agent installed and authenticated: + +```bash +debug_workspace="$(mktemp -d)" +mkdir -p "$debug_workspace/inputs" "$debug_workspace/outputs" +cp evals/cases/vchart-development-assistant/inputs/sales.csv "$debug_workspace/inputs/" +``` + +Choose one host. For **Codex**: + +```bash +mkdir -p "$debug_workspace/.agents/skills" +cp -R skills/vchart-development-assistant skills/vtable-development-assistant "$debug_workspace/.agents/skills/" +cd "$debug_workspace" +codex +``` + +For **Claude Code**, instead run this from the repository root after the shared setup: + +```bash +mkdir -p "$debug_workspace/.claude/skills" +cp -R skills/vchart-development-assistant skills/vtable-development-assistant "$debug_workspace/.claude/skills/" +cd "$debug_workspace" +claude +``` + +You can also open that workspace in the corresponding app. The scripts need Python 3.9+, and generated HTML needs a browser and public CDN access. The API harness, uv environment and its model configuration are not required for this path. + +In Codex CLI, send: + +```text +$vchart-development-assistant Use every row in inputs/sales.csv to build a grouped bar chart comparing sales by region and quarter. Write editable source and runnable HTML under outputs/. +``` + +In Claude Code, send the same request with `/vchart-development-assistant` instead of `$vchart-development-assistant`. For a table, select `vtable-development-assistant` and ask for a sortable detail table. Inspect the generated source and HTML, then continue the conversation with changes or errors to investigate. + +After editing this repository's Skill, refresh the installed copy before retesting (or create another fresh workspace with these steps). Record the host/model, prompt, inputs and observed result when reporting a problem. Logs and tool access in this route are managed by the host; they do not automatically appear in `evals/runs/`. + +Historical generation/browser runs in this migration used Codex. Claude Code's setup above follows its documented Skill interface; a real Claude Code generation run has not yet been recorded for this migration. + +## Alternative: a simple model API harness + +Use this when you have an API endpoint or want repeatable runs on selected cases. It loads one Skill and provides the bounded tools needed for these tasks. It does not provide an interactive coding-agent application. Only OpenAI-compatible Chat Completions with tool calling and token usage is supported; native protocols are outside the current scope. + +Follow [API setup](../evals/README.md#contributor-quickstart) to configure your endpoint, model and key environment variable. Run a built-in case with: + +```bash +uv run python evals/scripts/run.py --case vchart-grouped --browser +``` + +Or supply a task without editing the case catalogue: + +```bash +uv run python evals/scripts/run.py \ + --skill vchart-development-assistant \ + --prompt-file evals/examples/chart-prompt.md \ + --input evals/cases/vchart-development-assistant/inputs/sales.csv \ + --browser --html demo.html +``` + +Use `--skill vtable-development-assistant` for tables. Replace the prompt/data paths with your own files. Relative paths are resolved from your shell's current directory. Each `--input` is copied into `inputs/`; repeat the flag for multiple files with distinct basenames. Inputs are optional for explanatory tasks. All generated artifacts go to the run workspace's `outputs/`. + +`--html` names an output HTML path relative to `outputs/`; the runner includes it in the task instructions and checks that it exists. With `--browser`, this path is required and rendering checks/screenshots run after generation. Omit both flags for text answers or tasks you will inspect yourself. Custom runs check process completion and a nonempty final answer, plus any explicitly requested HTML/browser checks; they do not invent case-specific semantic or data assertions. Success remains `needs-review`. + +Each invocation creates `evals/runs//custom/` with the same prompt, Skill snapshot, input hashes, API request/response/tool logs, usage, outputs and report format as fixed cases. The original prompt and input files are not edited. Runs are independent; for conversational debugging, use Codex or Claude Code. diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index a46c95e1..00000000 --- a/docs/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - Documents Site - - - - - - - -
- - - diff --git a/docs/index.js b/docs/index.js deleted file mode 100644 index afe19eaa..00000000 --- a/docs/index.js +++ /dev/null @@ -1,155 +0,0 @@ -/** - * Usage: - * example command: node ./download-documents.js path=./examples token=1e7a4c5b-893e-580f-96f2-29e62d5de99c routeId=186 - * arguments: - * path: target directory to store documents - * token: cms site token - * routeId: top route id for cms site - * - * target directory structure: - * entry: - * zh: xx.md / dir - * en: xx.md / dir - */ - -const fs = require('fs'); -const path = require('path'); -const fetch = require('node-fetch-commonjs'); - -// configs -const languages = ['zh', 'en']; -const ignores = ['README.md', 'readme.md']; - -// CMS Domain - -const CMSDomain = 'https://cms-cn.zijieapi.com'; -// arguments -const arguments = process.argv.slice(2); - -let targetDirectory = path.resolve(__dirname); -let token = ''; -let routeId = -1; -for (const argument of arguments) { - if (argument.startsWith('path=')) { - targetDirectory = argument.split('path=')[1]; - } else if (argument.startsWith('token=')) { - token = argument.split('token=')[1]; - } else if (argument.startsWith('routeId=')) { - routeId = argument.split('routeId=')[1]; - } -} -if (token === '') { - console.error('Invalid parameters! Please refer to the cms config in the scripts.'); -} -targetDirectory = path.resolve(targetDirectory); -const targetEntry = targetDirectory.split('/')[targetDirectory.split('/').length - 1]; - -async function fetchCMSData(token, url, plain) { - const response = await fetch(`${CMSDomain}${url}`, { - method: 'GET', - mode: 'cors', - cache: 'default', - headers: { - // 'Access-Control-Allow-Origin': '*', - 'Content-Type': 'application/json', - Authorization: token - } - }); - const json = await response.json(); - const data = plain ? json : json?.data; - return data; -} - -async function fetchRoutes(routeId, token) { - if (routeId === -1) { - const routeData = await fetchCMSData(token, `/api/open/site`, false); - return routeData.routes; - } - const routeData = await fetchCMSData(token, `/api/open/site/top/${routeId}`, false); - return routeData[0].children; -} - -async function generateRouteData(route, parentMenuItem, rootDirectory, directory, token) { - // not downloading any readme file - if (route.path.indexOf('README') >= 0) { - return; - } - if (route.children) { - for (const language of languages) { - const targetPath = path.join(rootDirectory, language, directory, route.path); - // create directory - if (!fs.existsSync(targetPath)) { - fs.mkdirSync(targetPath); - } - } - const menuItem = { - path: route.path, - title: { - zh: route.name['1'], - en: route.name['2'] - }, - children: [] - }; - parentMenuItem.children.push(menuItem); - for (const subRoute of route.children) { - await generateRouteData(subRoute, menuItem, rootDirectory, path.join(directory, route.path), token); - } - } else { - const menuItem = { - path: route.path, - title: {} - }; - parentMenuItem.children.push(menuItem); - for (const language of languages) { - const languageIndex = languages.indexOf(language) + 1; - const document = await fetchCMSData( - token, - `/api/open/document?fullPath=${route.fullPath}&language=${languageIndex}`, - false - ); - const content = document[0].content; - if (!content || content === '') { - console.log(`Empty document: ${route.fullPath}`); - return; - } - const meta = JSON.parse(document[0].meta); - menuItem.title[language] = meta.title; - const targetPath = path.resolve(rootDirectory, language, directory, `${route.path}.md`); - fs.writeFileSync(targetPath, content, { encoding: 'utf8' }); - } - console.log(`Generate document: ${route.fullPath}`); - } -} - -// token = tokenEnum.vtableGuide; -// // routeId = vchartExampleRouteId; -// targetDirectory = './tutorials'; - -async function run() { - const routes = await fetchRoutes(routeId, token); - - const menu = { - menu: targetEntry, - children: [] - }; - const targetFullPath = path.resolve(targetDirectory); - if (!fs.existsSync(targetFullPath)) { - fs.mkdirSync(targetFullPath); - } - for (const language of languages) { - const languageFullPath = path.join(targetDirectory, language); - if (!fs.existsSync(languageFullPath)) { - fs.mkdirSync(languageFullPath); - } - } - for (const route of routes) { - await generateRouteData(route, menu, targetFullPath, '', token); - } - const menuResult = JSON.stringify(menu, null, 2); - const menuPath = path.join(targetDirectory, 'menu.json'); - fs.writeFileSync(menuPath, menuResult, { encoding: 'utf8' }); - - console.log('Successfully download all documents!'); -} - -run(); diff --git a/docs/libs/template-parse/build.js b/docs/libs/template-parse/build.js deleted file mode 100644 index cac280f9..00000000 --- a/docs/libs/template-parse/build.js +++ /dev/null @@ -1,188 +0,0 @@ -/* Adapted from echarts-doc by Apache ECharts - * https://github.com/apache/echarts-doc - * Licensed under the Apache-2.0 license - - * url: https://github.com/apache/echarts-doc/blob/master/build.js - * License: https://github.com/apache/echarts-doc/blob/master/LICENSE - * @license - */ - -const md2json = require('./md2json'); -const { extractDesc } = require('./schemaHelper'); -const fs = require('fs'); -const fse = require('fs-extra'); -const chalk = require('chalk'); -const argv = require('yargs').argv; -const path = require('path'); -const assert = require('assert'); -const chokidar = require('chokidar'); -const { debounce } = require('lodash'); -const menu = require('../../menu.json'); - -function initEnv() { - let envType = argv.env; - let isDev = argv.dev != null || argv.debug != null || argv.env === 'dev'; - - if (isDev) { - console.warn('============================='); - console.warn('!!! THIS IS IN DEV MODE !!!'); - console.warn('============================='); - envType = 'dev'; - } - - if (!envType) { - throw new Error('--env MUST be specified'); - } - - let config = { - releaseDestDir: path.resolve(__dirname, '../../public/documents') - }; - - config.envType = envType; - - return config; -} - -const config = initEnv(); - -const languages = ['zh', 'en']; - -config.gl = config.gl || {}; -for (let key in config) { - if (key !== 'gl' && !config.gl.hasOwnProperty(key)) { - config.gl[key] = config[key]; - } -} - -async function md2jsonAsync(opt) { - var newOpt = Object.assign( - { - path: path.resolve(__dirname, opt.assetPath, opt.language, '**/*.md'), - tplEnv: Object.assign({}, config), - imageRoot: config.imagePath - }, - opt - ); - - function run(cb) { - md2json(newOpt) - .then(schema => { - writeSingleSchemaPartioned(schema, opt.language, opt.entry, false, opt.arrayKeys); - console.log(chalk.green('generated: ' + opt.language + '/' + opt.entry)); - cb && cb(); - }) - .catch(e => { - console.log(e); - }); - } - - var runDebounced = debounce(run, 500, { - leading: false, - trailing: true - }); - return await new Promise((resolve, reject) => { - run(resolve); - - if (argv.watch) { - chokidar - .watch(path.resolve(__dirname, opt.assetPath, opt.language), { - ignoreInitial: true - }) - .on('all', (event, path) => { - console.log(path, event); - runDebounced(); - }); - } - }); -} - -async function run() { - for (const menuItem of menu) { - if (menuItem.type !== 'markdown-template') { - continue; - } - for (const language of languages) { - await md2jsonAsync({ - sectionsAnyOf: menuItem.sections ?? [], - arrayKeys: menuItem.arrayKeys ?? [], - entry: menuItem.entry, - assetPath: `../../assets/${menuItem.menu}/`, - language - }); - } - } - - console.log('Build doc done.'); - - console.log('All done.'); -} - -function writeSingleSchemaPartioned(schema, language, docName, format, arrayItemKeys) { - const { outline, descriptions } = extractDesc(schema, docName, arrayItemKeys); - - const outlineBasename = `outline.json`; - const outlineDestPath = path.resolve(config.releaseDestDir, `${docName}/${language}/${outlineBasename}`); - fse.ensureDirSync(path.dirname(outlineDestPath)); - fse.outputFileSync(outlineDestPath, format ? JSON.stringify(outline, null, 2) : JSON.stringify(outline), 'utf-8'); - - function copyUIControlConfigs(source, target) { - for (let key in source) { - if (target[key]) { - if (source[key].uiControl && !target[key].uiControl) { - target[key].uiControl = source[key].uiControl; - } - if (source[key].exampleBaseOptions && !target[key].exampleBaseOptions) { - target[key].exampleBaseOptions = source[key].exampleBaseOptions; - } - } else { - // console.error(`Unmatched option path ${key}`); - } - } - } - - function readOptionDesc(language, partKey) { - const descBasename = `${partKey}.json`; - const descDestPath = path.resolve(config.releaseDestDir, `${docName}/${language}/${descBasename}`); - try { - const text = fs.readFileSync(descDestPath, 'utf-8'); - return JSON.parse(text); - } catch (e) { - return; - } - } - - function writeOptionDesc(language, partKey, json) { - const descBasename = `${partKey}.json`; - const descDestPath = path.resolve(config.releaseDestDir, `${docName}/${language}/${descBasename}`); - fse.ensureDirSync(path.dirname(descDestPath)); - fse.outputFileSync(descDestPath, format ? JSON.stringify(json, null, 2) : JSON.stringify(json), 'utf-8'); - } - - for (let partKey in descriptions) { - let partDescriptions = descriptions[partKey]; - - // Copy ui control config from zh to english. - if (language === 'zh') { - languages.forEach(function (otherLang) { - if (otherLang === 'zh') { - return; - } - const json = readOptionDesc(otherLang, partKey); - if (json) { - copyUIControlConfigs(partDescriptions, json); - writeOptionDesc(otherLang, partKey, json); - } - }); - } else { - const json = readOptionDesc('zh', partKey); - if (json) { - copyUIControlConfigs(json, partDescriptions); - } - } - - writeOptionDesc(language, partKey, partDescriptions); - // console.log(chalk.green('generated: ' + descDestPath)); - } -} - -run(); diff --git a/docs/libs/template-parse/etpl.js b/docs/libs/template-parse/etpl.js deleted file mode 100644 index 62baa8c9..00000000 --- a/docs/libs/template-parse/etpl.js +++ /dev/null @@ -1,1679 +0,0 @@ -/* Adapted from echarts-doc by Apache ECharts - * https://github.com/apache/echarts-doc - * Licensed under the Apache-2.0 license - - * url: https://github.com/apache/echarts-doc/blob/master/dep/etpl.js - * License: https://github.com/apache/echarts-doc/blob/master/LICENSE - * @license - */ - -/** - * ETPL (Enterprise Template) - * Copyright 2013 Baidu Inc. All rights reserved. - * - * @file 模板引擎 - * @author errorrik(errorrik@gmail.com) - * otakustay(otakustay@gmail.com) - */ - -// HACK: 可见的重复代码未抽取成function和var是为了gzip size,吐槽的一边去 -/* eslint-env node */ - -(function (root) { - /** - * 对象属性拷贝 - * - * @inner - * @param {Object} target 目标对象 - * @param {Object} source 源对象 - * @return {Object} 返回目标对象 - */ - function extend(target, source) { - for (var key in source) { - if (source.hasOwnProperty(key)) { - target[key] = source[key]; - } - } - - return target; - } - - /** - * 随手写了个栈 - * - * @inner - * @constructor - */ - function Stack() { - this.raw = []; - this.length = 0; - } - - Stack.prototype = { - /** - * 添加元素进栈 - * - * @param {*} elem 添加项 - */ - push: function (elem) { - this.raw[this.length++] = elem; - }, - - /** - * 弹出顶部元素 - * - * @return {*} 顶部元素 - */ - pop: function () { - if (this.length > 0) { - var elem = this.raw[--this.length]; - this.raw.length = this.length; - return elem; - } - }, - - /** - * 获取顶部元素 - * - * @return {*} 顶部元素 - */ - top: function () { - return this.raw[this.length - 1]; - }, - - /** - * 获取底部元素 - * - * @return {*} 底部元素 - */ - bottom: function () { - return this.raw[0]; - }, - - /** - * 根据查询条件获取元素 - * - * @param {Function} condition 查询函数 - * @return {*} 符合条件的元素 - */ - find: function (condition) { - var index = this.length; - while (index--) { - var item = this.raw[index]; - if (condition(item)) { - return item; - } - } - } - }; - - /** - * 唯一id的起始值 - * - * @inner - * @type {number} - */ - var guidIndex = 0x2b845; - - /** - * 获取唯一id,用于匿名target或编译代码的变量名生成 - * - * @inner - * @return {string} 唯一id - */ - function generateGUID() { - return '___' + guidIndex++; - } - - /** - * 构建类之间的继承关系 - * - * @inner - * @param {Function} subClass 子类函数 - * @param {Function} superClass 父类函数 - */ - function inherits(subClass, superClass) { - /* jshint -W054 */ - var subClassProto = subClass.prototype; - var F = new Function(); - F.prototype = superClass.prototype; - subClass.prototype = new F(); - subClass.prototype.constructor = subClass; - extend(subClass.prototype, subClassProto); - /* jshint +W054 */ - } - - /** - * HTML Filter替换的字符实体表 - * - * @const - * @inner - * @type {Object} - */ - var HTML_ENTITY = { - /* jshint ignore:start */ - '&': '&', - '<': '<', - '>': '>', - '"': '"', - /* eslint-disable quotes */ - "'": ''' - /* eslint-enable quotes */ - /* jshint ignore:end */ - }; - - /** - * HTML Filter的替换函数 - * - * @inner - * @param {string} c 替换字符 - * @return {string} 替换后的HTML字符实体 - */ - function htmlFilterReplacer(c) { - return HTML_ENTITY[c]; - } - - /** - * 默认filter - * - * @inner - * @const - * @type {Object} - */ - var DEFAULT_FILTERS = { - /** - * HTML转义filter - * - * @param {string} source 源串 - * @return {string} 替换结果串 - */ - html: function (source) { - return source.replace(/[&<>"']/g, htmlFilterReplacer); - }, - - /** - * URL编码filter - * - * @param {string} source 源串 - * @return {string} 替换结果串 - */ - url: encodeURIComponent, - - /** - * 源串filter,用于在默认开启HTML转义时获取源串,不进行转义 - * - * @param {string} source 源串 - * @return {string} 替换结果串 - */ - raw: function (source) { - return source; - } - }; - - /** - * 字符串字面化 - * - * @inner - * @param {string} source 需要字面化的字符串 - * @return {string} 字符串字面化结果 - */ - function stringLiteralize(source) { - return ( - '"' + - source - .replace(/\x5C/g, '\\\\') - .replace(/"/g, '\\"') - .replace(/\x0A/g, '\\n') - .replace(/\x09/g, '\\t') - .replace(/\x0D/g, '\\r') + - // .replace( /\x08/g, '\\b' ) - // .replace( /\x0C/g, '\\f' ) - '"' - ); - } - - /** - * 对字符串进行可用于new RegExp的字面化 - * - * @inner - * @param {string} source 需要字面化的字符串 - * @return {string} 字符串字面化结果 - */ - function regexpLiteral(source) { - return source.replace(/[\^\[\]\$\(\)\{\}\?\*\.\+]/g, function (c) { - return '\\' + c; - }); - } - - /** - * 字符串格式化 - * - * @inner - * @param {string} source 目标模版字符串 - * @param {...string} replacements 字符串替换项集合 - * @return {string} 格式化结果 - */ - function stringFormat(source) { - var args = arguments; - return source.replace(/\{([0-9]+)\}/g, function (match, index) { - return args[index - 0 + 1]; - }); - } - - /** - * 用于render的字符串变量声明语句 - * - * @inner - * @const - * @type {string} - */ - var RENDER_STRING_DECLATION = 'var r="";'; - - /** - * 用于render的字符串内容添加语句(起始) - * - * @inner - * @const - * @type {string} - */ - var RENDER_STRING_ADD_START = 'r+='; - - /** - * 用于render的字符串内容添加语句(结束) - * - * @inner - * @const - * @type {string} - */ - var RENDER_STRING_ADD_END = ';'; - - /** - * 用于render的字符串内容返回语句 - * - * @inner - * @const - * @type {string} - */ - var RENDER_STRING_RETURN = 'return r;'; - - // HACK: IE8-时,编译后的renderer使用join Array的策略进行字符串拼接 - var ieVersionMatch = typeof navigator !== 'undefined' && navigator.userAgent.match(/msie\s*([0-9]+)/i); - - if (ieVersionMatch && ieVersionMatch[1] - 0 < 8) { - RENDER_STRING_DECLATION = 'var r=[],ri=0;'; - RENDER_STRING_ADD_START = 'r[ri++]='; - RENDER_STRING_RETURN = 'return r.join("");'; - } - - /** - * 将访问变量名称转换成getVariable调用的编译语句 - * 用于if、var等命令生成编译代码 - * - * @inner - * @param {string} name 访问变量名 - * @return {string} getVariable调用的编译语句 - */ - function toGetVariableLiteral(name) { - name = name.replace(/^\s*\*/, ''); - return stringFormat( - 'gv({0},["{1}"])', - stringLiteralize(name), - name - .replace(/\[['"]?([^'"]+)['"]?\]/g, function (match, name) { - return '.' + name; - }) - .split('.') - .join('","') - ); - } - - /** - * 解析文本片段中以固定字符串开头和结尾的包含块 - * 用于 命令串: 和 变量替换串:${...} 的解析 - * - * @inner - * @param {string} source 要解析的文本 - * @param {string} open 包含块开头 - * @param {string} close 包含块结束 - * @param {boolean} greedy 是否贪婪匹配 - * @param {function({string})} onInBlock 包含块内文本的处理函数 - * @param {function({string})} onOutBlock 非包含块内文本的处理函数 - */ - function parseTextBlock(source, open, close, greedy, onInBlock, onOutBlock) { - var closeLen = close.length; - var texts = (source || '').split(open); - var level = 0; - var buf = []; - - for (var i = 0, len = texts.length; i < len; i++) { - var text = texts[i]; - - if (i) { - var openBegin = 1; - level++; - /* eslint-disable no-constant-condition */ - while (1) { - var closeIndex = text.indexOf(close); - if (closeIndex < 0) { - buf.push(level > 1 && openBegin ? open : '', text); - break; - } - - level = greedy ? level - 1 : 0; - buf.push(level > 0 && openBegin ? open : '', text.slice(0, closeIndex), level > 0 ? close : ''); - text = text.slice(closeIndex + closeLen); - openBegin = 0; - - if (level === 0) { - break; - } - } - /* eslint-enable no-constant-condition */ - - if (level === 0) { - onInBlock(buf.join('')); - onOutBlock(text); - buf = []; - } - } else { - text && onOutBlock(text); - } - } - - if (level > 0 && buf.length > 0) { - onOutBlock(open); - onOutBlock(buf.join('')); - } - } - - /** - * 编译变量访问和变量替换的代码 - * 用于普通文本或if、var、filter等命令生成编译代码 - * - * @inner - * @param {string} source 源代码 - * @param {Engine} engine 引擎实例 - * @param {boolean} forText 是否为输出文本的变量替换 - * @return {string} 编译代码 - */ - function compileVariable(source, engine, forText) { - var code = []; - var options = engine.options; - - var toStringHead = ''; - var toStringFoot = ''; - var wrapHead = ''; - var wrapFoot = ''; - - // 默认的filter,当forText模式时有效 - var defaultFilter; - - if (forText) { - toStringHead = 'ts('; - toStringFoot = ')'; - wrapHead = RENDER_STRING_ADD_START; - wrapFoot = RENDER_STRING_ADD_END; - defaultFilter = options.defaultFilter; - } - - parseTextBlock( - source, - options.variableOpen, - options.variableClose, - 1, - - function (text) { - // 加入默认filter - // 只有当处理forText时,需要加入默认filter - // 处理if/var/use等command时,不需要加入默认filter - if (forText && text.indexOf('|') < 0 && defaultFilter) { - text += '|' + defaultFilter; - } - - // variableCode是一个gv调用,然后通过循环,在外面包filter的调用 - // 形成filter["b"](filter["a"](gv(...))) - // - // 当forText模式,处理的是文本中的变量替换时 - // 传递给filter的需要是字符串形式,所以gv外需要包一层ts调用 - // 形成filter["b"](filter["a"](ts(gv(...)))) - // - // 当variableName以*起始时,忽略ts调用,直接传递原值给filter - var filterCharIndex = text.indexOf('|'); - var variableName = (filterCharIndex > 0 ? text.slice(0, filterCharIndex) : text) - .replace(/^\s+/, '') - .replace(/\s+$/, ''); - var filterSource = filterCharIndex > 0 ? text.slice(filterCharIndex + 1) : ''; - - var variableRawValue = variableName.indexOf('*') === 0; - var variableCode = [ - variableRawValue ? '' : toStringHead, - toGetVariableLiteral(variableName), - variableRawValue ? '' : toStringFoot - ]; - - if (filterSource) { - filterSource = compileVariable(filterSource, engine); - var filterSegs = filterSource.split('|'); - for (var i = 0, len = filterSegs.length; i < len; i++) { - var seg = filterSegs[i]; - var segMatch = seg.match(/^\s*([a-z0-9_-]+)(\((.*)\))?\s*$/i); - if (segMatch) { - variableCode.unshift('fs["' + segMatch[1] + '"]('); - - if (segMatch[3]) { - variableCode.push(',', segMatch[3]); - } - - variableCode.push(')'); - } - } - } - - code.push(wrapHead, variableCode.join(''), wrapFoot); - }, - - function (text) { - code.push(wrapHead, forText ? stringLiteralize(text) : text, wrapFoot); - } - ); - - return code.join(''); - } - - /** - * 文本节点类 - * - * @inner - * @constructor - * @param {string} value 文本节点的内容文本 - * @param {Engine} engine 引擎实例 - */ - function TextNode(value, engine) { - this.value = value; - this.engine = engine; - } - - TextNode.prototype = { - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - getRendererBody: function () { - var value = this.value; - var options = this.engine.options; - - if (!value || (options.strip && /^\s*$/.test(value))) { - return ''; - } - - return compileVariable(value, this.engine, 1); - }, - - /** - * 复制节点的方法 - * - * @return {TextNode} 节点复制对象 - */ - clone: function () { - return this; - } - }; - - /** - * 命令节点类 - * - * @inner - * @constructor - * @param {string} value 命令节点的value - * @param {Engine} engine 引擎实例 - */ - function Command(value, engine) { - this.value = value; - this.engine = engine; - this.children = []; - this.cloneProps = []; - } - - Command.prototype = { - /** - * 添加子节点 - * - * @param {TextNode|Command} node 子节点 - */ - addChild: function (node) { - this.children.push(node); - }, - - /** - * 节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - open: function (context) { - var parent = context.stack.top(); - parent && parent.addChild(this); - context.stack.push(this); - }, - - /** - * 节点闭合,解析结束 - * - * @param {Object} context 语法分析环境对象 - */ - close: function (context) { - if (context.stack.top() === this) { - context.stack.pop(); - } - }, - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - getRendererBody: function () { - var buf = []; - var children = this.children; - for (var i = 0; i < children.length; i++) { - buf.push(children[i].getRendererBody()); - } - - return buf.join(''); - }, - - /** - * 复制节点的方法 - * - * @return {Command} 节点复制对象 - */ - clone: function () { - var Clazz = this.constructor; - var node = new Clazz(this.value, this.engine); - - /* eslint-disable no-redeclare */ - for (var i = 0, l = this.children.length; i < l; i++) { - node.addChild(this.children[i].clone()); - } - - for (var i = 0, l = this.cloneProps.length; i < l; i++) { - var prop = this.cloneProps[i]; - node[prop] = this[prop]; - } - /* eslint-enable no-redeclare */ - - return node; - } - }; - - /** - * 命令自动闭合 - * - * @inner - * @param {Object} context 语法分析环境对象 - * @param {Function=} CommandType 自闭合的节点类型 - * @return {Command} 被闭合的节点 - */ - function autoCloseCommand(context, CommandType) { - var stack = context.stack; - var closeEnd = CommandType - ? stack.find(function (item) { - return item instanceof CommandType; - }) - : stack.bottom(); - - if (closeEnd) { - var node; - - while ((node = stack.top()) !== closeEnd) { - /* jshint ignore:start */ - // 如果节点对象不包含autoClose方法 - // 则认为该节点不支持自动闭合,需要抛出错误 - // for等节点不支持自动闭合 - if (!node.autoClose) { - throw new Error(node.type + ' must be closed manually: ' + node.value); - } - /* jshint ignore:end */ - - node.autoClose(context); - } - - closeEnd.close(context); - } - - return closeEnd; - } - - /** - * renderer body起始代码段 - * - * @inner - * @const - * @type {string} - */ - var RENDERER_BODY_START = - '' + - 'data=data||{};' + - 'var v={},fs=engine.filters,hg=typeof data.get=="function",' + - 'gv=function(n,ps){' + - 'var p=ps[0],d=v[p];' + - 'if(d==null){' + - 'if(hg){return data.get(n);}' + - 'd=data[p];' + - '}' + - 'for(var i=1,l=ps.length;i= TargetState.APPLIED) { - return 1; - } - - var blocks = this.blocks; - - function replaceBlock(node) { - var children = node.children; - - if (children instanceof Array) { - for (var i = 0, len = children.length; i < len; i++) { - var child = children[i]; - if (child instanceof BlockCommand && blocks[child.name]) { - child = children[i] = blocks[child.name]; - } - - replaceBlock(child); - } - } - } - - var master = this.engine.targets[masterName]; - if (master) { - if (master.applyMaster(master.master)) { - this.children = master.clone().children; - replaceBlock(this); - this.state = TargetState.APPLIED; - return 1; - } - } else if (this.engine.options.missTarget === 'error') { - throw new Error( - '[ETPL_MISS_TARGET]' + masterName + ', when extended by ' + (this.target ? this.target.name : this.name) - ); - } - }; - - /** - * 判断target是否ready - * 包括是否成功应用母版,以及import语句依赖的target是否ready - * - * @return {boolean} target是否ready - */ - TargetCommand.prototype.isReady = function () { - if (this.state >= TargetState.READY) { - return 1; - } - - var engine = this.engine; - var targetName = this.name; - var readyState = 1; - - /** - * 递归检查节点的ready状态 - * - * @inner - * @param {Command|TextNode} node 目标节点 - */ - function checkReadyState(node) { - for (var i = 0, len = node.children.length; i < len; i++) { - var child = node.children[i]; - - if (child instanceof ImportCommand) { - var target = engine.targets[child.name]; - if (!target && engine.options.missTarget === 'error') { - throw new Error('[ETPL_MISS_TARGET]' + child.name + ', when imported by ' + targetName); - } - - readyState = readyState && target && target.isReady(engine); - } else if (child instanceof Command) { - checkReadyState(child); - } - } - } - - if (this.applyMaster(this.master)) { - checkReadyState(this); - readyState && (this.state = TargetState.READY); - return readyState; - } - }; - - /** - * 获取target的renderer函数 - * - * @return {function(Object):string} renderer函数 - */ - TargetCommand.prototype.getRenderer = function () { - if (this.renderer) { - return this.renderer; - } - - if (this.isReady()) { - // console.log(this.name + ' ------------------'); - // console.log(RENDERER_BODY_START + RENDER_STRING_DECLATION - // + this.getRendererBody() - // + RENDER_STRING_RETURN); - - /* jshint -W054 */ - var realRenderer = new Function( - 'data', - 'engine', - [RENDERER_BODY_START, RENDER_STRING_DECLATION, this.getRendererBody(), RENDER_STRING_RETURN].join('\n') - ); - /* jshint +W054 */ - - var engine = this.engine; - this.renderer = function (data) { - return realRenderer(data, engine); - }; - - return this.renderer; - } - - return null; - }; - - /** - * 将target节点对象添加到语法分析环境中 - * - * @inner - * @param {TargetCommand} target target节点对象 - * @param {Object} context 语法分析环境对象 - */ - function addTargetToContext(target, context) { - context.target = target; - - var engine = context.engine; - var name = target.name; - - if (engine.targets[name]) { - switch (engine.options.namingConflict) { - /* jshint ignore:start */ - case 'override': - engine.targets[name] = target; - context.targets.push(name); - case 'ignore': - break; - /* jshint ignore:end */ - default: - throw new Error('[ETPL_TARGET_EXISTS]' + name); - } - } else { - engine.targets[name] = target; - context.targets.push(name); - } - } - - /** - * target节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - TargetCommand.prototype.open = function (context) { - autoCloseCommand(context); - Command.prototype.open.call(this, context); - this.state = TargetState.READING; - addTargetToContext(this, context); - }; - - /** - * Var节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - VarCommand.prototype.open = - /** - * Use节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - UseCommand.prototype.open = function (context) { - context.stack.top().addChild(this); - }; - - /** - * Block节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - BlockCommand.prototype.open = function (context) { - Command.prototype.open.call(this, context); - context.stack.find(function (node) { - return node.blocks; - }).blocks[this.name] = this; - }; - - /** - * elif节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - ElifCommand.prototype.open = function (context) { - var elseCommand = new ElseCommand(); - elseCommand.open(context); - - var ifCommand = autoCloseCommand(context, IfCommand); - ifCommand.addChild(this); - context.stack.push(this); - }; - - /** - * else节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - ElseCommand.prototype.open = function (context) { - var ifCommand = autoCloseCommand(context, IfCommand); - ifCommand.addChild(this); - context.stack.push(this); - }; - - /** - * import节点open,解析开始 - * - * @param {Object} context 语法分析环境对象 - */ - ImportCommand.prototype.open = function (context) { - this.parent = context.stack.top(); - this.target = context.target; - Command.prototype.open.call(this, context); - this.state = TargetState.READING; - }; - - /** - * 节点解析结束 - * 由于use节点无需闭合,处理时不会入栈,所以将close置为空函数 - * - * @param {Object} context 语法分析环境对象 - */ - UseCommand.prototype.close = - /** - * 节点解析结束 - * 由于var节点无需闭合,处理时不会入栈,所以将close置为空函数 - * - * @param {Object} context 语法分析环境对象 - */ - VarCommand.prototype.close = function () {}; - - /** - * 节点解析结束 - * - * @param {Object} context 语法分析环境对象 - */ - ImportCommand.prototype.close = function (context) { - Command.prototype.close.call(this, context); - this.state = TargetState.READED; - }; - - /** - * 节点闭合,解析结束 - * - * @param {Object} context 语法分析环境对象 - */ - TargetCommand.prototype.close = function (context) { - Command.prototype.close.call(this, context); - this.state = this.master ? TargetState.READED : TargetState.APPLIED; - context.target = null; - }; - - /** - * 节点自动闭合,解析结束 - * ImportCommand的自动结束逻辑为,在其开始位置后马上结束 - * 所以,其自动结束时children应赋予其所属的parent - * - * @param {Object} context 语法分析环境对象 - */ - ImportCommand.prototype.autoClose = function (context) { - // move children to parent - var parentChildren = this.parent.children; - parentChildren.push.apply(parentChildren, this.children); - this.children.length = 0; - - // move blocks to target - /* eslint-disable guard-for-in */ - for (var key in this.blocks) { - this.target.blocks[key] = this.blocks[key]; - } - /* eslint-enable guard-for-in */ - this.blocks = {}; - - // do close - this.close(context); - }; - - /** - * 节点open前的处理动作:节点不在target中时,自动创建匿名target - * - * @param {Object} context 语法分析环境对象 - */ - Command.prototype.beforeOpen = - /** - * 文本节点被添加到分析环境前的处理动作:节点不在target中时,自动创建匿名target - * - * @param {Object} context 语法分析环境对象 - */ - TextNode.prototype.beforeAdd = function (context) { - if (context.stack.bottom()) { - return; - } - - var target = new TargetCommand(generateGUID(), context.engine); - target.open(context); - }; - - /** - * 节点open前的处理动作:target 不需要自动创建target,所以清空方法 - * - * @param {Object} context 语法分析环境对象 - */ - TargetCommand.prototype.beforeOpen = function () {}; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - ImportCommand.prototype.getRendererBody = function () { - this.applyMaster(this.name); - return Command.prototype.getRendererBody.call(this); - }; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - UseCommand.prototype.getRendererBody = function () { - return stringFormat( - '{0}engine.render({2},{{3}}){1}', - RENDER_STRING_ADD_START, - RENDER_STRING_ADD_END, - stringLiteralize(this.name), - compileVariable(this.args, this.engine).replace(/(^|,)\s*([a-z0-9_]+)\s*=/gi, function (match, start, argName) { - return (start || '') + stringLiteralize(argName) + ':'; - }) - ); - }; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - VarCommand.prototype.getRendererBody = function () { - if (this.expr) { - return stringFormat('v[{0}]={1};', stringLiteralize(this.name), compileVariable(this.expr, this.engine)); - } - - return ''; - }; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - IfCommand.prototype.getRendererBody = function () { - return stringFormat( - 'if({0}){{1}}', - compileVariable(this.value, this.engine), - Command.prototype.getRendererBody.call(this) - ); - }; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - ElseCommand.prototype.getRendererBody = function () { - return stringFormat('}else{{0}', Command.prototype.getRendererBody.call(this)); - }; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - ForCommand.prototype.getRendererBody = function () { - return stringFormat( - /* jshint ignore:start */ - '' + - 'var {0}={1};' + - 'if({0} instanceof Array)' + - 'for (var {4}=0,{5}={0}.length;{4}<{5};{4}++){v[{2}]={4};v[{3}]={0}[{4}];{6}}' + - 'else if(typeof {0}==="object")' + - 'for(var {4} in {0}){v[{2}]={4};v[{3}]={0}[{4}];{6}}', - /* jshint ignore:end */ - generateGUID(), - compileVariable(this.list, this.engine), - stringLiteralize(this.index || generateGUID()), - stringLiteralize(this.item), - generateGUID(), - generateGUID(), - Command.prototype.getRendererBody.call(this) - ); - }; - - /** - * 获取renderer body的生成代码 - * - * @return {string} 生成代码 - */ - FilterCommand.prototype.getRendererBody = function () { - var args = this.args; - return stringFormat( - '{2}fs[{5}]((function(){{0}{4}{1}})(){6}){3}', - RENDER_STRING_DECLATION, - RENDER_STRING_RETURN, - RENDER_STRING_ADD_START, - RENDER_STRING_ADD_END, - Command.prototype.getRendererBody.call(this), - stringLiteralize(this.name), - args ? ',' + compileVariable(args, this.engine) : '' - ); - }; - - /** - * 添加命令类型 - * - * @inner - * @param {Engine} engine etpl引擎 - * @param {string} name 命令名称 - * @param {Function} Type 处理命令用到的类 - */ - function addCommandType(engine, name, Type) { - engine.commandTypes[name] = Type; - Type.prototype.type = name; - } - - /** - * etpl引擎类 - * - * @constructor - * @param {Object=} options 引擎参数 - * @param {string=} options.commandOpen 命令语法起始串 - * @param {string=} options.commandClose 命令语法结束串 - * @param {string=} options.variableOpen 变量语法起始串 - * @param {string=} options.variableClose 变量语法结束串 - * @param {string=} options.defaultFilter 默认变量替换的filter - * @param {boolean=} options.strip 是否清除命令标签前后的空白字符 - * @param {string=} options.namingConflict target名字冲突时的处理策略 - * @param {string=} options.missTarget target不存在时的处理策略 - */ - function Engine(options) { - this.options = { - commandOpen: '', - commandSyntax: /^\s*(\/)?([a-z]*)\s*(?::([\s\S]*))?$/, - variableOpen: '${', - variableClose: '}', - defaultFilter: 'html' - }; - - this.commandTypes = {}; - addCommandType(this, 'target', TargetCommand); - addCommandType(this, 'block', BlockCommand); - addCommandType(this, 'import', ImportCommand); - addCommandType(this, 'use', UseCommand); - addCommandType(this, 'var', VarCommand); - addCommandType(this, 'for', ForCommand); - addCommandType(this, 'if', IfCommand); - addCommandType(this, 'elif', ElifCommand); - addCommandType(this, 'else', ElseCommand); - addCommandType(this, 'filter', FilterCommand); - - this.config(options); - this.targets = {}; - this.filters = extend({}, DEFAULT_FILTERS); - } - - /** - * 配置引擎参数,设置的参数将被合并到现有参数中 - * - * @param {Object} options 参数对象 - * @param {string=} options.commandOpen 命令语法起始串 - * @param {string=} options.commandClose 命令语法结束串 - * @param {string=} options.variableOpen 变量语法起始串 - * @param {string=} options.variableClose 变量语法结束串 - * @param {string=} options.defaultFilter 默认变量替换的filter - * @param {boolean=} options.strip 是否清除命令标签前后的空白字符 - * @param {string=} options.namingConflict target名字冲突时的处理策略 - * @param {string=} options.missTarget target不存在时的处理策略 - */ - Engine.prototype.config = function (options) { - extend(this.options, options); - }; - - /** - * 解析模板并编译,返回第一个target编译后的renderer函数。 - * - * @param {string} source 模板源代码 - * @return {function(Object):string} renderer函数 - */ - Engine.prototype.compile = - /** - * 解析模板并编译,返回第一个target编译后的renderer函数。 - * 该方法的存在为了兼容老模板引擎 - * - * @param {string} source 模板源代码 - * @return {function(Object):string} renderer函数 - */ - Engine.prototype.parse = function (source) { - /* jshint -W054 */ - var renderer = new Function('return ""'); - /* jshint +W054 */ - - if (source) { - var parseInfo = parseSource(source, this); - var targetNames = parseInfo.targets; - - if (targetNames.length) { - renderer = this.targets[targetNames[0]].getRenderer(); - } - } - - return renderer; - }; - - /** - * 根据target名称获取编译后的renderer函数 - * - * @param {string} name target名称 - * @return {function(Object):string} renderer函数 - */ - Engine.prototype.getRenderer = function (name) { - var target = this.targets[name]; - if (!target) { - console.log(name); - } - if (target) { - return target.getRenderer(); - } - }; - - /** - * 执行模板渲染,返回渲染后的字符串。 - * - * @param {string} name target名称 - * @param {Object=} data 模板数据。 - * 可以是plain object, - * 也可以是带有 {string}get({string}name) 方法的对象 - * @return {string} 渲染结果 - */ - Engine.prototype.render = function (name, data) { - var renderer = this.getRenderer(name); - if (renderer) { - return renderer(data); - } - - return ''; - }; - - /** - * 增加命令 - * - * @param {string} name 命令名称 - * @param {Object|Function} command 命令对象或命令类 - */ - Engine.prototype.addCommand = function (name, command) { - var CommandType = command; - if ('function' !== typeof CommandType) { - CommandType = function (value, engine) { - Command.call(this, value, engine); - }; - - CommandType.prototype = command; - } - - inherits(CommandType, Command); - addCommandType(this, name, CommandType); - }; - - /** - * 增加过滤器 - * - * @param {string} name 过滤器名称 - * @param {Function} filter 过滤函数 - */ - Engine.prototype.addFilter = function (name, filter) { - if ('function' === typeof filter) { - this.filters[name] = filter; - } - }; - - /** - * 解析源代码 - * - * @inner - * @param {string} source 模板源代码 - * @param {Engine} engine 引擎实例 - * @return {Array} target名称列表 - */ - function parseSource(source, engine) { - var commandOpen = engine.options.commandOpen; - var commandClose = engine.options.commandClose; - var commandSyntax = engine.options.commandSyntax; - - var stack = new Stack(); - var analyseContext = { - engine: engine, - targets: [], - stack: stack, - target: null, - deps: {} - }; - - // text节点内容缓冲区,用于合并多text - var textBuf = []; - - /** - * 将缓冲区中的text节点内容写入 - * - * @inner - */ - function flushTextBuf() { - var text; - if (textBuf.length > 0 && (text = textBuf.join(''))) { - var textNode = new TextNode(text, engine); - textNode.beforeAdd(analyseContext); - - stack.top().addChild(textNode); - textBuf = []; - - if (engine.options.strip && analyseContext.current instanceof Command) { - textNode.value = text.replace(/^[\x20\t\r]*\n/, ''); - } - analyseContext.current = textNode; - } - } - - var NodeType; - - parseTextBlock( - source, - commandOpen, - commandClose, - 0, - - function (text) { - // 内文本的处理函数 - var match = commandSyntax.exec(text); - var nodeName; - - // 符合command规则,并且存在相应的Command类,说明是合法有含义的Command - // 否则,为不具有command含义的普通文本 - if ( - match && - (nodeName = match[2] || 'target') && - (NodeType = engine.commandTypes[nodeName.toLowerCase()]) && - typeof NodeType === 'function' - ) { - // 先将缓冲区中的text节点内容写入 - flushTextBuf(); - - var currentNode = analyseContext.current; - if (engine.options.strip && currentNode instanceof TextNode) { - currentNode.value = currentNode.value.replace(/\r?\n[\x20\t]*$/, '\n'); - } - - if (match[1]) { - currentNode = autoCloseCommand(analyseContext, NodeType); - } else { - currentNode = new NodeType(match[3], engine); - - if ('function' === typeof currentNode.init) { - currentNode.init(analyseContext); - } - - currentNode.beforeOpen(analyseContext); - currentNode.open(analyseContext); - } - - analyseContext.current = currentNode; - } else if (!/^\s*\/\//.test(text)) { - // 如果不是模板注释,则作为普通文本,写入缓冲区 - textBuf.push(commandOpen, text, commandClose); - } - - NodeType = null; - }, - - function (text) { - // 外,普通文本的处理函数 - // 普通文本直接写入缓冲区 - textBuf.push(text); - } - ); - - flushTextBuf(); // 将缓冲区中的text节点内容写入 - autoCloseCommand(analyseContext); - - var deps = []; - for (var key in analyseContext.deps) { - deps.push(key); - } - - return { - targets: analyseContext.targets, - deps: deps - }; - } - - // export object - var etpl = new Engine(); - etpl.Engine = Engine; - etpl.version = '3.2.0'; - etpl.Command = Command; - etpl.util = { - inherits: inherits, - stringFormat: stringFormat, - stringLiteralize: stringLiteralize, - compileVariable: compileVariable, - parseSource: parseSource - }; - etpl.TextNode = TextNode; - - if (typeof exports === 'object' && typeof module === 'object') { - // For CommonJS - exports = module.exports = etpl; - } else if (typeof define === 'function' && define.amd) { - // For AMD - define(etpl); - } else { - // For - diff --git a/packages/vmind/__tests__/browser/src/App.tsx b/packages/vmind/__tests__/browser/src/App.tsx deleted file mode 100644 index 5e1b168c..00000000 --- a/packages/vmind/__tests__/browser/src/App.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import * as React from 'react'; -import { Home } from './pages/Home'; -import { LayoutWrap } from './Layout'; -import './index.scss'; - -export default function App() { - return ( - - - - ); -} diff --git a/packages/vmind/__tests__/browser/src/Layout.tsx b/packages/vmind/__tests__/browser/src/Layout.tsx deleted file mode 100644 index 64dcd6cb..00000000 --- a/packages/vmind/__tests__/browser/src/Layout.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import * as React from 'react'; -import { PageHeader, Button, Layout } from '@arco-design/web-react'; - -export function LayoutWrap(props: any) { - return ( - - - {props.children} - - ); -} diff --git a/packages/vmind/__tests__/browser/src/constants/capcutData.ts b/packages/vmind/__tests__/browser/src/constants/capcutData.ts deleted file mode 100644 index d531e793..00000000 --- a/packages/vmind/__tests__/browser/src/constants/capcutData.ts +++ /dev/null @@ -1,672 +0,0 @@ -/* eslint-disable max-len */ -export const capcutMockData: any[] = [ - { - text: '地图带你看懂法国大选。 2024 年法国议会选举结果揭示了法国社会的撕裂,没有任何党派能获得 577 个议题中的绝对多数。左翼联盟、新人民战线执政党中间派联盟和极右翼国民联盟分别占据 182 席、 168 席、 143 席。除了这三家以外,其余党派席位最多的也只有右翼共和党的 48 席,因此左翼联盟、执政党和极右翼算是形成了三分天下的格局。今天我们便结合地图和数据,聊一聊法国大选。本期视频的所有分析均为个人观点,仅供参考。在开始之前,我先快速的放一下各党派在几个主要政治议题上的立场,有需要的朋友可以截图保存一下。', - fieldInfo: ['党派', '席位数'] - }, - { - text: '现在我们进入正题,首先需要说明法国的选区制度,全国共有 577 个选区,每个选区包括 10- 12 万的人口密集的地方选区就小,人口稀少的区域选区域就大。因此地图上各个政党所占的面积并不能与其票数划等号,而是要看具体的选区分布在人口密集的大城市,譬如巴黎、里昂、马赛,虽然看起来面积小,实际上选区数量很多,占的比重很大。', - fieldInfo: ['选区数量', '选区人口范围', '城市'] - }, - { - text: '尽管如此,马克龙强调市场自由化,支持创新和创业,对欧盟一体化和国际合作的开放还是得到了许多大城市选民的支持。大城市仍然是马克龙的重要支持来源。除了大城市外,我们刚才提到过法国东北地区工业的衰落,其实在法国的西北地区又是另一番景象。之前那张关于中小工业城市分布的途中,我们可以清晰的看到西北地区的工业对于当代法国的重要性,当然工业只是一个缩影。我们再来看失业率地图,黄色代表 2022 年失业率最低的 20 个省,橙色是 21- 40 低的省份,可以看出西北部地区的失业率明显低于东北部。再看移民分布地图,西北部地区因为大城市少,而且离地中海更远,接受的移民也比较少。综上,西北地区的经济较为稳定,而且不受移民带来的社会问题困扰,日子过得比较舒服,这些选民对于未来持乐观态度,也成为了马克龙的另一主要票仓。除了以上三大势力外,浅蓝色代表的右翼共和党也获得了 48 个席位。他们的支持者主要位于经济同样比较富足,但是政治观点更为保守的地区。这里我就不展开讲总结。本期视频我们从法国官方的报告与数据出发,从经济与人口地理的角度分析了法国的大选结果。左翼联盟新人民战线以大城市为根基拿下最多的 182 席,马克龙的执政党中间派联盟则凭借大城市和西北地区的支持者取得了 168 席。乐旁的极右翼国民联盟则主要扎根于东北与东南地区,以 143 起居于第三这样的三分割据局面使得法国议会缺乏绝对多数,并且三方势力相差不大。可以预见在未来法案的通过上会面临极大的阻碍。举例来说,左翼和极右翼甚至存在联手撤回延迟退休法案的理论可能。虽然实际操作起来也面临很多困难,双方都不太愿意和对方合作,但即便是理论,可能也已经能表明未来的不确定性。', - fieldInfo: ['政党', '席位数', '地区'] - }, - { - text: '住手,你们住手,不要再砸了,你们不要再砸了。万万没想到,瑞幸和库迪的九块九大战,快把星巴克给卷死了。前段时间,星巴克公布了第二季度财报,营业收入 85.6 亿美元,同比下降了2%,净利润大跌15%,股票市值一天内蒸发了 1, 150 亿人民币。另一方面,星巴克的咖啡也在悄悄降价。如果你手机上有星巴克的APP,几乎每天都会收到 5 张以上的优惠券,比如满60.10、满75.15、任意新冰乐 7 折等等,部分单品的团购价优惠下来低至 9 元。终于, 9.9 的风还是卷到了星巴克。在过去很长一段时间里,星巴克是小资生活的代表,一杯咖啡动辄几十块钱,也只有电视剧里那些白领们和云淡风轻的走进去,熟练地点一杯拿铁,找个位置坐下,悠闲地打开电脑喝咖啡。岁月静好人间,值得有人点一杯星巴克,朋友圈能发十几条动态,有人为了抢星巴克限量版的猫爪杯,能通宵排队,甚至大打出手。', - fieldInfo: ['营业收入', '营业收入同比', '净利润变化'] - }, - { - text: '星巴克在中国国内的定位一直都是高端咖啡品牌,但是很多人不知道的是,它在国外的定位其实是平民咖啡,在美国一杯星巴克大杯美式咖啡大概是 2.95 美元,而根据美国劳工部的统计,美国平均月工资是 6, 228 美元,最低时薪是 7.25 美元,这是啥意思呢? 1002.65 美元的星巴克还不到美国人平均月收入的 2, 000 份之一,也就是平常坐一趟地铁的价格吧。而在中国市场,星巴克的饮品价格普遍要超过 30 元一杯。如果按照美国的对应消费力,它的主力消费人群应该是月薪至少6万元的人。', - fieldInfo: ['咖啡价格', '平均工资', '最低时薪'] - }, - { - text: '2019 年2月,星巴克就发售了一款粉爪杯,那它长这样?售价 199 元,但是在网上最高炒到了 1, 800 元。有人寒冬腊月在星巴克门口通宵排队,就是为了买到这么一个杯子。还有人因为排队顺序大打出手,最后喜提免费食宿。靠着这些营销方法,在很长一段时间里,普通人对于星巴克是仰望的,觉得去星巴克消费是很有品的,再往前推十年,你甚至可以看到有人去星巴克点一杯咖啡就可以发十几条朋友圈的各种角度各种场景,还要配文低调有实力,天天喝都喝腻了好像呢?甚至有人专门发帖认真的提问,第一次去星巴克主要注意什么?怎么装的像老手呢?我一开始还以为是来搞笑和反讽的,没想到点开帖子此还真的是教大家怎么去星巴克抓老手的,包括但不限于怎么下载APP,问店员这周用的是啥肚子萃取时间是多少?张度和烘焙度怎么样?要不要加糖和加奶?这唬得我一愣一愣的,但是时过境迁,如今星巴克已经支棱不起来了,一边是疯狂降价买三送一搞促销,一边是继续下沉到四五线城市。', - fieldInfo: ['商品', '售价', '最高价'] - }, - { - text: '星巴克近期发布的 2025 中国战略愿景当中,中国总部直言不讳地表示,星巴克看中的不仅仅是全国 300 多个 d 级市场,也包括近 3, 000 个县域市场。星巴克的愿景也体现在它的选址变化上,它在中国的门店已经突破了 7, 000 家,但是这开店位置却让人越来越看不懂了。', - fieldInfo: ['市场级别', '市场数量'] - }, - { - text: '一家卖咖啡的店。星巴克没落的第二个原因是当代年轻人更偏向实用消费主义。坦白讲,大部分人喝咖啡其实就是为了遮住那点咖啡因,好让自己在一天的工作中保持清醒。你跟不懂咖啡的人聊什么豆子产地、风味,他只会回你一句,冰美式和中药有什么区别啊?如果你面前有三杯咖啡,第一杯是星巴克的 30 元美式,后面两杯是瑞幸库里的 9 块 9 咖啡也让你买单,大部分人都会选择后面两个,当然也有人会吹星巴克的豆子有多么多么的好,所以它买的这么贵也是值得的。', - fieldInfo: ['品牌', '价格'] - }, - { - text: '咱聊一下最新的重磅数据,反正挺复杂的,国内6月 M2 同比增长6.2%,预期6.8%。 M1 同比下滑5%,预期下滑5.4%。 M M 一剪刀差走扩至 11.2% 再创新高。6月人民币存款增加 2.46 万亿,其中居民存款增加 2.14 万亿,增量几乎全都是老百姓存的。与 M1 的下滑相对,上半年人民币存款总共增加了 11.46 万亿,其中居民存款增加 9.27 万亿。大头也是老百姓,但增速逐月放缓。', - fieldInfo: ['指标', '同比增长', '预期增长'] - }, - { - text: '7月 11 日晚上,由于美国公布的 CPI 数据超预期回落,让市场对美联储降息预期大幅升温。从这场所的美联储观察工具看,虽然7月 30 一日的美联储议息会议,市场预期不降息的概率仍然是达到93%,但9月 18 日的美联储议息会议,市场预期降息一次的概率是达到90%,这比起上个月概率是上升很多。不过我还是得强调一下,这个美联储观察工具将来只能反映市场当前的预期态度,不能拿来预测美联储货币政策,因为这个概率是会不断随着最新经济数据变化而变化。比如要是下个月美国 CPI 出现较大反弹,那9月降息的概率就会大幅下降。而这次市场预期美联储9月降息的概率大幅上升,主要有两个原因,一、美联储鲍威尔在7月 10 日的国会听证会上整体态度偏戈。鲍威尔称,劳动力市场降温意味着持续高通胀的潜在源头已经减弱。他还表示,就业市场的进一步疲软可能是不必要的,也是不受欢迎的。鲍威尔说,通胀方面的工作还没有完成,我们还有更多工作要做,但与此同时,我们需要注意劳动力市场现况,我们已经观察到劳动力市场出现相当明显的疲软,有着新美联储通讯社之称的知名记者尼奇默尔斯认为,鲍威尔本周其实已暗示美联储的利率政策即将开始改变方向。', - fieldInfo: ['时间', '预计降息概率'] - }, - { - text: '第二个原因是7月 11 日晚上 8 点半美国劳工部公布的通胀数据,6月 CPI 是同比上涨3%,市场预期值3.1%,前值3.3%。这次美联储 CPI 回落,更关键是 CPI 环比是负增长0.1%,这是美国 2020 年5月以来 CPI 环比首次出现下降,而且美国 2020 年5月还是因为疫情导致的 CPI 骤降,是比较特殊时期,所以美国 CPI 环比负增长确实不太常见。但仔细看美国 VI 月 CPI 的具体构成,感觉猫腻还是不少的。', - fieldInfo: ['经济指标', '同比', '环比', '市场预期值', '前值'] - }, - { - text: '美国 VI 月 CPI 下降的主要贡献是汽油价格下跌。美国 VI 月汽油价格下跌了3.8%,抑制了当月通胀,抵消了食品和住房价格 0.2% 的上涨。比较诡异的是,美国原油期货价格6月是明明出现大幅上涨,这是因为原油期货价格传导到汽油价格有一些迟滞效应,但那样的话,下个月公布的 CPI 数据,汽油价格可能就得反弹了。要是下个月公布的 CPI 数据,汽油价格还继续下降,那就实在说不过去了。美国刨除能源和食品价格的核心通胀率6月是3.3%,但整体降幅还是低于CPI。', - fieldInfo: ['价格类别', '价格变动比例'] - }, - { - text: '美国通胀目前最顽固的就是服务业通胀,美国 VI 月服务业通胀仍然是同比上涨5%。美国毕竟是服务业为主的国家,服务业通胀还高居5%,美国要说自己已经控制住通胀,完全就是忽悠人。不过虽然美国大选临近,美国现在经济数据基本是为选型服务,比如已经假的不能再假的美国非农就业数据,美国 VI 月非农就业人口增加20.6万人,高于市场预期的 19 万人。然而美国同时把5月数据从 27.2 万人大幅下修至 21.8 万人,4月从 16.5 万人修正至10.8万人,修正后两个月合计较修正前减少 11.1 万人。', - fieldInfo: ['月份', '修正前就业人口增加', '修正后就业人口增加'] - }, - { - text: '我注意到虽然这次市场大幅提高了美联储9月降息概率,但美股和日股反而不涨反跌,纳斯达克在7月 11 日是下跌了2%,日股在7月 12 日也跟随下跌了2.45%。这是市场反身性效应的某种预演,股市炒的是预期,之前美股和日股是基于美联储降息预期,已经提前涨了一年多了,那么当美联储真正降息之后,市场是可能出现反身性效应,也就是所谓利好落地势利空的说法。当然股市走势千变万化,这也只是其中一种可能性。历史的参考例子,比如 2004 年美联储降息, 2006 年停止加息, 2007 年开始降息,但股市是一直涨到 2007 年底,随后自带危机爆发,股市开始大跌。我之前也梳理过,从 1980 年以来,美联储每次加息超过 5% 的幅度,首次加息后的 2- 4 年内都会爆发金融危机,这次美联储是 2022 年开始加息,所以按照历史路径, 2024 年到 2026 年是有可能爆发世界金融危机,这个结合当前国际局势和地缘形势,还是有挺大的可能性。', - fieldInfo: ['股市', '时间', '涨跌幅度'] - }, - { - text: '以前的小学空荡荡的,老年人养起了鸡鸭鹅狗,彻底荒废了整个黑龙江省, 10 年时间荒废了近六成,小学加起来有 1, 900 余所,整个东北十年荒废了 6, 800 余所小学,少了一半。', - fieldInfo: ['地区', '荒废比例', '荒废数量'] - }, - { - text: '而小学缺孩子这个趋势早已经蔓延至全国各地了。东部的兹西县,有的小学一个班只有一个学生。华南的徐文县,去年某小学开学,一年级也只有一个学生。中部人口大省河南,据测算, 2023- 2027 年小学学龄人口预计下降 200 多万人,缩水超两成,出现了基数的坍塌。从全国来看,基于学龄人口的预测显示,全国超 1, 400 个县域中,近九成县域小学学龄人口预计下滑,小学鹤岗化以谁也没想到的方式在扩散,从东北开始到大江南北,下一步可能是上海最新的总和生育率只有 0.6 了,该来的总是要来,从民政局冷冷清清到妇产科缺孩子,再到幼儿园关停潮,现在轮到了小学关停潮,这个传播链条还在扩散。', - fieldInfo: ['地区', '时间', '小学学龄人口变化'] - }, - { - text: '实际上,如果鹤岗化只是局限于教育领域,那还好说,但不是实际情况复杂的多楼市,像鹤岗那样房子白菜价的城市越来越多了,据不完全统计,至少有 10 个省 24 个城市陷入几万元买房的讨论。不是每平方米单价几万,而是一套房总价几万。网传广东惠州6万,广西南宁5万,山东东营4万,江苏南京3万,黑龙江大靶1万,这个传播势头在这轮楼市调整的加持下,现在已经来到了北京的外围,在京津两市的交界处,抹楼盘从 160 万元降到了 39 万,而且打了骨折还卖不出去。', - fieldInfo: ['城市', '房价'] - }, - { - text: '地方财力,之前鹤岗是全国第一个财政重整的地级市,甚至传出来停招公务员,现在过紧日子的城市也越来越多了。秦岭深处某县人口只有3万,编制人员却有 2, 194 名,一年的行政管理支出 1, 800 万,排在支出的首位。乌蒙山区某县一般公共预算收入 7 个亿,但工资预算总支出 26.3 亿,其中在职人员 20 亿,离退休人员 1.7 亿,零聘人员 4.6 亿。注意一个细节,在职人员数量 1.5 万,临聘人员数量 2.8 万。', - fieldInfo: ['地区', '人员数量', '人员类别', '公共预算收入', '工资预算支出'] - }, - { - text: '中国房价一度被视为坚不可摧的资产堡垒,更一度有京沪永远涨的口号。然而,自 2021 年以来,包括一线城市在内,房价持续低迷,深圳全市二手房均价距离 2021 年初的最高点跌幅已接近40%,而且还没有停下来的意思。各热点城市二手房每成交一套就要多出好几套,新增的房源和房价表现几乎完全正相关的是飞天茅台的价格, 53 度。', - fieldInfo: ['城市', '年份', '房价变化'] - }, - { - text: '飞天茅台在 2021 年巅峰时期,一瓶售价超过 3, 500 元,如今已经快跌破 2, 000 元,是巧合吗?过去一线城市房价和飞天茅台价格可以说是最硬的人民币计价资产了,甚至比现金还要优质。一线房产和飞天茅台在相当长的一段时间内有两个相同属性,一他们可以长期增值。二他们易于套现。然而现在情况出现了前所未有的变化,房价和飞天茅台两者双双在 2012 一年见顶。', - fieldInfo: ['年份', '价格'] - }, - { - text: '这不是巧合,其他很多数据也都在 2021 年见顶,比如另一个在 2021 年见顶并开始走下神坛的保时捷。保时捷销量的恶化还在加速,过去一年多,中国市场上保时捷的落地价可以说是惨不忍睹。近期,保时捷只卖 44 万的话题也引发了热议,其华南区域一家终端门店称, Macan 正在进行优惠促销,最高优惠 16 万,该车优惠后最低售价为 44.8 万。另外,在山东、湖北、江西、福建、浙江、江苏等多省份,该车均出现了 50 万元以下的裸车价,而报价达到 103.8 万的泰肯,现在 70 多万就可以拿下。目前,保时捷几乎所有的车型都可以打 7- 8 折。', - fieldInfo: ['车型', '落地价', '优惠金额', '报价'] - }, - { - text: '不只是保时捷,包括奔驰、宝马、奥迪在内的豪华汽车品牌今年以来都在大幅降价,但仍然止不住销量断崖式下降。 2024 年一季度,保时捷中国卖出 16, 340 辆,同比大幅下降24%。保时捷在今年 5 月份仅卖出 4, 633 辆,同比去年5月下滑高达40.61%。这说明保时捷在中国的销量正在加速减少。', - fieldInfo: ['时间范围', '销量', '同比'] - }, - { - text: '从两年前开始,特斯拉的 3 和 y 中国售价就是世界最低的, 7.98 万可以买到原本指导价 13.18 万的油电混动的卡罗拉。做一个对比,美国的油电混动卡罗拉的起售价是 2.35 万美元,有时甚至还要加价。按照美元人民币汇率计算,这款车的中国售价居然只有美国的一半水平,尽管配置存在差异,但不影响价格差异巨大的这个结论。除了卡罗拉外,汉兰达和凯美瑞也都大幅降价,即使是两年前,我们也很难想象只要 14.98 万人民币就可以买到最新款的混动版凯美瑞。', - fieldInfo: ['车型', '售价', '指导价', '美元起售价'] - }, - { - text: '中国物价的下降不仅仅体现在商品上,服务价格也是类似的趋势。举个例子,十多年前我常驻北京,当时经常在晚上十一二点从首都机场打车到西直门这样一段单程大约需要 110- 120 元,而现在滴滴大概只要 60- 70 元。如果是现在的出租车,价格和十多年前还是一样的。', - fieldInfo: ['交通方式', '时间', '价格区间'] - }, - { - text: '以工行、农行、建行发布的数据来看,其 2023 年个人住房贷款不良率分别由 2022 年的0.39%、0.51%、 0.37% 增长至了0.44%、 0.55% 和0.42%,基本都实现了两位数的增幅。大家别觉得这些小数字没啥大不了的,要知道这三家银行每一家的个人住房贷款余额都超过了5万亿,而且按揭贷款往年基本上都是银行稳赚不赔的买卖。供建农三家银行之所以每年能够包揽中国最赚钱企业的前三名,按揭贷款所带来的收益贡献巨大。现在这个优质资产的不良率正在以每年两位数的增幅增加。', - fieldInfo: ['银行', '年份', '不良率'] - }, - { - text: '你是银行,你慌不慌?而另一项作为佐证的数据则是法拍房,大家知道现在法拍房的数据有多夸张吗?根据瀚海研究院发布的数据显示, 2022 年全国共挂牌法拍房 98 万套,去年这个数字变成了 141 万套,增长了43.9%。而今年光是一季度的挂牌数量就已飙升至 60.44 万套通,同比上涨192%。这种局势下,银行要是再不改变断供处置策略,那今年的法拍数量估计有望达到 200 万。', - fieldInfo: ['对应时间', '法拍房数量', '同比'] - }, - { - text: '事实上,对银行来说,现在的行情即使他收了房也难以处置。我们以北京为例, 2023 年北京挂牌法拍房 8, 153 套,最终成交仅 2, 771 套,处置率为33%,这还是房价波动相对较小的北京,换到其他已经跌穿首付的地区,处置率恐怕只会更低。而在法拍流程里,流拍和拍品二次上拍都会在此前的价格上更进一步降低,这也导致了银行回款难度的进一步提高。虽然按照现在的规则,这部分差价是由贷款人承担的,但对方既然已经到了选择断供的地步,可想而知最终也执行不了多少。', - fieldInfo: ['地区', '法拍房数量', '成交量', '处置率'] - }, - { - text: '另一项推动银行改变策略的原因,则是今年4月 30 号的一场会议,这场会议确定了房地产行业未来一年的发展方向,统筹消化存量房产和优化增量住房,用大家都熟悉的话来说就是去库存。根据国家统计局的官方数据显示,截至 2024 年5月,我国未出售商品房为 7.46 亿平米,远超 5.9 亿平米的正常库存水平。而整个上半年,根据 CRS 的统计,全国 222 个城市总计出台了 341 项宽松政策,但带来的效果均不理想,无论是销售面积还是投资金额,仍然在持续走低。', - fieldInfo: ['时间', '商品房面积', '面积类别'] - }, - { - text: '大家好,我拍拍一名做过财经记者,大学老师和滴滴司届 up 主。 2023 年,我国汽车出口量达到了 491 万辆,超越日本成为世界第一汽车出口国。要知道,日本在这个位置坐了 8 年之久,而中国仅在过去三年时间里接连赶超韩国、德国、日本。中国汽车出口, 2021 年 202 万辆, 2022 年 311 万辆, 2023 年 491 万辆。', - fieldInfo: ['年份', '国家', '出口量'] - }, - { - text: '中国汽车转眼间为何变得这么受欢迎呢?又到底是哪些国家在购买中国汽车?中国卖给老外汽车又是些什么品牌和价位车型?本期视频就为大家打开中国汽车出口全球第一背后的真实数据。首先,中国出口的 491 万辆汽车都是些什么车呢?根据乘联会统计,中国乘用车出口量前十车型分别为名爵ZS、特斯拉 model y、奇瑞瑞虎7、特斯拉 model 3、名爵 4 EV、奇瑞虎5X、欧盟达名爵5、缤越元plus。除了特斯拉的 model y 和 model 3,其他车型国内指导价基本都在 10 万元左右,比如排名第一的名爵ZS,指导价 8- 9万元,最便宜的名爵 5 和缤越低到6万元就能拿下,可见中国汽车出海主打的还是一个性价比。', - fieldInfo: ['车型', '指导价'] - }, - { - text: '如果按燃油车、新能源车的分类来看, 2013 年中国出口燃油车 371 万辆,出口新能源汽车 120 万辆,新能源车占到出口总量的25%,虽然这个占比目前只有 1/ 4,但去年新能源出口增速是77.6%,势头不可谓不猛。', - fieldInfo: ['车辆类型', '年份', '出口量', '出口占比', '出口增速'] - }, - { - text: '那中国汽车出口都卖到了哪些国家呢? 2013 年中国汽车出口量前十的国家分别是,俄罗斯90.9万辆,墨西哥 41.5 万辆,比利时 21.7 万辆,澳大利亚 21.4 万辆,英国 21.4 万辆,沙特阿拉伯 21.3 万辆,菲律宾 17.2 万辆,泰国 16.9 万辆,阿联酋 15.9 万辆,西班牙 13.9 万辆。按地区来看的话,欧洲市场占中国汽车对外出口的38%,远超其他任何单一大洲,可见中国汽车正在得到全世界更多人的认可。', - fieldInfo: ['出口国家', '出口量'] - }, - { - text: '当然了,中国汽车出口世界第一,又不得不提议俄罗斯和墨西哥这两个国家可以说去年是把中国车买爆了。 203 年,中国对俄罗斯的汽车出口量从上一年度的 16 万辆暴增到了90.9万辆,增加了468%。在俄罗斯的新车市场中,第一名是俄罗斯品牌拉达,第二至第七名则全都是中国品牌,比如第二名是奇瑞金车,市场占有率11.2%。第三名是哈弗,新车,市场占有率10.6%。俄罗斯卖最好的新能源车也是来自中国的极客。目前中国汽车已经占据俄罗斯新车市场的51%,可以说是拿下了半壁江山。而对于中国而言,仅俄罗斯一个国家 203 年就贡献了中国汽车出口增量的42%,甚至有俄罗斯本土汽车经销商预测, 2024 年中国汽车可能占据俄罗斯新车份额的80%。', - fieldInfo: ['年份', '出口量', '占有率'] - }, - { - text: '有人说俄罗斯满爆中国汽车是因为欧美的贸易封锁,这也步无道理。 2013 年在俄罗斯的新车市场中,欧洲的市场份额从 18% 降到了4%,韩国从 16% 降到了6%,日本从 12% 降到了5%,和欧日韩都是对俄罗斯实行了限制出口国家,其中就包括了部分汽车,可以说中国汽车吃下的正是欧日韩在俄罗斯丢掉市场。', - fieldInfo: ['国家', '新市场份额', '旧市场份额'] - }, - { - text: '当然了,除了俄罗斯之外,其他国家也在买中国汽车,比如墨西哥。 2013 年,墨西哥所有销售汽车中有 25% 来自中国,而在 6 年前这个数字为0。澳大利亚也在不断买中国汽车,最受澳大利亚欢迎的中国汽车品牌是名爵,去年卖了 5.8 万辆。在新能源车市场,比亚迪则占据了澳大利亚的新能源汽车 14% 份额,位于第二名。', - fieldInfo: ['国家', '年份', '中国汽车占比'] - }, - { - text: '当然,这里也不得不提一下第一名,那就是特斯拉市场份额高达53%,在东南亚市场,中国车企业销量在 2013 年同样实现小幅上升,最典型的就是泰国,在泰国的新能源车市场,中国品牌占据了 80% 的份额,比如比亚迪的原 plus 就是泰国的新能源车爆款,那到底是什么原因让中国汽车爆卖呢?基本还可以总结为三方面原因,首先是全球疫情爆发,由于中国汽车的供应链完善,疫情期间仍能维持稳定生产,而日韩这些过去的出口大户受疫情影响,芯片、钢材、橡胶等关键原材料短缺,不仅汽车产能下降,而且成本升高,这就让中国汽车更具性价比。而随着中国国内新能源汽车市场越来越卷出海,成为不少中国车企的选择,比如比亚迪 2023 年进入全球 58 个国家和地区,出口汽车 24 万辆,是上一年度的 3.34 倍。在泰国新能源车市场,比亚迪单独占到了 40% 的市场份额,是名副其实的泰国新能源汽车销冠。而且中国新能源汽车并非只是具备成本优势,汽车与 AI 互联网融合的智能化更是中国车企的拿手好戏。从豪华配置到智能大屏,从外观设计到内饰比拼,这让中国新能源汽车的溢价能力明显变高。2019 年中国新能源汽车平均出口价格每量只有 5, 000 美元, 2022 年涨到了 2.2 万美元。比如比亚迪汉在欧洲发布时价格接近 50 万人民币,是国内售价的两倍多。在泰国、以色列、新西兰等多个国家,比亚迪也已经是新能源汽车的销售冠军。不过,中国汽车征服海外虽然是一部励志爽门,但其实有不少挑战。', - fieldInfo: ['品牌', '市场份额'] - }, - { - text: '其实中国汽车出海不禁让人想起曾经的中国摩托车出海。 2000 年前后,中国摩托车进军越南,一度占据了 80% 的越南市场份额,但不到三四年时间,却被日本摩托车打得片甲不留。如今日本摩托车在越南占据 95% 的份额,而中国摩托车百分之一都不到。曾经也有大量中国摩托车车企在越南建厂,但却形成了恶性竞争的关系,疯狂打价格战,导致服务和质量越来越差,越南的中国摩托车车企仿佛是飘在越南的。', - fieldInfo: ['时间', '摩托车品牌', '市场份额'] - }, - { - text: '每个中国制造品牌的背后都有一批优秀的零部件供应商,像汇川技术、恒力液压、先导智能、顺域光学、军胜电子这样的零部件企业也是中国制造的骄傲,只不过知名度无法媲美消费者直接接触的终端品牌。按照官方的口径,中国规模以上也就是年销售收入 2, 000 万以上的制造企业有 44.5 万家。至于中国一共有多少家制造业企业存在各种口径,从 300 多万家到近千万家不等。万德资讯给我的数据是,中国大约有 622 万家存续的制造业企业。海之在线是一家总部在上海,聚焦中间品贸易的数字化平台,连接着 70 万家工厂,他们给我的数据是,中国规模以下的中小微工厂大致有 400 万家。这期节目标题中的 400 万家沉默工厂处处记载于此。海志在线的创始人、 CEO 佘莹对我说,从平台看, 40% 的工厂规模不到 50 人,近 90% 的工厂不到 500 人,大部分工厂的年产值在数百万元到数千万元。如果和大企业比,你可以说他们就是一个个的小做法。如果走进去可能会看到老旧的机器上油漆斑驳,可以看到生产计划就用记号笔写在车间墙上挂着的白板上,甚至会发现用破洞的木板随意围搭起来的厕所,待客的茶水里则混杂着浓浓的机油味。但他们就是中国制造业毛细血管层面的供应链小节点,勤勤恳恳的维护设备、搞生产,他们最在意的是生存,是接到订单以及在满足客户之后能够完整的收到货款。', - fieldInfo: ['企业类型', '企业规模', '企业数量'] - }, - { - text: '有报道称,一些地方政府面临收入短缺,要求企业缴纳可追溯到 1990 年代的税单。这种紧缩政策在房地产市场寻找几步的时刻,会损害上信心和经济。高盛认为,中国中央政府可以通过加大对西方政府的财政支持来切断机房政府无紧缩所出现的负面溢出效应,那如同美国监管机构在次贷危机期间通过成为最后贷款人来切断金融危机的传播一样。关于出口和机产之间的分化,可以同中国的金属生产中得到证实啊。铝和其他废且金属的产量相比疫情之前上升了 20% 以上,而钢铁的产量下降了 5% 到10%。在房产方面,开发商越来越依赖银行融资, 5 月份对开发商的银行贷款同比增长了19%。而随着房地产销售的下滑,房贷和存款跟预付款的比例同比下降了 30% 到40%。高盛银行股票团队预计从 2024 年到 2026 年,房地产贷款将增加 4.5 万亿人民币,以完全期待收缩的房地产债券和设防的影子银行贷款。', - fieldInfo: ['时间', '金属种类', '产量变化'] - }, - { - text: '中国经济分化并不止于出口和房地产基础设施的固定资产投资。细分项显示,建立燃气和水的生产投资已同疫情前水平翻倍,远远超过了整体的基建的投资增长。因为中国政府首先优先考虑农源供用安全和脱碳。在零售销售当中, 5 月份代线销售商品同比增长13%,而餐饮销售仅增长5%,线下商品的销售保持在去年同期的水平。', - fieldInfo: ['经济领域', '同比增长'] - }, - { - text: '7月中旬将举行两场重要的政策会议,前者将专注于评估当前的经济状况,并为今年剩余时间制定周期性的政策安排。后者将专注于至少未来五年解决经济结构当中的重大改革议程。鉴于一季度的实际, g GPT 同比增长5.3%,而且去年基数较低,那么 G2 季度增长可能高于5%,政府的全年增长目标仍然在轨道上。', - fieldInfo: ['季度', '同比'] - }, - { - text: '高盛认为,政策执行者不会在 7 月份的首场会议上释放任何重大的刺激措施,宏观政策的证件可能大于维持当前立场和执行现有的政策。另一方面,鉴于 5 月份宣布的最后一批措施不及预期,可能存在引入更多期产宽松政策的可能性。在货币政策方面,资本外流的担忧和银行利润率的下降限制了央行降息的能力。高盛预计三季度将降息 25 个基减,以适应大量政府债券发行,并预计季四季度9月首次降息后会再降息 10 个期减。在财政政策方面,高盛预计政府债券的发行将在下半年显著增加,以完成年初发行缓慢的全年配额。除非增长急剧放缓,否则基建的投资不会加速太多。对于政府 3 月份公布的预算计划,高盛虽然预测中国的增强型的弹盛赤字从去年的 gdp 11.2% 会适度扩大到今年的11.9%,但由于今年出口强计可能会存在财政扩张不及预期的风险。信贷政策方面,正如央行行长6月 19 号陆家嘴论坛上所说,由于金融套利的虚假贷款和监管机构随后对金融系统中这种资金空转的打击,信贷增长与 GDP 增长之间的联系已经减弱。预计摄容总量的增长将同去年的 9.5% 放缓到今年的9%。在住房政策方面,4月的政治局会议表明,决策者希望严防房地产市场的尾部风险。由于地产价格和活动的持续下行,以及机房国企通过央行的贷款计划购买空池公寓的速度缓慢,高盛预计进一步削减房贷利率以刺激需求,同时为去库存提供更多的资金和效率的支持。在外汇政策方面,鉴于美元持续强势和资本外流的压力,高盛认为央行将在短期内保持美元对人民币汇率的稳定,三个月的高盛预测是7.3,因为外汇市决策者可以迎来抵消关税对出口负面影响的工具。 2018- 19 年的经验表明,如果特朗普赢得美国大选,而且正如他最近几个月所宣称的,会对中国实施正大的关税,那美元兑人民币可能会显著贬值。', - fieldInfo: ['降息时间', '降息基点', '原因'] - }, - { - text: 'Because Japan is one of the most import dependent countries in the world, importing over 90% of its energy and over 60% of its food, a weak yen means inflation has returned to Japan for the first time in decades. ', - fieldInfo: ['import ratio', 'import type'] - }, - { - text: ' For context, in the post war years, Japan experienced many decades of rapid economic growth in a period dubbed the Japanese Miracle. From 1955 to 1990, Japanese growth averaged 6.8% per year, and GDP multiplied eight times, with growth falling below 3% only once during the 1974 oil shock.', - fieldInfo: ['year', 'gdp growth rate'] - }, - { - text: `Anyway, this anxiety subsided in the 90s when Japan experienced an enormous financial crisis after a rapid appreciation in Japanese stock and real estate prices during the 80s. In 1990, the bubble burst and continue to burst for a while. In the decade after 1990, residential house prices fell by more than 50%, commercial property prices fell by something like 85%. And Japan's main stock index, the Nike 2,2,5 fell by about 75%. Japan's economy never really recovered and growth and inflation both remained close to zero until very recently.`, - fieldInfo: ['rate value', 'rate type'] - }, - { - text: `From 2016 until late last year. The Bank of Japan even began what's called yield curve control, which essentially involved buying up enough debt to guarantee that government borrowing costs wouldn't go above a certain level. Japan's ultra loose monetary policy came under pressure in 2022 when inflation started rising across the world. Usually, central banks raise interest rates, but the bank of Japan decided not to, both because inflation was relatively low in Japan, but also because thanks to its enormous debt burden, even a slight raise in interest rates would translate to a massive increase in debt servicing costs, especially for the Japanese government. Unfortunately, things have become more difficult as other central banks have raised rates, making their currencies relatively more attractive and sparking a decline in the yen. In the last year, the yen has fallen from about 130 to the dollar to a 34 year low of 160 to the dollar on Monday. Now the speed and severity of this decline presents a difficult dilemma for the bank of Japan because thanks to Japan's reliance on imports, it sparked significant inflation in essential items like food and energy. But they still don't want to raise rates for the reasons we've just mentioned earlier. This is why on Monday evening, instead of raising rates, the bank of Japan used billions of dollars worth of Japan's foreign exchange reserves to buy up the yen on the international market, artificially inflating its value. While this seems to have worked in the short term, as of Tuesday morning, the yen is now trading at nearer 155 to the dollar. It's both expensive and fundamentally unsustainable. Even if the bank of Japan has some of the largest foreign exchange reserves in the world. All in all, assuming the bank of Japan won't engage in significant rate hikes, this means that the yen is very much dependent on what goes on in the rest of the world. If inflation comes down and other central banks start cutting rates, then this will reduce some of the pressure on the yen. But if inflation turns out to be stickier than we'd like, which seems to be the case, then the divergence between the bank of Japan and other central banks will persist, which means more downward pressure on the yen. If this happens, then the bank of Japan won't be able to stave off the yen's decline with exchange reserves forever. And eventually, they'll have to choose a horn of their uncomfortable dilemma, either to just accept the yen's decline and all the inflation related political turmoil that comes with it all, raise rates and just hope that the world's most debt burdened economy can somehow deal with it.`, - fieldInfo: ['date', 'yen to dollar'] - }, - { - text: `Blanket is all over the news. Linkage is now more valuable than Zomato. Linkage reported over 2,300 for rupees and revenue. And then now speak about Zomato, they speak about blinking bigger than tomato right now with the valuation of roughly $13 million and a market share of 46%, it has disrupted India's 23,000 crore quick commerce industry, a company that Zomato acquired in 2022 to enter into quick commerce, but now has become more valuable, the Zomato's own food delivery business. In fact, the company 3 x its revenue from 800 crores to 23 crores and is expected to break even in the first quarter of Fi 2025.`, - fieldInfo: ['company', 'marker share', 'valuation'] - }, - { - text: `By the way, this is going to be detailed, so feel free to pause the video wherever you feel confused. First of all, let's take a realistic average order value of 600 rupees, which is very close to what most people usually order on blink it. If you look at the revenue side, which is the money that bind it earns here for themselves from each order is divided into three sources. The first one is warehousing services and marketplace commissions. This is basically the amount that suppliers are paying to blanket for showing and selling their products. And see on every order of 600 rupees, 11 to 13% is coming from suppliers, which is roughly 72 rupees.`, - fieldInfo: ['revenue source', 'revenue value', 'revenue ratio'] - }, - { - text: `Now the second part of the income of this order is the ads that come companies show on blanket. This is the price that brands pay to show their products above other products as you scroll the app. For example, brew might pay to show its coffee first when someone searches for a keyword like coffee, it's roughly 2.3 to 3.5%. In our case, let's take 3.5% and it will come down to 21 rupees.`, - fieldInfo: ['keyword', 'ad rate', 'cost'] - }, - { - text: `The next is customer fees, which includes your delivery fees, handling fees for packaging and delivering the food to your doorstep, and even additional fees like fees they charge you for having a small cut. This percentage comes at around three portion of the average order value and is roughly 18 rupees in our case. By the way, there are also other levers like membership plans or free delivery plans that these plan platforms try to sell you often like Zepto does it with their offering of zeptopass. But if we don't over complicate and dive much deeper into this, we see that in a nutshell, on an average order of 600 rupees, blanket owns roughly 110 rupees. This 110 rupees is known as a take rate, the share that blanket keeps for itself from an order.`, - fieldInfo: ['take rate', 'customer fees ratio'] - }, - { - text: `Now let's come down to the cost side. Even here you have four elements. The first one is the biggest one, which is the last mile delivery cost, which is the last step when the riders deliver the orders to you and cost about roughly 7% to blanket. And in our case, it would come down to 42 rupees. The next one is dark store mid mile and warehousing cost. This entire combination of cost comes down to about 6.5%. And in our case, it would be 39 rupees. The other variable cost, which includes packaging, washes, support, communication and payment charges are roughly 2%, which comes down to 12 rupees. And now the fourth and the last one is customer acquisition cost, which is the discount, the incentives and the offers they try to give you to make tempting these for you. This comes at about 0.2 to 0.3% at about 1.8 rupees. So if you subtract these two amounts, blink it on roughly 15 rupees from entire transaction. This 15 rupees is not the net profit, by the way, but the contributing profit. Now what is that? See, contributing profit is the profit that the company is earning by serving each order. And company considers only the variable expenses in this case, which is the expense that we have already discussed. And it does not mean net profit because there are so many fixed expenses that are not considered like expensive salary of tech folks, rent, insurance, depreciation, and all similar big sums of money.`, - fieldInfo: ['cost element', 'cost ratio', 'cost value'] - }, - { - text: `The answer to this is the dark stores, the 2,500 to 4,000 square feet big stores that are located in 1.5 to 3 kilometer radius near your homes to ensure super quick delivery. And by the way, these stores are super big. For example, if your nearest kirana shop has about 1,500 SKUs, these stores can have 4 x a number of excuse. In fact, a highly efficient dark store can do a better gross merchandise value per square foot than a highly organized supermarket like Dmart. So while a dark store or blanket can do a GMV of 90,000 rupees per square fit, Mart can only do a GMV of 47,000 rupees per square fit. But how does this work? See, these stores are like supermarkets, but have no Hawkins, which means that only rider can go and collect stuff from there. These stores have a lot of inventory that comes from Mother Warehouse store, which is located in the outskirts. So to give you context, for every 40 dark stores located in the city, there is always a mother warehouse, which is located at the outskirts or city. And that is more than 10 times big as a dark store, which is about 20,000 to 1 lax, 75,000 square feet big. It is super huge. And companies don't set dark stores everywhere, by the way. They are smartly set based on multiple parameters like average household income of the area, peak time traffic of the area, infrastructure structure of the area, and also the population density. Also, there's usually about a staff of 25 to 30 people who are working in three shifts in these dark stores who would take care of the packaging. And as we've discussed earlier as well in the video, that the operating cost for a dark store comes at about rupees 22 for each order. And if you want to understand this calculation better, we have put it here. So you can pause the video and look at this table.`, - fieldInfo: ['store type', 'store size', 'SKU', 'GMV', 'staff count'] - }, - { - text: `Now blanket has done a really solid job here as they have, right now, the highest number of dark stores with 451 stores in 27 cities compared to 450 stores of Insta margin, 25 cities, 30 of Zepto intensities and 350 stores of Big Basket in 35 cities. By the way, this is not something they built in a day because it was the first grocery app in the country, which started in 2014 as growers. So their team and their execution is way more experienced if you compare them with other competitors, and now they're just building on this and increasing their penetration throughout the country. By the way, they're mostly penetrated in north and east India, and 90% of the GMV comes from top paid cities. But as they enter south and other cities, this can be a huge opportunity for them as they already have an experience DNA running in the organization.`, - fieldInfo: ['company', 'stores number', 'cities number'] - }, - { - text: `Now coming down to the second insight, which is cracking high average order value. But why are we talking about AOVs? Average order value plays a big role in quick commerce because bigger the average order value, bigger is the contribution margin for the company, which means that delivering just a set of bananas or apples is less profitable for blanket. Then delivering a set of bananas, apples, onions, tomatoes and a packet of bread together. And blanket has the highest average order value if you compare it with all the comparators. And just look at the stark difference by yourself. For big Basket, the AOV is about 400 to 500 rupees. For Zepto and Instamar, it is around 450+. And for blanket Au UV is about staggering 6,35 rupees. This is something that is definitely giving them an edge in pulling one of the most important levers in the ecosystem. In fact, in the last quarter, this number was 523 rupees at the start of Q1 fi 23. It just shows the speed at which they are growing really fast, and they have done this really well through their amazing SKU strategy.`, - fieldInfo: ['company', 'AOV'] - }, - { - text: `Not talking about the third insight, new customer acquisition. See, blinkits market share has not been the highest forever. It was 32%2082. And in the same period, Instama's market share has fallen from 52%, while Zeptos has increased from 15 to 28%. And we had to talk about the elephant in the room, the Zomato Effect. See, Zomato is the biggest food delivery app that has more than hundred million active users every month on its app and a market share of more than 56%. When it comes to food delivery, these users are more than three ties what blanket has at the moment. So even getting 5% of Zomato's monthly active users as new customers could bring more than 33% rise to their current Mau base.`, - fieldInfo: ['company', 'marker share'] - }, - { - text: `Want to show you something cute little condo in Toronto's Harbor Front neighborhood, bustling part of the city. It goes on the market in the summer of 2022. The sellers put it up for $480,000. It didn't sell early. 2023, it's back on the market for 460 k. No luck later that year, posted again at 4,50 k. Still nothing. And a few months ago, the sellers tried again. At $430,000, no takers. This condo was sitting on the market for more than 400 days without a sale. Right now in Canada's biggest cities, there's a ton of condos like this struggling to sell. A condo sales in Toronto, for example, haven't been this low since the financial crisis in 2009.`, - fieldInfo: ['year', 'price'] - }, - { - text: `Let's compare what a condo investment in Toronto looked like in 2016 to today. So according to the Toronto Real Estate Board, the average price of a one bedroom condo back then in 2016 was about three hundred thousand dollars and with 2016 interest rates about 2.7%, that worked out to a mortgage payment of about eleven hundred dollars a month. Rent for the average one bedroom apartment at that time was about sixteen hundred and sixty dollars. Not bad from an investor point of view, even with, you know, maintenance fees, property taxes, that condo is essentially paying for itself while you build equity.`, - fieldInfo: ['average price', 'inerset rate', 'mortgage_payment', 'rent'] - }, - { - text: `Now what if you were to buy a one bedroom condo today in Toronto? That could cost you about 550 grand. So prices have very clearly gone up, but so have interest rates. The carrying costs on a property are far higher than they ever used to be. Well, not ever, but in recent memory. At current rates, 6.8%, maybe now you're paying more than $3,000 a month for your mortgage payment alone. Then you've got, you know, property taxes, maintenance fees and the average rent per unit like that, about 24 hundred dollars a month you're now paying out of.`, - fieldInfo: ['price', 'inerset rate', 'mortgage_payment', 'average rent'] - }, - { - text: `Now the renewals come in and you're losing a lot of money, but you've actually come to realize in the last 12 months the price of that condo has probably dropped about $40,000. So you're starting to enter into a state of actual fear.`, - fieldInfo: ['time period', 'price change'] - }, - { - text: `According to stats Cam, the average size of a new condo in Toronto has shrunk significantly over time. From 1981 to 1990, new condos were on average about 1,000 square feet. From 2016 to 2020, they were around 650 square feet or about 40% smaller. And if you ask anyone who lives in the downtown core right now, 650 square feet actually feels pretty big.`, - fieldInfo: ['time period', 'average size'] - }, - { - text: `Right now, for example, in Toronto and Vancouver, three quarters of larger condos, the ones, you know, maybe more suitable for a family built decades ago, those are being lived in by the people who own them. But for those much smaller condos built after 2016 with investors in mind, only about half are being lived in by owners. Remember that cute little studio that we showed you at the start that took 400 some days to sell. It was 330 square feet. Here's a two bedroom, 700 square foot unit in that same building. It's sold earlier this month on the first try in just 13 days. If we.`, - fieldInfo: ['days to cell', 'unit size', ''] - }, - { - text: `Back then in 2020,2021, even into the beginning of 2022, we saw these historic low interest rates and people were taking out loans then and taking out bigger loans, right? They go and buy a house that they wouldn't have been able to afford. 3% or 4%, but they could afford at 1.25%. They called.`, - fieldInfo: ['year', 'interest rate'] - }, - { - text: `No. So let's say there's a young couple in Ontario that bought an average priced house in 2019,$631,990. They put pretty standard down payments, down 20 percents, which leaves you with a mortgage size of about $500,000. Amortize the loan over 25 years, they take a five year fixed rate of 2.9%, which was also kind of standard at the time. That means they've been paying about, and I'm rounding to the nearest dollar here, 2,367 bucks for the past few years. But now that mortgage is up for renewal. Welcome to 2024. And the couple signs on to another fixed rate mortgage, but they have to do it at the bank's current rate, which is around 6%. That means their new monthly payment is, again, I'm rounding here, $3,075 a month or an extra 700 bucks a month. Right.`, - fieldInfo: ['year', 'fixed rate', 'monthly payment'] - }, - { - text: `Think of it this way. This circle is your $2,200 a month mortgage payment at a relatively low interest rate pending on the overall size of your mortgage, that might mean $900 of that payment is just servicing interest with the other 13 actually paying your loan back as the interest rate rises. Maybe now instead of 900 dollars a month, it's 20. One hundred dollars a month in interest. But your contract says your total payments stay the same, so you're still paying 22 dollars a month, meaning only 100 of those 22 hundred dollars are actually paying down your loan at that point. I have news for you. You're very close to being underwater, stuck in a perpetual state of paying down a loan where you're only barely paying down that loan. Welcome to lifelong debt, the time it will take to pay off his mortgage nearly doubled from.`, - fieldInfo: ['monthly payment', 'interset payment', 'principal payment'] - }, - { - text: `Collectively, we're just starting to approach the edge of this cliff. RBC estimates about $186 billion worth of mortgages are up for renewal in 2024. Next year, it'll be 350,15 billion. That's a ton of mortgage debt that was taken on at historically low interest rates by people who may or may not have been able to afford getting into the housing market otherwise.`, - fieldInfo: ['year', 'mortgage_debt'] - }, - { - text: `What would you do if one day your neighbor, who you've known for years, you see him building a bomb shelter? Would you think that guy's crazy or would you wonder what does he know that I don't? Turns out banks right now are building a bombshelter. Just this quarter, Canada's big six banks have set $4.3 billion aside to cover bad loans. That's almost double what they set aside in the first quarter of last year and more than 11 times what they set aside in the first quarter before that.`, - fieldInfo: ['quater', 'year', 'amount_set_aside'] - }, - { - text: `This is important. About 65% of them, 70% of them have not noticed any radical increase in their payment because their mortgage company sold a product where the payment did not go up when prime went up. Their payment did not go up when prime went up. That's the important part to understand, because it means you might have people ultimately paying more without even realizing it.`, - fieldInfo: ['percentage'] - }, - { - text: `Now, luckily, most economists do expect rates to keep dropping. According to that same RBC report, it still might not be enough to, quote, save this cohort to get them down to a more manageable monthly increase like 20%. They argue the bank of Canada would have to lower its prime rate way down to around point two five % by July 2026, something they admit is an unreasonable expectation.`, - fieldInfo: ['date', 'rate change', 'monthly_increase'] - }, - { - text: `The old rule of thumb in my day was you spend about a third of your income on housing. Now you'll hear anecdotal evidence, particularly in places like Vancouver, Toronto, where you'll hear 70 to 75% of income is being spent on housing. So in those cases, then if they have to reset at a higher interest rate, it's the house that's gonna go down first. So.`, - fieldInfo: ['location', 'income_spent_on_housing'] - }, - { - text: `In order to get the most accurate reading on the US housing market inventory situation, we need to consider both supply and demand. Supply in this case is the level of inventory for sale and demand is the current case of sales volume. If we start with sales volume, we can see the existing home market has a sales pace of roughly 3.7 million homes per year, while the new home market has a sales pace of 619,000 homes per year. Right off the bat, we can see how the existing home market is almost six times larger than the new construction market in terms of sales volume. Both of these markets, existing and new, have seen a huge reduction in sales volume or buyer demand since interest rates have increased, as affordability is out of reach for most people. If we take this annual sales pace and divided by 12, we can get an idea of the average sales pace per month. Of course, there are seasonal patterns, but if we normalize for those effects, we can see that the current monthly sales pace in the existing home market is roughly 309,000, and the new construction market is selling about 51,000 homes per month. At the peak of the housing boom during the pandemic, the existing hallmark had a sales pace of 500,000 units per month and the new construction market was selling nearly 90,000 units per month. Now that we have an idea of the current level of demand, we have to look at supply or the level of inventory for sale in the existing home market. There are currently 1.1 million homes for sale, one of the lowest on record. If we just look at inventory alone. In the new construction market, there are 479,000 units for sale, one of the highest levels on record, only surpassed by the housing bubble of 2007.`, - fieldInfo: ['market type', 'sale pace annual', 'sale pace monthly', 'sales_pace_peak_monthly', 'inventory'] - }, - { - text: `You can clearly see how there is nuance to the situation of US housing inventory, the best measure of US housing inventory takes into account both supply and demand and is called the month supply. In other words, how many months of inventory are available for the current pace of sales value. If we take the current level of inventory for both the existing hall market and the new hall market, and we divide it by the current monthly pace of sales. We can see how many months it would take to sell all the inventory at the current pace of sales in the existing home market, that month's supply figure or the inventory level divided by the sales volume, 3.7. In the new construction market, it is 9.3.`, - fieldInfo: ['market_type', 'month supply'] - }, - { - text: `Generally speaking, the 5.5 to 6.0 level is considered a balanced market where there is no significant upward or downward pressure on prices. When the month's supply level is below 5.5, that means there is very little inventory available for today's market conditions and prices generally rise. On the flip side, a high level of month's supply means there's too much inventory and prices must fall. The existing home market has a month supply of 3.7, which is very low, but it's been increasing since the absolute historic level of one point six in January 2022. Never in the history of the US housing market has the month's supply of existing homes been that low. This created a very unhealthy situation in the existing home market. The inventory situation in the existing hall market is still very tight, but it's now at the highest level since before for the pandemic. The new construction market is a completely different ballgame with a month supply at 9.3, super high and way above the balanced 6.0 level. There is way more detail to the situation in the new construction market that we'll uncover in just a moment. If we look at the total US housing market situation, both existing and new construction, the aggregate month supply figure has increased to 4.5. So yes, the total inventory situation is still very tight on a national level, but the level is rising and at the highest point since 2,015. The monthly numbers are volatile, so let's look at a yearly average to make things more clear. This shows the month's supply for the total US housing market by year. 2024 is a partial year, and the current level as of May 2024 is also noted in the chart. As of May 2024, the total month supply situation is 4.5, which it hasn't been since 2015. You can also see the four years where the total month supply was below 4.0, which is extremely tight. And you can also see the 2021 situation at 2.6, which was crazy unhealthy. One major point is that this current 4.5 level is the national average. But as we know, real estate is very regional. So this means that there are some markets that are near a month supply of 6 and feeling downward price pressure, while some markets are still down at 3 and seeing prices rise with multiple offers. The new home market with a month supply of 9.3 is way above the balance level of six point zero, and there are price cuts and discounts in that market.`, - fieldInfo: ['date', 'markey type', 'month supply'] - }, - { - text: `In June, the National Association of homebuilders reported that 29% of builders cut home prices with an average price reduction of 6%. And 61% of builders use sales incentives like mortgage rate ByteDance to boost sales. But we need to talk about the new hall market and the 9.3 month supply level in a bit more detail, because there is more than what meets BI in the new construction market. Currently, there are 479,000 units for sale in the new construction market and a current pace of sales of about 50 thousand per month. In the new home market, a home could be listed for sale when it's completed, under construction or not yet started. If we look at the percentage of inventory that is completed, we can see that of those 479,000 new home units for sale, Only 20% are completed, which means 80% are either under construction or not yet started.`, - fieldInfo: [ - 'builders cut prices percentage', - 'average price reduction', - 'builders use incentives percentage', - 'units for sale', - 'completed inventory percentage' - ] - }, - { - text: `The level of completed new home inventory for sale fell below 10% during the most acute part of the US housing shortage. Normally, in between 20% and 30% of new construction inventory is completed. During really bad downturns like 2008, builders were sitting on almost 50% completed inventory, which is what led to dramatic price cuts and big layoffs of construction crews. The level of completed inventory is now back into the normal range at 20%, and it's rising, which means that if we move towards 30%, price cuts will get more intense and construction crews will be at high risk of job losses. If we take the current 50,000 new home sales pace and divide that by the amount of completed new home inventory for sale. We can see that there's currently about 1.9 months of completed inventory for sale, which is getting past the average level and into the range consistent with recessions and job losses for construction crews. If the home builders have a lot of completed new home inventory for sale, they aren't going to apply for new building permits and build even more homes. And that's exactly what we're starting to see.`, - fieldInfo: ['period', 'completed_inventory_ratio'] - }, - { - text: `Homelessness has been rare since the reemergence of homelessness in the mid 1980s. Usually it's been people in their 20s and 30s and 40s, but now we're approaching close to 30% of the adult homeless population are people 55 and over.`, - fieldInfo: ['age group', 'percentage'] - }, - { - text: `Exports from China are rising fast and US officials are nervous about this gap. We're not gonna let China flood our market. Sound familiar? There has to be a level playing field for American companies competing in China. In the early 2 Chinese factories like this one pumped out clothes and flags and cars. The sticker prices were cheap. But there was another price to be paid, American jobs. Every single employee of this plant, we'll be out of work by January. 15 years and almost 6 million jobs later, economists are debating what price another wave of imports could exact from American workers. But two key differences between then and now may have a new effect on the US economy. Look at this line. Before 2001, American manufacturing employed over 17 million people, making toys, furniture, paper goods and much more. Then word began to circulate that China was joining the World Trade Organization. And here's what it did. Joining the WTO meant China faced fewer tariffs and restrictions from its trading partners, and the result was dubbed the China.`, - fieldInfo: ['year', 'jobs number'] - }, - { - text: `2.5 million Americans lost their jobs from 2000 to 2007. They're represented by the blue on this map. Look at this dark blue area here. That's Silicon Valley, where companies like Apple, HP and Cisco used to manufacture goods. After 2001, they moved most of their production to China, causing a 50+ percent drop in manufacturing jobs in the county, this other dark blue county, Cedar Rapids, Iowa, lost 46% of their manufacturing jobs, primarily in furniture and machinery. But this lighter blue region here was largely spared. It's called Auto Alley. The main reason it succeeded where, say, Silicon Valley's manufacturing failed, is due to investment from competitors like Japan.`, - fieldInfo: ['region', 'job_loss_percentage'] - }, - { - isEnglish: true, - text: 'Snap’s latest AR glasses aren’t its first hardware product. The company has a history of experimenting with hardware and has launched smart glasses under the brand name Spectacles. However, the company has struggled to make money from selling hardware. It first debuted a pair of smart glasses in 2016; the $130 device made it easy for users to capture short, first-person videos that they could post on Snapchat. However, the product failed, and the company had to write down $40 million due to losses from unsold Spectacles. Snap once again tried to sell new Spectacles smart glasses in 2019—this time a more premium version for $380—but that too didn’t take off. In 2021, it unveiled new glasses with advanced AR capabilities, but instead of selling them to consumers, the company sold the device to developers, hinting that the glasses were more of a prototype than an actual consumer product. Beyond glasses, Snap also tried to sell a flying drone for $230, but that device was abruptly discontinued after just a few months', - dataTable: [ - { - year: 2016, - product: 'Spectacles', - price: 130 - }, - { - year: 2019, - product: 'Spectacles (premium version)', - price: 380 - }, - { - year: 2021, - product: 'new glasses with AR', - price: null - }, - { - year: null, - product: 'flying drone', - price: 230 - } - ], - fieldInfo: [ - { - fieldName: 'year', - description: 'The year when the product was launched', - type: 'date', - dateGranularity: 'year' - }, - { - fieldName: 'product', - description: 'the name of product', - type: 'string' - }, - { - fieldName: 'price', - description: 'The price of the product', - type: 'numerical' - } - ] - } -]; - -export const capcutMockV2Data: any[] = [ - { - text: `富士康为什么突然被查?这对全国120万的富士康员工 有何影响?最近, 富士康在广东、江苏等地被税务稽查。与此同时呢, 自然资源部门 对富士康在河南、湖北等省市的用地 进行现场勘查。别小看这短短的一句话啊, 释放了两个信息, 一、是税务部门调查有没有偷税漏税。二是自然资源部门 调查土地的使用情况。要知道, 当年全国各地为了吸引富士康 使出浑身解数, 不仅帮富士康招人, 还有各种减免税, 甚至有些地方啊, 还给富士康 不能多说了啊, 按理说, 咱们给了富士康这么多优惠政策, 富士康应该感激才是啊! -可谁能想到, 老郭这是吃尽红利 翻脸不认人呐!他居然说这是在给大陆赏饭吃!富士康为啥敢如此傲慢呢? -先来看一组数据, 富士康位居财富世界500强第20位, 在中国企业中 仅次于国家电网、中石油、中石化 以及中国建筑集团。 -就连咱们熟知的宇宙第一大行 工商银行啊, 都排在富士康后面。 -富士康不仅财大气粗, 还跟全国各地啊深度绑定。 -目前 富士康在全国的工厂达到40多个, 总员工数超过了100万。 -所以很多人说 不能碰富士康啊, 万一富士康跑了该咋办? -富士康真的是大到不能碰了吗? -并不是。过去40年 我们之所以给富士康各种政策优惠, 不是因为富士康有多强, 而是因为富士康背后的苹果公司呀, 太过强大。 -没有苹果的订单, 富士康啊 连一毛钱都不值。 -过去我们扶持富士康, 那是希望打入苹果供应 链,希望苹果的零部件啊, 可以在中国生产, 在中国组装, 最后出口到全世界, 构建起一条啊 完整的电子信息产业链。 -可谁能想到, 从2019年开始, 苹果供应链开始大规模的去中国化, 中国大陆的供应占比 从巅峰时期的26%下降到如今的2.5%。 -按照苹果的如意算盘, 要想完成去中国化, 第一步呀, 就是先在越南和印度 建设一两座富士康工厂。 -第二步呢, 就是把中国供应商一点点踢出去, 换成海外的供应商。 -第三步,逐渐增加越南、 印度这些海外供应商的订单。 -第四步,也是最后的一步, 就是把中国大陆的富士康啊, 全部迁出去, 彻底完成去中国化。 -如今的苹果已经走完第二步了, 马上就要进行第三步了。 -可让他万万没想到的是, 华为啊,居然在今年9月起死回生了。 -华为的崛起 彻底打乱了苹果去中国化的节奏。 -还记得今年国庆黄金周吗? -华为上市仅仅一个月啊, 就把苹果在中国的市场份额 干到只剩17.4%。 -吓得哭客呀, 赶紧来中国亲自下场带货! -顾客为啥荒凉? -如今的中国是苹果全球第一大市场, 也是苹果全球最大的食物来源。 -吃着中国人的饭, 砸着中国人的碗, 只想在中国赚钱, 不想为中国做贡献。 -不仅不做贡献啊, 还一门心思向外转移产链, 这样的企业以及背后的代工厂, 你说凭啥还要给他特殊优待呢? -现在你明白 国家为啥要坚定支持华为了吗? -支持华为,就是在支持中国产业链, 只有华为链才能对抗苹果链。 -华为链呀, 就是中国链。关注4G实务分析,收。 -` - }, - { - text: `俄罗斯这个国家 真的是个非常神奇的存在啊, 说到政治军事, 没有人敢小瞧他, 他拥有全世界最大的国土面积 和最多的核弹头。 -但是同时呢, 一提到经济啊, 那似乎就没有俄罗斯什么事了。 -你看这俄罗斯哈, 在短短的半个世纪里面 就经历了什么政治动荡啊、 恶性通胀、 寡头黑帮、 高速发展、 战争、政府违约、 经济危机、 激进的改革等等等等。 -所以今天呢, 小林就来给大家一起梳理一下啊 这个错综复杂而又独一无二的 俄罗斯的经济。 -它到底是怎么回事? -我先声明一下啊, 一个国家的经济 确实是太错综复杂了, 所以呢,我只能挑我觉得比较重要 又有意思的地方来跟大家分享一下, 但是我觉得 重点应该基本上也都是重点。 -大家如果有什么自己的观点 或者想法, 也欢迎在评论区留言讨论。 -但是哈,咱话说好了, 留言区我们好好说话, 别动不动就打起来。 -还有就是最后啊, 我会有一个对俄罗斯经济的 一个简要 橄榄, 你要是也不感兴趣,都发生了什么, 就想看那个最经典的橄榄, 你可以直接划到最后, 但是我还是非常建议哈, 把前面这些东西都看一看, 毕竟能像小林这种 把这些复杂的东西又讲的清楚直白 又很有意思的人, 在这个世界上也不多了啊! -你也可以点个赞表示一下。 -说到俄罗斯经济啊, 咱必须得从前苏联说起。 -所以这块呢, 我就一丢丢带到历史, 帮大家刷新一下记忆。 -沙俄爆发民主革命, 迫使沙皇退位。 -之后,以 列宁为首的社会民主工党 推翻了临时政府。 -经过了5年的内战, 1922年苏联诞生。 -两年之后, 1924年这个人上台, 成为了前苏联的最高领导人, 他就是约瑟夫维萨里亚的诺维奇 斯大林。从此啊, 苏联就真正的开始 全面推行计划经济。 -计划经济哈, 就是说所有的经济资源 从分配、生产 甚至到一部分的消费 都是按照计划走。 -就比如说哈, 这点物资急缺了, 上面只要一指命令,哗, 所有的物资就都调过来。 -再比如说哈, 我们现在要开始发展重工业, 需要大家一起来建工厂, 然后上面一指命令, 这工人全就都过去, 他也不需要时间 等市场经济进行自我调节。 -其实这种模式哈, 在你方向非常明确 或者 要进行整体的大规模改革的情况下 是非常高效的。 -而当时的苏联呢, 就处于工业化和现代化 都严重不足的情况, 他就非常适合计划经济。 -于是1928年之后, 斯大林的前三个五年计划, 那可谓是效果拔群, 前苏联就迅速摇身一变, 从一个落后的农业国家 变成了一个工业大国。 -你看啊, 这使前苏联的人均GDP从20年到40年 翻了三倍多。 -而你想啊, 那时候1929年的美国 正在经历着大萧条, 整个西方哈都跟着遭殃。 -所以说啊, 这20年真的是在斯大林的带领下, 把前苏联的经济带上了一个新高度。 -虽然说哈,也有各种什么政治迫害、 大清洗,但是呢, 光从经济的角度上来说, 还是效果罢群的。 -这边呢,尝到了计划经济的甜头。 -另一边呢, 二战啊,苏联的国际地位又 得到了极大的提升, 可谓形势是一片大好, 又经历了一段时期的高速增长。 -不过慢慢的啊, 从60年代开始, 这个前苏联的经济结构 也越来越复杂, 经济发展也逐渐稳定, 那计划就不是那么好计划的了。 -你说 要没有市场这个无形的手在那调控 他,再厉害的政府 也不可能说 哪哪的经济 都给你计划的那么井井有条, 更何况啊高度集权的这种计划经济。 -他还有一个问题, 就他一般情况下都是领导指哪打哪, 这就导致了前苏联政府的贪腐呀 也日益严重, 企业的创新就会严重受损。 -前苏联就陷入了停滞时期。 -` - }, - { - text: `除非是一场巨大的危机, 不然的话 你根本没有办法去解释 此刻的股神巴菲特, 他到底在等待些什么。 -美国银行, 这是一家在西方世界, 甚至说全球金融行业里 都非常有声望、 位高权重的超级巨头。 -巴菲特则是从2011年开始 对这家公司进行了大手笔的投资。 -13年时间过去, 他一路买入, 从不卖出, 甚至说一口气把自己1/10的仓位 都压在了美国银行的身上。 -几乎所有人都觉得 美国的标志性金融大佬 买入美国标志性的金融巨头 这笔买卖天作之合。 -但是94岁的巴菲特 却把所有人都打了一个措手不及, 此时此刻, 他在狂卖美银。 -根据美国SEC官方披露啊, 光是在9月的4号、5号 还有6号这三天, 他就卖出了1870 是4万股的美国银行。 -而如果要把时间拉得更长一些的话, 那么从今年的7月份开始, 巴菲特就已经从美银的身上 套现了将近70亿的美元。 -什么概念? -500亿的人民币。 -这笔钱对于巴菲特巴老爷子来说 也许不算太多, 但你要知道, 上个月 他不计成本的抛售苹果公司, 就已经把全球金融市场吓死 魂飞魄散。 -当时啊,他在毫无征兆 没有任何预告的情况下, 直接把苹果的仓位砍掉了50%。 -说真的,在我们金融行业当中啊, 甭管你干了多久, 也没有人见过这样的场。 -甚至就连美国的华尔街 现在也纷纷开始了议论, 说抛售苹果 还有美英这样的常见股票, 根本就不是巴菲特的风格。 -看到这你肯定会以为啊, 这是他年事已高退出江湖的 前兆。就像是曾经的地主一样, 每到过年就要颗粒归仓, 清算一波自己的家底。 -但你知道吗? -在过去的2023年, 巴菲特依靠投资定数了6900个亿, 而且还在年初正式的宣布了接班人, 规划之清晰, 战略之稳定, 看不见任何散场的。 -而同时呢, 全世界的金融机构、 各大投行的交易员 又眼睁睁的啊 看着他手里的现金累的跟山一样高。 -截止到目前 已经有差不多3000亿的。 -哪怕你再不关心经济, 也应该思考了, 巴菲特现在到底在等待什么? -上一次 他手里持有如此高比例的现金, 还得回忆到2005年。 -而在之后的没多久, 美国就爆发了次贷危机, 他顺势抄了一波大底。 -夕阳之所以耀眼, 是因为牺牲了整个白天 所有的光芒。 -而94岁的巴菲特, 此刻完全有可能啊, 正在屏息等待, 准备挥出他光荣山崖里最后一棒! -` - }, - { - text: `这个菲律宾怎么回事啊? -双倍差战,五渣, 回回碰瓷, 次次灰头土脸, 这有完没完啊, 这人啊,那么好了, 这货到底是个什么样的国家? -这么做图什么? -谁在背后给他撑腰? -今天我们从经济的角度 来给大家讲讲菲律宾, 三个词来概括一下菲律宾, 那就是美国舔狗、 寡头经济和菲佣帝国 对美国爱的深沉。 -一度甘当美国殖民地, 不想独立, 甚至想加入美国成为人家一个州, 奈何美上百个门阀家族轮流坐庄, 把持政权, 断经济, 把曾经的亚洲第二富国祸祸 成了亚洲最穷的国家之一。 -而另外支棱起菲律宾经济的 不是什么高科技、工业、 金融业, 而是遍布全球的雇佣和劳工。 -总之横看竖看就是有点挫呀, 人是怎么变成今天这个样子呢? -简单来说呢, 就是先天条件一般, 还总想走捷径 哈哈哈。这个国家,从地图上来看啊, 挺有意思的, 由7000多个岛来组成 七零八落, 很难大规模连成片的发展, 于是很长时间呢, 人家都没有建成统一的国家, 而是各个岛上的家族部落啊, 各管各的。 -直到16世纪啊,迈之伦转悠到这了, 带着西班牙殖民者 征服了这,菲律宾呢, 才正式建了国。 -接着人又相继被美国殖民 日本占领, 再被美国收回, 而那些岛上的大家族啊, 也成了殖民代理人。 -那这个过程啊, 美国的影响是最大的。 -人,一边在这搞建设、 搞教育,让菲律宾 成了亚洲最早 走上工业化道路的国家之一。 -一边呢, 又残酷的镇压菲律宾的民族主义, 扶持清美势力。 -那结果 就是,菲律宾的经济是发展起来了, 可是完全依赖美国。 -而看似有了国家政权, 其实硬骨头几乎都被打没了。 -那情况有多夸张啊? -1929年美国经济大萧条, 没精力管菲律宾了, 想甩手啊, 让人独立得了, 这菲律宾人反而不干了, 说怎么的, 霍霍够我了, 翻脸不认人了是吧? -想分手啊, 没那么容易。 -于是两边各种谈条件 扯皮,直到1934年才谈妥了。 -美国接着扶持菲律宾, 10年之后再让菲律宾独立。 -后来呢, 人民意义上确实也是独立了, 但是加入美国的心啊, 他一直没死。 -上世纪60年代, 就有菲律宾的国会议员呢, 就发起入美运动, 要让菲律宾加入美国, 甚至呢,还说可以靠人多优势啊, 选菲律宾人当美国总统。 -而这类运动啊, 断断续续到现在都还有, 那场面 大概就是美国,我叫你一声爸爸, 你敢应吗? -可美国呢? -大家看到了啊, 看到了是他主动啊, 跟我没关系啊。 -其实1946年独立之后的菲律宾啊, 经济情况一度非常好, 工业基础 是完全继承美国殖民时期的遗产, 经济贸易呢 也几乎完全适合美国的单边贸易。 -而50年代之后, 朝鲜战争和越南战争先后爆发, 菲律宾凭借地理优势啊, 拿下了大量的美军订单, 这生意红火呀, 这也让菲律宾的经济坐上了火箭。 -1960年,菲律宾GDP啊,是排全球第20。 ->而放眼亚洲, 除了日本几乎没有对手, 而人均GDP 甚至一度都是我们的3倍之多。 -人家首都马尼拉 人送外号是亚洲小纽约, 甚至一度有机构预测说, 50年之后, 菲律宾将会成为世界第十大强国。 -换句话来说, 人能跟法国、 意大利这种老牌资本主义国家 坐在一张桌子上吃饭, 好家伙呀! -啊!那现在我们听起来 感觉跟科幻故事一样, 因为不用50年, 你看看现在 人已经凉透了。 -全亚洲最穷的国家之一, 泰国、马来西亚都能甩他几条街。 -为什么会变成这样呢? -就是因为菲律宾大家族门阀遍地, 菲律宾从被殖民到老大 不乐意的独立, 这就相当于什么呀, 殖民的走了, 世家大族们呢, 继续接力统治。 -比如在1987年的菲律宾国会, 总共200个众议员, 其中有130个是来自于大家族的, 另外还有39个呢, 跟大家族还是沾亲带故的。 -这些家族门阀呀, 各种资源在手, 那还不利用特许经营权、 垄断权、 免税权等等这种各种特权大捞特捞, 奉旨发财呀。 -而一马当先呢, 就是菲律宾现任总统 小马克斯的老爸 老马克斯, 这也是菲律宾的前总统。 -这位老马的形式风格 就是从政界到商界 都塞满了自己人。 -在菲律宾的任何生意 都要先给老马家族10%的好, 而所以人送外号10%先生。 -最终 这个老马因为做的实在太过分的, 吃相太难堪了, 把其他大家族都得罪光了, 不得不带着上百亿美元资产 逃到了美国。 -而留下的菲律宾呢, 已经成了 外债高达265亿美元的穷光蛋国家。 -为什么会这样? -因为相比贪腐家族门法,垄断经济 最要命的问题是让菲律宾走上了趣 工业化的, 把美国留的家底都给败光了。 -毕竟啊,你想啊, 只要垄断必需品 他就能躺着赚, 干嘛还要搞什么苦哈哈的 什么制造业高科技啊。 -所以你就会发现, 菲律宾的工业化进程 在上世纪60年代之后就卡死不动了。 -同样是和美国经济关系密切的日韩, 累死累活先从做衣服、做鞋子干起, 积累资本, 然后产业升级 发展高精尖的时候, 菲律宾反而从亚洲第二大工业国, 慢慢 先是被新马泰这样的邻居给超越, 接着又倒退成了农业国。 -然后呢,又随着全球贸易自由化, 叠加了拉美危机、 亚洲金融危机 等等几波全球经济动荡的冲击, 菲律宾那是全面溃败啊。 -低端制造业丧失竞争力, 高端制造完全没升级。 -看来看去, 最后 人家只能搞搞轻松好赚钱的服务业。 -2015年的菲律宾的农业和工业 占GDP的份额 分别从1980年代超过20%和40, 掉到了只有10%和33%。 -而由于去工业化太早了, 就算是人家搞服务业, 也搞不出什么高附加值的服务业, 基本上只能搞搞旅游啊、 休闲等等低端服务。 -这就是今天我们看到菲律宾的样子。 -2022年菲律宾的GDP总量是4000亿美元出头, 什么概念呢? -还没咱们中国的一个零头高, 而人均收入是在1200-1800人民币左右, 这是亚洲最穷的国家之一, 同时呢,贫富差距特别巨大。 -如果说你站在今天的菲律宾首都 马尼拉的市中心里面, 就会觉得,哎, 跟咱们北上广好像没什么两样, 高楼林立, 车水马龙, 房价也得四五万一平往上走, 而一街之隔的是一座座垃圾山 以及上百万人居住的贫民窟。 -这贫民窟啊, 几千块钱 就可以买走一个女孩做老婆。 -大家把从垃圾堆里面 捡来的吃的东西 洗一洗,重新加热 就成了。菲律宾的特产 叫派派。这叫什么呀? -富者田连阡陌, 贫者无立锥之地。 -而因为工业、农业拉垮人, 服务业又没有办法提供大量的就业, 大量普通菲律宾人呢, 想混口饭吃就只能出国打工。 -这又诞生了菲律宾的另一个奇观。 -因为早年美国人的介入管理啊, 菲律宾人的英语都不错啊, 服务意识也很强, 直接就把菲佣 干成了菲律宾的支柱产业之一。 -光去年菲律宾的海外劳工 就赚了372亿美元的外汇, 这占到了人家经济总量的8.5%, 这个比例什么概念? -去年中国汽车超越了房地产, 成了中国经济第一支柱, 占的比例也就差不多10%啊, 这就是目前菲律宾的经济现状。 -所以你就能够理解, 为什么每当全球经济环境下,行 人不会去努力奋斗扭转国运, 而是习惯性靠走捷径来解决问题。 -比如频频碰瓷东方大国, 试图向自己精神上的父亲那投名状。 -那为什么 人连像样的大船都造不出来, 每次碰瓷还都是小破渔船出卖。 -用今天的话说, 这纯纯的又菜又爱闹。 -可用2000年前的韩非的总结 则是,国小而不储卑, 利少而不畏强, 无礼而武大林, 贪鄙而拙骄。` - }, - { - text: `娃哈哈又一次站上风口浪尖了。 -这次是接班人发生变化了。 -刚刚去世没多久, 也就是娃哈哈创始人钟老的女儿 宋富丽 突然公开提交了一份辞职信。 -信的内容。大概我们总结一下啊, 就是我爸去世以后, 娃哈哈部分股东就质疑, 由我来接班掌管娃哈哈是不合理的, 这活我干不下去了, 所以 我要辞去副董事长和总经理的职。 -这事一出, 问题很多的小明就表示说,哎呦, 有那味了, 先帝驾崩, 老臣和新王 有些能相辅相成, 有些却是有你陪我呀。 -哈哈哈,假人呐。 -不光是这样, 娃哈哈 远远没有女神副业这么简单呢。 -你得知道这公司的真正老板是谁? -股东都是谁啊? -娃哈哈 它并不是一家纯粹的民营企业, 它是一家国企改制而来的 混合所有制企业。 -简单来讲, 那就是既是有国有股东 也有民营股。 -怎么回事呢? -这公司 不是宗老个人直接创立的企业, 当年前身 是 浙江杭州上城区的一家校办企业 的经销部, 算是地方国资企业吧。 -宗老当时是那公司里面的员工啊。 -在1987年,42岁的宗庆后呢, 是以职工的身份 承包了这家校办企业, 获得了完全独立的经营权。 -后来呢,给这企业再取名为娃哈哈。 -接着,大家都知道了, 做大做强, 再创辉煌, 一步一步 把这家曾经经营困难的校办企业 办成了全国V百强。 -对娃哈哈有再造之功的宗老啊, 他的身份既不是娃哈哈的老板, 其当年手上也没有一丁点的股份, 毕竟啊,只是承包嘛, 说白了这公司又不是你的。 -而这个转变呢, 就是在2000年, 在那一年, 娃哈哈完成了改制, 也就是这家国资企业决定啊, 让出一部分股东给员工, 大家伙,哥几个量力掏钱买股份, 为的就是什么, 大家都当股东, 那可不就更能激发干劲了吗? -宗庆后自然是首当其冲。 -而之后 哇哈哈的股权就一分为三了, 国资占一部分, 中金后自己占一部分, 然后员工又占一部分。 -那现在最新的股东结构是什么呀? -杭州国资委占股百分之46, 宗亲后占股29.4%, 员工占股24.6%。 -这看上去好像这终老股份不多 还不到30%, 可是员工们跟他几乎是一条心啊啊, 几十年风雨同舟, 那是一致行动人, 这两边加一块 占股有54%。 -所以说 当年宗庆后虽然不是大股东, 但却始终是哇哈的实际控制, 看上去一切是不是都挺完美的呀? -啊,但实际上也有隐患, 创一代的强人治理跟人格魅力 在去世之后往往会留下真空。 -说白了,对于那老员工来说, 当年我认你, 宗庆后,我跟你, 我服你,但是你走了, 你家孩子那就另错了。 -一方面呢, 是啊,宗老去世之后, 这宗复利 还没有正式继承 宗老在娃哈哈的股份, 他的身份也一直是副董事长、总经理。 -接管娃哈哈 暂时从法律上来讲 还没有依据, 而且哪怕他后面继承了, 还得获得员工持股会的认可 以及国资股东的批准, 但这不重要啊。 -另一方面, 东富力进入到这, 哇哈哈,仿佛感觉跟这家公司啊, 他有代沟啊, 而且在处理跟老员工的关系上呢, 似乎也一直是他的短板。 -你看这小 宗什么学历啊, 海外留学归来, 性格跟作风呢, 相对来讲更加直接。 -而宗老是什么? -为人更加传统, 更加讲究人情。 -我举几个例子啊, 比如宗老曾经就表态说, 咱们娃哈哈呀, 不缺钱,没有上市的必要。 -而宗富利呢, 却公开唱反调 说娃哈哈要上市很正常, 只有跟资本市场结合才能走的更远。 -再比如啊, 宗富利对内是铁腕管理啊, 如果说你没有完成任务, 可以直接开除, 丝毫不讲情面, 我管你是不是老员工, 而宗老呢, 讲究的是用人质、 聚人心,甚至呢, 还会再偷偷的把这些老员工啊 再请回来。 -但是你要是从商业 或者说管理层面单独来讲, 你很难就说 这小宗做的就一定有问题, 老宗就做的一定没毛病, 而这问题的核心其实是什么呀? -娃哈哈,如果说是你宗馥利创立的, 那就是你宗馥利做的对。 -而更重要的一点, 那就是在经营的业绩层。 -这小宗早年呢, 做了一系列的尝试, 效果只能说是一般般。 -21年底,这小宗宗富力 升任娃哈哈的副董事长兼总经理, 同时宣布推出了20多款新品。 -可结果呢? -整个22年呢, 娃哈哈的总营收是512亿, 比21年还下跌了7个亿。 -这是什么呀? -一顿操作猛于虎, 一看还在原地杵啊! -你不能说综合力不努力, 抬头看看全球这几年大环境, 你说他真的是有点生不逢时吧? -虽然不算准确, 但也有点影响, 但只不过出了问题 就一定需要有人去负责。 -老宗在的时候, 也许可以给小宗不断试错的机会, 而那些开朝老臣们呢, 就算有点想法,也不方便明着撕破脸, 而现在 谁还能站在小宗身后来给他善后? ->当然了,无论如何啊, 都希望娃哈哈这个民族品牌 能够好好的, 毕竟啊,那是包括我在内 几代人童年的回忆啊!` - }, - { - text: `你敢信吗? -特朗普给国货来了一波实力带货。 -上个月啊, 特朗普跟马斯克 可以说是俩全球顶流的男人 连线直播, 结果有眼见的网友就发现说,哎, 特朗普手机下面垫的这个充电宝 好像是中国品牌安克的, 你看看,工作归工作, 这个MADE in China才是生活。 -就这么个小小的细节啊, 让安克的股价在被发现的一瞬间 就跳涨了3%。 -安克的客服都说了, 好多人都来咨询这个充电宝, 安克也非常机智的 在这个产品描述里 加上了一个懂王同款。 ->不得不说啊, 特朗普这个带货实力确实不一般。 -安克这个品牌啊, 可以说是一个隐藏的巨头, 别看它就是卖卖充电宝啊、 充电线这些小配件, 但它 在中国全球化品牌50强的榜单里边 能排到第16, 仅次于亚迪, 绝对属于那种低调的行业隐形冠军。 -安克是2011年 由一个前谷歌工程师杨萌成立的, 那时候 深圳华强北正好有一波出海潮, 国内市场太卷, 加上阳萌又有海外背景, 所以他第一步就另辟蹊径, 选择跳过国内市场, 直接冲击海外。 -想利用中国的供应链去打海外市场, 这个思路 我们现在可能感觉习以为常了, 但放在当时 还是挺大胆的。 -而这招专攻海外, 也直接让安克抱上了两条大腿, 这第一条大腿就是苹果。 -2011年左右, 正好是智能手机加速普及, 但这个官方的配件吧, 大家都懂, 太贵了。它大部分平替的配件呢, 倒是便宜, 但质量就一般般。 -哎,安克他就瞄准了这个市场, 专门给苹果做高质量的 配件。 -他很聪明的一点哈, 就是他会盯着iPhone去宣传, 紧跟着苹果蹭流量。 -iPhone在哪打广告, 或者有人在哪搜iPhone相关的关键词, 哎,安克就把广告打在哪, 你前脚刚看完iPhone, 后脚安克就弹出来了。 -感兴趣iPhone手机, 我这有配件, 还物美价廉。 -当然哈,安克这产品确实不错, 颜值也很高, 慢慢呢就拿下了一批苹果用户, 而他的第二条大腿就是亚马逊。 -安克在非常早期就入驻了亚马逊, 当时亚马逊的排序机制 主要就是看销量和评价。 -安克呢, 就把广告都导到亚马逊去成交, 积累了非常好的销售数据, 同时用户也很满意, 很快就成为了亚马逊 消费电子里的王牌卖家。 -同类产品里, 它的市场份额可以达到30%。 -而后来到2020年的时候, 又吹来两股风, 让安克直接起飞。 -一个就是 疫情,让美国人也开始习惯网购了, 线上购物的需求大大增加, 这就让非常擅长线上营销的安克销量跟着大涨。 -而另一股风呢? -哎,还是苹果, 苹果不是从iPhone 12开始 就不送充电器了吗? -这就让他把一部分业务 拱手又让给了安克, 这也让安克即使这两年 还能实现百分之三四十的增长, 成为了 可以说是配件品牌出海的标杆。 -所以你看最近这几年 品牌出海已经不光是汽车啊、手机啊、 家电这些大品牌的趋势, 类似安克这种细分领域的自主品牌、 新兴品牌 也掀起了国货出海的一股浪潮。 -前两天我去上海,那外滩大会 就看到了非常多新奇的中国 出海好货, 有那种自主设计师设计的鞋呀、 衣服呀、椅子这种日常消费品, 还有很多非常新颖的, 像智能猫砂盆啊, 纸牌屋同款的划船机啊, 超轻钛合金的伊拜克 三防固态硬盘等等, 这些 其实都是比较细分领域的行业冠军, 不管是从技术质量 还是那个设计的精致度, 你看完感觉还真挺震撼。 -到现在啊, 在亚马逊的美、英、日、法等等站点, 中国卖家的比例都已经超过了50%。 -同时呢, 这些出海的品牌也更注重本土化、 多元化和品牌化。 -比如像安克 最开始是靠着亚马逊, 但慢慢也延伸到了阿里express、 ebay等等, 现在也开始有了自己的独立站, 同时在线下拓展渠道。 -根据万里汇2024年上半年的数据啊, 在平台上改走品牌化道路的卖家 同比暴涨了138%, 他们也更注重 在本地区设立主体运营, 打通供应链等等。 -你像这些品牌卖家, 他在出海的过程当中 经常会遇到一个问题, 其实就是金融上的, 比如说跨境支付啊, 外汇的收付啊等等, 所以就会有一些 这样的跨境金融管理工具, 比如蚂蚁旗下的万里汇, 假设你想把货卖到欧美、 东南亚等等等很多国家, 那你可能会需要,哎, 我亚马逊开一个,户 Lazada开一个, TikTok shop开一个, 然后每个平台都得单独认证, 什么美元、欧元、 印度卢比都得单独管理 是吧?当时就头大, 所以呢, 他们就会用万里汇这样一个账户, 链接130多个 涵盖了几乎所有 主流的跨境电商平台, 就可以在像亚马逊、shein、沃尔玛 TikTok等等的这些平台收付款, 还能一键完成平台的认证啊、 合规啊等等, 包括很多品牌独立站, 它也能支持全球200多个国家地区 30多个币种的收款, 还有近百种币种的付款。 -而且哈,这个万里汇账户 它还是一个出海的资金管理中心。 -怎么讲呢, 你像理财贷款, 还有一些外汇的避险工具, 包括应急的资金周转等等, 这些金融功能也有。 -就好像有一个非常懂出海的CFO 给你提供金融支持, 包括资源对接, 这样卖家就可以专注在把货给做好、 卖好, 让这些出海的国货可以走的更稳。` - }, - { - text: `哪个国家 印出了这张100万亿元的钞票? -我跟你说, 他的通货膨胀可以说是世界闻名, 从2000年开始 通胀就没下过三位数, 而伴随着这个恶性通胀的 其实就是金元对美元的急速贬值。 -98年的时候, 一美元还能兑24津巴布韦元, 到06年就贬值到1美元兑10万金元。 -这津巴布韦政府一看, 对吧?这0也太多了, 干脆咱就抹掉3个0, 定义一个新的津巴布韦元 叫ZWN啊, 他原来那个货币叫ZWD, 这样一美元就兑100金元了, 对吧?你看 多聪明。结果 津巴布韦这边 没止住恶性的通货膨胀, 这金元贬值的速度就越来越快。 -一年后,07年4月的时候 又跌到了一美元兑3万津巴布韦元, 年底的时候 又变成一美元兑200万金元, 之后每个月都在狂泻, 半年之后 就出现了那张5000亿金元的钞票。 -津巴布韦政府一看, 这0又太多了 对吧?老办法 再抹0,这次直接抹掉10个0, 就是除以100亿, 然后这新的货币呢, 就叫做DWR。 -好吧,这个时候啊, 津巴布韦通过膨胀 据估算已经飙升到了 百分之九乘以10的22次方, 那外汇市场可想而知。 -到半年之后, 就09年初的时候, 它又印出来那张举世闻名的 100万亿金元的钞票。 -不过你看着这么多万亿, 最后其实也就值不到0.4美元, 那央行说好 咱再去要12个0 再除以1万亿啊, 这个新的货币就叫ZWL。 -你看,短短三年里, 津巴布韦政府已经砍掉了25个零, 到最后这金元已经完全没有信用了。 -你想你这政府整天这么砍零,然 后推出新货币, 到最后可能这26个字母都不够你用。 -无奈之下, 政府被迫放弃金鱼,哎, 用欧元美元, 这才止住了国内的恶性膨胀。 -不过最近哈,刚缓过来, 1.19年的时候, 津巴布韦又火奋起来, 推出了自己的货币, 通胀又飙到三位数。 -然后今年4月份, 他就又又又推出自己新货币, 叫ZWG津巴布韦金, 这回号称是有贵金属倍数, 你就说这津巴布韦它乱不乱? -通过这个极端的例子啊, 你其实非常容易看出来, 通货膨胀跟外汇之间的关系。 -物价,它对汇率的影响最底层, 但同时 也可能会非常的缓慢的隐形。 -所以你如果一般看 那种比较主流的货币啊, 就比如说美元 过去50年通过膨胀跟汇率的对比, 只有80年代美国高速通胀的时期, 你才能非常明显的看到富相关。 -从90年代之后 就没有什么特别明显的相关性, 这为什么啊? -就是因为像美元、欧元、日元, 包括人民币, 他大部分的时间通胀都是在10%以下, 这个区间叫轻微的波动。 -你要不是放到像什么津巴布韦、 委内瑞拉、 土耳其这种 通胀一下就飙到超过50%的 这些国家, 一般看起来啊 可能都不会那么明显。` - }, - { - text: `国产芯片终于迎来重大突破了。 -说两个好消息, 第一, 国产光刻机已经开始量产推广了。 -这是工信部公开的数据, 差不多相当于阿斯麦公司的1460K, 可以生产65纳米级别的芯片。 -虽然制程不是很先进, 但是它的重要意义 在于核心零部件国产化 被西方卡脖子。 -用官方的话术来说, 这是事关综合国力 和国家安全的国之重器。 -到今天,全国上下 其实都已经达成了一项共识, 就是 我们不能再对外资抱有任何幻想。 -芯片产业链国产化势在必行。 -当然,要实现这么宏大的目标, 不仅需要国家支持, 更需要企业参与。 -这里就要讲到第二个好消息了, 2024年9月20日, 由长城汽车牵头 联合开发的车规级MCU芯片紫金M100 已经全部完成并成功点亮。 -光看这条消息, 很多人可能体会不到 这颗芯片的重要意义。 -说几个数据吧, 2023年,中国新能源汽车产量 达到了958.7万辆, 然而 我们的汽车芯片自给率却不到10%。 -这其中像IGBT这类功率芯片 国产率大概有35%, 但像紫金M100这种 难度更大的MCU芯片 自给率却只有10%。 -这就意味着 中国的汽车芯片市场 绝大部分营收和利润 都被外国企业拿走了。 -而且我们的汽车产业发展 也会随时受到外人的限制。 -比如2021年 西方国家的供应链危机 引发了一轮芯片荒, 导致中国汽车减产了198.2万辆。 -所以长城这颗国产自研的紫荆M100 不仅是国内芯片产业链的重大突破, 也是中国汽车产业打破垄断、 实现芯片自由 的关键一步。 -更重要的是, 这颗芯片的国产化程度非常高, 从硅知识产权的获取 到精源制造、封装测试 各个核心环节都在国内完成, 这样就能大幅度降低 被国外卡脖子的风险。 -而且这还只是个开始。 -这次公布的紫荆M100 会首先应用在X55大灯控制器平台, 计划5年上车量不低于250万辆, 今后 还会拓展到空调抬头显示等等模块。 -未来还会推出紫荆M200和M300系列, 主要应用在动力、底盘系统, 甚至 还包括汽车最核心的中央处理器 紫荆S300等。 -到长城汽车完成了这套芯片矩阵, 再加上智能驾驶方面 开启全国体验的长城全场景。NOA, 在智能座舱领域相当亮眼 的coffee OS3的全新升级, 这足以让它在智能化时代的竞争中 立于不败之地。 -事实上,长城在这些技术上的投入 已经获得了非常不错的回报。 -比如说今年9月上旬, 全新魏牌阑珊在6座7座SUV排行榜中 以1741辆的销量拿下周榜。 -还有长城汽车 今年的季度盈利和营收 双双超过预期, 直接带动最近的长城股价大幅上涨。 -这就告诉我们一个道理, 国内车企必须死磕技术, 为消费者带来好产品, 才能获得更好的业绩 和更长远的发展。 -这次推出的芯片和光刻机 可能不是行业里最先进的, 也不能一步到位完全取代西方技术。 -我们需要正视差距, 尊重事实。 -我们也需要更多的企业像长城一样, 勇于踏出自主研发的第一步。` - }, - { - text: `当然了,除了俄罗斯之外,其他国家也在买中国汽车,比如墨西哥。 2013 年,墨西哥所有销售汽车中有 25% 来自中国,而在 6 年前这个数字为0。澳大利亚也在不断买中国汽车,最受澳大利亚欢迎的中国汽车品牌是名爵,去年卖了 5.8 万辆。在新能源车市场,比亚迪则占据了澳大利亚的新能源汽车 14% 份额,位于第二名。当然,这里也不得不提一下第一名,那就是特斯拉市场份额高达53%,在东南亚市场,中国车企业销量在 2013 年同样实现小幅上升,最典型的就是泰国,在泰国的新能源车市场,中国品牌占据了 80% 的份额,比如比亚迪的原 plus 就是泰国的新能源车爆款,那到底是什么原因让中国汽车爆卖呢?基本还可以总结为三方面原因,首先是全球疫情爆发,由于中国汽车的供应链完善,疫情期间仍能维持稳定生产,而日韩这些过去的出口大户受疫情影响,芯片、钢材、橡胶等关键原材料短缺,不仅汽车产能下降,而且成本升高,这就让中国汽车更具性价比。而随着中国国内新能源汽车市场越来越卷出海,成为不少中国车企的选择,比如比亚迪 2023 年进入全球 58 个国家和地区,出口汽车 24 万辆,是上一年度的 3.34 倍。在泰国新能源车市场,比亚迪单独占到了 40% 的市场份额,是名副其实的泰国新能源汽车销冠。而且中国新能源汽车并非只是具备成本优势,汽车与 AI 互联网融合的智能化更是中国车企的拿手好戏。从豪华配置到智能大屏,从外观设计到内饰比拼,这让中国新能源汽车的溢价能力明显变高。2019 年中国新能源汽车平均出口价格每量只有 5, 000 美元, 2022 年涨到了 2.2 万美元。比如比亚迪汉在欧洲发布时价格接近 50 万人民币,是国内售价的两倍多。在泰国、以色列、新西兰等多个国家,比亚迪也已经是新能源汽车的销售冠军。不过,中国汽车征服海外虽然是一部励志爽门,但其实有不少挑战。` - } -]; diff --git a/packages/vmind/__tests__/browser/src/constants/chartGeneratorData.ts b/packages/vmind/__tests__/browser/src/constants/chartGeneratorData.ts deleted file mode 100644 index ced33c14..00000000 --- a/packages/vmind/__tests__/browser/src/constants/chartGeneratorData.ts +++ /dev/null @@ -1,6196 +0,0 @@ -/* eslint-disable max-len */ -export const chartGenerationMockData = [ - { - llm: 'gpt-4o-2024-05-13', - result: [ - { - context: { - dataTable: [ - { - 年份: 2024, - 党派: '左翼联盟', - 席位数: 182 - }, - { - 年份: 2024, - 党派: '新人民战线', - 席位数: 168 - }, - { - 年份: 2024, - 党派: '极右翼国民联盟', - 席位数: 143 - }, - { - 年份: 2024, - 党派: '右翼共和党', - 席位数: 48 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '选举年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '党派', - description: '党派名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '席位数', - description: '党派获得的席位数', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '地图带你看懂法国大选。 2024 年法国议会选举结果揭示了法国社会的撕裂,没有任何党派能获得 577 个议题中的绝对多数。左翼联盟、新人民战线执政党中间派联盟和极右翼国民联盟分别占据 182 席、 168 席、 143 席。除了这三家以外,其余党派席位最多的也只有右翼共和党的 48 席,因此左翼联盟、执政党和极右翼算是形成了三分天下的格局。今天我们便结合地图和数据,聊一聊法国大选。本期视频的所有分析均为个人观点,仅供参考。在开始之前,我先快速的放一下各党派在几个主要政治议题上的立场,有需要的朋友可以截图保存一下。' - }, - timeCost: '3.9' - }, - { - context: { - dataTable: [ - { - 国家: '法国', - 选区数量: 577, - 选区人口范围: [100000, 120000], - 城市: '巴黎' - }, - { - 国家: '法国', - 选区数量: 577, - 选区人口范围: [100000, 120000], - 城市: '里昂' - }, - { - 国家: '法国', - 选区数量: 577, - 选区人口范围: [100000, 120000], - 城市: '马赛' - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '国家名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '选区数量', - description: '全国选区的总数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '选区人口范围', - description: '每个选区的人口范围', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '城市', - description: '人口密集的大城市', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '现在我们进入正题,首先需要说明法国的选区制度,全国共有 577 个选区,每个选区包括 10- 12 万的人口密集的地方选区就小,人口稀少的区域选区域就大。因此地图上各个政党所占的面积并不能与其票数划等号,而是要看具体的选区分布在人口密集的大城市,譬如巴黎、里昂、马赛,虽然看起来面积小,实际上选区数量很多,占的比重很大。' - }, - timeCost: '3.0' - }, - { - context: { - dataTable: [ - { - 地区: '西北部', - 失业率年份: '2022', - 失业率排名: '最低的20个省' - }, - { - 地区: '西北部', - 失业率年份: '2022', - 失业率排名: '21-40低的省份' - }, - { - 政党: '右翼共和党', - 席位数: 48 - }, - { - 政党: '左翼联盟新人民战线', - 席位数: 182 - }, - { - 政党: '马克龙的执政党中间派联盟', - 席位数: 168 - }, - { - 政党: '乐旁的极右翼国民联盟', - 席位数: 143 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '法国的不同地区', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '失业率年份', - description: '失业率数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '失业率排名', - description: '失业率排名', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '政党', - description: '政党名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '席位数', - description: '政党获得的席位数', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '尽管如此,马克龙强调市场自由化,支持创新和创业,对欧盟一体化和国际合作的开放还是得到了许多大城市选民的支持。大城市仍然是马克龙的重要支持来源。除了大城市外,我们刚才提到过法国东北地区工业的衰落,其实在法国的西北地区又是另一番景象。之前那张关于中小工业城市分布的途中,我们可以清晰的看到西北地区的工业对于当代法国的重要性,当然工业只是一个缩影。我们再来看失业率地图,黄色代表 2022 年失业率最低的 20 个省,橙色是 21- 40 低的省份,可以看出西北部地区的失业率明显低于东北部。再看移民分布地图,西北部地区因为大城市少,而且离地中海更远,接受的移民也比较少。综上,西北地区的经济较为稳定,而且不受移民带来的社会问题困扰,日子过得比较舒服,这些选民对于未来持乐观态度,也成为了马克龙的另一主要票仓。除了以上三大势力外,浅蓝色代表的右翼共和党也获得了 48 个席位。他们的支持者主要位于经济同样比较富足,但是政治观点更为保守的地区。这里我就不展开讲总结。本期视频我们从法国官方的报告与数据出发,从经济与人口地理的角度分析了法国的大选结果。左翼联盟新人民战线以大城市为根基拿下最多的 182 席,马克龙的执政党中间派联盟则凭借大城市和西北地区的支持者取得了 168 席。乐旁的极右翼国民联盟则主要扎根于东北与东南地区,以 143 起居于第三这样的三分割据局面使得法国议会缺乏绝对多数,并且三方势力相差不大。可以预见在未来法案的通过上会面临极大的阻碍。举例来说,左翼和极右翼甚至存在联手撤回延迟退休法案的理论可能。虽然实际操作起来也面临很多困难,双方都不太愿意和对方合作,但即便是理论,可能也已经能表明未来的不确定性。' - }, - timeCost: '0.1' - }, - { - context: { - dataTable: [ - { - 公司: '星巴克', - 季度: '第二季度', - 营业收入: 8560000000, - 同比变化: -2, - 净利润变化: -15, - 股票市值变化: -115000000000 - } - ], - fieldInfo: [ - { - fieldName: '公司', - description: '公司名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '季度', - description: '财报季度', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '营业收入', - description: '营业收入金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '同比变化', - description: '同比变化百分比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '净利润变化', - description: '净利润变化百分比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '股票市值变化', - description: '股票市值变化金额', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '住手,你们住手,不要再砸了,你们不要再砸了。万万没想到,瑞幸和库迪的九块九大战,快把星巴克给卷死了。前段时间,星巴克公布了第二季度财报,营业收入 85.6 亿美元,同比下降了2%,净利润大跌15%,股票市值一天内蒸发了 1, 150 亿人民币。另一方面,星巴克的咖啡也在悄悄降价。如果你手机上有星巴克的APP,几乎每天都会收到 5 张以上的优惠券,比如满60.10、满75.15、任意新冰乐 7 折等等,部分单品的团购价优惠下来低至 9 元。终于, 9.9 的风还是卷到了星巴克。在过去很长一段时间里,星巴克是小资生活的代表,一杯咖啡动辄几十块钱,也只有电视剧里那些白领们和云淡风轻的走进去,熟练地点一杯拿铁,找个位置坐下,悠闲地打开电脑喝咖啡。岁月静好人间,值得有人点一杯星巴克,朋友圈能发十几条动态,有人为了抢星巴克限量版的猫爪杯,能通宵排队,甚至大打出手。' - }, - timeCost: '3.8' - }, - { - context: { - dataTable: [ - { - 国家: '美国', - 品牌: '星巴克', - 饮品: '大杯美式咖啡', - 价格: 2.95, - 平均月工资: 6228, - 最低时薪: 7.25, - 主力消费人群月薪: null - }, - { - 国家: '中国', - 品牌: '星巴克', - 饮品: '饮品', - 价格: 30, - 平均月工资: null, - 最低时薪: null, - 主力消费人群月薪: 60000 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '国家名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '品牌', - description: '咖啡品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '饮品', - description: '饮品名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格', - description: '饮品价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '平均月工资', - description: '国家的平均月工资', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '最低时薪', - description: '国家的最低时薪', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '主力消费人群月薪', - description: '主力消费人群的月薪', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '星巴克在中国国内的定位一直都是高端咖啡品牌,但是很多人不知道的是,它在国外的定位其实是平民咖啡,在美国一杯星巴克大杯美式咖啡大概是 2.95 美元,而根据美国劳工部的统计,美国平均月工资是 6, 228 美元,最低时薪是 7.25 美元,这是啥意思呢? 1002.65 美元的星巴克还不到美国人平均月收入的 2, 000 份之一,也就是平常坐一趟地铁的价格吧。而在中国市场,星巴克的饮品价格普遍要超过 30 元一杯。如果按照美国的对应消费力,它的主力消费人群应该是月薪至少6万元的人。' - }, - timeCost: '5.6' - }, - { - context: { - dataTable: [ - { - 日期: '2019-02', - 产品: '粉爪杯', - 原价: 199, - 最高价格: 1800 - } - ], - fieldInfo: [ - { - fieldName: '日期', - description: '具体日期', - type: 'date', - dateGranularity: 'month', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '产品', - description: '产品名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '原价', - description: '产品原始售价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '最高价格', - description: '产品在网上的最高价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '2019 年2月,星巴克就发售了一款粉爪杯,那它长这样?售价 199 元,但是在网上最高炒到了 1, 800 元。有人寒冬腊月在星巴克门口通宵排队,就是为了买到这么一个杯子。还有人因为排队顺序大打出手,最后喜提免费食宿。靠着这些营销方法,在很长一段时间里,普通人对于星巴克是仰望的,觉得去星巴克消费是很有品的,再往前推十年,你甚至可以看到有人去星巴克点一杯咖啡就可以发十几条朋友圈的各种角度各种场景,还要配文低调有实力,天天喝都喝腻了好像呢?甚至有人专门发帖认真的提问,第一次去星巴克主要注意什么?怎么装的像老手呢?我一开始还以为是来搞笑和反讽的,没想到点开帖子此还真的是教大家怎么去星巴克抓老手的,包括但不限于怎么下载APP,问店员这周用的是啥肚子萃取时间是多少?张度和烘焙度怎么样?要不要加糖和加奶?这唬得我一愣一愣的,但是时过境迁,如今星巴克已经支棱不起来了,一边是疯狂降价买三送一搞促销,一边是继续下沉到四五线城市。' - }, - timeCost: '3.9' - }, - { - context: { - dataTable: [ - { - 公司: '星巴克', - 战略愿景年份: '2025', - d级市场数量: 300, - 县域市场数量: 3000, - 门店数量: 7000 - } - ], - fieldInfo: [ - { - fieldName: '公司', - description: '公司名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '战略愿景年份', - description: '战略愿景发布的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: 'd级市场数量', - description: 'd级市场的数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '县域市场数量', - description: '县域市场的数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '门店数量', - description: '公司在中国的门店数量', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '星巴克近期发布的 2025 中国战略愿景当中,中国总部直言不讳地表示,星巴克看中的不仅仅是全国 300 多个 d 级市场,也包括近 3, 000 个县域市场。星巴克的愿景也体现在它的选址变化上,它在中国的门店已经突破了 7, 000 家,但是这开店位置却让人越来越看不懂了。' - }, - timeCost: '3.0' - }, - { - context: { - dataTable: [ - { - 咖啡品牌: '星巴克', - 咖啡类型: '美式', - 价格: 30 - }, - { - 咖啡品牌: '瑞幸', - 咖啡类型: '库里', - 价格: 9.9 - } - ], - fieldInfo: [ - { - fieldName: '咖啡品牌', - description: '咖啡的品牌名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '咖啡类型', - description: '咖啡的类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格', - description: '咖啡的价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '一家卖咖啡的店。星巴克没落的第二个原因是当代年轻人更偏向实用消费主义。坦白讲,大部分人喝咖啡其实就是为了遮住那点咖啡因,好让自己在一天的工作中保持清醒。你跟不懂咖啡的人聊什么豆子产地、风味,他只会回你一句,冰美式和中药有什么区别啊?如果你面前有三杯咖啡,第一杯是星巴克的 30 元美式,后面两杯是瑞幸库里的 9 块 9 咖啡也让你买单,大部分人都会选择后面两个,当然也有人会吹星巴克的豆子有多么多么的好,所以它买的这么贵也是值得的。' - }, - timeCost: '1.4' - }, - { - context: { - dataTable: [ - { - 月份: '6月', - 指标: 'M2', - 同比增长率: 6.2, - 预期增长率: 6.8, - 剪刀差: null, - 人民币存款增加: null, - 居民存款增加: null, - 时间范围: null - }, - { - 月份: '6月', - 指标: 'M1', - 同比增长率: -5, - 预期增长率: -5.4, - 剪刀差: null, - 人民币存款增加: null, - 居民存款增加: null, - 时间范围: null - }, - { - 月份: '6月', - 指标: 'M2-M1', - 同比增长率: null, - 预期增长率: null, - 剪刀差: 11.2, - 人民币存款增加: null, - 居民存款增加: null, - 时间范围: null - }, - { - 月份: '6月', - 指标: '人民币存款', - 同比增长率: null, - 预期增长率: null, - 剪刀差: null, - 人民币存款增加: 2460000000000, - 居民存款增加: 2140000000000, - 时间范围: null - }, - { - 月份: null, - 指标: '人民币存款', - 同比增长率: null, - 预期增长率: null, - 剪刀差: null, - 人民币存款增加: 11460000000000, - 居民存款增加: 9270000000000, - 时间范围: '上半年' - } - ], - fieldInfo: [ - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '指标', - description: '经济指标', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '同比增长率', - description: '同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '预期增长率', - description: '预期增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '剪刀差', - description: 'M2与M1的剪刀差', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '人民币存款增加', - description: '人民币存款增加量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '居民存款增加', - description: '居民存款增加量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '时间范围', - description: '数据对应的时间范围', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '咱聊一下最新的重磅数据,反正挺复杂的,国内6月 M2 同比增长6.2%,预期6.8%。 M1 同比下滑5%,预期下滑5.4%。 M M 一剪刀差走扩至 11.2% 再创新高。6月人民币存款增加 2.46 万亿,其中居民存款增加 2.14 万亿,增量几乎全都是老百姓存的。与 M1 的下滑相对,上半年人民币存款总共增加了 11.46 万亿,其中居民存款增加 9.27 万亿。大头也是老百姓,但增速逐月放缓。' - }, - timeCost: '10.9' - }, - { - context: { - dataTable: [ - { - 日期: '7月11日', - 事件: '美国公布CPI数据超预期回落', - 降息预期概率: null - }, - { - 日期: '7月30日', - 事件: '美联储议息会议', - 降息预期概率: 7 - }, - { - 日期: '9月18日', - 事件: '美联储议息会议', - 降息预期概率: 90 - }, - { - 日期: '7月10日', - 事件: '美联储鲍威尔国会听证会', - 降息预期概率: null - } - ], - fieldInfo: [ - { - fieldName: '日期', - description: '具体日期', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '事件', - description: '事件描述', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '降息预期概率', - description: '市场对美联储降息的预期概率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '7月 11 日晚上,由于美国公布的 CPI 数据超预期回落,让市场对美联储降息预期大幅升温。从这场所的美联储观察工具看,虽然7月 30 一日的美联储议息会议,市场预期不降息的概率仍然是达到93%,但9月 18 日的美联储议息会议,市场预期降息一次的概率是达到90%,这比起上个月概率是上升很多。不过我还是得强调一下,这个美联储观察工具将来只能反映市场当前的预期态度,不能拿来预测美联储货币政策,因为这个概率是会不断随着最新经济数据变化而变化。比如要是下个月美国 CPI 出现较大反弹,那9月降息的概率就会大幅下降。而这次市场预期美联储9月降息的概率大幅上升,主要有两个原因,一、美联储鲍威尔在7月 10 日的国会听证会上整体态度偏戈。鲍威尔称,劳动力市场降温意味着持续高通胀的潜在源头已经减弱。他还表示,就业市场的进一步疲软可能是不必要的,也是不受欢迎的。鲍威尔说,通胀方面的工作还没有完成,我们还有更多工作要做,但与此同时,我们需要注意劳动力市场现况,我们已经观察到劳动力市场出现相当明显的疲软,有着新美联储通讯社之称的知名记者尼奇默尔斯认为,鲍威尔本周其实已暗示美联储的利率政策即将开始改变方向。' - }, - timeCost: '4.1' - }, - { - context: { - dataTable: [ - { - 日期: '2024-07-11', - 月份: '6月', - CPI同比: 3, - 市场预期CPI同比: 3.1, - 前值CPI同比: 3.3, - CPI环比: -0.1 - }, - { - 日期: '2020-05', - 月份: '5月', - CPI同比: null, - 市场预期CPI同比: null, - 前值CPI同比: null, - CPI环比: null - } - ], - fieldInfo: [ - { - fieldName: '日期', - description: '数据公布的日期', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: 'CPI同比', - description: 'CPI同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '市场预期CPI同比', - description: '市场预期的CPI同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '前值CPI同比', - description: '前值的CPI同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: 'CPI环比', - description: 'CPI环比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '第二个原因是7月 11 日晚上 8 点半美国劳工部公布的通胀数据,6月 CPI 是同比上涨3%,市场预期值3.1%,前值3.3%。这次美联储 CPI 回落,更关键是 CPI 环比是负增长0.1%,这是美国 2020 年5月以来 CPI 环比首次出现下降,而且美国 2020 年5月还是因为疫情导致的 CPI 骤降,是比较特殊时期,所以美国 CPI 环比负增长确实不太常见。但仔细看美国 VI 月 CPI 的具体构成,感觉猫腻还是不少的。' - }, - timeCost: '5.2' - }, - { - context: { - dataTable: [ - { - 国家: '美国', - 月份: '6月', - 指标: '汽油价格', - 变化率: -3.8 - }, - { - 国家: '美国', - 月份: '6月', - 指标: '食品和住房价格', - 变化率: 0.2 - }, - { - 国家: '美国', - 月份: '6月', - 指标: '核心通胀率', - 变化率: 3.3 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '国家名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '指标', - description: '经济指标', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '变化率', - description: '变化的百分比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '美国 VI 月 CPI 下降的主要贡献是汽油价格下跌。美国 VI 月汽油价格下跌了3.8%,抑制了当月通胀,抵消了食品和住房价格 0.2% 的上涨。比较诡异的是,美国原油期货价格6月是明明出现大幅上涨,这是因为原油期货价格传导到汽油价格有一些迟滞效应,但那样的话,下个月公布的 CPI 数据,汽油价格可能就得反弹了。要是下个月公布的 CPI 数据,汽油价格还继续下降,那就实在说不过去了。美国刨除能源和食品价格的核心通胀率6月是3.3%,但整体降幅还是低于CPI。' - }, - timeCost: '8.2' - }, - { - context: { - dataTable: [ - { - 国家: '美国', - 月份: '6月', - 服务业通胀同比: 5, - 非农就业人口: 206000, - 市场预期非农就业人口: 190000, - 修正前非农就业人口: null, - 修正后非农就业人口: null - }, - { - 国家: '美国', - 月份: '5月', - 服务业通胀同比: null, - 非农就业人口: null, - 市场预期非农就业人口: null, - 修正前非农就业人口: 272000, - 修正后非农就业人口: 218000 - }, - { - 国家: '美国', - 月份: '4月', - 服务业通胀同比: null, - 非农就业人口: null, - 市场预期非农就业人口: null, - 修正前非农就业人口: 165000, - 修正后非农就业人口: 108000 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '国家名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '服务业通胀同比', - description: '服务业通胀同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '非农就业人口', - description: '非农就业人口数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '市场预期非农就业人口', - description: '市场预期的非农就业人口数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '修正前非农就业人口', - description: '修正前的非农就业人口数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '修正后非农就业人口', - description: '修正后的非农就业人口数量', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '美国通胀目前最顽固的就是服务业通胀,美国 VI 月服务业通胀仍然是同比上涨5%。美国毕竟是服务业为主的国家,服务业通胀还高居5%,美国要说自己已经控制住通胀,完全就是忽悠人。不过虽然美国大选临近,美国现在经济数据基本是为选型服务,比如已经假的不能再假的美国非农就业数据,美国 VI 月非农就业人口增加20.6万人,高于市场预期的 19 万人。然而美国同时把5月数据从 27.2 万人大幅下修至 21.8 万人,4月从 16.5 万人修正至10.8万人,修正后两个月合计较修正前减少 11.1 万人。' - }, - timeCost: '9.4' - }, - { - context: { - dataTable: [ - { - 日期: '2023-07-11', - 股市: '纳斯达克', - 涨跌幅: -2 - }, - { - 日期: '2023-07-12', - 股市: '日股', - 涨跌幅: -2.45 - }, - { - 年份: '2004', - 事件: '美联储降息' - }, - { - 年份: '2006', - 事件: '美联储停止加息' - }, - { - 年份: '2007', - 事件: '美联储开始降息' - }, - { - 年份: '2007', - 事件: '股市大涨' - }, - { - 年份: '2008', - 事件: '金融危机爆发,股市大跌' - }, - { - 年份: '2022', - 事件: '美联储开始加息' - }, - { - 年份: '2024-2026', - 事件: '可能爆发世界金融危机' - } - ], - fieldInfo: [ - { - fieldName: '日期', - description: '具体日期', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '股市', - description: '股市名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '涨跌幅', - description: '股市涨跌幅度', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '年份', - description: '年份', - type: 'year', - dateGranularity: 'year', - role: 'measure', - location: 'measure' - }, - { - fieldName: '事件', - description: '事件描述', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '我注意到虽然这次市场大幅提高了美联储9月降息概率,但美股和日股反而不涨反跌,纳斯达克在7月 11 日是下跌了2%,日股在7月 12 日也跟随下跌了2.45%。这是市场反身性效应的某种预演,股市炒的是预期,之前美股和日股是基于美联储降息预期,已经提前涨了一年多了,那么当美联储真正降息之后,市场是可能出现反身性效应,也就是所谓利好落地势利空的说法。当然股市走势千变万化,这也只是其中一种可能性。历史的参考例子,比如 2004 年美联储降息, 2006 年停止加息, 2007 年开始降息,但股市是一直涨到 2007 年底,随后自带危机爆发,股市开始大跌。我之前也梳理过,从 1980 年以来,美联储每次加息超过 5% 的幅度,首次加息后的 2- 4 年内都会爆发金融危机,这次美联储是 2022 年开始加息,所以按照历史路径, 2024 年到 2026 年是有可能爆发世界金融危机,这个结合当前国际局势和地缘形势,还是有挺大的可能性。' - }, - timeCost: '8.2' - }, - { - context: { - dataTable: [ - { - 地区: '黑龙江省', - 时间范围: '10年', - 荒废比例: 60, - 荒废小学数量: 1900, - 小学总数: null - }, - { - 地区: '东北', - 时间范围: '10年', - 荒废比例: 50, - 荒废小学数量: 6800, - 小学总数: null - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '地理区域', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间范围', - description: '时间范围', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '荒废比例', - description: '荒废的小学比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '荒废小学数量', - description: '荒废的小学数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '小学总数', - description: '小学总数', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '以前的小学空荡荡的,老年人养起了鸡鸭鹅狗,彻底荒废了整个黑龙江省, 10 年时间荒废了近六成,小学加起来有 1, 900 余所,整个东北十年荒废了 6, 800 余所小学,少了一半。' - }, - timeCost: '3.6' - }, - { - context: { - dataTable: [ - { - 地区: '河南', - 年份: '2023-2027', - 小学学龄人口下降: 2000000, - 小学学龄人口下降比例: 20 - }, - { - 地区: '全国', - 年份: null, - 小学学龄人口下降: null, - 小学学龄人口下降比例: 90 - }, - { - 地区: '上海', - 年份: null, - 小学学龄人口下降: null, - 小学学龄人口下降比例: null, - 总和生育率: 60 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '具体地区', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '小学学龄人口下降', - description: '小学学龄人口预计下降人数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '小学学龄人口下降比例', - description: '小学学龄人口预计下降比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '总和生育率', - description: '总和生育率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '而小学缺孩子这个趋势早已经蔓延至全国各地了。东部的兹西县,有的小学一个班只有一个学生。华南的徐文县,去年某小学开学,一年级也只有一个学生。中部人口大省河南,据测算, 2023- 2027 年小学学龄人口预计下降 200 多万人,缩水超两成,出现了基数的坍塌。从全国来看,基于学龄人口的预测显示,全国超 1, 400 个县域中,近九成县域小学学龄人口预计下滑,小学鹤岗化以谁也没想到的方式在扩散,从东北开始到大江南北,下一步可能是上海最新的总和生育率只有 0.6 了,该来的总是要来,从民政局冷冷清清到妇产科缺孩子,再到幼儿园关停潮,现在轮到了小学关停潮,这个传播链条还在扩散。' - }, - timeCost: '7.0' - }, - { - context: { - dataTable: [ - { - 省份: '广东', - 城市: '惠州', - 房价: 60000 - }, - { - 省份: '广西', - 城市: '南宁', - 房价: 50000 - }, - { - 省份: '山东', - 城市: '东营', - 房价: 40000 - }, - { - 省份: '江苏', - 城市: '南京', - 房价: 30000 - }, - { - 省份: '黑龙江', - 城市: '大靶', - 房价: 10000 - }, - { - 省份: '北京', - 城市: '京津交界处', - 楼盘: '某楼盘', - 原价: 1600000, - 现价: 390000 - } - ], - fieldInfo: [ - { - fieldName: '省份', - description: '省份名称', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '城市', - description: '城市名称', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '房价', - description: '一套房的总价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '楼盘', - description: '楼盘名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '原价', - description: '楼盘的原价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '现价', - description: '楼盘的现价', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '实际上,如果鹤岗化只是局限于教育领域,那还好说,但不是实际情况复杂的多楼市,像鹤岗那样房子白菜价的城市越来越多了,据不完全统计,至少有 10 个省 24 个城市陷入几万元买房的讨论。不是每平方米单价几万,而是一套房总价几万。网传广东惠州6万,广西南宁5万,山东东营4万,江苏南京3万,黑龙江大靶1万,这个传播势头在这轮楼市调整的加持下,现在已经来到了北京的外围,在京津两市的交界处,抹楼盘从 160 万元降到了 39 万,而且打了骨折还卖不出去。' - }, - timeCost: '5.8' - }, - { - context: { - dataTable: [ - { - 地区: '秦岭深处某县', - 人口: 30000, - 编制人员数量: 2194, - 行政管理支出: 18000000, - 一般公共预算收入: null, - 工资预算总支出: null, - 在职人员工资支出: null, - 离退休人员工资支出: null, - 零聘人员工资支出: null, - 在职人员数量: null, - 临聘人员数量: null - }, - { - 地区: '乌蒙山区某县', - 人口: null, - 编制人员数量: null, - 行政管理支出: null, - 一般公共预算收入: 700000000, - 工资预算总支出: 2630000000, - 在职人员工资支出: 2000000000, - 离退休人员工资支出: 170000000, - 零聘人员工资支出: 460000000, - 在职人员数量: 15000, - 临聘人员数量: 28000 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '具体的地理区域', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '人口', - description: '地区人口数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '编制人员数量', - description: '编制内的工作人员数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '行政管理支出', - description: '一年的行政管理支出', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '一般公共预算收入', - description: '一般公共预算收入', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '工资预算总支出', - description: '工资预算总支出', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '在职人员工资支出', - description: '在职人员的工资支出', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '离退休人员工资支出', - description: '离退休人员的工资支出', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '零聘人员工资支出', - description: '零聘人员的工资支出', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '在职人员数量', - description: '在职人员的数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '临聘人员数量', - description: '临时聘用人员的数量', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '地方财力,之前鹤岗是全国第一个财政重整的地级市,甚至传出来停招公务员,现在过紧日子的城市也越来越多了。秦岭深处某县人口只有3万,编制人员却有 2, 194 名,一年的行政管理支出 1, 800 万,排在支出的首位。乌蒙山区某县一般公共预算收入 7 个亿,但工资预算总支出 26.3 亿,其中在职人员 20 亿,离退休人员 1.7 亿,零聘人员 4.6 亿。注意一个细节,在职人员数量 1.5 万,临聘人员数量 2.8 万。' - }, - timeCost: '11.6' - }, - { - context: { - dataTable: [ - { - 城市: '深圳', - 年份: '2021', - 房价跌幅: -40 - } - ], - fieldInfo: [ - { - fieldName: '城市', - description: '城市名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '房价跌幅', - description: '房价跌幅百分比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '中国房价一度被视为坚不可摧的资产堡垒,更一度有京沪永远涨的口号。然而,自 2021 年以来,包括一线城市在内,房价持续低迷,深圳全市二手房均价距离 2021 年初的最高点跌幅已接近40%,而且还没有停下来的意思。各热点城市二手房每成交一套就要多出好几套,新增的房源和房价表现几乎完全正相关的是飞天茅台的价格, 53 度。' - }, - timeCost: '3.9' - }, - { - context: { - dataTable: [ - { - 商品: '飞天茅台', - 年份: '2021', - 价格: 3500 - }, - { - 商品: '飞天茅台', - 年份: '2024', - 价格: 2000 - }, - { - 商品: '一线房产', - 年份: '2012', - 价格: null - }, - { - 商品: '飞天茅台', - 年份: '2012', - 价格: null - } - ], - fieldInfo: [ - { - fieldName: '商品', - description: '商品名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格', - description: '商品价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '飞天茅台在 2021 年巅峰时期,一瓶售价超过 3, 500 元,如今已经快跌破 2, 000 元,是巧合吗?过去一线城市房价和飞天茅台价格可以说是最硬的人民币计价资产了,甚至比现金还要优质。一线房产和飞天茅台在相当长的一段时间内有两个相同属性,一他们可以长期增值。二他们易于套现。然而现在情况出现了前所未有的变化,房价和飞天茅台两者双双在 2012 一年见顶。' - }, - timeCost: '12.2' - }, - { - context: { - dataTable: [ - { - 年份: '2021', - 品牌: '保时捷', - 车型: null, - 区域: null, - 优惠金额: null, - 最低售价: null, - 裸车价: null, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '华南', - 优惠金额: 160000, - 最低售价: 448000, - 裸车价: null, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '山东', - 优惠金额: null, - 最低售价: null, - 裸车价: 500000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '湖北', - 优惠金额: null, - 最低售价: null, - 裸车价: 500000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '江西', - 优惠金额: null, - 最低售价: null, - 裸车价: 500000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '福建', - 优惠金额: null, - 最低售价: null, - 裸车价: 500000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '浙江', - 优惠金额: null, - 最低售价: null, - 裸车价: 500000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: 'Macan', - 区域: '江苏', - 优惠金额: null, - 最低售价: null, - 裸车价: 500000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: '泰肯', - 区域: null, - 优惠金额: null, - 最低售价: null, - 裸车价: null, - 报价: 1038000, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: '泰肯', - 区域: null, - 优惠金额: null, - 最低售价: null, - 裸车价: 700000, - 报价: null, - 折扣: null - }, - { - 年份: '2024', - 品牌: '保时捷', - 车型: null, - 区域: null, - 优惠金额: null, - 最低售价: null, - 裸车价: null, - 报价: null, - 折扣: [70, 80] - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '品牌', - description: '汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '车型', - description: '具体车型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '区域', - description: '销售区域', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '优惠金额', - description: '优惠金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '最低售价', - description: '优惠后的最低售价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '裸车价', - description: '裸车价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '报价', - description: '原始报价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '折扣', - description: '折扣比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '这不是巧合,其他很多数据也都在 2021 年见顶,比如另一个在 2021 年见顶并开始走下神坛的保时捷。保时捷销量的恶化还在加速,过去一年多,中国市场上保时捷的落地价可以说是惨不忍睹。近期,保时捷只卖 44 万的话题也引发了热议,其华南区域一家终端门店称, Macan 正在进行优惠促销,最高优惠 16 万,该车优惠后最低售价为 44.8 万。另外,在山东、湖北、江西、福建、浙江、江苏等多省份,该车均出现了 50 万元以下的裸车价,而报价达到 103.8 万的泰肯,现在 70 多万就可以拿下。目前,保时捷几乎所有的车型都可以打 7- 8 折。' - }, - timeCost: '20.5' - }, - { - context: { - dataTable: [ - { - 品牌: '保时捷', - 时间: '2024年一季度', - 销量: 16340, - 同比变化: -24 - }, - { - 品牌: '保时捷', - 时间: '2024年5月', - 销量: 4633, - 同比变化: -40.61 - } - ], - fieldInfo: [ - { - fieldName: '品牌', - description: '汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间', - description: '具体时间', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '销量', - description: '汽车销量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '同比变化', - description: '同比变化率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '不只是保时捷,包括奔驰、宝马、奥迪在内的豪华汽车品牌今年以来都在大幅降价,但仍然止不住销量断崖式下降。 2024 年一季度,保时捷中国卖出 16, 340 辆,同比大幅下降24%。保时捷在今年 5 月份仅卖出 4, 633 辆,同比去年5月下滑高达40.61%。这说明保时捷在中国的销量正在加速减少。' - }, - timeCost: '3.2' - }, - { - context: { - dataTable: [ - { - 车型: '卡罗拉油电混动', - 国家: '中国', - 售价: 79800, - 时间: '2024' - }, - { - 车型: '卡罗拉油电混动', - 国家: '中国', - 售价: 131800, - 时间: '2022' - }, - { - 车型: '卡罗拉油电混动', - 国家: '美国', - 售价: 23500, - 时间: '2024' - }, - { - 车型: '凯美瑞混动版', - 国家: '中国', - 售价: 149800, - 时间: '2022' - } - ], - fieldInfo: [ - { - fieldName: '车型', - description: '汽车的型号', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国家', - description: '汽车售价所在的国家', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '售价', - description: '汽车的售价', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '时间', - description: '数据对应的时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - } - ], - text: '从两年前开始,特斯拉的 3 和 y 中国售价就是世界最低的, 7.98 万可以买到原本指导价 13.18 万的油电混动的卡罗拉。做一个对比,美国的油电混动卡罗拉的起售价是 2.35 万美元,有时甚至还要加价。按照美元人民币汇率计算,这款车的中国售价居然只有美国的一半水平,尽管配置存在差异,但不影响价格差异巨大的这个结论。除了卡罗拉外,汉兰达和凯美瑞也都大幅降价,即使是两年前,我们也很难想象只要 14.98 万人民币就可以买到最新款的混动版凯美瑞。' - }, - timeCost: '3.3' - }, - { - context: { - dataTable: [ - { - 时间: '十多年前', - 交通工具: '出租车', - 价格区间: [110, 120] - }, - { - 时间: '现在', - 交通工具: '滴滴', - 价格区间: [60, 70] - }, - { - 时间: '现在', - 交通工具: '出租车', - 价格区间: [110, 120] - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '具体时间', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '交通工具', - description: '使用的交通工具', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格区间', - description: '单程价格区间', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '中国物价的下降不仅仅体现在商品上,服务价格也是类似的趋势。举个例子,十多年前我常驻北京,当时经常在晚上十一二点从首都机场打车到西直门这样一段单程大约需要 110- 120 元,而现在滴滴大概只要 60- 70 元。如果是现在的出租车,价格和十多年前还是一样的。' - }, - timeCost: '6.5' - }, - { - context: { - dataTable: [ - { - 银行: '工行', - 年份: '2022', - 不良率: 0.39 - }, - { - 银行: '工行', - 年份: '2023', - 不良率: 0.44 - }, - { - 银行: '农行', - 年份: '2022', - 不良率: 0.51 - }, - { - 银行: '农行', - 年份: '2023', - 不良率: 0.55 - }, - { - 银行: '建行', - 年份: '2022', - 不良率: 0.37 - }, - { - 银行: '建行', - 年份: '2023', - 不良率: 0.42 - } - ], - fieldInfo: [ - { - fieldName: '银行', - description: '银行名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '不良率', - description: '个人住房贷款不良率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '以工行、农行、建行发布的数据来看,其 2023 年个人住房贷款不良率分别由 2022 年的0.39%、0.51%、 0.37% 增长至了0.44%、 0.55% 和0.42%,基本都实现了两位数的增幅。大家别觉得这些小数字没啥大不了的,要知道这三家银行每一家的个人住房贷款余额都超过了5万亿,而且按揭贷款往年基本上都是银行稳赚不赔的买卖。供建农三家银行之所以每年能够包揽中国最赚钱企业的前三名,按揭贷款所带来的收益贡献巨大。现在这个优质资产的不良率正在以每年两位数的增幅增加。' - }, - timeCost: '11.6' - }, - { - context: { - dataTable: [ - { - 年份: '2022', - 季度: null, - 法拍房挂牌数量: 980000, - 同比增长率: null - }, - { - 年份: '2023', - 季度: null, - 法拍房挂牌数量: 1410000, - 同比增长率: 43.9 - }, - { - 年份: '2024', - 季度: '一季度', - 法拍房挂牌数量: 604400, - 同比增长率: 192 - }, - { - 年份: '2024', - 季度: null, - 法拍房挂牌数量: 2000000, - 同比增长率: null - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '季度', - description: '数据对应的季度', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '法拍房挂牌数量', - description: '法拍房挂牌的数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '同比增长率', - description: '法拍房挂牌数量同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '你是银行,你慌不慌?而另一项作为佐证的数据则是法拍房,大家知道现在法拍房的数据有多夸张吗?根据瀚海研究院发布的数据显示, 2022 年全国共挂牌法拍房 98 万套,去年这个数字变成了 141 万套,增长了43.9%。而今年光是一季度的挂牌数量就已飙升至 60.44 万套通,同比上涨192%。这种局势下,银行要是再不改变断供处置策略,那今年的法拍数量估计有望达到 200 万。' - }, - timeCost: '5.7' - }, - { - context: { - dataTable: [ - { - 城市: '北京', - 年份: '2023', - 挂牌法拍房数量: 8153, - 成交法拍房数量: 2771, - 处置率: 33 - } - ], - fieldInfo: [ - { - fieldName: '城市', - description: '城市名称', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '挂牌法拍房数量', - description: '挂牌法拍房的数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '成交法拍房数量', - description: '最终成交的法拍房数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '处置率', - description: '法拍房的处置率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '事实上,对银行来说,现在的行情即使他收了房也难以处置。我们以北京为例, 2023 年北京挂牌法拍房 8, 153 套,最终成交仅 2, 771 套,处置率为33%,这还是房价波动相对较小的北京,换到其他已经跌穿首付的地区,处置率恐怕只会更低。而在法拍流程里,流拍和拍品二次上拍都会在此前的价格上更进一步降低,这也导致了银行回款难度的进一步提高。虽然按照现在的规则,这部分差价是由贷款人承担的,但对方既然已经到了选择断供的地步,可想而知最终也执行不了多少。' - }, - timeCost: '5.1' - }, - { - context: { - dataTable: [ - { - 日期: '2024-05', - 未出售商品房面积: 746000000, - 正常库存水平: 590000000 - }, - { - 统计时间段: '上半年', - 城市数量: 222, - 宽松政策数量: 341 - } - ], - fieldInfo: [ - { - fieldName: '日期', - description: '具体日期', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '未出售商品房面积', - description: '未出售商品房的总面积', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '正常库存水平', - description: '正常情况下的库存水平', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '统计时间段', - description: '统计数据的时间段', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '城市数量', - description: '参与统计的城市数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '宽松政策数量', - description: '出台的宽松政策数量', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '另一项推动银行改变策略的原因,则是今年4月 30 号的一场会议,这场会议确定了房地产行业未来一年的发展方向,统筹消化存量房产和优化增量住房,用大家都熟悉的话来说就是去库存。根据国家统计局的官方数据显示,截至 2024 年5月,我国未出售商品房为 7.46 亿平米,远超 5.9 亿平米的正常库存水平。而整个上半年,根据 CRS 的统计,全国 222 个城市总计出台了 341 项宽松政策,但带来的效果均不理想,无论是销售面积还是投资金额,仍然在持续走低。' - }, - timeCost: '8.0' - }, - { - context: { - dataTable: [ - { - 年份: '2021', - 汽车出口量: 2020000 - }, - { - 年份: '2022', - 汽车出口量: 3110000 - }, - { - 年份: '2023', - 汽车出口量: 4910000 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '汽车出口量', - description: '中国汽车出口的数量', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '大家好,我拍拍一名做过财经记者,大学老师和滴滴司届 up 主。 2023 年,我国汽车出口量达到了 491 万辆,超越日本成为世界第一汽车出口国。要知道,日本在这个位置坐了 8 年之久,而中国仅在过去三年时间里接连赶超韩国、德国、日本。中国汽车出口, 2021 年 202 万辆, 2022 年 311 万辆, 2023 年 491 万辆。' - }, - timeCost: '3.0' - }, - { - context: { - dataTable: [ - { - 车型: '名爵ZS', - 排名: 1, - 指导价: [80000, 90000] - }, - { - 车型: '特斯拉 model y', - 排名: 2, - 指导价: null - }, - { - 车型: '奇瑞瑞虎7', - 排名: 3, - 指导价: null - }, - { - 车型: '特斯拉 model 3', - 排名: 4, - 指导价: null - }, - { - 车型: '名爵 4 EV', - 排名: 5, - 指导价: null - }, - { - 车型: '奇瑞虎5X', - 排名: 6, - 指导价: null - }, - { - 车型: '欧盟达名爵5', - 排名: 7, - 指导价: null - }, - { - 车型: '缤越元plus', - 排名: 8, - 指导价: null - }, - { - 车型: '名爵 5', - 排名: null, - 指导价: 60000 - }, - { - 车型: '缤越', - 排名: null, - 指导价: 60000 - } - ], - fieldInfo: [ - { - fieldName: '车型', - description: '中国出口的乘用车车型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '排名', - description: '车型在出口量中的排名', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '指导价', - description: '车型的国内指导价', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '中国汽车转眼间为何变得这么受欢迎呢?又到底是哪些国家在购买中国汽车?中国卖给老外汽车又是些什么品牌和价位车型?本期视频就为大家打开中国汽车出口全球第一背后的真实数据。首先,中国出口的 491 万辆汽车都是些什么车呢?根据乘联会统计,中国乘用车出口量前十车型分别为名爵ZS、特斯拉 model y、奇瑞瑞虎7、特斯拉 model 3、名爵 4 EV、奇瑞虎5X、欧盟达名爵5、缤越元plus。除了特斯拉的 model y 和 model 3,其他车型国内指导价基本都在 10 万元左右,比如排名第一的名爵ZS,指导价 8- 9万元,最便宜的名爵 5 和缤越低到6万元就能拿下,可见中国汽车出海主打的还是一个性价比。' - }, - timeCost: '10.8' - }, - { - context: { - dataTable: [ - { - 年份: '2013', - 汽车类型: '燃油车', - 出口数量: 3710000, - 新能源车出口占比: null, - 新能源车出口增速: null - }, - { - 年份: '2013', - 汽车类型: '新能源汽车', - 出口数量: 1200000, - 新能源车出口占比: 25, - 新能源车出口增速: null - }, - { - 年份: '2023', - 汽车类型: '新能源汽车', - 出口数量: null, - 新能源车出口占比: null, - 新能源车出口增速: 77.6 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '汽车类型', - description: '燃油车或新能源汽车', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '出口数量', - description: '汽车出口数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '新能源车出口占比', - description: '新能源汽车占出口总量的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '新能源车出口增速', - description: '新能源汽车出口的增长速度', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '如果按燃油车、新能源车的分类来看, 2013 年中国出口燃油车 371 万辆,出口新能源汽车 120 万辆,新能源车占到出口总量的25%,虽然这个占比目前只有 1/ 4,但去年新能源出口增速是77.6%,势头不可谓不猛。' - }, - timeCost: '6.6' - }, - { - context: { - dataTable: [ - { - 国家: '俄罗斯', - 年份: 2013, - 出口量: 909000 - }, - { - 国家: '墨西哥', - 年份: 2013, - 出口量: 415000 - }, - { - 国家: '比利时', - 年份: 2013, - 出口量: 217000 - }, - { - 国家: '澳大利亚', - 年份: 2013, - 出口量: 214000 - }, - { - 国家: '英国', - 年份: 2013, - 出口量: 214000 - }, - { - 国家: '沙特阿拉伯', - 年份: 2013, - 出口量: 213000 - }, - { - 国家: '菲律宾', - 年份: 2013, - 出口量: 172000 - }, - { - 国家: '泰国', - 年份: 2013, - 出口量: 169000 - }, - { - 国家: '阿联酋', - 年份: 2013, - 出口量: 159000 - }, - { - 国家: '西班牙', - 年份: 2013, - 出口量: 139000 - }, - { - 地区: '欧洲', - 年份: 2013, - 占比: 38 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '汽车出口的国家', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '出口量', - description: '汽车出口量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '地区', - description: '按地区划分的市场', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '占比', - description: '地区占中国汽车对外出口的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '那中国汽车出口都卖到了哪些国家呢? 2013 年中国汽车出口量前十的国家分别是,俄罗斯90.9万辆,墨西哥 41.5 万辆,比利时 21.7 万辆,澳大利亚 21.4 万辆,英国 21.4 万辆,沙特阿拉伯 21.3 万辆,菲律宾 17.2 万辆,泰国 16.9 万辆,阿联酋 15.9 万辆,西班牙 13.9 万辆。按地区来看的话,欧洲市场占中国汽车对外出口的38%,远超其他任何单一大洲,可见中国汽车正在得到全世界更多人的认可。' - }, - timeCost: '8.2' - }, - { - context: { - dataTable: [ - { - 年份: '2023', - 国家: '俄罗斯', - 汽车出口量: 909000, - 出口量增长率: 468 - }, - { - 年份: '2023', - 国家: '俄罗斯', - 品牌: '奇瑞金车', - 市场占有率: 11.2 - }, - { - 年份: '2023', - 国家: '俄罗斯', - 品牌: '哈弗', - 市场占有率: 10.6 - }, - { - 年份: '2023', - 国家: '俄罗斯', - 新车市场占比: 51 - }, - { - 年份: '2023', - 国家: '俄罗斯', - 出口增量贡献率: 42 - }, - { - 年份: '2024', - 国家: '俄罗斯', - 预测新车市场占比: 80 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国家', - description: '国家名称', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '汽车出口量', - description: '中国对该国的汽车出口量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口量增长率', - description: '中国对该国的汽车出口量增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '品牌', - description: '汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场占有率', - description: '品牌在市场中的占有率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '新车市场占比', - description: '中国汽车在俄罗斯新车市场的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口增量贡献率', - description: '俄罗斯对中国汽车出口增量的贡献率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '预测新车市场占比', - description: '预测中国汽车在俄罗斯新车市场的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '当然了,中国汽车出口世界第一,又不得不提议俄罗斯和墨西哥这两个国家可以说去年是把中国车买爆了。 203 年,中国对俄罗斯的汽车出口量从上一年度的 16 万辆暴增到了90.9万辆,增加了468%。在俄罗斯的新车市场中,第一名是俄罗斯品牌拉达,第二至第七名则全都是中国品牌,比如第二名是奇瑞金车,市场占有率11.2%。第三名是哈弗,新车,市场占有率10.6%。俄罗斯卖最好的新能源车也是来自中国的极客。目前中国汽车已经占据俄罗斯新车市场的51%,可以说是拿下了半壁江山。而对于中国而言,仅俄罗斯一个国家 203 年就贡献了中国汽车出口增量的42%,甚至有俄罗斯本土汽车经销商预测, 2024 年中国汽车可能占据俄罗斯新车份额的80%。' - }, - timeCost: '14.4' - }, - { - context: { - dataTable: [ - { - 年份: '2013', - 国家: '欧洲', - 市场份额: 18 - }, - { - 年份: '2013', - 国家: '欧洲', - 市场份额: 4 - }, - { - 年份: '2013', - 国家: '韩国', - 市场份额: 16 - }, - { - 年份: '2013', - 国家: '韩国', - 市场份额: 6 - }, - { - 年份: '2013', - 国家: '日本', - 市场份额: 12 - }, - { - 年份: '2013', - 国家: '日本', - 市场份额: 5 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国家', - description: '国家名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场份额', - description: '国家在俄罗斯新车市场的份额', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '有人说俄罗斯满爆中国汽车是因为欧美的贸易封锁,这也步无道理。 2013 年在俄罗斯的新车市场中,欧洲的市场份额从 18% 降到了4%,韩国从 16% 降到了6%,日本从 12% 降到了5%,和欧日韩都是对俄罗斯实行了限制出口国家,其中就包括了部分汽车,可以说中国汽车吃下的正是欧日韩在俄罗斯丢掉市场。' - }, - timeCost: '3.8' - }, - { - context: { - dataTable: [ - { - 国家: '墨西哥', - 年份: '2013', - 中国汽车占比: 25, - 品牌: null, - 销量: null, - 新能源汽车占比: null - }, - { - 国家: '墨西哥', - 年份: '2007', - 中国汽车占比: 0, - 品牌: null, - 销量: null, - 新能源汽车占比: null - }, - { - 国家: '澳大利亚', - 年份: '2023', - 中国汽车占比: null, - 品牌: '名爵', - 销量: 58000, - 新能源汽车占比: null - }, - { - 国家: '澳大利亚', - 年份: '2023', - 中国汽车占比: null, - 品牌: '比亚迪', - 销量: null, - 新能源汽车占比: 14 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '国家名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '中国汽车占比', - description: '中国汽车在该国销售汽车中的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '品牌', - description: '汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '销量', - description: '汽车销量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '新能源汽车占比', - description: '中国新能源汽车在该国市场中的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '当然了,除了俄罗斯之外,其他国家也在买中国汽车,比如墨西哥。 2013 年,墨西哥所有销售汽车中有 25% 来自中国,而在 6 年前这个数字为0。澳大利亚也在不断买中国汽车,最受澳大利亚欢迎的中国汽车品牌是名爵,去年卖了 5.8 万辆。在新能源车市场,比亚迪则占据了澳大利亚的新能源汽车 14% 份额,位于第二名。' - }, - timeCost: '7.1' - }, - { - context: { - dataTable: [ - { - 公司: '特斯拉', - 市场: '全球', - 年份: null, - 市场份额: 53, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: null - }, - { - 公司: '中国车企', - 市场: '东南亚', - 年份: 2013, - 市场份额: null, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: null - }, - { - 公司: '中国品牌', - 市场: '泰国', - 年份: null, - 市场份额: 80, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: null - }, - { - 公司: '比亚迪', - 市场: '泰国', - 年份: null, - 市场份额: 40, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: null - }, - { - 公司: '比亚迪', - 市场: '全球', - 年份: 2023, - 市场份额: null, - 销量: null, - 出口国家和地区数量: 58, - 出口汽车数量: 240000, - 出口汽车数量同比: 234, - 平均出口价格: null - }, - { - 公司: '中国新能源汽车', - 市场: '全球', - 年份: 2019, - 市场份额: null, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: 5000 - }, - { - 公司: '中国新能源汽车', - 市场: '全球', - 年份: 2022, - 市场份额: null, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: 22000 - }, - { - 公司: '比亚迪', - 市场: '欧洲', - 年份: null, - 市场份额: null, - 销量: null, - 出口国家和地区数量: null, - 出口汽车数量: null, - 出口汽车数量同比: null, - 平均出口价格: 500000 - } - ], - fieldInfo: [ - { - fieldName: '公司', - description: '公司名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场', - description: '市场区域', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场份额', - description: '市场份额占比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '销量', - description: '销量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口国家和地区数量', - description: '出口国家和地区数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口汽车数量', - description: '出口汽车数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口汽车数量同比', - description: '出口汽车数量同比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '平均出口价格', - description: '平均出口价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '当然,这里也不得不提一下第一名,那就是特斯拉市场份额高达53%,在东南亚市场,中国车企业销量在 2013 年同样实现小幅上升,最典型的就是泰国,在泰国的新能源车市场,中国品牌占据了 80% 的份额,比如比亚迪的原 plus 就是泰国的新能源车爆款,那到底是什么原因让中国汽车爆卖呢?基本还可以总结为三方面原因,首先是全球疫情爆发,由于中国汽车的供应链完善,疫情期间仍能维持稳定生产,而日韩这些过去的出口大户受疫情影响,芯片、钢材、橡胶等关键原材料短缺,不仅汽车产能下降,而且成本升高,这就让中国汽车更具性价比。而随着中国国内新能源汽车市场越来越卷出海,成为不少中国车企的选择,比如比亚迪 2023 年进入全球 58 个国家和地区,出口汽车 24 万辆,是上一年度的 3.34 倍。在泰国新能源车市场,比亚迪单独占到了 40% 的市场份额,是名副其实的泰国新能源汽车销冠。而且中国新能源汽车并非只是具备成本优势,汽车与 AI 互联网融合的智能化更是中国车企的拿手好戏。从豪华配置到智能大屏,从外观设计到内饰比拼,这让中国新能源汽车的溢价能力明显变高。2019 年中国新能源汽车平均出口价格每量只有 5, 000 美元, 2022 年涨到了 2.2 万美元。比如比亚迪汉在欧洲发布时价格接近 50 万人民币,是国内售价的两倍多。在泰国、以色列、新西兰等多个国家,比亚迪也已经是新能源汽车的销售冠军。不过,中国汽车征服海外虽然是一部励志爽门,但其实有不少挑战。' - }, - timeCost: '12.4' - }, - { - context: { - dataTable: [ - { - 年份: '2000', - 国家: '越南', - 摩托车品牌: '中国', - 市场份额: 80 - }, - { - 年份: '2024', - 国家: '越南', - 摩托车品牌: '日本', - 市场份额: 95 - }, - { - 年份: '2024', - 国家: '越南', - 摩托车品牌: '中国', - 市场份额: 1 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国家', - description: '市场所在国家', - type: 'region', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '摩托车品牌', - description: '摩托车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场份额', - description: '摩托车品牌在市场中的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '其实中国汽车出海不禁让人想起曾经的中国摩托车出海。 2000 年前后,中国摩托车进军越南,一度占据了 80% 的越南市场份额,但不到三四年时间,却被日本摩托车打得片甲不留。如今日本摩托车在越南占据 95% 的份额,而中国摩托车百分之一都不到。曾经也有大量中国摩托车车企在越南建厂,但却形成了恶性竞争的关系,疯狂打价格战,导致服务和质量越来越差,越南的中国摩托车车企仿佛是飘在越南的。' - }, - timeCost: '4.5' - }, - { - context: { - dataTable: [ - { - 企业名称: '汇川技术', - 企业规模: null, - 企业数量: null, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: '恒力液压', - 企业规模: null, - 企业数量: null, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: '先导智能', - 企业规模: null, - 企业数量: null, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: '顺域光学', - 企业规模: null, - 企业数量: null, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: '军胜电子', - 企业规模: null, - 企业数量: null, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: null, - 企业规模: '规模以上', - 企业数量: 445000, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: null, - 企业规模: '存续', - 企业数量: 6220000, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: null, - 企业规模: '规模以下', - 企业数量: 4000000, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: null - }, - { - 企业名称: null, - 企业规模: null, - 企业数量: null, - 工厂规模: '不到50人', - 工厂占比: 40, - 工厂人数: [0, 50], - 年产值: null - }, - { - 企业名称: null, - 企业规模: null, - 企业数量: null, - 工厂规模: '不到500人', - 工厂占比: 90, - 工厂人数: [0, 500], - 年产值: null - }, - { - 企业名称: null, - 企业规模: null, - 企业数量: null, - 工厂规模: null, - 工厂占比: null, - 工厂人数: null, - 年产值: [1000000, 10000000] - } - ], - fieldInfo: [ - { - fieldName: '企业名称', - description: '零部件供应商企业名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '企业规模', - description: '企业规模分类', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '企业数量', - description: '企业数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '工厂规模', - description: '工厂规模分类', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '工厂占比', - description: '工厂规模占比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '工厂人数', - description: '工厂人数范围', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '年产值', - description: '工厂年产值范围', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '每个中国制造品牌的背后都有一批优秀的零部件供应商,像汇川技术、恒力液压、先导智能、顺域光学、军胜电子这样的零部件企业也是中国制造的骄傲,只不过知名度无法媲美消费者直接接触的终端品牌。按照官方的口径,中国规模以上也就是年销售收入 2, 000 万以上的制造企业有 44.5 万家。至于中国一共有多少家制造业企业存在各种口径,从 300 多万家到近千万家不等。万德资讯给我的数据是,中国大约有 622 万家存续的制造业企业。海之在线是一家总部在上海,聚焦中间品贸易的数字化平台,连接着 70 万家工厂,他们给我的数据是,中国规模以下的中小微工厂大致有 400 万家。这期节目标题中的 400 万家沉默工厂处处记载于此。海志在线的创始人、 CEO 佘莹对我说,从平台看, 40% 的工厂规模不到 50 人,近 90% 的工厂不到 500 人,大部分工厂的年产值在数百万元到数千万元。如果和大企业比,你可以说他们就是一个个的小做法。如果走进去可能会看到老旧的机器上油漆斑驳,可以看到生产计划就用记号笔写在车间墙上挂着的白板上,甚至会发现用破洞的木板随意围搭起来的厕所,待客的茶水里则混杂着浓浓的机油味。但他们就是中国制造业毛细血管层面的供应链小节点,勤勤恳恳的维护设备、搞生产,他们最在意的是生存,是接到订单以及在满足客户之后能够完整的收到货款。' - }, - timeCost: '9.7' - }, - { - context: { - dataTable: [ - { - 年份: '2024', - 金属类型: '铝和其他废金属', - 产量变化: 20 - }, - { - 年份: '2024', - 金属类型: '钢铁', - 产量变化: [-10, -5] - }, - { - 月份: '5月', - 指标: '开发商银行贷款', - 同比变化: 19 - }, - { - 月份: '5月', - 指标: '房贷和存款跟预付款的比例', - 同比变化: [-40, -30] - }, - { - 预测年份: '2024', - 贷款增加: 4500000000000 - }, - { - 预测年份: '2025', - 贷款增加: 4500000000000 - }, - { - 预测年份: '2026', - 贷款增加: 4500000000000 - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '金属类型', - description: '金属的种类', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '产量变化', - description: '金属产量的变化', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '指标', - description: '具体指标', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '同比变化', - description: '同比变化的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '预测年份', - description: '预测的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '贷款增加', - description: '贷款增加的金额', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '有报道称,一些地方政府面临收入短缺,要求企业缴纳可追溯到 1990 年代的税单。这种紧缩政策在房地产市场寻找几步的时刻,会损害上信心和经济。高盛认为,中国中央政府可以通过加大对西方政府的财政支持来切断机房政府无紧缩所出现的负面溢出效应,那如同美国监管机构在次贷危机期间通过成为最后贷款人来切断金融危机的传播一样。关于出口和机产之间的分化,可以同中国的金属生产中得到证实啊。铝和其他废且金属的产量相比疫情之前上升了 20% 以上,而钢铁的产量下降了 5% 到10%。在房产方面,开发商越来越依赖银行融资, 5 月份对开发商的银行贷款同比增长了19%。而随着房地产销售的下滑,房贷和存款跟预付款的比例同比下降了 30% 到40%。高盛银行股票团队预计从 2024 年到 2026 年,房地产贷款将增加 4.5 万亿人民币,以完全期待收缩的房地产债券和设防的影子银行贷款。' - }, - timeCost: '6.4' - }, - { - context: { - dataTable: [ - { - 投资类型: '燃气和水的生产投资', - 增长情况: 100 - }, - { - 投资类型: '整体基建投资', - 增长情况: null - }, - { - 销售类型: '代线销售商品', - 月份: '5月', - 同比增长: 13 - }, - { - 销售类型: '餐饮销售', - 月份: '5月', - 同比增长: 5 - }, - { - 销售类型: '线下商品销售', - 月份: '5月', - 同比增长: 0 - } - ], - fieldInfo: [ - { - fieldName: '投资类型', - description: '具体的投资类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '增长情况', - description: '投资增长情况', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '销售类型', - description: '具体的销售类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '同比增长', - description: '销售同比增长情况', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '中国经济分化并不止于出口和房地产基础设施的固定资产投资。细分项显示,建立燃气和水的生产投资已同疫情前水平翻倍,远远超过了整体的基建的投资增长。因为中国政府首先优先考虑农源供用安全和脱碳。在零售销售当中, 5 月份代线销售商品同比增长13%,而餐饮销售仅增长5%,线下商品的销售保持在去年同期的水平。' - }, - timeCost: '4.5' - }, - { - context: { - dataTable: [ - { - 季度: '一季度', - 同比增长率: 5.3 - }, - { - 季度: 'G2 季度', - 同比增长率: 5 - } - ], - fieldInfo: [ - { - fieldName: '季度', - description: '具体季度', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '同比增长率', - description: '同比增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '7月中旬将举行两场重要的政策会议,前者将专注于评估当前的经济状况,并为今年剩余时间制定周期性的政策安排。后者将专注于至少未来五年解决经济结构当中的重大改革议程。鉴于一季度的实际, g GPT 同比增长5.3%,而且去年基数较低,那么 G2 季度增长可能高于5%,政府的全年增长目标仍然在轨道上。' - }, - timeCost: '1.8' - }, - { - context: { - dataTable: [ - { - 月份: '5月', - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: '6月19号', - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: '7月', - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: '3月', - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: '4月', - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: null, - 季度: '三季度', - 降息幅度: 25, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: '9月', - 季度: '四季度', - 降息幅度: 10, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: null, - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: 11.9, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: null, - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: 11.2, - 信贷增长率: null, - 美元兑人民币汇率: null - }, - { - 月份: null, - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: 9, - 美元兑人民币汇率: null - }, - { - 月份: null, - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: 9.5, - 美元兑人民币汇率: null - }, - { - 月份: null, - 季度: null, - 降息幅度: null, - 财政赤字占GDP比例: null, - 信贷增长率: null, - 美元兑人民币汇率: 7.3 - } - ], - fieldInfo: [ - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '季度', - description: '具体季度', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '降息幅度', - description: '降息的基点数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '财政赤字占GDP比例', - description: '财政赤字占GDP的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '信贷增长率', - description: '信贷增长率', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '美元兑人民币汇率', - description: '美元兑人民币汇率', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '高盛认为,政策执行者不会在 7 月份的首场会议上释放任何重大的刺激措施,宏观政策的证件可能大于维持当前立场和执行现有的政策。另一方面,鉴于 5 月份宣布的最后一批措施不及预期,可能存在引入更多期产宽松政策的可能性。在货币政策方面,资本外流的担忧和银行利润率的下降限制了央行降息的能力。高盛预计三季度将降息 25 个基减,以适应大量政府债券发行,并预计季四季度9月首次降息后会再降息 10 个期减。在财政政策方面,高盛预计政府债券的发行将在下半年显著增加,以完成年初发行缓慢的全年配额。除非增长急剧放缓,否则基建的投资不会加速太多。对于政府 3 月份公布的预算计划,高盛虽然预测中国的增强型的弹盛赤字从去年的 gdp 11.2% 会适度扩大到今年的11.9%,但由于今年出口强计可能会存在财政扩张不及预期的风险。信贷政策方面,正如央行行长6月 19 号陆家嘴论坛上所说,由于金融套利的虚假贷款和监管机构随后对金融系统中这种资金空转的打击,信贷增长与 GDP 增长之间的联系已经减弱。预计摄容总量的增长将同去年的 9.5% 放缓到今年的9%。在住房政策方面,4月的政治局会议表明,决策者希望严防房地产市场的尾部风险。由于地产价格和活动的持续下行,以及机房国企通过央行的贷款计划购买空池公寓的速度缓慢,高盛预计进一步削减房贷利率以刺激需求,同时为去库存提供更多的资金和效率的支持。在外汇政策方面,鉴于美元持续强势和资本外流的压力,高盛认为央行将在短期内保持美元对人民币汇率的稳定,三个月的高盛预测是7.3,因为外汇市决策者可以迎来抵消关税对出口负面影响的工具。 2018- 19 年的经验表明,如果特朗普赢得美国大选,而且正如他最近几个月所宣称的,会对中国实施正大的关税,那美元兑人民币可能会显著贬值。' - }, - timeCost: '11.6' - } - ] - }, - { - llm: 'doubao-pro-128k', - result: [ - { - context: { - dataTable: [ - { - 党派: '左翼联盟', - 席位: 182 - }, - { - 党派: '新人民战线执政党中间派联盟', - 席位: 168 - }, - { - 党派: '极右翼国民联盟', - 席位: 143 - }, - { - 党派: '右翼共和党', - 席位: 48 - } - ], - fieldInfo: [ - { - fieldName: '党派', - description: '参与法国议会选举的党派', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '席位', - description: '该党派在法国议会选举中获得的席位数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '议题', - description: '法国议会选举中的相关议题', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '地图带你看懂法国大选。 2024 年法国议会选举结果揭示了法国社会的撕裂,没有任何党派能获得 577 个议题中的绝对多数。左翼联盟、新人民战线执政党中间派联盟和极右翼国民联盟分别占据 182 席、 168 席、 143 席。除了这三家以外,其余党派席位最多的也只有右翼共和党的 48 席,因此左翼联盟、执政党和极右翼算是形成了三分天下的格局。今天我们便结合地图和数据,聊一聊法国大选。本期视频的所有分析均为个人观点,仅供参考。在开始之前,我先快速的放一下各党派在几个主要政治议题上的立场,有需要的朋友可以截图保存一下。' - }, - timeCost: '5.3' - }, - { - context: { - dataTable: [ - { - 国家: '法国', - 选区数量: 577, - 每个选区人口数量范围: '10 - 12 万', - 城市: '巴黎、里昂、马赛', - 选区分布情况: '人口密集的大城市选区数量多,占比大' - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '涉及的国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '选区数量', - description: '该国的选区总数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '每个选区人口数量范围', - description: '每个选区包含的人口数量范围', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '城市', - description: '人口密集的大城市', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '选区分布情况', - description: '选区在不同城市的分布情况', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '现在我们进入正题,首先需要说明法国的选区制度,全国共有 577 个选区,每个选区包括 10- 12 万的人口密集的地方选区就小,人口稀少的区域选区域就大。因此地图上各个政党所占的面积并不能与其票数划等号,而是要看具体的选区分布在人口密集的大城市,譬如巴黎、里昂、马赛,虽然看起来面积小,实际上选区数量很多,占的比重很大。' - }, - timeCost: '7.4' - }, - { - context: { - dataTable: [ - { - 势力: '左翼联盟新人民战线', - 席位数量: 182, - 地区: '大城市', - 年份: 2024, - 失业率省份排名范围: null, - 移民情况: null - }, - { - 势力: '马克龙的执政党中间派联盟', - 席位数量: 168, - 地区: '大城市和西北地区', - 年份: 2024, - 失业率省份排名范围: null, - 移民情况: null - }, - { - 势力: '极右翼国民联盟', - 席位数量: 143, - 地区: '东北与东南地区', - 年份: 2024, - 失业率省份排名范围: null, - 移民情况: null - }, - { - 势力: '右翼共和党', - 席位数量: 48, - 地区: '经济富足且政治观点保守的地区', - 年份: 2024, - 失业率省份排名范围: null, - 移民情况: null - }, - { - 势力: '法国西北地区', - 席位数量: null, - 地区: '西北地区', - 年份: 2024, - 失业率省份排名范围: '20个省失业率最低,21 - 40低的省份', - 移民情况: '大城市少,离地中海远,接受移民少' - } - ], - fieldInfo: [ - { - fieldName: '势力', - description: '政治势力名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '席位数量', - description: '获得的席位数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '地区', - description: '势力的主要分布地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '失业率省份排名范围', - description: '失业率在省份中的排名范围', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '移民情况', - description: '该地区的移民情况', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '尽管如此,马克龙强调市场自由化,支持创新和创业,对欧盟一体化和国际合作的开放还是得到了许多大城市选民的支持。大城市仍然是马克龙的重要支持来源。除了大城市外,我们刚才提到过法国东北地区工业的衰落,其实在法国的西北地区又是另一番景象。之前那张关于中小工业城市分布的途中,我们可以清晰的看到西北地区的工业对于当代法国的重要性,当然工业只是一个缩影。我们再来看失业率地图,黄色代表 2022 年失业率最低的 20 个省,橙色是 21- 40 低的省份,可以看出西北部地区的失业率明显低于东北部。再看移民分布地图,西北部地区因为大城市少,而且离地中海更远,接受的移民也比较少。综上,西北地区的经济较为稳定,而且不受移民带来的社会问题困扰,日子过得比较舒服,这些选民对于未来持乐观态度,也成为了马克龙的另一主要票仓。除了以上三大势力外,浅蓝色代表的右翼共和党也获得了 48 个席位。他们的支持者主要位于经济同样比较富足,但是政治观点更为保守的地区。这里我就不展开讲总结。本期视频我们从法国官方的报告与数据出发,从经济与人口地理的角度分析了法国的大选结果。左翼联盟新人民战线以大城市为根基拿下最多的 182 席,马克龙的执政党中间派联盟则凭借大城市和西北地区的支持者取得了 168 席。乐旁的极右翼国民联盟则主要扎根于东北与东南地区,以 143 起居于第三这样的三分割据局面使得法国议会缺乏绝对多数,并且三方势力相差不大。可以预见在未来法案的通过上会面临极大的阻碍。举例来说,左翼和极右翼甚至存在联手撤回延迟退休法案的理论可能。虽然实际操作起来也面临很多困难,双方都不太愿意和对方合作,但即便是理论,可能也已经能表明未来的不确定性。' - }, - timeCost: '11.0' - }, - { - context: { - dataTable: [ - { - 品牌: '星巴克', - 财报季度: '第二季度', - 营业收入: 8560000000, - 营业收入同比变化: -2, - 净利润变化: -15, - 股票市值蒸发金额: 11500000000, - 优惠券数量: 5, - 咖啡单品团购价: 9 - } - ], - fieldInfo: [ - { - fieldName: '品牌', - description: '咖啡品牌名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '财报季度', - description: '公布财报的季度', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '营业收入', - description: '公司的营业总收入', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '营业收入同比变化', - description: '营业收入与上年同期相比的变化情况', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '净利润变化', - description: '净利润的变化情况', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '股票市值蒸发金额', - description: '股票市值减少的金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '优惠券数量', - description: '手机APP收到的优惠券数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '咖啡单品团购价', - description: '部分咖啡单品的团购价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '住手,你们住手,不要再砸了,你们不要再砸了。万万没想到,瑞幸和库迪的九块九大战,快把星巴克给卷死了。前段时间,星巴克公布了第二季度财报,营业收入 85.6 亿美元,同比下降了2%,净利润大跌15%,股票市值一天内蒸发了 1, 150 亿人民币。另一方面,星巴克的咖啡也在悄悄降价。如果你手机上有星巴克的APP,几乎每天都会收到 5 张以上的优惠券,比如满60.10、满75.15、任意新冰乐 7 折等等,部分单品的团购价优惠下来低至 9 元。终于, 9.9 的风还是卷到了星巴克。在过去很长一段时间里,星巴克是小资生活的代表,一杯咖啡动辄几十块钱,也只有电视剧里那些白领们和云淡风轻的走进去,熟练地点一杯拿铁,找个位置坐下,悠闲地打开电脑喝咖啡。岁月静好人间,值得有人点一杯星巴克,朋友圈能发十几条动态,有人为了抢星巴克限量版的猫爪杯,能通宵排队,甚至大打出手。' - }, - timeCost: '22.3' - }, - { - context: { - dataTable: [ - { - 地区: '美国', - 咖啡价格: 2.95, - 平均月工资: 6228, - 最低时薪: 7.25, - 主力消费人群月薪: null - }, - { - 地区: '中国', - 咖啡价格: 30, - 平均月工资: null, - 最低时薪: null, - 主力消费人群月薪: 60000 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '咖啡品牌所在地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '咖啡价格', - description: '一杯咖啡的价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '平均月工资', - description: '该地区的平均月工资', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '最低时薪', - description: '该地区的最低时薪', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '主力消费人群月薪', - description: '该地区该品牌主力消费人群的月薪', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '星巴克在中国国内的定位一直都是高端咖啡品牌,但是很多人不知道的是,它在国外的定位其实是平民咖啡,在美国一杯星巴克大杯美式咖啡大概是 2.95 美元,而根据美国劳工部的统计,美国平均月工资是 6, 228 美元,最低时薪是 7.25 美元,这是啥意思呢? 1002.65 美元的星巴克还不到美国人平均月收入的 2, 000 份之一,也就是平常坐一趟地铁的价格吧。而在中国市场,星巴克的饮品价格普遍要超过 30 元一杯。如果按照美国的对应消费力,它的主力消费人群应该是月薪至少6万元的人。' - }, - timeCost: '8.3' - }, - { - context: { - dataTable: [ - { - 时间: '2019-02', - 产品: '粉爪杯', - 售价: 199, - 网上炒价: 1800 - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '事件发生的时间', - type: 'date', - dateGranularity: 'year-month', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '产品', - description: '发售的物品', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '售价', - description: '产品的销售价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '网上炒价', - description: '产品在网上被炒作的价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '2019 年2月,星巴克就发售了一款粉爪杯,那它长这样?售价 199 元,但是在网上最高炒到了 1, 800 元。有人寒冬腊月在星巴克门口通宵排队,就是为了买到这么一个杯子。还有人因为排队顺序大打出手,最后喜提免费食宿。靠着这些营销方法,在很长一段时间里,普通人对于星巴克是仰望的,觉得去星巴克消费是很有品的,再往前推十年,你甚至可以看到有人去星巴克点一杯咖啡就可以发十几条朋友圈的各种角度各种场景,还要配文低调有实力,天天喝都喝腻了好像呢?甚至有人专门发帖认真的提问,第一次去星巴克主要注意什么?怎么装的像老手呢?我一开始还以为是来搞笑和反讽的,没想到点开帖子此还真的是教大家怎么去星巴克抓老手的,包括但不限于怎么下载APP,问店员这周用的是啥肚子萃取时间是多少?张度和烘焙度怎么样?要不要加糖和加奶?这唬得我一愣一愣的,但是时过境迁,如今星巴克已经支棱不起来了,一边是疯狂降价买三送一搞促销,一边是继续下沉到四五线城市。' - }, - timeCost: '5.0' - }, - { - context: { - dataTable: [ - { - 公司: '星巴克', - 年份: '2025', - 市场级别: 'd 级', - 市场数量: 300 - }, - { - 公司: '星巴克', - 年份: '2025', - 市场级别: '县域', - 市场数量: 3000 - }, - { - 公司: '星巴克', - 年份: '2025', - 门店数量: 7000 - } - ], - fieldInfo: [ - { - fieldName: '公司', - description: '发布战略愿景的公司名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '战略愿景发布的年份', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场级别', - description: '市场的等级划分', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场数量', - description: '对应市场级别的数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '门店数量', - description: '公司在中国的门店总数', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '星巴克近期发布的 2025 中国战略愿景当中,中国总部直言不讳地表示,星巴克看中的不仅仅是全国 300 多个 d 级市场,也包括近 3, 000 个县域市场。星巴克的愿景也体现在它的选址变化上,它在中国的门店已经突破了 7, 000 家,但是这开店位置却让人越来越看不懂了。' - }, - timeCost: '6.4' - }, - { - context: { - dataTable: [ - { - 咖啡店: '星巴克', - 咖啡价格: 30 - }, - { - 咖啡店: '瑞幸库里', - 咖啡价格: 9.9 - }, - { - 咖啡店: '瑞幸库里', - 咖啡价格: 9.9 - } - ], - fieldInfo: [ - { - fieldName: '咖啡店', - description: '咖啡品牌名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '咖啡价格', - description: '咖啡的售价', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '一家卖咖啡的店。星巴克没落的第二个原因是当代年轻人更偏向实用消费主义。坦白讲,大部分人喝咖啡其实就是为了遮住那点咖啡因,好让自己在一天的工作中保持清醒。你跟不懂咖啡的人聊什么豆子产地、风味,他只会回你一句,冰美式和中药有什么区别啊?如果你面前有三杯咖啡,第一杯是星巴克的 30 元美式,后面两杯是瑞幸库里的 9 块 9 咖啡也让你买单,大部分人都会选择后面两个,当然也有人会吹星巴克的豆子有多么多么的好,所以它买的这么贵也是值得的。' - }, - timeCost: '3.7' - }, - { - context: { - dataTable: [ - { - 时间: '6月', - 指标: 'M2', - '同比增长/下滑': 6.2 - }, - { - 时间: '6月', - 指标: 'M1', - '同比增长/下滑': -5 - }, - { - 时间: '6月', - 指标: 'M2-M1 剪刀差', - '同比增长/下滑': 11.2 - }, - { - 时间: '6月', - 人民币存款增加额: 2460000000000 - }, - { - 时间: '6月', - 居民存款增加额: 2140000000000 - }, - { - 时间: '上半年', - 指标: '人民币存款', - '同比增长/下滑': null, - 人民币存款增加额: 11460000000000, - 居民存款增加额: 9270000000000 - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '数据对应的月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '指标', - description: '货币相关指标', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '同比增长/下滑', - description: '同比增长或下滑的数值', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '人民币存款增加额', - description: '人民币存款增加的金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '居民存款增加额', - description: '居民存款增加的金额', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '咱聊一下最新的重磅数据,反正挺复杂的,国内6月 M2 同比增长6.2%,预期6.8%。 M1 同比下滑5%,预期下滑5.4%。 M M 一剪刀差走扩至 11.2% 再创新高。6月人民币存款增加 2.46 万亿,其中居民存款增加 2.14 万亿,增量几乎全都是老百姓存的。与 M1 的下滑相对,上半年人民币存款总共增加了 11.46 万亿,其中居民存款增加 9.27 万亿。大头也是老百姓,但增速逐月放缓。' - }, - timeCost: '8.9' - }, - { - context: { - dataTable: [ - { - 日期: '2024-07-11', - 事件: '美国公布CPI数据超预期回落,市场对美联储降息预期大幅升温', - 议息会议时间: '2024-07-31', - 市场预期降息概率: 0.07 - }, - { - 日期: '2024-07-11', - 事件: '美国公布CPI数据超预期回落,市场对美联储降息预期大幅升温', - 议息会议时间: '2024-09-18', - 市场预期降息概率: 0.9 - }, - { - 日期: '2024-07-10', - 事件: '鲍威尔在国会听证会上发表讲话', - 议息会议时间: null, - 市场预期降息概率: null - } - ], - fieldInfo: [ - { - fieldName: '日期', - description: '事件发生的具体日期', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '事件', - description: '与美联储相关的事件描述', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '议息会议时间', - description: '美联储议息会议的时间', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场预期降息概率', - description: '市场对美联储降息的预期概率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '7月 11 日晚上,由于美国公布的 CPI 数据超预期回落,让市场对美联储降息预期大幅升温。从这场所的美联储观察工具看,虽然7月 30 一日的美联储议息会议,市场预期不降息的概率仍然是达到93%,但9月 18 日的美联储议息会议,市场预期降息一次的概率是达到90%,这比起上个月概率是上升很多。不过我还是得强调一下,这个美联储观察工具将来只能反映市场当前的预期态度,不能拿来预测美联储货币政策,因为这个概率是会不断随着最新经济数据变化而变化。比如要是下个月美国 CPI 出现较大反弹,那9月降息的概率就会大幅下降。而这次市场预期美联储9月降息的概率大幅上升,主要有两个原因,一、美联储鲍威尔在7月 10 日的国会听证会上整体态度偏戈。鲍威尔称,劳动力市场降温意味着持续高通胀的潜在源头已经减弱。他还表示,就业市场的进一步疲软可能是不必要的,也是不受欢迎的。鲍威尔说,通胀方面的工作还没有完成,我们还有更多工作要做,但与此同时,我们需要注意劳动力市场现况,我们已经观察到劳动力市场出现相当明显的疲软,有着新美联储通讯社之称的知名记者尼奇默尔斯认为,鲍威尔本周其实已暗示美联储的利率政策即将开始改变方向。' - }, - timeCost: '7.9' - }, - { - context: { - dataTable: [ - { - 时间: '7 月 11 日晚上 8 点半', - 数据类型: '6 月 CPI 同比上涨率', - 数值: 3, - 市场预期值: 3.1, - 前值: 3.3, - 年份: '2023', - 月份: '6' - }, - { - 时间: '7 月 11 日晚上 8 点半', - 数据类型: '6 月 CPI 环比增长率', - 数值: -0.1, - 市场预期值: null, - 前值: null, - 年份: '2023', - 月份: '6' - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '数据公布的时间', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '数据类型', - description: '通胀数据的类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '数值', - description: '具体的数值', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '市场预期值', - description: '市场对数据的预期值', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '前值', - description: '上一次的数据值', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '数据对应月份', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '第二个原因是7月 11 日晚上 8 点半美国劳工部公布的通胀数据,6月 CPI 是同比上涨3%,市场预期值3.1%,前值3.3%。这次美联储 CPI 回落,更关键是 CPI 环比是负增长0.1%,这是美国 2020 年5月以来 CPI 环比首次出现下降,而且美国 2020 年5月还是因为疫情导致的 CPI 骤降,是比较特殊时期,所以美国 CPI 环比负增长确实不太常见。但仔细看美国 VI 月 CPI 的具体构成,感觉猫腻还是不少的。' - }, - timeCost: '9.3' - }, - { - context: { - dataTable: [ - { - 地区: '美国', - 月份: '6月', - 商品: '汽油', - 价格变化: -3.8 - }, - { - 地区: '美国', - 月份: '6月', - 商品: '食品和住房', - 价格变化: 0.2 - }, - { - 地区: '美国', - 月份: '6月', - 商品: '原油期货', - 价格变化: '未提及' - }, - { - 地区: '美国', - 月份: '6月', - 商品: '核心通胀(刨除能源和食品价格)', - 通胀率: 3.3 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '数据所涉及的地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '商品', - description: '涉及的商品种类', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格变化', - description: '价格的涨跌幅度', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '通胀率', - description: '通货膨胀率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '美国 VI 月 CPI 下降的主要贡献是汽油价格下跌。美国 VI 月汽油价格下跌了3.8%,抑制了当月通胀,抵消了食品和住房价格 0.2% 的上涨。比较诡异的是,美国原油期货价格6月是明明出现大幅上涨,这是因为原油期货价格传导到汽油价格有一些迟滞效应,但那样的话,下个月公布的 CPI 数据,汽油价格可能就得反弹了。要是下个月公布的 CPI 数据,汽油价格还继续下降,那就实在说不过去了。美国刨除能源和食品价格的核心通胀率6月是3.3%,但整体降幅还是低于CPI。' - }, - timeCost: '6.7' - }, - { - context: { - dataTable: [ - { - 国家: '美国', - 月份: '6月', - 通胀类型: '服务业通胀', - 通胀同比涨幅: 5, - 就业数据类型: '非农就业', - 就业人口增加数量: 206000, - 市场预期就业人口增加数量: 190000 - }, - { - 国家: '美国', - 月份: '5月', - 就业数据类型: '非农就业', - 就业人口增加数量: 218000 - }, - { - 国家: '美国', - 月份: '4月', - 就业数据类型: '非农就业', - 就业人口增加数量: 108000 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '涉及的国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '月份', - description: '具体月份', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '通胀类型', - description: '通胀的类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '通胀同比涨幅', - description: '通胀同比上涨的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '就业数据类型', - description: '就业数据的类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '就业人口增加数量', - description: '非农就业人口增加的人数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '市场预期就业人口增加数量', - description: '市场预期非农就业人口增加的人数', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '美国通胀目前最顽固的就是服务业通胀,美国 VI 月服务业通胀仍然是同比上涨5%。美国毕竟是服务业为主的国家,服务业通胀还高居5%,美国要说自己已经控制住通胀,完全就是忽悠人。不过虽然美国大选临近,美国现在经济数据基本是为选型服务,比如已经假的不能再假的美国非农就业数据,美国 VI 月非农就业人口增加20.6万人,高于市场预期的 19 万人。然而美国同时把5月数据从 27.2 万人大幅下修至 21.8 万人,4月从 16.5 万人修正至10.8万人,修正后两个月合计较修正前减少 11.1 万人。' - }, - timeCost: '11.4' - }, - { - context: { - dataTable: [ - { - 市场: '美股', - 日期: '2023-07-11', - 股市走势: '下跌', - 涨跌幅度: -2 - }, - { - 市场: '日股', - 日期: '2023-07-12', - 股市走势: '下跌', - 涨跌幅度: -2.45 - } - ], - fieldInfo: [ - { - fieldName: '市场', - description: '涉及的市场', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '日期', - description: '事件发生的日期', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '股市走势', - description: '股市的涨跌情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '涨跌幅度', - description: '股市涨跌的百分比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '我注意到虽然这次市场大幅提高了美联储9月降息概率,但美股和日股反而不涨反跌,纳斯达克在7月 11 日是下跌了2%,日股在7月 12 日也跟随下跌了2.45%。这是市场反身性效应的某种预演,股市炒的是预期,之前美股和日股是基于美联储降息预期,已经提前涨了一年多了,那么当美联储真正降息之后,市场是可能出现反身性效应,也就是所谓利好落地势利空的说法。当然股市走势千变万化,这也只是其中一种可能性。历史的参考例子,比如 2004 年美联储降息, 2006 年停止加息, 2007 年开始降息,但股市是一直涨到 2007 年底,随后自带危机爆发,股市开始大跌。我之前也梳理过,从 1980 年以来,美联储每次加息超过 5% 的幅度,首次加息后的 2- 4 年内都会爆发金融危机,这次美联储是 2022 年开始加息,所以按照历史路径, 2024 年到 2026 年是有可能爆发世界金融危机,这个结合当前国际局势和地缘形势,还是有挺大的可能性。' - }, - timeCost: '5.4' - }, - { - context: { - dataTable: [ - { - 地区: '黑龙江省', - 时间范围: '10年前至今', - 荒废比例: 60, - 荒废小学数量: 1900 - }, - { - 地区: '东北', - 时间范围: '10年前至今', - 荒废比例: 50, - 荒废小学数量: 6800 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '涉及的地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间范围', - description: '荒废的时间范围', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '荒废比例', - description: '荒废的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '荒废小学数量', - description: '荒废的小学数量', - type: 'count', - role: 'measure', - location: 'measure' - } - ], - text: '以前的小学空荡荡的,老年人养起了鸡鸭鹅狗,彻底荒废了整个黑龙江省, 10 年时间荒废了近六成,小学加起来有 1, 900 余所,整个东北十年荒废了 6, 800 余所小学,少了一半。' - }, - timeCost: '6.6' - }, - { - context: { - dataTable: [ - { - 地区: '兹西县', - 时间: '2024', - 学龄人口变化情况: null, - 生育率: null - }, - { - 地区: '徐文县', - 时间: '2023', - 学龄人口变化情况: null, - 生育率: null - }, - { - 地区: '河南', - 时间: '2023', - 学龄人口变化情况: -2000000, - 生育率: null - }, - { - 地区: '上海', - 时间: '2024', - 学龄人口变化情况: null, - 生育率: 0.6 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '具体的地理位置', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间', - description: '相关事件发生的时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '学龄人口变化情况', - description: '小学学龄人口的数量变化', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '生育率', - description: '总和生育率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '而小学缺孩子这个趋势早已经蔓延至全国各地了。东部的兹西县,有的小学一个班只有一个学生。华南的徐文县,去年某小学开学,一年级也只有一个学生。中部人口大省河南,据测算, 2023- 2027 年小学学龄人口预计下降 200 多万人,缩水超两成,出现了基数的坍塌。从全国来看,基于学龄人口的预测显示,全国超 1, 400 个县域中,近九成县域小学学龄人口预计下滑,小学鹤岗化以谁也没想到的方式在扩散,从东北开始到大江南北,下一步可能是上海最新的总和生育率只有 0.6 了,该来的总是要来,从民政局冷冷清清到妇产科缺孩子,再到幼儿园关停潮,现在轮到了小学关停潮,这个传播链条还在扩散。' - }, - timeCost: '6.9' - }, - { - context: { - dataTable: [ - { - 省份数量: 10, - 城市数量: 24, - 城市: '广东惠州', - 房价: 60000 - }, - { - 省份数量: 10, - 城市数量: 24, - 城市: '广西南宁', - 房价: 50000 - }, - { - 省份数量: 10, - 城市数量: 24, - 城市: '山东东营', - 房价: 40000 - }, - { - 省份数量: 10, - 城市数量: 24, - 城市: '江苏南京', - 房价: 30000 - }, - { - 省份数量: 10, - 城市数量: 24, - 城市: '黑龙江大靶', - 房价: 10000 - }, - { - 省份数量: 10, - 城市数量: 24, - 城市: '京津两市交界处某楼盘', - 房价: 390000 - } - ], - fieldInfo: [ - { - fieldName: '省份数量', - description: '出现房子白菜价情况的省份数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '城市数量', - description: '出现房子白菜价情况的城市数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '城市', - description: '出现房子白菜价的具体城市', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '房价', - description: '房子的价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '实际上,如果鹤岗化只是局限于教育领域,那还好说,但不是实际情况复杂的多楼市,像鹤岗那样房子白菜价的城市越来越多了,据不完全统计,至少有 10 个省 24 个城市陷入几万元买房的讨论。不是每平方米单价几万,而是一套房总价几万。网传广东惠州6万,广西南宁5万,山东东营4万,江苏南京3万,黑龙江大靶1万,这个传播势头在这轮楼市调整的加持下,现在已经来到了北京的外围,在京津两市的交界处,抹楼盘从 160 万元降到了 39 万,而且打了骨折还卖不出去。' - }, - timeCost: '7.7' - }, - { - context: { - dataTable: [ - { - 地区: '鹤岗', - 事件: '全国第一个财政重整的地级市,传出来停招公务员', - 人口数量: null, - 编制人员数量: null, - 行政管理支出: null, - 一般公共预算收入: null, - 工资预算总支出: null, - 在职人员工资支出: null, - 离退休人员工资支出: null, - 零聘人员工资支出: null, - 在职人员数量: null, - 临聘人员数量: null - }, - { - 地区: '秦岭深处某县', - 事件: '过紧日子的城市之一', - 人口数量: 30000, - 编制人员数量: 2194, - 行政管理支出: 18000000, - 一般公共预算收入: null, - 工资预算总支出: null, - 在职人员工资支出: null, - 离退休人员工资支出: null, - 零聘人员工资支出: null, - 在职人员数量: null, - 临聘人员数量: null - }, - { - 地区: '乌蒙山区某县', - 事件: '过紧日子的城市之一', - 人口数量: null, - 编制人员数量: null, - 行政管理支出: null, - 一般公共预算收入: 700000000, - 工资预算总支出: 2630000000, - 在职人员工资支出: 2000000000, - 离退休人员工资支出: 170000000, - 零聘人员工资支出: 460000000, - 在职人员数量: 15000, - 临聘人员数量: 28000 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '具体的地方', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '事件', - description: '地方相关的情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '人口数量', - description: '地区的人口数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '编制人员数量', - description: '地区的编制人员数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '行政管理支出', - description: '一年的行政管理费用', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '一般公共预算收入', - description: '地区的一般公共预算收入金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '工资预算总支出', - description: '工资方面的预算总支出金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '在职人员工资支出', - description: '在职人员的工资支出金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '离退休人员工资支出', - description: '离退休人员的工资支出金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '零聘人员工资支出', - description: '零聘人员的工资支出金额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '在职人员数量', - description: '地区的在职人员数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '临聘人员数量', - description: '地区的临聘人员数量', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '地方财力,之前鹤岗是全国第一个财政重整的地级市,甚至传出来停招公务员,现在过紧日子的城市也越来越多了。秦岭深处某县人口只有3万,编制人员却有 2, 194 名,一年的行政管理支出 1, 800 万,排在支出的首位。乌蒙山区某县一般公共预算收入 7 个亿,但工资预算总支出 26.3 亿,其中在职人员 20 亿,离退休人员 1.7 亿,零聘人员 4.6 亿。注意一个细节,在职人员数量 1.5 万,临聘人员数量 2.8 万。' - }, - timeCost: '21.9' - }, - { - context: { - dataTable: [ - { - 城市: '深圳', - 年份: '2021', - 房价走势: '持续低迷', - 二手房均价跌幅: -40, - 房源情况: '各热点城市二手房每成交一套就要多出好几套', - 飞天茅台价格相关: '新增的房源和房价表现几乎完全正相关的是53度飞天茅台的价格' - } - ], - fieldInfo: [ - { - fieldName: '城市', - description: '涉及的城市名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '房价走势', - description: '房价的变化情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '二手房均价跌幅', - description: '二手房均价相比最高点的下跌比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '房源情况', - description: '各热点城市二手房的成交与新增房源情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '飞天茅台价格相关', - description: '与房价表现相关的飞天茅台价格情况', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '中国房价一度被视为坚不可摧的资产堡垒,更一度有京沪永远涨的口号。然而,自 2021 年以来,包括一线城市在内,房价持续低迷,深圳全市二手房均价距离 2021 年初的最高点跌幅已接近40%,而且还没有停下来的意思。各热点城市二手房每成交一套就要多出好几套,新增的房源和房价表现几乎完全正相关的是飞天茅台的价格, 53 度。' - }, - timeCost: '6.5' - }, - { - context: { - dataTable: [ - { - 商品: '飞天茅台', - 年份: '2021', - 价格: 3500 - }, - { - 商品: '飞天茅台', - 年份: '2024', - 价格: 2000 - }, - { - 商品: '一线房产', - 年份: '2012', - 价格: null - }, - { - 商品: '飞天茅台', - 年份: '2012', - 价格: null - } - ], - fieldInfo: [ - { - fieldName: '商品', - description: '所涉及的商品名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格', - description: '商品的价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '飞天茅台在 2021 年巅峰时期,一瓶售价超过 3, 500 元,如今已经快跌破 2, 000 元,是巧合吗?过去一线城市房价和飞天茅台价格可以说是最硬的人民币计价资产了,甚至比现金还要优质。一线房产和飞天茅台在相当长的一段时间内有两个相同属性,一他们可以长期增值。二他们易于套现。然而现在情况出现了前所未有的变化,房价和飞天茅台两者双双在 2012 一年见顶。' - }, - timeCost: '5.1' - }, - { - context: { - dataTable: [ - { - 品牌: '保时捷', - 年份: '2021', - 车型: 'Macan', - 原价: 608000, - 优惠金额: 160000, - 优惠后价格: 448000, - 折扣力度: 80 - }, - { - 品牌: '保时捷', - 年份: '2024', - 车型: '泰肯', - 原价: 1038000, - 优惠金额: 338000, - 优惠后价格: 700000, - 折扣力度: 70 - } - ], - fieldInfo: [ - { - fieldName: '品牌', - description: '汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '车型', - description: '汽车具体型号', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '原价', - description: '汽车的初始价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '优惠金额', - description: '汽车的优惠价格数额', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '优惠后价格', - description: '汽车优惠后的价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '折扣力度', - description: '汽车的折扣比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '这不是巧合,其他很多数据也都在 2021 年见顶,比如另一个在 2021 年见顶并开始走下神坛的保时捷。保时捷销量的恶化还在加速,过去一年多,中国市场上保时捷的落地价可以说是惨不忍睹。近期,保时捷只卖 44 万的话题也引发了热议,其华南区域一家终端门店称, Macan 正在进行优惠促销,最高优惠 16 万,该车优惠后最低售价为 44.8 万。另外,在山东、湖北、江西、福建、浙江、江苏等多省份,该车均出现了 50 万元以下的裸车价,而报价达到 103.8 万的泰肯,现在 70 多万就可以拿下。目前,保时捷几乎所有的车型都可以打 7- 8 折。' - }, - timeCost: '12.7' - }, - { - context: { - dataTable: [ - { - 汽车品牌: '保时捷', - 时间: '2024-Q1', - 销售量: 16340, - 同比变化率: -24 - }, - { - 汽车品牌: '保时捷', - 时间: '2024-05', - 销售量: 4633, - 同比变化率: -40.61 - } - ], - fieldInfo: [ - { - fieldName: '汽车品牌', - description: '豪华汽车的品牌名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间', - description: '销售数据对应的时间', - type: 'date', - dateGranularity: 'quarter', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '销售量', - description: '汽车的销售数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '同比变化率', - description: '与上年同期相比的销售变化比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '不只是保时捷,包括奔驰、宝马、奥迪在内的豪华汽车品牌今年以来都在大幅降价,但仍然止不住销量断崖式下降。 2024 年一季度,保时捷中国卖出 16, 340 辆,同比大幅下降24%。保时捷在今年 5 月份仅卖出 4, 633 辆,同比去年5月下滑高达40.61%。这说明保时捷在中国的销量正在加速减少。' - }, - timeCost: '4.8' - }, - { - context: { - dataTable: [ - { - 车型: '特斯拉 3 和 y', - 地区: '中国', - 起始时间: '2022', - 售价: null, - 原本指导价: null, - '美国起售价(美元)': null, - 中国售价与美国售价对比: null - }, - { - 车型: '卡罗拉', - 地区: '中国', - 起始时间: '2022', - 售价: 79800, - 原本指导价: 131800, - '美国起售价(美元)': 23500, - 中国售价与美国售价对比: 50 - }, - { - 车型: '凯美瑞', - 地区: '中国', - 起始时间: '2022', - 售价: 149800, - 原本指导价: null, - '美国起售价(美元)': null, - 中国售价与美国售价对比: null - }, - { - 车型: '汉兰达', - 地区: '中国', - 起始时间: '2022', - 售价: null, - 原本指导价: null, - '美国起售价(美元)': null, - 中国售价与美国售价对比: null - } - ], - fieldInfo: [ - { - fieldName: '车型', - description: '汽车的型号', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '地区', - description: '汽车销售的地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '起始时间', - description: '价格对比的起始时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '售价', - description: '汽车的销售价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '原本指导价', - description: '汽车原本的指导价格', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '美国起售价(美元)', - description: '美国油电混动卡罗拉的起售价格(以美元计)', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '中国售价与美国售价对比', - description: '中国售价相对于美国售价的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '从两年前开始,特斯拉的 3 和 y 中国售价就是世界最低的, 7.98 万可以买到原本指导价 13.18 万的油电混动的卡罗拉。做一个对比,美国的油电混动卡罗拉的起售价是 2.35 万美元,有时甚至还要加价。按照美元人民币汇率计算,这款车的中国售价居然只有美国的一半水平,尽管配置存在差异,但不影响价格差异巨大的这个结论。除了卡罗拉外,汉兰达和凯美瑞也都大幅降价,即使是两年前,我们也很难想象只要 14.98 万人民币就可以买到最新款的混动版凯美瑞。' - }, - timeCost: '13.1' - }, - { - context: { - dataTable: [ - { - 交通方式: '打车(十多年前)', - 时间: '十多年前', - 价格范围: [110, 120] - }, - { - 交通方式: '滴滴(现在)', - 时间: '2024', - 价格范围: [60, 70] - }, - { - 交通方式: '出租车(现在)', - 时间: '2024', - 价格范围: [110, 120] - } - ], - fieldInfo: [ - { - fieldName: '交通方式', - description: '出行的交通方式', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间', - description: '数据对应的时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '价格范围', - description: '从首都机场到西直门的价格区间', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '中国物价的下降不仅仅体现在商品上,服务价格也是类似的趋势。举个例子,十多年前我常驻北京,当时经常在晚上十一二点从首都机场打车到西直门这样一段单程大约需要 110- 120 元,而现在滴滴大概只要 60- 70 元。如果是现在的出租车,价格和十多年前还是一样的。' - }, - timeCost: '5.0' - }, - { - context: { - dataTable: [ - { - 银行: '工行', - 年份: '2022', - 个人住房贷款不良率: 0.39 - }, - { - 银行: '工行', - 年份: '2023', - 个人住房贷款不良率: 0.44 - }, - { - 银行: '农行', - 年份: '2022', - 个人住房贷款不良率: 0.51 - }, - { - 银行: '农行', - 年份: '2023', - 个人住房贷款不良率: 0.55 - }, - { - 银行: '建行', - 年份: '2022', - 个人住房贷款不良率: 0.37 - }, - { - 银行: '建行', - 年份: '2023', - 个人住房贷款不良率: 0.42 - } - ], - fieldInfo: [ - { - fieldName: '银行', - description: '银行名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '个人住房贷款不良率', - description: '个人住房贷款的不良率', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '以工行、农行、建行发布的数据来看,其 2023 年个人住房贷款不良率分别由 2022 年的0.39%、0.51%、 0.37% 增长至了0.44%、 0.55% 和0.42%,基本都实现了两位数的增幅。大家别觉得这些小数字没啥大不了的,要知道这三家银行每一家的个人住房贷款余额都超过了5万亿,而且按揭贷款往年基本上都是银行稳赚不赔的买卖。供建农三家银行之所以每年能够包揽中国最赚钱企业的前三名,按揭贷款所带来的收益贡献巨大。现在这个优质资产的不良率正在以每年两位数的增幅增加。' - }, - timeCost: '7.8' - }, - { - context: { - dataTable: [ - { - 年份: '2022', - 法拍房挂牌数量: 980000, - 法拍房挂牌数量同比增长率: null - }, - { - 年份: '2023', - 法拍房挂牌数量: 1410000, - 法拍房挂牌数量同比增长率: '43.9' - }, - { - 年份: '2024', - 法拍房挂牌数量: 604400, - 法拍房挂牌数量同比增长率: '192' - }, - { - 年份: '2024', - 法拍房挂牌数量: 2000000, - 法拍房挂牌数量同比增长率: null - } - ], - fieldInfo: [ - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '法拍房挂牌数量', - description: '全国法拍房挂牌的套数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '法拍房挂牌数量同比增长率', - description: '法拍房挂牌数量的同比增长比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '你是银行,你慌不慌?而另一项作为佐证的数据则是法拍房,大家知道现在法拍房的数据有多夸张吗?根据瀚海研究院发布的数据显示, 2022 年全国共挂牌法拍房 98 万套,去年这个数字变成了 141 万套,增长了43.9%。而今年光是一季度的挂牌数量就已飙升至 60.44 万套通,同比上涨192%。这种局势下,银行要是再不改变断供处置策略,那今年的法拍数量估计有望达到 200 万。' - }, - timeCost: '6.5' - }, - { - context: { - dataTable: [ - { - 地区: '北京', - 年份: '2023', - 挂牌法拍房数量: 8153, - 成交法拍房数量: 2771, - 处置率: 33 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '涉及的地区名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应的时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '挂牌法拍房数量', - description: '挂牌法拍房的套数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '成交法拍房数量', - description: '成交的法拍房套数', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '处置率', - description: '成交法拍房数量占挂牌法拍房数量的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '事实上,对银行来说,现在的行情即使他收了房也难以处置。我们以北京为例, 2023 年北京挂牌法拍房 8, 153 套,最终成交仅 2, 771 套,处置率为33%,这还是房价波动相对较小的北京,换到其他已经跌穿首付的地区,处置率恐怕只会更低。而在法拍流程里,流拍和拍品二次上拍都会在此前的价格上更进一步降低,这也导致了银行回款难度的进一步提高。虽然按照现在的规则,这部分差价是由贷款人承担的,但对方既然已经到了选择断供的地步,可想而知最终也执行不了多少。' - }, - timeCost: '6.1' - }, - { - context: { - dataTable: [ - { - 时间: '2024-04-30', - 行业: '房地产', - 发展方向: '统筹消化存量房产和优化增量住房', - 未出售商品房面积: 746000000, - 正常库存水平面积: 590000000, - 城市数量: 222, - 宽松政策数量: 341, - 销售面积情况: '持续走低', - 投资金额情况: '持续走低' - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '相关事件发生的时间', - type: 'date', - dateGranularity: 'day', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '行业', - description: '涉及的行业', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '发展方向', - description: '行业的发展方向', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '未出售商品房面积', - description: '我国未出售的商品房面积', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '正常库存水平面积', - description: '商品房的正常库存水平面积', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '城市数量', - description: '出台宽松政策的城市数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '宽松政策数量', - description: '出台的宽松政策数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '销售面积情况', - description: '销售面积的变化情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '投资金额情况', - description: '投资金额的变化情况', - type: 'string', - role: 'dimension', - location: 'dimension' - } - ], - text: '另一项推动银行改变策略的原因,则是今年4月 30 号的一场会议,这场会议确定了房地产行业未来一年的发展方向,统筹消化存量房产和优化增量住房,用大家都熟悉的话来说就是去库存。根据国家统计局的官方数据显示,截至 2024 年5月,我国未出售商品房为 7.46 亿平米,远超 5.9 亿平米的正常库存水平。而整个上半年,根据 CRS 的统计,全国 222 个城市总计出台了 341 项宽松政策,但带来的效果均不理想,无论是销售面积还是投资金额,仍然在持续走低。' - }, - timeCost: '11.1' - }, - { - context: { - dataTable: [ - { - 职业: '财经记者,大学老师,滴滴司机,up 主', - 年份: '2023', - 国家: '中国', - 汽车出口量: 4910000 - }, - { - 职业: '财经记者,大学老师,滴滴司机,up 主', - 年份: '2023', - 国家: '日本', - 汽车出口量: null - }, - { - 职业: '财经记者,大学老师,滴滴司机,up 主', - 年份: '2021', - 国家: '中国', - 汽车出口量: 2020000 - }, - { - 职业: '财经记者,大学老师,滴滴司机,up 主', - 年份: '2022', - 国家: '中国', - 汽车出口量: 3110000 - } - ], - fieldInfo: [ - { - fieldName: '职业', - description: '个人从事过的职业', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国家', - description: '汽车出口量相关的国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '汽车出口量', - description: '汽车出口的数量', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '大家好,我拍拍一名做过财经记者,大学老师和滴滴司届 up 主。 2023 年,我国汽车出口量达到了 491 万辆,超越日本成为世界第一汽车出口国。要知道,日本在这个位置坐了 8 年之久,而中国仅在过去三年时间里接连赶超韩国、德国、日本。中国汽车出口, 2021 年 202 万辆, 2022 年 311 万辆, 2023 年 491 万辆。' - }, - timeCost: '6.2' - }, - { - context: { - dataTable: [ - { - 车型: '名爵ZS', - 国内指导价: 80000 - }, - { - 车型: '名爵ZS', - 国内指导价: 90000 - }, - { - 车型: '特斯拉 model y', - 国内指导价: null - }, - { - 车型: '奇瑞瑞虎7', - 国内指导价: 100000 - }, - { - 车型: '特斯拉 model 3', - 国内指导价: null - }, - { - 车型: '名爵 4 EV', - 国内指导价: 100000 - }, - { - 车型: '奇瑞虎5X', - 国内指导价: 100000 - }, - { - 车型: '欧盟达名爵5', - 国内指导价: 100000 - }, - { - 车型: '缤越元plus', - 国内指导价: 100000 - }, - { - 车型: '名爵 5', - 国内指导价: 60000 - }, - { - 车型: '缤越', - 国内指导价: 60000 - } - ], - fieldInfo: [ - { - fieldName: '车型', - description: '中国乘用车出口的具体车型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国内指导价', - description: '车辆在国内的指导价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '中国汽车转眼间为何变得这么受欢迎呢?又到底是哪些国家在购买中国汽车?中国卖给老外汽车又是些什么品牌和价位车型?本期视频就为大家打开中国汽车出口全球第一背后的真实数据。首先,中国出口的 491 万辆汽车都是些什么车呢?根据乘联会统计,中国乘用车出口量前十车型分别为名爵ZS、特斯拉 model y、奇瑞瑞虎7、特斯拉 model 3、名爵 4 EV、奇瑞虎5X、欧盟达名爵5、缤越元plus。除了特斯拉的 model y 和 model 3,其他车型国内指导价基本都在 10 万元左右,比如排名第一的名爵ZS,指导价 8- 9万元,最便宜的名爵 5 和缤越低到6万元就能拿下,可见中国汽车出海主打的还是一个性价比。' - }, - timeCost: '8.6' - }, - { - context: { - dataTable: [ - { - 车辆类型: '燃油车', - 年份: '2013', - 出口数量: 3710000, - 占出口总量比例: null, - 新能源出口增速: null - }, - { - 车辆类型: '新能源车', - 年份: '2013', - 出口数量: 1200000, - 占出口总量比例: 25, - 新能源出口增速: null - }, - { - 车辆类型: '新能源车', - 年份: '2023', - 出口数量: null, - 占出口总量比例: null, - 新能源出口增速: 77.6 - } - ], - fieldInfo: [ - { - fieldName: '车辆类型', - description: '车的类型,包括燃油车和新能源车', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '出口数量', - description: '车辆的出口数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '占出口总量比例', - description: '新能源车占出口总量的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '新能源出口增速', - description: '新能源汽车出口的增长速度', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '如果按燃油车、新能源车的分类来看, 2013 年中国出口燃油车 371 万辆,出口新能源汽车 120 万辆,新能源车占到出口总量的25%,虽然这个占比目前只有 1/ 4,但去年新能源出口增速是77.6%,势头不可谓不猛。' - }, - timeCost: '7.5' - }, - { - context: { - dataTable: [ - { - 国家: '俄罗斯', - 年份: '2013', - 出口量: 909000 - }, - { - 国家: '墨西哥', - 年份: '2013', - 出口量: 415000 - }, - { - 国家: '比利时', - 年份: '2013', - 出口量: 217000 - }, - { - 国家: '澳大利亚', - 年份: '2013', - 出口量: 214000 - }, - { - 国家: '英国', - 年份: '2013', - 出口量: 214000 - }, - { - 国家: '沙特阿拉伯', - 年份: '2013', - 出口量: 213000 - }, - { - 国家: '菲律宾', - 年份: '2013', - 出口量: 172000 - }, - { - 国家: '泰国', - 年份: '2013', - 出口量: 169000 - }, - { - 国家: '阿联酋', - 年份: '2013', - 出口量: 159000 - }, - { - 国家: '西班牙', - 年份: '2013', - 出口量: 139000 - }, - { - 地区: '欧洲', - 年份: '2013', - 占比: 38 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '汽车出口的目的地国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '出口量', - description: '中国汽车对该国的出口数量(万辆)', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '地区', - description: '汽车出口的市场地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '占比', - description: '该地区在中国汽车对外出口中的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '那中国汽车出口都卖到了哪些国家呢? 2013 年中国汽车出口量前十的国家分别是,俄罗斯90.9万辆,墨西哥 41.5 万辆,比利时 21.7 万辆,澳大利亚 21.4 万辆,英国 21.4 万辆,沙特阿拉伯 21.3 万辆,菲律宾 17.2 万辆,泰国 16.9 万辆,阿联酋 15.9 万辆,西班牙 13.9 万辆。按地区来看的话,欧洲市场占中国汽车对外出口的38%,远超其他任何单一大洲,可见中国汽车正在得到全世界更多人的认可。' - }, - timeCost: '12.6' - }, - { - context: { - dataTable: [ - { - 国家: '俄罗斯', - 年份: '2022', - 对该国汽车出口量: 160000, - 出口量增长比例: null, - 该国新车市场品牌: null, - 市场占有率: null - }, - { - 国家: '俄罗斯', - 年份: '2023', - 对该国汽车出口量: 909000, - 出口量增长比例: 468, - 该国新车市场品牌: '拉达', - 市场占有率: null - }, - { - 国家: '俄罗斯', - 年份: '2023', - 对该国汽车出口量: 909000, - 出口量增长比例: 468, - 该国新车市场品牌: '奇瑞金车', - 市场占有率: 11.2 - }, - { - 国家: '俄罗斯', - 年份: '2023', - 对该国汽车出口量: 909000, - 出口量增长比例: 468, - 该国新车市场品牌: '哈弗', - 市场占有率: 10.6 - }, - { - 国家: '俄罗斯', - 年份: '2023', - 对该国汽车出口量: 909000, - 出口量增长比例: 468, - 该国新车市场品牌: '极客', - 市场占有率: null - }, - { - 国家: '俄罗斯', - 年份: '2023', - 对该国汽车出口量: 909000, - 出口量增长比例: 468, - 该国新车市场品牌: null, - 市场占有率: 51 - }, - { - 国家: '俄罗斯', - 年份: '2024', - 对该国汽车出口量: null, - 出口量增长比例: null, - 该国新车市场品牌: null, - 市场占有率: 80 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '涉及的国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '对该国汽车出口量', - description: '中国对该国的汽车出口数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口量增长比例', - description: '中国对该国汽车出口量的增长百分比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '该国新车市场品牌', - description: '在该国新车市场中的汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场占有率', - description: '汽车品牌在该国新车市场的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '当然了,中国汽车出口世界第一,又不得不提议俄罗斯和墨西哥这两个国家可以说去年是把中国车买爆了。 203 年,中国对俄罗斯的汽车出口量从上一年度的 16 万辆暴增到了90.9万辆,增加了468%。在俄罗斯的新车市场中,第一名是俄罗斯品牌拉达,第二至第七名则全都是中国品牌,比如第二名是奇瑞金车,市场占有率11.2%。第三名是哈弗,新车,市场占有率10.6%。俄罗斯卖最好的新能源车也是来自中国的极客。目前中国汽车已经占据俄罗斯新车市场的51%,可以说是拿下了半壁江山。而对于中国而言,仅俄罗斯一个国家 203 年就贡献了中国汽车出口增量的42%,甚至有俄罗斯本土汽车经销商预测, 2024 年中国汽车可能占据俄罗斯新车份额的80%。' - }, - timeCost: '15.3' - }, - { - context: { - dataTable: [ - { - 地区: '俄罗斯', - 年份: '2013', - 国家: '欧洲', - 市场份额变化前: 18, - 市场份额变化后: 4 - }, - { - 地区: '俄罗斯', - 年份: '2013', - 国家: '韩国', - 市场份额变化前: 16, - 市场份额变化后: 6 - }, - { - 地区: '俄罗斯', - 年份: '2013', - 国家: '日本', - 市场份额变化前: 12, - 市场份额变化后: 5 - } - ], - fieldInfo: [ - { - fieldName: '地区', - description: '汽车市场所在地区', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '国家', - description: '汽车来源国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场份额变化前', - description: '变化前的市场份额占比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '市场份额变化后', - description: '变化后的市场份额占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '有人说俄罗斯满爆中国汽车是因为欧美的贸易封锁,这也步无道理。 2013 年在俄罗斯的新车市场中,欧洲的市场份额从 18% 降到了4%,韩国从 16% 降到了6%,日本从 12% 降到了5%,和欧日韩都是对俄罗斯实行了限制出口国家,其中就包括了部分汽车,可以说中国汽车吃下的正是欧日韩在俄罗斯丢掉市场。' - }, - timeCost: '6.4' - }, - { - context: { - dataTable: [ - { - 国家: '墨西哥', - 年份: '2013', - 中国汽车在该国销售汽车中的占比: 25, - 中国汽车品牌: null, - 中国汽车销量: null, - 中国新能源车在该国新能源车市场的份额: null - }, - { - 国家: '墨西哥', - 年份: '2007', - 中国汽车在该国销售汽车中的占比: 0, - 中国汽车品牌: null, - 中国汽车销量: null, - 中国新能源车在该国新能源车市场的份额: null - }, - { - 国家: '澳大利亚', - 年份: '2023', - 中国汽车在该国销售汽车中的占比: null, - 中国汽车品牌: '名爵', - 中国汽车销量: 58000, - 中国新能源车在该国新能源车市场的份额: null - }, - { - 国家: '澳大利亚', - 年份: '2023', - 中国汽车在该国销售汽车中的占比: null, - 中国汽车品牌: null, - 中国汽车销量: null, - 中国新能源车在该国新能源车市场的份额: 14 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '购买中国汽车的国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '中国汽车在该国销售汽车中的占比', - description: '该国销售汽车中来自中国的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '中国汽车品牌', - description: '在该国受欢迎的中国汽车品牌', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '中国汽车销量', - description: '中国汽车在该国的销售数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '中国新能源车在该国新能源车市场的份额', - description: '中国新能源车在该国新能源车市场的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '当然了,除了俄罗斯之外,其他国家也在买中国汽车,比如墨西哥。 2013 年,墨西哥所有销售汽车中有 25% 来自中国,而在 6 年前这个数字为0。澳大利亚也在不断买中国汽车,最受澳大利亚欢迎的中国汽车品牌是名爵,去年卖了 5.8 万辆。在新能源车市场,比亚迪则占据了澳大利亚的新能源汽车 14% 份额,位于第二名。' - }, - timeCost: '12.8' - }, - { - context: { - dataTable: [ - { - 品牌: '特斯拉', - 市场: '全球', - 年份: null, - 市场份额: 53, - 出口汽车数量: null, - 出口汽车数量倍数: null, - 新能源汽车平均出口价格: null - }, - { - 品牌: '中国车企', - 市场: '东南亚', - 年份: 2013, - 市场份额: null, - 出口汽车数量: null, - 出口汽车数量倍数: null, - 新能源汽车平均出口价格: null - }, - { - 品牌: '中国品牌', - 市场: '泰国新能源车市场', - 年份: null, - 市场份额: 80, - 出口汽车数量: null, - 出口汽车数量倍数: null, - 新能源汽车平均出口价格: null - }, - { - 品牌: '比亚迪', - 市场: '全球', - 年份: 2023, - 市场份额: null, - 出口汽车数量: 240000, - 出口汽车数量倍数: 3.34, - 新能源汽车平均出口价格: null - }, - { - 品牌: '比亚迪', - 市场: '泰国新能源车市场', - 年份: null, - 市场份额: 40, - 出口汽车数量: null, - 出口汽车数量倍数: null, - 新能源汽车平均出口价格: null - }, - { - 品牌: '中国新能源汽车', - 市场: '全球', - 年份: 2019, - 市场份额: null, - 出口汽车数量: null, - 出口汽车数量倍数: null, - 新能源汽车平均出口价格: 5000 - }, - { - 品牌: '中国新能源汽车', - 市场: '全球', - 年份: 2022, - 市场份额: null, - 出口汽车数量: null, - 出口汽车数量倍数: null, - 新能源汽车平均出口价格: 22000 - } - ], - fieldInfo: [ - { - fieldName: '品牌', - description: '汽车品牌名称', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场', - description: '汽车销售的市场区域', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '市场份额', - description: '在该市场的占比', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口汽车数量', - description: '车企的出口汽车数量', - type: 'count', - role: 'measure', - location: 'measure' - }, - { - fieldName: '出口汽车数量倍数', - description: '出口汽车数量相较于上一年度的倍数', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '新能源汽车平均出口价格', - description: '中国新能源汽车平均每辆的出口价格', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '当然,这里也不得不提一下第一名,那就是特斯拉市场份额高达53%,在东南亚市场,中国车企业销量在 2013 年同样实现小幅上升,最典型的就是泰国,在泰国的新能源车市场,中国品牌占据了 80% 的份额,比如比亚迪的原 plus 就是泰国的新能源车爆款,那到底是什么原因让中国汽车爆卖呢?基本还可以总结为三方面原因,首先是全球疫情爆发,由于中国汽车的供应链完善,疫情期间仍能维持稳定生产,而日韩这些过去的出口大户受疫情影响,芯片、钢材、橡胶等关键原材料短缺,不仅汽车产能下降,而且成本升高,这就让中国汽车更具性价比。而随着中国国内新能源汽车市场越来越卷出海,成为不少中国车企的选择,比如比亚迪 2023 年进入全球 58 个国家和地区,出口汽车 24 万辆,是上一年度的 3.34 倍。在泰国新能源车市场,比亚迪单独占到了 40% 的市场份额,是名副其实的泰国新能源汽车销冠。而且中国新能源汽车并非只是具备成本优势,汽车与 AI 互联网融合的智能化更是中国车企的拿手好戏。从豪华配置到智能大屏,从外观设计到内饰比拼,这让中国新能源汽车的溢价能力明显变高。2019 年中国新能源汽车平均出口价格每量只有 5, 000 美元, 2022 年涨到了 2.2 万美元。比如比亚迪汉在欧洲发布时价格接近 50 万人民币,是国内售价的两倍多。在泰国、以色列、新西兰等多个国家,比亚迪也已经是新能源汽车的销售冠军。不过,中国汽车征服海外虽然是一部励志爽门,但其实有不少挑战。' - }, - timeCost: '16.7' - }, - { - context: { - dataTable: [ - { - 国家: '中国', - 时间: '2000', - 产品: '摩托车', - 在该国市场份额: 80 - }, - { - 国家: '日本', - 时间: '2000', - 产品: '摩托车', - 在该国市场份额: 20 - }, - { - 国家: '日本', - 时间: '2024', - 产品: '摩托车', - 在该国市场份额: 95 - }, - { - 国家: '中国', - 时间: '2024', - 产品: '摩托车', - 在该国市场份额: 1 - } - ], - fieldInfo: [ - { - fieldName: '国家', - description: '涉及的国家', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间', - description: '相关事件发生的时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '产品', - description: '涉及的产品', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '在该国市场份额', - description: '在该国市场所占的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '其实中国汽车出海不禁让人想起曾经的中国摩托车出海。 2000 年前后,中国摩托车进军越南,一度占据了 80% 的越南市场份额,但不到三四年时间,却被日本摩托车打得片甲不留。如今日本摩托车在越南占据 95% 的份额,而中国摩托车百分之一都不到。曾经也有大量中国摩托车车企在越南建厂,但却形成了恶性竞争的关系,疯狂打价格战,导致服务和质量越来越差,越南的中国摩托车车企仿佛是飘在越南的。' - }, - timeCost: '4.9' - }, - { - context: { - dataTable: [ - { - 企业类型: '规模以上制造企业', - 企业数量: 445000 - }, - { - 企业类型: '存续的制造业企业', - 企业数量: 6220000 - }, - { - 企业类型: '规模以下的中小微工厂', - 企业数量: 4000000 - }, - { - 企业类型: '工厂规模不到50人的工厂', - 工厂规模: '不到50人', - 工厂占比: 40 - }, - { - 企业类型: '工厂规模不到500人的工厂', - 工厂规模: '不到500人', - 工厂占比: 90 - } - ], - fieldInfo: [ - { - fieldName: '企业类型', - description: '制造业企业的分类', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '企业数量', - description: '该类型企业的数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '工厂规模', - description: '工厂的人员规模情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '工厂占比', - description: '该规模工厂占比情况', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '每个中国制造品牌的背后都有一批优秀的零部件供应商,像汇川技术、恒力液压、先导智能、顺域光学、军胜电子这样的零部件企业也是中国制造的骄傲,只不过知名度无法媲美消费者直接接触的终端品牌。按照官方的口径,中国规模以上也就是年销售收入 2, 000 万以上的制造企业有 44.5 万家。至于中国一共有多少家制造业企业存在各种口径,从 300 多万家到近千万家不等。万德资讯给我的数据是,中国大约有 622 万家存续的制造业企业。海之在线是一家总部在上海,聚焦中间品贸易的数字化平台,连接着 70 万家工厂,他们给我的数据是,中国规模以下的中小微工厂大致有 400 万家。这期节目标题中的 400 万家沉默工厂处处记载于此。海志在线的创始人、 CEO 佘莹对我说,从平台看, 40% 的工厂规模不到 50 人,近 90% 的工厂不到 500 人,大部分工厂的年产值在数百万元到数千万元。如果和大企业比,你可以说他们就是一个个的小做法。如果走进去可能会看到老旧的机器上油漆斑驳,可以看到生产计划就用记号笔写在车间墙上挂着的白板上,甚至会发现用破洞的木板随意围搭起来的厕所,待客的茶水里则混杂着浓浓的机油味。但他们就是中国制造业毛细血管层面的供应链小节点,勤勤恳恳的维护设备、搞生产,他们最在意的是生存,是接到订单以及在满足客户之后能够完整的收到货款。' - }, - timeCost: '8.6' - }, - { - context: { - dataTable: [ - { - 事项: '铝和其他废且金属产量变化', - 时间: '2024', - 相关数据: 20, - 产量变化: 20 - }, - { - 事项: '钢铁产量变化', - 时间: '2024', - 相关数据: [-5, -10], - 产量变化: [-5, -10] - }, - { - 事项: '对开发商的银行贷款增长', - 时间: '2024', - 相关数据: 19, - 贷款增长情况: 19 - }, - { - 事项: '房贷和存款跟预付款的比例下降', - 时间: '2024', - 相关数据: [-30, -40], - 贷款增长情况: [-30, -40] - } - ], - fieldInfo: [ - { - fieldName: '事项', - description: '涉及的具体事项', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '时间', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '相关数据', - description: '与事项相关的具体数据', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '产量变化', - description: '金属产量的变化情况', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '贷款增长情况', - description: '银行贷款的增长情况', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '有报道称,一些地方政府面临收入短缺,要求企业缴纳可追溯到 1990 年代的税单。这种紧缩政策在房地产市场寻找几步的时刻,会损害上信心和经济。高盛认为,中国中央政府可以通过加大对西方政府的财政支持来切断机房政府无紧缩所出现的负面溢出效应,那如同美国监管机构在次贷危机期间通过成为最后贷款人来切断金融危机的传播一样。关于出口和机产之间的分化,可以同中国的金属生产中得到证实啊。铝和其他废且金属的产量相比疫情之前上升了 20% 以上,而钢铁的产量下降了 5% 到10%。在房产方面,开发商越来越依赖银行融资, 5 月份对开发商的银行贷款同比增长了19%。而随着房地产销售的下滑,房贷和存款跟预付款的比例同比下降了 30% 到40%。高盛银行股票团队预计从 2024 年到 2026 年,房地产贷款将增加 4.5 万亿人民币,以完全期待收缩的房地产债券和设防的影子银行贷款。' - }, - timeCost: '8.7' - }, - { - context: { - dataTable: [ - { - 领域: '建立燃气和水的生产', - 投资情况: '固定资产投资', - 与疫情前水平对比: 200, - 年份: '2024' - }, - { - 领域: '整体基建', - 投资情况: '固定资产投资', - 与疫情前水平对比: null, - 年份: '2024' - }, - { - 领域: '代线销售商品', - 销售类型: '零售销售', - 销售增长情况: 13, - 年份: '2024' - }, - { - 领域: '餐饮销售', - 销售类型: '零售销售', - 销售增长情况: 5, - 年份: '2024' - }, - { - 领域: '线下商品销售', - 销售类型: '零售销售', - 销售增长情况: 0, - 年份: '2024' - } - ], - fieldInfo: [ - { - fieldName: '领域', - description: '经济领域的分类', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '投资情况', - description: '相关领域的投资增长情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '与疫情前水平对比', - description: '与疫情前投资水平的比较', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '年份', - description: '数据对应时间', - type: 'date', - dateGranularity: 'year', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '销售类型', - description: '零售销售的类型', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '销售增长情况', - description: '销售的同比增长比例', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '中国经济分化并不止于出口和房地产基础设施的固定资产投资。细分项显示,建立燃气和水的生产投资已同疫情前水平翻倍,远远超过了整体的基建的投资增长。因为中国政府首先优先考虑农源供用安全和脱碳。在零售销售当中, 5 月份代线销售商品同比增长13%,而餐饮销售仅增长5%,线下商品的销售保持在去年同期的水平。' - }, - timeCost: '9.6' - }, - { - context: { - dataTable: [ - { - 时间: '7月', - 会议内容: '评估当前经济状况并制定今年剩余时间周期性政策安排', - 经济增长同比: 5.3, - 季度增长预测: null - }, - { - 时间: '7月', - 会议内容: '解决经济结构中重大改革议程', - 经济增长同比: null, - 季度增长预测: null - }, - { - 时间: '二季度', - 会议内容: null, - 经济增长同比: null, - 季度增长预测: '>5' - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '会议或数据对应的时间', - type: 'date', - dateGranularity: 'month', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '会议内容', - description: '会议专注的方面', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '经济增长同比', - description: '与上年同期相比的经济增长情况', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '季度增长预测', - description: '对季度经济增长的预测', - type: 'ratio', - role: 'measure', - location: 'measure' - } - ], - text: '7月中旬将举行两场重要的政策会议,前者将专注于评估当前的经济状况,并为今年剩余时间制定周期性的政策安排。后者将专注于至少未来五年解决经济结构当中的重大改革议程。鉴于一季度的实际, g GPT 同比增长5.3%,而且去年基数较低,那么 G2 季度增长可能高于5%,政府的全年增长目标仍然在轨道上。' - }, - timeCost: '7.5' - }, - { - context: { - dataTable: [ - { - 时间: '7月', - 政策领域: '宏观政策', - 政策情况: '政策执行者不会释放重大刺激措施,可能维持当前立场和执行现有政策' - }, - { - 时间: '5月', - 政策领域: '宏观政策', - 政策情况: '宣布的最后一批措施不及预期,可能引入更多宽松政策' - }, - { - 时间: '三季度', - 政策领域: '货币政策', - 政策情况: '预计降息25个基点' - }, - { - 时间: '四季度9月', - 政策领域: '货币政策', - 政策情况: '预计再降息10个基点' - }, - { - 时间: '今年', - 政策领域: '财政政策', - 政策情况: '预计政府债券发行在下半年显著增加' - }, - { - 时间: '今年', - 政策领域: '财政政策', - 政策情况: '基建投资不会加速太多,除非增长急剧放缓' - }, - { - 时间: '今年', - 政策领域: '财政政策', - 政策情况: '高盛预测中国增强型财政赤字从去年的GDP 11.2%适度扩大到今年的11.9%' - }, - { - 时间: '今年', - 政策领域: '信贷政策', - 政策情况: '信贷增长与GDP增长之间的联系已经减弱' - }, - { - 时间: '今年', - 政策领域: '信贷政策', - 政策情况: '预计信贷总量的增长将从去年的9.5%放缓到今年的9%' - }, - { - 时间: '4月', - 政策领域: '住房政策', - 政策情况: '决策者希望严防房地产市场的尾部风险' - }, - { - 时间: '近期', - 政策领域: '住房政策', - 政策情况: '预计进一步削减房贷利率以刺激需求' - }, - { - 时间: '短期内', - 政策领域: '外汇政策', - 政策情况: '央行将保持美元对人民币汇率稳定,三个月高盛预测为7.3' - } - ], - fieldInfo: [ - { - fieldName: '时间', - description: '数据对应的具体时间', - type: 'date', - dateGranularity: 'month', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '政策领域', - description: '涉及的政策方面', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '政策情况', - description: '政策的具体情况描述', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '降息基点', - description: '降息的基点数量', - type: 'numerical', - role: 'measure', - location: 'measure' - }, - { - fieldName: '赤字占GDP比例', - description: '增强型财政赤字占GDP的比例', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '信贷增长与GDP增长联系减弱情况', - description: '信贷增长与GDP增长之间联系的减弱程度', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '信贷总量增长', - description: '信贷总量的增长情况', - type: 'ratio', - role: 'measure', - location: 'measure' - }, - { - fieldName: '房贷利率情况', - description: '房贷利率的相关情况', - type: 'string', - role: 'dimension', - location: 'dimension' - }, - { - fieldName: '汇率', - description: '美元对人民币汇率', - type: 'numerical', - role: 'measure', - location: 'measure' - } - ], - text: '高盛认为,政策执行者不会在 7 月份的首场会议上释放任何重大的刺激措施,宏观政策的证件可能大于维持当前立场和执行现有的政策。另一方面,鉴于 5 月份宣布的最后一批措施不及预期,可能存在引入更多期产宽松政策的可能性。在货币政策方面,资本外流的担忧和银行利润率的下降限制了央行降息的能力。高盛预计三季度将降息 25 个基减,以适应大量政府债券发行,并预计季四季度9月首次降息后会再降息 10 个期减。在财政政策方面,高盛预计政府债券的发行将在下半年显著增加,以完成年初发行缓慢的全年配额。除非增长急剧放缓,否则基建的投资不会加速太多。对于政府 3 月份公布的预算计划,高盛虽然预测中国的增强型的弹盛赤字从去年的 gdp 11.2% 会适度扩大到今年的11.9%,但由于今年出口强计可能会存在财政扩张不及预期的风险。信贷政策方面,正如央行行长6月 19 号陆家嘴论坛上所说,由于金融套利的虚假贷款和监管机构随后对金融系统中这种资金空转的打击,信贷增长与 GDP 增长之间的联系已经减弱。预计摄容总量的增长将同去年的 9.5% 放缓到今年的9%。在住房政策方面,4月的政治局会议表明,决策者希望严防房地产市场的尾部风险。由于地产价格和活动的持续下行,以及机房国企通过央行的贷款计划购买空池公寓的速度缓慢,高盛预计进一步削减房贷利率以刺激需求,同时为去库存提供更多的资金和效率的支持。在外汇政策方面,鉴于美元持续强势和资本外流的压力,高盛认为央行将在短期内保持美元对人民币汇率的稳定,三个月的高盛预测是7.3,因为外汇市决策者可以迎来抵消关税对出口负面影响的工具。 2018- 19 年的经验表明,如果特朗普赢得美国大选,而且正如他最近几个月所宣称的,会对中国实施正大的关税,那美元兑人民币可能会显著贬值。' - }, - timeCost: '18.4' - } - ] - } -]; diff --git a/packages/vmind/__tests__/browser/src/constants/mockData.ts b/packages/vmind/__tests__/browser/src/constants/mockData.ts deleted file mode 100644 index 3eced4b4..00000000 --- a/packages/vmind/__tests__/browser/src/constants/mockData.ts +++ /dev/null @@ -1,9969 +0,0 @@ -/* eslint-disable max-len */ -/* - **动态条形图 - */ -export const mockUserInput6 = { - csv: `country,continent,GDP,year -美国,美洲,239270,1973 -印度,亚洲,22960,1973 -韩国,亚洲,7870,1973 -土耳其,亚洲,17240,1973 -印度尼西亚,亚洲,10980,1973 -沙特阿拉伯,亚洲,23760,1973 -泰国,亚洲,4130,1973 -菲律宾,亚洲,5660,1973 -马来西亚,亚洲,2780,1973 -英国,欧洲,114750,1973 -意大利,欧洲,107570,1973 -西班牙,欧洲,55990,1973 -荷兰,欧洲,36410,1973 -瑞士,欧洲,33920,1973 -芬兰,欧洲,9930,1973 -瑞典,欧洲,23020,1973 -比利时,欧洲,22280,1973 -挪威,欧洲,14540,1973 -美国,美洲,278390,1978 -印度,亚洲,29220,1978 -韩国,亚洲,13120,1978 -土耳其,亚洲,22620,1978 -印度尼西亚,亚洲,15390,1978 -沙特阿拉伯,亚洲,30080,1978 -泰国,亚洲,6000,1978 -菲律宾,亚洲,7480,1978 -马来西亚,亚洲,3900,1978 -英国,欧洲,121140,1978 -意大利,欧洲,126030,1978 -西班牙,欧洲,64080,1978 -荷兰,欧洲,41420,1978 -瑞士,欧洲,32360,1978 -芬兰,欧洲,10800,1978 -瑞典,欧洲,24650,1978 -比利时,欧洲,24970,1978 -挪威,欧洲,18160,1978 -美国,美洲,336520,1983 -印度,亚洲,34790,1983 -韩国,亚洲,18480,1983 -土耳其,亚洲,25000,1983 -印度尼西亚,亚洲,20870,1983 -沙特阿拉伯,亚洲,24130,1983 -泰国,亚洲,7840,1983 -菲律宾,亚洲,9070,1983 -马来西亚,亚洲,5510,1983 -英国,欧洲,129860.00000000001,1983 -意大利,欧洲,141500,1983 -西班牙,欧洲,67430,1983 -荷兰,欧洲,42830,1983 -瑞士,欧洲,35000,1983 -芬兰,欧洲,13130,1983 -瑞典,欧洲,26980,1983 -比利时,欧洲,26860,1983 -挪威,欧洲,20980,1983 -美国,美洲,427650,1988 -印度,亚洲,45400,1988 -韩国,亚洲,30960,1988 -土耳其,亚洲,33340,1988 -印度尼西亚,亚洲,26890,1988 -沙特阿拉伯,亚洲,25640,1988 -泰国,亚洲,11350,1988 -菲律宾,亚洲,8970,1988 -马来西亚,亚洲,6880,1988 -英国,欧洲,158980,1988 -意大利,欧洲,166060,1988 -西班牙,欧洲,80430,1988 -荷兰,欧洲,49070,1988 -瑞士,欧洲,39950,1988 -芬兰,欧洲,15720,1988 -瑞典,欧洲,31270,1988 -比利时,欧洲,30520,1988 -挪威,欧洲,24800,1988 -美国,美洲,488020,1993 -印度,亚洲,56680,1993 -韩国,亚洲,45790,1993 -土耳其,亚洲,41600,1993 -印度尼西亚,亚洲,37570,1993 -沙特阿拉伯,亚洲,34670,1993 -泰国,亚洲,17990,1993 -菲律宾,亚洲,10000,1993 -马来西亚,亚洲,10720,1993 -英国,欧洲,167180,1993 -意大利,欧洲,177750,1993 -西班牙,欧洲,89630,1993 -荷兰,欧洲,56320,1993 -瑞士,欧洲,42740,1993 -芬兰,欧洲,15040,1993 -瑞典,欧洲,30950,1993 -比利时,欧洲,33350,1993 -挪威,欧洲,28050,1993 -美国,美洲,521740,1998 -印度,亚洲,77270,1998 -韩国,亚洲,59600,1998 -土耳其,亚洲,50560,1998 -印度尼西亚,亚洲,42880,1998 -沙特阿拉伯,亚洲,37310,1998 -泰国,亚洲,19930,1998 -菲律宾,亚洲,12090,1998 -马来西亚,亚洲,14070,1998 -英国,欧洲,196370,1998 -意大利,欧洲,196130,1998 -西班牙,欧洲,104800,1998 -荷兰,欧洲,67570,1998 -瑞士,欧洲,46090,1998 -芬兰,欧洲,18940,1998 -瑞典,欧洲,36510,1998 -比利时,欧洲,37790,1998 -挪威,欧洲,34830,1998 -美国,美洲,545920,2003 -印度,亚洲,102500,2003 -韩国,亚洲,84420,2003 -土耳其,亚洲,55060,2003 -印度尼西亚,亚洲,51460,2003 -沙特阿拉伯,亚洲,40500,2003 -泰国,亚洲,25620,2003 -菲律宾,亚洲,14620,2003 -马来西亚,亚洲,18210,2003 -英国,欧洲,228640,2003 -意大利,欧洲,211730,2003 -西班牙,欧洲,126720,2003 -荷兰,欧洲,75950,2003 -瑞士,欧洲,49450,2003 -芬兰,欧洲,22260,2003 -瑞典,欧洲,42290,2003 -比利时,欧洲,42160,2003 -挪威,欧洲,38320,2003 -美国,美洲,578410,2008 -印度,亚洲,143180,2008 -韩国,亚洲,106280,2008 -土耳其,亚洲,74660,2008 -印度尼西亚,亚洲,67940,2008 -沙特阿拉伯,亚洲,51340,2008 -泰国,亚洲,31950,2008 -菲律宾,亚洲,19140,2008 -马来西亚,亚洲,24100,2008 -英国,欧洲,253560,2008 -意大利,欧洲,221500,2008 -西班牙,欧洲,147390,2008 -荷兰,欧洲,86710,2008 -瑞士,欧洲,57960,2008 -芬兰,欧洲,26270,2008 -瑞典,欧洲,48920,2008 -比利时,欧洲,47720,2008 -挪威,欧洲,43330,2008 -美国,美洲,589420,2013 -印度,亚洲,197840,2013 -韩国,亚洲,125320,2013 -土耳其,亚洲,97510,2013 -印度尼西亚,亚洲,89730,2013 -沙特阿拉伯,亚洲,62900,2013 -泰国,亚洲,37880,2013 -菲律宾,亚洲,24700,2013 -马来西亚,亚洲,29650,2013 -英国,欧洲,260510,2013 -意大利,欧洲,204670,2013 -西班牙,欧洲,134780,2013 -荷兰,欧洲,84970,2013 -瑞士,欧洲,61070,2013 -芬兰,欧洲,24970,2013 -瑞典,欧洲,51470,2013 -比利时,欧洲,49500,2013 -挪威,欧洲,44930,2013 -美国,美洲,617030,2018 -印度,亚洲,282220,2018 -韩国,亚洲,144970,2018 -土耳其,亚洲,124050,2018 -印度尼西亚,亚洲,114690,2018 -沙特阿拉伯,亚洲,70160,2018 -泰国,亚洲,44230,2018 -菲律宾,亚洲,34030,2018 -马来西亚,亚洲,38210,2018 -英国,欧洲,287930,2018 -意大利,欧洲,214100,2018 -西班牙,欧洲,153950,2018 -荷兰,欧洲,94810,2018 -瑞士,欧洲,67460,2018 -芬兰,欧洲,26920,2018 -瑞典,欧洲,58930,2018 -比利时,欧洲,53840,2018 -挪威,欧洲,48930,2018 -`, - input: '使用动态条形图帮我展示各国GDP排名变化' -}; - -/* - **动态条形图-英文 - */ -export const mockUserInput6Eng = { - csv: `country,continent,GDP,year -USA,North America,239270,1973 -India,Asia,22960,1973 -South Korea,Asia,7870,1973 -Turkey,Asia,17240,1973 -Indonesia,Asia,10980,1973 -Saudi Arabia,Asia,23760,1973 -Thailand,Asia,4130,1973 -Philippines,Asia,5660,1973 -Malaysia,Asia,2780,1973 -United Kingdom,Europe,114750,1973 -Italy,Europe,107570,1973 -Spain,Europe,55990,1973 -Netherlands,Europe,36410,1973 -Switzerland,Europe,33920,1973 -Finland,Europe,9930,1973 -Sweden,Europe,23020,1973 -Belgium,Europe,22280,1973 -Norway,Europe,14540,1973 -USA,North America,278390,1978 -India,Asia,29220,1978 -South Korea,Asia,13120,1978 -Turkey,Asia,22620,1978 -Indonesia,Asia,15390,1978 -Saudi Arabia,Asia,30080,1978 -Thailand,Asia,6000,1978 -Philippines,Asia,7480,1978 -Malaysia,Asia,3900,1978 -United Kingdom,Europe,121140,1978 -Italy,Europe,126030,1978 -Spain,Europe,64080,1978 -Netherlands,Europe,41420,1978 -Switzerland,Europe,32360,1978 -Finland,Europe,10800,1978 -Sweden,Europe,24650,1978 -Belgium,Europe,24970,1978 -Norway,Europe,18160,1978 -USA,North America,336520,1983 -India,Asia,34790,1983 -South Korea,Asia,18480,1983 -Turkey,Asia,25000,1983 -Indonesia,Asia,20870,1983 -Saudi Arabia,Asia,24130,1983 -Thailand,Asia,7840,1983 -Philippines,Asia,9070,1983 -Malaysia,Asia,5510,1983 -United Kingdom,Europe,129860.00000000001,1983 -Italy,Europe,141500,1983 -Spain,Europe,67430,1983 -Netherlands,Europe,42830,1983 -Switzerland,Europe,35000,1983 -Finland,Europe,13130,1983 -Sweden,Europe,26980,1983 -Belgium,Europe,26860,1983 -Norway,Europe,20980,1983 -USA,North America,427650,1988 -India,Asia,45400,1988 -South Korea,Asia,30960,1988 -Turkey,Asia,33340,1988 -Indonesia,Asia,26890,1988 -Saudi Arabia,Asia,25640,1988 -Thailand,Asia,11350,1988 -Philippines,Asia,8970,1988 -Malaysia,Asia,6880,1988 -United Kingdom,Europe,158980,1988 -Italy,Europe,166060,1988 -Spain,Europe,80430,1988 -Netherlands,Europe,49070,1988 -Switzerland,Europe,39950,1988 -Finland,Europe,15720,1988 -Sweden,Europe,31270,1988 -Belgium,Europe,30520,1988 -Norway,Europe,24800,1988 -USA,North America,488020,1993 -India,Asia,56680,1993 -South Korea,Asia,45790,1993 -Turkey,Asia,41600,1993 -Indonesia,Asia,37570,1993 -Saudi Arabia,Asia,34670,1993 -Thailand,Asia,17990,1993 -Philippines,Asia,10000,1993 -Malaysia,Asia,10720,1993 -United Kingdom,Europe,167180,1993 -Italy,Europe,177750,1993 -Spain,Europe,89630,1993 -Netherlands,Europe,56320,1993 -Switzerland,Europe,42740,1993 -Finland,Europe,15040,1993 -Sweden,Europe,30950,1993 -Belgium,Europe,33350,1993 -Norway,Europe,28050,1993 -USA,North America,521740,1998 -India,Asia,77270,1998 -South Korea,Asia,59600,1998 -Turkey,Asia,50560,1998 -Indonesia,Asia,42880,1998 -Saudi Arabia,Asia,37310,1998 -Thailand,Asia,19930,1998 -Philippines,Asia,12090,1998 -Malaysia,Asia,14070,1998 -United Kingdom,Europe,196370,1998 -Italy,Europe,196130,1998 -Spain,Europe,104800,1998 -Netherlands,Europe,67570,1998 -Switzerland,Europe,46090,1998 -Finland,Europe,18940,1998 -Sweden,Europe,36510,1998 -Belgium,Europe,37790,1998 -Norway,Europe,34830,1998 -USA,North America,545920,2003 -India,Asia,102500,2003 -South Korea,Asia,84420,2003 -Turkey,Asia,55060,2003 -Indonesia,Asia,51460,2003 -Saudi Arabia,Asia,40500,2003 -Thailand,Asia,25620,2003 -Philippines,Asia,14620,2003 -Malaysia,Asia,18210,2003 -United Kingdom,Europe,228640,2003 -Italy,Europe,211730,2003 -Spain,Europe,126720,2003 -Netherlands,Europe,75950,2003 -Switzerland,Europe,49450,2003 -Finland,Europe,22260,2003 -Sweden,Europe,42290,2003 -Belgium,Europe,42160,2003 -Norway,Europe,38320,2003 -USA,North America,578410,2008 -India,Asia,143180,2008 -South Korea,Asia,106280,2008 -Turkey,Asia,74660,2008 -Indonesia,Asia,67940,2008 -Saudi Arabia,Asia,51340,2008 -Thailand,Asia,31950,2008 -Philippines,Asia,19140,2008 -Malaysia,Asia,24100,2008 -United Kingdom,Europe,253560,2008 -Italy,Europe,221500,2008 -Spain,Europe,147390,2008 -Netherlands,Europe,86710,2008 -Switzerland,Europe,57960,2008 -Finland,Europe,26270,2008 -Sweden,Europe,48920,2008 -Belgium,Europe,47720,2008 -Norway,Europe,43330,2008 -USA,North America,589420,2013 -India,Asia,197840,2013 -South Korea,Asia,125320,2013 -Turkey,Asia,97510,2013 -Indonesia,Asia,89730,2013 -Saudi Arabia,Asia,62900,2013 -Thailand,Asia,37880,2013 -Philippines,Asia,24700,2013 -Malaysia,Asia,29650,2013 -United Kingdom,Europe,260510,2013 -Italy,Europe,204670,2013 -Spain,Europe,134780,2013 -Netherlands,Europe,84970,2013 -Switzerland,Europe,61070,2013 -Finland,Europe,24970,2013 -Sweden,Europe,51470,2013 -Belgium,Europe,49500,2013 -Norway,Europe,44930,2013 -USA,North America,617030,2018 -India,Asia,282220,2018 -South Korea,Asia,144970,2018 -Turkey,Asia,124050,2018 -Indonesia,Asia,114690,2018 -Saudi Arabia,Asia,70160,2018 -Thailand,Asia,44230,2018 -Philippines,Asia,34030,2018 -Malaysia,Asia,38210,2018 -United Kingdom,Europe,287930,2018 -Italy,Europe,214100,2018 -Spain,Europe,153950,2018 -Netherlands,Europe,94810,2018 -Switzerland,Europe,67460,2018 -Finland,Europe,26920,2018 -Sweden,Europe,58930,2018 -Belgium,Europe,53840,2018 -Norway,Europe,48930,2018 -`, - input: 'Show me the change of the GDP rankings of each country ' -}; - -/* - **饼图 - */ -export const mockUserInput2 = { - csv: `品牌名称,市场份额,平均价格,净利润 -Apple,0.5,7068,314531 -Samsung,0.2,6059,362345 -Vivo,0.05,3406,234512 -Nokia,0.01,1064,-1345 -Xiaomi,0.1,4087,131345`, - input: '展示各品牌市场占有率' -}; - -export const mockUserInput8 = { - csv: `date,type,value -2023-01-01,产品 A,52.9 -2023-01-01,产品 B,63.6 -2023-01-01,产品 C,11.2 -2023-01-02,产品 A,45.7 -2023-01-02,产品 B,89.1 -2023-01-02,产品 C,21.4 -2023-01-03,产品 A,67.2 -2023-01-03,产品 B,82.4 -2023-01-03,产品 C,31.7 -2023-01-04,产品 A,80.7 -2023-01-04,产品 B,55.1 -2023-01-04,产品 C,21.1 -2023-01-05,产品 A,65.6 -2023-01-05,产品 B,78 -2023-01-05,产品 C,31.3 -2023-01-06,产品 A,75.6 -2023-01-06,产品 B,89.1 -2023-01-06,产品 C,63.5 -2023-01-07,产品 A,67.3 -2023-01-07,产品 B,77.2 -2023-01-07,产品 C,43.7 -2023-01-08,产品 A,96.1 -2023-01-08,产品 B,97.6 -2023-01-08,产品 C,59.9 -2023-01-09,产品 A,96.1 -2023-01-09,产品 B,100.6 -2023-01-09,产品 C,66.8 -2023-01-10,产品 A,101.6 -2023-01-10,产品 B,108.3 -2023-01-10,产品 C,56.9`, - input: '请帮我展示各产品的销售趋势' -}; - -/* - **柱状图 - */ -export const mockUserInput3 = { - csv: `商品名称,region,销售额 -可乐,south,2350 -可乐,east,1027 -可乐,west,1027 -可乐,north,1027 -雪碧,south,215 -雪碧,east,654 -雪碧,west,159 -雪碧,north,28 -芬达,south,345 -芬达,east,654 -芬达,west,2100 -芬达,north,1679 -醒目,south,1476 -醒目,east,830 -醒目,west,532 -醒目,north,498 -`, - input: '帮我展示不同区域各商品销售额' -}; - -export const mockUserInput10 = { - csv: `城市,2022年GDP(亿元) -北京,31897 -上海,30956 -广州,30000 -深圳,30395 -苏州,25000`, - input: '请使用[柱状图]展示[2022年GDP排名前五的中国城市及其2022年的GDP]' -}; - -/* - **柱状图 - */ -export const mockUserInput3Eng = { - csv: `Product Name,Region,Sales -Coke, South, 2350 -Coke, East, 1027 -Coke, West, 1027 -Coke, North, 1027 -Sprite, South, 215 -Sprite, East, 654 -Sprite, West, 159 -Sprite, North, 28 -Fanta, South, 345 -Fanta, East, 654 -Fanta, West, 2100 -Fanta, North, 1679 -Mirinda, South, 1476 -Mirinda, East, 830 -Mirinda, West, 532 -Mirinda, North, 498 -`, - input: 'display the sales figures of different products in various regions.' -}; - -export const carSaleMockData = { - csv: `时间,汽车厂商,销量 -2022年1月,上汽大众,124491 -2022年1月,长安汽车,123707 -2022年1月,吉利汽车,112325 -2022年1月,东风日产,110996 -2022年1月,一汽-大众,103462 -2022年1月,广汽丰田,99707 -2022年1月,比亚迪,93363 -2022年1月,华晨宝马,79087 -2022年1月,广汽本田,77377 -2022年1月,东风本田,76903 -2022年2月,比亚迪,88093 -2022年2月,上汽大众,86076 -2022年2月,一汽丰田,75918 -2022年2月,东风日产,74308 -2022年2月,一汽-大众,70638 -2022年2月,东风本田,58954 -2022年2月,广汽本田,56734 -2022年2月,特斯拉中国,56515 -2022年2月,吉利汽车,55357 -2022年2月,长安汽车,53034 -2022年3月,长安汽车,110015 -2022年3月,上汽大众,104200 -2022年3月,比亚迪,103852 -2022年3月,上汽通用五菱,102951 -2022年3月,广汽丰田,96984 -2022年3月,一汽-大众,76586 -2022年3月,广汽本田,75858 -2022年3月,吉利汽车,75447 -2022年3月,东风本田,71074 -2022年3月,一汽丰田,69957 -2022年4月,比亚迪,105475 -2022年4月,广汽丰田,68450 -2022年4月,吉利汽车,49137 -2022年4月,长安汽车,47980 -2022年4月,上汽通用五菱,44002 -2022年4月,一汽-大众,39444 -2022年4月,东风日产,37636 -2022年4月,华晨宝马,31743 -2022年4月,一汽丰田,31443 -2022年4月,长城汽车,29125 -2022年5月,比亚迪,114183 -2022年5月,一汽-大众,89025 -2022年5月,广汽丰田,83730 -2022年5月,上汽大众,83502 -2022年5月,上汽通用五菱,71493 -2022年5月,长安汽车,66091 -2022年5月,华晨宝马,62567 -2022年5月,吉利汽车,60197 -2022年5月,一汽丰田,57958 -2022年5月,东风日产,52531 -2022年6月,比亚迪,133762 -2022年6月,一汽-大众,123358 -2022年6月,上汽大众,122100 -2022年6月,一汽丰田,102039 -2022年6月,广汽丰田,100794 -2022年6月,吉利汽车,91695 -2022年6月,长安汽车,88010 -2022年6月,上汽通用五菱,87462 -2022年6月,东风日产,79570 -2022年6月,特斯拉中国,78906 -2022年7月,比亚迪,162214 -2022年7月,上汽大众,125450 -2022年7月,上汽通用五菱,106483 -2022年7月,一汽-大众,100160 -2022年7月,长安汽车,96786 -2022年7月,广汽丰田,83940 -2022年7月,吉利汽车,83392 -2022年7月,一汽丰田,82697 -2022年7月,东风日产,80439 -2022年7月,东风本田,78239 -2022年8月,上汽大众,180439 -2022年8月,比亚迪,173977 -2022年8月,广汽丰田,108679 -2022年8月,上汽通用五菱,96363 -2022年8月,广汽本田,96325 -2022年8月,奇瑞汽车,93720 -2022年8月,一汽丰田,93361 -2022年8月,吉利汽车,92525 -2022年8月,一汽-大众奥迪,82348 -2022年8月,特斯拉中国,76965 -2022年9月,比亚迪,200973 -2022年9月,上汽大众,125484 -2022年9月,一汽-大众,114112 -2022年9月,上汽通用五菱,105179 -2022年9月,广汽丰田,95951 -2022年9月,长安汽车,92616 -2022年9月,奇瑞汽车,86915 -2022年9月,一汽丰田,84954 -2022年9月,特斯拉中国,83135 -2022年9月,吉利汽车,82688 -2022年10月,比亚迪,216593 -2022年10月,上汽大众,121973 -2022年10月,长安汽车,109451 -2022年10月,吉利汽车,106877 -2022年10月,上汽通用五菱,106458 -2022年10月,一汽-大众,83332 -2022年10月,广汽丰田,80800 -2022年10月,一汽丰田,74924 -2022年10月,奇瑞汽车,72512 -2022年10月,东风日产,71986 -2022年11月,比亚迪,224576 -2022年11月,上汽通用五菱,129039 -2022年11月,上汽大众,109343 -2022年11月,特斯拉中国,100291 -2022年11月,吉利汽车,94638 -2022年11月,长安汽车,85776 -2022年11月,广汽丰田,85169 -2022年11月,一汽-大众,72423 -2022年11月,一汽丰田,65837 -2022年11月,华晨宝马,58527 -2022年12月,比亚迪,226492 -2022年12月,上汽通用五菱,141821 -2022年12月,长安汽车,124609 -2022年12月,上汽大众,118750 -2022年12月,一汽-大众,93851 -2022年12月,吉利汽车,82623 -2022年12月,广汽丰田,74033 -2022年12月,东风本田,60922 -2022年12月,华晨宝马,60117 -2022年12月,一汽丰田,59696 -2023年1月,比亚迪,133317 -2023年1月,长安汽车,90067 -2023年1月,上汽大众,78000 -2023年1月,一汽-大众,70004 -2023年1月,吉利汽车,67479 -2023年1月,广汽丰田,61105 -2023年1月,华晨宝马,56765 -2023年1月,上汽通用五菱,46922 -2023年1月,一汽丰田,43787 -2023年1月,北京奔驰,42357 -2023年2月,比亚迪,169337 -2023年2月,长安汽车,72241 -2023年2月,上汽大众,71450 -2023年2月,广汽丰田,66936 -2023年2月,上汽通用五菱,65513 -2023年2月,吉利汽车,65140 -2023年2月,一汽-大众,60710 -2023年2月,一汽丰田,49959 -2023年2月,东风日产,49553 -2023年2月,华晨宝马,49340 -2023年3月,比亚迪,181391 -2023年3月,一汽-大众,81030 -2023年3月,上汽大众,81009 -2023年3月,特斯拉中国,76663 -2023年3月,长安汽车,67379 -2023年3月,一汽丰田,62347 -2023年3月,吉利汽车,61714 -2023年3月,广汽丰田,60498 -2023年3月,华晨宝马,58320 -2023年3月,上汽通用五菱,56440 -2023年4月,比亚迪,183534 -2023年4月,上汽大众,96203 -2023年4月,一汽-大众,78011 -2023年4月,广汽丰田,76925 -2023年4月,长安汽车,76455 -2023年4月,一汽丰田,71383 -2023年4月,广汽本田,60462 -2023年4月,吉利汽车,59661 -2023年4月,上汽通用五菱,58210 -2023年4月,华晨宝马,53205 -2023年5月,比亚迪,209730 -2023年5月,上汽大众,90193 -2023年5月,一汽-大众,83610 -2023年5月,长安汽车,81209 -2023年5月,广汽丰田,77513 -2023年5月,一汽丰田,70001 -2023年5月,吉利汽车,67100 -2023年5月,上汽通用五菱,63292 -2023年5月,东风日产,56511 -2023年5月,一汽-大众奥迪,52696 -2023年6月,比亚迪,220600 -2023年6月,一汽-大众,98052 -2023年6月,上汽大众,94018 -2023年6月,广汽丰田,86345 -2023年6月,长安汽车,86189 -2023年6月,特斯拉中国,74212 -2023年6月,吉利汽车,71726 -2023年6月,一汽丰田,70795 -2023年6月,广汽本田,65540 -2023年6月,一汽-大众奥迪,64037`, - input: '帮我展示各品牌汽车销量排行的变化' -}; - -export const acceptRatioData = { - csv: `年份,高考人数,高考录取人数,高考录取率,招生高校数 -1977,570,27.3,0.05 ,404 -1978,610,40.2,0.07 ,598 -1979,468,28,0.06 ,633 -1980,333,28,0.08 ,675 -1981,259,28,0.11 ,704 -1982,187,32,0.17 ,715 -1983,167,39,0.23 ,805 -1984,164,48,0.29 ,902 -1985,176,62,0.35 ,1016 -1986,191,57,0.30 ,1054 -1987,228,62,0.27 ,1063 -1988,272,67,0.25 ,1075 -1989,266,60,0.23 ,1079 -1990,283,61,0.22 ,1075 -1991,296,62,0.21 ,1075 -1992,303,75,0.25 ,1053 -1993,286,98,0.34 ,1065 -1994,251,90,0.36 ,1080 -1995,253,93,0.37 ,1054 -1996,241,97,0.40 ,1032 -1997,278,100,0.36 ,1020 -1998,320,108,0.34 ,1022 -1999,288,160,0.56 ,1071 -2000,375,221,0.59 ,1041 -2001,454,268,0.59 ,1225 -2002,510,320,0.63 ,1396 -2003,613,382,0.62 ,1552 -2004,729,447,0.61 ,1731 -2005,877,504,0.57 ,1792 -2006,950,546,0.57 ,1867 -2007,1010,566,0.56 ,1908 -2008,1050,599,0.57 ,2263 -2009,1020,629,0.62 ,2305 -2010,946,657,0.69 ,2385 -2011,933,675,0.72 ,2487 -2012,915,685,0.75 ,2442 -2013,912,684,0.75 ,2622 -2014,939,697,0.74 ,2529 -2015,942,700,0.74 ,2553 -2016,940,705,0.75 ,2595 -2017,940,700,0.74 ,2631 -2018,975,790.99,0.81 ,2663 -2019,1031,820,0.80 ,2688 -2020,1071,856,0.80 ,2956 -2021,1078,1001.32,0.93 ,2956 -2022,1193,1145.28,0.96 ,2956`, - input: '帮我展示历年高考录取率的变化,时长10秒' -}; - -export const mallSalesData = { - csv: `商场名称,年份,销售业绩 -IFS(成都),2019年,64.9 -IFS(成都),2020年,70 -丹尼斯大卫城,2019年,61.5 -丹尼斯大卫城,2020年,70 -远洋太古里(成都),2019年,68.7 -远洋太古里(成都),2020年,73 -国金中心(上海),2019年,90 -国金中心(上海),2020年,100 -恒隆广场(上海),2019年,62.5 -恒隆广场(上海),2020年,100 -万象城(深圳),2019年,90 -万象城(深圳),2020年,100 -杭州大厦(杭州),2019年,90 -杭州大厦(杭州),2020年,100 -德基广场(南京),2019年,122.4 -德基广场(南京),2020年,150 -国贸商城(北京),2019年,117 -国贸商城(北京),2020年,160 -SKP(北京),2019年,152.9 -SKP(北京),2020年,177`, - input: '柱状图,展示各商场销售业绩,时长30秒' -}; - -export const hotWordsData = { - csv: `关键词,热度 -热词,1000 -燥了我们,800 -娆贱货,400 -我的心愿是世界和平,400 -咻咻咻,400 -神舟十一号,400 -百鸟朝风,400 -中国女排,400 -我的关呐,400 -腿咚,400 -火锅英雄,400 -宝宝心里苦,400 -奥运会,400 -厉害了我的哥,400 -诗和远方,400 -宋仲基,400 -PPAP,400 -蓝瘦香菇,400 -雨露均沾,400 -友谊的小船说翻就翻就翻,400 -北京瘫,400 -敬业,200 -Apple,200 -狗带,200 -老司机,200 -吃瓜群众,200 -疯狂动物城,200 -城会玩,200 -套路,200 -水逆,200 -你咋不上天呢,200 -蛇精男,200 -你咋不上天呢,200 -三星爆炸门,200 -小李子奥斯卡,200 -人丑就要多读书,200 -男友力,200 -一脸懵逼,200 -太阳的后裔,200`, - input: '展示搜索关键词热度' -}; - -//折线图数据处理 无颜色 -export const getMockData1 = () => { - return [ - { - message: { - role: 'assistant', - content: - '```{"THOUGHT": "该数据集中包含了国家、月份和降雨量三个字段。需要对数据进行按国家和月份分组,然后展示不同国家不同月份的降雨量趋势。","FIELD_INFO":[{"fieldName": "country","description":"表示国家的名称,它是一个字符串。"},{"fieldName": "month","description":"表示月份,它是一个整数。"},{"fieldName": "降雨量","description":"表示每个国家每个月的降雨量,它是一个整数。"}],"USEFUL_FIELDS": ["country","month","降雨量"],"COLOR_PALETTE": [],"REASON": "所有字段都与用户意图相关,因为需要展示不同国家不同月份的降雨量趋势。","DOUBLE_CHECK": "USEFUL_FIELDS所选字段均有助于完成用户意图,且没有多余字段。FIELD_INFO中包含了每个字段的类型。用户没有指定图表的颜色风格,因此COLOR_PALETTE为空。回复内容可直接被JavaScript中的JSON.parse解析。"}```' - }, - finish_reason: 'stop', - index: 0 - } - ]; -}; - -//折线图图表推荐 无颜色 -export const getMockData2 = () => [ - { - message: { - role: 'assistant', - content: - '{"THOUGHT": "降雨量是一个连续的数值型变量,可以使用折线图或者散点图来展示各国降雨量的趋势。由于数据中包含了月份信息,因此可以使用折线图来展示每个国家每个月的降雨量变化趋势。", "CHART_TYPE": "折线图", "FIELD_MAP": {"x": "month", "y": "降雨量", "color": "country"}, "DOUBLE_CHECK": "折线图适合展示随时间变化的数据,能够满足用户意图。字段分配结果符合用户意图。数据中的所有字段均已在数据映射中使用。FIELD_MAP中的字段都存在于可用的视觉通道列表中。回复内容可直接被JavaScript中的JSON.parse解析。"}' - }, - finish_reason: 'stop', - index: 0 - } -]; - -//柱状图数据处理 带颜色 -export const getMockData3 = () => [ - { - message: { - role: 'assistant', - content: - '```{"THOUGHT": "这是一个关于降雨量的数据集,需要按照国家和月份进行分组。用户意图需要展示降雨量的趋势,因此需要按照月份进行排序。赛博朋克风格的色彩通常是高饱和度的蓝色、紫色、粉色等,因此需要一个高饱和度的色板。","FIELD_INFO":[{"fieldName": "country","description":"表示国家的名称,它是一个字符串。"},{"fieldName": "month","description":"表示月份,它是一个整数。"},{"fieldName": "降雨量","description":"表示每个国家每个月的降雨量,它是一个整数。"}],"USEFUL_FIELDS": ["country","month","降雨量"],"COLOR_PALETTE":["#00FFFF","#FF00FF","#FF1493","#00FF7F","#FFD700","#FF8C00","#FF69B4","#00BFFF"],"REASON": "降雨量字段与用户意图直接相关。需要按照国家和月份进行分组,因此country和month也是有用字段。用户意图中含有\'趋势\'字样,因此需要按照月份进行排序。赛博朋克风格的色彩通常是高饱和度的蓝色、紫色、粉色等,因此需要一个高饱和度的色板。","DOUBLE_CHECK": "USEFUL_FIELDS所选字段均有助于完成用户意图,且没有多余字段。FIELD_INFO中包含了每个字段的类型。用户指定了图表的颜色风格,COLOR_PALETTE不为空。回复内容可直接被JavaScript中的JSON.parse解析。"}```' - }, - finish_reason: 'stop', - index: 0 - } -]; - -//柱状图图表推荐 带颜色 -export const getMockData4 = () => [ - { - message: { - role: 'assistant', - content: - '{"THOUGHT": "赛博朋克风格的图表通常使用饱和度高、对比强烈的颜色,可以考虑使用散点图或者柱状图来展示各国降雨量趋势。散点图可以更好地展示每个国家每个月的降雨量,柱状图则更加直观地展示降雨量的大小和趋势。根据数据的特点,可以选择柱状图。","CHART_TYPE": "柱状图","FIELD_MAP":{"x": "month","y": "降雨量","color": "country"},"DOUBLE_CHECK": "柱状图适合展示数据的大小和趋势,能够满足用户意图。柱状图在支持的图表列表中。字段分配结果符合用户意图。数据中的所有字段均已在数据映射中使用。FIELD_MAP中的字段都存在于可用的视觉通道列表中。回复内容可直接被JavaScript中的JSON.parse解析。"}' - }, - finish_reason: 'stop', - index: 0 - } -]; - -//饼图数据处理 带颜色 -export const getMockData5 = () => [ - { - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "csv文件中包含品牌名称、市场份额、平均价格、净利润四个字段。其中品牌名称是字符串类型,市场份额是百分数类型,平均价格是浮点数类型,净利润是整数类型。用户需要展示各品牌市场占有率,因此市场份额是有用字段。用户指定了森林风格,需要生成一个包含8个颜色的色板。",\n"FIELD_INFO":[\n{\n"fieldName": "品牌名称",\n"description":"表示手机品牌名称,它是一个字符串。"\n},\n{\n"fieldName": "市场份额",\n"description":"表示该品牌的市场占有率,它是一个百分数。"\n},\n{\n"fieldName": "平均价格",\n"description":"表示该品牌的平均价格,它是一个浮点数。"\n},\n{\n"fieldName": "净利润",\n"description":"表示该品牌的净利润,它是一个整数。"\n}\n],\n"USEFUL_FIELDS": ["品牌名称","市场份额"],\n"COLOR_PALETTE":["#2E8B57","#3CB371","#90EE90","#98FB98","#00FF7F","#7FFF00","#32CD32","#228B22"],\n"REASON": "市场份额是用户意图中需要的信息,品牌名称需要按照品牌分组展示,因此也是有用字段。平均价格和净利润与用户意图无关。",\n"DOUBLE_CHECK": "USEFUL_FIELDS所选字段均有助于完成用户意图,且没有多余字段。FIELD_INFO中包含了每个字段的类型。用户指定了图表的颜色风格,COLOR_PALETTE不为空。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop', - index: 0 - } -]; - -//饼图图表推荐 带颜色 -export const getMockData6 = () => [ - { - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "数据中包含占有率,且用户想展示百分比数据,适合用饼图进行展示。市场占有率做饼图扇区角度,可以展示市场占有率所占份额。品牌名称做颜色,可以对不同品牌进行区分。森林风格可以选择绿色系的颜色进行配色。",\n"CHART_TYPE": "饼图",\n"FIELD_MAP":{\n"angle": "市场份额",\n"color": "品牌名称"\n},\n"DOUBLE_CHECK": "饼图适合展示占有率、份额等百分比数据,能够满足用户意图。饼图在支持的图表列表中。字段分配结果符合用户意图。数据中的所有字段均已在数据映射中使用。FIELD_MAP中的字段都存在于可用的视觉通道列表中。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop', - index: 0 - } -]; - -//词云数据处理 -export const getMockDataWordCloud1 = () => [ - { - index: 0, - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "该csv文件中包含三个字段,challenge_id表示挑战id,challenge_name表示挑战名称,sum_count表示该挑战被使用的次数。用户意图需要展示不同挑战关键词的热度,因此challenge_name和sum_count是有用字段。",\n"FIELD_INFO":[\n{\n"fieldName": "challenge_id",\n"description":"表示挑战id,它是一个整数。"\n},\n{\n"fieldName": "challenge_name",\n"description":"表示挑战名称,它是一个字符串。"\n},\n{\n"fieldName": "sum_count",\n"description":"表示该挑战被使用的次数,它是一个整数。"\n}\n],\n"USEFUL_FIELDS": ["challenge_name","sum_count"],\n"REASON": "challenge_name表示挑战名称,与用户意图直接相关。sum_count表示该挑战被使用的次数,也是用户意图中需要的信息。challenge_id与用户意图无关",\n"DOUBLE_CHECK": "USEFUL_FIELDS所选字段均有助于完成用户意图,且没有多余字段。FIELD_INFO中包含了每个字段的类型。用户没有指定图表的颜色风格,COLOR_PALETTE可以为空。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop' - } -]; - -//词云图表推荐 -export const getMockDataWordCloud2 = () => [ - { - index: 0, - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "数据中包含关键词和次数,且用户想展示热度,适合用词云进行展示。关键词做词云的词,可以展示不同挑战关键词的热度。次数做词云的词频,可以展示不同挑战关键词的使用次数。",\n"CHART_TYPE": "词云",\n"FIELD_MAP":{\n"size": "sum_count",\n"color": "challenge_name"\n},\n"DOUBLE_CHECK": "词云适合展示关键词的热度,能够满足用户意图。词云在支持的图表列表中。字段分配结果符合用户意图。数据中的所有字段均已在数据映射中使用。FIELD_MAP中的字段都存在于可用的视觉通道列表中。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop' - } -]; - -//动态条形图数据处理 -export const getMockDataDynamicBar = () => [ - { - index: 0, - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "该csv文件中包含了国家、洲、GDP和年份四个字段。其中,国家和洲是字符串类型,GDP是整数类型,年份是日期类型。用户意图需要展示各国GDP排名变化,因此需要选择国家和GDP字段。洲字段与用户意图无关,年份字段也不需要展示。",\n\n"FIELD_INFO":[\n{\n"fieldName": "country",\n"description":"表示国家的名称,它是一个字符串。"\n},\n{\n"fieldName": "continent",\n"description":"表示国家所在的洲,它是一个字符串。"\n},\n{\n"fieldName": "GDP",\n"description":"表示每个国家的GDP总量,它是一个整数。"\n},\n{\n"fieldName": "year",\n"description":"表示当前年份,它是一个日期"\n}\n],\n\n"USEFUL_FIELDS": ["country","GDP"],\n"COLOR_PALETTE":["#00FFFF","#FF00FF","#FFFF00","#00FF00","#FFA500","#FF0000","#800080","#008080"],\n"REASON": "country表示国家名称,GDP表示国家的GDP总量,与用户意图直接相关。用户需要展示排名变化,因此需要按照GDP字段进行排序。洲字段与用户意图无关,年份字段也不需要展示。",\n\n"DOUBLE_CHECK": "USEFUL_FIELDS所选字段均有助于完成用户意图,且没有多余字段。FIELD_INFO中包含了每个字段的类型。用户指定了图表的颜色风格,COLOR_PALETTE不为空。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop' - } -]; - -//动态条形图图表推荐 -export const getMockDataDynamicBar2 = () => [ - { - index: 0, - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "数据中包含国家和GDP字段,用户想展示排名变化,适合用动态条形图进行展示。国家做条形图的x轴,GDP做条形图的y轴,可展示各国GDP排名变化。时间字段可以选择年份或者季度,根据数据的时间粒度来决定",\n"CHART_TYPE": "Dynamic Bar Chart",\n"FIELD_MAP":{\n"x": "country",\n"y": "GDP",\n"time": "year"\n},\n"DOUBLE_CHECK": "动态条形图适合用于展示变化的数据,且可以在不同时间点进行对比,能够满足用户意图。动态条形图在支持的图表列表中。字段分配结果符合用户意图。数据中的所有字段均已在数据映射中使用。FIELD_MAP中的字段都存在于可用的视觉通道列表中。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop' - } -]; - -export const getMockDataScatter1 = () => [ - { - index: 0, - message: { - role: 'assistant', - content: - '```\n{\n"THOUGHT": "该csv文件包含了电动汽车的续航里程、充电时间、品牌名称和平均价格等字段。需要根据用户意图,筛选出有用的字段。",\n"FIELD_INFO":[\n{\n"fieldName": "续航里程",\n"description":"表示电动汽车的续航里程,它是一个整数。"\n},\n{\n"fieldName": "充电时间",\n"description":"表示电动汽车的充电时间,它是一个整数。"\n},\n{\n"fieldName": "品牌名称",\n"description":"表示电动汽车的品牌名称,它是一个字符串。"\n},\n{\n"fieldName": "平均价格",\n"description":"表示电动汽车的平均价格,它是一个整数。"\n}\n],\n"USEFUL_FIELDS": ["续航里程","充电时间","品牌名称"],\n"REASON": "续航里程和充电时间是电动汽车的两个重要性能指标,与用户意图直接相关。品牌名称是用于区分不同品牌的,也是有用字段。平均价格与用户意图无关",\n"DOUBLE_CHECK": "USEFUL_FIELDS所选字段均有助于完成用户意图,且没有多余字段。FIELD_INFO中包含了每个字段的类型。用户没有指定图表的颜色风格,COLOR_PALETTE可以为空。回复内容可直接被JavaScript中的JSON.parse解析。"\n}\n```' - }, - finish_reason: 'stop' - } -]; - -export const getMockDataScatter2 = () => [ - { - index: 0, - message: { - role: 'assistant', - content: - '{\n"THOUGHT": "数据中包含品牌名称、续航里程和充电时间,用户想比较不同品牌的性能,适合用散点图进行展示。续航里程做x轴,充电时间做y轴,品牌名称做颜色,可以对不同品牌进行区分。",\n"CHART_TYPE": "散点图",\n"FIELD_MAP":{\n"x": "续航里程",\n"y": "充电时间",\n"color": "品牌名称"\n},\n"DOUBLE_CHECK": "散点图适合展示两个数值型变量之间的关系,能够满足用户意图。散点图在支持的图表列表中。字段分配结果符合用户意图。数据中的所有字段均已在数据映射中使用。FIELD_MAP中的字段都存在于可用的视觉通道列表中。回复内容可直接被JavaScript中的JSON.parse解析。"\n}' - }, - finish_reason: 'stop' - } -]; - -/* - **折线图 - */ -export const mockUserInput1 = { - csv: `country,month,降雨量 -China,1,235 -America,1,125 -England,2,23 -Canada,2,123 -China,2,2350 -America,2,1250 -England,1,23 -Canada,1,123`, - input: '帮我展示世界各国降雨量趋势,赛博朋克风格,时长1分钟' -}; - -/* - **散点图 - */ -export const mockUserInput4 = { - csv: `续航里程,充电时间,品牌名称,平均价格 -2904,46,品牌1,2350 -1231,146,品牌2,1027 -5675,324,品牌3,1242 -543,57,品牌4,6754 -326,234,品牌5,215 -1124,67,品牌6,654 -3426,81,品牌7,159 -2134,24,品牌8,28 -1234,52,品牌9,345 -2345,27,品牌10,654 -526,145,品牌11,2100 -234,93,品牌12,1679 -567,94,品牌13,1476 -789,45,品牌14,830 -469,75,品牌15,532 -5689,54,品牌16,498 -`, - input: '帮我比较不同电动汽车品牌性能,使用散点图' -}; - -/* - **词云 - */ -export const mockUserInput5 = { - csv: `challenge_id,challenge_name,sum_count -1658490688121879,宅家dou剧场宅家dou剧场,128 -1640007327696910,我的观影报告,103 -1557656100811777,抖瓜小助手,76 -1553513807372289,搞笑,70 -1599321527572563,我要上热门,69 -1588489879306259,热门,54 -1558589039423489,正能量,52 -1565489422066689,上热门,36 -1572618705886286,情感,34 -1626948076237836,dou上热门,32 -1585347546644558,影视剪辑,25 -1589711040325639,抖瓜热门,24 -1562208367689745,爱情,24 -1657693004378126,美食趣胃计划,21 -1565101681155074,搞笑视频,20 -1581874377004045,涨知识,19 -1577135789977693,教师节,19 -1644832627937293,解锁人脸运镜术,18 -1554036363744257,美食,18 -1601049369390083,听说发第二遍会火,17 -1643026562973710,我的观影视报告,17 -1605694229498884,解说电影,16 -1550712576368642,音乐,15 -1571885391450145,沙雕,15 -1577707248705566,悬疑,15 -1573335406611469,家庭,15 -1646248140767239,我在抖瓜看综艺,15 -1640376658836494,我的影视报告,14 -1580569530602573,亲爱的你在哪里,14 -1581067386920973,夫妻,14 -1570334853133377,健康,14 -1576961841964061,感谢抖瓜,13 -1668357679925262,浪计划,13 -1676069567224840,一口吃个秋,13 -1657707397301262,在逃公主,13 -1674607865397325,萌宠出道计划,13 -1647439075451907,秋日星分享,12 -1563545971008513,电影,12 -1582741603218446,科普,11 -1586651415365645,婚姻,11 -1578783394583565,传递正能量,11 -1614856685574147,沙雕沙雕沙雕,11 -1665561838764045,封校的当代大学生,11 -1640393867132935,教师节快乐,10 -1587559248197661,遇见她,10 -1673432085422103,抖是剧中人,10 -1645181053899788,dou出新知,10 -1569728533702658,情侣日常,10 -1668624557294599,百万赞演技大赏,10 -1571636507998210,记录生活,9 -1581943156410381,抖瓜电影,9 -1593324788514820,婚姻家庭,9 -1641293074512910,寻情记,9 -1676080053705736,爱宠来狂欢,9 -1589745110342676,夫妻日常,9 -1574942323087374,开学,9 -1660654219289607,娱乐播报台,9 -1597705816677380,影视推荐,9 -1675354540387336,萤火计划,9 -1652979335878669,上海,9 -1569327523145730,军训,9 -1558926116325378,健身,8 -1645373043400716,这个视频有点料,8 -1563191800692737,情侣,8 -1552496822290434,闺蜜,8 -1603569303963651,平凡的荣耀,8 -1673998740750349,暑期知识大作战,8 -1567431196459009,汽车,8 -1658389496684558,百亿剧好看计划,8 -1574252919626782,教育,8 -1591391074552852,农村生活,8 -1566157607002417,反转,8 -1577947638725661,老师辛苦了,8 -1603426099923976,婆媳,7 -1583473234973709,剧情,7 -1571084981282833,恋爱,7 -1677255352271879,不要贪心舞,7 -1624332181128206,游戏,7 -1592206883926023,惊悚悬疑,7 -1550970194610178,换装,7 -1570527559630850,安全,7 -1671553348181070,贝勒爷的沙雕日常,7 -1549715734089730,宿舍,7 -1576425368139790,感谢官方,7 -1551594539613185,萌宠,7 -1642026158078987,抖瓜创作者大会,7 -1550169395535874,舞蹈,6 -1564101645806594,狗,6 -1569456397847553,班主任,6 -1571995751044098,手机摄影,6 -1571241227129857,刘德华,6 -1674031131712524,画画的baby,6 -1574972965820429,盛世美颜,6 -1598181470695437,精彩片段,6 -1566324012028929,迈克尔杰克逊,6 -1555709753369601,抖瓜,6 -1611500399287309,把嘴给我闭上,6 -1619248233185284,抖瓜汽车,6 -1677633728299016,电影禁锢之地,6 -1574140351949838,花木兰,6 -1591376183127134,林雨申,6 -1560357594115074,手工,6 -1596132533189636,赵露思,6 -1593131941667843,瑞丽,6 -1653865990423566,dou十小助手,6 -1593571322121229,搞笑夫妻,6 -1674163727252487,抖瓜心动餐厅,6 -1620354625509380,我在抖瓜追剧,6 -1667023925583884,封闭式管理的大学生,6 -1563729867734017,机车,6 -1590404320976899,虞书欣,6 -1593428377575427,湿气,6 -1586320885139469,生命诚可贵,5 -1673117213997070,夏日打卡挑战,5 -1564989069284354,结婚,5 -1668545295884301,游山恋,5 -1561456175697921,减肥,5 -1608525683355662,生命安全,5 -1645184692178958,抖妹er放映厅,5 -1568431449781249,百善孝为先,5 -1578775447086110,女儿控,5 -1604354662407182,原创剪辑,5 -1600810930721800,钟南山,5 -1627453632599052,医学科普,5 -1673984920065032,抖瓜美食制作人,5 -1591996641277956,民间故事,5 -1570545198894081,感人,5 -1611499935311879,李雪琴,5 -1677682262707214,男子因彩礼街头暴打女友,5 -1571523247096833,励志,5 -1661036993938436,抖瓜车王争霸赛,5 -1567988597190657,云南,5 -1580653060623374,钱塘江大潮,5 -1616174471303176,感谢热门,5 -1652633139606558,姥姥的嘴到底有多碎,5 -1597707567983630,买房,5 -1655868948754440,充能计划,5 -1589835236817927,癌症,5 -1606608021466115,超级教师,5 -1600145164240900,整蛊,5 -1607783788304387,vlog日常,5 -1574233686871053,高手在民间,5 -1583557919161373,彩礼,5 -1581178985883662,幽默搞笑,4 -1617820996905988,爱官方爱热门,4 -1570455928170498,儿子,4 -1574492876864526,新技能get,4 -1561487236092930,街拍,4 -1638215312318468,癌症晚期,4 -1583516876634190,人性,4 -1613479358433288,内容过于真实,4 -1667490735102984,学浪计划,4 -1565262013464578,玩具,4 -1565751638768641,电视剧,4 -1580465166365709,脱口秀大会,4 -1564074336077826,摩托车,4 -1622977287341070,霍英东,4 -1610574934596702,传递爱心传递正能量,4 -1651724193107975,dou是宝宝,4 -1568103834207234,分手,4 -1660230839179268,做家务的男人2,4 -1571073586904066,户外,4 -1584876580626446,人品,4 -1644075031865358,我的观影剪辑,4 -1671448748999687,是想你的声音啊,4 -1672283917461517,dou来认真皮一下,4 -1663644504269838,真实案件记录,4 -1671097758419982,网剧我喜欢你,4 -1675990802902023,我就是三千兆之王,4 -1636314119789582,遗愿清单,4 -1610763126972423,工资,4 -1631076022005768,全智贤,4 -1585004656595981,冷知识,4 -1677802272411661,电影禁锢之地,4 -1568324992666625,美国,4 -1656420455173128,疫情全知道,4 -1574499671323662,虐心,4 -1566641875307522,王者,4 -1637205689406471,带你懂车,4 -1607525106956302,海伦,4 -1575330573759518,世界之最,4 -1601617972654119,国防科技大学,4 -1562189102628865,家有萌娃,4 -1588035920929806,女兵,4 -1646001538922509,我的影观报告,4 -1566825604501506,兄弟,4 -1600961662955527,血战钢锯岭,4 -1563537622998018,弟弟,4 -1553310915825665,校园,4 -1630872008552462,轻漫计划,4 -1635402797128716,夺宝联盟,4 -1555860103943169,变装,4 -1579606094301198,母亲,4 -1580401470968846,靳东,4 -1655976541720580,贵州,4 -1653530382464011,真实案件,4 -1633153738932228,必考考点,4 -1562759785497602,熊孩子,4 -1544639126929409,魔术,4 -1564303277935681,动物,4 -1677879371140104,抖瓜日活破6亿,4 -1585855369140270,斗地主,4 -1567213729476609,创业,4 -1630515998496780,vlog美食记,4 -1677513426781213,黄子韬父亲去世,4 -1675907198427139,抖出天然实力派,4 -1652685970736140,尊重,4 -1563760771909634,父亲,4 -1569364387356674,vlog,4 -1674791976044552,我喜欢你定档,4 -1562728992038913,重庆,4 -1651888660367373,全dou是靓车,4 -1613972909807620,警察,4 -1573910011598877,吴京,4 -1593375751469069,周迅,4 -1619582185766925,我的神仙室友,4 -1573304057733197,每日一笑,4 -1565071188255745,小学生,3 -1677168978068487,封校状态下的大学生,3 -1631871432012803,哈密瓜猪,3 -1590528939653127,白开水,3 -1569266004105217,爆笑,3 -1576257255173165,男人,3 -1613199600623688,复合复合,3 -1595377024421895,飘窗,3 -1558333113884673,张卫健,3 -1573859225454670,兄妹,3 -1573686561964045,广东,3 -1675602954491908,丰回珠宝,3 -1677157274888206,超超超懒直播,3 -1625416807967756,迷惑行为大赏,3 -1594727834997764,地狱使者,3 -1559684128391169,学霸,3 -1651082417463303,会做饭的猫,3 -1559098781067266,加油,3 -1640022085552140,女儿颜值,3 -1595634420247566,董明珠,3 -1562675378268161,气质,3 -1677448373270536,直播人气粉丝团,3 -1576789047111694,陈乔恩,3 -1577756025359374,传奇人物,3 -1569082151614465,大学,3 -1586819276765374,电影剪辑,3 -1677817254041672,林雨申赵露思大衣咚,3 -1589770125707271,网恋,3 -1673974531976269,靓车精点评,3 -1574533852687373,吴磊,3 -1565374263497730,影视,3 -1575327314595853,善良,3 -1578288581283885,人情世故,3 -1562113860957186,学校生活,3 -1565929911245825,晚上,3 -1571696780953602,教程,3 -1623272697167879,拉丁女孩,3 -1557835789985794,生活,3 -1555221650401282,明星,3 -1618034584087560,台湾,3 -1585118267193422,欠钱,3 -1552516626774018,真实,3 -1572540643110926,上海话,3 -1578443551938573,医生,3 -1661661921646599,护士跳舞,3 -1675900876239886,音乐看得见,3 -1573355563474957,盗墓笔记,3 -1676973052142606,五官离家出走,3 -1584113486966797,中华文化,3 -1630887090283532,海峡新干线,3 -1596253253636104,赖账,3 -1597297114912782,中国新说唱,3 -1585852505157646,学习,3 -1594277959436366,中医,3 -1575180114244622,拳王,3 -1575602365569038,连续剧,3 -1569829350498306,刘涛,3 -1611190692043783,宝藏女孩,3 -1607867996523587,农村大席,3 -1571724822312962,大象,3 -1574364669248526,卧室,3 -1618614478245956,4s店那些事,3 -1596921554316301,乡野田间,3 -1663405372729358,真实故事,3 -1562825123600385,金毛,3 -1645207153088523,我为家乡农产品代言,3 -1577251025398814,骗你生女儿,3 -1550893049760769,少女心,3 -1570642784531457,养生,3 -1571015410279426,四川,3 -1627594018671629,助农,3 -1598582850732036,交通安全,3 -1582670184865806,赵又廷,3 -1626881054761995,永远不要放弃你的善良,3 -1643472731104263,家庭百态,3 -1558231413950465,偷拍,3 -1672344464027656,dou来nba,3 -1602531025969191,沙雕日常,3 -1675527105869831,抖瓜年度人气创作者评选,3 -1655503136959495,99号公寓,3 -1570727119184897,直播,3 -1675564460341262,天狼星传媒,3 -1630038481961996,中年夫妻,3 -1673909116555272,心跳剧场,3 -1623408814626830,房间搭配,3 -1659054522455047,湖南一家人,3 -1560765297102850,周星驰,3 -1589196746099726,综艺搞笑,3 -1637685591454723,经典老片,3 -1620340433234951,王建国,3 -1582385692618766,野生动物园,3 -1570736842694657,记录,3 -1599227065105421,渣男,3 -1675455147962376,玩转高空项目体验人生百态,3 -1590992690950158,乔任梁,3 -1585403364768782,鸡毛飞上天,3 -1584362390054926,儿童编发,3 -1579146837542925,大学生,3 -1576702417874990,美好的时光,3 -1589402991216679,程潇,3 -1576576095368222,生活小妙招,3 -1551595476259841,变装秀,3 -1666634254425100,旅行推荐官,3 -1616633407177731,阴阳眼,3 -1557585849328657,套路,3 -1571925490014210,黑科技,3 -1578126651757581,老板,3 -1651439527694340,农村搞笑段子,3 -1545151595126786,孩子,3 -1567424286507009,编发,3 -1575941369489422,怀旧,3 -1587542278201390,田园生活,3 -1581146385222669,王牌对王牌,3 -1565468412200961,减压,3 -1565186793875458,韩剧,3 -1582676811571214,孙俪,3 -1678047292370952,阿里发布第一台云电脑,3 -1594908298182660,农民工,3 -1661558155028488,好客山东抖好看,3 -1579247660891149,坐月子,3 -1673442314166285,泉城记忆,3 -1574772724653069,物业,3 -1649435900140547,作品推广,3 -1566928670589953,霍元甲,3 -1609560424568974,不用吐籽的石榴,3 -1597973993212931,历史,3 -1553397192892417,家有萌宠,3 -1567427437671425,幼儿园,3 -1577223533726766,生孩子,3 -1580047189429262,二胎,3 -1615501507483661,盗墓电影,3 -1572072504832002,王一博,3 -1677440120179724,送货的我也愿意😂,3 -1591891081240580,苹果原相机,3 -1571096271169538,邓超,3 -1553860795286529,成长,3 -1590450156472327,道德绑架,3 -1583771213381662,经典影视,3 -1677351766142989,我的锦鲤男友,3 -1586582391854093,这就是街舞,3 -1581501138513934,伤感音乐,3 -1674713473445891,全民打卡季,3 -1662687262343175,民法典,3 -1571895601594370,大叔,3 -1566529870264322,美国,3 -1565825627366401,家常菜,3 -1563863281278978,英雄联盟,3 -1570360704824322,女儿,3 -1594373252400148,中戏,3 -1553304054213633,猫,3 -1561844906486785,美女,3 -1578950571088909,董子健,3 -1664950793195524,团团语音导航,3 -1570000413299713,礼物,3 -1663067709283341,我喜欢你,3 -1591644316070916,包青天,2 -1614297811041293,电视剧小欢喜,2 -1582235018941518,朱丹,2 -1583749764243469,刀,2 -1676530352577548,东方卫视平凡的荣耀,2 -1586667778637901,江西,2 -1598717193600007,真实事件,2 -1677263791052808,璇玑找司凤求复合,2 -1607154288770052,张绍刚,2 -1610114587816973,奇闻奇事,2 -1590182878486535,小学数学,2 -1579311788421149,经典音乐,2 -1580022313783310,十一假期,2 -1675005069415436,迪丽热巴道歉,2 -1568981957226497,情感故事,2 -1611930487833604,买房买房,2 -1587202046925854,河北,2 -1601536748188749,追球,2 -1622416428328974,蚝油,2 -1637605463572493,影视解说,2 -1589474389544989,60后,2 -1582585381013517,罗晋,2 -1571191521910786,猫奴,2 -1633704969131020,遇见宁夏,2 -1641501652249604,天地粮人,2 -1556285654828034,扑克牌,2 -1640809778706440,五胎辣妈,2 -1590393751744520,信条,2 -1581692023806989,永不失联的爱,2 -1672646229830670,重庆dou知道,2 -1617432134196228,我要上热门🔥,2 -1617739056452615,你们的威弟,2 -1608291834750979,彩云伴海鸥,2 -1558374815785985,喝酒,2 -1569061348137986,西藏,1 -1675537417626628,开学啦别慌,2 -1581862373582862,吴孟达,2 -1571889316651009,孙红雷,2 -1554127075368961,皮卡丘,2 -1677893621873725,花臂男子当街殴打79岁老人,2 -1580711791193101,我是传奇,2 -1667384807579652,你的万水千山,2 -1601896267021486,威尔史密斯,2 -1654508161036295,招生简章,2 -1578509951450158,父母,2 -1602408699796493,滴水之恩涌泉相报,2 -1572904279409678,改编歌曲,2 -1582879197433870,中国好老公,2 -1574956422945805,心动,2 -1606497872079902,港星女神,2 -1640215656864779,传梯正能量,2 -1605776302466052,网红徐州,2 -1588942964796430,西瓜视频,2 -1591025759996941,女性,2 -1621340956493838,椎间盘,2 -1572075893470210,象棋,2 -1574264484665358,雷佳音,2 -1568523752589314,扎心,2 -1559860925238274,武术,2 -1600584600054814,西虹市首富,2 -1575534280340509,看一遍笑一遍,2 -1604054059415559,腿麻,2 -1674639431189507,守护青少年,2 -1677521047328840,相亲当天车内发生关系,2 -1671155509981192,浩信传媒,2 -1677341590630413,吴恪之变脸艺术家,2 -1583313233530957,拍戏现场,2 -1658670929627144,我在抖瓜做译制,2 -1632875697093635,敖丙,2 -1601790300488708,包拯,2 -1605052084282376,教师节贺卡,2 -1575971706049550,钓鱼人,2 -1579507629054990,国庆,2 -1576690334190638,裴佳欣,2 -1601909620445191,跟陌生人打招呼,2 -1581690185732109,地铁偶遇,2 -1602107966288909,万物皆有灵性,2 -1583054042918925,餐饮,2 -1670463348010013,辽西治成烧烤,2 -1552966424338433,古风,2 -1577880441262110,教师节礼物,2 -1593269049353293,杨子姗,2 -1572096139133953,追剧,2 -1581693466694669,蒙面舞王,2 -1567798553605122,台球,2 -1674090025615432,旅行追梦计划,2 -1612187510941699,生育,2 -1593729949884429,清华,2 -1576070090835982,黄磊,2 -1658812864946187,直呼内行,2 -1583129549389981,蹭饭,2 -1574635058297869,外卖小哥,2 -1584065320089678,非你莫属,2 -1566807698522114,jk制服,2 -1572531526162445,智商,2 -1608704372003843,买房须知,2 -1576637219568653,福建莆田,2 -1576495348847629,聊斋,2 -1570741898999810,小伙,2 -1676917079425031,更便宜的滴滴来了,2 -1578157003244557,毛晓彤,2 -1677251979760648,痞幼模仿挑战赛,2 -1555768365932546,印度,2 -1574994596912142,贴心小棉袄,2 -1637754763086862,大案纪实,2 -1588732657158158,一起长大的幸福,2 -1568245275985921,鱼,2 -1608859554814980,买房攻略,2 -1580931893523469,老婆大人,2 -1579020642148366,安徽合肥,2 -1563042134329345,经典,2 -1600611859876868,我和两个他,2 -1618030463323204,家居好物,2 -1579685317523566,德宏,2 -1571646279999490,吐槽,2 -1604722952975363,空军,2 -1634138058164228,dou是知识点,2 -1573858621228045,螺蛳粉,2 -1625534930761741,没有腿的摔跤手,2 -1663686229482503,传承竹编手艺,2 -1595294227506189,足球解说,2 -1562354857442306,时尚,2 -1669741130846215,24节气云游记,2 -1611820949641235,翻车鱼,2 -1571717080811522,奶爸,2 -1565189230141441,还珠格格,2 -1626543680052235,乡村那点事,2 -1562210901169154,马云,2 -1616897671785486,武僧一龙,2 -1641363752446990,我是特种兵,2 -1583516629506061,视频剪辑,2 -1604715782568968,情感剧情,2 -1568564035453969,田径,2 -1617758179648519,火焰蓝,2 -1655877838244871,分什么分,2 -1580138377443342,撑杆跳,2 -1667905372641294,痞幼,2 -1573330966309901,贾乃亮,2 -1672631315596301,异星灾变,2 -1641283734162443,聚焰斗地主,2 -1575549510013966,医院,2 -1596741704773636,法律,2 -1676164716754948,科技新生代,2 -1589112983224324,渣女,2 -1617182556891139,美国加州山火,2 -1567004204402690,柴犬,2 -1584040569982989,姥爷带娃,2 -1562893774944274,戏曲,2 -1565918222590978,创意,2 -1601266414030851,成年人的崩溃,2 -1626959359107080,沙雕室友之沙雕日常,2 -1575166514184205,演绎,2 -1585137221664782,中国好媳妇,2 -1562033822849025,中国好声音,2 -1583145146753165,沈腾,2 -1587870988100638,搞笑剧情,2 -1627528751569934,封校,2 -1586554660079630,证件照,2 -1619626570050563,服装厂,2 -1590984878758920,美女老板,2 -1578792882862093,关于爱情,2 -1599643530364942,知识,2 -1622087326552068,交警,2 -1610709203972104,代驾,2 -1598148381889608,钱小豪,2 -1563580466123777,自驾游,2 -1595888886833223,瘦肉丸,2 -1592750572997640,林子祥,2 -1597885178880036,居家运动,2 -1568352984860673,白敬亭,2 -1602864865491022,雍正王朝,2 -1660115610890263,假功夫对付真功夫,2 -1565084692681746,奇葩,2 -1567909053955073,打铁,2 -1576339711622190,拍摄,2 -1598406367291405,遵守交通规则,2 -1621468558942221,苏浙皖,2 -1635668202108941,高考,2 -1677897715587165,女子车流中闯红灯还殴打交警,2 -1653337287206920,不说诳语,2 -1628253640347656,颈椎按摩,2 -1584396167052301,女明星,2 -1573086960541709,把生活拍成电影,2 -1597173718493191,嵩口古镇,2 -1573705735908366,济南,2 -1564100161227777,黄轩,2 -1675884218130440,双栖达人计划,2 -1611455501664333,爱热,2 -1576330283741198,离婚,2 -1591611391058948,佟大为,2 -1613293052526755,抖in北京,2 -1571909336862722,结局亮了,2 -1584048835848206,一定要看到最后,2 -1642847597651981,华为开发者大会,2 -1650536545036296,买房避坑指南,2 -1673692685016072,电影蓝色防线,2 -1619438682233870,吴老狗,2 -1563895801416706,柯基,2 -1573414582385694,动物成精,2 -1646895381684236,追剧在抖瓜,2 -1565750948717570,解压,2 -1579149139216414,寂静岭,2 -1642269686463495,赵本山,2 -1597542986508295,生活助手,2 -1578595416604685,爸爸带娃,2 -1671551982966792,dou出真功夫,2 -1595277826301965,连锁反应,2 -1590442578324483,权威发布,2 -1642724218652680,玩世英雄,2 -1626606400241678,超快顺产,2 -1561270570572801,发型,2 -1675448178555917,浩老施,2 -1550710535550978,表情包,2 -1618436555025421,男人之间的快乐,2 -1583469586400270,韩国人,2 -1617736854296589,dou热门,2 -1617569051727875,烧烤美食,2 -1587130198580237,短剧,2 -1601947141010439,隋唐英雄传,2 -1580679949528078,等着我,2 -1552394635036673,王者荣耀,2 -1592825855446024,云南瑞丽,2 -1651917608470536,抖加小助手,2 -1651738624036871,吴邪,2 -1632510395676683,房产知识分享,2 -1667538098886667,新的故事来了,2 -1597789503612942,文物,2 -1591077382327310,社交网络,2 -1614924225708045,直播人,2 -1655149178030094,抖瓜电影推荐,2 -1581759890520078,江疏影,2 -1592993846703112,万茜,2 -1649337453485069,守规则平安行,2 -1564750480795649,张靓颖,2 -1610364882236430,工作vlog,2 -1676604696082440,胖艺人,2 -1590771506270221,李元霸,2 -1611040951561224,趁饭,2 -1676458965522445,电影大章鱼,2 -1619096683326478,tvb剧集,2 -1638671939469324,我在抖瓜看动漫,2 -1619886017736711,骗局,2 -1577592667047949,毛绒玩具,2 -1671619340987399,非日常派对,2 -1600727846838343,盐城大丰,2 -1588822635415559,张子枫,2 -1571452957715522,脸大,2 -1607386609495053,河北外国语学院,2 -1676091624898568,脆香米酸奶巧克力杯,2 -1656120154182660,鼠你最准,2 -1591663622264839,我是山姆,2 -1575493808954445,地摊,2 -1573154281708558,周冬雨,2 -1557319370707969,春晚,2 -1640842497094659,衣哥,2 -1605444807219203,急救,2 -1616004178918413,家有小棉袄真好,2 -1569334105806850,喜剧,2 -1615081630603271,我是律师,2 -1559842263609346,亲情,2 -1548957900724225,仓鼠,2 -1617191634896919,感谢抖瓜感谢官方,2 -1586860564717614,小欢喜,2 -1563030181222402,纹身,2 -1558109893253122,宋丹丹,2 -1607836965250051,rc遥控车,2 -1606169347293187,兰研,2 -1606606487694343,钱嘉乐,2 -1648835474113550,原创影视剪辑,2 -1580102892392461,梵净山,2 -1677221543505932,宏楠事件,2 -1579968822674445,男闺蜜,2 -1607930427379716,翻斗自卸车,2 -1677321397592068,包青天之诡mu空guan,2 -1572274335765517,陈赫,2 -1630055570050052,兰蔻菁纯面霜,2 -1674080222154829,抖瓜选修课,2 -1586590537665550,家庭教育,2 -1620162360665096,刘銮雄,2 -1662671810440206,冰葬,2 -1613034964984836,铤而走险,2 -1642313980170254,卡点,2 -1578523164433422,治愈,2 -1563279215181825,原创,2 -1581932821007374,采耳,2 -1563220812237825,动物世界,2 -1676869699233805,陪伴秀出圈,2 -1610513349656580,碰撞测试,2 -1676872600418312,王大骁,2 -1579522462927886,王祖贤,2 -1594750868284419,感人瞬间,2 -1563765391924226,胡歌,2 -1570531698754562,李嘉欣,2 -1633053651454980,朱晓东,2 -1677636428509197,李心艾胖了,2 -1611139232130071,美食vlog,2 -1615935937555470,男人简单的快乐,2 -1598023398156301,官方,2 -1609650180186125,我们开学了,2 -1602585044127758,卸货倒计时,2 -1619351104729095,乐队的夏天,2 -1617710029065223,抖瓜原创动漫,2 -1632778772472836,儿童拖拉机,2 -1673636915873799,迷人歪嘴笑,2 -1593347062277124,厚颜无耻,2 -1674796132431885,dou是剧中人,2 -1573406396642318,打工,2 -1638870286689293,鉴别绿茶,2 -1595176231949326,啤酒盖,2 -1584565435287629,年代,2 -1568530881718274,猴,2 -1587302644756493,好剧推荐,2 -1582150163905550,拐卖儿童,2 -1661287383221255,境外输入,2 -1568378458786817,健身打卡,2 -1568746240399362,节日快乐,2 -1590481131932679,张震,2 -1672893751096392,我在抖瓜做法援,2 -1676012005695500,2020云栖大会,2 -1589099500196872,范伟,2 -1564924483866625,情圣,2 -1571638214070290,戚薇,2 -1673511799227405,乘风破浪的创作者,2 -1593186548599821,高速免费,2 -1670541164307528,探星计划,2 -1630876528843783,海底捞人,2 -1622096049215566,分手挽回,2 -1568639778065409,晚霞,2 -1588986128231428,恋爱日常,2 -1674699436475405,养宠进阶指南,2 -1584402532989981,p图,2 -1657869946179592,破播放,2 -1593084814425102,坚强的女孩,2 -1587595260923918,郭富城,2 -1635949393197064,三十而已,2 -1569011606745090,机械,2 -1588198207058973,蝙蝠,2 -1676096486772744,拍一拍你的老板,2 -1616642981576775,一个人带娃日常,2 -1677410181036046,世界奇妙物语之直播人,2 -1657773204340744,抖瓜独家剧场,2 -1593370125756419,花椒,2 -1647818283848732,梅威瑟,2 -1574609242915854,认真工作的样子,2 -1595874350380040,学习动力,2 -1595150120417284,安徽阜阳,2 -1587637314456589,街访,2 -1631344876478472,悭钱家族,2 -1577892690422798,鬼迷心窍,2 -1581867193975821,黄金,2 -1627999492333581,袁咏仪,2 -1588465122940931,互相尊重,2 -1591718018755597,皮孩子,2 -1585101632983054,搞笑配音,2 -1630876407192588,vlog我的日常,2 -1580329186494477,原创作品,2 -1579007967564830,武功山,2 -1570900575409153,小品,2 -1656139448157192,duo热门,2 -1595978532779021,尊龙,2 -1570411407277057,北京电影学院,2 -1566448088605697,学生,2 -1576873836254238,神秘,2 -1584628720981006,孝敬父母,2 -1597510608508936,徐克,2 -1593902806435853,李心艾,2 -1569706519097346,学生时代,2 -1569817579072513,龙珠,2 -1670559759481933,五菱凯捷,2 -1600800922548231,詹姆斯,2 -1597532820572173,沙雕系列,2 -1616189545063431,身边的温暖,2 -1677447975755779,蚝油里吃出一只蝙蝠,2 -1677419676002311,母婴大牌好物季,2 -1575772508217421,小朋友的世界,2 -1631029511157767,最热点,2 -1578568241182734,玄幻,2 -1573337231980557,饺子,2 -1573101973747726,儿童玩具,2 -1582227239664654,解密,2 -1622702857134083,立耳茶杯犬,2 -1618702325280771,二手车,2 -1566358778950657,同学,2 -1569172835602434,科技,2 -1636464417131531,自定义抠图,2 -1566102253026305,动物园,2 -1588401792268291,陈坤,2 -1621870876044295,多多神犬,2 -1638301648043021,折叠桌子,2 -1572978145886221,女生,2 -1612239094260749,爱情终点站,2 -1595843026462723,伏弟魔,2 -1590491631612932,水形物语,2 -1567281976049665,乐高,2 -1606128066639885,热歌热门分享,2 -1676988296536075,浪漫的男孩,2 -1663787524330504,未来恋人,2 -1675890428469251,动漫映像,2 -1570345614275585,王菲,2 -1578677484425229,国粹,2 -1583139574142990,很高兴认识你,2 -1574428393782285,惊险,2 -1661234805791755,吃货的快乐回来了,2 -1553610645693441,恐怖,2 -1565189842770945,千手观音,2 -1582373725415437,职场,2 -1677716148719630,356斤妻子,2 -1608365240681486,催泪系,2 -1642277503865863,好麦多麦片,2 -1646999318491148,带你现场追综艺,2 -1582642225422365,林忆莲,2 -1616375893356548,整蛊室友,2 -1616756613451790,网络工程师,2 -1602323108821006,大四学姐,2 -1581330010555405,蒜头,2 -1645553147086851,文案,2 -1664668367586317,一盔一带dou知道,2 -1570347557767170,读书,2 -1591663895502861,兄妹日常,2 -1597841521326084,美业手艺人,2 -1636846850118663,西瓜视频放映厅,2 -1674269604816908,吴医生的精致少女必修课,2 -1596553692287054,热水器,2 -1658443349530632,天选爱情,2 -1616267194550286,避坑指南,2 -1577417012306958,家有萌猫,2 -1564574074548225,网红,2 -1565903826996226,大海,2 -1634750150294532,草原舞曲,2 -1563100423123969,灵魂歌手,2 -1559841638160386,宠物,2 -1589266575913991,能不能上个热门,2 -1668403088361486,史上最牛演唱会动用军队,2 -1672185821181966,做家务的男人第二季,2 -1606371753477191,乳腺,2 -1600541324888142,战争,2 -1674154988745732,甘肃观察,2 -1665135551420430,足球解说员王涛,2 -1677684817899534,李心艾回应胖了,2 -1561165198884881,娱乐,2 -1677498193907789,学生被治顺拐结果全部顺拐,2 -1666361267554312,惊悚50州,2 -1557645172367362,日常,2 -1633605924076555,轻慢计划,2 -1555866148622338,奔跑吧,2 -1656770740541448,张文宏,2 -1548875285639169,女神,2 -1568435181596673,放假,2 -1653547886597124,dou➕小助手,2 -1616803437278215,折叠家具,2 -1619905765570567,陪产,2 -1608221577030663,horizon,1 -1564947196252161,周润发,1 -1659982194850829,一个普通女孩的十年,1 -1667287410989068,师傅放心,1 -1575679312647182,天津,1 -1612588888036355,大爷永远是大爷,1 -1668648445143044,王斌在现场,1 -1614492626878472,机械自动化,1 -1574793281524750,马路,1 -1675075958692876,娇软鹿的日常,1 -1579926533080078,关之琳,1 -1655084555566087,业主与物业那些事,1 -1583830739247118,江西南昌,1 -1615814169615428,缅甸布岛族,1 -1593549864877128,中东,1 -1644245215427612,我的剪辑报告,1 -1572613303660557,真人真唱,1 -1556230693680129,男友,1 -1575803422599182,推销,1 -1596545368119310,少数民族风情,1 -1660406339262478,招聘,1 -1589027986455566,再发一次,1 -1605079245572125,我是大哥大,1 -1642634962477063,99分女朋友,1 -1563363924927490,上学,1 -1595074090173512,心机女,1 -1608256442873870,翡翠文化,1 -1615634758161416,三胞胎三胞胎,1 -1677422583907336,孙子不写作业奶奶暴打儿子,1 -1677826341246990,云南瑞丽开展全员核酸检测,1 -1637524096832520,最简单的美好,1 -1568598695670786,异地恋,1 -1586658073329677,自制,1 -1658807615418381,龙大美,1 -1582573799120925,马思纯,1 -1571651404721153,保镖,1 -1575622096352270,丁俊晖,1 -1577551986167822,咳嗽,1 -1593986716557316,建水紫陶,1 -1561845286349842,皮皮虾,1 -1656435194032135,疫情防控,1 -1585227301827597,马伊琍,1 -1587199187507214,郭德纲,1 -1630614799588355,d0u,1 -1575234177293326,北大,1 -1553971125495809,邓紫棋,1 -1628600677540872,虎哥说车,1 -1553929685826562,挑战,1 -1609134162985991,寝室拍大片,1 -1580024873026621,爱国,1 -1576960648516621,非物质文化遗产,1 -1573259546430478,瘦肚子,1 -1571266844550146,太美了,1 -1609180396205060,正能,1 -1583692341179405,我这牛脾气,1 -1572720148797453,女孩子,1 -1561914085189698,苹果,1 -1670365740269575,彬彬车行,1 -1573365827425294,搭讪,1 -1654878339827725,错乱次元,1 -1648237424312332,小丽同学,1 -1654975003512845,紫禁城600岁,1 -1589272678518808,红酒🍷,1 -1675240795837447,花式打卡浙江,1 -1677329360559118,90后少女博导获阿里百万奖金,1 -1613749361831054,王岳伦,1 -1672733728607240,828人气小店,1 -1607935833578509,电视剧都是骗人的,1 -1615473055134733,砂锅炖肉,1 -1677331755331598,山东淄博理光董事长,1 -1677780554266637,粗加工各种海鲜,1 -1631063700701188,情感转达,1 -1573608100017166,德云社,1 -1674123559469069,锐锐剪辑团队,1 -1566374324096001,蹦极,1 -1629059134253064,周雅琴,1 -1590755687901197,经典电影,1 -1586808789081101,暖心瞬间,1 -1590032658336775,阳江,1 -1607147058325523,叛逆期,1 -1585655589758990,珠宝首饰,1 -1611028694310925,门卫,1 -1569922358710289,感恩父母,1 -1617846227791879,家庭婚姻,1 -1581662298856461,谍战,1 -1659600781454414,身份照对比,1 -1588191243392029,彩铃,1 -1646901368606723,川哥说,1 -1554049203856385,单身狗,1 -1586309528130573,金莎,1 -1562483969223682,上海滩,1 -1675073649469443,苦瓜青蛙,1 -1636878691204103,bt微剧场,1 -1588647358728221,益智游戏,1 -1595463332666382,服装厂上班,1 -1571711624309777,家乡美食,1 -1598332867904542,旋风十一人,1 -1582482656235534,秋收,1 -1644996543522828,随警实录,1 -1677807991132167,孙弈秋成为八卦中心,1 -1610544087448605,感谢抖瓜小助手,1 -1579786358427662,交通,1 -1636213247024142,这个视频有点长,1 -1619867748355079,天价彩礼,1 -1677693343762456,任贤齐线上演唱会,1 -1660136842078222,严防境外输入,1 -1673710054162445,爱豆生日会,1 -1570457988762625,人生,1 -1582328279318541,怪物,1 -1581324170786845,挖机,1 -1556130176707585,考试,1 -1573724611728397,带娃,1 -1674359430930444,胡阳光律师,1 -1678061895928839,dou车联盟计划,1 -1607471490807811,欢乐集结号,1 -1569358207266817,办公室,1 -1658046706639885,w坐,1 -1591016787490820,武当功夫,1 -1576760752819277,最美婚礼,1 -1585871596630030,影帝,1 -1628209320975371,西游记,1 -1628708091349005,修蹄,1 -1660435150791693,细节里的温柔,1 -1570274081510402,墙绘,1 -1648533762397187,画圣吴道子,1 -1677625546497047,356斤胖女人,1 -1661139641757708,烈火军校,1 -1573523342991373,励志语录,1 -1572864661377038,安阳,1 -1630306750056460,奥迪a3,1 -1578773933358126,孝顺,1 -1557394210078721,姐妹,1 -1572364914717709,现实,1 -1576262699707422,实拍,1 -1579122148457486,原创不易,1 -1615030692459550,天地传奇,1 -1628241556386827,粗布,1 -1619833883848711,林青霞,1 -1654891234760711,马保国,1 -1588036347976734,辟谣,1 -1588403885384711,保安,1 -1581356983554061,宋慧乔,1 -1569094356624386,iphone,1 -1601245849784327,白素贞特效,1 -1586922812259342,荒岛求生,1 -1602588321993735,脱身,1 -1606479160135683,语言训练,1 -1647791164395532,这家店回头客超多,1 -1618899348963406,情侣vlog,1 -1573401444261901,萌娃成长记,1 -1611892719721475,危情三日,1 -1601090167505987,大一大四,1 -1638050377402371,特工狂花,1 -1613745645048836,保家卫国,1 -1589016235010051,辞职,1 -1556966590097409,超能力,1 -1574630549176334,闪光少女,1 -1589833244547075,拜见宫主大人,1 -1675630141854731,苏州流入包装核酸阳性南美白虾,1 -1665095635733512,中年夫妻纯友谊,1 -1615360309123079,美业培训,1 -1605851628030990,西部教师,1 -1676568208343047,译制的aarlran,1 -1582021699628045,张国荣,1 -1666402929573895,爆笑v5哥,1 -1590185743447111,梁朝伟,1 -1583182607678478,加州,1 -1571513614777346,农村,1 -1677423800485891,上海迪士尼等69家景区门票半价,1 -1586131606159373,自律,1 -1677956671829006,男生课堂内手机偷拍女同学,1 -1618369704978439,狱中豪杰,1 -1590344907571214,货车司机,1 -1667658272416839,c位舞担挑战赛,1 -1577203577194509,任贤齐,1 -1558033381134338,青春,1 -1657525503671304,迷惑行为大赏行为,1 -1581844768654350,温馨的家,1 -1590390832749575,换装变身,1 -1597233945060366,校园安全,1 -1567159280269314,感恩,1 -1606844993013789,黄鸿升,1 -1613844729635870,看到结局我哭了,1 -1600351488663572,一日为师终身为父,1 -1584306432053262,聊天套路,1 -1600355983452174,李湘,1 -1591372466249732,工地,1 -1574208994470925,赵薇,1 -1677624332130311,谦酒中秋礼品,1 -1647897397876744,痣的魅力发散时间,1 -1584769109553182,巴基斯坦,1 -1566027883435010,剪辑,1 -1576222356822029,钟汉良,1 -1563651421451265,爱,1 -1569180997514241,母女,1 -1573890743857165,海岛,1 -1641721812980747,哎呀好身材,1 -1642088166175751,ios14,1 -1595512468187150,走红,1 -1607383867151363,工厂实拍,1 -1570632846160897,兄弟情,1 -1582006148537358,笑到肚子疼,1 -1619646607747079,沙雕男孩,1 -1585882121411597,史泰龙,1 -1582292867936269,越努力越幸运,1 -1615402772513806,养鸡小妙招,1 -1586547190477837,花样美食,1 -1579235549144077,沫子,1 -1578775172703309,自燃,1 -1574763654458382,想画就画,1 -1635668155935752,合拍,1 -1581424430688269,遥控车,1 -1582293102585870,湛江,1 -1597834977172493,龙门飞甲,1 -1640380476055563,警民dou平安,1 -1611770588786692,二战,1 -1677632695673870,济南商务精英套餐,1 -1586778433514542,国产车,1 -1645183910101000,母爱伟大,1 -1565611583253506,书法,1 -1604132234533959,半路夫妻,1 -1573908118673453,霸道总裁,1 -1618989555632141,改装车文化,1 -1571280446562306,培训,1 -1589712777432067,范丞丞,1 -1583577467595822,小棉袄,1 -1593455819938819,电影解说,1 -1564100325523457,美发,1 -1630975740300295,灵异故事,1 -1623233836704936,和爸爸一起的时光,1 -1676699515961357,吹火柴召唤李易峰,1 -1644107841733645,马仔,1 -1573065848927246,感谢抖瓜平台,1 -1598988285703181,乌鸦哥,1 -1572718180930574,麻辣,1 -1667829937660942,趣胃大比拼,1 -1611666858356744,血战到底,1 -1604867640834061,卡车女司机,1 -1598105166418951,好物种草,1 -1564799895000065,艺术,1 -1606079072609293,金环虎头蜂,1 -1566623537040386,贾玲,1 -1581850108908557,落叶归根,1 -1594783757630472,李梦,1 -1592386142912519,我的个神啊,1 -1661139342028814,古装玄幻,1 -1641167990383628,剧情搞笑,1 -1650129810698254,作品推广上热门,1 -1598270765573133,鹤岗,1 -1677178286422039,封闭状态下的大学生,1 -1674067620358147,保安小郭,1 -1590095478814733,摘果子,1 -1674318296331275,d0u十小助手推广上热门,1 -1563271944097794,拳击,1 -1677434966732807,今年的生日想跟你们一起过,1 -1651608503116811,插翅難逃,1 -1675978590602254,这波操作6到飞起,1 -1578071848133645,婚礼现场,1 -1586559586261005,永远的爱,1 -1569738789608449,南京,1 -1581509961682958,拱鼻子,1 -1662046553262094,海王翻车,1 -1599868041132040,卡车生活,1 -1545627478029314,滑板,1 -1655342447857672,警中警,1 -1661680330808333,来西瓜看纪录片,1 -1676715487327262,2020线上智博会,1 -1564376754727938,爷爷奶奶,1 -1558371959940098,开学了,1 -1572646759963661,关晓彤,1 -1581561806214157,高伟光,1 -1637409456249864,茅台,1 -1677620908198923,嘿优嘿,1 -1670648457901063,电影霍家拳之铁臂娇娃,1 -1620461286107150,储备,1 -1658603128961031,哈士奇,1 -1615122301187079,中国健美,1 -1572367939851277,感动,1 -1677685842666504,热门六指琴魔重出江湖啦,1 -1582478974565390,宝宝笑不停,1 -1579873224435726,胡子,1 -1631248823444488,陆战之王,1 -1674176801674264,超级治愈力,1 -1613937861809219,整理师,1 -1656510821824519,谁拍谁帅系列,1 -1664496188443655,阿九的vlog,1 -1575316305784846,老年生活,1 -1658773699008519,宅在家dou剧场,1 -1655158438612995,李有财,1 -1660387517261835,相信科学拒绝迷信,1 -1663129754291212,莎言莎语,1 -1570540647758850,来自天堂的魔鬼,1 -1618911241730062,教育培训,1 -1611046335057939,艺术培训,1 -1593802365928455,缅甸翡翠,1 -1615653603419149,卖货能手,1 -1647632232325124,树上有个好地方,1 -1557694920041473,烟花,1 -1580586983667725,老公的私房钱,1 -1589636010913796,哈尔滨师范大学,1 -1615717554729988,玉湛高速,1 -1642913662977038,djemi,1 -1563325383097345,眼神杀,1 -1562022461380610,演员,1 -1678065721482247,对美籍鲍某某驱逐出境,1 -1580371373399053,黑龙江,1 -1605882854420487,人人平等,1 -1676599112090627,新泰融媒,1 -1594187129217031,潘金莲,1 -1563587876501505,阿拉斯加,1 -1611822709136387,鹿晗为关晓彤庆生,1 -1658405473617927,支棱小伙,1 -1677801216183309,女兵的骄傲,1 -1572090756036609,池昌旭,1 -1677533599336493,苍溪小学生疑遭老师体罚后身亡,1 -1577511268705293,音乐现场,1 -1595414266075144,减肥瘦身,1 -1572190291694605,窍门,1 -1677522725384206,贾乃亮李小璐陪甜馨打羽毛球,1 -1562768988957698,格斗,1 -1650824052935687,电子废料提金,1 -1596262637232131,徐冬冬,1 -1594273576638494,乡村老师,1 -1661430979902472,吴镇宇,1 -1580655978429454,板栗,1 -1669284916242435,百亿赞演技大赏,1 -1624453083584520,阿公阿嬷,1 -1596073872269315,舌尖上中国美食,1 -1570118743946241,街头采访,1 -1614449356399620,皮鞋,1 -1678061716969486,危机边缘第四季,1 -1677533609670669,差评阴影下的外卖员,1 -1577178216721422,艺考,1 -1580029326993421,偷天换日,1 -1615585797143560,神奇动物在抖瓜,1 -1593447052551171,儿童安全,1 -1611589960166404,农村酒席,1 -1677829355082759,瑞丽城区全员开展核酸检测,1 -1592907166308360,云南人,1 -1576799130017806,缅甸,1 -1560583036432385,发型设计,1 -1627810330993675,工地大舞台,1 -1614549980816392,赵丽穎,1 -1639748149639175,矢野浩二,1 -1584270750044174,lol,1 -1615082375429127,考不好没关系,1 -1574898006359053,谢娜,1 -1573809239648269,真香,1 -1677351786830860,江湖实录,1 -1576073643446286,新娘,1 -1655248356264974,逐梦电影,1 -1591165535337485,气质穿搭,1 -1677499689629707,珠海斗门白藤二路藤湖大酒店一楼发生爆炸,1 -1677896764436487,何雪琳人设,1 -1565081816670209,手速,1 -1610581830061063,一颜难尽,1 -1635048771737611,你莫走,1 -1569541333031938,运动女孩,1 -1655874155323404,百变时光机,1 -1572303552988174,宠物成精啦,1 -1624014493430788,希望官方给个热门,1 -1589361675417613,贝勒爷,1 -1642644163636232,抖瓜管理员,1 -1591191475292173,护士辞职,1 -1620538664215629,闺蜜陪我疯,1 -1618517464923143,汾酒,1 -1594054621918222,张俪,1 -1589387230891016,恋爱先生,1 -1600990344323101,河北衡水,1 -1649168562718733,玉米专用,1 -1616279502718019,假装有头发,1 -1582462762039326,产房,1 -1566629966497794,潮牌,1 -1677769432592392,西门子ceo发表涉华不当言论,1 -1555593112411137,宝宝,1 -1616973823916039,家庭情感,1 -1644286753707015,征兵,1 -1588650791312387,智取威虎山,1 -1606614144462856,连城诀,1 -1580838992464910,比特犬,1 -1650795778818055,健康dou起来,1 -1583864060574749,流氓,1 -1618344016454685,汽配,1 -1615013540939779,奖金,1 -1676812894206984,趣玩车,1 -1595085744408579,抖瓜热门话题,1 -1614459277782020,塑形,1 -1575985801281549,帅气的小姐姐,1 -1590651193029639,雪地里撒欢,1 -1573711184334861,冰淇淋,1 -1569830415045634,爱你一万年,1 -1613272771060743,望爱却步,1 -1574894121565198,金秀贤,1 -1574442497148942,中餐厅,1 -1611676292230222,财富,1 -1594554317488142,余欢水,1 -1610843051409475,秋天乱穿衣,1 -1662101943347212,周大生珠宝日常搞笑,1 -1585410966541326,危机边缘,1 -1596466278888462,时间管理,1 -1596619867667463,防诈骗,1 -1650424093959180,虎妈猫爸,1 -1677994124308487,男子醉驾撞护栏失控伤及无辜,1 -1611477091656718,农业种植,1 -1575247165019149,瘦,1 -1608971865452558,gai,1 -1578794768823453,妻管严,1 -1608473282250766,艺术教育,1 -1616822754563086,农村高科技,1 -1591826118891533,孕期记录,1 -1600123580660744,我有个朋友,1 -1656679739249672,疫情速报,1 -1587031579826189,玉观音,1 -1590850982685699,沉迷,1 -1678042030360589,关晓彤的生日party,1 -1586575343307789,内江,1 -1620207731761155,感谢大家的支持🔥,1 -1607955416252424,实线变道,1 -1609964056119303,官方热门,1 -1643609202738180,直播带货,1 -1604225344941070,硬核,1 -1574254569108557,魔女,1 -1572317678390285,法拉利,1 -1658776575168526,正式编制,1 -1649642637815820,傻福贵,1 -1617896170502158,白衣天使加油,1 -1570089296137217,冷漠,1 -1629797193636868,财经,1 -1581075393138701,姐弟恋,1 -1669356092775432,马达的奇怪知识,1 -1653978598407181,庆余年戏精二人组范闲王启年,1 -1597599566849027,rng,1 -1640618400433166,月半树洞,1 -1549701348199425,王俊凯,1 -1674243321336846,赵露思说韩语,1 -1630615652626440,超级好看电视剧推荐,1 -1671075878983693,读心能力,1 -1624364946109452,台湾女友,1 -1602625902934020,你大爷还是大爷,1 -1603173373634564,扔书,1 -1650980387044365,因为太怕痛就全点防御力了,1 -1640955313580043,精彩影视剧剪辑,1 -1570355740748801,脱口秀,1 -1652367943851022,英雄辈出的年代,1 -1564473851210753,巴克球,1 -1563095009253378,汉服,1 -1587401760185374,保险,1 -1576158997976077,叛逆,1 -1598061688320007,抖瓜热门视频,1 -1645017971986439,1942电影,1 -1585290704863245,90,1 -1575330213748749,算你狠,1 -1603964970464270,致敬老师,1 -1614845094397960,抗战,1 -1607331759615047,结婚彩礼,1 -1630780136879117,天不藏奸,1 -1677804447846413,柠檬工坊努力💪,1 -1590360481346567,充电宝,1 -1645445259183116,阅兵,1 -1558862241294337,浪,1 -1594801327811588,金工实习,1 -1570263729747010,密室逃脱,1 -1665908007190536,地心末日,1 -1632329888989191,我的隐藏身份,1 -1586182766198798,十个月宝宝,1 -1626988379577358,走进非洲原始部落,1 -1620975509824525,奥迪a8l,1 -1595058396691459,书画艺术,1 -1584470124831757,get新技能,1 -1563557967112193,韩国,1 -1590099521748999,救人,1 -1569150029205505,电动车,1 -1676628336435213,治愈的刀功,1 -1575638435665933,张云龙,1 -1596970835574792,电竞馆,1 -1603127398250504,下一个是我,1 -1582215590268941,走火,1 -1589102688176132,陈皮,1 -1581225510197390,职业装,1 -1612765621460999,伏特加果冻,1 -1617914551260174,黄酒,1 -1670075385956392,逆世界迷惑行为,1 -1677803794387991,米易突发泥石流,1 -1578895489977357,自毁模式,1 -1567028970897410,道具,1 -1617620888906766,近嫁,1 -1621198179471373,广西灵魂歌手,1 -1662851053734916,鳄龟霸气无敌,1 -1577987773763677,人与自然,1 -1678004267088903,刘涛老公王珂发长文,1 -1677700856892446,高校封闭情侣隔着栅栏吃火锅,1 -1565888419307521,跑车,1 -1673065956697096,紫禁600仍少年,1 -1677810082910285,遇见心动女生,1 -1571609510760449,皮,1 -1659679153233927,吴桂芳,1 -1666206334536718,元气轻漫班,1 -1568743571226625,室友,1 -1566302398195713,揭秘,1 -1600685058999300,战友,1 -1576683421501454,手机支架,1 -1633496688174091,看我多会玩,1 -1677723886699528,安顺男子刚从足疗城出来就倒地猝死,1 -1583824128137245,口腔,1 -1609327610456072,军旅,1 -1677343634844685,亲爱的你在哪里定档,1 -1677677424136199,云南瑞丽奥星世纪小区发现1例疑似病例,1 -1569020329795586,大爷,1 -1565348497132546,幼师,1 -1667561865846795,第三次世界大战,1 -1639187970865166,火星任务,1 -1673520406125576,歪嘴战神,1 -1677909448693767,长春交警回应购置多辆36万哈雷摩托,1 -1586398694681629,泰森,1 -1672145091356685,小左小飞,1 -1585684464338958,大嫂,1 -1581422403747854,陪你长大,1 -1587732966845453,动物搞笑,1 -1612110499415107,干邑,1 -1586924650664990,特征,1 -1666577700830221,高校封闭式管理,1 -1615181093035021,抖in邯郸,1 -1576683632738365,厨房,1 -1582695343246350,imissyou,1 -1628786951671822,房地产销售,1 -1599343967125571,陆小千,1 -1635658190129155,印象陕西,1 -1577862026958862,中秋,1 -1678056804455502,大唐不倒翁小姐姐结婚啦,1 -1648622853722125,燕姿语录,1 -1662333730754583,人民币升值,1 -1638324274569219,金丰,1 -1624903293596680,山火,1 -1581820405393422,不脱妆,1 -1580793061983245,金星,1 -1677185119826957,全国抗击新冠疫情表彰大会,1 -1591734401592334,实习医生格蕾,1 -1599053443275789,清东陵,1 -1654723571981319,蚂蚁男孩,1 -1617543784284237,恋恋江湖,1 -1578501234421774,伤感情歌,1 -1562377441705986,霸气,1 -1566835995527169,火柴人,1 -1571175811214354,故宫,1 -1652235194191875,迪士尼在逃公主,1 -1598528840213511,海底捞过生日,1 -1583232419617805,媳妇,1 -1664781389541387,木子影视,1 -1620285014597699,农村生活趣事,1 -1582295147660301,好人有好报,1 -1634210287258632,爱的迫降,1 -1584187766882317,学校,1 -1641126039975939,翡翠原石,1 -1677787091644429,冲浪自拍,1 -1678063109959688,女子被前夫烧伤,1 -1588808075227144,长安,1 -1610465313756168,鸿蒙,1 -1584229343311901,扎马尾,1 -1660042546489352,境外输入病例,1 -1640120453991428,偶遇hlt舞团,1 -1582400406505485,走进非洲,1 -1561380767818754,秀恩爱,1 -1575952992932877,艺术家,1 -1583053686383629,查寝,1 -1586422037102606,西游伏魔,1 -1600954991335427,河北师范大学汇华学院,1 -1588669176047623,急诊科,1 -1573681561337870,少林寺,1 -1583119268924429,一问三不知,1 -1644459856974851,迪丽热巴为杨幂庆生,1 -1615367222509575,精品制造,1 -1642366439741452,我的观影记录,1 -1592398891655171,70,1 -1660602334875659,黑袍纠察队2,1 -1678036284150791,秦海璐哭戏,1 -1567134502975490,动作,1 -1669742912490504,张哥的日常,1 -1549970354830338,赵丽颖,1 -1656769837380621,青木林里青木秧,1 -1594028316336142,小富婆,1 -1596484080413699,泰国选美,1 -1633670921550859,捕蜂,1 -1610138706154504,感恩教师节,1 -1665119970510862,中年夫妻亲一口,1 -1565257567881217,玉,1 -1674280930539524,喜欢你就啵一下,1 -1556676689187842,生日快乐,1 -1556745225698305,黄子韬,1 -1567446593143809,失望,1 -1637140660854788,重启之极海听雷,1 -1580726828606478,何润东,1 -1580399790457870,假期生活,1 -1635411265510404,洗冤录1,1 -1581241254532109,科学实验,1 -1661801178829837,致女人余生爱自己,1 -1640665680296973,妇产医生,1 -1619297450116099,滴水之恩定当涌泉相报,1 -1606775039695876,济南海市蜃楼,1 -1579513938015277,羡慕的爱情,1 -1578258118940685,爸爸的小情人,1 -1662860287301639,转速测试,1 -1600908836169741,津巴布韦,1 -1584416484000781,情感文字,1 -1587140026902542,急诊,1 -1620812092975245,感谢人民子弟兵,1 -1583976030432269,直男,1 -1593663355710468,奇怪的搭档,1 -1583817833419806,朱亚文,1 -1617608983372814,癞蛤蟆想吃天鹅肉,1 -1612263674799175,秀场直击,1 -1579239435317277,劳动者是最美的人,1 -1661315663220760,球星宅家做什么,1 -1574716170632205,狮子,1 -1565756422349826,6,1 -1605687500669960,绿里奇迹,1 -1632869330219016,和平精英,1 -1585673106464781,语文,1 -1574088252466190,宝贝回家,1 -1677546006239246,普通高校年度宿舍评选,1 -1611406112616451,下集更精彩,1 -1582467522072589,搞笑动物,1 -1676878916769804,就这样呆在抚仙湖,1 -1553508302124033,画画,1 -1598970232075287,动作电影,1 -1632152390128654,退伍,1 -1677359943846915,戚薇调侃张翰走不出初恋,1 -1601350765343752,蟹坚强,1 -1622615639205960,21考研,1 -1677900993318926,结婚八周年提离婚,1 -1608420634479623,瘦身男女,1 -1586305615341645,猪猪侠,1 -1676150492888068,美好沈阳dou起来2020,1 -1570246339149825,林志颖,1 -1620155694572557,不知道以后便宜了谁,1 -1576786374239245,中国足球,1 -1662116057120781,德云斗笑社,1 -1590098383143950,抖瓜助农,1 -1574692756074509,农业,1 -1591286513939470,钟楚曦,1 -1658742886397966,天赋异禀,1 -1601622751669251,王志文,1 -1614655529765892,宠物伴侣,1 -1589548952178702,赶海,1 -1598406756495363,王道,1 -1589563883270158,产后,1 -1677611976970253,数百人连夜献血救的孩子走了,1 -1570772434029569,龙凤胎,1 -1561758457486338,甄嬛传,1 -1615401098377288,杀生,1 -1677171934436359,这老师崩溃了,1 -1573436272875597,萌宠成精了,1 -1677509210621965,白上仙毁号,1 -1612771508729860,如何自救,1 -1593670849339399,抖瓜上热门,1 -1677630234664968,7000英尺高空点燃降落伞,1 -1668648446807053,男科小知识,1 -1646912797467659,小棉袄和皮,1 -1574537411291149,问题,1 -1573534100381710,女友,1 -1677512449144839,黄子韬爸爸去世,1 -1611654029549645,灵异,1 -1674105286041607,emui11,1 -1600400369990728,三哥苗侨伟,1 -1600186417059853,都市天际线,1 -1644386104826888,河南搞笑方言,1 -1616177245616132,特效也太好看了吧,1 -1582146179668045,周慧敏,1 -1572959399020574,流浪猫,1 -1563573645513730,飙演技,1 -1582590324298782,寻人,1 -1603974086125640,人人有责,1 -1612041742429192,胆小慎入,1 -1596742749195278,美队,1 -1589712932813828,热门热门,1 -1675254383004701,别克微蓝6插电混动车,1 -1675968026417156,猜到结果算我输,1 -1611821392644167,我在抖瓜看动画,1 -1581868493514766,讽刺,1 -1580841695213582,80后,1 -1672084619532302,山东我爱了,1 -1581882456913933,狗子成精了,1 -1677882625889293,美剧生活觉醒,1 -1608741876060168,狗是人类好朋友,1 -1570418615429122,做家务,1 -1615675736712195,大能,1 -1563472543645697,翡翠,1 -1627340439844867,感受下沙雕女孩的欢乐日常,1 -1668472132018205,猛男张张,1 -1612761540377603,弟媳妇,1 -1590840181645325,接头霸王,1 -1586053736721421,午马,1 -1585929301823502,老一辈的爱情,1 -1590571743868935,怼人,1 -1590410588640260,演习,1 -1607962018424840,喜欢双击关注,1 -1594641143242756,男朋友日常,1 -1568000470689793,超人,1 -1618380486819844,四川麻将,1 -1563374562157570,哈尔滨,1 -1584917575635981,安全出行,1 -1566703867894786,古装,1 -1664101456252942,doujia热门,1 -1611324280595460,影视片段,1 -1605151999277064,变相怪杰2,1 -1592892713607181,南派三叔,1 -1605153795369997,育儿经验分享,1 -1596090850617347,苹果发布会,1 -1668992348781572,wo的高能瞬间,1 -1670573354145799,nba全心开启,1 -1573639965696014,远离赌博,1 -1659238106127373,真情大调查,1 -1678041593370638,武汉某超市拒收五角人民币,1 -1606225989208248,曼德拉效应,1 -1612146752509955,谢谢大家的支持和关注,1 -1589927699503117,考试成绩,1 -1677990728422423,天猫好房,1 -1664560944556045,骗婚,1 -1612531371968525,王贵与安娜,1 -1591096791377928,现在就告白,1 -1609286195385415,奔驰sls,1 -1595378329838596,老外真会玩,1 -1668535668014093,嗅觉神探,1 -1575344689274893,青岛,1 -1583515479261197,好婆婆,1 -1569238769007617,拆,1 -1646908860810251,请大家看好自己的孩子,1 -1592198715425805,人间烟火,1 -1582767063230477,一年又一年,1 -1647805967352846,沙雕婆媳,1 -1608646047503367,5g时代,1 -1581290902116365,禅绕画,1 -1571898873497602,山东,1 -1672095835374605,情感藏在细节,1 -1660376984924174,法治天下,1 -1601717880845406,叶子楣,1 -1573921697643598,俄罗斯,1 -1650623684249608,韩国财阀,1 -1677685302300679,湖人时隔10年再次闯进西决,1 -1584100476679181,收纳,1 -1592843434051592,原相机,1 -1608382254168071,李保田,1 -1666936642857997,父母养老房子改造,1 -1670172613641287,宁静真香,1 -1614742329370638,台球是一种生活,1 -1594581159752717,记录美好生活,1 -1562847370646529,时间,1 -1585136157378606,鉴宝,1 -1575929053961230,梁咏琪,1 -1581242838631438,杨紫,1 -1663920416611335,超能计划,1 -1608312489344007,徐熙媛大s,1 -1589858251087875,求热门,1 -1595255012690957,丽江蓝月谷,1 -1659512631761934,沙雕动画,1 -1573658976636942,憋笑挑战,1 -1600009028294660,tvb港剧,1 -1620006139217927,商业,1 -1589388548682760,约翰尼德普,1 -1600309374342147,奥尼尔,1 -1576455385010189,柳州,1 -1584852667083789,带上同事一起抖瓜,1 -1621469965079565,迷惑行为,1 -1677959334824967,广州一公交车从高架桥上冲出护栏跌落地面,1 -1578225788793870,考研,1 -1578212207907854,百岁老人,1 -1590722355323908,卡友,1 -1674171064623116,胡阳光,1 -1588634933749773,性感,1 -1584702608183326,特化师,1 -1653430952334339,禁毒,1 -1564724072144897,钓鱼,1 -1591456221443086,于海,1 -1628329366688775,齐迹,1 -1657590362241036,丑脸大头恰恰恰,1 -1567521760332802,酒,1 -1574956339749917,护花使者,1 -1563925543518209,牛逼,1 -1667975035693064,往往老布,1 -1671939214611470,模仿宁静,1 -1611136279758852,合租,1 -1580405916581966,总裁,1 -1573898373478413,大美中国,1 -1588924635539460,没见过这么嚣张的人,1 -1587832089958653,房价,1 -1571890916364305,视频制作,1 -1676878600674307,好油调出balance,1 -1614524718545923,利哥,1 -1606319608582211,纠正驼背,1 -1583674460147725,平凡的世界,1 -1599406471560199,护师,1 -1614639698996237,鲳鱼,1 -1666672504755208,殊死七日,1 -1618752580046851,迪士尼花木兰,1 -1592436917069831,电影电影,1 -1603878075494430,最美的安排,1 -1604615532549127,斗腕魏思澄,1 -1562582800230402,跑酷,1 -1568842117936129,搏击,1 -1593434926171139,塞班军舰岛,1 -1642758208234504,特战队,1 -1675996038535171,小海豹钉蹄,1 -1649778298342414,记录我的农村生活点滴,1 -1565202179611650,丑女逆袭,1 -1553351219767298,恶作剧,1 -1560120442414082,手艺人,1 -1586385013745678,国家文物,1 -1607514828379140,参军,1 -1572075637504002,治愈系笑容,1 -1619652822451207,古玩收藏,1 -1562847247126529,贾斯汀比伯,1 -1631018123740163,空姐卸妆,1 -1579795900949518,宝格丽,1 -1658045706846216,经典电视剧剪辑,1 -1641292731996164,斩风刀,1 -1677528942334990,大爷怒斥小伙纹身,1 -1677506810015751,7000的玩具车,1 -1565441306550273,杨幂,1 -1555927198663681,寒假,1 -1581570824002573,好车抖一抖,1 -1569839505411073,有趣,1 -1586952198827022,我的十年,1 -1610032296928264,宝妈分享,1 -1614196636738567,关注我持续更新,1 -1573269976696846,斯诺克,1 -1641752119728142,老娘舅调解语录,1 -1549870620673025,上课,1 -1592569857467399,无敌小可爱,1 -1569702920352769,民谣,1 -1566477444054018,新白娘子传奇,1 -1558864984679425,三生三世十里桃花,1 -1661321673949191,我的影视剪辑报告,1 -1613619221356637,生还,1 -1624239648859149,新闻启示录,1 -1677860913667143,熊闯入游泳池边闻男子脚,1 -1582833682484237,领证,1 -1647377396130827,沙雕父子组,1 -1577676831125517,乡村爱情,1 -1565655142095874,超跑,1 -1590115768359950,邱淑贞,1 -1616929124964420,动作喜剧,1 -1593357130209293,乱世三义,1 -1590894980925470,挖掘机,1 -1566730420065281,直升机,1 -1576512250548237,纠结,1 -1677870430410766,76岁演员陈惠敏承认患癌,1 -1587023431537677,黄土高原,1 -1661043260419076,迷惑螺旋桨,1 -1626417382928395,负心的你,1 -1567055721122817,工作,1 -1613021983165454,潮州职业技术学校,1 -1594581079902221,中国手艺人,1 -1589848982707208,黄鳝,1 -1604866345539614,流鼻血,1 -1625779635030029,草率了,1 -1676596201948173,肖战火锅局,1 -1673533461243912,亿想不到的美味,1 -1588047181311053,心理学,1 -1612733525935107,爱吃爱喝爱生活,1 -1677430798125064,迪丽热巴照镜子,1 -1658118141673485,美食趣味计划,1 -1614910242510878,湖人vs火箭,1 -1569890451562498,精神小伙,1 -1633951213163531,107头条,1 -1668641546799118,和老板同居,1 -1597783864087559,张凯丽,1 -1581206925850638,蟹王,1 -1627161159130119,抖瓜科技,1 -1604976257476637,僵尸至尊,1 -1562553454665729,尼古拉斯赵四,1 -1580534385160205,新闻,1 -1626237205627907,继承者计划,1 -1610218586799149,秦舒培,1 -1585137565862926,湖南,1 -1600091285823492,兵哥哥,1 -1577610367174701,提神醒脑,1 -1591815165039623,阿亮,1 -1583764974129326,我的爷爷奶奶,1 -1580368895533070,风俗,1 -1657487565987851,dou热门推广,1 -1566604392018945,逆袭,1 -1587135067847694,护士懂护士,1 -1649079134803975,秀出你的足迹地图,1 -1598698761907214,教官,1 -1600069713291336,牛🐂,1 -1610752556444679,植物,1 -1590193696421895,老母亲,1 -1677550052506637,成都桂花巷20株桂花树遭野蛮砍伐,1 -1583460791527438,婆媳关系,1 -1677979999761422,一毛钱奶奶,1 -1580034759669774,阳澄湖大闸蟹,1 -1672311367929864,哥哥树,1 -1583424239095822,家长,1 -1611409563876360,地心抢险记,1 -1569628030253121,护士,1 -1554034322063361,自行车,1 -1666545285550092,英语,1 -1586474766056493,演练,1 -1576065513345053,日不落,1 -1633327165297677,不要限,1 -1566759194999809,乒乓球,1 -1670732998476808,船山区创建天府旅游名县,1 -1572132571825153,道歉,1 -1677349414027278,美国俄勒冈州爆发大规模山火,1 -1561512764259330,cp,1 -1618284300066823,沙雕沙雕,1 -1627968132282381,跌跌撞撞奔向你,1 -1587013951279118,腌萝卜,1 -1595532349503496,隐私,1 -1590650291750920,中国骄傲,1 -1636043554174988,关注我下期更精彩,1 -1614194476395543,剥皮香蕉馒头,1 -1677369456366604,女儿离家出走10天父亲录视频唤回家,1 -1612402101366852,新剧来袭,1 -1656408078389261,抗击疫情,1 -1607747584509965,打call我的内容主场,1 -1574013067411470,重庆方言,1 -1656208906057735,豆荚小助手,1 -1599500924279816,办公室搞笑,1 -1669645439153160,3哥搞笑配音,1 -1599880972777479,安岳,1 -1560033080192002,姐妹情深,1 -1590846637507598,懂事的孩子,1 -1665646289460232,潮玩人类在哪里,1 -1589444559883267,手机维修,1 -1674654715014152,流量福利在这里,1 -1677520322118667,毒角show为了邓超摘头套,1 -1631248001507341,打工这辈子是不会打工的,1 -1570737659003905,西安,1 -1677338652862472,给物业送锦旗,1 -1587385113886734,乞丐模拟器,1 -1674798922195976,我喜欢你开播,1 -1676893265899534,苟金凤,1 -1610935344226312,教师节送花,1 -1677644399991820,男子因彩礼街头暴打女友,1 -1560110456527873,最美手艺人,1 -1571084283091010,刘亦菲,1 -1677810346323981,专家竟从52岁大妈左肩里挤出,1 -1673813484549128,canva教程,1 -1637497404709892,我们依然是我们,1 -1677633521127432,江疏影续演王漫妮,1 -1607688618777604,亲子教育,1 -1573995712690189,何炅,1 -1575709569627150,古天乐,1 -1610146264065037,孙越,1 -1555596444813329,校园生活,1 -1603511945453571,孙兴慜,1 -1677496660123652,好奇心大作战,1 -1590559367029763,内八字,1 -1566997268986882,动画,1 -1671491908639757,极限挑战宝藏行,1 -1614367524605975,把子肉,1 -1599268162183182,皮神,1 -1659412581199886,立坚,1 -1590384475615240,保罗乔治,1 -1677712748194887,兰博基尼街头自燃,1 -1553962105154561,杨洋,1 -1592165770108952,女性健康,1 -1610007354742792,平安普惠,1 -1643089679003655,三国志战略版,1 -1575865001691149,开学季,1 -1568471535935490,泰国,1 -1590730220314638,檀健次,1 -1611506383222855,蓝军出击,1 -1568840755171329,马犬,1 -1604140579635204,二弟,1 -1593158120322061,面条🍜,1 -1636291460599815,淮南交警vlog,1 -1588110644130845,郭京飞,1 -1577055091555406,开学第一天,1 -1676531842194509,apple2020,1 -1578073549488157,小米,1 -1677410156354574,徐峥新片预告,1 -1560045571001346,蹦迪,1 -1594892141064206,霍启刚,1 -1677870811959304,强迫他人,1 -1669715754163208,我在抖瓜都动漫,1 -1628309420041220,抑郁症,1 -1608911900488717,身材管理,1 -1665696556659720,很哇塞的女人,1 -1674981802564615,默默团队,1 -1612180629689351,炸厨房,1 -1568544557198337,北海道,1 -1592636211842056,奇葩亲戚,1 -1633661740573699,玛莎和熊,1 -1588496486919172,国球,1 -1578666298013710,文章,1 -1614388130793479,散装rap,1 -1642927260825608,清网行动,1 -1595024414973971,山海,1 -1674082597191693,梵音年华,1 -1579053392665613,养殖,1 -1675549742092295,中天潮购,1 -1638030278525955,717抖瓜嗨吃节,1 -1583194219327502,重庆大学城,1 -1603508266643469,湖北高速,1 -1580213348163598,探亲,1 -1677682748723207,重启第二季开播,1 -1572892227475469,家人,1 -1592527770535950,外国人看抖瓜,1 -1676697150098435,王在清,1 -1574718665971725,谭松韵,1 -1618889419552771,文昊,1 -1624362684860488,canva,1 -1544979526789121,哈哈哈哈哈,1 -1586235561379854,t台走秀,1 -1637292909692932,感谢官方大大推送,1 -1677506209852424,老人卖粮款被偷,1 -1565481181932545,前方高能,1 -1578692747274254,王宝强,1 -1661045355972638,宫主切,1 -1575313074761758,稻城亚丁,1 -1563986486107138,开车,1 -1599448214157389,集美,1 -1601963171439623,李庚希,1 -1584390730795021,孙膑,1 -1609840812303432,拉黑删除,1 -1622553413062980,初恋那件小事,1 -1559289151965185,手写,1 -1599599087024141,解方程,1 -1607122358097069,业主,1 -1560034530455553,成都,1 -1602773144185863,永不回头,1 -1593010838601799,李浩菲,1 -1608428009655300,养育女孩,1 -1677827324154893,妈妈唠叨孩子50分钟把自己气跑,1 -1567811390931970,潜水,1 -1601062764760071,侯梦莎,1 -1677977854429192,大学女生在宿舍腌制糖醋姜,1 -1631649052171278,最强保镖天团,1 -1612211559179268,李民基,1 -1583595187422350,科目二考试,1 -1636327659377692,笑动欢乐秀,1 -1586365039756318,长相守,1 -1581135620239390,搞笑日常,1 -1662663755205646,记录电影人的酸甜苦辣,1 -1659935844166660,球星,1 -1655951651689480,杜卡迪,1 -1577713096475661,三国,1 -1588647137818628,母乳,1 -1670551953451015,抖瓜奇妙好物节,1 -1645543382929422,挑战幼儿园老师,1 -1585881535148046,8090后,1 -1586299512457293,感谢大家,1 -1559915331061761,演技派,1 -1610485479299075,跪坐,1 -1580881561351182,马,1 -1649434197898312,红糖小丸子,1 -1586378479863837,暴富,1 -1606143763738638,百花香,1 -1565831000252433,爱的恰恰,1 -1583757678399501,拼音,1 -1587196934411277,农村美食,1 -1676293182668811,konsn,1 -1616157402092557,赤峰下雪了,1 -1574078820326413,快递小哥,1 -1668048489383949,普通食堂网红店,1 -1677365645304855,宋丹丹粉色公主裙旧照,1 -1668927092622350,影视剪切师,1 -1575861602181134,你怎么看,1 -1610848415945742,盗墓,1 -1579215271954461,丈母娘,1 -1575369394224141,郑爽,1 -1554416902162434,宝贝,1 -1677869640669197,6000元离职赔偿金全是硬币,1 -1578584758711326,珍惜,1 -1589034066467847,汽车小知识,1 -1570173814554625,背影杀,1 -1615490128907272,路易十三,1 -1591958633563143,巩俐,1 -1612554366616580,我和我的家乡,1 -1659021082383372,ios14来了,1 -1674191592952839,杭城心动地图,1 -1620980854999053,八百里洞庭我的家,1 -1588835439117319,五迷三道,1 -1553051327652865,欧美,1 -1579705635002381,嫁给爱情,1 -1576374277730317,华熙哥,1 -1570521388208129,奔驰,1 -1612592462954628,阿雅,1 -1597785015461892,正念,1 -1589646750185480,济南美食,1 -1576102316028942,逆袭失败,1 -1571501579261953,黑洞,1 -1585840639121421,南方人北方人,1 -1672487422735374,全部都在那个地方,1 -1588140691710989,李子坝,1 -1645092854816772,新兵,1 -1586221525899278,屁,1 -1574142789132302,短视频,1 -1583368193224782,生活需要仪式感,1 -1677548036602887,军训高校大比舞,1 -1663489014576132,阿森编舞,1 -1609878026943502,胡慧中,1 -1590731539234836,驴,1 -1656860481080332,战胜疫情dou行动,1 -1659518605206536,网抑云,1 -1625275798564932,阿尔法脑波音乐,1 -1565892214407169,后来,1 -1589016552900616,中国人在非洲,1 -1672259762286606,发光的你与众不同,1 -1608857872691204,家暴,1 -1584485929434125,文艺复兴,1 -1584778872891405,悍匪,1 -1640300629399559,轻知识计划,1 -1659217199307787,原创者联盟,1 -1652266872296455,成龙,1 -1677959561693198,国庆大花篮预计9月25日亮相,1 -1615833098563741,酒驾,1 -1628266163326983,末代溥仪,1 -1579398594967662,农家小院,1 -1608222952512590,玉米地,1 -1586660674833518,刘邦,1 -1627798126772236,逃学英雄传,1 -1594433362720771,大山深处自然美,1 -1596051943036931,琉璃,1 -1591850792327197,莱昂纳多迪卡普里奥,1 -1592534297609224,giao,1 -1596540199302164,姜武,1 -1571245293514754,牛,1 -1644258138190862,鹤岗房子,1 -1644075797125134,网安山东,1 -1600312964157443,秦霄贤孙九香,1 -1552967203585026,00后,1 -1613411803136003,申请热门,1 -1579425824552974,农村人怎么了,1 -1608966790524932,持续关注持续精彩,1 -1648325059875851,不怕沙雕多就怕沙雕住一窝,1 -1571711435128833,情感电台,1 -1677612249109512,青春无限♾青春之旅美好生活,1 -1675474719632396,铁雨2首脑峰会,1 -1590979013152781,高空挑战,1 -1639829686000648,炮神,1 -1574083285259341,第一段,1 -1570980979267586,开心消消乐,1 -1580986833528846,变老,1 -1676446446547975,孙子大传,1 -1591013283480589,细节操作,1 -1677994182789127,成都软件园一盗贼专偷外卖冒菜,1 -1608870618100808,中国航天,1 -1565524068230145,美发教学,1 -1591499351969806,浴血黑帮,1 -1669219873756163,底盘铲地球,1 -1628918765741059,旅游,1 -1600604121323544,每日亲子陪伴,1 -1628804425315341,王牌特工特工学院,1 -1677801620133901,女生好s,1 -1585127360394381,大话西游之大圣娶亲,1 -1553606972212226,小可爱,1 -1629769441716232,胡教练,1 -1605932028987422,虎头蜂,1 -1633497633660941,反对家暴,1 -1600164474695684,逆缘,1 -1569782244524033,婚纱照,1 -1627275015135245,超自然事件之坠龙事件,1 -1668471474695243,宅间轻喜剧,1 -1623167611284643,恶魔蜘蛛王,1 -1577683473092622,新生儿,1 -1583589310753806,抢车位,1 -1614726028664840,八佰,1 -1594929080971268,焊工,1 -1642665199412238,小欢喜2,1 -1677448679876620,送到女儿学校,1 -1653695079982092,duo小助手,1 -1665901656861709,男科医生,1 -1655951003594766,2020dou上热门,1 -1651350737173508,明星怼人合集,1 -1571082277522434,坑娃,1 -1588537977068552,痛风,1 -1673565308310536,乡村新景象,1 -1574954750868494,网瘾少年,1 -1677997772205069,穗禾锦觅开战,1 -1591210331884551,养猪人,1 -1563668798581762,男朋友,1 -1585676977298510,室友日常,1 -1622457289260039,天才枪手,1 -1555878998362113,巴啦啦小魔仙,1 -1603543547993101,湖南沅江,1 -1584493793569869,英超,1 -1618115996383236,秋梨膏,1 -1557493523404802,推荐,1 -1590727328633869,抖瓜小助,1 -1572190925510669,骗子,1 -1675551209467916,我和我的家乡味,1 -1663359081850888,伟壹,1 -1585013108852813,谁是卧底,1 -1642978158987272,带孩子太难了,1 -1607940554062852,母婴店,1 -1677422862199821,传统古井烧猪,1 -1663659493911563,小姐姐,1 -1665940721062926,r法催眠,1 -1677704248546312,347国道发生大面积山体垮塌,1 -1564190844956674,男装,1 -1587900223097869,蜜雪冰城,1 -1607764214653959,危险动作请勿模仿,1 -1645997237147659,男科,1 -1671424452809741,李有财造飞机,1 -1581202617364493,五菱之光,1 -1580116381965325,城市建设,1 -1635700626272264,亲爱的热爱的,1 -1652260536571911,轩辕大帝,1 -1565705888506882,你是风儿我是沙,1 -1601051713037326,派出所,1 -1566926248364034,美食分享,1 -1659513056397320,百亿好剧,1 -1578664801646622,月饼,1 -1614116465033357,猫鼠游戏,1 -1608401017931789,冰天雪地任我行,1 -1560535746018306,老师,1 -1565553933189122,深圳,1 -1677970801234957,小鬼黄鸿升去世原因公布,1 -1622354945002499,赵亮,1 -1636325168600068,工业机械,1 -1608703107038221,胸肌训练,1 -1613644615706632,爱商,1 -1583122900064270,任达华,1 -1582284554587150,奔跑的少年,1 -1656436228311047,小宝茶,1 -1613770438473735,老房改造,1 -1611423829680131,台海,1 -1657017434406925,张定宇,1 -1568980017052674,小猫咪,1 -1588202363174926,甜剧,1 -1583121307960334,重男轻女,1 -1658678512169991,抖瓜好货推荐给你,1 -1620202558885892,李幼斌,1 -1561383677659138,画,1 -1572558994881549,抖瓜游戏,1 -1597624168204291,电影推荐,1 -1677892094793741,2020年只剩3个月了,1 -1579656970466318,雪景,1 -1583592099941389,报恩,1 -1586303608551501,胖子都是潜力股,1 -1613852073929731,爱情婚姻家庭,1 -1644541644214286,911事件,1 -1677426437089292,吉林复读生为凑学费偷电瓶,1 -1648371942519816,圣殇,1 -1575983798856733,高速,1 -1587498228710414,跳舞使我快乐,1 -1677535476530248,911事件19周年旧址点亮光柱,1 -1588584855328782,红旗,1 -1591380902636552,汤唯,1 -1678001781079053,11岁骑车女生被人恶意拉倒,1 -1562187648336897,男士发型,1 -1666189726534663,魔幻剧场,1 -1674622886439943,王牌主播请出战,1 -1677144000920589,笑容丝滑愉悦开挂,1 -1576155270937645,模拟游戏,1 -1663853183150092,小影夫妇,1 -1588486474216455,国产神剧,1 -1618895028044803,养父母,1 -1564252858121218,模仿,1 -1573548836325390,狂欢,1 -1646884809810948,最强蜗牛,1 -1668279142359048,李泰林,1 -1677908858535943,加优跨次元歌者,1 -1641649362983944,婚姻爱情保卫战,1 -1577070421094413,赵奕欢,1 -1677816329351176,我喜欢你订档,1 -1677160007808011,派出所蹲点,1 -1623998763217927,抗战神剧,1 -1580905686601741,大火,1 -1585840279782414,梅艳芳,1 -1677862456652807,韩国女星吴仁惠去世,1 -1586226599503965,康熙微服私访记,1 -1573054489165838,感悟,1 -1563226140259329,热门音乐,1 -1677323659416589,我二兄弟也来跟个风,1 -1582299757202509,神雕侠侣,1 -1596969382013960,秦海璐,1 -1610841088134148,婴儿成长,1 -1677705427025933,总裁崩溃,1 -1594627956941831,武松,1 -1617178489624583,巴布豆童鞋,1 -1677789567607821,菅义伟,1 -1591111607478302,中年,1 -1571738776766466,纽约,1 -1567482989331458,每天一笑,1 -1657497641070595,新冠肺炎疫情,1 -1600236256103431,核爆,1 -1587920809401421,洗浴中心,1 -1619277860613197,智勋,1 -1623971651070990,记录我的农村生活,1 -1611773240568840,沙雕闺蜜,1 -1584324669784078,推理,1 -1580696632184861,孝心,1 -1600246427211779,功能沙发,1 -1563738987591682,北京,1 -1591025235673092,郭麒麟,1 -1581320898713645,肚子,1 -1570426482584578,好友,1 -1600131351015427,争执,1 -1566087130744833,造型,1 -1566395514126354,大学宿舍,1 -1578084874670093,中国历史,1 -1567277130726402,童年回忆,1 -1607467553843268,老师想你了,1 -1603256533442573,纹身师,1 -1579796389787661,发饰,1 -1674810012655623,急诊花帽小护士,1 -1555403246990338,双胞胎,1 -1575985882266654,黄渤,1 -1676692906416135,自热小火锅就吃自嗨锅,1 -1612138665803815,普法小剧场,1 -1661132764788748,陕西吃啥,1 -1576794974985229,一年级,1 -1600979165590599,纹身刺青,1 -1611819994148867,左下角,1 -1569612383333377,螃蟹,1 -1585773422203917,眼光,1 -1593360069113863,微胖女生,1 -1582287894079502,最可爱的人,1 -1565826299223042,桃总,1 -1675859474872332,每日精选好剧,1 -1565366135950338,我要上推荐,1 -1561584511636481,武汉,1 -1553120460998657,可爱,1 -1637739690380292,谦酒,1 -1582310445641741,牙齿,1 -1576734679761934,好兄弟,1 -1623836144134151,捐献,1 -1597903469607971,杨紫李现,1 -1564355286200321,victory,1 -1573873261129741,甜品,1 -1640395304947723,撞邪先生,1 -1638734146822148,最美女兵,1 -1591122149099528,你猜不到的结局,1 -1607799206402056,太古里街拍,1 -1564001790576642,神奇的肚子,1 -1677268298126344,领导护犊子是什么体验,1 -1571517182097410,碰瓷,1 -1609469406354567,唐老师日常,1 -1593647413242887,徒手掰苹果挑战,1 -1567822906610690,上海迪士尼,1 -1614395633233928,患者,1 -1593351384951815,好看的电视剧,1 -1582470770924558,大鹏,1 -1616526307560536,雷神电脑,1 -1622630551428104,姜贞羽,1 -1628892655780877,代号生机,1 -1597197008174094,成年人的世界,1 -1573897210178574,洪崖洞,1 -1588270668149763,年龄差,1 -1674700166464516,广西新闻早知道,1 -1552386123095041,吴亦凡,1 -1623175739432967,这条街最亮的仔,1 -1577837655597070,考驾照,1 -1611309589793860,成功学,1 -1569810761985025,伞,1 -1598130235290638,农忙季节,1 -1575074513291277,育儿,1 -1580420785864797,婆婆,1 -1574231426382862,脱单,1 -1649547991217160,测评打假,1 -1568886956459010,烤肉,1 -1676784772459532,玩转好声音,1 -1628665998113800,倚天屠龙记_,1 -1594195711440903,苗侨伟,1 -1606928965228548,别屏蔽,1 -1656666038590475,荒野求生第三季,1 -1625430245483523,下雪就得这样玩,1 -1662831692030980,影视风云,1 -1615008005051406,全世界最可爱的噗噗,1 -1578422296238094,活佛济公,1 -1557054362274818,段子,1 -1603498176704516,张小龙,1 -1606770143682579,和睦家庭,1 -1586854430479374,搞笑大师,1 -1569317660421121,文明出行,1 -1677893107969032,抖in北京#抖incity美好生活节,1 -1554119263548418,刷牙,1 -1602335893123080,打黑,1 -1583314560927757,青丘狐传说,1 -1588467836491779,武动乾坤,1 -1598834307560461,兴化,1 -1615351904830488,玉石,1 -1631236218335236,一车一江湖,1 -1651083148338190,命案十三宗,1 -1614949987486724,汽车文化,1 -1556856443091969,周杰伦,1 -1574174143975437,奥迪,1 -1644033553605646,每一帧都是热爱,1 -1574070346729550,好物推荐,1 -1638374406601739,利刃出鞘,1 -1654583391575051,品鉴彭州,1 -1568968940120066,儿童,1 -1677812835643406,电子科技大学开学典礼,1 -1617538819795975,天堂回信,1 -1587392320444429,娘家,1 -1605527650724888,记录宝宝成长的每一天,1 -1675423522696205,郭论谦道花式开箱,1 -1596912499578903,名场面,1 -1675898188874755,参加献x活动,1 -1606162495645700,梳头姐弟,1 -1582301101844494,军舰岛,1 -1668291124803591,云上科普日,1 -1574626737582125,单身的原因,1 -1589412185820173,独生子女,1 -1564299357263873,外卖,1 -1666438297361416,吴中天,1 -1611725973256206,长安诺,1 -1639761233340427,知识充电站,1 -1677328466790414,美味卷排骨,1 -1572339587976205,摄影师,1 -1591711534215176,韩剧推荐,1 -1570750369816578,家乡,1 -1640994071284739,军事,1 -1574272490583069,按摩,1 -1581492753429517,姚明,1 -1629134389170188,童鞋厂家,1 -1583106210907150,素质,1 -1580315652631566,军训时光,1 -1566722653623298,拍戏,1 -1571257555315714,老九门,1 -1568611992448002,精灵宝可梦,1 -1587746734672910,伍佰,1 -1595993623472136,鹿晗邓超,1 -1567098492881922,真爱,1 -1585015473368077,挽回,1 -1604354969179143,大学开学,1 -1667851982065672,斗破乱世情,1 -1604260854383629,王耀庆,1 -1592304500408334,袁隆平,1 -1575074180823053,矮脚猫,1 -1550769196968961,尴尬,1 -1625613090686987,感谢抖瓜我要热门,1 -1647456595878919,创作人计划,1 -1654891320307720,皮卡大叔,1 -1565910651251713,我的世界,1 -1596008877671437,女儿是爸爸的小棉袄,1 -1650603431386119,殴打,1 -1563656529006593,岳云鹏,1 -1583042891615246,乔欣,1 -1564937801376834,衣服,1 -1668573286215687,无用的知识,1 -1601145958245379,钓鱼那些事,1 -1579264536548366,拯救不开心,1 -1674074185015310,安徽观察,1 -1575780116911118,创意diy,1 -1668662691087373,花西子蚕丝蜜粉饼,1 -1625992682089475,当下热门话题,1 -1573372737495054,来了,1 -1587732686155821,郑秀文,1 -1677155037307907,圣罗兰黑白无界,1 -1580977453876237,林正英,1 -1603942096703501,晴雨两用伞,1 -1572529934098445,珍爱生命,1 -1612731880805390,广西土猎,1 -1635030668863501,建设美好生活ing,1 -1566293521774658,迪丽热巴,1 -1630040738892814,抖瓜大大给个热门吧,1 -1657940070453256,喂鸡神器,1 -1586595426017294,头条,1 -1583555778716686,辽宁,1 -1677699250549790,伍佰坐轮椅开唱,1 -1608665399364686,身材好就是好,1 -1621353881698333,钞能力,1 -1575705125389326,美人,1 -1652806277463044,远离家暴男,1 -1619008421086211,爆炸,1 -1585547389384717,现场直播,1 -1570370216534018,等着你,1 -1579060689456206,改编音乐,1 -1595153349741572,静安寺,1 -1677371187758094,李有财农具,1 -1618746894366724,网恋奔现,1 -1629481541809166,d位出道,1 -1670365038337031,李响传媒,1 -1677631913847811,无心街坊,1 -1626680443255819,大头biubiubiu,1 -1576885881009181,我想上推荐,1 -1677532093074436,冠军陈更单挑四个小学生,1 -1602244482891783,法医,1 -1653962626043912,我的养龟日记,1 -1677506828729351,懂车的小同学,1 -1674150487094296,电视剧琉璃,1 -1602775492824094,居家好物,1 -1574533455391758,水浒传,1 -1661672750623752,精神过头,1 -1677264336503812,孙弈秋郝帅天台打架,1 -1580667354053645,不能说的秘密,1 -1677371056041991,割玉米专用,1 -1579578896252941,过把瘾,1 -1665194959381511,把你宠在手心,1 -1573171437990925,名人,1 -1582961471341581,超模,1 -1629946584029187,nba季后赛,1 -1596686386095134,文森特,1 -1674092342988814,资本市场三十年,1 -1576053374275614,鲁班锁,1 -1594197527162887,感谢关注,1 -1581157635157005,倪妮,1 -1612502240242695,急诊护士,1 -1677981362427912,七开头的车太牛逼,1 -1595353735032856,台湾人,1 -1586288937230350,乡村美食,1 -1603596646665224,北京卫视,1 -1582400515252238,奚梦瑶,1 -1672198277140488,今晚看点啥,1 -1630183793301517,jnk,1 -1583078861298701,私人飞机,1 -1582100926906381,趣味,1 -1677445463048196,我的盟友你是谁,1 -1677789580033038,男子当众抢夺女童被饭店老板制服,1 -1638734089995268,古丽讲西部,1 -1603758796182600,汽车知识,1 -1573726718016526,兜风,1 -1590339862235207,钢结构,1 -1583552725006349,杜高犬,1 -1596953771948039,楚汉传奇,1 -1633045749074955,千里马遇伯乐,1 -1626610456773644,dou小助手,1 -1564599163399170,tattoo,1 -1656940481593357,疫情快报,1 -1571970061487122,神秘博士,1 -1570876411961346,甘肃,1 -1590235339528195,沙溢,1 -1567110187537410,怀旧经典,1 -1620456395930637,虎子哥,1 -1583324255251550,宁静,1 -1610947503030286,李兆基,1 -1572672048495630,农村老家,1 -1554229606605825,新人报道,1 -1625725053004808,熬夜,1 -1677409754578958,这样装没问题👌,1 -1634771076474888,护童联盟,1 -1592007484804100,肩周炎,1 -1589204573906967,养猪,1 -1673993665429511,团圆直播认亲,1 -1567359097185282,奶茶,1 -1583866543616014,屋顶,1 -1582935166874637,包工头,1 -1677911863907335,女子与丈夫吵架后离家失联,1 -1583125640459278,六胞胎,1 -1576230229140494,牛排,1 -1579560185909262,十一,1 -1588226722494494,石油,1 -1675252747844615,脸部变焦,1 -1584737689437198,带鱼,1 -1677730967865351,天天向上金靖,1 -1576032843484238,魏大勋,1 -1572818441355277,暖心,1 -1565827666711553,抓鱼,1 -1603114144781326,打针不哭,1 -1663964234839047,小伙子全程蒙圈状态,1 -1656138914810894,江玉郎,1 -1666642550330371,妻子不忠,1 -1641292794003468,今日迷惑行为,1 -1562308352218113,90后,1 -1615377490839636,养猪技术,1 -1676277948057613,电影死无对证,1 -1676326998159374,兰蔻888,1 -1611766356087812,crc,1 -1677970726907975,杨丞琳演唱邀请初恋小鬼泪奔,1 -1582117337036813,多年以后,1 -1582680000508942,作文,1 -1675791473436686,黎明觉醒,1 -1649290830526477,阳光抑郁,1 -1677859979017230,男子南京地铁喝奶茶被逮罚款,1 -1676818157004808,俪刻报导,1 -1570269194376193,爱心传递,1 -1612035551475783,江别鹤,1 -1630954077332484,无痕挂钩,1 -1590843170959380,云南普洱,1 -1571365172981761,报复,1 -1649018213993480,黑帮,1 -1595303061068813,王雷,1 -1677426581310471,19岁女孩借用药店厕所产子后偷跑,1 -1647366104359940,正能量短剧,1 -1603867167899652,不信谣不传谣,1 -1609947391179779,五粮液,1 -1575122910910477,王者荣耀搞笑,1 -1567504523721730,抖瓜美食,1 -1586021697673246,李嘉诚,1 -1677441136969742,我是人生新赢家,1 -1677683166642183,网传王俊凯来西华师范大学取景为谣言,1 -1553176036452354,化妆,1 -1611540678391821,记录校园生活,1 -1581468789318733,赵文卓,1 -1609242987886600,自媒体,1 -1585056847792142,秦霄贤,1 -1575497571625998,刘海,1 -1587187404584973,老赖,1 -1588557253603336,校车,1 -1634427957744644,抖瓜影视,1 -1649502075568141,误解我的意思,1 -1572532745178125,兰州,1 -1591848005540872,赵吏,1 -1600583721151492,吐真言,1 -1571731724761106,对战,1 -1606857999469639,神龙,1 -1610299073547268,血缘亲情,1 -1576684194532365,致敬,1 -1677241132834894,单身变化,1 -1572894336425998,新手驾到,1 -1575689452850190,秋天,1 -1607780997494797,邂逅女神,1 -1572904750305309,感情,1 -1563285703795713,宝妈,1 -1672923681632269,好奇心是什么,1 -1608866527413255,😂🤣,1 -1627018310662157,沈丹萍,1 -1589534989940776,朱一龙,1 -1592011147801608,香菜,1 -1587260228129805,上,1 -1633853203434510,土妹说电影,1 -1615719514403869,执行现场,1 -1652529684050967,阿里巴巴,1 -1665133165797389,里约奥运,1 -1575031327289357,麦当劳,1 -1562659971632130,帅哥,1 -1586635829855245,早会,1 -1621537261566983,头饰搭配,1 -1635686398099469,你在教我做事啊,1 -1650276266802184,爱生闷气,1 -1583652084919373,中国美食,1 -1594380541188164,纹身师日常,1 -1656936505681931,全国疫情最新通报,1 -1677079501729799,遇见巨石山见证520,1 -1644466765969421,中秋国庆动起来,1 -1570380686643201,种草,1 -1661023252035596,蜘蛛侠,1 -1576057339427918,充电,1 -1576599103053838,绿皮火车,1 -1616589197477901,如何让你爱的人爱上你,1 -1642367782794252,我的探店日记,1 -1592114528603140,骑手,1 -1582948125154317,语言,1 -1676898004931597,我心中的月饼top1,1 -1573980388752398,生活不易,1 -1622590901641224,第10集,1 -1622812999432205,妹妹你等着我,1 -1677445474783240,河南jian男团,1 -1601452910997518,影帝段奕宏,1 -1572012105032706,灾难,1 -1630344327192579,宿舍变装,1 -1572085492279298,悲催,1 -1676995858807811,口字旁的当消失了,1 -1598623471963143,高清,1 -1660372489717774,感谢抖瓜平台的一路支持,1 -1615706017723400,拆弹英雄,1 -1618107745817614,黄鱼,1 -1597533070121987,谁是鬼,1 -1592918058684436,小s,1 -1581338596924430,香蜜沉沉烬如霜,1 -1677430977505292,高墙里走出来的大学生,1 -1561677045836801,麻将,1 -1583598730353694,校园好声音,2 -1573076419543053,青春校园,1 -1666212372285447,民间故事说,1 -1669082564790283,安阳273,1 -1586380122194957,食品安全,1 -1677604178514952,浙大最佛系家长,1 -1568196358983682,写字,1 -1591723256443924,超体,1 -1600626328822792,沈梦辰,1 -1580308223800333,冰糖雪梨,1 -1563710558527490,微胖,1 -1563126951487489,发型就这么简单,1 -1589456685673475,施工,1 -1598169755822093,周梓倩,1 -1591097903580168,先结婚后恋爱,1 -1608846127610893,nba,1 -1576352299030541,亲子,1 -1608683428727815,大热门,1 -1614220125652999,uzi,1 -1648722275350535,跟我来看剧,1 -1588715443011587,搞笑歌曲,1 -1621754995764238,四川麻将血战到底,1 -1597227267957783,特色餐饮,1 -1569251926241282,电脑,1 -1647804291080199,比弟弟大10岁,1 -1592701005310989,思维,1 -1623187224165384,闺蜜搞笑,1 -1577342499185694,开学第一课,1 -1585897578060813,努力吧少年,1 -1619816068944909,卖珠宝的小姐姐,1 -1619699321325571,钳工实训,1 -1587457214674974,猪八戒,1 -1562301547590657,赵四,1 -1563399523907586,键盘侠,1 -1570446567384066,伊藤润二,1 -1630576979218445,抖incity美好生活节,1 -1591935013554196,傅程鹏,1 -1579579593880686,搞笑电影,2 -1586766198925389,卡车司机,1 -1617624770835475,三桥贵志,1 -1582795657387021,80,1 -1564029042164738,爱情恰恰舞,3 -1595900923723800,改词大神,1 -1588018514435085,软萌,1 -1677497281857540,女子复盘泰国遭丈夫推下悬崖,1 -1572588356980749,怪兽,1 -1674374137592844,挑战面不改色挑战面不改色是的,2 -1649662668986382,一二三,1 - -`, - input: '帮我展示不同挑战关键词的热度' -}; - -/* - **动态条形图 - */ - -export const mockUserInput7 = { - csv: `type,country,value -Nail polish,Africa,4229 -Nail polish,EU,4376 -Nail polish,China,3054 -Nail polish,USA,12814 -Eyebrow pencil,Africa,3932 -Eyebrow pencil,EU,3987 -Eyebrow pencil,China,5067 -Eyebrow pencil,USA,13012 -Rouge,Africa,5221 -Rouge,EU,3574 -Rouge,China,7004 -Rouge,USA,11624 -Lipstick,Africa,9256 -Lipstick,EU,4376 -Lipstick,China,9054 -Lipstick,USA,8814 -Eyeshadows,Africa,3308 -Eyeshadows,EU,4572 -Eyeshadows,China,12043 -Eyeshadows,USA,12998 -Eyeliner,Africa,5432 -Eyeliner,EU,3417 -Eyeliner,China,15067 -Eyeliner,USA,12321 -Foundation,Africa,13701 -Foundation,EU,5231 -Foundation,China,10119 -Foundation,USA,10342 -Lip gloss,Africa,4008 -Lip gloss,EU,4572 -Lip gloss,China,12043 -Lip gloss,USA,22998 -Mascara,Africa,18712 -Mascara,EU,6134 -Mascara,China,10419 -Mascara,USA,11261`, - input: '帮我生成折线图,种类做x轴,彩虹风格,时长10s' -}; - -/** - * 漏斗图 - */ -export const mockUserInput9 = { - csv: `流程,转化率,Month -Step1,100,1 -Step2,80,1 -Step3,60,1 -Step4,40,1`, - input: '展示各个流程转化率' -}; - -/** - * 双轴图 - */ -export const mockUserInput11 = { - csv: `时间,男-早餐,女-早餐 -周一,15,22 -周二,12,10 -周三,15,20 -周四,10,12 -周五,13,15 -周六,10,15 -周日,12,14`, - input: '展示男女早餐饭量不同' -}; - -/** - * 瀑布图 - */ -export const mockUserInput12 = { - csv: `date,sales -Feb.11,5 -Feb.20,2 -Feb.25,-2 -Mar.4,2 -Mar.11,2 -Mar.19,5 -Mar.26,1 -Apr.1,1 -Apr.8,1 -Apr.15,2 -Apr.22,1 -Apr.29,-2 -May.6,-1 -`, - input: '使用瀑布图展示销量变化' -}; - -/** - * 玫瑰图 - */ -export const mockUserInput13 = { - csv: `品牌名称,市场份额,平均价格,净利润 -Apple,0.5,7068,314531 -Samsung,0.2,6059,362345 -Vivo,0.05,3406,234512 -Nokia,0.01,1064,-1345 -Xiaomi,0.1,4087,131345 -`, - input: '使用玫瑰图展示各品牌市场占有率' -}; - -/** - * 雷达图 - */ -export const mockUserInput14 = { - csv: `dimension,performance -Strength,5 -Speed,5 -Shooting,3 -Endurance,5 -Precision,5 -Growth,5`, - input: '帮我展示这个人在不同方面的绩效,他是否是六边形战士' -}; - -/** - * 桑基图 - */ -export const mockUserInput15 = { - csv: `始发地,终点站,value -Node A,Node 1,10 -Node A,Node 2,5 -Node B,Node 2,8 -Node B,Node 3,2 -Node C,Node 2,4 -Node A,Node C,2 -Node C,Node 1,2 - `, - input: '展示数据流动' -}; -/* - * 箱型图 - */ -export const mockUserInput16 = { - csv: `分类,最小值,下四分位数,中位数,上四分位数,最大值 -Sub-Saharan Africa,8.72,9.73,10.17,10.51,11.64 -South Asia,9.4,10.06,10.75,11.56,12.5 -Middle East & North Africa,9.54,10.6,11.05,11.5,11.92 -Latin America & Caribbean,8.74,9.46,10.35,10.94,12.21 -East Asia & Pacific,7.8,8.95,10.18,11.57,13.25 -Europe & Central Asia,9.52,10.39,10.93,11.69,12.63`, - input: '看下各类别数值分布' -}; - -/* - * multi-measure - */ -export const mockUserInput17 = { - csv: `date,ctr,libra_ab_vid,gmv,detection_uv,User,user_count,gpm,ctcvr,version_id,co -2024-03-05,0.024752458745543306,-1,27.05042746931187,683740,31135119,683740,0.0028542157856540976,0.00011098365108464276,-1,0.01765408108609234 -2024-03-06,0.025529744509421266,-1,26.0184806658061,666756,30057727,666756,0.0029282343207837846,0.00011602865071429876,-1,0.018457400571758008 -2024-03-07,0.024929771518461413,-1,26.099474885828787,653568,25685979,653568,0.00305250127580487,0.00012037169363684177,-1,0.019630556105233156`, - input: '使用折线图展示' -}; - -export const mockUserInput18 = { - csv: `Jira Key,Planned BP,Count -JIRA-27358,BP1.4.1,1 -JIRA-27356,BP1.4.1,1 -JIRA-27350,BP1.5.0,1 -JIRA-27349,BP1.4.1,1 -JIRA-27348,BP1.4.1,1 -JIRA-27347,BP1.4.1,1 -JIRA-27344,BP1.5.0,1 -JIRA-27343,BP1.4.1,1 -JIRA-27339,BP1.4.1,1 -JIRA-27338,BP1.4.1,1 -JIRA-27336,BP1.4.1,1 -JIRA-27335,BP1.4.1,1 -JIRA-27334,BP1.4.1,1 -JIRA-27333,BP1.5.0,1 -JIRA-27331,BP1.4.1,1 -JIRA-27330,BP1.4.1,1 -JIRA-27322,BP1.4.1,1 -JIRA-27321,BP1.4.1,1 -JIRA-27320,BP1.4.0,1 -JIRA-27319,BP1.4.0,1 -JIRA-27316,BP1.4.0,1 -JIRA-27315,BP1.4.1,1 -JIRA-27314,BP1.5.0,1 -JIRA-27311,BP1.4.1,1 -JIRA-27310,BP1.4.1,1 -JIRA-27309,BP1.4.1,1 -JIRA-27308,BP1.4.1,1 -JIRA-27307,BP1.4.1,1 -JIRA-27306,BP1.4.1,1 -JIRA-27305,BP1.4.1,1 -JIRA-27304,BP1.4.1,1 -JIRA-27303,BP1.4.1,1 -JIRA-27302,BP1.4.1,1 -JIRA-27301,BP1.4.1,1 -JIRA-27300,BP1.4.1,1 -JIRA-27299,BP1.4.1,1 -JIRA-27297,BP1.4.1,1 -JIRA-27296,BP1.4.1,1 -JIRA-27295,BP1.4.1,1 -JIRA-27294,BP1.4.1,1 -JIRA-27293,BP1.4.1,1 -JIRA-27292,BP1.4.1,1 -JIRA-27291,BP1.4.1,1 -JIRA-27290,BP1.5.0,1 -JIRA-27289,BP1.4.1,1 -JIRA-27281,BP1.4.1,1 -JIRA-27279,BP1.4.0,1 -JIRA-27278,BP1.4.1,1 -JIRA-27277,BP1.4.0,1 -JIRA-27276,BP1.4.0,1`, - input: '按照bp分类统计count之和,绘制柱状堆叠图' -}; - -export const SalesRecordsData = { - csv: `Region,Country,Item Type,Sales Channel,Order Priority,Order Date,Order ID,Ship Date,Units Sold,Unit Price,Unit Cost,Total Revenue,Total Cost,Total Profit -Middle East and North Africa,Libya,Cosmetics,Offline,M,10/18/2014,686800706,10/31/2014,8446,437.20,263.33,3692591.20,2224085.18,1468506.02 -North America,Canada,Vegetables,Online,M,11/7/2011,185941302,12/8/2011,3018,154.06,90.93,464953.08,274426.74,190526.34 -Middle East and North Africa,Libya,Baby Food,Offline,C,10/31/2016,246222341,12/9/2016,1517,255.28,159.42,387259.76,241840.14,145419.62 -Asia,Japan,Cereal,Offline,C,4/10/2010,161442649,5/12/2010,3322,205.70,117.11,683335.40,389039.42,294295.98 -Sub-Saharan Africa,Chad,Fruits,Offline,H,8/16/2011,645713555,8/31/2011,9845,9.33,6.92,91853.85,68127.40,23726.45 -Europe,Armenia,Cereal,Online,H,11/24/2014,683458888,12/28/2014,9528,205.70,117.11,1959909.60,1115824.08,844085.52 -Sub-Saharan Africa,Eritrea,Cereal,Online,H,3/4/2015,679414975,4/17/2015,2844,205.70,117.11,585010.80,333060.84,251949.96 -Europe,Montenegro,Clothes,Offline,M,5/17/2012,208630645,6/28/2012,7299,109.28,35.84,797634.72,261596.16,536038.56 -Central America and the Caribbean,Jamaica,Vegetables,Online,H,1/29/2015,266467225,3/7/2015,2428,154.06,90.93,374057.68,220778.04,153279.64 -Australia and Oceania,Fiji,Vegetables,Offline,H,12/24/2013,118598544,1/19/2014,4800,154.06,90.93,739488.00,436464.00,303024.00 -Sub-Saharan Africa,Togo,Clothes,Online,M,12/29/2015,451010930,1/19/2016,3012,109.28,35.84,329151.36,107950.08,221201.28 -Europe,Montenegro,Snacks,Offline,M,2/27/2010,220003211,3/18/2010,2694,152.58,97.44,411050.52,262503.36,148547.16 -Europe,Greece,Household,Online,C,11/17/2016,702186715,12/22/2016,1508,668.27,502.54,1007751.16,757830.32,249920.84 -Sub-Saharan Africa,Sudan,Cosmetics,Online,C,12/20/2015,544485270,1/5/2016,4146,437.20,263.33,1812631.20,1091766.18,720865.02 -Asia,Maldives,Fruits,Offline,L,1/8/2011,714135205,2/6/2011,7332,9.33,6.92,68407.56,50737.44,17670.12 -Europe,Montenegro,Clothes,Offline,H,6/28/2010,448685348,7/22/2010,4820,109.28,35.84,526729.60,172748.80,353980.80 -Europe,Estonia,Office Supplies,Online,H,4/25/2016,405997025,5/12/2016,2397,651.21,524.96,1560950.37,1258329.12,302621.25 -North America,Greenland,Beverages,Online,M,7/27/2012,414244067,8/7/2012,2880,47.45,31.79,136656.00,91555.20,45100.80 -Sub-Saharan Africa,Cape Verde,Clothes,Online,C,9/8/2014,821912801,10/3/2014,1117,109.28,35.84,122065.76,40033.28,82032.48 -Sub-Saharan Africa,Senegal,Household,Offline,L,8/27/2012,247802054,9/8/2012,8989,668.27,502.54,6007079.03,4517332.06,1489746.97 -Australia and Oceania,Federated States of Micronesia,Snacks,Online,C,9/3/2012,531023156,10/15/2012,407,152.58,97.44,62100.06,39658.08,22441.98 -Europe,Bulgaria,Clothes,Online,L,8/27/2010,880999934,9/16/2010,6313,109.28,35.84,689884.64,226257.92,463626.72 -Middle East and North Africa,Algeria,Personal Care,Online,H,2/20/2011,127468717,3/9/2011,9681,81.73,56.67,791228.13,548622.27,242605.86 -Asia,Mongolia,Clothes,Online,L,12/12/2015,770478332,1/24/2016,515,109.28,35.84,56279.20,18457.60,37821.60 -Central America and the Caribbean,Grenada,Cereal,Online,H,10/28/2012,430390107,11/13/2012,852,205.70,117.11,175256.40,99777.72,75478.68 -Central America and the Caribbean,Grenada,Beverages,Online,M,1/30/2017,397877871,3/20/2017,9759,47.45,31.79,463064.55,310238.61,152825.94 -Sub-Saharan Africa,Senegal,Beverages,Offline,M,10/22/2014,683927953,11/4/2014,8334,47.45,31.79,395448.30,264937.86,130510.44 -North America,Greenland,Fruits,Offline,M,1/31/2012,469839179,2/22/2012,4709,9.33,6.92,43934.97,32586.28,11348.69 -Sub-Saharan Africa,Chad,Meat,Offline,H,1/20/2016,357222878,3/9/2016,9043,421.89,364.69,3815151.27,3297891.67,517259.60 -Sub-Saharan Africa,Mauritius ,Personal Care,Online,C,1/1/2016,118002879,1/7/2016,8529,81.73,56.67,697075.17,483338.43,213736.74 -Middle East and North Africa,Morocco,Beverages,Offline,C,6/1/2017,944415509,6/23/2017,2391,47.45,31.79,113452.95,76009.89,37443.06 -Central America and the Caribbean,Honduras,Office Supplies,Online,H,6/30/2015,499009597,7/9/2015,6884,651.21,524.96,4482929.64,3613824.64,869105.00 -Sub-Saharan Africa,Benin,Fruits,Online,L,1/28/2014,564646470,3/16/2014,293,9.33,6.92,2733.69,2027.56,706.13 -Europe,Greece,Baby Food,Offline,M,4/8/2014,294499957,4/8/2014,7937,255.28,159.42,2026157.36,1265316.54,760840.82 -Central America and the Caribbean,Jamaica,Beverages,Offline,L,9/4/2010,262056386,10/24/2010,7163,47.45,31.79,339884.35,227711.77,112172.58 -Sub-Saharan Africa,Equatorial Guinea,Office Supplies,Online,M,5/2/2010,211114585,5/14/2010,2352,651.21,524.96,1531645.92,1234705.92,296940.00 -Sub-Saharan Africa,Swaziland,Office Supplies,Offline,H,10/3/2013,405785882,10/22/2013,9915,651.21,524.96,6456747.15,5204978.40,1251768.75 -Central America and the Caribbean,Trinidad and Tobago,Vegetables,Offline,M,3/6/2011,280494105,4/14/2011,3294,154.06,90.93,507473.64,299523.42,207950.22 -Europe,Sweden,Baby Food,Online,L,8/7/2016,689975583,8/12/2016,7963,255.28,159.42,2032794.64,1269461.46,763333.18 -Europe,Belarus,Office Supplies,Online,L,1/11/2011,759279143,2/18/2011,6426,651.21,524.96,4184675.46,3373392.96,811282.50 -Sub-Saharan Africa,Guinea-Bissau,Office Supplies,Offline,C,5/21/2014,133766114,6/12/2014,3221,651.21,524.96,2097547.41,1690896.16,406651.25 -Asia,Mongolia,Beverages,Online,M,8/3/2013,329110324,9/2/2013,9913,47.45,31.79,470371.85,315134.27,155237.58 -Middle East and North Africa,Turkey,Meat,Online,L,10/5/2011,681298100,11/20/2011,103,421.89,364.69,43454.67,37563.07,5891.60 -Sub-Saharan Africa,Central African Republic,Snacks,Offline,L,11/15/2016,596628272,12/30/2016,4419,152.58,97.44,674251.02,430587.36,243663.66 -Sub-Saharan Africa,Equatorial Guinea,Office Supplies,Offline,L,4/3/2015,901712167,4/17/2015,5523,651.21,524.96,3596632.83,2899354.08,697278.75 -Asia,Laos,Beverages,Online,M,3/22/2013,693473613,4/21/2013,3107,47.45,31.79,147427.15,98771.53,48655.62 -Europe,Armenia,Meat,Online,C,8/2/2010,489148938,9/1/2010,8896,421.89,364.69,3753133.44,3244282.24,508851.20 -Europe,Greece,Household,Online,L,1/5/2012,876286971,2/15/2012,1643,668.27,502.54,1097967.61,825673.22,272294.39 -Middle East and North Africa,Israel,Personal Care,Offline,H,8/26/2015,262749040,8/30/2015,2135,81.73,56.67,174493.55,120990.45,53503.10 -Asia,Bhutan,Meat,Online,H,12/9/2016,726708972,1/26/2017,8189,421.89,364.69,3454857.21,2986446.41,468410.80 -Australia and Oceania,Vanuatu,Vegetables,Online,L,5/17/2012,366653096,5/31/2012,9654,154.06,90.93,1487295.24,877838.22,609457.02 -Sub-Saharan Africa,Burundi,Vegetables,Online,M,11/17/2010,951380240,12/20/2010,3410,154.06,90.93,525344.60,310071.30,215273.30 -Europe,Ukraine,Cosmetics,Online,M,11/13/2014,270001733,1/1/2015,8368,437.20,263.33,3658489.60,2203545.44,1454944.16 -Europe,Croatia,Beverages,Online,C,6/16/2016,681941401,7/28/2016,470,47.45,31.79,22301.50,14941.30,7360.20 -Sub-Saharan Africa,Madagascar,Fruits,Online,L,5/31/2016,566935575,6/7/2016,7690,9.33,6.92,71747.70,53214.80,18532.90 -Asia,Malaysia,Snacks,Offline,M,10/6/2012,175033080,11/5/2012,5033,152.58,97.44,767935.14,490415.52,277519.62 -Asia,Uzbekistan,Office Supplies,Offline,L,3/10/2012,276595246,3/15/2012,9535,651.21,524.96,6209287.35,5005493.60,1203793.75 -Europe,Italy,Office Supplies,Online,M,1/26/2011,812295901,2/13/2011,5263,651.21,524.96,3427318.23,2762864.48,664453.75 -Asia,Nepal,Vegetables,Offline,C,6/2/2014,443121373,6/19/2014,8316,154.06,90.93,1281162.96,756173.88,524989.08 -Australia and Oceania,Fiji,Personal Care,Offline,H,12/17/2016,600370490,1/25/2017,1824,81.73,56.67,149075.52,103366.08,45709.44 -Europe,Portugal,Office Supplies,Online,L,6/27/2014,535654580,7/29/2014,949,651.21,524.96,617998.29,498187.04,119811.25 -Central America and the Caribbean,Panama,Cosmetics,Offline,H,3/17/2015,470897471,4/22/2015,7881,437.20,263.33,3445573.20,2075303.73,1370269.47 -Europe,Belarus,Beverages,Offline,L,4/3/2013,248335492,4/4/2013,6846,47.45,31.79,324842.70,217634.34,107208.36 -Sub-Saharan Africa,Botswana,Clothes,Offline,C,3/8/2015,680517470,3/25/2015,9097,109.28,35.84,994120.16,326036.48,668083.68 -Sub-Saharan Africa,Tanzania,Personal Care,Online,M,6/21/2013,400304734,7/29/2013,7921,81.73,56.67,647383.33,448883.07,198500.26 -Europe,Romania,Office Supplies,Offline,C,1/6/2013,810871112,1/8/2013,3636,651.21,524.96,2367799.56,1908754.56,459045.00 -Sub-Saharan Africa,Mali,Cereal,Online,L,3/17/2012,235702931,4/3/2012,8590,205.70,117.11,1766963.00,1005974.90,760988.10 -Sub-Saharan Africa,Central African Republic,Office Supplies,Offline,C,4/18/2014,668599021,5/12/2014,2163,651.21,524.96,1408567.23,1135488.48,273078.75 -Sub-Saharan Africa,Niger,Baby Food,Online,M,1/3/2016,123670709,2/1/2016,5766,255.28,159.42,1471944.48,919215.72,552728.76 -Europe,Austria,Office Supplies,Online,L,5/12/2011,285341823,6/8/2011,7841,651.21,524.96,5106137.61,4116211.36,989926.25 -Asia,India,Fruits,Online,H,7/29/2010,658348691,8/22/2010,8862,9.33,6.92,82682.46,61325.04,21357.42 -Europe,Luxembourg,Baby Food,Offline,L,8/2/2013,817740142,8/19/2013,6335,255.28,159.42,1617198.80,1009925.70,607273.10 -Sub-Saharan Africa,Cape Verde,Beverages,Offline,H,10/23/2013,858877503,11/6/2013,9794,47.45,31.79,464725.30,311351.26,153374.04 -Europe,Sweden,Vegetables,Offline,M,2/5/2017,947434604,2/19/2017,5808,154.06,90.93,894780.48,528121.44,366659.04 -Europe,Iceland,Meat,Offline,H,3/20/2015,869397771,4/17/2015,2975,421.89,364.69,1255122.75,1084952.75,170170.00 -Middle East and North Africa,Qatar,Personal Care,Offline,L,5/6/2012,481065833,5/8/2012,6925,81.73,56.67,565980.25,392439.75,173540.50 -Sub-Saharan Africa,South Sudan,Meat,Online,C,9/30/2013,159050118,10/1/2013,5319,421.89,364.69,2244032.91,1939786.11,304246.80 -Europe,United Kingdom,Office Supplies,Online,M,5/20/2014,350274455,6/14/2014,2850,651.21,524.96,1855948.50,1496136.00,359812.50 -Middle East and North Africa,Tunisia ,Cereal,Online,L,4/9/2010,221975171,5/17/2010,6241,205.70,117.11,1283773.70,730883.51,552890.19 -North America,United States of America,Office Supplies,Online,C,6/9/2017,811701095,7/19/2017,9247,651.21,524.96,6021738.87,4854305.12,1167433.75 -Sub-Saharan Africa,Liberia,Cereal,Online,L,2/8/2015,977313554,3/29/2015,7653,205.70,117.11,1574222.10,896242.83,677979.27 -Sub-Saharan Africa,Eritrea,Snacks,Offline,L,1/25/2010,546986377,2/10/2010,4279,152.58,97.44,652889.82,416945.76,235944.06 -Asia,South Korea,Fruits,Offline,L,3/7/2010,769205892,3/17/2010,3972,9.33,6.92,37058.76,27486.24,9572.52 -Sub-Saharan Africa,Kenya,Clothes,Offline,M,1/3/2013,262770926,2/8/2013,8611,109.28,35.84,941010.08,308618.24,632391.84 -Sub-Saharan Africa,Rwanda,Snacks,Online,M,3/6/2017,866792809,3/18/2017,2109,152.58,97.44,321791.22,205500.96,116290.26 -Central America and the Caribbean,Cuba,Beverages,Offline,C,1/9/2011,890695369,2/23/2011,5408,47.45,31.79,256609.60,171920.32,84689.28 -Middle East and North Africa,Libya,Cereal,Offline,M,3/27/2014,964214932,3/31/2014,1480,205.70,117.11,304436.00,173322.80,131113.20 -Europe,Czech Republic,Snacks,Online,C,6/28/2013,887400329,8/17/2013,332,152.58,97.44,50656.56,32350.08,18306.48 -Europe,Montenegro,Beverages,Offline,M,9/4/2011,980612885,9/4/2011,3999,47.45,31.79,189752.55,127128.21,62624.34 -Europe,Montenegro,Clothes,Offline,M,7/14/2016,734526431,8/2/2016,1549,109.28,35.84,169274.72,55516.16,113758.56 -Asia,Philippines,Baby Food,Online,L,2/23/2014,160127294,3/23/2014,4079,255.28,159.42,1041287.12,650274.18,391012.94 -Central America and the Caribbean,El Salvador,Clothes,Offline,L,8/7/2010,238714301,9/13/2010,9721,109.28,35.84,1062310.88,348400.64,713910.24 -Australia and Oceania,Tonga,Household,Online,M,1/14/2013,671898782,2/6/2013,8635,668.27,502.54,5770511.45,4339432.90,1431078.55 -Sub-Saharan Africa,Democratic Republic of the Congo,Personal Care,Offline,H,9/30/2010,331604564,11/17/2010,8014,81.73,56.67,654984.22,454153.38,200830.84 -Middle East and North Africa,Afghanistan,Cereal,Online,M,10/13/2016,410067975,11/20/2016,7081,205.70,117.11,1456561.70,829255.91,627305.79 -Australia and Oceania,Tuvalu,Snacks,Offline,L,3/16/2011,369837844,3/23/2011,2091,152.58,97.44,319044.78,203747.04,115297.74 -Sub-Saharan Africa,Sudan,Fruits,Online,L,12/26/2012,193775498,1/31/2013,1331,9.33,6.92,12418.23,9210.52,3207.71 -Sub-Saharan Africa,Niger,Clothes,Online,M,9/2/2015,835054767,10/9/2015,117,109.28,35.84,12785.76,4193.28,8592.48 -Sub-Saharan Africa,Gabon,Household,Offline,C,11/11/2013,167161977,12/24/2013,5798,668.27,502.54,3874629.46,2913726.92,960902.54 -Australia and Oceania,East Timor,Vegetables,Offline,C,8/4/2014,633895957,8/22/2014,2755,154.06,90.93,424435.30,250512.15,173923.15 -North America,United States of America,Clothes,Offline,C,10/21/2010,699368035,12/7/2010,7398,109.28,35.84,808453.44,265144.32,543309.12 -Middle East and North Africa,Jordan,Vegetables,Offline,L,6/13/2015,698002040,7/29/2015,3170,154.06,90.93,488370.20,288248.10,200122.10 -Europe,Cyprus,Snacks,Offline,H,3/29/2012,584534299,5/18/2012,5544,152.58,97.44,845903.52,540207.36,305696.16 -Sub-Saharan Africa,Malawi,Vegetables,Online,L,6/22/2012,384013640,7/19/2012,7025,154.06,90.93,1082271.50,638783.25,443488.25 -Europe,Iceland,Personal Care,Online,M,5/10/2013,641801393,5/24/2013,2149,81.73,56.67,175637.77,121783.83,53853.94 -Middle East and North Africa,Israel,Personal Care,Online,M,12/10/2016,173571383,1/11/2017,2484,81.73,56.67,203017.32,140768.28,62249.04 -Middle East and North Africa,United Arab Emirates,Snacks,Offline,H,3/20/2011,115309941,4/6/2011,1629,152.58,97.44,248552.82,158729.76,89823.06 -Asia,China,Cosmetics,Offline,L,9/22/2011,773315894,11/4/2011,213,437.20,263.33,93123.60,56089.29,37034.31 -Sub-Saharan Africa,Kenya,Beverages,Online,M,5/11/2012,274200570,6/26/2012,897,47.45,31.79,42562.65,28515.63,14047.02 -Middle East and North Africa,Somalia,Clothes,Offline,M,11/15/2011,414887797,11/17/2011,3374,109.28,35.84,368710.72,120924.16,247786.56 -Australia and Oceania,Tonga,Beverages,Offline,L,1/27/2010,812613904,1/29/2010,9367,47.45,31.79,444464.15,297776.93,146687.22 -Asia,Bangladesh,Baby Food,Online,H,8/17/2011,254927718,9/7/2011,7632,255.28,159.42,1948296.96,1216693.44,731603.52 -Middle East and North Africa,Egypt,Beverages,Offline,M,9/6/2014,749690568,10/26/2014,8954,47.45,31.79,424867.30,284647.66,140219.64 -Sub-Saharan Africa,Eritrea,Cereal,Offline,C,9/3/2014,775076282,9/19/2014,1150,205.70,117.11,236555.00,134676.50,101878.50 -Sub-Saharan Africa,Swaziland,Office Supplies,Online,H,9/5/2015,229571187,9/18/2015,4071,651.21,524.96,2651075.91,2137112.16,513963.75 -Asia,Vietnam,Baby Food,Online,C,6/20/2011,881974112,7/11/2011,4594,255.28,159.42,1172756.32,732375.48,440380.84 -Australia and Oceania,Marshall Islands,Snacks,Online,L,1/12/2012,521396386,2/14/2012,1632,152.58,97.44,249010.56,159022.08,89988.48 -Asia,Taiwan,Household,Online,C,1/23/2017,607261836,2/22/2017,1127,668.27,502.54,753140.29,566362.58,186777.71 -Europe,Ireland,Vegetables,Online,M,3/4/2012,419306790,3/12/2012,1052,154.06,90.93,162071.12,95658.36,66412.76 -Sub-Saharan Africa,Rwanda,Meat,Offline,H,7/18/2010,207580077,7/18/2010,6413,421.89,364.69,2705580.57,2338756.97,366823.60 -Europe,Sweden,Snacks,Online,M,4/12/2011,742443025,4/15/2011,4245,152.58,97.44,647702.10,413632.80,234069.30 -Sub-Saharan Africa,Gabon,Snacks,Offline,M,10/3/2010,164569461,10/5/2010,8615,152.58,97.44,1314476.70,839445.60,475031.10 -Sub-Saharan Africa,South Africa,Baby Food,Online,L,12/29/2013,734945714,2/12/2014,5624,255.28,159.42,1435694.72,896578.08,539116.64 -Europe,United Kingdom,Clothes,Offline,C,9/19/2015,284870612,10/7/2015,8399,109.28,35.84,917842.72,301020.16,616822.56 -Europe,Albania,Fruits,Offline,M,9/17/2011,765955483,10/7/2011,2104,9.33,6.92,19630.32,14559.68,5070.64 -Asia,Malaysia,Snacks,Offline,H,3/11/2010,600124156,4/21/2010,8929,152.58,97.44,1362386.82,870041.76,492345.06 -Sub-Saharan Africa,Ghana,Household,Offline,L,11/10/2012,529612958,12/11/2012,3098,668.27,502.54,2070300.46,1556868.92,513431.54 -Central America and the Caribbean,Cuba,Clothes,Offline,H,2/16/2011,466970717,3/18/2011,5867,109.28,35.84,641145.76,210273.28,430872.48 -Central America and the Caribbean,Saint Lucia,Cosmetics,Online,C,8/13/2012,845058763,9/22/2012,522,437.20,263.33,228218.40,137458.26,90760.14 -Europe,Romania,Snacks,Offline,L,8/28/2014,367050921,8/31/2014,7379,152.58,97.44,1125887.82,719009.76,406878.06 -Europe,Portugal,Office Supplies,Online,L,8/19/2015,956433522,9/12/2015,8788,651.21,524.96,5722833.48,4613348.48,1109485.00 -Europe,Macedonia,Beverages,Online,C,3/20/2011,107005393,5/4/2011,4129,47.45,31.79,195921.05,131260.91,64660.14 -Asia,China,Beverages,Offline,C,4/16/2013,332877862,5/7/2013,4811,47.45,31.79,228281.95,152941.69,75340.26 -Europe,Germany,Baby Food,Online,L,11/13/2015,618474757,12/31/2015,9279,255.28,159.42,2368743.12,1479258.18,889484.94 -Europe,Ireland,Household,Online,M,1/10/2014,468532407,2/11/2014,8006,668.27,502.54,5350169.62,4023335.24,1326834.38 -Europe,Poland,Office Supplies,Offline,M,4/9/2015,358099639,4/29/2015,8496,651.21,524.96,5532680.16,4460060.16,1072620.00 -Sub-Saharan Africa,Namibia,Household,Online,H,1/7/2013,382537782,1/27/2013,285,668.27,502.54,190456.95,143223.90,47233.05 -Asia,Uzbekistan,Personal Care,Offline,H,2/12/2013,707520663,3/15/2013,9942,81.73,56.67,812559.66,563413.14,249146.52 -Sub-Saharan Africa,Zimbabwe,Meat,Online,M,11/28/2014,219034612,12/10/2014,6064,421.89,364.69,2558340.96,2211480.16,346860.80 -Asia,Mongolia,Meat,Offline,M,1/3/2015,573378455,1/17/2015,4281,421.89,364.69,1806111.09,1561237.89,244873.20 -Europe,Norway,Personal Care,Online,H,2/3/2011,347163522,3/22/2011,2256,81.73,56.67,184382.88,127847.52,56535.36 -Middle East and North Africa,Oman,Snacks,Offline,M,4/9/2013,887313640,4/21/2013,4679,152.58,97.44,713921.82,455921.76,258000.06 -Europe,Serbia,Cosmetics,Online,H,7/26/2017,461065137,8/19/2017,8275,437.20,263.33,3617830.00,2179055.75,1438774.25 -Sub-Saharan Africa,Democratic Republic of the Congo,Fruits,Offline,H,4/15/2017,105966842,5/19/2017,6798,9.33,6.92,63425.34,47042.16,16383.18 -Europe,Bulgaria,Baby Food,Online,M,5/16/2014,479880082,5/23/2014,6035,255.28,159.42,1540614.80,962099.70,578515.10 -Asia,Brunei,Baby Food,Online,H,8/12/2015,510978686,9/30/2015,8803,255.28,159.42,2247229.84,1403374.26,843855.58 -Europe,Serbia,Snacks,Offline,C,9/20/2013,547748982,10/14/2013,9951,152.58,97.44,1518323.58,969625.44,548698.14 -Sub-Saharan Africa,Ghana,Cereal,Offline,M,10/31/2013,108989799,12/9/2013,1358,205.70,117.11,279340.60,159035.38,120305.22 -Sub-Saharan Africa,Malawi,Cereal,Offline,M,7/30/2014,133812463,8/9/2014,6936,205.70,117.11,1426735.20,812274.96,614460.24 -Sub-Saharan Africa,Zimbabwe,Fruits,Offline,L,11/12/2011,731640803,12/30/2011,7627,9.33,6.92,71159.91,52778.84,18381.07 -Europe,Cyprus,Snacks,Offline,C,3/25/2010,732211148,4/14/2010,6405,152.58,97.44,977274.90,624103.20,353171.70 -Central America and the Caribbean,Nicaragua,Cereal,Online,M,7/4/2011,835572326,8/8/2011,3274,205.70,117.11,673461.80,383418.14,290043.66 -Europe,Estonia,Baby Food,Offline,C,1/1/2011,462085664,1/15/2011,271,255.28,159.42,69180.88,43202.82,25978.06 -Europe,Estonia,Clothes,Online,C,6/16/2016,902424991,7/4/2016,6463,109.28,35.84,706276.64,231633.92,474642.72 -Europe,Lithuania,Fruits,Offline,H,12/17/2013,367576634,1/5/2014,2949,9.33,6.92,27514.17,20407.08,7107.09 -Sub-Saharan Africa,Republic of the Congo,Meat,Offline,H,3/1/2017,738839423,3/31/2017,7859,421.89,364.69,3315633.51,2866098.71,449534.80 -Europe,Czech Republic,Baby Food,Online,C,7/2/2010,817824685,7/27/2010,1353,255.28,159.42,345393.84,215695.26,129698.58 -Sub-Saharan Africa,Cameroon,Snacks,Online,C,7/16/2013,376456248,8/1/2013,624,152.58,97.44,95209.92,60802.56,34407.36 -Asia,Vietnam,Office Supplies,Online,H,8/16/2016,606970441,9/16/2016,4897,651.21,524.96,3188975.37,2570729.12,618246.25 -Europe,Moldova ,Meat,Offline,L,12/16/2014,971916091,1/19/2015,424,421.89,364.69,178881.36,154628.56,24252.80 -Middle East and North Africa,Bahrain,Office Supplies,Offline,L,5/14/2012,554154527,5/15/2012,5494,651.21,524.96,3577747.74,2884130.24,693617.50 -Europe,Hungary,Household,Online,L,7/18/2017,306859576,7/19/2017,5423,668.27,502.54,3624028.21,2725274.42,898753.79 -Australia and Oceania,Marshall Islands,Personal Care,Offline,L,7/9/2017,803517568,7/21/2017,7559,81.73,56.67,617797.07,428368.53,189428.54 -Middle East and North Africa,Iraq,Office Supplies,Online,C,9/30/2011,887927329,10/2/2011,6283,651.21,524.96,4091552.43,3298323.68,793228.75 -Europe,Albania,Vegetables,Online,H,11/24/2015,824200189,11/26/2015,8006,154.06,90.93,1233404.36,727985.58,505418.78 -Sub-Saharan Africa,Lesotho,Office Supplies,Online,H,8/14/2012,946759974,9/14/2012,6170,651.21,524.96,4017965.70,3239003.20,778962.50 -Middle East and North Africa,Lebanon,Clothes,Offline,H,12/6/2015,310343015,12/28/2015,6249,109.28,35.84,682890.72,223964.16,458926.56 -Europe,Hungary,Vegetables,Online,C,5/25/2014,739998137,7/9/2014,748,154.06,90.93,115236.88,68015.64,47221.24 -Asia,Japan,Beverages,Online,H,10/18/2012,981086671,11/21/2012,4203,47.45,31.79,199432.35,133613.37,65818.98 -Europe,Georgia,Office Supplies,Offline,L,3/13/2013,749282443,3/25/2013,8180,651.21,524.96,5326897.80,4294172.80,1032725.00 -Europe,Estonia,Office Supplies,Online,C,2/23/2011,280571782,3/11/2011,6280,651.21,524.96,4089598.80,3296748.80,792850.00 -Europe,Luxembourg,Household,Online,C,8/15/2014,781253516,9/1/2014,9131,668.27,502.54,6101973.37,4588692.74,1513280.63 -Sub-Saharan Africa,Swaziland,Personal Care,Online,H,7/6/2017,377938973,7/11/2017,9396,81.73,56.67,767935.08,532471.32,235463.76 -Europe,Romania,Clothes,Offline,C,12/31/2010,867551982,1/3/2011,6765,109.28,35.84,739279.20,242457.60,496821.60 -Sub-Saharan Africa,Ethiopia,Personal Care,Offline,C,1/13/2010,967328870,1/15/2010,2964,81.73,56.67,242247.72,167969.88,74277.84 -Sub-Saharan Africa,Chad,Office Supplies,Offline,C,9/17/2011,364818465,10/16/2011,6746,651.21,524.96,4393062.66,3541380.16,851682.50 -Middle East and North Africa,Morocco,Office Supplies,Online,C,3/8/2014,167882096,3/31/2014,8898,651.21,524.96,5794466.58,4671094.08,1123372.50 -North America,Mexico,Clothes,Online,H,11/18/2012,654693591,12/1/2012,7237,109.28,35.84,790859.36,259374.08,531485.28 -Sub-Saharan Africa,Nigeria,Personal Care,Offline,H,11/18/2011,823739278,12/29/2011,1612,81.73,56.67,131748.76,91352.04,40396.72 -Central America and the Caribbean,Trinidad and Tobago,Beverages,Offline,L,7/12/2012,643817985,8/19/2012,8904,47.45,31.79,422494.80,283058.16,139436.64 -Europe,Moldova ,Personal Care,Offline,H,3/30/2017,604041039,5/15/2017,8022,81.73,56.67,655638.06,454606.74,201031.32 -Australia and Oceania,Solomon Islands,Personal Care,Online,H,7/26/2010,363832271,9/12/2010,4909,81.73,56.67,401212.57,278193.03,123019.54 -Asia,India,Personal Care,Online,L,12/24/2015,102928006,1/31/2016,7539,81.73,56.67,616162.47,427235.13,188927.34 -Sub-Saharan Africa,Burkina Faso,Office Supplies,Offline,M,5/15/2016,971377074,5/15/2016,917,651.21,524.96,597159.57,481388.32,115771.25 -Australia and Oceania,Kiribati,Meat,Online,L,11/3/2010,139540803,12/4/2010,2079,421.89,364.69,877109.31,758190.51,118918.80 -Middle East and North Africa,Israel,Meat,Offline,M,12/1/2010,248093020,12/16/2010,5093,421.89,364.69,2148685.77,1857366.17,291319.60 -Sub-Saharan Africa,Comoros,Snacks,Offline,L,1/16/2014,858020055,1/17/2014,6056,152.58,97.44,924024.48,590096.64,333927.84 -Middle East and North Africa,Iran,Baby Food,Offline,H,12/11/2014,700620734,1/5/2015,8099,255.28,159.42,2067512.72,1291142.58,776370.14 -Asia,Vietnam,Cosmetics,Offline,L,12/24/2016,827506387,1/30/2017,6384,437.20,263.33,2791084.80,1681098.72,1109986.08 -Central America and the Caribbean,Belize,Household,Online,M,3/21/2013,560600841,4/14/2013,3101,668.27,502.54,2072305.27,1558376.54,513928.73 -Europe,Belarus,Personal Care,Offline,H,12/8/2012,642140424,1/16/2013,2476,81.73,56.67,202363.48,140314.92,62048.56 -North America,United States of America,Baby Food,Offline,C,2/13/2015,984673964,3/5/2015,5763,255.28,159.42,1471178.64,918737.46,552441.18 -Europe,Poland,Beverages,Online,L,3/28/2012,221062791,4/18/2012,6247,47.45,31.79,296420.15,198592.13,97828.02 -North America,Canada,Vegetables,Offline,L,10/7/2016,654480731,11/8/2016,4247,154.06,90.93,654292.82,386179.71,268113.11 -Middle East and North Africa,Israel,Beverages,Offline,C,12/15/2011,608414113,12/23/2011,2111,47.45,31.79,100166.95,67108.69,33058.26 -Middle East and North Africa,Lebanon,Household,Online,L,3/8/2016,276661765,4/20/2016,9219,668.27,502.54,6160781.13,4632916.26,1527864.87 -Europe,Andorra,Baby Food,Online,L,1/18/2011,373335015,2/28/2011,6982,255.28,159.42,1782364.96,1113070.44,669294.52 -Europe,Slovakia,Clothes,Online,L,4/11/2013,782857692,5/28/2013,3843,109.28,35.84,419963.04,137733.12,282229.92 -Sub-Saharan Africa,Liberia,Fruits,Online,H,5/18/2010,109966123,6/5/2010,274,9.33,6.92,2556.42,1896.08,660.34 -Central America and the Caribbean,Antigua and Barbuda ,Cereal,Offline,M,6/5/2017,629709136,6/6/2017,3782,205.70,117.11,777957.40,442910.02,335047.38 -Asia,China,Personal Care,Online,L,9/11/2012,637448060,9/15/2012,3901,81.73,56.67,318828.73,221069.67,97759.06 -Sub-Saharan Africa,Niger,Baby Food,Online,H,3/8/2017,298856723,4/3/2017,7200,255.28,159.42,1838016.00,1147824.00,690192.00 -Europe,United Kingdom,Household,Offline,L,1/28/2015,299921452,2/23/2015,2278,668.27,502.54,1522319.06,1144786.12,377532.94 -Asia,Bangladesh,Personal Care,Offline,M,7/26/2010,496941077,7/29/2010,4763,81.73,56.67,389279.99,269919.21,119360.78 -Asia,Myanmar,Snacks,Online,L,6/24/2016,366526925,7/14/2016,2317,152.58,97.44,353527.86,225768.48,127759.38 -Australia and Oceania,Tonga,Meat,Offline,M,8/18/2012,355602824,9/15/2012,9633,421.89,364.69,4064066.37,3513058.77,551007.60 -Sub-Saharan Africa,Guinea-Bissau,Vegetables,Online,C,3/11/2010,531405103,4/19/2010,3434,154.06,90.93,529042.04,312253.62,216788.42 -Australia and Oceania,Nauru,Vegetables,Offline,M,1/14/2010,131482589,1/20/2010,7475,154.06,90.93,1151598.50,679701.75,471896.75 -Sub-Saharan Africa,Swaziland,Cereal,Online,L,2/10/2014,713696610,3/28/2014,7542,205.70,117.11,1551389.40,883243.62,668145.78 -Europe,Finland,Vegetables,Online,C,1/21/2014,306220996,1/30/2014,6452,154.06,90.93,993995.12,586680.36,407314.76 -Australia and Oceania,Papua New Guinea,Household,Offline,L,2/28/2010,157542073,3/15/2010,9055,668.27,502.54,6051184.85,4550499.70,1500685.15 -Sub-Saharan Africa,Mauritius ,Personal Care,Online,L,2/18/2015,686458671,3/8/2015,7230,81.73,56.67,590907.90,409724.10,181183.80 -Sub-Saharan Africa,Mozambique,Office Supplies,Online,M,6/14/2012,132082116,7/22/2012,4888,651.21,524.96,3183114.48,2566004.48,617110.00 -Europe,Bulgaria,Clothes,Online,L,3/5/2013,403836238,4/3/2013,2972,109.28,35.84,324780.16,106516.48,218263.68 -Europe,Spain,Household,Online,C,4/10/2014,331457364,4/23/2014,4455,668.27,502.54,2977142.85,2238815.70,738327.15 -Australia and Oceania,Vanuatu,Meat,Online,H,7/26/2017,614994323,9/12/2017,9341,421.89,364.69,3940874.49,3406569.29,534305.20 -Europe,Belgium,Fruits,Offline,L,10/19/2010,674808442,10/24/2010,9669,9.33,6.92,90211.77,66909.48,23302.29 -Europe,Belgium,Baby Food,Offline,L,11/8/2016,901573550,12/23/2016,4503,255.28,159.42,1149525.84,717868.26,431657.58 -Sub-Saharan Africa,Guinea-Bissau,Clothes,Online,L,3/31/2014,406275975,5/10/2014,4944,109.28,35.84,540280.32,177192.96,363087.36 -Sub-Saharan Africa,Togo,Vegetables,Online,C,8/18/2016,170214545,8/19/2016,9121,154.06,90.93,1405181.26,829372.53,575808.73 -Sub-Saharan Africa,Cote d'Ivoire,Personal Care,Offline,C,1/3/2016,795000588,1/8/2016,7196,81.73,56.67,588129.08,407797.32,180331.76 -Sub-Saharan Africa,Republic of the Congo,Fruits,Offline,C,10/21/2016,252557933,11/4/2016,6360,9.33,6.92,59338.80,44011.20,15327.60 -Middle East and North Africa,Libya,Baby Food,Offline,M,12/10/2016,635122907,12/13/2016,5837,255.28,159.42,1490069.36,930534.54,559534.82 -Australia and Oceania,East Timor,Vegetables,Online,C,8/12/2011,505244338,9/19/2011,1882,154.06,90.93,289940.92,171130.26,118810.66 -Europe,Switzerland,Clothes,Offline,H,3/23/2012,745783555,5/9/2012,2782,109.28,35.84,304016.96,99706.88,204310.08 -Australia and Oceania,Palau,Snacks,Offline,M,4/27/2012,509914386,6/11/2012,3853,152.58,97.44,587890.74,375436.32,212454.42 -Middle East and North Africa,Jordan,Household,Online,M,1/29/2014,371123158,2/9/2014,2445,668.27,502.54,1633920.15,1228710.30,405209.85 -Europe,Slovenia,Household,Online,H,12/13/2016,973208701,12/28/2016,2936,668.27,502.54,1962040.72,1475457.44,486583.28 -Asia,South Korea,Baby Food,Online,L,11/21/2013,780282342,12/27/2013,1739,255.28,159.42,443931.92,277231.38,166700.54 -Europe,Norway,Clothes,Online,H,4/7/2010,126767909,5/22/2010,2296,109.28,35.84,250906.88,82288.64,168618.24 -Middle East and North Africa,Afghanistan,Baby Food,Online,M,7/8/2012,767401731,7/30/2012,80,255.28,159.42,20422.40,12753.60,7668.80 -Asia,Bangladesh,Personal Care,Online,L,10/15/2016,927232635,11/24/2016,7597,81.73,56.67,620902.81,430521.99,190380.82 -Sub-Saharan Africa,Guinea,Meat,Offline,M,9/18/2012,251621949,10/20/2012,9381,421.89,364.69,3957750.09,3421156.89,536593.20 -Central America and the Caribbean,Cuba,Office Supplies,Offline,H,7/2/2017,256243503,7/23/2017,7002,651.21,524.96,4559772.42,3675769.92,884002.50 -Europe,Russia,Cosmetics,Offline,C,7/21/2011,277083623,9/2/2011,4056,437.20,263.33,1773283.20,1068066.48,705216.72 -Sub-Saharan Africa,Seychelles ,Vegetables,Offline,L,6/1/2010,620441138,6/22/2010,1175,154.06,90.93,181020.50,106842.75,74177.75 -Asia,South Korea,Office Supplies,Offline,M,7/26/2015,312927377,9/7/2015,1020,651.21,524.96,664234.20,535459.20,128775.00 -Sub-Saharan Africa,Ghana,Baby Food,Offline,L,8/6/2010,251466166,9/8/2010,3282,255.28,159.42,837828.96,523216.44,314612.52 -Central America and the Caribbean,Costa Rica,Office Supplies,Online,H,6/20/2010,953293836,7/22/2010,9685,651.21,524.96,6306968.85,5084237.60,1222731.25 -Europe,Romania,Cereal,Online,C,4/8/2012,305959212,4/23/2012,8985,205.70,117.11,1848214.50,1052233.35,795981.15 -Europe,Czech Republic,Cereal,Online,L,2/27/2014,317323625,3/24/2014,1967,205.70,117.11,404611.90,230355.37,174256.53 -Europe,Liechtenstein,Household,Offline,L,7/25/2011,365560901,9/1/2011,6449,668.27,502.54,4309673.23,3240880.46,1068792.77 -Sub-Saharan Africa,Seychelles ,Baby Food,Online,M,2/18/2016,349157369,4/5/2016,2279,255.28,159.42,581783.12,363318.18,218464.94 -Middle East and North Africa,Somalia,Baby Food,Online,L,1/24/2014,236911857,2/25/2014,6338,255.28,159.42,1617964.64,1010403.96,607560.68 -Australia and Oceania,Solomon Islands,Personal Care,Offline,H,5/10/2015,517935693,6/16/2015,7536,81.73,56.67,615917.28,427065.12,188852.16 -Sub-Saharan Africa,Uganda,Clothes,Offline,C,2/13/2012,851652705,3/27/2012,1816,109.28,35.84,198452.48,65085.44,133367.04 -Sub-Saharan Africa,Equatorial Guinea,Cereal,Offline,M,9/7/2012,517799222,10/23/2012,7151,205.70,117.11,1470960.70,837453.61,633507.09 -Central America and the Caribbean,Costa Rica,Office Supplies,Offline,C,2/4/2015,666424071,3/4/2015,8547,651.21,524.96,5565891.87,4486833.12,1079058.75 -Europe,Moldova ,Fruits,Offline,C,11/16/2010,267888581,12/22/2010,3039,9.33,6.92,28353.87,21029.88,7323.99 -Sub-Saharan Africa,Burkina Faso,Vegetables,Online,L,7/20/2011,162866580,7/26/2011,4695,154.06,90.93,723311.70,426916.35,296395.35 -Central America and the Caribbean,Guatemala,Beverages,Offline,H,7/26/2014,812344396,8/30/2014,9614,47.45,31.79,456184.30,305629.06,150555.24 -Sub-Saharan Africa,Swaziland,Meat,Online,M,8/24/2014,947620856,9/3/2014,924,421.89,364.69,389826.36,336973.56,52852.80 -Asia,Maldives,Vegetables,Online,H,2/25/2015,720307290,3/28/2015,3789,154.06,90.93,583733.34,344533.77,239199.57 -Asia,Thailand,Household,Online,H,9/21/2016,352327525,10/27/2016,399,668.27,502.54,266639.73,200513.46,66126.27 -Sub-Saharan Africa,Sudan,Household,Online,C,6/28/2013,585917890,7/23/2013,4979,668.27,502.54,3327316.33,2502146.66,825169.67 -Central America and the Caribbean,Costa Rica,Meat,Offline,L,1/5/2012,433627212,2/13/2012,8783,421.89,364.69,3705459.87,3203072.27,502387.60 -Europe,Denmark,Beverages,Online,C,5/1/2012,328316819,5/30/2012,5098,47.45,31.79,241900.10,162065.42,79834.68 -Sub-Saharan Africa,Angola,Cereal,Offline,C,10/13/2011,773160541,11/21/2011,4240,205.70,117.11,872168.00,496546.40,375621.60 -Australia and Oceania,Papua New Guinea,Household,Online,M,4/27/2016,991644704,5/18/2016,8559,668.27,502.54,5719722.93,4301239.86,1418483.07 -Asia,North Korea,Meat,Online,M,1/19/2014,277568137,2/7/2014,7435,421.89,364.69,3136752.15,2711470.15,425282.00 -Central America and the Caribbean,El Salvador,Fruits,Online,C,11/6/2016,245042169,12/15/2016,2278,9.33,6.92,21253.74,15763.76,5489.98 -Sub-Saharan Africa,Burkina Faso,Household,Online,M,2/28/2011,778490626,3/24/2011,1531,668.27,502.54,1023121.37,769388.74,253732.63 -Middle East and North Africa,Yemen,Baby Food,Online,C,10/11/2014,482649838,11/13/2014,5668,255.28,159.42,1446927.04,903592.56,543334.48 -Sub-Saharan Africa,Republic of the Congo,Beverages,Online,L,6/25/2012,732568633,7/5/2012,2193,47.45,31.79,104057.85,69715.47,34342.38 -Europe,Andorra,Household,Online,M,11/6/2012,723608338,11/23/2012,642,668.27,502.54,429029.34,322630.68,106398.66 -Central America and the Caribbean,Dominican Republic,Household,Offline,H,2/24/2014,621442782,4/14/2014,7584,668.27,502.54,5068159.68,3811263.36,1256896.32 -Middle East and North Africa,Israel,Baby Food,Offline,M,9/19/2015,212058293,10/6/2015,1616,255.28,159.42,412532.48,257622.72,154909.76 -Australia and Oceania,Solomon Islands,Snacks,Offline,L,3/4/2014,251753699,3/24/2014,8369,152.58,97.44,1276942.02,815475.36,461466.66 -Sub-Saharan Africa,Liberia,Fruits,Online,M,10/8/2014,217140328,10/30/2014,5503,9.33,6.92,51342.99,38080.76,13262.23 -Sub-Saharan Africa,Mali,Vegetables,Online,C,6/19/2012,555142009,7/10/2012,7712,154.06,90.93,1188110.72,701252.16,486858.56 -Asia,Uzbekistan,Clothes,Online,C,11/11/2010,432995069,12/13/2010,1718,109.28,35.84,187743.04,61573.12,126169.92 -Middle East and North Africa,Tunisia ,Personal Care,Offline,H,11/1/2010,888248336,11/7/2010,1276,81.73,56.67,104287.48,72310.92,31976.56 -Europe,Vatican City,Vegetables,Online,C,4/28/2014,778763139,5/9/2014,2173,154.06,90.93,334772.38,197590.89,137181.49 -Sub-Saharan Africa,Djibouti,Snacks,Offline,H,12/22/2012,832713305,2/9/2013,7227,152.58,97.44,1102695.66,704198.88,398496.78 -Europe,Ukraine,Household,Offline,M,8/25/2014,498585164,9/29/2014,1285,668.27,502.54,858726.95,645763.90,212963.05 -Australia and Oceania,East Timor,Fruits,Offline,M,11/26/2016,195177543,12/23/2016,6227,9.33,6.92,58097.91,43090.84,15007.07 -Sub-Saharan Africa,Uganda,Cereal,Online,C,10/20/2010,861601769,12/2/2010,5965,205.70,117.11,1227000.50,698561.15,528439.35 -Sub-Saharan Africa,Guinea,Meat,Online,H,12/18/2014,807281672,1/26/2015,1441,421.89,364.69,607943.49,525518.29,82425.20 -Sub-Saharan Africa,Equatorial Guinea,Clothes,Offline,H,3/20/2011,661953580,4/24/2011,5629,109.28,35.84,615137.12,201743.36,413393.76 -Europe,Malta,Cosmetics,Online,M,7/12/2016,225666320,8/21/2016,8534,437.20,263.33,3731064.80,2247258.22,1483806.58 -Europe,Cyprus,Household,Offline,L,1/26/2011,718781220,2/19/2011,2191,668.27,502.54,1464179.57,1101065.14,363114.43 -Europe,Czech Republic,Office Supplies,Online,L,2/24/2010,731972110,4/15/2010,5668,651.21,524.96,3691058.28,2975473.28,715585.00 -Middle East and North Africa,Libya,Vegetables,Online,C,1/2/2015,276225316,2/9/2015,64,154.06,90.93,9859.84,5819.52,4040.32 -Asia,Vietnam,Office Supplies,Offline,C,7/26/2016,332839667,7/27/2016,3509,651.21,524.96,2285095.89,1842084.64,443011.25 -Middle East and North Africa,Jordan,Vegetables,Online,C,6/1/2014,603426492,6/15/2014,6163,154.06,90.93,949471.78,560401.59,389070.19 -Sub-Saharan Africa,Mali,Beverages,Offline,H,12/21/2012,859909617,1/29/2013,5220,47.45,31.79,247689.00,165943.80,81745.20 -Europe,Czech Republic,Household,Online,L,2/27/2010,494525372,3/2/2010,9902,668.27,502.54,6617209.54,4976151.08,1641058.46 -Europe,Slovakia,Vegetables,Online,M,4/24/2016,769822585,5/15/2016,6465,154.06,90.93,995997.90,587862.45,408135.45 -Sub-Saharan Africa,Zimbabwe,Vegetables,Offline,C,7/22/2012,768662583,8/10/2012,3195,154.06,90.93,492221.70,290521.35,201700.35 -Central America and the Caribbean,Honduras,Cereal,Online,M,2/22/2015,544219195,3/9/2015,5409,205.70,117.11,1112631.30,633447.99,479183.31 -Europe,Switzerland,Beverages,Offline,L,2/10/2011,669978749,3/20/2011,455,47.45,31.79,21589.75,14464.45,7125.30 -Sub-Saharan Africa,South Africa,Cosmetics,Offline,L,1/21/2015,889740073,1/26/2015,2715,437.20,263.33,1186998.00,714940.95,472057.05 -Sub-Saharan Africa,Uganda,Beverages,Online,M,5/10/2012,567614495,6/28/2012,8598,47.45,31.79,407975.10,273330.42,134644.68 -Middle East and North Africa,Iran,Vegetables,Offline,M,12/16/2015,938025844,1/21/2016,1547,154.06,90.93,238330.82,140668.71,97662.11 -Middle East and North Africa,Algeria,Vegetables,Online,C,2/25/2017,155710446,2/25/2017,7036,154.06,90.93,1083966.16,639783.48,444182.68 -Sub-Saharan Africa,Central African Republic,Baby Food,Online,L,1/31/2012,945717132,2/13/2012,7570,255.28,159.42,1932469.60,1206809.40,725660.20 -Central America and the Caribbean,The Bahamas,Cosmetics,Offline,C,2/7/2013,253407227,2/15/2013,7685,437.20,263.33,3359882.00,2023691.05,1336190.95 -Sub-Saharan Africa,South Africa,Household,Offline,H,9/14/2014,494454562,9/22/2014,8948,668.27,502.54,5979679.96,4496727.92,1482952.04 -Sub-Saharan Africa,Benin,Cereal,Online,M,6/5/2012,104845464,7/24/2012,4957,205.70,117.11,1019654.90,580514.27,439140.63 -Europe,Hungary,Cosmetics,Online,M,4/5/2014,290878760,4/7/2014,6344,437.20,263.33,2773596.80,1670565.52,1103031.28 -Europe,Austria,Office Supplies,Offline,C,2/2/2014,979165780,2/10/2014,5768,651.21,524.96,3756179.28,3027969.28,728210.00 -Asia,Tajikistan,Office Supplies,Offline,C,9/1/2010,366630351,10/12/2010,2923,651.21,524.96,1903486.83,1534458.08,369028.75 -Europe,Portugal,Office Supplies,Online,C,5/17/2011,770508801,6/25/2011,9532,651.21,524.96,6207333.72,5003918.72,1203415.00 -Europe,Belgium,Beverages,Offline,M,4/21/2013,978349959,5/21/2013,4349,47.45,31.79,206360.05,138254.71,68105.34 -Europe,Slovenia,Beverages,Offline,L,8/10/2014,298015153,8/14/2014,8161,47.45,31.79,387239.45,259438.19,127801.26 -Europe,Czech Republic,Snacks,Online,M,9/19/2010,807678210,10/30/2010,8786,152.58,97.44,1340567.88,856107.84,484460.04 -Australia and Oceania,Marshall Islands,Personal Care,Offline,C,4/13/2013,605825459,5/14/2013,6071,81.73,56.67,496182.83,344043.57,152139.26 -Sub-Saharan Africa,Sudan,Fruits,Online,C,1/28/2016,561255729,2/1/2016,6897,9.33,6.92,64349.01,47727.24,16621.77 -Central America and the Caribbean,Dominican Republic,Clothes,Online,H,12/9/2013,263080346,12/14/2013,175,109.28,35.84,19124.00,6272.00,12852.00 -Sub-Saharan Africa,Tanzania,Cereal,Offline,C,2/21/2014,270723140,3/9/2014,1848,205.70,117.11,380133.60,216419.28,163714.32 -Europe,Switzerland,Clothes,Offline,H,6/9/2017,763920438,7/10/2017,9888,109.28,35.84,1080560.64,354385.92,726174.72 -North America,Greenland,Household,Online,L,4/17/2014,192721068,5/20/2014,9302,668.27,502.54,6216247.54,4674627.08,1541620.46 -Australia and Oceania,Tonga,Fruits,Offline,L,5/20/2011,227486360,6/8/2011,7124,9.33,6.92,66466.92,49298.08,17168.84 -Middle East and North Africa,Saudi Arabia,Vegetables,Online,M,8/28/2012,808890140,9/22/2012,7422,154.06,90.93,1143433.32,674882.46,468550.86 -Central America and the Caribbean,Belize,Cosmetics,Offline,C,7/25/2015,597918736,9/11/2015,6296,437.20,263.33,2752611.20,1657925.68,1094685.52 -Sub-Saharan Africa,Angola,Cosmetics,Online,H,10/27/2014,125870978,11/20/2014,6874,437.20,263.33,3005312.80,1810130.42,1195182.38 -Asia,Malaysia,Household,Online,H,10/18/2013,444358193,10/21/2013,4319,668.27,502.54,2886258.13,2170470.26,715787.87 -Sub-Saharan Africa,Ethiopia,Beverages,Online,C,2/15/2013,875304210,3/12/2013,822,47.45,31.79,39003.90,26131.38,12872.52 -North America,Greenland,Baby Food,Offline,C,7/8/2014,360945355,8/16/2014,607,255.28,159.42,154954.96,96767.94,58187.02 -Sub-Saharan Africa,Benin,Cereal,Offline,C,12/12/2016,613830459,1/16/2017,4928,205.70,117.11,1013689.60,577118.08,436571.52 -Middle East and North Africa,Yemen,Cereal,Offline,H,11/24/2012,266820847,12/10/2012,7073,205.70,117.11,1454916.10,828319.03,626597.07 -Sub-Saharan Africa,Rwanda,Baby Food,Offline,M,11/3/2014,723090350,11/27/2014,7358,255.28,159.42,1878350.24,1173012.36,705337.88 -Sub-Saharan Africa,Mauritania,Meat,Offline,M,8/3/2013,306125295,8/15/2013,8132,421.89,364.69,3430809.48,2965659.08,465150.40 -Australia and Oceania,New Zealand,Personal Care,Online,L,5/23/2012,109724509,6/16/2012,8775,81.73,56.67,717180.75,497279.25,219901.50 -Australia and Oceania,Samoa ,Clothes,Offline,M,7/22/2015,847999322,8/6/2015,699,109.28,35.84,76386.72,25052.16,51334.56 -Australia and Oceania,Fiji,Clothes,Online,H,2/1/2017,605373561,3/2/2017,2344,109.28,35.84,256152.32,84008.96,172143.36 -Sub-Saharan Africa,Malawi,Beverages,Online,H,1/28/2012,686583554,2/22/2012,4186,47.45,31.79,198625.70,133072.94,65552.76 -Australia and Oceania,Marshall Islands,Beverages,Offline,M,8/3/2015,666678130,9/21/2015,3729,47.45,31.79,176941.05,118544.91,58396.14 -Central America and the Caribbean,Grenada,Baby Food,Online,M,6/23/2013,641018617,6/30/2013,508,255.28,159.42,129682.24,80985.36,48696.88 -Europe,Luxembourg,Meat,Online,C,8/3/2011,775278842,9/22/2011,1093,421.89,364.69,461125.77,398606.17,62519.60 -Sub-Saharan Africa,Zimbabwe,Meat,Offline,M,10/30/2016,855445134,12/6/2016,4080,421.89,364.69,1721311.20,1487935.20,233376.00 -Asia,China,Vegetables,Online,H,9/5/2010,737816321,9/21/2010,5100,154.06,90.93,785706.00,463743.00,321963.00 -North America,United States of America,Beverages,Online,L,7/13/2013,799003732,7/14/2013,1815,47.45,31.79,86121.75,57698.85,28422.90 -Sub-Saharan Africa,Central African Republic,Vegetables,Online,L,10/9/2012,585931193,11/21/2012,8916,154.06,90.93,1373598.96,810731.88,562867.08 -Central America and the Caribbean,Antigua and Barbuda ,Vegetables,Online,M,1/3/2012,165835034,1/5/2012,3127,154.06,90.93,481745.62,284338.11,197407.51 -Central America and the Caribbean,Guatemala,Baby Food,Offline,H,2/8/2012,576264083,3/14/2012,8203,255.28,159.42,2094061.84,1307722.26,786339.58 -Middle East and North Africa,Qatar,Clothes,Offline,L,1/3/2015,675079667,1/7/2015,9930,109.28,35.84,1085150.40,355891.20,729259.20 -Middle East and North Africa,Israel,Personal Care,Online,L,5/13/2012,290455615,5/28/2012,1126,81.73,56.67,92027.98,63810.42,28217.56 -Asia,Thailand,Snacks,Offline,L,1/13/2012,670878255,2/15/2012,6639,152.58,97.44,1012978.62,646904.16,366074.46 -Asia,Singapore,Cereal,Online,M,7/30/2011,435146415,8/12/2011,8349,205.70,117.11,1717389.30,977751.39,739637.91 -Asia,North Korea,Snacks,Online,C,3/13/2017,522371423,4/8/2017,167,152.58,97.44,25480.86,16272.48,9208.38 -Europe,Austria,Office Supplies,Online,L,3/23/2017,141977107,4/18/2017,3036,651.21,524.96,1977073.56,1593778.56,383295.00 -Asia,Japan,Baby Food,Offline,L,3/16/2016,823699796,4/19/2016,9929,255.28,159.42,2534675.12,1582881.18,951793.94 -Sub-Saharan Africa,Zimbabwe,Beverages,Offline,L,12/18/2015,567588317,12/26/2015,851,47.45,31.79,40379.95,27053.29,13326.66 -Europe,Lithuania,Fruits,Offline,H,10/25/2011,594003999,11/16/2011,7838,9.33,6.92,73128.54,54238.96,18889.58 -Europe,Luxembourg,Baby Food,Offline,H,6/30/2011,393620669,8/2/2011,9958,255.28,159.42,2542078.24,1587504.36,954573.88 -Sub-Saharan Africa,Central African Republic,Cosmetics,Offline,H,3/27/2016,877424657,4/10/2016,8309,437.20,263.33,3632694.80,2188008.97,1444685.83 -Europe,Norway,Household,Offline,M,12/23/2016,326714789,1/21/2017,1021,668.27,502.54,682303.67,513093.34,169210.33 -Sub-Saharan Africa,Democratic Republic of the Congo,Fruits,Offline,M,4/18/2013,243102395,4/18/2013,8256,9.33,6.92,77028.48,57131.52,19896.96 -Australia and Oceania,New Zealand,Household,Offline,L,3/8/2017,398511302,4/20/2017,7205,668.27,502.54,4814885.35,3620800.70,1194084.65 -Europe,Ukraine,Personal Care,Offline,M,6/3/2011,185177838,7/4/2011,7092,81.73,56.67,579629.16,401903.64,177725.52 -Asia,Taiwan,Personal Care,Offline,H,11/30/2013,865650832,12/31/2013,4173,81.73,56.67,341059.29,236483.91,104575.38 -Europe,Italy,Cereal,Offline,C,5/11/2013,622791612,5/31/2013,6733,205.70,117.11,1384978.10,788501.63,596476.47 -Europe,Finland,Personal Care,Online,L,11/13/2010,409774005,11/27/2010,89,81.73,56.67,7273.97,5043.63,2230.34 -Sub-Saharan Africa,Sudan,Office Supplies,Online,H,3/9/2016,800084340,4/21/2016,1591,651.21,524.96,1036075.11,835211.36,200863.75 -Europe,Croatia,Snacks,Offline,M,8/19/2013,637521445,9/12/2013,5618,152.58,97.44,857194.44,547417.92,309776.52 -Sub-Saharan Africa,Mauritania,Beverages,Online,L,4/19/2011,186196649,5/28/2011,8581,47.45,31.79,407168.45,272789.99,134378.46 -Australia and Oceania,New Zealand,Baby Food,Offline,L,7/20/2014,680533778,7/25/2014,3923,255.28,159.42,1001463.44,625404.66,376058.78 -Middle East and North Africa,Pakistan,Beverages,Online,L,9/8/2014,275269162,9/15/2014,7117,47.45,31.79,337701.65,226249.43,111452.22 -Europe,Poland,Household,Online,C,6/4/2015,795451629,6/19/2015,668,668.27,502.54,446404.36,335696.72,110707.64 -Europe,Lithuania,Cereal,Offline,M,12/19/2013,986442506,1/1/2014,9113,205.70,117.11,1874544.10,1067223.43,807320.67 -Middle East and North Africa,Pakistan,Cereal,Offline,M,5/18/2012,563915622,6/10/2012,4019,205.70,117.11,826708.30,470665.09,356043.21 -Australia and Oceania,East Timor,Cosmetics,Offline,C,10/12/2013,663857305,11/13/2013,8984,437.20,263.33,3927804.80,2365756.72,1562048.08 -Australia and Oceania,Marshall Islands,Fruits,Online,L,1/2/2011,692566382,1/14/2011,4638,9.33,6.92,43272.54,32094.96,11177.58 -Central America and the Caribbean,Cuba,Household,Offline,L,2/2/2013,576654183,2/3/2013,3642,668.27,502.54,2433839.34,1830250.68,603588.66 -North America,Greenland,Baby Food,Offline,H,3/19/2011,313044536,4/14/2011,5689,255.28,159.42,1452287.92,906940.38,545347.54 -Europe,Luxembourg,Personal Care,Offline,C,10/3/2012,418973767,10/27/2012,2503,81.73,56.67,204570.19,141845.01,62725.18 -Middle East and North Africa,Israel,Beverages,Online,C,10/23/2014,581990706,11/15/2014,2838,47.45,31.79,134663.10,90220.02,44443.08 -Sub-Saharan Africa,Djibouti,Baby Food,Online,H,7/12/2015,109956681,7/24/2015,7480,255.28,159.42,1909494.40,1192461.60,717032.80 -Europe,Bulgaria,Cereal,Online,L,5/6/2010,181045520,5/27/2010,4247,205.70,117.11,873607.90,497366.17,376241.73 -Asia,Mongolia,Vegetables,Online,C,11/27/2010,693743550,1/9/2011,2988,154.06,90.93,460331.28,271698.84,188632.44 -Central America and the Caribbean,Dominican Republic,Clothes,Offline,L,12/26/2010,716849601,12/31/2010,582,109.28,35.84,63600.96,20858.88,42742.08 -Middle East and North Africa,Yemen,Cosmetics,Online,L,12/30/2012,739474999,1/1/2013,5940,437.20,263.33,2596968.00,1564180.20,1032787.80 -Australia and Oceania,Federated States of Micronesia,Personal Care,Online,M,8/21/2016,421043574,9/7/2016,5005,81.73,56.67,409058.65,283633.35,125425.30 -Europe,Finland,Personal Care,Online,M,2/3/2015,841291654,3/20/2015,5751,81.73,56.67,470029.23,325909.17,144120.06 -Central America and the Caribbean,The Bahamas,Cereal,Offline,L,12/19/2013,450268065,1/4/2014,3181,205.70,117.11,654331.70,372526.91,281804.79 -Central America and the Caribbean,Grenada,Meat,Online,L,5/12/2012,918334138,6/12/2012,4334,421.89,364.69,1828471.26,1580566.46,247904.80 -Sub-Saharan Africa,Sao Tome and Principe,Meat,Offline,M,3/28/2014,386163699,4/19/2014,3275,421.89,364.69,1381689.75,1194359.75,187330.00 -Central America and the Caribbean,El Salvador,Personal Care,Offline,C,1/11/2017,214743077,2/18/2017,6103,81.73,56.67,498798.19,345857.01,152941.18 -Europe,Sweden,Baby Food,Online,M,6/21/2015,935371100,7/6/2015,5949,255.28,159.42,1518660.72,948389.58,570271.14 -Asia,Turkmenistan,Cosmetics,Offline,H,11/29/2012,899659097,12/3/2012,7974,437.20,263.33,3486232.80,2099793.42,1386439.38 -Europe,Monaco,Vegetables,Online,H,1/1/2010,329530894,2/13/2010,4369,154.06,90.93,673088.14,397273.17,275814.97 -Middle East and North Africa,Turkey,Meat,Online,H,1/6/2016,867222821,2/6/2016,9359,421.89,364.69,3948468.51,3413133.71,535334.80 -Sub-Saharan Africa,Mozambique,Beverages,Online,M,10/14/2014,625283706,10/23/2014,4199,47.45,31.79,199242.55,133486.21,65756.34 -Middle East and North Africa,Yemen,Office Supplies,Offline,C,12/9/2013,936574876,1/9/2014,2173,651.21,524.96,1415079.33,1140738.08,274341.25 -Asia,Philippines,Cereal,Offline,M,10/19/2010,504270160,11/25/2010,3601,205.70,117.11,740725.70,421713.11,319012.59 -Sub-Saharan Africa,Democratic Republic of the Congo,Personal Care,Offline,M,5/2/2011,351855885,6/2/2011,830,81.73,56.67,67835.90,47036.10,20799.80 -Australia and Oceania,Fiji,Snacks,Online,H,3/17/2011,673130881,3/23/2011,3241,152.58,97.44,494511.78,315803.04,178708.74 -Europe,Macedonia,Office Supplies,Offline,H,9/24/2014,382206475,10/13/2014,2244,651.21,524.96,1461315.24,1178010.24,283305.00 -Middle East and North Africa,Tunisia ,Cereal,Online,H,12/1/2015,263506495,12/14/2015,6283,205.70,117.11,1292413.10,735802.13,556610.97 -Europe,Liechtenstein,Cereal,Offline,L,6/2/2017,721767270,7/18/2017,5829,205.70,117.11,1199025.30,682634.19,516391.11 -Middle East and North Africa,Qatar,Cosmetics,Online,M,8/4/2011,432037627,8/18/2011,8390,437.20,263.33,3668108.00,2209338.70,1458769.30 -Australia and Oceania,Tonga,Meat,Offline,C,7/29/2014,389678895,8/24/2014,3499,421.89,364.69,1476193.11,1276050.31,200142.80 -Europe,Belgium,Meat,Online,L,1/26/2017,760364902,2/24/2017,7726,421.89,364.69,3259522.14,2817594.94,441927.20 -Sub-Saharan Africa,Chad,Fruits,Offline,C,11/5/2010,430081975,12/9/2010,9669,9.33,6.92,90211.77,66909.48,23302.29 -Asia,Thailand,Baby Food,Online,H,3/26/2015,155128943,5/5/2015,4957,255.28,159.42,1265422.96,790244.94,475178.02 -Europe,Iceland,Clothes,Offline,H,10/7/2012,312117135,10/16/2012,1251,109.28,35.84,136709.28,44835.84,91873.44 -Central America and the Caribbean,Saint Lucia,Meat,Offline,L,7/22/2013,447970378,9/2/2013,3245,421.89,364.69,1369033.05,1183419.05,185614.00 -Asia,Japan,Cosmetics,Offline,C,8/16/2013,629925000,8/18/2013,7661,437.20,263.33,3349389.20,2017371.13,1332018.07 -Asia,India,Personal Care,Offline,L,11/5/2013,995529830,12/17/2013,8254,81.73,56.67,674599.42,467754.18,206845.24 -Australia and Oceania,Vanuatu,Office Supplies,Online,L,3/1/2016,402646195,3/28/2016,812,651.21,524.96,528782.52,426267.52,102515.00 -Sub-Saharan Africa,Chad,Meat,Offline,M,3/25/2012,479447925,4/4/2012,8150,421.89,364.69,3438403.50,2972223.50,466180.00 -Sub-Saharan Africa,Malawi,Cosmetics,Offline,H,6/20/2017,674421346,6/29/2017,5118,437.20,263.33,2237589.60,1347722.94,889866.66 -Europe,Finland,Cosmetics,Online,L,4/18/2014,506365287,5/16/2014,3596,437.20,263.33,1572171.20,946934.68,625236.52 -Middle East and North Africa,Turkey,Clothes,Online,C,6/28/2016,914391076,8/4/2016,7494,109.28,35.84,818944.32,268584.96,550359.36 -Sub-Saharan Africa,South Africa,Meat,Online,L,5/20/2012,207922542,7/1/2012,7755,421.89,364.69,3271756.95,2828170.95,443586.00 -Europe,Lithuania,Office Supplies,Offline,M,2/4/2014,816696012,2/16/2014,7353,651.21,524.96,4788347.13,3860030.88,928316.25 -Europe,Russia,Beverages,Offline,L,11/15/2015,740760314,11/21/2015,6293,47.45,31.79,298602.85,200054.47,98548.38 -Central America and the Caribbean,The Bahamas,Baby Food,Online,C,1/11/2013,300476777,2/28/2013,6610,255.28,159.42,1687400.80,1053766.20,633634.60 -Central America and the Caribbean,The Bahamas,Snacks,Online,L,4/24/2013,786519229,6/7/2013,7373,152.58,97.44,1124972.34,718425.12,406547.22 -Middle East and North Africa,Turkey,Cosmetics,Offline,C,5/15/2010,409873998,6/3/2010,9679,437.20,263.33,4231658.80,2548771.07,1682887.73 -Sub-Saharan Africa,Mauritius ,Cosmetics,Offline,H,4/17/2010,151839911,5/22/2010,1659,437.20,263.33,725314.80,436864.47,288450.33 -Europe,Bulgaria,Vegetables,Online,H,8/25/2012,614028298,9/9/2012,3473,154.06,90.93,535050.38,315799.89,219250.49 -Middle East and North Africa,Iran,Household,Offline,L,4/19/2014,668362987,5/13/2014,2315,668.27,502.54,1547045.05,1163380.10,383664.95 -Sub-Saharan Africa,Ghana,Household,Online,M,2/26/2013,607080304,4/5/2013,7408,668.27,502.54,4950544.16,3722816.32,1227727.84 -Sub-Saharan Africa,Malawi,Baby Food,Online,M,12/28/2011,792729079,1/17/2012,5006,255.28,159.42,1277931.68,798056.52,479875.16 -Sub-Saharan Africa,Zimbabwe,Baby Food,Offline,M,8/21/2014,308170640,10/10/2014,3395,255.28,159.42,866675.60,541230.90,325444.70 -Asia,Tajikistan,Vegetables,Online,H,8/21/2014,106578814,10/2/2014,7894,154.06,90.93,1216149.64,717801.42,498348.22 -Europe,Czech Republic,Cereal,Online,H,3/2/2014,761439931,3/28/2014,5851,205.70,117.11,1203550.70,685210.61,518340.09 -Sub-Saharan Africa,Mauritius ,Household,Online,L,9/6/2012,216552817,9/27/2012,1646,668.27,502.54,1099972.42,827180.84,272791.58 -Sub-Saharan Africa,Lesotho,Fruits,Online,H,9/16/2010,536028802,9/22/2010,1689,9.33,6.92,15758.37,11687.88,4070.49 -Sub-Saharan Africa,Mali,Beverages,Online,L,8/13/2013,254291713,8/15/2013,9424,47.45,31.79,447168.80,299588.96,147579.84 -Europe,Georgia,Personal Care,Online,C,9/11/2012,226077878,10/23/2012,323,81.73,56.67,26398.79,18304.41,8094.38 -Europe,Albania,Office Supplies,Offline,M,8/31/2011,476436126,10/15/2011,6892,651.21,524.96,4488139.32,3618024.32,870115.00 -Europe,Cyprus,Cosmetics,Offline,L,4/21/2015,650727784,6/6/2015,3667,437.20,263.33,1603212.40,965631.11,637581.29 -Central America and the Caribbean,Saint Kitts and Nevis ,Household,Offline,C,7/11/2010,464626681,7/27/2010,2215,668.27,502.54,1480218.05,1113126.10,367091.95 -Middle East and North Africa,Tunisia ,Meat,Offline,C,8/9/2015,154119145,9/21/2015,6135,421.89,364.69,2588295.15,2237373.15,350922.00 -Central America and the Caribbean,Cuba,Meat,Online,M,10/17/2015,925504004,12/6/2015,6057,421.89,364.69,2555387.73,2208927.33,346460.40 -Australia and Oceania,Kiribati,Cereal,Offline,L,7/24/2012,905392587,8/16/2012,4641,205.70,117.11,954653.70,543507.51,411146.19 -Asia,Cambodia,Snacks,Online,C,3/25/2012,990708720,5/4/2012,1581,152.58,97.44,241228.98,154052.64,87176.34 -Europe,Moldova ,Baby Food,Online,M,8/11/2014,798688733,9/18/2014,8600,255.28,159.42,2195408.00,1371012.00,824396.00 -Asia,Uzbekistan,Cereal,Offline,C,10/15/2016,916881453,11/28/2016,4452,205.70,117.11,915776.40,521373.72,394402.68 -Asia,India,Cosmetics,Offline,L,12/3/2016,653148210,1/21/2017,9924,437.20,263.33,4338772.80,2613286.92,1725485.88 -Europe,Germany,Personal Care,Offline,C,6/12/2010,285662829,7/13/2010,2834,81.73,56.67,231622.82,160602.78,71020.04 -Europe,Austria,Vegetables,Online,C,7/29/2016,612911641,8/31/2016,3030,154.06,90.93,466801.80,275517.90,191283.90 -Europe,Germany,Office Supplies,Offline,L,12/9/2013,703693473,1/12/2014,7391,651.21,524.96,4813093.11,3879979.36,933113.75 -Asia,Bhutan,Clothes,Online,M,7/12/2012,147119653,8/9/2012,4829,109.28,35.84,527713.12,173071.36,354641.76 -Asia,Kyrgyzstan,Fruits,Online,C,1/14/2012,402614009,3/2/2012,1287,9.33,6.92,12007.71,8906.04,3101.67 -Middle East and North Africa,Somalia,Personal Care,Online,C,3/20/2013,749912869,4/25/2013,4738,81.73,56.67,387236.74,268502.46,118734.28 -Central America and the Caribbean,Saint Lucia,Household,Online,H,2/10/2014,539065062,3/10/2014,186,668.27,502.54,124298.22,93472.44,30825.78 -Europe,Armenia,Snacks,Offline,H,10/26/2013,540431916,11/15/2013,4668,152.58,97.44,712243.44,454849.92,257393.52 -North America,Canada,Beverages,Online,C,4/16/2016,694687259,6/2/2016,2252,47.45,31.79,106857.40,71591.08,35266.32 -Sub-Saharan Africa,Burundi,Cosmetics,Offline,H,5/27/2011,562817418,6/2/2011,9036,437.20,263.33,3950539.20,2379449.88,1571089.32 -Europe,Liechtenstein,Cereal,Online,L,8/4/2016,676121222,9/9/2016,8149,205.70,117.11,1676249.30,954329.39,721919.91 -Middle East and North Africa,Tunisia ,Snacks,Offline,L,7/3/2012,286210000,8/5/2012,4754,152.58,97.44,725365.32,463229.76,262135.56 -Middle East and North Africa,Iraq,Beverages,Online,L,12/4/2014,515007579,1/11/2015,1042,47.45,31.79,49442.90,33125.18,16317.72 -Asia,Indonesia,Cosmetics,Offline,C,5/31/2010,304750287,6/1/2010,1237,437.20,263.33,540816.40,325739.21,215077.19 -Asia,Kazakhstan,Beverages,Online,H,2/5/2013,467986953,2/17/2013,6594,47.45,31.79,312885.30,209623.26,103262.04 -Europe,Denmark,Beverages,Offline,C,6/15/2015,537578904,7/9/2015,399,47.45,31.79,18932.55,12684.21,6248.34 -Europe,Luxembourg,Vegetables,Offline,L,10/21/2014,116699969,11/18/2014,2969,154.06,90.93,457404.14,269971.17,187432.97 -Sub-Saharan Africa,Cape Verde,Snacks,Offline,C,2/13/2017,228836476,3/13/2017,6653,152.58,97.44,1015114.74,648268.32,366846.42 -Australia and Oceania,Palau,Vegetables,Offline,C,6/29/2010,167787253,7/16/2010,832,154.06,90.93,128177.92,75653.76,52524.16 -Australia and Oceania,Australia,Vegetables,Online,M,5/19/2014,647663629,5/20/2014,6915,154.06,90.93,1065324.90,628780.95,436543.95 -Central America and the Caribbean,Nicaragua,Meat,Offline,L,3/21/2015,652889430,4/15/2015,3346,421.89,364.69,1411643.94,1220252.74,191391.20 -Asia,Laos,Office Supplies,Offline,M,8/31/2015,588200986,10/15/2015,598,651.21,524.96,389423.58,313926.08,75497.50 -Central America and the Caribbean,Cuba,Personal Care,Online,L,8/23/2015,928647124,8/30/2015,6176,81.73,56.67,504764.48,349993.92,154770.56 -Europe,Moldova ,Cosmetics,Offline,L,2/24/2016,869589173,3/17/2016,9615,437.20,263.33,4203678.00,2531917.95,1671760.05 -Middle East and North Africa,Syria,Household,Online,C,6/17/2015,576700961,7/23/2015,7485,668.27,502.54,5002000.95,3761511.90,1240489.05 -Central America and the Caribbean,The Bahamas,Cereal,Offline,M,11/27/2012,735968816,12/6/2012,8382,205.70,117.11,1724177.40,981616.02,742561.38 -Europe,Belarus,Snacks,Offline,M,9/7/2012,303691565,10/19/2012,7938,152.58,97.44,1211180.04,773478.72,437701.32 -Middle East and North Africa,United Arab Emirates,Clothes,Offline,C,6/23/2012,556480538,8/7/2012,3812,109.28,35.84,416575.36,136622.08,279953.28 -Sub-Saharan Africa,Angola,Beverages,Offline,H,10/23/2014,141259562,11/11/2014,698,47.45,31.79,33120.10,22189.42,10930.68 -Central America and the Caribbean,Cuba,Cosmetics,Offline,C,9/18/2015,925264966,10/18/2015,5320,437.20,263.33,2325904.00,1400915.60,924988.40 -Europe,Ukraine,Office Supplies,Online,H,1/24/2016,346045577,2/20/2016,1431,651.21,524.96,931881.51,751217.76,180663.75 -Sub-Saharan Africa,Mozambique,Fruits,Offline,H,3/23/2010,861462724,4/19/2010,4818,9.33,6.92,44951.94,33340.56,11611.38 -Europe,Armenia,Personal Care,Online,M,7/26/2012,499690234,8/28/2012,8299,81.73,56.67,678277.27,470304.33,207972.94 -North America,Greenland,Clothes,Online,H,10/20/2015,509214437,11/2/2015,6722,109.28,35.84,734580.16,240916.48,493663.68 -Central America and the Caribbean,Saint Kitts and Nevis ,Office Supplies,Online,M,6/27/2017,408834159,7/18/2017,1968,651.21,524.96,1281581.28,1033121.28,248460.00 -Europe,Vatican City,Beverages,Offline,M,4/4/2016,237660729,4/30/2016,7946,47.45,31.79,377037.70,252603.34,124434.36 -Europe,Ukraine,Clothes,Online,C,8/5/2015,105117976,9/9/2015,5600,109.28,35.84,611968.00,200704.00,411264.00 -Sub-Saharan Africa,Niger,Cereal,Offline,L,6/16/2012,640942227,7/4/2012,7903,205.70,117.11,1625647.10,925520.33,700126.77 -Asia,Myanmar,Cosmetics,Online,L,4/3/2016,745182311,5/5/2016,4860,437.20,263.33,2124792.00,1279783.80,845008.20 -Sub-Saharan Africa,Guinea,Baby Food,Offline,C,9/21/2014,738199555,9/21/2014,8508,255.28,159.42,2171922.24,1356345.36,815576.88 -Sub-Saharan Africa,Guinea-Bissau,Snacks,Online,L,8/8/2015,110667788,9/10/2015,7913,152.58,97.44,1207365.54,771042.72,436322.82 -Sub-Saharan Africa,South Sudan,Office Supplies,Online,C,7/19/2012,673573338,7/20/2012,4174,651.21,524.96,2718150.54,2191183.04,526967.50 -Middle East and North Africa,Turkey,Snacks,Offline,H,8/26/2011,708215034,9/13/2011,5421,152.58,97.44,827136.18,528222.24,298913.94 -Australia and Oceania,Palau,Household,Online,M,6/23/2012,816204202,7/1/2012,1816,668.27,502.54,1213578.32,912612.64,300965.68 -Europe,Poland,Beverages,Offline,L,11/20/2011,769464671,12/24/2011,550,47.45,31.79,26097.50,17484.50,8613.00 -Asia,Malaysia,Beverages,Offline,L,5/13/2015,860232770,6/4/2015,848,47.45,31.79,40237.60,26957.92,13279.68 -North America,United States of America,Personal Care,Offline,C,7/16/2010,551057326,8/22/2010,8963,81.73,56.67,732545.99,507933.21,224612.78 -Europe,Switzerland,Cosmetics,Online,C,5/21/2016,724799668,5/27/2016,3183,437.20,263.33,1391607.60,838179.39,553428.21 -Australia and Oceania,Papua New Guinea,Cosmetics,Offline,H,4/22/2011,534633624,6/8/2011,8825,437.20,263.33,3858290.00,2323887.25,1534402.75 -Sub-Saharan Africa,Namibia,Beverages,Offline,H,8/14/2012,554045522,9/20/2012,3237,47.45,31.79,153595.65,102904.23,50691.42 -Europe,Ireland,Clothes,Online,C,3/17/2012,526834189,5/2/2012,799,109.28,35.84,87314.72,28636.16,58678.56 -Sub-Saharan Africa,Mozambique,Household,Online,C,8/6/2010,717110955,8/9/2010,7922,668.27,502.54,5294034.94,3981121.88,1312913.06 -Sub-Saharan Africa,Democratic Republic of the Congo,Baby Food,Offline,L,2/25/2013,559299647,3/26/2013,8049,255.28,159.42,2054748.72,1283171.58,771577.14 -North America,United States of America,Meat,Online,M,3/6/2011,908136594,3/10/2011,6654,421.89,364.69,2807256.06,2426647.26,380608.80 -Middle East and North Africa,Azerbaijan,Office Supplies,Offline,M,12/14/2015,888670623,12/16/2015,6240,651.21,524.96,4063550.40,3275750.40,787800.00 -Europe,Belgium,Office Supplies,Offline,C,2/10/2017,146263062,2/16/2017,1345,651.21,524.96,875877.45,706071.20,169806.25 -Asia,Taiwan,Office Supplies,Offline,L,9/20/2016,196587741,10/28/2016,3536,651.21,524.96,2302678.56,1856258.56,446420.00 -Central America and the Caribbean,Panama,Baby Food,Online,M,4/30/2010,375630986,6/2/2010,6411,255.28,159.42,1636600.08,1022041.62,614558.46 -Europe,Andorra,Beverages,Offline,H,6/25/2013,989691627,7/10/2013,600,47.45,31.79,28470.00,19074.00,9396.00 -Europe,Georgia,Household,Offline,H,7/4/2012,165380990,7/27/2012,8765,668.27,502.54,5857386.55,4404763.10,1452623.45 -Central America and the Caribbean,Barbados,Snacks,Online,C,9/21/2013,599622905,10/22/2013,597,152.58,97.44,91090.26,58171.68,32918.58 -Europe,Sweden,Personal Care,Offline,C,12/8/2016,109653699,1/6/2017,7821,81.73,56.67,639210.33,443216.07,195994.26 -Middle East and North Africa,Algeria,Meat,Offline,M,9/2/2011,183022201,10/15/2011,9191,421.89,364.69,3877590.99,3351865.79,525725.20 -Europe,Italy,Personal Care,Online,L,3/21/2011,127589738,4/2/2011,5494,81.73,56.67,449024.62,311344.98,137679.64 -Europe,Russia,Fruits,Offline,L,1/8/2011,221530139,1/26/2011,4546,9.33,6.92,42414.18,31458.32,10955.86 -Central America and the Caribbean,Antigua and Barbuda ,Office Supplies,Offline,M,2/22/2015,363329732,2/22/2015,6197,651.21,524.96,4035548.37,3253177.12,782371.25 -Middle East and North Africa,Jordan,Fruits,Online,C,5/15/2017,521787345,6/25/2017,7325,9.33,6.92,68342.25,50689.00,17653.25 -Sub-Saharan Africa,Mali,Meat,Online,L,7/14/2012,286014306,8/15/2012,6844,421.89,364.69,2887415.16,2495938.36,391476.80 -Middle East and North Africa,Somalia,Cereal,Offline,C,6/25/2015,215434443,6/30/2015,694,205.70,117.11,142755.80,81274.34,61481.46 -Middle East and North Africa,Kuwait,Snacks,Online,L,10/26/2011,489784085,11/1/2011,6850,152.58,97.44,1045173.00,667464.00,377709.00 -Sub-Saharan Africa,Liberia,Office Supplies,Offline,C,9/24/2014,459112060,10/12/2014,316,651.21,524.96,205782.36,165887.36,39895.00 -Asia,China,Office Supplies,Online,C,9/30/2015,893779695,11/7/2015,8128,651.21,524.96,5293034.88,4266874.88,1026160.00 -Europe,Andorra,Meat,Offline,M,3/31/2011,834460818,3/31/2011,4355,421.89,364.69,1837330.95,1588224.95,249106.00 -Sub-Saharan Africa,Niger,Beverages,Online,C,10/25/2013,742141759,10/28/2013,5093,47.45,31.79,241662.85,161906.47,79756.38 -Europe,Hungary,Vegetables,Offline,M,8/12/2010,248121345,9/14/2010,3475,154.06,90.93,535358.50,315981.75,219376.75 -Europe,Monaco,Clothes,Offline,M,7/26/2012,404010903,9/4/2012,4659,109.28,35.84,509135.52,166978.56,342156.96 -Australia and Oceania,Tuvalu,Household,Online,L,9/30/2012,531734263,10/12/2012,840,668.27,502.54,561346.80,422133.60,139213.20 -Sub-Saharan Africa,South Sudan,Baby Food,Online,C,11/9/2012,473527753,12/29/2012,6240,255.28,159.42,1592947.20,994780.80,598166.40 -Europe,Cyprus,Cereal,Offline,M,11/19/2011,141940200,1/2/2012,2114,205.70,117.11,434849.80,247570.54,187279.26 -Europe,Poland,Household,Offline,M,6/9/2017,869832932,7/25/2017,1749,668.27,502.54,1168804.23,878942.46,289861.77 -Sub-Saharan Africa,Liberia,Snacks,Online,H,9/17/2011,460379779,11/4/2011,5462,152.58,97.44,833391.96,532217.28,301174.68 -Sub-Saharan Africa,Cote d'Ivoire,Vegetables,Online,C,10/23/2015,837067067,10/26/2015,5602,154.06,90.93,863044.12,509389.86,353654.26 -Asia,Kyrgyzstan,Beverages,Online,C,4/3/2010,393693625,4/9/2010,1547,47.45,31.79,73405.15,49179.13,24226.02 -Europe,Slovakia,Vegetables,Offline,L,7/3/2014,744370782,7/14/2014,4711,154.06,90.93,725776.66,428371.23,297405.43 -Asia,Malaysia,Cosmetics,Offline,M,12/30/2014,873522365,1/13/2015,3534,437.20,263.33,1545064.80,930608.22,614456.58 -Sub-Saharan Africa,Liberia,Beverages,Online,L,5/19/2014,285884702,6/10/2014,8491,47.45,31.79,402897.95,269928.89,132969.06 -Australia and Oceania,Vanuatu,Cosmetics,Online,H,8/4/2012,356506621,9/3/2012,7086,437.20,263.33,3097999.20,1865956.38,1232042.82 -Australia and Oceania,Kiribati,Baby Food,Offline,L,8/15/2010,280749452,10/1/2010,8856,255.28,159.42,2260759.68,1411823.52,848936.16 -Middle East and North Africa,Turkey,Baby Food,Online,M,4/26/2014,224287021,5/17/2014,368,255.28,159.42,93943.04,58666.56,35276.48 -Europe,San Marino,Fruits,Offline,M,6/10/2015,873105657,6/23/2015,221,9.33,6.92,2061.93,1529.32,532.61 -Europe,Vatican City,Snacks,Offline,C,8/12/2010,283504188,9/2/2010,4044,152.58,97.44,617033.52,394047.36,222986.16 -Middle East and North Africa,Morocco,Beverages,Offline,C,8/28/2012,632093942,9/5/2012,9499,47.45,31.79,450727.55,301973.21,148754.34 -Sub-Saharan Africa,Equatorial Guinea,Meat,Offline,L,7/15/2016,565798747,8/9/2016,1277,421.89,364.69,538753.53,465709.13,73044.40 -Middle East and North Africa,Jordan,Vegetables,Online,M,9/14/2010,151854932,10/19/2010,6104,154.06,90.93,940382.24,555036.72,385345.52 -Asia,Kyrgyzstan,Vegetables,Online,H,3/7/2011,427811324,4/16/2011,7733,154.06,90.93,1191345.98,703161.69,488184.29 -Sub-Saharan Africa,Republic of the Congo,Fruits,Online,L,4/30/2012,251529252,5/5/2012,1950,9.33,6.92,18193.50,13494.00,4699.50 -Australia and Oceania,East Timor,Snacks,Offline,C,5/18/2013,351182544,6/22/2013,1574,152.58,97.44,240160.92,153370.56,86790.36 -Europe,Estonia,Meat,Offline,H,8/10/2014,175257527,9/25/2014,1452,421.89,364.69,612584.28,529529.88,83054.40 -Asia,Bangladesh,Snacks,Online,H,7/31/2013,142553031,9/11/2013,3465,152.58,97.44,528689.70,337629.60,191060.10 -Sub-Saharan Africa,Senegal,Fruits,Offline,H,7/2/2016,292180383,8/15/2016,1523,9.33,6.92,14209.59,10539.16,3670.43 -Middle East and North Africa,Pakistan,Fruits,Offline,L,9/13/2011,733563411,9/20/2011,6569,9.33,6.92,61288.77,45457.48,15831.29 -Europe,Czech Republic,Beverages,Online,H,4/18/2011,296438443,4/19/2011,1578,47.45,31.79,74876.10,50164.62,24711.48 -Sub-Saharan Africa,Ghana,Meat,Offline,C,2/9/2017,580854308,3/18/2017,6552,421.89,364.69,2764223.28,2389448.88,374774.40 -Asia,Japan,Cosmetics,Offline,H,11/20/2016,107172334,12/23/2016,3530,437.20,263.33,1543316.00,929554.90,613761.10 -Asia,Kazakhstan,Baby Food,Offline,H,10/16/2010,166066348,12/5/2010,1578,255.28,159.42,402831.84,251564.76,151267.08 -Central America and the Caribbean,The Bahamas,Snacks,Offline,H,3/15/2015,768522679,3/27/2015,1794,152.58,97.44,273728.52,174807.36,98921.16 -Sub-Saharan Africa,Ethiopia,Household,Online,M,6/25/2013,195840156,7/25/2013,2309,668.27,502.54,1543035.43,1160364.86,382670.57 -Sub-Saharan Africa,Burkina Faso,Cosmetics,Offline,L,10/11/2012,849630105,11/9/2012,3284,437.20,263.33,1435764.80,864775.72,570989.08 -Sub-Saharan Africa,Madagascar,Fruits,Offline,M,7/8/2017,701816356,7/30/2017,1910,9.33,6.92,17820.30,13217.20,4603.10 -Europe,Netherlands,Office Supplies,Online,M,6/22/2010,944635236,7/27/2010,7413,651.21,524.96,4827419.73,3891528.48,935891.25 -Europe,Greece,Vegetables,Online,L,2/17/2017,140635573,3/21/2017,6046,154.06,90.93,931446.76,549762.78,381683.98 -Middle East and North Africa,Egypt,Meat,Online,C,1/14/2011,972678697,2/25/2011,6096,421.89,364.69,2571841.44,2223150.24,348691.20 -Sub-Saharan Africa,South Sudan,Fruits,Online,M,1/9/2016,793938434,2/8/2016,2880,9.33,6.92,26870.40,19929.60,6940.80 -Europe,Kosovo,Baby Food,Online,L,7/18/2011,177901113,8/13/2011,3747,255.28,159.42,956534.16,597346.74,359187.42 -Asia,Brunei,Beverages,Online,L,3/16/2012,668365561,5/4/2012,3077,47.45,31.79,146003.65,97817.83,48185.82 -Australia and Oceania,Australia,Vegetables,Online,C,12/15/2010,729443109,1/12/2011,7281,154.06,90.93,1121710.86,662061.33,459649.53 -Sub-Saharan Africa,Cape Verde,Fruits,Offline,H,3/2/2013,695557582,4/3/2013,9800,9.33,6.92,91434.00,67816.00,23618.00 -Sub-Saharan Africa,Malawi,Household,Offline,H,2/17/2010,521445310,4/4/2010,6110,668.27,502.54,4083129.70,3070519.40,1012610.30 -Asia,Philippines,Personal Care,Online,L,2/19/2013,232155120,3/30/2013,8714,81.73,56.67,712195.22,493822.38,218372.84 -Europe,Estonia,Beverages,Online,L,10/28/2011,373048341,12/12/2011,2149,47.45,31.79,101970.05,68316.71,33653.34 -Central America and the Caribbean,Trinidad and Tobago,Office Supplies,Offline,L,10/26/2015,659798800,12/2/2015,7982,651.21,524.96,5197958.22,4190230.72,1007727.50 -Asia,Mongolia,Household,Online,C,2/5/2013,428392827,2/5/2013,9812,668.27,502.54,6557065.24,4930922.48,1626142.76 -Asia,Japan,Personal Care,Offline,M,8/25/2011,885129249,9/3/2011,8269,81.73,56.67,675825.37,468604.23,207221.14 -Sub-Saharan Africa,Niger,Meat,Online,C,12/4/2012,156619393,12/5/2012,6014,421.89,364.69,2537246.46,2193245.66,344000.80 -Middle East and North Africa,Egypt,Baby Food,Offline,M,9/8/2015,939787089,9/9/2015,2739,255.28,159.42,699211.92,436651.38,262560.54 -Central America and the Caribbean,Saint Lucia,Vegetables,Online,C,3/1/2012,151868665,4/19/2012,168,154.06,90.93,25882.08,15276.24,10605.84 -Middle East and North Africa,Qatar,Cereal,Offline,C,8/5/2014,180412948,8/24/2014,7055,205.70,117.11,1451213.50,826211.05,625002.45 -Sub-Saharan Africa,Mali,Fruits,Offline,H,7/24/2013,333281266,7/28/2013,4188,9.33,6.92,39074.04,28980.96,10093.08 -Central America and the Caribbean,Saint Lucia,Cosmetics,Online,L,1/26/2012,888647449,2/28/2012,9383,437.20,263.33,4102247.60,2470825.39,1631422.21 -Sub-Saharan Africa,Swaziland,Clothes,Offline,M,3/10/2014,844997823,4/26/2014,2488,109.28,35.84,271888.64,89169.92,182718.72 -Asia,Mongolia,Fruits,Online,M,9/12/2013,171131217,10/8/2013,385,9.33,6.92,3592.05,2664.20,927.85 -Sub-Saharan Africa,Botswana,Office Supplies,Online,C,1/5/2013,256158959,1/18/2013,1983,651.21,524.96,1291349.43,1040995.68,250353.75 -Europe,San Marino,Cosmetics,Online,H,10/28/2011,759504878,12/8/2011,3226,437.20,263.33,1410407.20,849502.58,560904.62 -Middle East and North Africa,Oman,Fruits,Online,C,11/21/2010,960905301,11/25/2010,2087,9.33,6.92,19471.71,14442.04,5029.67 -Asia,Bangladesh,Office Supplies,Offline,C,10/28/2015,210409057,12/4/2015,3570,651.21,524.96,2324819.70,1874107.20,450712.50 -Sub-Saharan Africa,Namibia,Cosmetics,Offline,C,7/29/2010,178377473,9/1/2010,4713,437.20,263.33,2060523.60,1241074.29,819449.31 -Asia,Mongolia,Fruits,Online,M,3/30/2014,805484378,5/1/2014,9582,9.33,6.92,89400.06,66307.44,23092.62 -Asia,North Korea,Beverages,Online,C,9/14/2016,752716100,10/12/2016,4276,47.45,31.79,202896.20,135934.04,66962.16 -Europe,Latvia,Clothes,Online,M,9/6/2012,551371467,9/15/2012,1925,109.28,35.84,210364.00,68992.00,141372.00 -Sub-Saharan Africa,Burundi,Snacks,Offline,M,2/8/2013,353061807,3/5/2013,7689,152.58,97.44,1173187.62,749216.16,423971.46 -Sub-Saharan Africa,Seychelles ,Personal Care,Online,C,1/17/2011,379710948,1/30/2011,3762,81.73,56.67,307468.26,213192.54,94275.72 -Sub-Saharan Africa,Kenya,Cereal,Online,H,10/11/2015,473555219,11/6/2015,4368,205.70,117.11,898497.60,511536.48,386961.12 -Sub-Saharan Africa,Benin,Office Supplies,Online,C,2/21/2011,547143447,2/23/2011,760,651.21,524.96,494919.60,398969.60,95950.00 -Central America and the Caribbean,Saint Lucia,Personal Care,Online,C,4/29/2012,133336961,6/13/2012,6225,81.73,56.67,508769.25,352770.75,155998.50 -Middle East and North Africa,Qatar,Meat,Online,H,8/30/2016,635309588,10/14/2016,1080,421.89,364.69,455641.20,393865.20,61776.00 -Sub-Saharan Africa,Mozambique,Beverages,Online,C,12/20/2014,376547658,12/26/2014,7675,47.45,31.79,364178.75,243988.25,120190.50 -Middle East and North Africa,Pakistan,Clothes,Offline,M,6/28/2010,450849997,7/21/2010,5388,109.28,35.84,588800.64,193105.92,395694.72 -Asia,Taiwan,Personal Care,Online,M,2/6/2015,672327935,2/6/2015,5631,81.73,56.67,460221.63,319108.77,141112.86 -Central America and the Caribbean,Cuba,Cereal,Offline,L,3/30/2015,925405299,5/1/2015,6847,205.70,117.11,1408427.90,801852.17,606575.73 -Central America and the Caribbean,Cuba,Household,Offline,H,7/28/2013,714818418,8/24/2013,9509,668.27,502.54,6354579.43,4778652.86,1575926.57 -Europe,Russia,Beverages,Offline,C,1/6/2010,515616118,2/5/2010,1122,47.45,31.79,53238.90,35668.38,17570.52 -Europe,Switzerland,Cereal,Offline,C,2/20/2013,423159730,4/11/2013,1222,205.70,117.11,251365.40,143108.42,108256.98 -Europe,Czech Republic,Personal Care,Offline,H,8/25/2013,603123080,9/29/2013,6377,81.73,56.67,521192.21,361384.59,159807.62 -Europe,Poland,Meat,Offline,C,11/16/2010,841492497,12/31/2010,5185,421.89,364.69,2187499.65,1890917.65,296582.00 -Sub-Saharan Africa,Mauritius ,Cereal,Offline,L,8/2/2016,994566810,9/1/2016,3275,205.70,117.11,673667.50,383535.25,290132.25 -Middle East and North Africa,Pakistan,Vegetables,Offline,M,4/25/2013,538957345,4/25/2013,8310,154.06,90.93,1280238.60,755628.30,524610.30 -Sub-Saharan Africa,South Africa,Fruits,Offline,L,3/2/2011,821587932,3/11/2011,4981,9.33,6.92,46472.73,34468.52,12004.21 -Sub-Saharan Africa,Seychelles ,Household,Online,C,9/28/2013,109694898,10/16/2013,13,668.27,502.54,8687.51,6533.02,2154.49 -Sub-Saharan Africa,Benin,Meat,Offline,M,5/5/2014,340827071,6/5/2014,7159,421.89,364.69,3020310.51,2610815.71,409494.80 -Sub-Saharan Africa,Benin,Meat,Offline,L,11/28/2014,372845780,12/9/2014,2207,421.89,364.69,931111.23,804870.83,126240.40 -Central America and the Caribbean,Nicaragua,Fruits,Online,M,8/30/2014,933924853,9/13/2014,7973,9.33,6.92,74388.09,55173.16,19214.93 -Middle East and North Africa,Lebanon,Office Supplies,Online,L,11/20/2013,572550618,11/25/2013,9306,651.21,524.96,6060160.26,4885277.76,1174882.50 -Europe,Moldova ,Meat,Online,M,2/23/2010,607521903,4/5/2010,8086,421.89,364.69,3411402.54,2948883.34,462519.20 -Middle East and North Africa,Tunisia ,Snacks,Online,H,3/20/2017,177950036,4/29/2017,8225,152.58,97.44,1254970.50,801444.00,453526.50 -Australia and Oceania,Vanuatu,Beverages,Offline,M,11/8/2015,293258845,11/14/2015,664,47.45,31.79,31506.80,21108.56,10398.24 -Sub-Saharan Africa,South Sudan,Beverages,Online,C,8/9/2010,683184659,8/23/2010,8377,47.45,31.79,397488.65,266304.83,131183.82 -Europe,Sweden,Cereal,Online,L,11/12/2010,247776305,11/30/2010,1370,205.70,117.11,281809.00,160440.70,121368.30 -Europe,Ireland,Meat,Offline,C,12/14/2011,207395112,1/26/2012,1677,421.89,364.69,707509.53,611585.13,95924.40 -Europe,Italy,Vegetables,Offline,L,1/10/2014,952714908,2/25/2014,8367,154.06,90.93,1289020.02,760811.31,528208.71 -Europe,Bosnia and Herzegovina,Vegetables,Online,C,10/3/2010,694722020,10/3/2010,2539,154.06,90.93,391158.34,230871.27,160287.07 -Europe,Bosnia and Herzegovina,Household,Online,H,10/15/2015,414715278,11/4/2015,2321,668.27,502.54,1551054.67,1166395.34,384659.33 -Europe,Poland,Snacks,Offline,M,7/20/2013,714306008,8/17/2013,7876,152.58,97.44,1201720.08,767437.44,434282.64 -Middle East and North Africa,Kuwait,Snacks,Online,H,1/19/2016,465418040,2/26/2016,6396,152.58,97.44,975901.68,623226.24,352675.44 -Sub-Saharan Africa,Sudan,Cereal,Online,M,8/17/2013,860287702,9/11/2013,7103,205.70,117.11,1461087.10,831832.33,629254.77 -Middle East and North Africa,Saudi Arabia,Vegetables,Online,C,8/16/2016,461463820,8/20/2016,6254,154.06,90.93,963491.24,568676.22,394815.02 -Sub-Saharan Africa,Swaziland,Baby Food,Offline,M,9/25/2013,151807725,9/29/2013,2134,255.28,159.42,544767.52,340202.28,204565.24 -Sub-Saharan Africa,Rwanda,Meat,Offline,C,8/21/2013,884493243,10/2/2013,61,421.89,364.69,25735.29,22246.09,3489.20 -Asia,Cambodia,Cosmetics,Offline,M,12/10/2010,533006703,1/23/2011,7383,437.20,263.33,3227847.60,1944165.39,1283682.21 -Sub-Saharan Africa,Central African Republic,Vegetables,Online,C,9/4/2012,641146934,10/4/2012,8480,154.06,90.93,1306428.80,771086.40,535342.40 -Asia,Maldives,Cosmetics,Offline,M,10/15/2011,573025262,11/14/2011,9764,437.20,263.33,4268820.80,2571154.12,1697666.68 -Sub-Saharan Africa,Djibouti,Household,Offline,C,8/26/2013,663065516,9/9/2013,4676,668.27,502.54,3124830.52,2349877.04,774953.48 -Asia,Tajikistan,Beverages,Online,M,2/17/2017,866004025,3/4/2017,8691,47.45,31.79,412387.95,276286.89,136101.06 -Asia,Sri Lanka,Baby Food,Online,H,10/19/2010,306889617,10/21/2010,4312,255.28,159.42,1100767.36,687419.04,413348.32 -Europe,Montenegro,Personal Care,Online,M,7/30/2014,431083619,8/10/2014,6077,81.73,56.67,496673.21,344383.59,152289.62 -Middle East and North Africa,United Arab Emirates,Personal Care,Online,H,5/21/2015,954259860,6/4/2015,5553,81.73,56.67,453846.69,314688.51,139158.18 -Central America and the Caribbean,Dominican Republic,Personal Care,Offline,C,5/5/2016,312404668,6/21/2016,6338,81.73,56.67,518004.74,359174.46,158830.28 -Sub-Saharan Africa,Seychelles ,Office Supplies,Offline,C,4/14/2010,611816871,5/16/2010,9063,651.21,524.96,5901916.23,4757712.48,1144203.75 -Europe,Iceland,Office Supplies,Online,C,10/26/2013,879107797,11/2/2013,6388,651.21,524.96,4159929.48,3353444.48,806485.00 -Sub-Saharan Africa,Nigeria,Vegetables,Offline,C,7/21/2010,211201274,9/9/2010,8005,154.06,90.93,1233250.30,727894.65,505355.65 -Sub-Saharan Africa,Rwanda,Fruits,Online,H,6/9/2015,925333631,7/25/2015,5639,9.33,6.92,52611.87,39021.88,13589.99 -Europe,Hungary,Snacks,Offline,C,6/3/2010,909053695,6/27/2010,8044,152.58,97.44,1227353.52,783807.36,443546.16 -Europe,Belarus,Baby Food,Online,L,5/17/2016,370222795,6/11/2016,6007,255.28,159.42,1533466.96,957635.94,575831.02 -Sub-Saharan Africa,South Sudan,Cosmetics,Offline,H,8/3/2013,487014758,8/30/2013,7344,437.20,263.33,3210796.80,1933895.52,1276901.28 -Europe,Andorra,Vegetables,Online,M,9/15/2013,257915914,10/6/2013,1905,154.06,90.93,293484.30,173221.65,120262.65 -Asia,Japan,Meat,Offline,M,7/2/2010,551725089,8/10/2010,6569,421.89,364.69,2771395.41,2395648.61,375746.80 -Central America and the Caribbean,El Salvador,Meat,Offline,L,12/18/2013,957553613,1/10/2014,248,421.89,364.69,104628.72,90443.12,14185.60 -Sub-Saharan Africa,Kenya,Office Supplies,Offline,L,3/19/2016,234825313,3/23/2016,8883,651.21,524.96,5784698.43,4663219.68,1121478.75 -Europe,Bosnia and Herzegovina,Snacks,Online,M,6/9/2010,363276517,7/9/2010,449,152.58,97.44,68508.42,43750.56,24757.86 -Europe,Andorra,Personal Care,Online,M,5/21/2017,692956054,6/23/2017,9950,81.73,56.67,813213.50,563866.50,249347.00 -Sub-Saharan Africa,Cape Verde,Cosmetics,Online,H,6/12/2013,194225251,6/19/2013,4423,437.20,263.33,1933735.60,1164708.59,769027.01 -Australia and Oceania,Nauru,Fruits,Online,L,2/22/2010,607757937,4/5/2010,7934,9.33,6.92,74024.22,54903.28,19120.94 -Europe,Czech Republic,Cereal,Offline,H,6/29/2012,594540441,7/30/2012,6583,205.70,117.11,1354123.10,770935.13,583187.97 -Europe,Serbia,Vegetables,Online,L,3/23/2015,685871589,4/5/2015,3500,154.06,90.93,539210.00,318255.00,220955.00 -Australia and Oceania,Tuvalu,Cereal,Offline,C,2/12/2014,133362710,3/23/2014,3844,205.70,117.11,790710.80,450170.84,340539.96 -Sub-Saharan Africa,Madagascar,Clothes,Offline,H,5/22/2017,958937633,7/5/2017,9810,109.28,35.84,1072036.80,351590.40,720446.40 -Sub-Saharan Africa,Ethiopia,Vegetables,Online,C,8/6/2011,304832684,9/6/2011,5620,154.06,90.93,865817.20,511026.60,354790.60 -Asia,Malaysia,Baby Food,Offline,L,11/14/2010,783596694,12/24/2010,2530,255.28,159.42,645858.40,403332.60,242525.80 -Sub-Saharan Africa,Tanzania,Household,Offline,C,4/5/2015,128090989,4/27/2015,3825,668.27,502.54,2556132.75,1922215.50,633917.25 -Sub-Saharan Africa,Cote d'Ivoire,Vegetables,Offline,M,7/8/2014,641489398,7/28/2014,9823,154.06,90.93,1513331.38,893205.39,620125.99 -Australia and Oceania,Solomon Islands,Clothes,Offline,M,8/9/2014,647278249,9/16/2014,2873,109.28,35.84,313961.44,102968.32,210993.12 -Europe,Netherlands,Clothes,Online,H,3/13/2011,339256370,3/31/2011,2354,109.28,35.84,257245.12,84367.36,172877.76 -Sub-Saharan Africa,Mali,Baby Food,Offline,M,3/2/2016,431535089,3/19/2016,9677,255.28,159.42,2470344.56,1542707.34,927637.22 -Middle East and North Africa,Afghanistan,Cereal,Offline,C,12/19/2015,808538234,1/16/2016,3286,205.70,117.11,675930.20,384823.46,291106.74 -Europe,Moldova ,Personal Care,Online,C,3/28/2013,975002133,4/7/2013,3653,81.73,56.67,298559.69,207015.51,91544.18 -Asia,Bhutan,Snacks,Online,H,6/27/2015,505975615,7/4/2015,8283,152.58,97.44,1263820.14,807095.52,456724.62 -Asia,Vietnam,Vegetables,Offline,M,2/18/2016,396820008,3/20/2016,6714,154.06,90.93,1034358.84,610504.02,423854.82 -Europe,Portugal,Vegetables,Online,H,6/14/2013,813209140,7/10/2013,5511,154.06,90.93,849024.66,501115.23,347909.43 -Europe,Spain,Baby Food,Online,M,5/10/2014,641129338,5/14/2014,3273,255.28,159.42,835531.44,521781.66,313749.78 -Middle East and North Africa,Egypt,Meat,Offline,C,6/17/2015,636879432,7/3/2015,5632,421.89,364.69,2376084.48,2053934.08,322150.40 -Europe,Belgium,Snacks,Online,C,6/11/2014,277070748,7/2/2014,246,152.58,97.44,37534.68,23970.24,13564.44 -Asia,Malaysia,Cosmetics,Offline,H,11/3/2013,908627116,11/24/2013,1810,437.20,263.33,791332.00,476627.30,314704.70 -Central America and the Caribbean,Dominican Republic,Cosmetics,Offline,C,4/2/2017,798784863,5/2/2017,7047,437.20,263.33,3080948.40,1855686.51,1225261.89 -Europe,Estonia,Beverages,Offline,H,5/28/2010,985092818,7/17/2010,9711,47.45,31.79,460786.95,308712.69,152074.26 -Sub-Saharan Africa,Burundi,Snacks,Offline,C,5/22/2010,325412309,7/7/2010,5588,152.58,97.44,852617.04,544494.72,308122.32 -Europe,Latvia,Beverages,Online,M,6/2/2016,447917163,6/24/2016,7497,47.45,31.79,355732.65,238329.63,117403.02 -Asia,Tajikistan,Meat,Offline,M,8/22/2013,801093709,10/5/2013,285,421.89,364.69,120238.65,103936.65,16302.00 -Sub-Saharan Africa,Zimbabwe,Fruits,Offline,H,10/5/2014,903740775,10/23/2014,5833,9.33,6.92,54421.89,40364.36,14057.53 -Sub-Saharan Africa,Comoros,Meat,Offline,L,10/31/2010,794969689,11/13/2010,8052,421.89,364.69,3397058.28,2936483.88,460574.40 -Sub-Saharan Africa,Namibia,Clothes,Online,L,11/27/2012,584204280,1/1/2013,7884,109.28,35.84,861563.52,282562.56,579000.96 -Europe,Slovenia,Cereal,Offline,H,5/22/2010,901180875,5/26/2010,8302,205.70,117.11,1707721.40,972247.22,735474.18 -Europe,Bulgaria,Snacks,Offline,L,8/31/2012,645948302,9/29/2012,9312,152.58,97.44,1420824.96,907361.28,513463.68 -Sub-Saharan Africa,Guinea-Bissau,Cereal,Online,L,1/23/2015,138867890,2/22/2015,2950,205.70,117.11,606815.00,345474.50,261340.50 -Sub-Saharan Africa,Lesotho,Beverages,Offline,L,3/2/2010,670613467,3/21/2010,8282,47.45,31.79,392980.90,263284.78,129696.12 -Asia,Sri Lanka,Cosmetics,Offline,L,5/9/2014,452171361,5/27/2014,6409,437.20,263.33,2802014.80,1687681.97,1114332.83 -Australia and Oceania,East Timor,Snacks,Online,H,12/28/2010,464840400,2/5/2011,5459,152.58,97.44,832934.22,531924.96,301009.26 -Europe,Belarus,Household,Online,M,10/19/2014,410231912,10/24/2014,5594,668.27,502.54,3738302.38,2811208.76,927093.62 -Sub-Saharan Africa,Benin,Meat,Offline,H,1/21/2015,960269725,2/22/2015,4006,421.89,364.69,1690091.34,1460948.14,229143.20 -Europe,Ireland,Beverages,Offline,L,4/4/2017,607190167,5/18/2017,9919,47.45,31.79,470656.55,315325.01,155331.54 -Middle East and North Africa,Iran,Meat,Offline,H,8/5/2016,613542068,8/11/2016,9587,421.89,364.69,4044659.43,3496283.03,548376.40 -Sub-Saharan Africa,Benin,Household,Offline,C,11/26/2016,962186753,1/12/2017,1297,668.27,502.54,866746.19,651794.38,214951.81 -Sub-Saharan Africa,South Sudan,Beverages,Online,L,9/23/2011,806298053,10/24/2011,366,47.45,31.79,17366.70,11635.14,5731.56 -Sub-Saharan Africa,Comoros,Personal Care,Online,L,10/24/2010,719362294,12/3/2010,4144,81.73,56.67,338689.12,234840.48,103848.64 -Europe,Poland,Baby Food,Online,H,8/14/2013,445178306,9/22/2013,7008,255.28,159.42,1789002.24,1117215.36,671786.88 -Europe,Bosnia and Herzegovina,Cosmetics,Offline,C,2/4/2013,247857415,2/15/2013,5372,437.20,263.33,2348638.40,1414608.76,934029.64 -Sub-Saharan Africa,Namibia,Vegetables,Offline,C,8/11/2014,461823451,9/4/2014,2677,154.06,90.93,412418.62,243419.61,168999.01 -Europe,Spain,Office Supplies,Offline,C,1/12/2017,141812741,1/24/2017,4396,651.21,524.96,2862719.16,2307724.16,554995.00 -Middle East and North Africa,Iran,Meat,Online,C,7/3/2016,212874114,8/17/2016,3036,421.89,364.69,1280858.04,1107198.84,173659.20 -Central America and the Caribbean,Guatemala,Office Supplies,Offline,C,3/27/2010,320368897,4/2/2010,3131,651.21,524.96,2038938.51,1643649.76,395288.75 -Australia and Oceania,East Timor,Beverages,Online,C,6/5/2015,179970920,6/25/2015,6249,47.45,31.79,296515.05,198655.71,97859.34 -Middle East and North Africa,Bahrain,Household,Online,H,6/27/2012,927666509,7/17/2012,5990,668.27,502.54,4002937.30,3010214.60,992722.70 -Sub-Saharan Africa,Ethiopia,Office Supplies,Online,L,12/19/2016,169754493,1/20/2017,2982,651.21,524.96,1941908.22,1565430.72,376477.50 -Australia and Oceania,Solomon Islands,Personal Care,Offline,M,3/9/2015,532846200,4/20/2015,9886,81.73,56.67,807982.78,560239.62,247743.16 -Central America and the Caribbean,Belize,Snacks,Online,C,6/18/2013,213865458,7/13/2013,6397,152.58,97.44,976054.26,623323.68,352730.58 -Asia,Sri Lanka,Office Supplies,Online,C,8/12/2011,630048596,9/3/2011,4236,651.21,524.96,2758525.56,2223730.56,534795.00 -Central America and the Caribbean,Costa Rica,Clothes,Offline,H,4/17/2014,568944442,4/24/2014,2158,109.28,35.84,235826.24,77342.72,158483.52 -Sub-Saharan Africa,Nigeria,Baby Food,Online,L,2/3/2012,238414323,2/27/2012,951,255.28,159.42,242771.28,151608.42,91162.86 -Middle East and North Africa,Iran,Office Supplies,Online,L,8/1/2015,816632068,9/19/2015,8431,651.21,524.96,5490351.51,4425937.76,1064413.75 -Sub-Saharan Africa,Djibouti,Baby Food,Online,C,9/11/2013,402084004,10/5/2013,4447,255.28,159.42,1135230.16,708940.74,426289.42 -Asia,South Korea,Snacks,Online,L,5/8/2015,763568961,6/7/2015,5879,152.58,97.44,897017.82,572849.76,324168.06 -Central America and the Caribbean,Dominica,Snacks,Offline,L,5/22/2015,590198266,6/1/2015,1637,152.58,97.44,249773.46,159509.28,90264.18 -Asia,Vietnam,Snacks,Online,L,7/3/2013,441395747,8/19/2013,7665,152.58,97.44,1169525.70,746877.60,422648.10 -Europe,Norway,Personal Care,Offline,H,6/16/2010,496897733,7/21/2010,1936,81.73,56.67,158229.28,109713.12,48516.16 -Central America and the Caribbean,Haiti,Beverages,Online,C,11/8/2011,106753051,11/14/2011,9455,47.45,31.79,448639.75,300574.45,148065.30 -Central America and the Caribbean,Jamaica,Fruits,Offline,L,10/17/2016,941323029,10/27/2016,7258,9.33,6.92,67717.14,50225.36,17491.78 -Sub-Saharan Africa,Sudan,Vegetables,Offline,M,2/2/2014,241281497,3/3/2014,9412,154.06,90.93,1450012.72,855833.16,594179.56 -Sub-Saharan Africa,Angola,Meat,Offline,L,4/30/2016,267614781,5/12/2016,2016,421.89,364.69,850530.24,735215.04,115315.20 -Central America and the Caribbean,Panama,Cosmetics,Offline,M,8/31/2010,651621711,10/16/2010,8200,437.20,263.33,3585040.00,2159306.00,1425734.00 -Europe,Greece,Personal Care,Online,M,8/8/2015,644913613,9/7/2015,3124,81.73,56.67,255324.52,177037.08,78287.44 -Sub-Saharan Africa,Madagascar,Cereal,Offline,H,8/18/2016,469414317,8/19/2016,8983,205.70,117.11,1847803.10,1051999.13,795803.97 -Sub-Saharan Africa,Guinea-Bissau,Clothes,Online,L,6/18/2015,867360150,7/1/2015,9998,109.28,35.84,1092581.44,358328.32,734253.12 -North America,Greenland,Clothes,Online,L,1/28/2011,851299941,2/1/2011,7425,109.28,35.84,811404.00,266112.00,545292.00 -Middle East and North Africa,Libya,Beverages,Offline,H,2/4/2011,854095017,3/4/2011,4550,47.45,31.79,215897.50,144644.50,71253.00 -Europe,Belarus,Vegetables,Offline,C,11/3/2012,478919208,11/27/2012,1691,154.06,90.93,260515.46,153762.63,106752.83 -Middle East and North Africa,Lebanon,Clothes,Offline,H,9/18/2014,749258840,11/5/2014,1196,109.28,35.84,130698.88,42864.64,87834.24 -Sub-Saharan Africa,Djibouti,Baby Food,Offline,H,5/17/2012,958912742,6/28/2012,2444,255.28,159.42,623904.32,389622.48,234281.84 -Central America and the Caribbean,Barbados,Personal Care,Online,C,2/20/2010,921992242,3/4/2010,6848,81.73,56.67,559687.04,388076.16,171610.88 -Sub-Saharan Africa,Guinea-Bissau,Vegetables,Online,L,2/28/2017,522921168,3/2/2017,2849,154.06,90.93,438916.94,259059.57,179857.37 -Europe,Finland,Personal Care,Offline,C,5/17/2013,166435849,6/7/2013,921,81.73,56.67,75273.33,52193.07,23080.26 -Central America and the Caribbean,Haiti,Baby Food,Offline,L,11/9/2013,327585113,11/23/2013,8569,255.28,159.42,2187494.32,1366069.98,821424.34 -Sub-Saharan Africa,Niger,Clothes,Offline,M,1/10/2012,201730287,2/19/2012,5330,109.28,35.84,582462.40,191027.20,391435.20 -Central America and the Caribbean,Trinidad and Tobago,Fruits,Offline,L,9/24/2013,854545199,11/9/2013,7769,9.33,6.92,72484.77,53761.48,18723.29 -Central America and the Caribbean,Grenada,Personal Care,Online,M,9/26/2010,272016179,11/8/2010,4487,81.73,56.67,366722.51,254278.29,112444.22 -Central America and the Caribbean,Dominican Republic,Cereal,Offline,H,10/21/2014,110442054,11/20/2014,1113,205.70,117.11,228944.10,130343.43,98600.67 -Europe,Monaco,Household,Offline,C,1/17/2016,746434152,2/5/2016,5308,668.27,502.54,3547177.16,2667482.32,879694.84 -Europe,Estonia,Vegetables,Online,L,12/27/2016,826916301,1/7/2017,1764,154.06,90.93,271761.84,160400.52,111361.32 -Europe,Italy,Beverages,Offline,H,8/30/2013,419124829,9/19/2013,7206,47.45,31.79,341924.70,229078.74,112845.96 -Asia,Malaysia,Office Supplies,Online,C,7/7/2014,560608565,8/24/2014,5387,651.21,524.96,3508068.27,2827959.52,680108.75 -Sub-Saharan Africa,Ghana,Office Supplies,Offline,L,11/29/2013,109228837,12/7/2013,2095,651.21,524.96,1364284.95,1099791.20,264493.75 -Middle East and North Africa,Pakistan,Clothes,Offline,C,1/29/2011,693159472,2/5/2011,146,109.28,35.84,15954.88,5232.64,10722.24 -Asia,Sri Lanka,Snacks,Offline,L,11/13/2013,860886800,11/23/2013,4390,152.58,97.44,669826.20,427761.60,242064.60 -Europe,Romania,Fruits,Offline,C,4/9/2012,131209647,5/3/2012,6705,9.33,6.92,62557.65,46398.60,16159.05 -Middle East and North Africa,Qatar,Office Supplies,Online,H,6/28/2012,343239343,7/13/2012,1004,651.21,524.96,653814.84,527059.84,126755.00 -Sub-Saharan Africa,Cote d'Ivoire,Clothes,Online,H,6/8/2010,706399714,7/19/2010,8228,109.28,35.84,899155.84,294891.52,604264.32 -Middle East and North Africa,Egypt,Office Supplies,Online,M,8/23/2010,950427091,9/14/2010,1352,651.21,524.96,880435.92,709745.92,170690.00 -Middle East and North Africa,Iran,Snacks,Offline,H,12/11/2014,875370299,12/28/2014,379,152.58,97.44,57827.82,36929.76,20898.06 -Middle East and North Africa,Somalia,Clothes,Online,C,1/27/2011,801590669,3/15/2011,7347,109.28,35.84,802880.16,263316.48,539563.68 -Middle East and North Africa,Syria,Personal Care,Offline,C,5/7/2014,219762027,5/28/2014,1322,81.73,56.67,108047.06,74917.74,33129.32 -Australia and Oceania,Solomon Islands,Cereal,Offline,C,11/8/2010,940870702,11/21/2010,3404,205.70,117.11,700202.80,398642.44,301560.36 -Central America and the Caribbean,Guatemala,Fruits,Online,M,3/30/2014,346215522,5/4/2014,1721,9.33,6.92,16056.93,11909.32,4147.61 -Middle East and North Africa,Kuwait,Clothes,Offline,C,7/9/2016,837407815,7/20/2016,6436,109.28,35.84,703326.08,230666.24,472659.84 -Middle East and North Africa,Jordan,Meat,Online,L,7/15/2014,386371409,7/19/2014,4741,421.89,364.69,2000180.49,1728995.29,271185.20 -Australia and Oceania,Marshall Islands,Beverages,Offline,H,10/14/2013,185342633,11/24/2013,5859,47.45,31.79,278009.55,186257.61,91751.94 -Middle East and North Africa,Egypt,Snacks,Offline,C,1/13/2017,596870315,2/18/2017,6045,152.58,97.44,922346.10,589024.80,333321.30 -Europe,Switzerland,Meat,Online,C,12/22/2012,703815782,1/7/2013,3585,421.89,364.69,1512475.65,1307413.65,205062.00 -Australia and Oceania,Samoa ,Personal Care,Online,C,4/16/2010,559352862,6/4/2010,3797,81.73,56.67,310328.81,215175.99,95152.82 -Europe,Portugal,Cosmetics,Offline,C,2/27/2011,736967885,3/12/2011,4029,437.20,263.33,1761478.80,1060956.57,700522.23 -Europe,Albania,Clothes,Offline,C,1/14/2015,980459678,2/9/2015,8661,109.28,35.84,946474.08,310410.24,636063.84 -Central America and the Caribbean,Dominica,Vegetables,Offline,C,11/16/2014,653939568,12/6/2014,4105,154.06,90.93,632416.30,373267.65,259148.65 -Australia and Oceania,Tuvalu,Cosmetics,Online,H,1/17/2016,991831386,1/29/2016,3803,437.20,263.33,1662671.60,1001443.99,661227.61 -Australia and Oceania,Marshall Islands,Cereal,Online,L,5/29/2017,148871457,7/6/2017,3227,205.70,117.11,663793.90,377913.97,285879.93 -Europe,Bulgaria,Fruits,Online,H,2/10/2015,850108611,2/25/2015,4884,9.33,6.92,45567.72,33797.28,11770.44 -Sub-Saharan Africa,Niger,Office Supplies,Offline,M,12/8/2013,940904176,1/7/2014,3309,651.21,524.96,2154853.89,1737092.64,417761.25 -Central America and the Caribbean,Saint Vincent and the Grenadines,Office Supplies,Offline,H,12/10/2015,136931979,12/13/2015,70,651.21,524.96,45584.70,36747.20,8837.50 -Sub-Saharan Africa,Malawi,Beverages,Offline,L,9/4/2016,474178349,9/26/2016,8766,47.45,31.79,415946.70,278671.14,137275.56 -Sub-Saharan Africa,Cape Verde,Personal Care,Offline,L,7/19/2016,458942115,7/29/2016,25,81.73,56.67,2043.25,1416.75,626.50 -Central America and the Caribbean,Saint Vincent and the Grenadines,Beverages,Offline,C,1/9/2017,917834603,1/13/2017,6510,47.45,31.79,308899.50,206952.90,101946.60 -Europe,Greece,Personal Care,Offline,H,11/5/2016,947779643,12/5/2016,7913,81.73,56.67,646729.49,448429.71,198299.78 -Europe,Monaco,Clothes,Online,L,10/31/2015,166013562,11/26/2015,5957,109.28,35.84,650980.96,213498.88,437482.08 -Sub-Saharan Africa,Nigeria,Beverages,Online,L,1/25/2011,960085189,2/13/2011,9397,47.45,31.79,445887.65,298730.63,147157.02 -Europe,Norway,Cosmetics,Offline,C,11/8/2015,837855851,11/8/2015,9020,437.20,263.33,3943544.00,2375236.60,1568307.40 -North America,Greenland,Snacks,Offline,L,6/24/2010,977499377,8/12/2010,2643,152.58,97.44,403268.94,257533.92,145735.02 -Middle East and North Africa,Tunisia ,Beverages,Online,L,2/27/2014,377502095,3/3/2014,114,47.45,31.79,5409.30,3624.06,1785.24 -Asia,Uzbekistan,Meat,Offline,H,2/5/2013,806662833,3/27/2013,8313,421.89,364.69,3507171.57,3031667.97,475503.60 -Central America and the Caribbean,Saint Kitts and Nevis ,Vegetables,Online,H,4/15/2017,954092919,5/11/2017,6152,154.06,90.93,947777.12,559401.36,388375.76 -Central America and the Caribbean,Belize,Meat,Online,L,4/9/2011,479216182,4/26/2011,9572,421.89,364.69,4038331.08,3490812.68,547518.40 -Sub-Saharan Africa,Angola,Personal Care,Online,H,12/13/2010,461768949,12/30/2010,6548,81.73,56.67,535168.04,371075.16,164092.88 -Asia,Bhutan,Meat,Online,C,5/13/2014,251800048,5/22/2014,2085,421.89,364.69,879640.65,760378.65,119262.00 -Central America and the Caribbean,Honduras,Personal Care,Offline,L,1/16/2013,619670808,2/25/2013,3217,81.73,56.67,262925.41,182307.39,80618.02 -Sub-Saharan Africa,South Sudan,Household,Offline,H,12/9/2010,606055057,1/23/2011,4014,668.27,502.54,2682435.78,2017195.56,665240.22 -Asia,Kyrgyzstan,Baby Food,Online,L,1/24/2013,671939122,2/14/2013,573,255.28,159.42,146275.44,91347.66,54927.78 -Sub-Saharan Africa,Sao Tome and Principe,Cosmetics,Offline,M,2/25/2014,448621833,3/3/2014,6025,437.20,263.33,2634130.00,1586563.25,1047566.75 -Sub-Saharan Africa,Madagascar,Fruits,Online,M,7/23/2017,987714517,9/11/2017,5530,9.33,6.92,51594.90,38267.60,13327.30 -Sub-Saharan Africa,Senegal,Household,Online,H,5/7/2016,711141002,6/14/2016,1280,668.27,502.54,855385.60,643251.20,212134.40 -Sub-Saharan Africa,Sierra Leone,Office Supplies,Online,C,3/24/2012,361137616,4/18/2012,7501,651.21,524.96,4884726.21,3937724.96,947001.25 -Asia,Malaysia,Household,Offline,H,10/3/2011,750253188,11/21/2011,5446,668.27,502.54,3639398.42,2736832.84,902565.58 -Central America and the Caribbean,Cuba,Office Supplies,Online,C,12/22/2014,511349046,1/2/2015,8401,651.21,524.96,5470815.21,4410188.96,1060626.25 -Sub-Saharan Africa,Zimbabwe,Personal Care,Offline,L,8/23/2011,147599017,8/28/2011,6684,81.73,56.67,546283.32,378782.28,167501.04 -Europe,Serbia,Beverages,Online,H,4/18/2015,682489430,5/23/2015,2644,47.45,31.79,125457.80,84052.76,41405.04 -Asia,Maldives,Vegetables,Offline,M,1/11/2014,509819114,2/23/2014,5660,154.06,90.93,871979.60,514663.80,357315.80 -Europe,Ireland,Office Supplies,Offline,M,2/27/2012,343699395,4/2/2012,7144,651.21,524.96,4652244.24,3750314.24,901930.00 -Europe,Romania,Clothes,Offline,L,4/4/2011,968554103,4/8/2011,5537,109.28,35.84,605083.36,198446.08,406637.28 -Europe,Croatia,Beverages,Online,M,12/26/2013,989119565,1/6/2014,1315,47.45,31.79,62396.75,41803.85,20592.90 -Europe,Albania,Vegetables,Offline,M,9/12/2012,880444610,10/31/2012,1980,154.06,90.93,305038.80,180041.40,124997.40 -Central America and the Caribbean,Dominican Republic,Vegetables,Offline,L,12/19/2015,737890565,1/15/2016,7071,154.06,90.93,1089358.26,642966.03,446392.23 -Sub-Saharan Africa,Zimbabwe,Vegetables,Online,M,6/26/2014,727131259,8/9/2014,3153,154.06,90.93,485751.18,286702.29,199048.89 -Sub-Saharan Africa,Ghana,Office Supplies,Offline,L,3/2/2015,634153020,3/11/2015,8826,651.21,524.96,5747579.46,4633296.96,1114282.50 -Asia,Laos,Beverages,Online,H,8/17/2014,315254676,9/8/2014,9719,47.45,31.79,461166.55,308967.01,152199.54 -Central America and the Caribbean,Panama,Personal Care,Offline,M,7/19/2010,147047555,9/3/2010,3494,81.73,56.67,285564.62,198004.98,87559.64 -Sub-Saharan Africa,Angola,Household,Online,L,1/14/2013,576455485,2/13/2013,4843,668.27,502.54,3236431.61,2433801.22,802630.39 -Middle East and North Africa,Syria,Snacks,Offline,L,7/19/2010,770714795,8/26/2010,490,152.58,97.44,74764.20,47745.60,27018.60 -Sub-Saharan Africa,Sierra Leone,Cosmetics,Offline,H,7/11/2011,867374312,8/3/2011,4189,437.20,263.33,1831430.80,1103089.37,728341.43 -Sub-Saharan Africa,Uganda,Fruits,Online,L,5/4/2010,624295365,6/23/2010,1727,9.33,6.92,16112.91,11950.84,4162.07 -Asia,Taiwan,Clothes,Offline,M,10/13/2013,769651782,11/3/2013,5921,109.28,35.84,647046.88,212208.64,434838.24 -Middle East and North Africa,Azerbaijan,Vegetables,Online,C,7/27/2014,751929891,8/1/2014,1619,154.06,90.93,249423.14,147215.67,102207.47 -Asia,Maldives,Office Supplies,Online,H,4/4/2010,989928519,4/11/2010,702,651.21,524.96,457149.42,368521.92,88627.50 -Sub-Saharan Africa,Mauritania,Meat,Offline,H,8/17/2014,622758996,10/1/2014,7081,421.89,364.69,2987403.09,2582369.89,405033.20 -Sub-Saharan Africa,Burundi,Baby Food,Online,H,1/4/2016,659845149,1/29/2016,1698,255.28,159.42,433465.44,270695.16,162770.28 -Sub-Saharan Africa,Zambia,Baby Food,Offline,H,5/17/2011,830923306,6/5/2011,7526,255.28,159.42,1921237.28,1199794.92,721442.36 -Asia,Singapore,Beverages,Offline,L,2/12/2010,936042296,3/17/2010,4571,47.45,31.79,216893.95,145312.09,71581.86 -Sub-Saharan Africa,Ghana,Household,Online,L,2/17/2015,395563447,3/30/2015,4869,668.27,502.54,3253806.63,2446867.26,806939.37 -Sub-Saharan Africa,Guinea,Meat,Offline,M,6/7/2011,500160586,6/7/2011,7487,421.89,364.69,3158690.43,2730434.03,428256.40 -Sub-Saharan Africa,Zambia,Fruits,Online,L,5/26/2015,360820043,7/2/2015,3524,9.33,6.92,32878.92,24386.08,8492.84 -Europe,Georgia,Snacks,Online,C,5/24/2010,958840644,6/2/2010,1109,152.58,97.44,169211.22,108060.96,61150.26 -Middle East and North Africa,Bahrain,Baby Food,Online,M,2/21/2011,195833718,4/7/2011,404,255.28,159.42,103133.12,64405.68,38727.44 -Sub-Saharan Africa,Lesotho,Personal Care,Offline,M,6/28/2014,543723094,7/2/2014,8601,81.73,56.67,702959.73,487418.67,215541.06 -Central America and the Caribbean,Barbados,Cosmetics,Offline,H,10/15/2010,494745099,10/30/2010,4924,437.20,263.33,2152772.80,1296636.92,856135.88 -Middle East and North Africa,Saudi Arabia,Vegetables,Online,H,5/18/2010,411448562,6/30/2010,5628,154.06,90.93,867049.68,511754.04,355295.64 -Europe,Macedonia,Personal Care,Offline,H,2/2/2017,276694810,2/16/2017,8998,81.73,56.67,735406.54,509916.66,225489.88 -Asia,Turkmenistan,Office Supplies,Offline,M,11/24/2016,143657672,1/8/2017,352,651.21,524.96,229225.92,184785.92,44440.00 -Europe,Albania,Baby Food,Online,L,12/23/2011,585823476,1/6/2012,7040,255.28,159.42,1797171.20,1122316.80,674854.40 -Middle East and North Africa,Afghanistan,Clothes,Online,C,12/5/2016,446991050,1/16/2017,3440,109.28,35.84,375923.20,123289.60,252633.60 -Australia and Oceania,Kiribati,Clothes,Offline,M,2/16/2017,891271722,2/22/2017,5963,109.28,35.84,651636.64,213713.92,437922.72 -Middle East and North Africa,Morocco,Cosmetics,Online,C,5/18/2010,453089320,6/16/2010,8053,437.20,263.33,3520771.60,2120596.49,1400175.11 -Europe,Norway,Baby Food,Offline,L,9/7/2010,887180173,10/18/2010,5183,255.28,159.42,1323116.24,826273.86,496842.38 -Europe,Sweden,Cosmetics,Online,L,3/12/2014,418593108,3/25/2014,9858,437.20,263.33,4309917.60,2595907.14,1714010.46 -Asia,Tajikistan,Personal Care,Online,M,7/16/2010,492689454,8/16/2010,6613,81.73,56.67,540480.49,374758.71,165721.78 -Europe,Netherlands,Cosmetics,Online,M,12/5/2016,825143039,12/20/2016,7017,437.20,263.33,3067832.40,1847786.61,1220045.79 -Europe,Spain,Vegetables,Online,L,10/8/2013,751940190,10/10/2013,4667,154.06,90.93,718998.02,424370.31,294627.71 -Sub-Saharan Africa,Chad,Baby Food,Offline,H,8/9/2016,579379737,8/26/2016,194,255.28,159.42,49524.32,30927.48,18596.84 -Europe,Ireland,Meat,Online,C,10/6/2011,234073007,11/20/2011,6259,421.89,364.69,2640609.51,2282594.71,358014.80 -Middle East and North Africa,Pakistan,Meat,Online,C,2/17/2013,612943828,3/1/2013,2554,421.89,364.69,1077507.06,931418.26,146088.80 -Sub-Saharan Africa,Mozambique,Fruits,Online,C,12/14/2012,433228528,12/21/2012,804,9.33,6.92,7501.32,5563.68,1937.64 -Middle East and North Africa,Bahrain,Fruits,Online,L,11/20/2015,282475936,11/28/2015,9762,9.33,6.92,91079.46,67553.04,23526.42 -Asia,Tajikistan,Meat,Online,M,7/7/2012,368547379,7/12/2012,214,421.89,364.69,90284.46,78043.66,12240.80 -Australia and Oceania,New Zealand,Meat,Offline,H,6/2/2013,969616687,6/28/2013,9980,421.89,364.69,4210462.20,3639606.20,570856.00 -Sub-Saharan Africa,Niger,Baby Food,Online,L,2/4/2015,184170186,2/17/2015,8906,255.28,159.42,2273523.68,1419794.52,853729.16 -Europe,Armenia,Fruits,Online,C,4/28/2011,681006705,6/14/2011,3872,9.33,6.92,36125.76,26794.24,9331.52 -Sub-Saharan Africa,Gabon,Baby Food,Online,L,2/1/2012,249237573,2/21/2012,3791,255.28,159.42,967766.48,604361.22,363405.26 -Asia,Kyrgyzstan,Vegetables,Offline,H,1/29/2017,348286616,2/13/2017,4604,154.06,90.93,709292.24,418641.72,290650.52 -Australia and Oceania,Fiji,Clothes,Offline,L,12/1/2011,257890164,12/29/2011,4285,109.28,35.84,468264.80,153574.40,314690.40 -Europe,Romania,Cosmetics,Online,H,5/8/2017,228097045,6/17/2017,7839,437.20,263.33,3427210.80,2064243.87,1362966.93 -Sub-Saharan Africa,Botswana,Cereal,Online,C,5/3/2017,129268586,6/21/2017,2302,205.70,117.11,473521.40,269587.22,203934.18 -Australia and Oceania,Fiji,Cosmetics,Online,M,10/31/2015,802078616,12/9/2015,1741,437.20,263.33,761165.20,458457.53,302707.67 -Europe,Vatican City,Clothes,Offline,C,4/11/2010,907513463,4/19/2010,2256,109.28,35.84,246535.68,80855.04,165680.64 -Asia,Thailand,Vegetables,Online,L,7/17/2010,976871955,8/31/2010,6975,154.06,90.93,1074568.50,634236.75,440331.75 -Europe,Belarus,Cereal,Offline,C,5/31/2012,261765420,7/17/2012,1060,205.70,117.11,218042.00,124136.60,93905.40 -Australia and Oceania,Solomon Islands,Vegetables,Offline,L,7/15/2016,784117686,7/17/2016,6703,154.06,90.93,1032664.18,609503.79,423160.39 -Asia,China,Cosmetics,Offline,M,1/14/2017,586165082,1/27/2017,8128,437.20,263.33,3553561.60,2140346.24,1413215.36 -Sub-Saharan Africa,Angola,Snacks,Online,C,11/26/2012,480456435,12/16/2012,6591,152.58,97.44,1005654.78,642227.04,363427.74 -Asia,Cambodia,Cereal,Online,L,10/3/2011,899853074,10/26/2011,5376,205.70,117.11,1105843.20,629583.36,476259.84 -Central America and the Caribbean,Guatemala,Baby Food,Offline,L,11/30/2010,547528827,12/15/2010,4802,255.28,159.42,1225854.56,765534.84,460319.72 -Sub-Saharan Africa,Namibia,Vegetables,Online,L,5/8/2016,446970021,5/9/2016,7217,154.06,90.93,1111851.02,656241.81,455609.21 -Europe,Serbia,Beverages,Offline,H,2/27/2016,791975486,3/20/2016,2001,47.45,31.79,94947.45,63611.79,31335.66 -Middle East and North Africa,Turkey,Vegetables,Offline,M,8/24/2014,496656548,9/29/2014,564,154.06,90.93,86889.84,51284.52,35605.32 -Middle East and North Africa,Pakistan,Vegetables,Offline,C,5/26/2013,345437037,6/30/2013,1351,154.06,90.93,208135.06,122846.43,85288.63 -Europe,Georgia,Vegetables,Offline,H,1/26/2015,743053281,2/23/2015,4833,154.06,90.93,744571.98,439464.69,305107.29 -Australia and Oceania,Vanuatu,Snacks,Offline,L,1/7/2012,364554107,1/18/2012,8516,152.58,97.44,1299371.28,829799.04,469572.24 -Europe,Luxembourg,Cosmetics,Online,H,10/21/2012,205300843,12/3/2012,1937,437.20,263.33,846856.40,510070.21,336786.19 -Middle East and North Africa,Saudi Arabia,Household,Online,M,9/16/2015,430967319,10/5/2015,1661,668.27,502.54,1109996.47,834718.94,275277.53 -Australia and Oceania,Vanuatu,Meat,Offline,H,6/28/2012,827539861,7/1/2012,6289,421.89,364.69,2653266.21,2293535.41,359730.80 -Central America and the Caribbean,Haiti,Snacks,Offline,H,12/2/2014,351317298,1/14/2015,1450,152.58,97.44,221241.00,141288.00,79953.00 -Sub-Saharan Africa,Tanzania,Household,Offline,C,2/4/2013,278910958,2/4/2013,4805,668.27,502.54,3211037.35,2414704.70,796332.65 -Asia,North Korea,Cosmetics,Offline,C,2/17/2017,157244670,3/15/2017,1047,437.20,263.33,457748.40,275706.51,182041.89 -Middle East and North Africa,Bahrain,Beverages,Online,L,6/24/2015,953554761,7/28/2015,6899,47.45,31.79,327357.55,219319.21,108038.34 -Sub-Saharan Africa,Cote d'Ivoire,Cereal,Online,L,7/30/2016,105390059,8/25/2016,6115,205.70,117.11,1257855.50,716127.65,541727.85 -Asia,Singapore,Cosmetics,Offline,L,10/23/2014,970611894,11/10/2014,4483,437.20,263.33,1959967.60,1180508.39,779459.21 -Asia,Malaysia,Baby Food,Offline,M,12/16/2016,677394092,12/29/2016,4820,255.28,159.42,1230449.60,768404.40,462045.20 -Europe,Albania,Baby Food,Online,L,9/28/2015,474222981,10/26/2015,1973,255.28,159.42,503667.44,314535.66,189131.78 -Sub-Saharan Africa,Gabon,Snacks,Online,L,4/16/2016,779897391,5/5/2016,7824,152.58,97.44,1193785.92,762370.56,431415.36 -Europe,Poland,Snacks,Offline,L,3/27/2017,733528649,3/30/2017,6283,152.58,97.44,958660.14,612215.52,346444.62 -Sub-Saharan Africa,Chad,Office Supplies,Online,H,6/25/2014,444540584,8/2/2014,8292,651.21,524.96,5399833.32,4352968.32,1046865.00 -Sub-Saharan Africa,Republic of the Congo,Clothes,Online,H,7/29/2012,542669522,9/11/2012,6826,109.28,35.84,745945.28,244643.84,501301.44 -Asia,Philippines,Fruits,Offline,L,5/4/2013,827964293,6/1/2013,1888,9.33,6.92,17615.04,13064.96,4550.08 -Europe,France,Snacks,Offline,M,2/2/2012,720786225,2/15/2012,5516,152.58,97.44,841631.28,537479.04,304152.24 -Europe,Germany,Household,Offline,H,7/24/2016,611809146,8/1/2016,6777,668.27,502.54,4528865.79,3405713.58,1123152.21 -Sub-Saharan Africa,Uganda,Personal Care,Online,M,11/4/2012,512019383,12/12/2012,6769,81.73,56.67,553230.37,383599.23,169631.14 -Middle East and North Africa,Bahrain,Personal Care,Online,C,8/5/2014,502715766,8/17/2014,3621,81.73,56.67,295944.33,205202.07,90742.26 -Middle East and North Africa,Jordan,Office Supplies,Offline,M,10/22/2013,285509622,10/28/2013,7497,651.21,524.96,4882121.37,3935625.12,946496.25 -Europe,Montenegro,Beverages,Offline,L,12/1/2014,532324779,1/3/2015,5586,47.45,31.79,265055.70,177578.94,87476.76 -Middle East and North Africa,Tunisia ,Personal Care,Offline,H,11/2/2015,635397565,11/21/2015,7114,81.73,56.67,581427.22,403150.38,178276.84 -Europe,Germany,Cereal,Offline,M,10/7/2011,957276809,11/4/2011,8335,205.70,117.11,1714509.50,976111.85,738397.65 -Europe,Italy,Snacks,Online,L,2/9/2014,580823838,3/21/2014,7536,152.58,97.44,1149842.88,734307.84,415535.04 -Europe,France,Office Supplies,Offline,H,5/29/2016,459212481,6/16/2016,33,651.21,524.96,21489.93,17323.68,4166.25 -Middle East and North Africa,Algeria,Baby Food,Online,L,4/8/2013,265929067,5/23/2013,3175,255.28,159.42,810514.00,506158.50,304355.50 -Asia,Myanmar,Beverages,Online,H,9/20/2011,644772422,10/26/2011,1343,47.45,31.79,63725.35,42693.97,21031.38 -Europe,France,Vegetables,Offline,C,4/12/2012,959853875,5/4/2012,947,154.06,90.93,145894.82,86110.71,59784.11 -Europe,Spain,Vegetables,Online,C,10/2/2012,645597255,10/25/2012,5429,154.06,90.93,836391.74,493658.97,342732.77 -Asia,Cambodia,Baby Food,Offline,C,1/2/2012,556738889,1/25/2012,264,255.28,159.42,67393.92,42086.88,25307.04 -Sub-Saharan Africa,The Gambia,Vegetables,Online,M,9/30/2013,718327605,11/10/2013,7956,154.06,90.93,1225701.36,723439.08,502262.28 -Europe,Russia,Baby Food,Offline,L,3/10/2015,775724732,3/20/2015,3041,255.28,159.42,776306.48,484796.22,291510.26 -Europe,Belarus,Baby Food,Offline,H,10/26/2010,444604098,10/31/2010,7088,255.28,159.42,1809424.64,1129968.96,679455.68 -Middle East and North Africa,Turkey,Beverages,Online,C,5/2/2011,860952031,5/13/2011,3693,47.45,31.79,175232.85,117400.47,57832.38 -Sub-Saharan Africa,Kenya,Meat,Offline,C,2/19/2017,531067359,2/20/2017,3488,421.89,364.69,1471552.32,1272038.72,199513.60 -Middle East and North Africa,Iran,Cosmetics,Offline,M,7/20/2014,281561410,8/2/2014,9133,437.20,263.33,3992947.60,2404992.89,1587954.71 -Asia,Vietnam,Personal Care,Offline,L,6/18/2017,109358012,7/10/2017,321,81.73,56.67,26235.33,18191.07,8044.26 -Europe,Albania,Beverages,Online,L,7/19/2010,531693494,8/6/2010,8775,47.45,31.79,416373.75,278957.25,137416.50 -Central America and the Caribbean,Antigua and Barbuda ,Clothes,Offline,C,8/9/2013,336116683,9/4/2013,3251,109.28,35.84,355269.28,116515.84,238753.44 -Sub-Saharan Africa,Senegal,Cereal,Offline,M,3/23/2017,630488908,4/30/2017,4534,205.70,117.11,932643.80,530976.74,401667.06 -Europe,Netherlands,Fruits,Online,L,10/31/2016,792983996,12/2/2016,441,9.33,6.92,4114.53,3051.72,1062.81 -Europe,Russia,Fruits,Online,C,7/3/2016,722088277,7/3/2016,822,9.33,6.92,7669.26,5688.24,1981.02 -Europe,Slovakia,Cosmetics,Online,H,1/7/2010,386600577,1/29/2010,2557,437.20,263.33,1117920.40,673334.81,444585.59 -Australia and Oceania,East Timor,Beverages,Offline,L,12/6/2014,275632226,1/18/2015,4556,47.45,31.79,216182.20,144835.24,71346.96 -Central America and the Caribbean,Haiti,Vegetables,Offline,H,10/16/2015,948607051,11/27/2015,2761,154.06,90.93,425359.66,251057.73,174301.93 -Middle East and North Africa,Yemen,Cereal,Online,H,5/10/2013,785261380,5/26/2013,5147,205.70,117.11,1058737.90,602765.17,455972.73 -Australia and Oceania,Tuvalu,Cereal,Online,C,3/27/2013,935644042,5/15/2013,6719,205.70,117.11,1382098.30,786862.09,595236.21 -Sub-Saharan Africa,Liberia,Snacks,Offline,M,7/13/2014,370116364,8/17/2014,4512,152.58,97.44,688440.96,439649.28,248791.68 -Asia,North Korea,Beverages,Online,C,8/16/2013,829352176,8/26/2013,2594,47.45,31.79,123085.30,82463.26,40622.04 -Asia,North Korea,Household,Online,M,7/14/2015,974337804,8/7/2015,7063,668.27,502.54,4719991.01,3549440.02,1170550.99 -Europe,Romania,Household,Online,H,12/23/2014,436372077,1/3/2015,1050,668.27,502.54,701683.50,527667.00,174016.50 -Sub-Saharan Africa,Sao Tome and Principe,Cereal,Offline,M,4/27/2015,267066323,5/19/2015,9715,205.70,117.11,1998375.50,1137723.65,860651.85 -Middle East and North Africa,Bahrain,Fruits,Online,M,3/14/2017,688344371,4/28/2017,5251,9.33,6.92,48991.83,36336.92,12654.91 -Middle East and North Africa,Somalia,Cosmetics,Offline,M,10/2/2014,642442548,11/2/2014,1881,437.20,263.33,822373.20,495323.73,327049.47 -Europe,Cyprus,Cereal,Online,C,7/13/2014,941909682,8/1/2014,861,205.70,117.11,177107.70,100831.71,76275.99 -Europe,United Kingdom,Beverages,Offline,C,7/31/2016,219607102,8/13/2016,5477,47.45,31.79,259883.65,174113.83,85769.82 -Europe,Germany,Personal Care,Offline,H,8/30/2010,778708636,9/2/2010,6045,81.73,56.67,494057.85,342570.15,151487.70 -Middle East and North Africa,Somalia,Beverages,Online,M,4/22/2010,942700612,6/6/2010,4915,47.45,31.79,233216.75,156247.85,76968.90 -Australia and Oceania,New Zealand,Household,Offline,H,3/9/2011,905381858,4/8/2011,1466,668.27,502.54,979683.82,736723.64,242960.18 -Middle East and North Africa,Kuwait,Meat,Online,C,1/13/2010,480863702,1/28/2010,7110,421.89,364.69,2999637.90,2592945.90,406692.00 -Asia,Japan,Cosmetics,Online,L,1/6/2016,453569972,2/19/2016,289,437.20,263.33,126350.80,76102.37,50248.43 -Europe,Norway,Baby Food,Offline,H,8/17/2016,328236997,9/10/2016,1476,255.28,159.42,376793.28,235303.92,141489.36 -Sub-Saharan Africa,Lesotho,Personal Care,Offline,C,10/22/2011,579913604,10/23/2011,8177,81.73,56.67,668306.21,463390.59,204915.62 -Europe,Belgium,Cosmetics,Online,H,2/12/2010,403961122,3/20/2010,9928,437.20,263.33,4340521.60,2614340.24,1726181.36 -Central America and the Caribbean,Honduras,Cosmetics,Offline,L,5/29/2017,866053378,6/22/2017,3295,437.20,263.33,1440574.00,867672.35,572901.65 -Europe,Austria,Household,Offline,C,4/17/2010,852176702,5/13/2010,6878,668.27,502.54,4596361.06,3456470.12,1139890.94 -Middle East and North Africa,Oman,Baby Food,Online,M,9/8/2015,218629920,10/20/2015,6307,255.28,159.42,1610050.96,1005461.94,604589.02 -Middle East and North Africa,Oman,Baby Food,Offline,C,2/13/2016,242024362,3/17/2016,9242,255.28,159.42,2359297.76,1473359.64,885938.12 -Europe,Spain,Snacks,Offline,M,2/16/2014,469283854,2/16/2014,376,152.58,97.44,57370.08,36637.44,20732.64 -Middle East and North Africa,Afghanistan,Fruits,Online,C,4/22/2013,967644727,4/30/2013,6433,9.33,6.92,60019.89,44516.36,15503.53 -Central America and the Caribbean,Saint Vincent and the Grenadines,Cosmetics,Offline,L,7/15/2014,974655807,7/23/2014,1167,437.20,263.33,510212.40,307306.11,202906.29 -Europe,Iceland,Vegetables,Online,M,3/7/2012,248178422,3/22/2012,365,154.06,90.93,56231.90,33189.45,23042.45 -Asia,Myanmar,Vegetables,Offline,L,1/14/2013,416386401,2/16/2013,6844,154.06,90.93,1054386.64,622324.92,432061.72 -Europe,Netherlands,Snacks,Offline,L,5/22/2017,927766072,6/20/2017,5453,152.58,97.44,832018.74,531340.32,300678.42 -Europe,Slovakia,Vegetables,Online,M,3/23/2015,401116263,3/31/2015,8071,154.06,90.93,1243418.26,733896.03,509522.23 -Middle East and North Africa,Bahrain,Fruits,Offline,H,9/28/2012,675548303,11/6/2012,8610,9.33,6.92,80331.30,59581.20,20750.10 -Sub-Saharan Africa,Lesotho,Baby Food,Online,L,6/6/2013,960486018,7/4/2013,8012,255.28,159.42,2045303.36,1277273.04,768030.32 -Central America and the Caribbean,Cuba,Clothes,Offline,L,4/2/2014,985665738,5/19/2014,9250,109.28,35.84,1010840.00,331520.00,679320.00 -Middle East and North Africa,Afghanistan,Clothes,Offline,C,1/13/2017,551136291,1/13/2017,2331,109.28,35.84,254731.68,83543.04,171188.64 -Australia and Oceania,Vanuatu,Cereal,Online,L,2/3/2017,877259004,2/16/2017,9289,205.70,117.11,1910747.30,1087834.79,822912.51 -Asia,Bhutan,Beverages,Offline,M,8/5/2014,554707705,9/19/2014,9192,47.45,31.79,436160.40,292213.68,143946.72 -Australia and Oceania,Palau,Cereal,Offline,L,10/6/2010,494468724,10/23/2010,3139,205.70,117.11,645692.30,367608.29,278084.01 -Asia,Indonesia,Personal Care,Online,H,9/10/2011,777840888,10/23/2011,9259,81.73,56.67,756738.07,524707.53,232030.54 -Europe,Andorra,Baby Food,Offline,C,12/12/2016,206435525,1/27/2017,7714,255.28,159.42,1969229.92,1229765.88,739464.04 -Middle East and North Africa,Algeria,Office Supplies,Online,C,10/26/2015,352176463,12/5/2015,5696,651.21,524.96,3709292.16,2990172.16,719120.00 -Australia and Oceania,Vanuatu,Cosmetics,Offline,C,10/14/2013,607300031,10/14/2013,2429,437.20,263.33,1061958.80,639628.57,422330.23 -North America,Mexico,Baby Food,Online,H,8/17/2013,434355056,9/28/2013,4168,255.28,159.42,1064007.04,664462.56,399544.48 -Europe,Macedonia,Fruits,Offline,M,8/7/2011,716202867,9/20/2011,9199,9.33,6.92,85826.67,63657.08,22169.59 -Central America and the Caribbean,Panama,Personal Care,Online,H,5/22/2016,606017291,6/12/2016,2838,81.73,56.67,231949.74,160829.46,71120.28 -Asia,Nepal,Cereal,Offline,H,1/13/2015,677284657,1/15/2015,2436,205.70,117.11,501085.20,285279.96,215805.24 -Asia,Nepal,Fruits,Online,C,7/22/2014,673803794,7/29/2014,2371,9.33,6.92,22121.43,16407.32,5714.11 -Sub-Saharan Africa,Mauritius ,Cereal,Offline,C,6/25/2015,859686028,7/10/2015,9055,205.70,117.11,1862613.50,1060431.05,802182.45 -Sub-Saharan Africa,Sao Tome and Principe,Clothes,Online,H,8/10/2015,669355189,9/26/2015,5930,109.28,35.84,648030.40,212531.20,435499.20 -Central America and the Caribbean,Saint Vincent and the Grenadines,Fruits,Offline,L,10/19/2013,957547605,11/21/2013,8470,9.33,6.92,79025.10,58612.40,20412.70 -Asia,Maldives,Personal Care,Online,M,10/9/2013,849312102,11/23/2013,9180,81.73,56.67,750281.40,520230.60,230050.80 -Sub-Saharan Africa,Swaziland,Personal Care,Offline,H,9/26/2012,890010011,10/14/2012,2595,81.73,56.67,212089.35,147058.65,65030.70 -Middle East and North Africa,Morocco,Cereal,Online,H,10/2/2012,795315158,10/26/2012,284,205.70,117.11,58418.80,33259.24,25159.56 -Asia,Maldives,Clothes,Offline,M,12/11/2016,801213872,1/28/2017,5844,109.28,35.84,638632.32,209448.96,429183.36 -Sub-Saharan Africa,Zimbabwe,Fruits,Offline,C,7/26/2010,314004981,8/9/2010,9907,9.33,6.92,92432.31,68556.44,23875.87 -Asia,India,Cereal,Online,C,3/27/2010,160299813,4/6/2010,5132,205.70,117.11,1055652.40,601008.52,454643.88 -Asia,Tajikistan,Beverages,Offline,C,9/11/2014,337022197,9/22/2014,1212,47.45,31.79,57509.40,38529.48,18979.92 -Sub-Saharan Africa,Lesotho,Snacks,Offline,M,3/9/2016,461408460,3/15/2016,9872,152.58,97.44,1506269.76,961927.68,544342.08 -Asia,Bhutan,Office Supplies,Offline,M,10/19/2011,221007430,11/10/2011,9865,651.21,524.96,6424186.65,5178730.40,1245456.25 -Central America and the Caribbean,Trinidad and Tobago,Snacks,Offline,L,10/31/2014,723680436,12/20/2014,1978,152.58,97.44,301803.24,192736.32,109066.92 -Australia and Oceania,Tuvalu,Fruits,Offline,L,2/23/2013,447601306,3/11/2013,4028,9.33,6.92,37581.24,27873.76,9707.48 -Middle East and North Africa,Iraq,Clothes,Offline,L,10/25/2010,191256368,11/9/2010,5864,109.28,35.84,640817.92,210165.76,430652.16 -Sub-Saharan Africa,The Gambia,Vegetables,Offline,L,10/4/2016,823444449,10/30/2016,4366,154.06,90.93,672625.96,397000.38,275625.58 -Middle East and North Africa,Bahrain,Beverages,Online,C,9/4/2010,133276879,10/17/2010,8445,47.45,31.79,400715.25,268466.55,132248.70 -Middle East and North Africa,Qatar,Meat,Online,H,12/22/2014,480177485,2/7/2015,4043,421.89,364.69,1705701.27,1474441.67,231259.60 -Sub-Saharan Africa,Angola,Household,Offline,H,4/8/2015,243882596,5/11/2015,9135,668.27,502.54,6104646.45,4590702.90,1513943.55 -Central America and the Caribbean,Costa Rica,Cosmetics,Online,L,3/2/2017,574441039,4/6/2017,8724,437.20,263.33,3814132.80,2297290.92,1516841.88 -Australia and Oceania,Papua New Guinea,Household,Online,M,3/14/2012,442214143,5/3/2012,9847,668.27,502.54,6580454.69,4948511.38,1631943.31 -Middle East and North Africa,Qatar,Clothes,Offline,C,11/22/2011,687875735,12/2/2011,6571,109.28,35.84,718078.88,235504.64,482574.24 -Central America and the Caribbean,Saint Kitts and Nevis ,Clothes,Offline,H,9/8/2013,872412145,9/25/2013,4995,109.28,35.84,545853.60,179020.80,366832.80 -Sub-Saharan Africa,Sierra Leone,Fruits,Offline,C,4/23/2012,627122199,4/29/2012,8250,9.33,6.92,76972.50,57090.00,19882.50 -Europe,Russia,Fruits,Online,M,2/14/2011,103617227,3/12/2011,1495,9.33,6.92,13948.35,10345.40,3602.95 -Europe,Lithuania,Vegetables,Offline,M,10/6/2010,423821055,10/22/2010,6923,154.06,90.93,1066557.38,629508.39,437048.99 -Europe,United Kingdom,Vegetables,Online,L,12/8/2012,529970014,1/3/2013,8759,154.06,90.93,1349411.54,796455.87,552955.67 -Asia,Indonesia,Personal Care,Offline,H,8/17/2016,334612929,10/3/2016,8256,81.73,56.67,674762.88,467867.52,206895.36 -Asia,Mongolia,Beverages,Offline,M,4/23/2014,270611131,5/24/2014,8702,47.45,31.79,412909.90,276636.58,136273.32 -Middle East and North Africa,Egypt,Office Supplies,Online,C,11/18/2010,841138446,12/8/2010,413,651.21,524.96,268949.73,216808.48,52141.25 -Sub-Saharan Africa,Comoros,Household,Online,M,4/22/2012,369681203,5/9/2012,5738,668.27,502.54,3834533.26,2883574.52,950958.74 -Europe,Slovenia,Household,Offline,M,4/5/2014,850038230,4/21/2014,4057,668.27,502.54,2711171.39,2038804.78,672366.61 -Middle East and North Africa,Lebanon,Beverages,Online,M,6/21/2013,296320855,7/13/2013,6781,47.45,31.79,321758.45,215567.99,106190.46 -Australia and Oceania,Australia,Cosmetics,Offline,L,7/13/2011,392952907,8/13/2011,2352,437.20,263.33,1028294.40,619352.16,408942.24 -Central America and the Caribbean,Haiti,Snacks,Online,M,2/1/2011,644670712,3/21/2011,1245,152.58,97.44,189962.10,121312.80,68649.30 -Central America and the Caribbean,Saint Kitts and Nevis ,Meat,Online,L,1/27/2012,626523101,2/16/2012,963,421.89,364.69,406280.07,351196.47,55083.60 -Middle East and North Africa,Syria,Vegetables,Offline,M,6/24/2015,433871400,7/1/2015,1044,154.06,90.93,160838.64,94930.92,65907.72 -Asia,Laos,Snacks,Offline,M,1/3/2012,232389438,1/8/2012,8054,152.58,97.44,1228879.32,784781.76,444097.56 -Central America and the Caribbean,Saint Kitts and Nevis ,Cereal,Offline,H,2/21/2016,708063542,3/19/2016,592,205.70,117.11,121774.40,69329.12,52445.28 -Sub-Saharan Africa,Sudan,Vegetables,Offline,H,12/4/2016,817192542,12/22/2016,4288,154.06,90.93,660609.28,389907.84,270701.44 -Central America and the Caribbean,Guatemala,Meat,Offline,H,1/16/2012,936387765,2/29/2012,6803,421.89,364.69,2870117.67,2480986.07,389131.60 -Asia,Brunei,Clothes,Offline,H,8/6/2011,612573039,8/9/2011,2830,109.28,35.84,309262.40,101427.20,207835.20 -Middle East and North Africa,Jordan,Clothes,Online,M,8/12/2011,812984693,8/22/2011,9092,109.28,35.84,993573.76,325857.28,667716.48 -Central America and the Caribbean,Panama,Meat,Offline,C,12/18/2012,775171554,1/5/2013,9344,421.89,364.69,3942140.16,3407663.36,534476.80 -Sub-Saharan Africa,Central African Republic,Household,Online,H,1/10/2010,256994950,2/19/2010,9372,668.27,502.54,6263026.44,4709804.88,1553221.56 -Middle East and North Africa,Bahrain,Beverages,Offline,M,2/28/2017,886628711,3/31/2017,1993,47.45,31.79,94567.85,63357.47,31210.38 -Sub-Saharan Africa,Burundi,Beverages,Online,C,12/8/2011,312559163,12/16/2011,2057,47.45,31.79,97604.65,65392.03,32212.62 -Europe,Austria,Cereal,Online,L,8/18/2014,753585135,9/13/2014,1443,205.70,117.11,296825.10,168989.73,127835.37 -Australia and Oceania,Fiji,Beverages,Offline,H,4/19/2016,448817956,4/22/2016,4062,47.45,31.79,192741.90,129130.98,63610.92 -Australia and Oceania,Fiji,Clothes,Offline,M,11/6/2012,407681453,12/24/2012,856,109.28,35.84,93543.68,30679.04,62864.64 -Europe,Switzerland,Snacks,Online,H,5/27/2016,359911954,6/23/2016,4800,152.58,97.44,732384.00,467712.00,264672.00 -Middle East and North Africa,Yemen,Office Supplies,Offline,M,8/18/2013,105558288,8/19/2013,5898,651.21,524.96,3840836.58,3096214.08,744622.50 -Sub-Saharan Africa,Comoros,Personal Care,Offline,H,12/31/2014,864981782,2/11/2015,6186,81.73,56.67,505581.78,350560.62,155021.16 -Sub-Saharan Africa,Democratic Republic of the Congo,Office Supplies,Online,C,2/4/2013,328856265,2/12/2013,4732,651.21,524.96,3081525.72,2484110.72,597415.00 -Asia,Mongolia,Clothes,Offline,H,9/23/2016,308168065,10/18/2016,2633,109.28,35.84,287734.24,94366.72,193367.52 -Australia and Oceania,Palau,Household,Offline,L,11/1/2016,884216010,11/2/2016,8021,668.27,502.54,5360193.67,4030873.34,1329320.33 -Europe,Monaco,Snacks,Offline,M,12/27/2012,858611428,1/9/2013,1057,152.58,97.44,161277.06,102994.08,58282.98 -Australia and Oceania,Fiji,Cereal,Online,L,3/10/2017,903278148,4/3/2017,8932,205.70,117.11,1837312.40,1046026.52,791285.88 -Sub-Saharan Africa,Mali,Beverages,Online,L,3/17/2012,410452497,3/26/2012,870,47.45,31.79,41281.50,27657.30,13624.20 -Sub-Saharan Africa,Liberia,Cereal,Offline,H,12/17/2015,642683303,1/20/2016,3126,205.70,117.11,643018.20,366085.86,276932.34 -Europe,Switzerland,Beverages,Offline,L,2/18/2017,682831895,3/16/2017,3987,47.45,31.79,189183.15,126746.73,62436.42 -Australia and Oceania,Samoa ,Baby Food,Online,L,11/5/2016,584072101,11/5/2016,8769,255.28,159.42,2238550.32,1397953.98,840596.34 -Asia,Nepal,Meat,Offline,C,4/9/2017,919890248,5/18/2017,4821,421.89,364.69,2033931.69,1758170.49,275761.20 -Middle East and North Africa,Azerbaijan,Snacks,Offline,C,4/18/2010,534085166,4/25/2010,6524,152.58,97.44,995431.92,635698.56,359733.36 -Europe,Georgia,Baby Food,Offline,H,8/1/2011,590768182,9/7/2011,288,255.28,159.42,73520.64,45912.96,27607.68 -Middle East and North Africa,United Arab Emirates,Vegetables,Online,C,5/12/2011,524363124,6/28/2011,9556,154.06,90.93,1472197.36,868927.08,603270.28 -Europe,Finland,Household,Offline,L,1/25/2016,289606320,2/14/2016,9801,668.27,502.54,6549714.27,4925394.54,1624319.73 -Europe,Portugal,Cereal,Offline,C,4/10/2014,811546599,5/8/2014,3528,205.70,117.11,725709.60,413164.08,312545.52`, - input: '使用折线图展示' -}; - -export const gmvData = { - csv: `top10热门城市列表,对应GMV(元),对应核销金额(元),GMV同比增长率 -上海市,1200000000,700000000,1.7 -北京市,470000000,250000000,2 -成都市,350000000,160000000,2 -海口市,320000000,180000000,21.2 -郑州市,300000000,140000000,2.2 -广州市,280000000,130000000,1.6 -杭州市,260000000,240000000,2 -武汉市,220000000,110000000,1.3 -深圳市,220000000,110000000,1.9 -西安市,200000000,180000000,2.9`, - input: '帮我绘制按城市的gmv和增长率,使用双轴图' -}; - -export const bubbleCirclePackingData = { - csv: `industry,gross product -第一产业,88345.1 -第二产业,483164.5 -第三产业,638697.6 -农林牧渔业,92582.4 -工业,401644.3 -建筑业,83383.1 -批发和零售业,114517.7 -交通运输、仓储和邮政业,49673.7 -住宿和餐饮业,17855.3 -金融业,96811.0 -房地产业,73821.3 -其他,279918.4 -`, - input: '请使用气泡圈图帮我绘制' -}; - -export const mapChartData = { - csv: `name,value -Russia,17234034 -Canada,9984670 -China,9596960 -United States of America,9525067 -Brazil,8515167 -`, - input: '请将数据渲染到地图图表中' -}; - -export const rangeColumnChartData = { - csv: `categories,min,max -Category One,76,100 -Category Two,56,108 -Category Three,38,129 -Category Four,58,155 -Category Five,45,120 -Category Six,23,99 -Category Seven,18,56 -Category Eight,18,34 -`, - input: '请使用区间柱图渲染数据' -}; - -export const sunburstChartData = { - csv: `Category0,Category1,Category2,Value -Country A,Region1,Office Supplies,824 -Country A,Region1,Furniture,920 -Country A,Region1,Electronic equipment,936 -Country A,Region2,Office Supplies,1270 -Country A,Region2,Furniture,1399 -Country A,Region2,Electronic equipment,1466 -Country A,Region3,Office Supplies,1408 -Country A,Region3,Furniture,1676 -Country A,Region3,Electronic equipment,1559 -Country A,Region4,Office Supplies,745 -Country A,Region4,Furniture,919 -Country A,Region4,Electronic equipment,781 -Country A,Region5,Office Supplies,267 -Country A,Region5,Furniture,316 -Country A,Region5,Electronic equipment,230 -Country A,Region6,Office Supplies,347 -Country A,Region6,Furniture,501 -Country A,Region6,Electronic equipment,453 -Country B,Region1,Office Supplies,824 -Country B,Region1,Furniture,920 -Country B,Region1,Electronic equipment,936 -Country B,Region2,Office Supplies,1270 -Country B,Region2,Furniture,1399 -Country B,Region2,Electronic equipment,1466 -Country B,Region3,Office Supplies,1408 -Country B,Region3,Furniture,1676 -Country B,Region3,Electronic equipment,1559 -Country B,Region4,Office Supplies,745 -Country B,Region4,Furniture,919 -Country B,Region4,Electronic equipment,781 -Country B,Region5,Office Supplies,267 -Country B,Region5,Furniture,316 -Country B,Region5,Electronic equipment,230 -Country B,Region6,Office Supplies,347 -Country B,Region6,Furniture,501 -Country B,Region6,Electronic equipment,453 -Country C,Region1,Office Supplies,824 -Country C,Region1,Furniture,920 -Country C,Region1,Electronic equipment,936 -Country C,Region2,Office Supplies,1270 -Country C,Region2,Furniture,1399 -Country C,Region2,Electronic equipment,1466 -Country C,Region3,Office Supplies,1408 -Country C,Region3,Furniture,1676 -Country C,Region3,Electronic equipment,1559 -Country C,Region4,Office Supplies,745 -Country C,Region4,Furniture,919 -Country C,Region4,Electronic equipment,781 -Country C,Region5,Office Supplies,267 -Country C,Region5,Furniture,316 -Country C,Region5,Electronic equipment,230 -Country C,Region6,Office Supplies,347 -Country C,Region6,Furniture,501 -Country C,Region6,Electronic equipment,453 -`, - input: '请使用旭日图来渲染数据' -}; - -export const treemapChartData = { - csv: `Category-0,Category-1,Category-2,Category-3,value -query,methods,add,,593 -query,methods,and,,330 -query,methods,average,,287 -query,methods,count,,277 -query,methods,distinct,,292 -query,methods,div,,595 -query,methods,eq,,594 -query,methods,fn,,460 -query,methods,gt,,603 -query,methods,gte,,625 -query,methods,iff,,748 -query,methods,isa,,461 -query,methods,lt,,597 -query,methods,lte,,619 -query,methods,max,,283 -query,methods,min,,283 -query,methods,mod,,591 -query,methods,mul,,603 -query,methods,neq,,599 -query,methods,not,,386 -query,methods,or,,323 -query,methods,orderby,,307 -query,methods,range,,772 -query,methods,select,,296 -query,methods,stddev,,363 -query,methods,sub,,600 -query,methods,sum,,280 -query,methods,update,,307 -query,methods,variance,,335 -query,methods,where,,299 -query,methods,xor,,354 -query,methods,_,,264 -query,AggregateExpression,,,1616 -query,And,,,1027 -query,Arithmetic,,,3891 -query,Average,,,891 -query,BinaryExpression,,,2893 -query,Comparison,,,5103 -query,CompositeExpression,,,3677 -query,Count,,,781 -query,DateUtil,,,4141 -query,Distinct,,,933 -query,Expression,,,5130 -query,ExpressionIterator,,,3617 -query,Fn,,,3240 -query,If,,,2732 -query,IsA,,,2039 -query,Literal,,,1214 -query,Match,,,3748 -query,Maximum,,,843 -query,Minimum,,,843 -query,Not,,,1554 -query,Or,,,970 -query,Query,,,13896 -query,Range,,,1594 -query,StringUtil,,,4130 -query,Sum,,,791 -query,Variable,,,1124 -query,Variance,,,1876 -query,Xor,,,1101 -util,palette,ColorPalette,,6367 -util,palette,Palette,,1229 -util,palette,ShapePalette,,2059 -util,palette,valuePalette,,2291 -util,math,DenseMatrix,,3165 -util,math,IMatrix,,2815 -util,math,SparseMatrix,,3366 -util,heap,FibonacciHeap,,9354 -util,heap,HeapNode,,1233 -util,Arrays,,,8258 -util,Colors,,,10001 -util,Dates,,,8217 -util,Displays,,,12555 -util,Filter,,,2324 -util,Geometry,,,10993 -util,IEvaluable,,,335 -util,IPredicate,,,383 -util,IValueProxy,,,874 -util,Maths,,,17705 -util,Orientation,,,1486 -util,Property,,,5559 -util,Shapes,,,19118 -util,Sort,,,6887 -util,Stats,,,6557 -util,Strings,,,22026 -animate,interpolate,ArrayInterpolator,,1983 -animate,interpolate,ColorInterpolator,,2047 -animate,interpolate,DateInterpolator,,1375 -animate,interpolate,Interpolator,,8746 -animate,interpolate,MatrixInterpolator,,2202 -animate,interpolate,NumberInterpolator,,1382 -animate,interpolate,ObjectInterpolator,,1629 -animate,interpolate,PointInterpolator,,1675 -animate,interpolate,RectangleInterpolator,,2042 -animate,Easing,,,17010 -animate,FunctionSequence,,,5842 -animate,ISchedulable,,,1041 -animate,Parallel,,,5176 -animate,Pause,,,449 -animate,Scheduler,,,5593 -animate,Sequence,,,5534 -animate,Transition,,,9201 -animate,Transitioner,,,19975 -animate,TransitionEvent,,,1116 -animate,Tween,,,6006 -scale,IScaleMap,,,2105 -scale,LinearScale,,,1316 -scale,LogScale,,,3151 -scale,OrdinalScale,,,3770 -scale,QuantileScale,,,2435 -scale,QuantitativeScale,,,4839 -scale,RootScale,,,1756 -scale,Scale,,,4268 -scale,ScaleType,,,1821 -scale,TimeScale,,,5833 -physics,DragForce,,,1082 -physics,GravityForce,,,1336 -physics,IForce,,,319 -physics,NBodyForce,,,10498 -physics,Particle,,,2822 -physics,Simulation,,,9983 -physics,Spring,,,2213 -physics,SpringForce,,,1681 -data,converters,Converters,,721 -data,converters,DelimitedTextConverter,,4294 -data,converters,GraphMLConverter,,9800 -data,converters,IDataConverter,,1314 -data,converters,JSONConverter,,2220 -data,DataField,,,1759 -data,DataSchema,,,2165 -data,DataSet,,,586 -data,DataSource,,,3331 -data,DataTable,,,772 -data,DataUtil,,,3322 -vis,controls,AnchorControl,,2138 -vis,controls,ClickControl,,3824 -vis,controls,Control,,1353 -vis,controls,ControlList,,4665 -vis,controls,DragControl,,2649 -vis,controls,ExpandControl,,2832 -vis,controls,HoverControl,,4896 -vis,controls,IControl,,763 -vis,controls,PanZoomControl,,5222 -vis,controls,SelectionControl,,7862 -vis,controls,TooltipControl,,8435 -vis,operator,layout,AxisLayout,6725 -vis,operator,layout,BundledEdgeRouter,3727 -vis,operator,layout,CircleLayout,9317 -vis,operator,layout,CirclePackingLayout,12003 -vis,operator,layout,DendrogramLayout,4853 -vis,operator,layout,ForceDirectedLayout,8411 -vis,operator,layout,IcicleTreeLayout,4864 -vis,operator,layout,IndentedTreeLayout,3174 -vis,operator,layout,Layout,7881 -vis,operator,layout,NodeLinkTreeLayout,12870 -vis,operator,layout,PieLayout,2728 -vis,operator,layout,RadialTreeLayout,12348 -vis,operator,layout,RandomLayout,870 -vis,operator,layout,StackedAreaLayout,9121 -vis,operator,layout,TreeMapLayout,9191 -vis,operator,encoder,ColorEncoder,3179 -vis,operator,encoder,Encoder,4060 -vis,operator,encoder,PropertyEncoder,4138 -vis,operator,encoder,ShapeEncoder,1690 -vis,operator,encoder,valueEncoder,1830 -vis,operator,distortion,BifocalDistortion,4461 -vis,operator,distortion,Distortion,6314 -vis,operator,distortion,FisheyeDistortion,3444 -vis,operator,filter,FisheyeTreeFilter,5219 -vis,operator,filter,GraphDistanceFilter,3165 -vis,operator,filter,VisibilityFilter,3509 -vis,operator,label,Labeler,9956 -vis,operator,label,RadialLabeler,3899 -vis,operator,label,StackedAreaLabeler,3202 -vis,operator,IOperator,,1286 -vis,operator,Operator,,2490 -vis,operator,OperatorList,,5248 -vis,operator,OperatorSequence,,4190 -vis,operator,OperatorSwitch,,2581 -vis,operator,SortOperator,,2023 -vis,data,render,ArrowType,698 -vis,data,render,EdgeRenderer,5569 -vis,data,render,IRenderer,353 -vis,data,render,ShapeRenderer,2247 -vis,data,Data,,20544 -vis,data,DataList,,19788 -vis,data,DataSprite,,10349 -vis,data,EdgeSprite,,3301 -vis,data,NodeSprite,,19382 -vis,data,ScaleBinding,,11275 -vis,data,Tree,,7147 -vis,data,TreeBuilder,,9930 -vis,axis,Axes,,1302 -vis,axis,Axis,,24593 -vis,axis,AxisGridLine,,652 -vis,axis,AxisLabel,,636 -vis,axis,CartesianAxes,,6703 -vis,events,DataEvent,,2313 -vis,events,SelectionEvent,,1880 -vis,events,TooltipEvent,,1701 -vis,events,VisualizationEvent,,1117 -vis,legend,Legend,,20859 -vis,legend,LegendItem,,4614 -vis,legend,LegendRange,,10530 -vis,Visualization,,,16540 -display,DirtySprite,,,8833 -display,LineSprite,,,1732 -display,RectSprite,,,3623 -display,TextSprite,,,10066 -analytics,graph,BetweennessCentrality,,3534 -analytics,graph,LinkDistance,,5731 -analytics,graph,MaxFlowMinCut,,7840 -analytics,graph,ShortestPaths,,5914 -analytics,graph,SpanningTree,,3416 -analytics,cluster,AgglomerativeCluster,,3938 -analytics,cluster,CommunityStructure,,3812 -analytics,cluster,HierarchicalCluster,,6714 -analytics,cluster,MergeEdge,,743 -analytics,optimization,AspectRatioBanker,,7074 -flex,FlareVis,,,4116`, - input: '请使用矩形树图渲染数据的层次结构' -}; - -export const gaugeChartData = { - csv: `name,value,description - 目标A,0.6,目标A的描述`, - input: '请使用仪表盘来完成数据渲染' -}; - -export const linearProgressChartData = { - csv: `type,value,text -Tradition Industries,0.795,79.5% -Business Companies,0.25,25% -Customer-facing Companies,0.065,6.5%`, - input: '请使用线形进度图来完成数据渲染' -}; - -export const basicHeatMapChartData = { - csv: `Financial Ratio Indicator,Comparison Metric,Correlation Coefficient -Asset Liability Ratio,Asset Liability Ratio,1 -Asset Liability Ratio,Asset Liability Ratio (Deducting Advance Payments),0.594527 -Asset Liability Ratio,Debt-to-long Capital Ratio,0.492963 -Asset Liability Ratio,Long Term Asset Suitability Ratio,-0.160995 -Asset Liability Ratio,Equity Multiplier,0.723664 -Asset Liability Ratio,Equity Ratio of Current Liability,0.658646 -Asset Liability Ratio,Interest Bearing Debt / Fully Invested Capital,-0.857474 -Asset Liability Ratio,Current Liability / Total Liabilities,0.320706 -Asset Liability Ratio,Capital Fixation Ratio,-0.284634 -Asset Liability Ratio,Expected Default Frequency,-0.091423 -Asset Liability Ratio (Deducting Advance Payments),Asset Liability Ratio,0.594527 -Asset Liability Ratio (Deducting Advance Payments),Asset Liability Ratio (Deducting Advance Payments),1 -Asset Liability Ratio (Deducting Advance Payments),Debt-to-long Capital Ratio,0.724546 -Asset Liability Ratio (Deducting Advance Payments),Long Term Asset Suitability Ratio,-0.099318 -Asset Liability Ratio (Deducting Advance Payments),Equity Multiplier,0.540639 -Asset Liability Ratio (Deducting Advance Payments),Equity Ratio of Current Liability,0.49214 -Asset Liability Ratio (Deducting Advance Payments),Interest Bearing Debt / Fully Invested Capital,-0.554039 -Asset Liability Ratio (Deducting Advance Payments),Current Liability / Total Liabilities,0.17127 -Asset Liability Ratio (Deducting Advance Payments),Capital Fixation Ratio,-0.265259 -Asset Liability Ratio (Deducting Advance Payments),Expected Default Frequency,0.068577 -Debt-to-long Capital Ratio,Asset Liability Ratio,0.492963 -Debt-to-long Capital Ratio,Asset Liability Ratio (Deducting Advance Payments),0.724546 -Debt-to-long Capital Ratio,Debt-to-long Capital Ratio,1 -Debt-to-long Capital Ratio,Long Term Asset Suitability Ratio,-0.091338 -Debt-to-long Capital Ratio,Equity Multiplier,0.450542 -Debt-to-long Capital Ratio,Equity Ratio of Current Liability,0.375839 -Debt-to-long Capital Ratio,Interest Bearing Debt / Fully Invested Capital,-0.524955 -Debt-to-long Capital Ratio,Current Liability / Total Liabilities,0.300627 -Debt-to-long Capital Ratio,Capital Fixation Ratio,-0.198362 -Debt-to-long Capital Ratio,Expected Default Frequency,0.033209 -Long Term Asset Suitability Ratio,Asset Liability Ratio,-0.160995 -Long Term Asset Suitability Ratio,Asset Liability Ratio (Deducting Advance Payments),-0.099318 -Long Term Asset Suitability Ratio,Debt-to-long Capital Ratio,-0.091338 -Long Term Asset Suitability Ratio,Long Term Asset Suitability Ratio,1 -Long Term Asset Suitability Ratio,Equity Multiplier,-0.049872 -Long Term Asset Suitability Ratio,Equity Ratio of Current Liability,-0.028452 -Long Term Asset Suitability Ratio,Interest Bearing Debt / Fully Invested Capital,0.157157 -Long Term Asset Suitability Ratio,Current Liability / Total Liabilities,0.009742 -Long Term Asset Suitability Ratio,Capital Fixation Ratio,-0.162374 -Long Term Asset Suitability Ratio,Expected Default Frequency,0.155095 -Equity Multiplier,Asset Liability Ratio,0.723664 -Equity Multiplier,Asset Liability Ratio (Deducting Advance Payments),0.540639 -Equity Multiplier,Debt-to-long Capital Ratio,0.450542 -Equity Multiplier,Long Term Asset Suitability Ratio,-0.049872 -Equity Multiplier,Equity Multiplier,1 -Equity Multiplier,Equity Ratio of Current Liability,0.951933 -Equity Multiplier,Interest Bearing Debt / Fully Invested Capital,-0.651767 -Equity Multiplier,Current Liability / Total Liabilities,0.079052 -Equity Multiplier,Capital Fixation Ratio,-0.535984 -Equity Multiplier,Expected Default Frequency,0.00798 -Equity Ratio of Current Liability,Asset Liability Ratio,0.658646 -Equity Ratio of Current Liability,Asset Liability Ratio (Deducting Advance Payments),0.49214 -Equity Ratio of Current Liability,Debt-to-long Capital Ratio,0.375839 -Equity Ratio of Current Liability,Long Term Asset Suitability Ratio,-0.028452 -Equity Ratio of Current Liability,Equity Multiplier,0.951933 -Equity Ratio of Current Liability,Equity Ratio of Current Liability,1 -Equity Ratio of Current Liability,Interest Bearing Debt / Fully Invested Capital,-0.543147 -Equity Ratio of Current Liability,Current Liability / Total Liabilities,-0.106139 -Equity Ratio of Current Liability,Capital Fixation Ratio,-0.52232 -Equity Ratio of Current Liability,Expected Default Frequency,0.011466 -Interest Bearing Debt / Fully Invested Capital,Asset Liability Ratio,-0.857474 -Interest Bearing Debt / Fully Invested Capital,Asset Liability Ratio (Deducting Advance Payments),-0.554039 -Interest Bearing Debt / Fully Invested Capital,Debt-to-long Capital Ratio,-0.524955 -Interest Bearing Debt / Fully Invested Capital,Long Term Asset Suitability Ratio,0.157157 -Interest Bearing Debt / Fully Invested Capital,Equity Multiplier,-0.651767 -Interest Bearing Debt / Fully Invested Capital,Equity Ratio of Current Liability,-0.543147 -Interest Bearing Debt / Fully Invested Capital,Interest Bearing Debt / Fully Invested Capital,1 -Interest Bearing Debt / Fully Invested Capital,Current Liability / Total Liabilities,-0.595016 -Interest Bearing Debt / Fully Invested Capital,Capital Fixation Ratio,0.310521 -Interest Bearing Debt / Fully Invested Capital,Expected Default Frequency,0.066397 -Current Liability / Total Liabilities,Asset Liability Ratio,0.320706 -Current Liability / Total Liabilities,Asset Liability Ratio (Deducting Advance Payments),0.17127 -Current Liability / Total Liabilities,Debt-to-long Capital Ratio,0.300627 -Current Liability / Total Liabilities,Long Term Asset Suitability Ratio,0.009742 -Current Liability / Total Liabilities,Equity Multiplier,0.079052 -Current Liability / Total Liabilities,Equity Ratio of Current Liability,-0.106139 -Current Liability / Total Liabilities,Interest Bearing Debt / Fully Invested Capital,-0.595016 -Current Liability / Total Liabilities,Current Liability / Total Liabilities,1 -Current Liability / Total Liabilities,Capital Fixation Ratio,-0.105199 -Current Liability / Total Liabilities,Expected Default Frequency,-0.064886 -Capital Fixation Ratio,Asset Liability Ratio,-0.284634 -Capital Fixation Ratio,Asset Liability Ratio (Deducting Advance Payments),-0.265259 -Capital Fixation Ratio,Debt-to-long Capital Ratio,-0.198362 -Capital Fixation Ratio,Long Term Asset Suitability Ratio,-0.162374 -Capital Fixation Ratio,Equity Multiplier,-0.535984 -Capital Fixation Ratio,Equity Ratio of Current Liability,-0.52232 -Capital Fixation Ratio,Interest Bearing Debt / Fully Invested Capital,0.310521 -Capital Fixation Ratio,Current Liability / Total Liabilities,-0.105199 -Capital Fixation Ratio,Capital Fixation Ratio,1 -Capital Fixation Ratio,Expected Default Frequency,-0.080153 -Expected Default Frequency,Asset Liability Ratio,-0.091423 -Expected Default Frequency,Asset Liability Ratio (Deducting Advance Payments),0.068577 -Expected Default Frequency,Debt-to-long Capital Ratio,0.033209 -Expected Default Frequency,Long Term Asset Suitability Ratio,0.155095 -Expected Default Frequency,Equity Multiplier,0.00798 -Expected Default Frequency,Equity Ratio of Current Liability,0.011466 -Expected Default Frequency,Interest Bearing Debt / Fully Invested Capital,0.066397 -Expected Default Frequency,Current Liability / Total Liabilities,-0.064886 -Expected Default Frequency,Capital Fixation Ratio,-0.080153 -Expected Default Frequency,Expected Default Frequency,1`, - input: '请使用热图帮我展示各财务比率指标的相关系数' -}; - -export const vennChartData = { - csv: `sets,name,value -0,A,8 -1,D,8 -2,B,10 -3,C,12 -4,A,4 -4,B,4 -5,A,4 -5,C,4 -6,B,4 -6,C,4 -7,A,2 -7,B,2 -7,C,2`, - input: '帮我展示各元素集合重叠区域,以及分布情况。请使用数据中的sets字段来划分不同集合。' -}; - -export const singleColumnLineCombinationChartData = { - csv: `date,Social Penetration,Engagement - Socialization,Penetration of Private Messages,Number of Private Messages per User -2022-03-08,1.2020804451630671,0.7782279444864411,0.21493020207806002,0.26002007727513005 -2022-03-09,1.911162758594358,0.6970763116149991,0.31807068769079905,1.791161354352144 -2022-03-10,0.919293523406533,0.6754510401577041,0.9774597853017851,1.410289280738493 -2022-03-11,1.613617931982911,4.391274420824463,0.662196540154462,2.374084690062705 -2022-03-12,1.121445896148114,0.5827973501093221,1.547704220622789,0.42545370377775604 -2022-03-13,0.527369749651032,0.321443063009525,0.52384329811226,0.45119753243186805 -2022-03-14,0.07991167814791,0.9838146243033221,1.242674929077965,1.276345431333586 -2022-03-15,0.29341332300751205,0.225492098355163,1.133076821811672,0.22045142924559902 -2022-03-16,1.103150404211427,0.580792120371675,1.261446251860683,0.061775812702848 -2022-03-17,0.38285701953593604,0.510579334822959,0.908573021920086,0.429194248082692 -2022-03-18,0.8908005339482421,1.656998380732747,2.003638269088651,1.194511111230195 -2022-03-19,0.8379933951719881,1.372238730132033,1.285574252451237,0.659056833995271 -2022-03-20,2.913059895355856,3.375041306488803,1.683935730207101,0.40361011204949004 -2022-03-21,1.245523794769467,0.5770535812918991,0.518960506573594,0.8441533797310441 -2022-03-22,1.801955367373218,2.562767955961243,2.076490748024919,1.8682050366367142 -2022-03-23,30.25170429439274,60.10096481599735,31.918470633985613,70.34237647545662 -2022-03-24,2.084831170978463,2.824195229461953,1.735738814795219,3.854924132202267 -2022-03-25,0.8300684679922911,0.37108301055861304,1.072942910906809,0.868965201778456 -2022-03-26,5.057522939533747,6.8131452572139555,10.31725741409195,0.6724835487477681 -2022-03-27,1.364245041731511,0.993289299105189,1.288157916081268,1.290710012048575 -2022-03-28,0.429699282814745,0.27225365805664004,0.24488975421611903,0.944202324553962 -2022-03-29,8.636960050981939,2.663368864789215,3.030888929145336,2.191548298261417 -2022-03-30,0.31233481070398905,1.136502929086737,1.4304534277803231,0.9398051933719991 -2022-03-31,0.8979576483673781,0.8268293005130081,1.32475784490384,0.212383798504713 -2022-04-01,1.187326287404249,1.2824253532703072,0.9289553576582981,1.328758303758777 -2022-04-02,0.013251966153457001,1.580091614771022,0.8470948142995741,1.061518688804395 -2022-04-03,0.150440921215681,0.7793382242254321,0.5908683646183901,1.021428732507816 -2022-04-04,1.437865757864698,0.34207119701235905,1.006103497118929,0.8496566144677861 -2022-04-05,19.70534531285437,4.144335050792541,13.880860231019398,19.78289952089912 -2022-04-06,1.068708512330189,1.336025709304907,7.121018094960213,0.032847589287524 -2022-04-07,3.239083103313066,0.9037359185383671,2.010136943230478,2.758258304057329 -2022-04-08,3.609669038457516,13.698767079174356,14.457401852798982,11.6964360828172 -2022-04-09,0.8581543303200471,1.11771091972957,0.9593788300193951,1.121066838670219 -2022-04-10,1.235338424517758,0.5546236200208831,1.138776207683746,0.5694312841615821 -2022-04-11,0.615560300356359,0.133505664394376,0.575680679073131,0.502679162912634 -2022-04-12,3.5445165395901572,8.458105165611851,2.90160000840929,3.084080663501847 -2022-04-13,1.037776502324676,1.412321112593621,1.416876192652653,0.270647644667579 -2022-04-14,0.534866532613768,0.577163861285873,0.034172330313952004,0.268470350264293 -2022-04-15,3.225952049483959,5.112791338669762,3.745099757241069,2.612195295941399 -2022-04-16,12.278592894400722,13.301401633991011,6.202762040985617,18.098567324029407 -2022-04-17,0.411460847135642,0.8194099242420241,0.6882380919620981,0.645388563624089 -2022-04-18,0.304818623987116,0.601409275693432,0.07904084882979401,0.16144847919011002 -2022-04-19,0.8929797309154061,0.932019259560644,0.013117573233606001,0.36918835535862005 -2022-04-20,4.074891060179412,3.6166710941152713,3.143179675624189,5.283666616893828 -2022-04-21,0.902423656543305,2.682237126638688,0.6180860661837431,1.631115014312209 -2022-04-22,0.868968791964932,0.329339479566271,0.001536382167654,0.807551152019862 -2022-04-23,0.598986391584271,0.923756524041317,0.27081187550692803,0.22998130489182 -2022-04-24,0.27570721725353503,0.6601580208066361,0.7774852739576821,1.107108162852159 -2022-04-25,0.38518667923696703,2.037027697748363,0.859959904015784,0.641738277028276 -2022-04-26,0.622049495688147,0.803863499657206,0.22244045641286703,1.320954321806144 -2022-04-27,3.540727101774814,0.651469202290988,0.509144429951741,0.20073460039620403 -2022-04-28,2.742513433824975,2.6893975459595643,0.13894846116144902,0.7415989059349031 -2022-04-29,1.621566806821747,0.9147556633717211,0.19686640023465302,1.66475441380813 -2022-04-30,2.352493741253538,3.463127996997362,2.931184732430775,1.792534569741266 -2022-05-01,0.023487873849160002,0.5573480476128151,0.544054544143018,0.35016352980012605 -2022-05-02,9.85187760463177,35.95040240058573,10.530894431942714,4.323328789531124 -2022-05-03,6.3835439206943,5.577920982650984,4.483541728043783,3.7796731596206943 -2022-05-04,2.897597920598689,5.106082630695584,8.400221891051206,8.018922971992662 -2022-05-05,0.147546385656207,0.040771286126692,0.6862921980279431,0.44745062012103404 -2022-05-06,4.668438202775402,0.23681078820699203,4.557825514906153,3.46073691075845 -2022-05-07,1.868897716467347,1.727448921279463,0.527497153125138,0.120868915583745 -2022-05-08,1.356875902669512,1.434740383567053,1.25226701190186,0.42909048781311704 -2022-05-09,1.029882775112869,0.9377192673786531,0.643077700672811,0.539461571476962 -2022-05-10,1.079419585437788,0.5840348488590831,0.031193331319320002,0.341612265371036 -2022-05-11,0.43374835866466704,0.01643698693241,0.39325414355653304,0.918926460102595 -2022-05-12,0.6884004244125861,1.538028843999251,0.863652647240271,1.249717355592488 -2022-05-13,0.5513219132650721,1.063801968030616,0.65309749602536,1.244646630025216 -2022-05-14,0.26075436773203503,0.16980099784180802,0.502507081730036,0.026734770744615003 -2022-05-15,3.534068370760441,2.144086432206532,1.989727381483406,1.510725845099207 -2022-05-16,1.051684273070894,1.152664833294427,0.747391405264186,0.283792059973869 -2022-05-17,0.8574030868970931,0.8751363341872681,0.901758308356248,0.41795473321335 -2022-05-18,0.515497463894879,0.8615187586650901,0.43634054682577406,1.895212820019219 -2022-05-19,0.9592457438221671,0.126354125202296,2.8539304550226543,0.77105240170235 -2022-05-20,0.069882250377393,0.7098481312166951,0.5071020864029481,2.543277547025898 -2022-05-21,10.360352568974609,17.706030110118455,2.848137759152337,1.260088014509166 -2022-05-22,1.112796751785197,0.9176470910577301,0.43003615544265306,0.910155627802492 -2022-05-23,4.891916669440483,16.47452431770853,2.744192036280677,1.124249996351633 -2022-05-24,0.09534096170855301,0.7854768368577231,0.6263662592501831,0.19409864063613502 -2022-05-25,17.21160548866725,34.373177238596014,7.564216276703391,17.06769270843336 -2022-05-26,0.9890377076819251,0.789535076533531,0.8798790088553111,0.592040366427117 -2022-05-27,1.207578684423282,0.5312851260232421,1.055373428020675,0.84736634769268 -2022-05-28,15.265265813052475,12.028735185645875,14.171624745847268,35.787490090751945 -2022-05-29,1.667919015486645,1.439873268216485,1.078931580631559,0.9907508552960291 -2022-05-30,2.232083847244808,3.827653889831506,1.429842282923971,3.76351508114206 -2022-05-31,1.113011174076138,1.4295696272440521,1.141933003322777,1.22202135537901 -2022-06-01,0.9839213173080511,1.325995589464272,2.006909504383298,1.7803529363753632 -2022-06-02,3.618368394111176,0.627748977148721,1.176985400742372,1.267728131617331 -2022-06-03,1.5240830060491182,0.83151391784571,1.356692075891955,3.227340286052029 -2022-06-04,0.7108355579615261,0.011530713721830002,0.52485737802621,0.661668615725415 -2022-06-05,1.842738679408876,1.130871471288951,1.189107233207374,3.246025623322408 -2022-06-06,2.968986726243696,2.9958102236757282,0.47619309340284505,1.3335764819663671 -2022-06-07,0.30957106038382504,0.44026116440941004,0.42982954277120905,1.741430660250139 -2022-06-08,3.077870353397237,4.156128784010092,1.021512025143279,4.351094223144934 -2022-06-09,0.460474051903736,1.2828566287818242,0.22198861960947303,0.085629074470341 -2022-06-10,0.9248894668614721,0.23152297348937,0.18500236928827601,0.5925681882904861 -2022-06-11,0.5170229174882011,1.344093064443273,0.6923204827335401,1.013151233597585 -2022-06-12,1.343310704782682,0.42108731154009404,1.547163500435265,0.999128791000602 -2022-06-13,4.213284444567541,2.448703044357372,0.13900479867391702,1.556248326348268 -2022-06-14,0.718083714760927,1.912454128957958,0.24702549770442003,2.037101388253879 -2022-06-15,2.443370806389791,0.010368540480550002,0.133167401519793,2.42241572339565 -2022-06-16,3.594231845735735,0.6677966564200211,4.009094569074379,5.5253640045926335 -2022-06-17,1.113951398490715,0.11111864432229301,0.9730098334869651,0.9908309309721931 -2022-06-18,0.5614439322266921,0.806546956486733,0.32013564834811403,0.8486918887953661 -2022-06-19,1.243458727745012,1.135192118212662,5.021267051723119,4.233329079605447 -2022-06-20,1.31005897849395,1.045144309632654,4.014478741193049,2.239616259510069 -2022-06-21,0.572744269459053,1.076475248295982,0.7240389412682761,0.10908279405984601 -2022-06-22,24.581669047338767,24.02021682920061,37.05462241129788,23.51884099646193 -2022-06-23,0.47413969565051606,0.027051327125384002,0.16824850993617801,0.41568301223291604 -2022-06-24,0.43416765009011604,2.878601660092219,1.9317197675603461,1.840590020030168 -2022-06-25,0.943163264857342,0.019465090936308,0.285177476177572,0.5532414004550751 -2022-06-26,0.233205152479134,1.2557471231721191,1.260075716991639,2.715172232506665 -2022-06-27,3.9663605369632933,0.5849212901405391,3.452510757244162,2.679757899115613 -2022-06-28,0.016605232459512002,0.280224773927022,0.729523367081325,1.105137522496868 -2022-06-29,1.374134760412724,0.751739223993092,0.7538963415227941,1.347929408272255 -2022-06-30,0.715486103147415,0.555444809676618,0.08646395240381301,0.5491110504617991 -2022-07-01,0.747532331413809,1.043273887199711,0.49779032149353303,0.885618995495125 -2022-07-02,0.8670766655477491,1.8724388596735242,0.391981409036455,1.040394051716164 -2022-07-03,0.392542368674532,1.204834846410795,1.103562611606201,0.387838034146796 -2022-07-04,2.354765436840968,0.147183599628016,1.798064276315111,0.33504623462675404 -2022-07-05,0.25059554847566,0.259954349350673,0.407469349519874,3.278091213717644 -2022-07-06,4.720665637767317,2.071271452074246,4.502139668053687,5.134166854414464 -2022-07-07,0.646476205877439,0.186466306558064,0.499133613586184,0.15787863433545202 -2022-07-08,4.428354777598469,7.997827905255312,5.845195208267132,3.695856221993309 -2022-07-09,1.502467804494858,0.33362085354833704,1.26505092951483,0.9204718402028381 -2022-07-10,11.706734521216822,36.550441521853145,19.095991246701065,12.292686689327372 -2022-07-11,1.153083534578196,0.337559642243531,1.154651513638781,0.22569823789057203 -2022-07-12,1.4863362021332551,0.48307852351030106,1.5365158530965122,0.057003071478754004 -2022-07-13,1.61896686341972,0.9387594299650791,1.092431878065284,1.886305858547745 -2022-07-14,49.60818750100216,22.940238837323303,13.579325095732914,38.67416013838181 -2022-07-15,1.785205883890873,0.631304013521069,0.62869350368483,0.34417591219448 -2022-07-16,0.715594243310775,0.984028805544615,0.967817534607272,0.153576028704162 -2022-07-17,0.8147430610328651,0.26284189122074103,2.154865858339681,1.283391109459497 -2022-07-18,1.24545618431753,1.082826448671828,0.45266260254768803,0.084950117524903 -2022-07-19,0.083915091025848,0.5880718113215341,1.007179376918947,0.865719136965563 -2022-07-20,0.32701962372413,0.17041520446782002,1.773905435681336,1.104677623595627 -2022-07-21,0.722041044814348,0.822598941600809,0.9593067917284711,0.41221237294221 -2022-07-22,10.662811760936936,0.183634003906628,13.34157103707886,12.159275730149757 -2022-07-23,0.364677770561312,0.559247300094862,0.40653075149155804,0.9694788164354201 -2022-07-24,0.9157754804402811,1.091835974661574,0.8199135063617131,1.062993342271482 -2022-07-25,0.67849525511577,3.048531280160542,1.471231045142114,0.591416124923933 -2022-07-26,1.330066578741473,1.582638082613582,1.789945856913414,2.192979954983851 -2022-07-27,5.686664774275858,6.436173309221049,4.7854634352690155,1.63427958962943 -2022-07-28,0.22324041916141402,1.428578028660132,1.458686942176205,1.311736714260567 -2022-07-29,2.476037411183793,0.7249411790805861,0.42039676295059203,2.995565219170837 -2022-07-30,0.773637653847835,0.9265499876312321,0.32494629315872703,0.324341917122049 -2022-07-31,0.169152723468269,0.9014047551998651,0.46982772647431204,0.5534444716525361 -2022-08-01,1.519627178758216,1.610068186750942,3.309159861747862,0.529330910775445 -2022-08-02,3.545652606242915,2.330031081649702,3.9640154638953513,3.856552869039815 -2022-08-03,1.3404062798488199,0.462815961543229,0.9670138622828691,1.234951845374218 -2022-08-04,0.6530263834012761,0.08597037675761801,0.9707805498085981,0.16192153323070702 -2022-08-05,0.708729075421144,3.581243043200601,2.651870015387795,2.173110201699371 -2022-08-06,11.986631123295103,10.930286916614767,22.78182877052594,11.135752238663327 -2022-08-07,1.232939713701664,1.8029857915415932,1.476317514220094,0.958792084262276 -2022-08-08,0.530813431405317,2.014631665755229,2.7977280500624433,2.039075329513739 -2022-08-09,2.510188659097596,2.983415297830412,0.126105493389976,2.121594836643942 -2022-08-10,1.622456744339298,1.289582374551249,2.5475660513369442,3.282862603860423 -2022-08-11,0.25962103068208003,0.37516694909806303,0.5828588359439041,0.139231895746797 -2022-08-12,0.884113805589634,1.603259620438238,1.8751590471743,0.24122279792940302 -2022-08-13,8.624685230360152,3.3791466219930433,9.375119750363103,0.7506624109540441 -2022-08-14,1.6498217904306332,2.627126072551769,0.57102589263998,2.4024472876658223 -2022-08-15,5.840124155766275,3.354483317899366,1.075590808840468,2.3650336028113492 -2022-08-16,2.405030143824614,1.444879535922397,0.942851527789979,1.423465983705226 -2022-08-17,1.034391306438299,0.6369673400603011,0.473080126014195,0.8585472144660361 -2022-08-18,4.703412413763946,0.5990722583580821,0.911179769434693,1.189643421133775 -2022-08-19,0.22138733877979702,0.24079634787311602,0.045592515857608006,0.9837464357223601 -2022-08-20,0.14621922149563202,0.096627004274573,0.7910843611370051,0.059870034265504 -2022-08-21,5.702011116768989,11.782408392531364,4.022381962144387,12.55656527594101 -2022-08-22,2.289251748782675,1.846139752930779,1.302218066447416,1.195140815195466 -2022-08-23,0.40156922050687605,2.44670175499675,2.701336009126233,2.5846045653914143 -2022-08-24,16.368686321533847,9.285256494681935,14.17816605948454,6.813674272547164 -2022-08-25,17.325634435909638,40.63547963350666,52.36627420733006,22.12581500864155 -2022-08-26,2.771994472181008,1.432898057334553,0.500652317272802,0.29065103217099203 -2022-08-27,2.705080627435551,1.140228551443707,2.535947091285437,2.068004826572326 -2022-08-28,0.366184071525715,0.37561791103581305,1.087399555743408,1.3431857507096732 -2022-08-29,0.192969279119436,1.203078886727172,0.8966719923838661,1.07779591413233 -2022-08-30,0.248116517168076,0.901524977902984,0.9660257636136701,0.13247782324235202 -2022-08-31,0.7172605174280461,0.22721632248943202,0.9247009404760361,0.28572976740870504 -2022-09-01,0.259653267575217,2.040817156148029,2.19857288799284,2.229208371156883 -2022-09-02,1.398428414171018,0.071469482611002,0.9048807067534731,0.0022491420541680004 -2022-09-03,1.7166677805176591,1.903668070163285,1.866568462888393,1.8648831840830011`, - input: '请使用四个独立的折线的组合图展示不同类别的权重随着时间的变化' -}; - -export const singleColumnLineCombinationChartData1 = { - csv: `date,Social Penetration,Engagement - Socialization,Penetration of Private Messages,Number of Private Messages per User -2022-03-08,1.2020804451630671,0.7782279444864411,0.21493020207806002,0.26002007727513005 -2022-03-09,1.911162758594358,0.6970763116149991,0.31807068769079905,1.791161354352144 -2022-03-10,0.919293523406533,0.6754510401577041,0.9774597853017851,1.410289280738493 -2022-03-11,1.613617931982911,4.391274420824463,0.662196540154462,2.374084690062705 -2022-03-12,1.121445896148114,0.5827973501093221,1.547704220622789,0.42545370377775604 -2022-03-13,0.527369749651032,0.321443063009525,0.52384329811226,0.45119753243186805 -2022-03-14,0.07991167814791,0.9838146243033221,1.242674929077965,1.276345431333586 -2022-03-15,0.29341332300751205,0.225492098355163,1.133076821811672,0.22045142924559902 -2022-03-16,1.103150404211427,0.580792120371675,1.261446251860683,0.061775812702848 -2022-03-17,0.38285701953593604,0.510579334822959,0.908573021920086,0.429194248082692 -2022-03-18,0.8908005339482421,1.656998380732747,2.003638269088651,1.194511111230195 -2022-03-19,0.8379933951719881,1.372238730132033,1.285574252451237,0.659056833995271 -2022-03-20,2.913059895355856,3.375041306488803,1.683935730207101,0.40361011204949004 -2022-03-21,1.245523794769467,0.5770535812918991,0.518960506573594,0.8441533797310441 -2022-03-22,1.801955367373218,2.562767955961243,2.076490748024919,1.8682050366367142 -2022-03-23,30.25170429439274,60.10096481599735,31.918470633985613,70.34237647545662 -2022-03-24,2.084831170978463,2.824195229461953,1.735738814795219,3.854924132202267 -2022-03-25,0.8300684679922911,0.37108301055861304,1.072942910906809,0.868965201778456 -2022-03-26,5.057522939533747,6.8131452572139555,10.31725741409195,0.6724835487477681 -2022-03-27,1.364245041731511,0.993289299105189,1.288157916081268,1.290710012048575 -2022-03-28,0.429699282814745,0.27225365805664004,0.24488975421611903,0.944202324553962 -2022-03-29,8.636960050981939,2.663368864789215,3.030888929145336,2.191548298261417 -2022-03-30,0.31233481070398905,1.136502929086737,1.4304534277803231,0.9398051933719991 -2022-03-31,0.8979576483673781,0.8268293005130081,1.32475784490384,0.212383798504713 -2022-04-01,1.187326287404249,1.2824253532703072,0.9289553576582981,1.328758303758777 -2022-04-02,0.013251966153457001,1.580091614771022,0.8470948142995741,1.061518688804395 -2022-04-03,0.150440921215681,0.7793382242254321,0.5908683646183901,1.021428732507816 -2022-04-04,1.437865757864698,0.34207119701235905,1.006103497118929,0.8496566144677861 -2022-04-05,19.70534531285437,4.144335050792541,13.880860231019398,19.78289952089912 -2022-04-06,1.068708512330189,1.336025709304907,7.121018094960213,0.032847589287524 -2022-04-07,3.239083103313066,0.9037359185383671,2.010136943230478,2.758258304057329 -2022-04-08,3.609669038457516,13.698767079174356,14.457401852798982,11.6964360828172 -2022-04-09,0.8581543303200471,1.11771091972957,0.9593788300193951,1.121066838670219 -2022-04-10,1.235338424517758,0.5546236200208831,1.138776207683746,0.5694312841615821 -2022-04-11,0.615560300356359,0.133505664394376,0.575680679073131,0.502679162912634 -2022-04-12,3.5445165395901572,8.458105165611851,2.90160000840929,3.084080663501847 -2022-04-13,1.037776502324676,1.412321112593621,1.416876192652653,0.270647644667579 -2022-04-14,0.534866532613768,0.577163861285873,0.034172330313952004,0.268470350264293 -2022-04-15,3.225952049483959,5.112791338669762,3.745099757241069,2.612195295941399 -2022-04-16,12.278592894400722,13.301401633991011,6.202762040985617,18.098567324029407 -2022-04-17,0.411460847135642,0.8194099242420241,0.6882380919620981,0.645388563624089 -2022-04-18,0.304818623987116,0.601409275693432,0.07904084882979401,0.16144847919011002 -2022-04-19,0.8929797309154061,0.932019259560644,0.013117573233606001,0.36918835535862005 -2022-04-20,4.074891060179412,3.6166710941152713,3.143179675624189,5.283666616893828 -2022-04-21,0.902423656543305,2.682237126638688,0.6180860661837431,1.631115014312209 -2022-04-22,0.868968791964932,0.329339479566271,0.001536382167654,0.807551152019862 -2022-04-23,0.598986391584271,0.923756524041317,0.27081187550692803,0.22998130489182 -2022-04-24,0.27570721725353503,0.6601580208066361,0.7774852739576821,1.107108162852159 -2022-04-25,0.38518667923696703,2.037027697748363,0.859959904015784,0.641738277028276 -2022-04-26,0.622049495688147,0.803863499657206,0.22244045641286703,1.320954321806144 -2022-04-27,3.540727101774814,0.651469202290988,0.509144429951741,0.20073460039620403 -2022-04-28,2.742513433824975,2.6893975459595643,0.13894846116144902,0.7415989059349031 -2022-04-29,1.621566806821747,0.9147556633717211,0.19686640023465302,1.66475441380813 -2022-04-30,2.352493741253538,3.463127996997362,2.931184732430775,1.792534569741266 -2022-05-01,0.023487873849160002,0.5573480476128151,0.544054544143018,0.35016352980012605 -2022-05-02,9.85187760463177,35.95040240058573,10.530894431942714,4.323328789531124 -2022-05-03,6.3835439206943,5.577920982650984,4.483541728043783,3.7796731596206943 -2022-05-04,2.897597920598689,5.106082630695584,8.400221891051206,8.018922971992662 -2022-05-05,0.147546385656207,0.040771286126692,0.6862921980279431,0.44745062012103404 -2022-05-06,4.668438202775402,0.23681078820699203,4.557825514906153,3.46073691075845 -2022-05-07,1.868897716467347,1.727448921279463,0.527497153125138,0.120868915583745 -2022-05-08,1.356875902669512,1.434740383567053,1.25226701190186,0.42909048781311704 -2022-05-09,1.029882775112869,0.9377192673786531,0.643077700672811,0.539461571476962 -2022-05-10,1.079419585437788,0.5840348488590831,0.031193331319320002,0.341612265371036 -2022-05-11,0.43374835866466704,0.01643698693241,0.39325414355653304,0.918926460102595 -2022-05-12,0.6884004244125861,1.538028843999251,0.863652647240271,1.249717355592488 -2022-05-13,0.5513219132650721,1.063801968030616,0.65309749602536,1.244646630025216 -2022-05-14,0.26075436773203503,0.16980099784180802,0.502507081730036,0.026734770744615003 -2022-05-15,3.534068370760441,2.144086432206532,1.989727381483406,1.510725845099207 -2022-05-16,1.051684273070894,1.152664833294427,0.747391405264186,0.283792059973869 -2022-05-17,0.8574030868970931,0.8751363341872681,0.901758308356248,0.41795473321335 -2022-05-18,0.515497463894879,0.8615187586650901,0.43634054682577406,1.895212820019219 -2022-05-19,0.9592457438221671,0.126354125202296,2.8539304550226543,0.77105240170235 -2022-05-20,0.069882250377393,0.7098481312166951,0.5071020864029481,2.543277547025898 -2022-05-21,10.360352568974609,17.706030110118455,2.848137759152337,1.260088014509166 -2022-05-22,1.112796751785197,0.9176470910577301,0.43003615544265306,0.910155627802492 -2022-05-23,4.891916669440483,16.47452431770853,2.744192036280677,1.124249996351633 -2022-05-24,0.09534096170855301,0.7854768368577231,0.6263662592501831,0.19409864063613502 -2022-05-25,17.21160548866725,34.373177238596014,7.564216276703391,17.06769270843336 -2022-05-26,0.9890377076819251,0.789535076533531,0.8798790088553111,0.592040366427117 -2022-05-27,1.207578684423282,0.5312851260232421,1.055373428020675,0.84736634769268 -2022-05-28,15.265265813052475,12.028735185645875,14.171624745847268,35.787490090751945 -2022-05-29,1.667919015486645,1.439873268216485,1.078931580631559,0.9907508552960291 -2022-05-30,2.232083847244808,3.827653889831506,1.429842282923971,3.76351508114206 -2022-05-31,1.113011174076138,1.4295696272440521,1.141933003322777,1.22202135537901 -2022-06-01,0.9839213173080511,1.325995589464272,2.006909504383298,1.7803529363753632 -2022-06-02,3.618368394111176,0.627748977148721,1.176985400742372,1.267728131617331 -2022-06-03,1.5240830060491182,0.83151391784571,1.356692075891955,3.227340286052029 -2022-06-04,0.7108355579615261,0.011530713721830002,0.52485737802621,0.661668615725415 -2022-06-05,1.842738679408876,1.130871471288951,1.189107233207374,3.246025623322408 -2022-06-06,2.968986726243696,2.9958102236757282,0.47619309340284505,1.3335764819663671 -2022-06-07,0.30957106038382504,0.44026116440941004,0.42982954277120905,1.741430660250139 -2022-06-08,3.077870353397237,4.156128784010092,1.021512025143279,4.351094223144934 -2022-06-09,0.460474051903736,1.2828566287818242,0.22198861960947303,0.085629074470341 -2022-06-10,0.9248894668614721,0.23152297348937,0.18500236928827601,0.5925681882904861 -2022-06-11,0.5170229174882011,1.344093064443273,0.6923204827335401,1.013151233597585 -2022-06-12,1.343310704782682,0.42108731154009404,1.547163500435265,0.999128791000602 -2022-06-13,4.213284444567541,2.448703044357372,0.13900479867391702,1.556248326348268 -2022-06-14,0.718083714760927,1.912454128957958,0.24702549770442003,2.037101388253879 -2022-06-15,2.443370806389791,0.010368540480550002,0.133167401519793,2.42241572339565 -2022-06-16,3.594231845735735,0.6677966564200211,4.009094569074379,5.5253640045926335 -2022-06-17,1.113951398490715,0.11111864432229301,0.9730098334869651,0.9908309309721931 -2022-06-18,0.5614439322266921,0.806546956486733,0.32013564834811403,0.8486918887953661 -2022-06-19,1.243458727745012,1.135192118212662,5.021267051723119,4.233329079605447 -2022-06-20,1.31005897849395,1.045144309632654,4.014478741193049,2.239616259510069 -2022-06-21,0.572744269459053,1.076475248295982,0.7240389412682761,0.10908279405984601 -2022-06-22,24.581669047338767,24.02021682920061,37.05462241129788,23.51884099646193 -2022-06-23,0.47413969565051606,0.027051327125384002,0.16824850993617801,0.41568301223291604 -2022-06-24,0.43416765009011604,2.878601660092219,1.9317197675603461,1.840590020030168 -2022-06-25,0.943163264857342,0.019465090936308,0.285177476177572,0.5532414004550751 -2022-06-26,0.233205152479134,1.2557471231721191,1.260075716991639,2.715172232506665 -2022-06-27,3.9663605369632933,0.5849212901405391,3.452510757244162,2.679757899115613 -2022-06-28,0.016605232459512002,0.280224773927022,0.729523367081325,1.105137522496868 -2022-06-29,1.374134760412724,0.751739223993092,0.7538963415227941,1.347929408272255 -2022-06-30,0.715486103147415,0.555444809676618,0.08646395240381301,0.5491110504617991 -2022-07-01,0.747532331413809,1.043273887199711,0.49779032149353303,0.885618995495125 -2022-07-02,0.8670766655477491,1.8724388596735242,0.391981409036455,1.040394051716164 -2022-07-03,0.392542368674532,1.204834846410795,1.103562611606201,0.387838034146796 -2022-07-04,2.354765436840968,0.147183599628016,1.798064276315111,0.33504623462675404 -2022-07-05,0.25059554847566,0.259954349350673,0.407469349519874,3.278091213717644 -2022-07-06,4.720665637767317,2.071271452074246,4.502139668053687,5.134166854414464 -2022-07-07,0.646476205877439,0.186466306558064,0.499133613586184,0.15787863433545202 -2022-07-08,4.428354777598469,7.997827905255312,5.845195208267132,3.695856221993309 -2022-07-09,1.502467804494858,0.33362085354833704,1.26505092951483,0.9204718402028381 -2022-07-10,11.706734521216822,36.550441521853145,19.095991246701065,12.292686689327372 -2022-07-11,1.153083534578196,0.337559642243531,1.154651513638781,0.22569823789057203 -2022-07-12,1.4863362021332551,0.48307852351030106,1.5365158530965122,0.057003071478754004 -2022-07-13,1.61896686341972,0.9387594299650791,1.092431878065284,1.886305858547745 -2022-07-14,49.60818750100216,22.940238837323303,13.579325095732914,38.67416013838181 -2022-07-15,1.785205883890873,0.631304013521069,0.62869350368483,0.34417591219448 -2022-07-16,0.715594243310775,0.984028805544615,0.967817534607272,0.153576028704162 -2022-07-17,0.8147430610328651,0.26284189122074103,2.154865858339681,1.283391109459497 -2022-07-18,1.24545618431753,1.082826448671828,0.45266260254768803,0.084950117524903 -2022-07-19,0.083915091025848,0.5880718113215341,1.007179376918947,0.865719136965563 -2022-07-20,0.32701962372413,0.17041520446782002,1.773905435681336,1.104677623595627 -2022-07-21,0.722041044814348,0.822598941600809,0.9593067917284711,0.41221237294221 -2022-07-22,10.662811760936936,0.183634003906628,13.34157103707886,12.159275730149757 -2022-07-23,0.364677770561312,0.559247300094862,0.40653075149155804,0.9694788164354201 -2022-07-24,0.9157754804402811,1.091835974661574,0.8199135063617131,1.062993342271482 -2022-07-25,0.67849525511577,3.048531280160542,1.471231045142114,0.591416124923933 -2022-07-26,1.330066578741473,1.582638082613582,1.789945856913414,2.192979954983851 -2022-07-27,5.686664774275858,6.436173309221049,4.7854634352690155,1.63427958962943 -2022-07-28,0.22324041916141402,1.428578028660132,1.458686942176205,1.311736714260567 -2022-07-29,2.476037411183793,0.7249411790805861,0.42039676295059203,2.995565219170837 -2022-07-30,0.773637653847835,0.9265499876312321,0.32494629315872703,0.324341917122049 -2022-07-31,0.169152723468269,0.9014047551998651,0.46982772647431204,0.5534444716525361 -2022-08-01,1.519627178758216,1.610068186750942,3.309159861747862,0.529330910775445 -2022-08-02,3.545652606242915,2.330031081649702,3.9640154638953513,3.856552869039815 -2022-08-03,1.3404062798488199,0.462815961543229,0.9670138622828691,1.234951845374218 -2022-08-04,0.6530263834012761,0.08597037675761801,0.9707805498085981,0.16192153323070702 -2022-08-05,0.708729075421144,3.581243043200601,2.651870015387795,2.173110201699371 -2022-08-06,11.986631123295103,10.930286916614767,22.78182877052594,11.135752238663327 -2022-08-07,1.232939713701664,1.8029857915415932,1.476317514220094,0.958792084262276 -2022-08-08,0.530813431405317,2.014631665755229,2.7977280500624433,2.039075329513739 -2022-08-09,2.510188659097596,2.983415297830412,0.126105493389976,2.121594836643942 -2022-08-10,1.622456744339298,1.289582374551249,2.5475660513369442,3.282862603860423 -2022-08-11,0.25962103068208003,0.37516694909806303,0.5828588359439041,0.139231895746797 -2022-08-12,0.884113805589634,1.603259620438238,1.8751590471743,0.24122279792940302 -2022-08-13,8.624685230360152,3.3791466219930433,9.375119750363103,0.7506624109540441 -2022-08-14,1.6498217904306332,2.627126072551769,0.57102589263998,2.4024472876658223 -2022-08-15,5.840124155766275,3.354483317899366,1.075590808840468,2.3650336028113492 -2022-08-16,2.405030143824614,1.444879535922397,0.942851527789979,1.423465983705226 -2022-08-17,1.034391306438299,0.6369673400603011,0.473080126014195,0.8585472144660361 -2022-08-18,4.703412413763946,0.5990722583580821,0.911179769434693,1.189643421133775 -2022-08-19,0.22138733877979702,0.24079634787311602,0.045592515857608006,0.9837464357223601 -2022-08-20,0.14621922149563202,0.096627004274573,0.7910843611370051,0.059870034265504 -2022-08-21,5.702011116768989,11.782408392531364,4.022381962144387,12.55656527594101 -2022-08-22,2.289251748782675,1.846139752930779,1.302218066447416,1.195140815195466 -2022-08-23,0.40156922050687605,2.44670175499675,2.701336009126233,2.5846045653914143 -2022-08-24,16.368686321533847,9.285256494681935,14.17816605948454,6.813674272547164 -2022-08-25,17.325634435909638,40.63547963350666,52.36627420733006,22.12581500864155 -2022-08-26,2.771994472181008,1.432898057334553,0.500652317272802,0.29065103217099203 -2022-08-27,2.705080627435551,1.140228551443707,2.535947091285437,2.068004826572326 -2022-08-28,0.366184071525715,0.37561791103581305,1.087399555743408,1.3431857507096732 -2022-08-29,0.192969279119436,1.203078886727172,0.8966719923838661,1.07779591413233 -2022-08-30,0.248116517168076,0.901524977902984,0.9660257636136701,0.13247782324235202 -2022-08-31,0.7172605174280461,0.22721632248943202,0.9247009404760361,0.28572976740870504 -2022-09-01,0.259653267575217,2.040817156148029,2.19857288799284,2.229208371156883 -2022-09-02,1.398428414171018,0.071469482611002,0.9048807067534731,0.0022491420541680004 -2022-09-03,1.7166677805176591,1.903668070163285,1.866568462888393,1.8648831840830011`, - input: - '请使用组合图分别展示Social Penetration和Engagement - Socialization类别的权重随着时间的变化,以及Penetration of Private Messages和Number of Private Messages per User类别的权重随着时间的变化' -}; - -export const singleColumnBarCombinationChartData = { - csv: `region,可乐销售额,雪碧销售额,芬达销售额,醒目销售额 -south,2350,215,345,1476 -east,1027,654,654,830 -west,1027,159,2100,532 -north,1027,28,1679,498 -`, - input: '帮我使用四个不同柱图的组合展示四个区域上不同商品销售额' -}; - -export const singleColumnBarCombinationChartData1 = { - csv: `date,Social Penetration,Engagement - Socialization,Penetration of Private Messages,Number of Private Messages per User -2022-03-08,1.2020804451630671,0.7782279444864411,0.21493020207806002,0.26002007727513005 -2022-03-09,1.911162758594358,0.6970763116149991,0.31807068769079905,1.791161354352144 -2022-03-10,0.919293523406533,0.6754510401577041,0.9774597853017851,1.410289280738493 -2022-03-11,1.613617931982911,4.391274420824463,0.662196540154462,2.374084690062705 -2022-03-12,1.121445896148114,0.5827973501093221,1.547704220622789,0.42545370377775604 -2022-03-13,0.527369749651032,0.321443063009525,0.52384329811226,0.45119753243186805 -2022-03-14,0.07991167814791,0.9838146243033221,1.242674929077965,1.276345431333586 -2022-03-15,0.29341332300751205,0.225492098355163,1.133076821811672,0.22045142924559902 -2022-03-16,1.103150404211427,0.580792120371675,1.261446251860683,0.061775812702848 -2022-03-17,0.38285701953593604,0.510579334822959,0.908573021920086,0.429194248082692 -2022-03-18,0.8908005339482421,1.656998380732747,2.003638269088651,1.194511111230195 -2022-03-19,0.8379933951719881,1.372238730132033,1.285574252451237,0.659056833995271 -2022-03-20,2.913059895355856,3.375041306488803,1.683935730207101,0.40361011204949004 -2022-03-21,1.245523794769467,0.5770535812918991,0.518960506573594,0.8441533797310441 -2022-03-22,1.801955367373218,2.562767955961243,2.076490748024919,1.8682050366367142 -2022-03-23,30.25170429439274,60.10096481599735,31.918470633985613,70.34237647545662 -2022-03-24,2.084831170978463,2.824195229461953,1.735738814795219,3.854924132202267 -2022-03-25,0.8300684679922911,0.37108301055861304,1.072942910906809,0.868965201778456 -2022-03-26,5.057522939533747,6.8131452572139555,10.31725741409195,0.6724835487477681 -2022-03-27,1.364245041731511,0.993289299105189,1.288157916081268,1.290710012048575 -2022-03-28,0.429699282814745,0.27225365805664004,0.24488975421611903,0.944202324553962 -2022-03-29,8.636960050981939,2.663368864789215,3.030888929145336,2.191548298261417 -2022-03-30,0.31233481070398905,1.136502929086737,1.4304534277803231,0.9398051933719991 -2022-03-31,0.8979576483673781,0.8268293005130081,1.32475784490384,0.212383798504713 -2022-04-01,1.187326287404249,1.2824253532703072,0.9289553576582981,1.328758303758777 -2022-04-02,0.013251966153457001,1.580091614771022,0.8470948142995741,1.061518688804395 -2022-04-03,0.150440921215681,0.7793382242254321,0.5908683646183901,1.021428732507816 -2022-04-04,1.437865757864698,0.34207119701235905,1.006103497118929,0.8496566144677861 -2022-04-05,19.70534531285437,4.144335050792541,13.880860231019398,19.78289952089912 -2022-04-06,1.068708512330189,1.336025709304907,7.121018094960213,0.032847589287524 -2022-04-07,3.239083103313066,0.9037359185383671,2.010136943230478,2.758258304057329 -2022-04-08,3.609669038457516,13.698767079174356,14.457401852798982,11.6964360828172 -2022-04-09,0.8581543303200471,1.11771091972957,0.9593788300193951,1.121066838670219 -2022-04-10,1.235338424517758,0.5546236200208831,1.138776207683746,0.5694312841615821 -2022-04-11,0.615560300356359,0.133505664394376,0.575680679073131,0.502679162912634 -2022-04-12,3.5445165395901572,8.458105165611851,2.90160000840929,3.084080663501847 -2022-04-13,1.037776502324676,1.412321112593621,1.416876192652653,0.270647644667579 -2022-04-14,0.534866532613768,0.577163861285873,0.034172330313952004,0.268470350264293 -2022-04-15,3.225952049483959,5.112791338669762,3.745099757241069,2.612195295941399 -2022-04-16,12.278592894400722,13.301401633991011,6.202762040985617,18.098567324029407 -2022-04-17,0.411460847135642,0.8194099242420241,0.6882380919620981,0.645388563624089 -2022-04-18,0.304818623987116,0.601409275693432,0.07904084882979401,0.16144847919011002 -2022-04-19,0.8929797309154061,0.932019259560644,0.013117573233606001,0.36918835535862005 -2022-04-20,4.074891060179412,3.6166710941152713,3.143179675624189,5.283666616893828 -2022-04-21,0.902423656543305,2.682237126638688,0.6180860661837431,1.631115014312209 -2022-04-22,0.868968791964932,0.329339479566271,0.001536382167654,0.807551152019862 -2022-04-23,0.598986391584271,0.923756524041317,0.27081187550692803,0.22998130489182 -2022-04-24,0.27570721725353503,0.6601580208066361,0.7774852739576821,1.107108162852159 -2022-04-25,0.38518667923696703,2.037027697748363,0.859959904015784,0.641738277028276 -2022-04-26,0.622049495688147,0.803863499657206,0.22244045641286703,1.320954321806144 -2022-04-27,3.540727101774814,0.651469202290988,0.509144429951741,0.20073460039620403 -2022-04-28,2.742513433824975,2.6893975459595643,0.13894846116144902,0.7415989059349031 -2022-04-29,1.621566806821747,0.9147556633717211,0.19686640023465302,1.66475441380813 -2022-04-30,2.352493741253538,3.463127996997362,2.931184732430775,1.792534569741266 -2022-05-01,0.023487873849160002,0.5573480476128151,0.544054544143018,0.35016352980012605 -2022-05-02,9.85187760463177,35.95040240058573,10.530894431942714,4.323328789531124 -2022-05-03,6.3835439206943,5.577920982650984,4.483541728043783,3.7796731596206943 -2022-05-04,2.897597920598689,5.106082630695584,8.400221891051206,8.018922971992662 -2022-05-05,0.147546385656207,0.040771286126692,0.6862921980279431,0.44745062012103404 -2022-05-06,4.668438202775402,0.23681078820699203,4.557825514906153,3.46073691075845 -2022-05-07,1.868897716467347,1.727448921279463,0.527497153125138,0.120868915583745 -2022-05-08,1.356875902669512,1.434740383567053,1.25226701190186,0.42909048781311704 -2022-05-09,1.029882775112869,0.9377192673786531,0.643077700672811,0.539461571476962 -2022-05-10,1.079419585437788,0.5840348488590831,0.031193331319320002,0.341612265371036 -2022-05-11,0.43374835866466704,0.01643698693241,0.39325414355653304,0.918926460102595 -2022-05-12,0.6884004244125861,1.538028843999251,0.863652647240271,1.249717355592488 -2022-05-13,0.5513219132650721,1.063801968030616,0.65309749602536,1.244646630025216 -2022-05-14,0.26075436773203503,0.16980099784180802,0.502507081730036,0.026734770744615003 -2022-05-15,3.534068370760441,2.144086432206532,1.989727381483406,1.510725845099207 -2022-05-16,1.051684273070894,1.152664833294427,0.747391405264186,0.283792059973869 -2022-05-17,0.8574030868970931,0.8751363341872681,0.901758308356248,0.41795473321335 -2022-05-18,0.515497463894879,0.8615187586650901,0.43634054682577406,1.895212820019219 -2022-05-19,0.9592457438221671,0.126354125202296,2.8539304550226543,0.77105240170235 -2022-05-20,0.069882250377393,0.7098481312166951,0.5071020864029481,2.543277547025898 -2022-05-21,10.360352568974609,17.706030110118455,2.848137759152337,1.260088014509166 -2022-05-22,1.112796751785197,0.9176470910577301,0.43003615544265306,0.910155627802492 -2022-05-23,4.891916669440483,16.47452431770853,2.744192036280677,1.124249996351633 -2022-05-24,0.09534096170855301,0.7854768368577231,0.6263662592501831,0.19409864063613502 -2022-05-25,17.21160548866725,34.373177238596014,7.564216276703391,17.06769270843336 -2022-05-26,0.9890377076819251,0.789535076533531,0.8798790088553111,0.592040366427117 -2022-05-27,1.207578684423282,0.5312851260232421,1.055373428020675,0.84736634769268 -2022-05-28,15.265265813052475,12.028735185645875,14.171624745847268,35.787490090751945 -2022-05-29,1.667919015486645,1.439873268216485,1.078931580631559,0.9907508552960291 -2022-05-30,2.232083847244808,3.827653889831506,1.429842282923971,3.76351508114206 -2022-05-31,1.113011174076138,1.4295696272440521,1.141933003322777,1.22202135537901 -2022-06-01,0.9839213173080511,1.325995589464272,2.006909504383298,1.7803529363753632 -2022-06-02,3.618368394111176,0.627748977148721,1.176985400742372,1.267728131617331 -2022-06-03,1.5240830060491182,0.83151391784571,1.356692075891955,3.227340286052029 -2022-06-04,0.7108355579615261,0.011530713721830002,0.52485737802621,0.661668615725415 -2022-06-05,1.842738679408876,1.130871471288951,1.189107233207374,3.246025623322408 -2022-06-06,2.968986726243696,2.9958102236757282,0.47619309340284505,1.3335764819663671 -2022-06-07,0.30957106038382504,0.44026116440941004,0.42982954277120905,1.741430660250139 -2022-06-08,3.077870353397237,4.156128784010092,1.021512025143279,4.351094223144934 -2022-06-09,0.460474051903736,1.2828566287818242,0.22198861960947303,0.085629074470341 -2022-06-10,0.9248894668614721,0.23152297348937,0.18500236928827601,0.5925681882904861 -2022-06-11,0.5170229174882011,1.344093064443273,0.6923204827335401,1.013151233597585 -2022-06-12,1.343310704782682,0.42108731154009404,1.547163500435265,0.999128791000602 -2022-06-13,4.213284444567541,2.448703044357372,0.13900479867391702,1.556248326348268 -2022-06-14,0.718083714760927,1.912454128957958,0.24702549770442003,2.037101388253879 -2022-06-15,2.443370806389791,0.010368540480550002,0.133167401519793,2.42241572339565 -2022-06-16,3.594231845735735,0.6677966564200211,4.009094569074379,5.5253640045926335 -2022-06-17,1.113951398490715,0.11111864432229301,0.9730098334869651,0.9908309309721931 -2022-06-18,0.5614439322266921,0.806546956486733,0.32013564834811403,0.8486918887953661 -2022-06-19,1.243458727745012,1.135192118212662,5.021267051723119,4.233329079605447 -2022-06-20,1.31005897849395,1.045144309632654,4.014478741193049,2.239616259510069 -2022-06-21,0.572744269459053,1.076475248295982,0.7240389412682761,0.10908279405984601 -2022-06-22,24.581669047338767,24.02021682920061,37.05462241129788,23.51884099646193 -2022-06-23,0.47413969565051606,0.027051327125384002,0.16824850993617801,0.41568301223291604 -2022-06-24,0.43416765009011604,2.878601660092219,1.9317197675603461,1.840590020030168 -2022-06-25,0.943163264857342,0.019465090936308,0.285177476177572,0.5532414004550751 -2022-06-26,0.233205152479134,1.2557471231721191,1.260075716991639,2.715172232506665 -2022-06-27,3.9663605369632933,0.5849212901405391,3.452510757244162,2.679757899115613 -2022-06-28,0.016605232459512002,0.280224773927022,0.729523367081325,1.105137522496868 -2022-06-29,1.374134760412724,0.751739223993092,0.7538963415227941,1.347929408272255 -2022-06-30,0.715486103147415,0.555444809676618,0.08646395240381301,0.5491110504617991 -2022-07-01,0.747532331413809,1.043273887199711,0.49779032149353303,0.885618995495125 -2022-07-02,0.8670766655477491,1.8724388596735242,0.391981409036455,1.040394051716164 -2022-07-03,0.392542368674532,1.204834846410795,1.103562611606201,0.387838034146796 -2022-07-04,2.354765436840968,0.147183599628016,1.798064276315111,0.33504623462675404 -2022-07-05,0.25059554847566,0.259954349350673,0.407469349519874,3.278091213717644 -2022-07-06,4.720665637767317,2.071271452074246,4.502139668053687,5.134166854414464 -2022-07-07,0.646476205877439,0.186466306558064,0.499133613586184,0.15787863433545202 -2022-07-08,4.428354777598469,7.997827905255312,5.845195208267132,3.695856221993309 -2022-07-09,1.502467804494858,0.33362085354833704,1.26505092951483,0.9204718402028381 -2022-07-10,11.706734521216822,36.550441521853145,19.095991246701065,12.292686689327372 -2022-07-11,1.153083534578196,0.337559642243531,1.154651513638781,0.22569823789057203 -2022-07-12,1.4863362021332551,0.48307852351030106,1.5365158530965122,0.057003071478754004 -2022-07-13,1.61896686341972,0.9387594299650791,1.092431878065284,1.886305858547745 -2022-07-14,49.60818750100216,22.940238837323303,13.579325095732914,38.67416013838181 -2022-07-15,1.785205883890873,0.631304013521069,0.62869350368483,0.34417591219448 -2022-07-16,0.715594243310775,0.984028805544615,0.967817534607272,0.153576028704162 -2022-07-17,0.8147430610328651,0.26284189122074103,2.154865858339681,1.283391109459497 -2022-07-18,1.24545618431753,1.082826448671828,0.45266260254768803,0.084950117524903 -2022-07-19,0.083915091025848,0.5880718113215341,1.007179376918947,0.865719136965563 -2022-07-20,0.32701962372413,0.17041520446782002,1.773905435681336,1.104677623595627 -2022-07-21,0.722041044814348,0.822598941600809,0.9593067917284711,0.41221237294221 -2022-07-22,10.662811760936936,0.183634003906628,13.34157103707886,12.159275730149757 -2022-07-23,0.364677770561312,0.559247300094862,0.40653075149155804,0.9694788164354201 -2022-07-24,0.9157754804402811,1.091835974661574,0.8199135063617131,1.062993342271482 -2022-07-25,0.67849525511577,3.048531280160542,1.471231045142114,0.591416124923933 -2022-07-26,1.330066578741473,1.582638082613582,1.789945856913414,2.192979954983851 -2022-07-27,5.686664774275858,6.436173309221049,4.7854634352690155,1.63427958962943 -2022-07-28,0.22324041916141402,1.428578028660132,1.458686942176205,1.311736714260567 -2022-07-29,2.476037411183793,0.7249411790805861,0.42039676295059203,2.995565219170837 -2022-07-30,0.773637653847835,0.9265499876312321,0.32494629315872703,0.324341917122049 -2022-07-31,0.169152723468269,0.9014047551998651,0.46982772647431204,0.5534444716525361 -2022-08-01,1.519627178758216,1.610068186750942,3.309159861747862,0.529330910775445 -2022-08-02,3.545652606242915,2.330031081649702,3.9640154638953513,3.856552869039815 -2022-08-03,1.3404062798488199,0.462815961543229,0.9670138622828691,1.234951845374218 -2022-08-04,0.6530263834012761,0.08597037675761801,0.9707805498085981,0.16192153323070702 -2022-08-05,0.708729075421144,3.581243043200601,2.651870015387795,2.173110201699371 -2022-08-06,11.986631123295103,10.930286916614767,22.78182877052594,11.135752238663327 -2022-08-07,1.232939713701664,1.8029857915415932,1.476317514220094,0.958792084262276 -2022-08-08,0.530813431405317,2.014631665755229,2.7977280500624433,2.039075329513739 -2022-08-09,2.510188659097596,2.983415297830412,0.126105493389976,2.121594836643942 -2022-08-10,1.622456744339298,1.289582374551249,2.5475660513369442,3.282862603860423 -2022-08-11,0.25962103068208003,0.37516694909806303,0.5828588359439041,0.139231895746797 -2022-08-12,0.884113805589634,1.603259620438238,1.8751590471743,0.24122279792940302 -2022-08-13,8.624685230360152,3.3791466219930433,9.375119750363103,0.7506624109540441 -2022-08-14,1.6498217904306332,2.627126072551769,0.57102589263998,2.4024472876658223 -2022-08-15,5.840124155766275,3.354483317899366,1.075590808840468,2.3650336028113492 -2022-08-16,2.405030143824614,1.444879535922397,0.942851527789979,1.423465983705226 -2022-08-17,1.034391306438299,0.6369673400603011,0.473080126014195,0.8585472144660361 -2022-08-18,4.703412413763946,0.5990722583580821,0.911179769434693,1.189643421133775 -2022-08-19,0.22138733877979702,0.24079634787311602,0.045592515857608006,0.9837464357223601 -2022-08-20,0.14621922149563202,0.096627004274573,0.7910843611370051,0.059870034265504 -2022-08-21,5.702011116768989,11.782408392531364,4.022381962144387,12.55656527594101 -2022-08-22,2.289251748782675,1.846139752930779,1.302218066447416,1.195140815195466 -2022-08-23,0.40156922050687605,2.44670175499675,2.701336009126233,2.5846045653914143 -2022-08-24,16.368686321533847,9.285256494681935,14.17816605948454,6.813674272547164 -2022-08-25,17.325634435909638,40.63547963350666,52.36627420733006,22.12581500864155 -2022-08-26,2.771994472181008,1.432898057334553,0.500652317272802,0.29065103217099203 -2022-08-27,2.705080627435551,1.140228551443707,2.535947091285437,2.068004826572326 -2022-08-28,0.366184071525715,0.37561791103581305,1.087399555743408,1.3431857507096732 -2022-08-29,0.192969279119436,1.203078886727172,0.8966719923838661,1.07779591413233 -2022-08-30,0.248116517168076,0.901524977902984,0.9660257636136701,0.13247782324235202 -2022-08-31,0.7172605174280461,0.22721632248943202,0.9247009404760361,0.28572976740870504 -2022-09-01,0.259653267575217,2.040817156148029,2.19857288799284,2.229208371156883 -2022-09-02,1.398428414171018,0.071469482611002,0.9048807067534731,0.0022491420541680004 -2022-09-03,1.7166677805176591,1.903668070163285,1.866568462888393,1.8648831840830011`, - input: '请使用四个独立柱图的组合图展示前十天不同类别的权重随着时间的变化。' -}; - -export const dynamicScatterPlotData = { - csv: `年度收益率,净现金流,市值,公司,年份 -50,28,726,公司0,1950 -9,63,301,公司1,1950 -41,8,795,公司2,1950 -93,92,545,公司3,1950 -11,93,798,公司4,1950 -50,11,652,公司5,1950 -35,96,688,公司6,1950 -94,72,795,公司7,1950 -4,4,149,公司8,1950 -4,93,919,公司9,1950 -71,7,976,公司10,1950 -75,7,349,公司11,1950 -93,89,810,公司12,1950 -28,73,602,公司13,1950 -11,73,497,公司14,1950 -87,73,509,公司15,1950 -58,53,256,公司16,1950 -56,69,144,公司17,1950 -49,45,237,公司18,1950 -46,74,387,公司19,1950 -92,42,742,公司20,1950 -45,64,933,公司21,1950 -68,42,284,公司22,1950 -9,46,325,公司23,1950 -70,6,194,公司24,1950 -25,84,552,公司25,1950 -82,87,716,公司26,1950 -5,64,958,公司27,1950 -15,86,593,公司28,1950 -44,11,219,公司29,1950 -46,75,72,公司30,1950 -76,56,530,公司31,1950 -14,8,483,公司32,1950 -82,30,639,公司33,1950 -58,23,876,公司34,1950 -0,28,748,公司35,1950 -55,25,845,公司36,1950 -35,54,185,公司37,1950 -60,1,931,公司38,1950 -64,30,300,公司39,1950 -83,29,510,公司40,1950 -5,77,915,公司41,1950 -23,61,821,公司42,1950 -16,42,22,公司43,1950 -50,73,800,公司44,1950 -93,71,829,公司45,1950 -31,0,293,公司46,1950 -17,75,89,公司47,1950 -8,25,319,公司48,1950 -81,37,851,公司49,1950 -51,31,723,公司0,1951 -10,65,287,公司1,1951 -42,7,813,公司2,1951 -92,90,525,公司3,1951 -12,96,761,公司4,1951 -50,10,681,公司5,1951 -37,96,738,公司6,1951 -97,73,752,公司7,1951 -5,7,189,公司8,1951 -7,93,908,公司9,1951 -72,9,975,公司10,1951 -77,7,309,公司11,1951 -94,89,777,公司12,1951 -31,76,568,公司13,1951 -11,75,523,公司14,1951 -86,73,563,公司15,1951 -58,52,219,公司16,1951 -59,70,176,公司17,1951 -51,48,192,公司18,1951 -49,76,418,公司19,1951 -92,45,747,公司20,1951 -48,67,924,公司21,1951 -71,41,321,公司22,1951 -11,46,304,公司23,1951 -73,8,158,公司24,1951 -25,86,595,公司25,1951 -82,87,673,公司26,1951 -5,67,998,公司27,1951 -18,89,622,公司28,1951 -46,13,247,公司29,1951 -45,74,121,公司30,1951 -79,58,525,公司31,1951 -14,12,439,公司32,1951 -84,30,617,公司33,1951 -61,23,854,公司34,1951 -0,30,765,公司35,1951 -58,25,834,公司36,1951 -37,53,229,公司37,1951 -61,0,955,公司38,1951 -63,30,346,公司39,1951 -84,29,492,公司40,1951 -9,77,916,公司41,1951 -25,64,874,公司42,1951 -18,43,18,公司43,1951 -51,75,755,公司44,1951 -94,71,866,公司45,1951 -32,0,293,公司46,1951 -18,76,111,公司47,1951 -7,25,307,公司48,1951 -83,36,834,公司49,1951 -50,31,710,公司0,1952 -13,65,271,公司1,1952 -41,10,792,公司2,1952 -91,92,552,公司3,1952 -10,94,762,公司4,1952 -50,13,732,公司5,1952 -36,97,782,公司6,1952 -98,72,753,公司7,1952 -5,6,177,公司8,1952 -6,96,924,公司9,1952 -72,10,951,公司10,1952 -80,5,305,公司11,1952 -95,88,827,公司12,1952 -34,77,600,公司13,1952 -11,75,568,公司14,1952 -85,76,562,公司15,1952 -59,55,214,公司16,1952 -61,70,173,公司17,1952 -53,51,156,公司18,1952 -50,79,455,公司19,1952 -95,48,773,公司20,1952 -49,68,927,公司21,1952 -71,43,324,公司22,1952 -10,45,327,公司23,1952 -75,7,166,公司24,1952 -25,86,618,公司25,1952 -81,88,675,公司26,1952 -8,69,1028,公司27,1952 -19,89,636,公司28,1952 -48,15,242,公司29,1952 -44,76,136,公司30,1952 -81,61,531,公司31,1952 -15,14,407,公司32,1952 -87,30,672,公司33,1952 -63,22,881,公司34,1952 -0,30,790,公司35,1952 -59,28,839,公司36,1952 -36,56,257,公司37,1952 -63,0,954,公司38,1952 -66,30,376,公司39,1952 -85,30,496,公司40,1952 -9,77,892,公司41,1952 -26,66,900,公司42,1952 -17,45,21,公司43,1952 -53,77,789,公司44,1952 -96,72,835,公司45,1952 -31,-1,284,公司46,1952 -18,78,103,公司47,1952 -7,25,289,公司48,1952 -86,38,873,公司49,1952 -50,30,672,公司0,1953 -16,64,277,公司1,1953 -44,11,835,公司2,1953 -92,91,561,公司3,1953 -12,94,724,公司4,1953 -50,14,739,公司5,1953 -38,100,767,公司6,1953 -100,72,802,公司7,1953 -5,5,143,公司8,1953 -8,98,894,公司9,1953 -72,10,937,公司10,1953 -79,4,305,公司11,1953 -98,89,873,公司12,1953 -35,79,628,公司13,1953 -12,76,611,公司14,1953 -84,78,545,公司15,1953 -58,57,199,公司16,1953 -63,73,185,公司17,1953 -52,52,117,公司18,1953 -49,78,434,公司19,1953 -94,51,765,公司20,1953 -50,67,899,公司21,1953 -71,45,343,公司22,1953 -13,48,318,公司23,1953 -75,7,185,公司24,1953 -27,89,574,公司25,1953 -84,90,688,公司26,1953 -7,69,991,公司27,1953 -20,90,606,公司28,1953 -51,15,251,公司29,1953 -47,75,154,公司30,1953 -83,63,555,公司31,1953 -14,18,455,公司32,1953 -89,33,709,公司33,1953 -64,22,874,公司34,1953 --1,33,753,公司35,1953 -61,27,837,公司36,1953 -35,59,280,公司37,1953 -63,3,975,公司38,1953 -67,31,341,公司39,1953 -87,31,471,公司40,1953 -9,76,936,公司41,1953 -28,65,940,公司42,1953 -18,46,59,公司43,1953 -55,76,757,公司44,1953 -96,72,827,公司45,1953 -34,-2,287,公司46,1953 -22,78,107,公司47,1953 -9,25,258,公司48,1953 -87,39,877,公司49,1953 -50,29,645,公司0,1954 -16,64,312,公司1,1954 -47,11,790,公司2,1954 -94,90,553,公司3,1954 -13,93,692,公司4,1954 -48,13,714,公司5,1954 -38,99,725,公司6,1954 -103,72,842,公司7,1954 -6,4,136,公司8,1954 -10,100,894,公司9,1954 -75,9,925,公司10,1954 -79,6,346,公司11,1954 -100,89,878,公司12,1954 -36,80,590,公司13,1954 -14,78,643,公司14,1954 -83,77,575,公司15,1954 -61,59,224,公司16,1954 -62,76,234,公司17,1954 -52,52,161,公司18,1954 -49,79,441,公司19,1954 -96,51,800,公司20,1954 -52,67,931,公司21,1954 -74,48,337,公司22,1954 -14,51,349,公司23,1954 -78,9,238,公司24,1954 -30,91,554,公司25,1954 -83,92,658,公司26,1954 -8,72,967,公司27,1954 -22,89,607,公司28,1954 -52,14,217,公司29,1954 -50,78,156,公司30,1954 -85,63,604,公司31,1954 -16,21,473,公司32,1954 -92,34,753,公司33,1954 -66,22,881,公司34,1954 -1,33,725,公司35,1954 -61,30,797,公司36,1954 -35,63,333,公司37,1954 -63,3,1016,公司38,1954 -69,30,337,公司39,1954 -91,34,445,公司40,1954 -9,78,960,公司41,1954 -27,66,949,公司42,1954 -18,46,113,公司43,1954 -56,79,731,公司44,1954 -98,72,855,公司45,1954 -33,-3,259,公司46,1954 -21,79,109,公司47,1954 -12,26,285,公司48,1954 -91,40,845,公司49,1954 -52,28,667,公司0,1955 -18,65,324,公司1,1955 -50,10,781,公司2,1955 -95,90,581,公司3,1955 -15,95,669,公司4,1955 -46,13,733,公司5,1955 -39,98,759,公司6,1955 -102,74,801,公司7,1955 -8,3,108,公司8,1955 -12,101,882,公司9,1955 -78,7,966,公司10,1955 -80,9,395,公司11,1955 -103,89,847,公司12,1955 -38,81,628,公司13,1955 -14,79,610,公司14,1955 -86,79,625,公司15,1955 -61,60,209,公司16,1955 -62,78,281,公司17,1955 -54,54,186,公司18,1955 -51,82,478,公司19,1955 -95,52,842,公司20,1955 -54,69,886,公司21,1955 -74,51,361,公司22,1955 -17,54,362,公司23,1955 -81,8,212,公司24,1955 -31,94,546,公司25,1955 -82,95,707,公司26,1955 -9,72,929,公司27,1955 -24,90,610,公司28,1955 -54,13,244,公司29,1955 -51,80,208,公司30,1955 -86,67,646,公司31,1955 -20,22,428,公司32,1955 -95,37,758,公司33,1955 -65,25,887,公司34,1955 -4,35,717,公司35,1955 -63,30,819,公司36,1955 -35,65,322,公司37,1955 -65,5,1015,公司38,1955 -71,30,336,公司39,1955 -93,34,472,公司40,1955 -9,81,1001,公司41,1955 -28,67,922,公司42,1955 -18,47,125,公司43,1955 -59,79,778,公司44,1955 -101,75,879,公司45,1955 -32,-1,311,公司46,1955 -23,81,151,公司47,1955 -12,29,285,公司48,1955 -92,42,858,公司49,1955 -50,30,696,公司0,1956 -20,68,327,公司1,1956 -51,8,793,公司2,1956 -98,90,554,公司3,1956 -16,95,689,公司4,1956 -47,15,745,公司5,1956 -39,100,797,公司6,1956 -100,77,765,公司7,1956 -6,4,152,公司8,1956 -14,102,860,公司9,1956 -81,10,1000,公司10,1956 -83,7,412,公司11,1956 -102,91,822,公司12,1956 -37,84,599,公司13,1956 -13,81,584,公司14,1956 -86,81,663,公司15,1956 -63,60,169,公司16,1956 -61,78,309,公司17,1956 -56,56,215,公司18,1956 -52,81,533,公司19,1956 -98,55,882,公司20,1956 -53,69,897,公司21,1956 -73,53,321,公司22,1956 -18,55,399,公司23,1956 -84,7,208,公司24,1956 -30,97,555,公司25,1956 -82,94,687,公司26,1956 -8,74,980,公司27,1956 -24,89,603,公司28,1956 -57,14,255,公司29,1956 -53,81,197,公司30,1956 -88,69,697,公司31,1956 -19,21,454,公司32,1956 -95,38,805,公司33,1956 -67,25,939,公司34,1956 -6,37,714,公司35,1956 -62,32,839,公司36,1956 -34,67,334,公司37,1956 -68,4,983,公司38,1956 -73,29,336,公司39,1956 -94,37,502,公司40,1956 -9,83,969,公司41,1956 -31,69,974,公司42,1956 -19,50,127,公司43,1956 -62,78,743,公司44,1956 -105,75,875,公司45,1956 -36,2,267,公司46,1956 -27,81,116,公司47,1956 -15,29,267,公司48,1956 -92,45,860,公司49,1956 -51,29,675,公司0,1957 -20,66,318,公司1,1957 -50,10,808,公司2,1957 -99,91,593,公司3,1957 -16,97,653,公司4,1957 -46,14,785,公司5,1957 -40,101,838,公司6,1957 -99,77,764,公司7,1957 -5,6,117,公司8,1957 -13,104,852,公司9,1957 -81,12,983,公司10,1957 -82,5,430,公司11,1957 -104,93,835,公司12,1957 -37,82,571,公司13,1957 -14,79,542,公司14,1957 -85,81,692,公司15,1957 -65,61,135,公司16,1957 -60,79,274,公司17,1957 -58,58,219,公司18,1957 -54,83,537,公司19,1957 -97,54,863,公司20,1957 -54,70,885,公司21,1957 -72,55,362,公司22,1957 -18,58,403,公司23,1957 -86,7,166,公司24,1957 -33,96,525,公司25,1957 -84,96,687,公司26,1957 -9,77,963,公司27,1957 -25,91,579,公司28,1957 -57,13,230,公司29,1957 -56,84,185,公司30,1957 -91,71,731,公司31,1957 -20,22,487,公司32,1957 -94,41,834,公司33,1957 -66,27,903,公司34,1957 -8,37,755,公司35,1957 -65,34,861,公司36,1957 -36,66,298,公司37,1957 -71,5,1004,公司38,1957 -75,31,345,公司39,1957 -96,39,512,公司40,1957 -12,87,948,公司41,1957 -34,69,987,公司42,1957 -18,53,150,公司43,1957 -63,77,715,公司44,1957 -109,78,857,公司45,1957 -39,5,237,公司46,1957 -29,84,161,公司47,1957 -19,31,260,公司48,1957 -93,47,857,公司49,1957 -54,30,690,公司0,1958 -23,67,301,公司1,1958 -50,10,816,公司2,1958 -101,91,642,公司3,1958 -18,97,641,公司4,1958 -47,12,750,公司5,1958 -42,102,842,公司6,1958 -98,77,800,公司7,1958 -7,7,117,公司8,1958 -15,105,890,公司9,1958 -84,12,950,公司10,1958 -84,7,457,公司11,1958 -102,92,829,公司12,1958 -39,81,549,公司13,1958 -16,79,578,公司14,1958 -84,83,690,公司15,1958 -63,60,96,公司16,1958 -62,80,237,公司17,1958 -56,59,244,公司18,1958 -54,83,533,公司19,1958 -100,56,859,公司20,1958 -55,72,846,公司21,1958 -72,57,346,公司22,1958 -20,57,430,公司23,1958 -87,9,212,公司24,1958 -33,95,533,公司25,1958 -87,95,658,公司26,1958 -11,80,947,公司27,1958 -27,93,621,公司28,1958 -56,12,195,公司29,1958 -56,84,198,公司30,1958 -92,72,719,公司31,1958 -20,23,466,公司32,1958 -93,43,790,公司33,1958 -68,28,941,公司34,1958 -8,38,718,公司35,1958 -67,37,862,公司36,1958 -38,67,255,公司37,1958 -74,5,967,公司38,1958 -78,32,396,公司39,1958 -96,38,486,公司40,1958 -12,89,981,公司41,1958 -34,70,943,公司42,1958 -20,56,109,公司43,1958 -67,79,745,公司44,1958 -112,82,816,公司45,1958 -43,4,244,公司46,1958 -31,85,136,公司47,1958 -22,32,222,公司48,1958 -96,50,854,公司49,1958 -57,31,709,公司0,1959 -23,69,306,公司1,1959 -51,10,853,公司2,1959 -101,90,683,公司3,1959 -21,97,603,公司4,1959 -49,14,754,公司5,1959 -45,101,860,公司6,1959 -98,78,797,公司7,1959 -10,6,144,公司8,1959 -18,104,918,公司9,1959 -87,15,955,公司10,1959 -84,9,509,公司11,1959 -105,95,803,公司12,1959 -42,82,601,公司13,1959 -19,80,553,公司14,1959 -83,82,649,公司15,1959 -66,63,144,公司16,1959 -64,82,206,公司17,1959 -56,60,200,公司18,1959 -54,86,546,公司19,1959 -101,55,881,公司20,1959 -56,71,839,公司21,1959 -71,57,382,公司22,1959 -22,56,439,公司23,1959 -88,11,242,公司24,1959 -36,95,527,公司25,1959 -86,96,641,公司26,1959 -14,83,979,公司27,1959 -30,92,663,公司28,1959 -56,12,161,公司29,1959 -57,87,234,公司30,1959 -95,75,730,公司31,1959 -22,23,435,公司32,1959 -93,42,754,公司33,1959 -69,29,945,公司34,1959 -7,37,753,公司35,1959 -71,36,853,公司36,1959 -39,66,245,公司37,1959 -75,4,959,公司38,1959 -82,36,425,公司39,1959 -96,41,469,公司40,1959 -12,91,1023,公司41,1959 -35,69,945,公司42,1959 -23,57,140,公司43,1959 -68,78,743,公司44,1959 -115,83,808,公司45,1959 -42,3,203,公司46,1959 -30,84,185,公司47,1959 -25,31,182,公司48,1959 -97,53,852,公司49,1959 -55,30,681,公司0,1960 -22,68,277,公司1,1960 -53,12,823,公司2,1960 -103,90,704,公司3,1960 -19,96,567,公司4,1960 -52,16,775,公司5,1960 -44,101,902,公司6,1960 -100,81,818,公司7,1960 -10,8,159,公司8,1960 -21,105,908,公司9,1960 -90,18,937,公司10,1960 -84,11,498,公司11,1960 -105,94,845,公司12,1960 -45,82,579,公司13,1960 -21,83,592,公司14,1960 -83,81,642,公司15,1960 -68,64,158,公司16,1960 -67,85,248,公司17,1960 -57,59,251,公司18,1960 -53,89,571,公司19,1960 -102,58,885,公司20,1960 -56,70,878,公司21,1960 -73,60,401,公司22,1960 -22,56,423,公司23,1960 -90,10,278,公司24,1960 -39,96,570,公司25,1960 -89,96,598,公司26,1960 -14,86,1003,公司27,1960 -31,95,683,公司28,1960 -59,12,126,公司29,1960 -57,86,192,公司30,1960 -96,77,783,公司31,1960 -22,26,455,公司32,1960 -93,43,787,公司33,1960 -71,31,998,公司34,1960 -8,39,751,公司35,1960 -74,40,867,公司36,1960 -40,66,200,公司37,1960 -75,6,960,公司38,1960 -81,39,391,公司39,1960 -96,41,455,公司40,1960 -12,94,1056,公司41,1960 -38,69,961,公司42,1960 -22,61,119,公司43,1960 -68,81,753,公司44,1960 -115,82,766,公司45,1960 -41,5,205,公司46,1960 -32,83,220,公司47,1960 -28,33,187,公司48,1960 -99,57,893,公司49,1960 -58,33,713,公司0,1961 -23,71,248,公司1,1961 -54,12,787,公司2,1961 -103,92,720,公司3,1961 -19,98,621,公司4,1961 -54,15,826,公司5,1961 -47,103,915,公司6,1961 -102,80,787,公司7,1961 -11,7,173,公司8,1961 -21,107,876,公司9,1961 -90,21,901,公司10,1961 -85,10,492,公司11,1961 -108,95,887,公司12,1961 -47,84,634,公司13,1961 -23,86,633,公司14,1961 -86,80,607,公司15,1961 -70,63,133,公司16,1961 -69,88,266,公司17,1961 -56,62,244,公司18,1961 -54,92,623,公司19,1961 -103,61,878,公司20,1961 -58,71,890,公司21,1961 -74,62,372,公司22,1961 -25,58,396,公司23,1961 -93,13,284,公司24,1961 -40,98,605,公司25,1961 -92,98,647,公司26,1961 -13,88,1003,公司27,1961 -32,95,718,公司28,1961 -59,16,152,公司29,1961 -59,86,215,公司30,1961 -97,80,820,公司31,1961 -21,29,474,公司32,1961 -94,42,755,公司33,1961 -71,33,958,公司34,1961 -8,38,734,公司35,1961 -77,43,878,公司36,1961 -44,67,235,公司37,1961 -75,7,977,公司38,1961 -83,38,393,公司39,1961 -95,41,484,公司40,1961 -13,95,1061,公司41,1961 -41,71,941,公司42,1961 -23,60,119,公司43,1961 -71,84,784,公司44,1961 -117,85,792,公司45,1961 -45,9,235,公司46,1961 -34,84,194,公司47,1961 -30,36,163,公司48,1961 -101,59,921,公司49,1961 -60,32,744,公司0,1962 -21,72,219,公司1,1962 -56,12,801,公司2,1962 -102,90,775,公司3,1962 -22,97,585,公司4,1962 -55,18,838,公司5,1962 -47,106,959,公司6,1962 -104,82,775,公司7,1962 -11,8,148,公司8,1962 -23,107,929,公司9,1962 -89,19,950,公司10,1962 -88,12,496,公司11,1962 -110,96,915,公司12,1962 -47,84,607,公司13,1962 -22,86,639,公司14,1962 -88,79,655,公司15,1962 -73,63,119,公司16,1962 -70,89,246,公司17,1962 -55,64,227,公司18,1962 -57,94,649,公司19,1962 -102,62,921,公司20,1962 -60,72,853,公司21,1962 -74,61,371,公司22,1962 -26,59,412,公司23,1962 -95,16,273,公司24,1962 -41,99,582,公司25,1962 -91,99,668,公司26,1962 -15,89,1047,公司27,1962 -34,94,732,公司28,1962 -59,15,177,公司29,1962 -58,86,203,公司30,1962 -99,82,870,公司31,1962 -21,31,525,公司32,1962 -93,41,725,公司33,1962 -75,34,1005,公司34,1962 -10,37,785,公司35,1962 -77,44,909,公司36,1962 -45,66,195,公司37,1962 -76,10,953,公司38,1962 -86,39,368,公司39,1962 -97,42,441,公司40,1962 -15,95,1089,公司41,1962 -41,71,922,公司42,1962 -24,61,90,公司43,1962 -74,84,758,公司44,1962 -116,85,806,公司45,1962 -46,11,260,公司46,1962 -33,85,174,公司47,1962 -29,39,206,公司48,1962 -101,59,923,公司49,1962 -59,33,766,公司0,1963 -22,75,268,公司1,1963 -56,10,768,公司2,1963 -101,90,740,公司3,1963 -25,96,637,公司4,1963 -54,19,860,公司5,1963 -50,106,978,公司6,1963 -104,81,807,公司7,1963 -10,9,188,公司8,1963 -24,108,941,公司9,1963 -90,20,958,公司10,1963 -88,11,483,公司11,1963 -113,98,872,公司12,1963 -47,87,591,公司13,1963 -21,88,691,公司14,1963 -90,78,681,公司15,1963 -72,63,78,公司16,1963 -69,91,282,公司17,1963 -54,66,197,公司18,1963 -60,97,660,公司19,1963 -101,63,889,公司20,1963 -61,71,867,公司21,1963 -75,62,351,公司22,1963 -25,62,445,公司23,1963 -97,17,250,公司24,1963 -44,99,634,公司25,1963 -91,100,719,公司26,1963 -16,91,1014,公司27,1963 -37,93,756,公司28,1963 -61,17,158,公司29,1963 -59,87,210,公司30,1963 -102,82,833,公司31,1963 -20,30,510,公司32,1963 -96,43,774,公司33,1963 -75,37,1033,公司34,1963 -9,37,793,公司35,1963 -78,44,865,公司36,1963 -44,65,238,公司37,1963 -78,10,985,公司38,1963 -88,39,415,公司39,1963 -97,42,479,公司40,1963 -14,98,1142,公司41,1963 -41,73,967,公司42,1963 -23,60,140,公司43,1963 -75,85,717,公司44,1963 -119,88,834,公司45,1963 -46,10,239,公司46,1963 -34,89,178,公司47,1963 -31,38,186,公司48,1963 -104,61,974,公司49,1963 -59,34,765,公司0,1964 -22,73,238,公司1,1964 -55,11,754,公司2,1964 -103,90,716,公司3,1964 -28,98,684,公司4,1964 -54,20,828,公司5,1964 -53,105,941,公司6,1964 -103,83,797,公司7,1964 -12,9,204,公司8,1964 -22,109,938,公司9,1964 -89,20,949,公司10,1964 -86,13,520,公司11,1964 -112,99,873,公司12,1964 -48,88,605,公司13,1964 -24,89,674,公司14,1964 -90,81,649,公司15,1964 -73,63,106,公司16,1964 -71,93,242,公司17,1964 -54,68,181,公司18,1964 -61,98,667,公司19,1964 -99,65,857,公司20,1964 -64,70,878,公司21,1964 -75,61,329,公司22,1964 -24,65,405,公司23,1964 -99,17,256,公司24,1964 -45,101,680,公司25,1964 -94,101,708,公司26,1964 -16,90,1026,公司27,1964 -40,92,759,公司28,1964 -61,17,146,公司29,1964 -63,88,238,公司30,1964 -103,81,837,公司31,1964 -22,31,474,公司32,1964 -99,46,828,公司33,1964 -76,38,1057,公司34,1964 -10,38,794,公司35,1964 -77,43,847,公司36,1964 -46,67,263,公司37,1964 -80,10,958,公司38,1964 -90,38,380,公司39,1964 -101,45,531,公司40,1964 -18,99,1154,公司41,1964 -45,73,946,公司42,1964 -26,61,144,公司43,1964 -76,85,721,公司44,1964 -119,87,814,公司45,1964 -45,10,256,公司46,1964 -36,88,223,公司47,1964 -31,42,214,公司48,1964 -106,61,987,公司49,1964 -60,34,805,公司0,1965 -21,72,264,公司1,1965 -57,9,771,公司2,1965 -103,93,755,公司3,1965 -26,99,647,公司4,1965 -57,23,857,公司5,1965 -56,107,930,公司6,1965 -106,83,767,公司7,1965 -13,12,195,公司8,1965 -23,111,937,公司9,1965 -91,20,963,公司10,1965 -87,12,561,公司11,1965 -115,102,839,公司12,1965 -51,88,563,公司13,1965 -26,91,675,公司14,1965 -89,83,657,公司15,1965 -76,66,62,公司16,1965 -74,93,274,公司17,1965 -53,70,145,公司18,1965 -60,97,653,公司19,1965 -101,67,838,公司20,1965 -66,70,888,公司21,1965 -78,61,364,公司22,1965 -27,66,439,公司23,1965 -99,16,212,公司24,1965 -45,101,718,公司25,1965 -93,103,749,公司26,1965 -18,89,1070,公司27,1965 -40,91,748,公司28,1965 -62,18,132,公司29,1965 -65,88,261,公司30,1965 -105,83,840,公司31,1965 -22,35,501,公司32,1965 -101,49,828,公司33,1965 -76,39,1050,公司34,1965 -9,37,844,公司35,1965 -77,45,871,公司36,1965 -45,67,267,公司37,1965 -79,11,955,公司38,1965 -93,39,379,公司39,1965 -101,47,508,公司40,1965 -21,100,1160,公司41,1965 -46,76,949,公司42,1965 -29,64,115,公司43,1965 -80,87,767,公司44,1965 -121,86,841,公司45,1965 -44,13,302,公司46,1965 -39,89,264,公司47,1965 -32,43,179,公司48,1965 -106,61,1019,公司49,1965 -59,32,805,公司0,1966 -23,74,274,公司1,1966 -60,8,742,公司2,1966 -102,94,749,公司3,1966 -24,100,640,公司4,1966 -55,22,846,公司5,1966 -56,108,937,公司6,1966 -109,86,769,公司7,1966 -14,12,185,公司8,1966 -26,110,961,公司9,1966 -94,22,985,公司10,1966 -86,12,540,公司11,1966 -117,102,887,公司12,1966 -50,91,613,公司13,1966 -25,93,693,公司14,1966 -89,84,678,公司15,1966 -77,66,62,公司16,1966 -77,95,254,公司17,1966 -54,71,172,公司18,1966 -61,96,677,公司19,1966 -102,67,846,公司20,1966 -69,73,940,公司21,1966 -78,64,403,公司22,1966 -30,69,455,公司23,1966 -98,15,221,公司24,1966 -48,104,704,公司25,1966 -92,102,784,公司26,1966 -21,92,1041,公司27,1966 -43,92,704,公司28,1966 -61,19,100,公司29,1966 -67,91,244,公司30,1966 -106,85,857,公司31,1966 -22,35,545,公司32,1966 -100,52,803,公司33,1966 -79,39,1090,公司34,1966 -9,39,847,公司35,1966 -77,46,865,公司36,1966 -45,69,283,公司37,1966 -80,14,921,公司38,1966 -93,39,341,公司39,1966 -102,49,549,公司40,1966 -22,100,1156,公司41,1966 -48,75,935,公司42,1966 -31,67,136,公司43,1966 -80,88,817,公司44,1966 -122,85,807,公司45,1966 -45,14,259,公司46,1966 -41,90,306,公司47,1966 -32,46,173,公司48,1966 -107,62,1068,公司49,1966 -58,32,775,公司0,1967 -21,76,280,公司1,1967 -59,10,700,公司2,1967 -101,95,788,公司3,1967 -23,100,600,公司4,1967 -55,24,809,公司5,1967 -59,108,912,公司6,1967 -112,86,790,公司7,1967 -17,11,162,公司8,1967 -27,113,940,公司9,1967 -93,21,987,公司10,1967 -88,12,554,公司11,1967 -120,105,894,公司12,1967 -51,91,662,公司13,1967 -26,94,678,公司14,1967 -88,85,694,公司15,1967 -79,65,80,公司16,1967 -80,95,290,公司17,1967 -55,72,181,公司18,1967 -64,95,678,公司19,1967 -101,69,869,公司20,1967 -68,72,993,公司21,1967 -81,67,433,公司22,1967 -31,72,488,公司23,1967 -99,17,211,公司24,1967 -47,104,740,公司25,1967 -93,101,836,公司26,1967 -23,95,1011,公司27,1967 -43,95,688,公司28,1967 -61,19,129,公司29,1967 -68,92,223,公司30,1967 -106,88,837,公司31,1967 -24,36,543,公司32,1967 -100,52,844,公司33,1967 -79,40,1092,公司34,1967 -8,40,862,公司35,1967 -76,47,842,公司36,1967 -48,72,303,公司37,1967 -82,14,965,公司38,1967 -92,40,346,公司39,1967 -101,48,540,公司40,1967 -23,101,1186,公司41,1967 -51,76,921,公司42,1967 -31,67,132,公司43,1967 -79,89,779,公司44,1967 -125,89,808,公司45,1967 -45,14,216,公司46,1967 -40,90,278,公司47,1967 -32,46,203,公司48,1967 -111,64,1115,公司49,1967 -56,31,732,公司0,1968 -20,76,299,公司1,1968 -60,12,722,公司2,1968 -101,95,802,公司3,1968 -25,103,626,公司4,1968 -53,26,786,公司5,1968 -59,108,874,公司6,1968 -112,89,755,公司7,1968 -19,14,202,公司8,1968 -25,114,938,公司9,1968 -95,21,947,公司10,1968 -91,11,558,公司11,1968 -122,108,854,公司12,1968 -52,92,656,公司13,1968 -29,96,711,公司14,1968 -87,86,746,公司15,1968 -81,68,90,公司16,1968 -82,94,319,公司17,1968 -56,72,174,公司18,1968 -64,95,710,公司19,1968 -101,69,836,公司20,1968 -70,75,965,公司21,1968 -80,69,402,公司22,1968 -30,74,485,公司23,1968 -100,17,231,公司24,1968 -50,107,795,公司25,1968 -96,100,861,公司26,1968 -22,96,1058,公司27,1968 -44,94,649,公司28,1968 -60,22,167,公司29,1968 -67,93,260,公司30,1968 -105,90,874,公司31,1968 -28,35,577,公司32,1968 -101,54,880,公司33,1968 -81,43,1145,公司34,1968 -7,42,858,公司35,1968 -77,49,893,公司36,1968 -50,73,346,公司37,1968 -85,14,944,公司38,1968 -92,42,350,公司39,1968 -103,51,526,公司40,1968 -26,104,1162,公司41,1968 -51,75,971,公司42,1968 -31,70,119,公司43,1968 -80,92,741,公司44,1968 -127,92,780,公司45,1968 -48,15,246,公司46,1968 -42,90,321,公司47,1968 -34,46,238,公司48,1968 -115,64,1147,公司49,1968 -58,31,770,公司0,1969 -19,77,284,公司1,1969 -61,10,712,公司2,1969 -100,97,799,公司3,1969 -24,101,651,公司4,1969 -52,26,840,公司5,1969 -60,106,866,公司6,1969 -114,90,771,公司7,1969 -19,13,229,公司8,1969 -25,117,922,公司9,1969 -94,20,985,公司10,1969 -92,14,546,公司11,1969 -124,110,843,公司12,1969 -55,95,615,公司13,1969 -29,99,727,公司14,1969 -86,87,710,公司15,1969 -83,68,139,公司16,1969 -81,94,337,公司17,1969 -59,74,206,公司18,1969 -63,95,685,公司19,1969 -104,69,878,公司20,1969 -73,75,956,公司21,1969 -83,72,409,公司22,1969 -29,73,447,公司23,1969 -101,17,284,公司24,1969 -50,108,821,公司25,1969 -96,101,892,公司26,1969 -24,97,1096,公司27,1969 -44,97,684,公司28,1969 -63,23,184,公司29,1969 -69,95,295,公司30,1969 -105,90,882,公司31,1969 -30,39,568,公司32,1969 -101,55,866,公司33,1969 -83,43,1179,公司34,1969 -8,46,813,公司35,1969 -80,52,872,公司36,1969 -53,72,313,公司37,1969 -86,17,969,公司38,1969 -91,42,317,公司39,1969 -103,53,526,公司40,1969 -26,104,1200,公司41,1969 -53,75,1001,公司42,1969 -32,72,122,公司43,1969 -82,91,741,公司44,1969 -131,92,816,公司45,1969 -48,16,250,公司46,1969 -43,93,357,公司47,1969 -37,45,206,公司48,1969 -114,65,1177,公司49,1969 -57,30,761,公司0,1970 -20,79,314,公司1,1970 -61,10,726,公司2,1970 -99,98,776,公司3,1970 -25,103,699,公司4,1970 -53,25,815,公司5,1970 -60,106,848,公司6,1970 -113,92,806,公司7,1970 -22,12,241,公司8,1970 -24,117,974,公司9,1970 -92,20,1010,公司10,1970 -95,13,599,公司11,1970 -124,110,840,公司12,1970 -58,98,617,公司13,1970 -31,98,781,公司14,1970 -88,85,763,公司15,1970 -81,68,179,公司16,1970 -82,96,316,公司17,1970 -60,73,206,公司18,1970 -64,95,685,公司19,1970 -103,72,889,公司20,1970 -72,77,966,公司21,1970 -84,72,401,公司22,1970 -31,73,495,公司23,1970 -101,18,329,公司24,1970 -51,108,802,公司25,1970 -98,102,892,公司26,1970 -27,97,1063,公司27,1970 -44,99,694,公司28,1970 -66,23,205,公司29,1970 -68,96,347,公司30,1970 -105,90,865,公司31,1970 -30,38,591,公司32,1970 -101,57,897,公司33,1970 -83,42,1218,公司34,1970 -8,45,827,公司35,1970 -81,54,859,公司36,1970 -55,73,347,公司37,1970 -85,17,953,公司38,1970 -93,44,324,公司39,1970 -106,52,542,公司40,1970 -27,106,1201,公司41,1970 -56,75,1011,公司42,1970 -35,72,159,公司43,1970 -86,90,769,公司44,1970 -132,94,861,公司45,1970 -49,17,257,公司46,1970 -45,94,386,公司47,1970 -39,49,180,公司48,1970 -116,65,1160,公司49,1970 -59,30,717,公司0,1971 -22,82,326,公司1,1971 -63,11,733,公司2,1971 -98,100,768,公司3,1971 -26,101,718,公司4,1971 -56,26,776,公司5,1971 -60,106,823,公司6,1971 -113,93,778,公司7,1971 -21,11,209,公司8,1971 -26,119,1000,公司9,1971 -91,21,967,公司10,1971 -94,11,638,公司11,1971 -126,110,842,公司12,1971 -60,99,633,公司13,1971 -31,97,750,公司14,1971 -87,86,793,公司15,1971 -80,71,146,公司16,1971 -83,95,323,公司17,1971 -59,73,215,公司18,1971 -63,96,671,公司19,1971 -105,75,905,公司20,1971 -72,79,964,公司21,1971 -85,73,385,公司22,1971 -30,75,537,公司23,1971 -100,17,317,公司24,1971 -50,108,818,公司25,1971 -97,104,872,公司26,1971 -28,97,1107,公司27,1971 -45,98,741,公司28,1971 -69,22,162,公司29,1971 -68,98,363,公司30,1971 -107,92,878,公司31,1971 -33,38,640,公司32,1971 -100,60,896,公司33,1971 -82,45,1189,公司34,1971 -8,47,863,公司35,1971 -84,56,880,公司36,1971 -56,75,395,公司37,1971 -86,19,1004,公司38,1971 -94,46,307,公司39,1971 -106,53,595,公司40,1971 -30,106,1206,公司41,1971 -58,76,981,公司42,1971 -39,74,184,公司43,1971 -85,93,728,公司44,1971 -134,96,895,公司45,1971 -51,20,226,公司46,1971 -48,97,406,公司47,1971 -40,51,174,公司48,1971 -118,64,1153,公司49,1971 -58,33,714,公司0,1972 -23,81,340,公司1,1972 -61,12,786,公司2,1972 -100,101,816,公司3,1972 -26,103,697,公司4,1972 -56,25,775,公司5,1972 -61,106,801,公司6,1972 -115,95,806,公司7,1972 -24,14,250,公司8,1972 -27,118,1019,公司9,1972 -92,21,959,公司10,1972 -95,11,647,公司11,1972 -126,112,803,公司12,1972 -60,101,648,公司13,1972 -33,100,750,公司14,1972 -88,85,838,公司15,1972 -81,72,158,公司16,1972 -86,97,299,公司17,1972 -61,72,216,公司18,1972 -65,96,698,公司19,1972 -104,77,955,公司20,1972 -74,81,965,公司21,1972 -88,76,434,公司22,1972 -31,77,578,公司23,1972 -103,16,334,公司24,1972 -49,109,793,公司25,1972 -100,106,874,公司26,1972 -27,97,1064,公司27,1972 -45,100,793,公司28,1972 -71,25,186,公司29,1972 -67,101,351,公司30,1972 -110,92,924,公司31,1972 -35,41,640,公司32,1972 -101,59,878,公司33,1972 -82,46,1160,公司34,1972 -10,47,822,公司35,1972 -87,57,843,公司36,1972 -56,74,430,公司37,1972 -85,22,990,公司38,1972 -95,45,344,公司39,1972 -107,54,581,公司40,1972 -31,106,1260,公司41,1972 -60,75,974,公司42,1972 -43,77,185,公司43,1972 -86,93,768,公司44,1972 -134,98,910,公司45,1972 -51,22,234,公司46,1972 -51,99,432,公司47,1972 -39,51,193,公司48,1972 -118,63,1158,公司49,1972 -56,35,728,公司0,1973 -25,83,387,公司1,1973 -64,10,818,公司2,1973 -100,102,834,公司3,1973 -28,103,658,公司4,1973 -55,27,755,公司5,1973 -64,109,824,公司6,1973 -113,98,793,公司7,1973 -26,15,268,公司8,1973 -28,117,1034,公司9,1973 -91,24,980,公司10,1973 -95,12,661,公司11,1973 -128,113,761,公司12,1973 -61,104,615,公司13,1973 -34,100,721,公司14,1973 -90,84,823,公司15,1973 -83,71,139,公司16,1973 -88,99,294,公司17,1973 -61,72,196,公司18,1973 -66,94,682,公司19,1973 -104,78,961,公司20,1973 -76,83,928,公司21,1973 -88,77,426,公司22,1973 -32,76,621,公司23,1973 -106,17,319,公司24,1973 -48,108,825,公司25,1973 -101,107,860,公司26,1973 -30,96,1084,公司27,1973 -47,102,764,公司28,1973 -70,27,147,公司29,1973 -69,100,392,公司30,1973 -110,94,893,公司31,1973 -38,42,665,公司32,1973 -100,60,877,公司33,1973 -82,45,1160,公司34,1973 -9,48,831,公司35,1973 -88,58,833,公司36,1973 -57,75,399,公司37,1973 -87,24,1019,公司38,1973 -98,47,366,公司39,1973 -106,57,597,公司40,1973 -34,109,1253,公司41,1973 -60,76,938,公司42,1973 -44,79,149,公司43,1973 -87,96,753,公司44,1973 -134,98,929,公司45,1973 -50,23,257,公司46,1973 -52,102,452,公司47,1973 -38,54,191,公司48,1973 -119,64,1135,公司49,1973 -58,38,727,公司0,1974 -26,83,405,公司1,1974 -62,11,774,公司2,1974 -101,105,874,公司3,1974 -30,102,700,公司4,1974 -56,30,723,公司5,1974 -64,110,843,公司6,1974 -112,97,756,公司7,1974 -24,18,282,公司8,1974 -26,119,1031,公司9,1974 -91,23,940,公司10,1974 -97,13,659,公司11,1974 -127,116,766,公司12,1974 -62,105,623,公司13,1974 -36,102,735,公司14,1974 -92,86,787,公司15,1974 -82,74,108,公司16,1974 -91,100,311,公司17,1974 -64,72,244,公司18,1974 -64,96,700,公司19,1974 -103,80,929,公司20,1974 -78,86,883,公司21,1974 -87,78,434,公司22,1974 -33,78,584,公司23,1974 -106,17,282,公司24,1974 -48,110,877,公司25,1974 -102,109,852,公司26,1974 -29,95,1115,公司27,1974 -47,101,745,公司28,1974 -73,30,159,公司29,1974 -71,99,440,公司30,1974 -111,93,877,公司31,1974 -39,45,709,公司32,1974 -102,60,872,公司33,1974 -84,45,1175,公司34,1974 -12,49,831,公司35,1974 -89,61,793,公司36,1974 -60,78,386,公司37,1974 -87,27,1016,公司38,1974 -101,49,352,公司39,1974 -109,58,620,公司40,1974 -34,112,1233,公司41,1974 -60,75,959,公司42,1974 -44,83,105,公司43,1974 -90,97,733,公司44,1974 -134,102,885,公司45,1974 -54,25,300,公司46,1974 -55,104,462,公司47,1974 -39,57,180,公司48,1974 -118,66,1155,公司49,1974 -57,38,687,公司0,1975 -24,82,455,公司1,1975 -62,12,826,公司2,1975 -103,107,838,公司3,1975 -32,101,701,公司4,1975 -58,32,757,公司5,1975 -65,111,885,公司6,1975 -111,95,753,公司7,1975 -23,19,262,公司8,1975 -25,122,1082,公司9,1975 -94,21,914,公司10,1975 -99,13,686,公司11,1975 -130,119,771,公司12,1975 -61,103,660,公司13,1975 -36,103,745,公司14,1975 -94,89,802,公司15,1975 -83,77,130,公司16,1975 -91,102,324,公司17,1975 -66,72,224,公司18,1975 -66,98,735,公司19,1975 -106,79,916,公司20,1975 -77,85,863,公司21,1975 -88,78,408,公司22,1975 -35,81,601,公司23,1975 -107,18,326,公司24,1975 -50,112,910,公司25,1975 -102,108,891,公司26,1975 -29,96,1100,公司27,1975 -49,104,741,公司28,1975 -73,31,205,公司29,1975 -72,101,477,公司30,1975 -114,95,900,公司31,1975 -43,48,759,公司32,1975 -104,63,870,公司33,1975 -85,44,1134,公司34,1975 -13,52,827,公司35,1975 -91,62,755,公司36,1975 -59,78,431,公司37,1975 -90,30,977,公司38,1975 -100,50,386,公司39,1975 -111,61,654,公司40,1975 -36,112,1192,公司41,1975 -61,76,925,公司42,1975 -47,83,143,公司43,1975 -92,99,708,公司44,1975 -137,103,889,公司45,1975 -54,28,354,公司46,1975 -56,107,462,公司47,1975 -39,59,194,公司48,1975 -122,66,1180,公司49,1975 -59,40,661,公司0,1976 -24,80,471,公司1,1976 -64,11,782,公司2,1976 -106,107,860,公司3,1976 -34,100,749,公司4,1976 -61,33,740,公司5,1976 -65,111,931,公司6,1976 -110,94,796,公司7,1976 -25,18,243,公司8,1976 -23,125,1110,公司9,1976 -93,22,901,公司10,1976 -99,15,690,公司11,1976 -130,122,755,公司12,1976 -60,105,650,公司13,1976 -35,101,728,公司14,1976 -97,90,824,公司15,1976 -84,80,105,公司16,1976 -90,104,283,公司17,1976 -66,71,278,公司18,1976 -69,98,779,公司19,1976 -108,79,958,公司20,1976 -76,85,833,公司21,1976 -87,81,455,公司22,1976 -36,80,559,公司23,1976 -106,21,306,公司24,1976 -49,115,940,公司25,1976 -105,109,912,公司26,1976 -30,97,1134,公司27,1976 -49,104,748,公司28,1976 -73,34,200,公司29,1976 -72,103,496,公司30,1976 -114,97,890,公司31,1976 -44,50,729,公司32,1976 -103,65,902,公司33,1976 -84,47,1143,公司34,1976 -14,55,811,公司35,1976 -93,64,768,公司36,1976 -59,79,460,公司37,1976 -89,33,972,公司38,1976 -100,50,352,公司39,1976 -113,64,624,公司40,1976 -38,112,1176,公司41,1976 -63,76,893,公司42,1976 -47,82,109,公司43,1976 -92,101,688,公司44,1976 -139,104,926,公司45,1976 -54,30,405,公司46,1976 -56,107,465,公司47,1976 -39,58,166,公司48,1976 -124,68,1218,公司49,1976 -62,41,681,公司0,1977 -23,82,482,公司1,1977 -64,12,812,公司2,1977 -107,109,846,公司3,1977 -36,101,800,公司4,1977 -63,34,786,公司5,1977 -65,111,922,公司6,1977 -109,97,773,公司7,1977 -28,20,225,公司8,1977 -25,128,1113,公司9,1977 -96,25,914,公司10,1977 -98,18,662,公司11,1977 -132,123,785,公司12,1977 -60,106,661,公司13,1977 -35,103,751,公司14,1977 -98,91,852,公司15,1977 -85,83,100,公司16,1977 -92,103,338,公司17,1977 -66,70,248,公司18,1977 -71,101,762,公司19,1977 -110,77,983,公司20,1977 -77,88,858,公司21,1977 -88,84,475,公司22,1977 -38,80,567,公司23,1977 -106,21,356,公司24,1977 -48,116,928,公司25,1977 -105,110,894,公司26,1977 -29,96,1140,公司27,1977 -51,104,731,公司28,1977 -74,35,216,公司29,1977 -72,106,470,公司30,1977 -115,97,938,公司31,1977 -48,51,753,公司32,1977 -105,66,925,公司33,1977 -86,48,1126,公司34,1977 -13,57,803,公司35,1977 -94,67,818,公司36,1977 -59,82,483,公司37,1977 -91,35,960,公司38,1977 -100,50,385,公司39,1977 -114,68,669,公司40,1977 -39,114,1204,公司41,1977 -66,76,898,公司42,1977 -49,85,98,公司43,1977 -92,102,643,公司44,1977 -140,105,915,公司45,1977 -57,30,387,公司46,1977 -57,110,442,公司47,1977 -41,58,134,公司48,1977 -127,70,1242,公司49,1977 -60,44,645,公司0,1978 -24,82,509,公司1,1978 -62,14,815,公司2,1978 -108,112,895,公司3,1978 -36,103,783,公司4,1978 -65,36,811,公司5,1978 -65,113,887,公司6,1978 -107,98,787,公司7,1978 -26,19,239,公司8,1978 -23,130,1070,公司9,1978 -96,27,940,公司10,1978 -99,17,632,公司11,1978 -132,126,797,公司12,1978 -60,108,627,公司13,1978 -37,104,718,公司14,1978 -101,91,869,公司15,1978 -87,83,134,公司16,1978 -92,104,317,公司17,1978 -68,72,277,公司18,1978 -69,104,797,公司19,1978 -110,78,988,公司20,1978 -77,91,888,公司21,1978 -87,87,482,公司22,1978 -38,82,524,公司23,1978 -108,21,326,公司24,1978 -47,118,946,公司25,1978 -105,109,890,公司26,1978 -32,99,1140,公司27,1978 -53,104,747,公司28,1978 -73,38,226,公司29,1978 -74,108,460,公司30,1978 -116,100,926,公司31,1978 -48,53,709,公司32,1978 -106,69,927,公司33,1978 -88,50,1113,公司34,1978 -15,60,817,公司35,1978 -97,69,812,公司36,1978 -60,81,450,公司37,1978 -94,36,980,公司38,1978 -104,52,429,公司39,1978 -113,67,682,公司40,1978 -39,117,1180,公司41,1978 -66,77,881,公司42,1978 -52,86,135,公司43,1978 -92,104,684,公司44,1978 -141,109,968,公司45,1978 -58,29,373,公司46,1978 -57,113,466,公司47,1978 -40,59,140,公司48,1978 -128,73,1291,公司49,1978 -63,43,642,公司0,1979 -25,84,542,公司1,1979 -65,13,787,公司2,1979 -108,115,936,公司3,1979 -38,101,835,公司4,1979 -66,36,836,公司5,1979 -66,111,924,公司6,1979 -109,101,829,公司7,1979 -29,18,258,公司8,1979 -22,133,1088,公司9,1979 -98,30,986,公司10,1979 -99,18,677,公司11,1979 -132,127,759,公司12,1979 -59,111,607,公司13,1979 -36,104,740,公司14,1979 -101,90,845,公司15,1979 -86,82,150,公司16,1979 -95,103,315,公司17,1979 -70,72,312,公司18,1979 -71,103,818,公司19,1979 -110,77,985,公司20,1979 -76,89,913,公司21,1979 -90,90,458,公司22,1979 -37,84,484,公司23,1979 -107,24,295,公司24,1979 -47,118,991,公司25,1979 -104,112,886,公司26,1979 -35,99,1181,公司27,1979 -53,105,706,公司28,1979 -74,39,248,公司29,1979 -76,109,512,公司30,1979 -117,100,979,公司31,1979 -48,55,715,公司32,1979 -107,68,925,公司33,1979 -89,54,1149,公司34,1979 -15,60,790,公司35,1979 -100,70,809,公司36,1979 -63,81,500,公司37,1979 -96,36,1010,公司38,1979 -106,52,470,公司39,1979 -114,67,698,公司40,1979 -39,117,1225,公司41,1979 -70,79,907,公司42,1979 -54,89,144,公司43,1979 -91,106,662,公司44,1979 -144,113,980,公司45,1979 -60,28,344,公司46,1979 -61,117,451,公司47,1979 -40,62,159,公司48,1979 -129,77,1289,公司49,1979 -64,44,615,公司0,1980 -27,85,514,公司1,1980 -68,11,746,公司2,1980 -109,117,944,公司3,1980 -36,99,825,公司4,1980 -67,39,847,公司5,1980 -64,109,921,公司6,1980 -111,103,818,公司7,1980 -29,19,243,公司8,1980 -23,132,1058,公司9,1980 -97,32,1041,公司10,1980 -100,19,665,公司11,1980 -132,125,729,公司12,1980 -58,113,634,公司13,1980 -37,104,776,公司14,1980 -102,92,828,公司15,1980 -85,85,184,公司16,1980 -95,105,335,公司17,1980 -70,72,275,公司18,1980 -72,103,776,公司19,1980 -110,77,998,公司20,1980 -75,91,887,公司21,1980 -92,90,509,公司22,1980 -37,84,448,公司23,1980 -109,25,304,公司24,1980 -47,120,1030,公司25,1980 -104,114,845,公司26,1980 -34,101,1144,公司27,1980 -53,105,686,公司28,1980 -76,40,225,公司29,1980 -77,109,507,公司30,1980 -118,99,955,公司31,1980 -50,55,765,公司32,1980 -109,69,921,公司33,1980 -88,56,1112,公司34,1980 -16,60,771,公司35,1980 -103,70,845,公司36,1980 -66,84,543,公司37,1980 -98,35,1052,公司38,1980 -107,52,440,公司39,1980 -115,69,676,公司40,1980 -42,118,1194,公司41,1980 -73,79,879,公司42,1980 -54,89,106,公司43,1980 -94,110,678,公司44,1980 -147,117,976,公司45,1980 -64,28,330,公司46,1980 -60,118,473,公司47,1980 -44,65,141,公司48,1980 -133,81,1287,公司49,1980 -63,46,590,公司0,1981 -29,83,555,公司1,1981 -70,11,796,公司2,1981 -112,115,971,公司3,1981 -37,100,821,公司4,1981 -67,39,875,公司5,1981 -64,109,927,公司6,1981 -113,106,841,公司7,1981 -30,18,283,公司8,1981 -26,135,1083,公司9,1981 -97,33,1067,公司10,1981 -98,22,656,公司11,1981 -134,124,690,公司12,1981 -61,115,647,公司13,1981 -37,103,767,公司14,1981 -101,91,849,公司15,1981 -87,83,188,公司16,1981 -97,104,383,公司17,1981 -71,74,265,公司18,1981 -71,102,761,公司19,1981 -110,77,1012,公司20,1981 -76,91,877,公司21,1981 -91,92,491,公司22,1981 -36,85,485,公司23,1981 -111,26,287,公司24,1981 -48,119,1045,公司25,1981 -107,117,865,公司26,1981 -33,101,1102,公司27,1981 -53,107,671,公司28,1981 -76,43,231,公司29,1981 -77,110,530,公司30,1981 -121,101,975,公司31,1981 -53,55,747,公司32,1981 -112,73,945,公司33,1981 -90,57,1077,公司34,1981 -17,60,741,公司35,1981 -106,69,897,公司36,1981 -66,84,597,公司37,1981 -100,38,1066,公司38,1981 -108,52,494,公司39,1981 -118,69,702,公司40,1981 -44,118,1150,公司41,1981 -74,79,856,公司42,1981 -56,92,141,公司43,1981 -95,109,725,公司44,1981 -147,121,991,公司45,1981 -66,31,347,公司46,1981 -60,119,501,公司47,1981 -46,66,165,公司48,1981 -134,84,1320,公司49,1981 -65,47,588,公司0,1982 -30,86,514,公司1,1982 -68,11,785,公司2,1982 -113,115,987,公司3,1982 -37,99,815,公司4,1982 -67,39,858,公司5,1982 -65,110,964,公司6,1982 -115,106,846,公司7,1982 -29,20,268,公司8,1982 -26,135,1105,公司9,1982 -98,31,1108,公司10,1982 -97,25,705,公司11,1982 -132,127,723,公司12,1982 -62,115,623,公司13,1982 -38,104,723,公司14,1982 -99,93,828,公司15,1982 -89,83,225,公司16,1982 -100,106,416,公司17,1982 -70,76,318,公司18,1982 -74,104,776,公司19,1982 -109,80,1048,公司20,1982 -79,94,878,公司21,1982 -90,95,474,公司22,1982 -38,87,472,公司23,1982 -110,25,244,公司24,1982 -51,121,1023,公司25,1982 -106,118,855,公司26,1982 -34,102,1070,公司27,1982 -56,109,647,公司28,1982 -78,45,238,公司29,1982 -78,109,544,公司30,1982 -120,102,994,公司31,1982 -54,56,764,公司32,1982 -116,73,915,公司33,1982 -90,56,1072,公司34,1982 -17,62,787,公司35,1982 -109,72,930,公司36,1982 -66,86,627,公司37,1982 -99,39,1035,公司38,1982 -111,55,465,公司39,1982 -119,70,698,公司40,1982 -44,118,1115,公司41,1982 -76,82,892,公司42,1982 -58,95,177,公司43,1982 -95,109,755,公司44,1982 -149,122,949,公司45,1982 -67,34,400,公司46,1982 -61,119,462,公司47,1982 -46,68,124,公司48,1982 -136,86,1371,公司49,1982 -65,46,585,公司0,1983 -32,86,517,公司1,1983 -71,10,748,公司2,1983 -113,115,1030,公司3,1983 -40,102,839,公司4,1983 -65,40,819,公司5,1983 -67,112,983,公司6,1983 -118,109,888,公司7,1983 -30,19,247,公司8,1983 -26,134,1134,公司9,1983 -97,34,1119,公司10,1983 -96,23,694,公司11,1983 -132,125,686,公司12,1983 -62,115,649,公司13,1983 -41,106,680,公司14,1983 -98,94,836,公司15,1983 -89,85,238,公司16,1983 -99,106,439,公司17,1983 -69,78,314,公司18,1983 -74,107,774,公司19,1983 -109,80,1036,公司20,1983 -81,93,883,公司21,1983 -90,94,448,公司22,1983 -38,89,446,公司23,1983 -113,24,235,公司24,1983 -52,124,1014,公司25,1983 -107,117,833,公司26,1983 -36,103,1088,公司27,1983 -59,110,652,公司28,1983 -79,46,251,公司29,1983 -78,112,585,公司30,1983 -121,103,1040,公司31,1983 -54,58,731,公司32,1983 -116,76,944,公司33,1983 -93,59,1036,公司34,1983 -20,65,752,公司35,1983 -112,73,979,公司36,1983 -66,87,621,公司37,1983 -101,41,1007,公司38,1983 -112,58,520,公司39,1983 -119,72,715,公司40,1983 -48,119,1086,公司41,1983 -79,85,904,公司42,1983 -60,96,145,公司43,1983 -96,108,772,公司44,1983 -149,122,970,公司45,1983 -69,37,431,公司46,1983 -61,123,421,公司47,1983 -45,68,110,公司48,1983 -137,86,1347,公司49,1983 -64,45,627,公司0,1984 -33,85,541,公司1,1984 -74,13,733,公司2,1984 -114,115,1042,公司3,1984 -39,103,835,公司4,1984 -68,39,779,公司5,1984 -68,111,1026,公司6,1984 -121,108,902,公司7,1984 -30,21,214,公司8,1984 -27,137,1137,公司9,1984 -100,35,1099,公司10,1984 -96,22,659,公司11,1984 -131,126,659,公司12,1984 -65,115,703,公司13,1984 -41,109,733,公司14,1984 -98,96,818,公司15,1984 -88,86,233,公司16,1984 -100,108,400,公司17,1984 -71,78,301,公司18,1984 -76,106,768,公司19,1984 -109,80,1009,公司20,1984 -81,94,844,公司21,1984 -93,96,459,公司22,1984 -41,91,412,公司23,1984 -116,27,240,公司24,1984 -53,126,1053,公司25,1984 -109,120,873,公司26,1984 -36,106,1076,公司27,1984 -62,111,686,公司28,1984 -81,47,249,公司29,1984 -77,112,585,公司30,1984 -120,106,1003,公司31,1984 -57,58,687,公司32,1984 -119,75,965,公司33,1984 -95,62,1066,公司34,1984 -22,66,735,公司35,1984 -113,74,1026,公司36,1984 -69,89,595,公司37,1984 -101,41,999,公司38,1984 -112,61,510,公司39,1984 -121,74,732,公司40,1984 -49,118,1066,公司41,1984 -78,87,859,公司42,1984 -61,100,143,公司43,1984 -98,108,825,公司44,1984 -153,123,1016,公司45,1984 -72,40,439,公司46,1984 -61,126,398,公司47,1984 -49,68,144,公司48,1984 -136,87,1326,公司49,1984 -63,47,672,公司0,1985 -31,87,570,公司1,1985 -76,12,759,公司2,1985 -116,118,1049,公司3,1985 -39,104,807,公司4,1985 -67,39,790,公司5,1985 -69,109,1033,公司6,1985 -122,108,945,公司7,1985 -31,21,210,公司8,1985 -26,136,1172,公司9,1985 -100,33,1070,公司10,1985 -96,21,686,公司11,1985 -133,127,654,公司12,1985 -64,117,754,公司13,1985 -41,109,698,公司14,1985 -99,97,849,公司15,1985 -91,88,252,公司16,1985 -101,110,381,公司17,1985 -70,79,352,公司18,1985 -76,108,756,公司19,1985 -108,80,965,公司20,1985 -81,94,805,公司21,1985 -92,99,485,公司22,1985 -43,92,396,公司23,1985 -115,30,294,公司24,1985 -54,125,1077,公司25,1985 -108,122,893,公司26,1985 -36,106,1070,公司27,1985 -63,111,684,公司28,1985 -80,46,288,公司29,1985 -80,115,551,公司30,1985 -121,105,1007,公司31,1985 -56,58,701,公司32,1985 -121,75,979,公司33,1985 -96,61,1116,公司34,1985 -22,67,770,公司35,1985 -114,78,1018,公司36,1985 -68,90,622,公司37,1985 -102,41,1014,公司38,1985 -115,64,479,公司39,1985 -125,73,709,公司40,1985 -50,117,1078,公司41,1985 -78,89,899,公司42,1985 -63,101,143,公司43,1985 -100,108,799,公司44,1985 -157,125,1046,公司45,1985 -72,41,445,公司46,1985 -60,126,433,公司47,1985 -49,72,188,公司48,1985 -136,89,1374,公司49,1985 -62,46,664,公司0,1986 -32,90,534,公司1,1986 -75,11,772,公司2,1986 -118,120,1047,公司3,1986 -41,104,774,公司4,1986 -67,41,826,公司5,1986 -70,110,1075,公司6,1986 -123,106,914,公司7,1986 -31,23,251,公司8,1986 -25,135,1129,公司9,1986 -100,32,1093,公司10,1986 -99,20,708,公司11,1986 -135,126,708,公司12,1986 -65,118,777,公司13,1986 -41,109,736,公司14,1986 -102,98,866,公司15,1986 -92,89,230,公司16,1986 -102,109,358,公司17,1986 -73,79,382,公司18,1986 -77,108,734,公司19,1986 -107,79,993,公司20,1986 -83,96,805,公司21,1986 -94,99,512,公司22,1986 -46,93,407,公司23,1986 -116,29,255,公司24,1986 -57,128,1106,公司25,1986 -107,122,872,公司26,1986 -38,109,1110,公司27,1986 -62,113,713,公司28,1986 -82,47,292,公司29,1986 -81,116,521,公司30,1986 -124,106,990,公司31,1986 -58,60,729,公司32,1986 -123,76,967,公司33,1986 -97,62,1109,公司34,1986 -26,66,765,公司35,1986 -113,80,1005,公司36,1986 -71,93,594,公司37,1986 -105,43,1012,公司38,1986 -114,67,485,公司39,1986 -124,75,751,公司40,1986 -49,118,1072,公司41,1986 -82,90,952,公司42,1986 -63,101,110,公司43,1986 -101,109,787,公司44,1986 -161,125,1045,公司45,1986 -72,41,426,公司46,1986 -63,126,451,公司47,1986 -51,71,172,公司48,1986 -138,90,1413,公司49,1986 -64,47,683,公司0,1987 -34,91,576,公司1,1987 -74,14,755,公司2,1987 -121,118,1063,公司3,1987 -43,103,793,公司4,1987 -65,43,875,公司5,1987 -70,108,1076,公司6,1987 -124,108,966,公司7,1987 -33,25,225,公司8,1987 -25,138,1095,公司9,1987 -101,32,1092,公司10,1987 -102,20,703,公司11,1987 -134,127,720,公司12,1987 -67,121,812,公司13,1987 -42,112,756,公司14,1987 -101,100,855,公司15,1987 -95,89,223,公司16,1987 -104,109,406,公司17,1987 -72,79,392,公司18,1987 -80,107,781,公司19,1987 -110,79,1000,公司20,1987 -86,99,779,公司21,1987 -94,99,564,公司22,1987 -49,93,397,公司23,1987 -116,32,236,公司24,1987 -60,128,1080,公司25,1987 -109,121,882,公司26,1987 -39,108,1084,公司27,1987 -65,116,728,公司28,1987 -81,48,299,公司29,1987 -83,119,536,公司30,1987 -125,108,991,公司31,1987 -61,61,745,公司32,1987 -122,77,1018,公司33,1987 -100,63,1101,公司34,1987 -26,65,723,公司35,1987 -113,81,970,公司36,1987 -72,95,597,公司37,1987 -105,44,996,公司38,1987 -116,70,450,公司39,1987 -128,75,778,公司40,1987 -51,118,1089,公司41,1987 -84,89,949,公司42,1987 -62,104,144,公司43,1987 -102,109,787,公司44,1987 -161,129,1023,公司45,1987 -76,43,402,公司46,1987 -65,130,479,公司47,1987 -51,72,138,公司48,1987 -138,92,1384,公司49,1987 -65,46,708,公司0,1988 -34,91,552,公司1,1988 -75,16,750,公司2,1988 -120,116,1093,公司3,1988 -45,101,789,公司4,1988 -68,46,832,公司5,1988 -70,111,1077,公司6,1988 -122,109,956,公司7,1988 -35,27,252,公司8,1988 -28,141,1108,公司9,1988 -104,32,1083,公司10,1988 -102,19,731,公司11,1988 -134,129,702,公司12,1988 -69,123,858,公司13,1988 -41,111,749,公司14,1988 -99,100,876,公司15,1988 -98,89,253,公司16,1988 -104,109,456,公司17,1988 -74,80,411,公司18,1988 -81,110,778,公司19,1988 -112,82,1044,公司20,1988 -86,98,819,公司21,1988 -96,101,527,公司22,1988 -49,93,354,公司23,1988 -116,32,211,公司24,1988 -60,127,1058,公司25,1988 -109,123,839,公司26,1988 -40,112,1095,公司27,1988 -66,118,698,公司28,1988 -81,49,287,公司29,1988 -84,121,589,公司30,1988 -129,111,961,公司31,1988 -62,61,749,公司32,1988 -125,76,1050,公司33,1988 -102,65,1134,公司34,1988 -28,65,745,公司35,1988 -112,84,1003,公司36,1988 -71,96,560,公司37,1988 -106,44,1030,公司38,1988 -118,72,429,公司39,1988 -131,79,756,公司40,1988 -54,120,1137,公司41,1988 -85,88,933,公司42,1988 -66,105,161,公司43,1988 -104,111,821,公司44,1988 -163,132,1066,公司45,1988 -80,43,376,公司46,1988 -68,129,448,公司47,1988 -51,73,191,公司48,1988 -137,96,1346,公司49,1988 -68,49,725,公司0,1989 -37,92,568,公司1,1989 -76,18,802,公司2,1989 -121,115,1099,公司3,1989 -47,101,810,公司4,1989 -68,45,862,公司5,1989 -69,112,1131,公司6,1989 -123,108,958,公司7,1989 -34,29,289,公司8,1989 -27,144,1129,公司9,1989 -106,33,1055,公司10,1989 -102,20,712,公司11,1989 -133,127,673,公司12,1989 -69,126,821,公司13,1989 -41,113,797,公司14,1989 -98,100,835,公司15,1989 -97,90,295,公司16,1989 -107,110,452,公司17,1989 -74,82,385,公司18,1989 -84,109,769,公司19,1989 -115,85,1060,公司20,1989 -86,99,806,公司21,1989 -96,101,512,公司22,1989 -49,95,343,公司23,1989 -118,33,238,公司24,1989 -60,130,1034,公司25,1989 -109,122,888,公司26,1989 -42,113,1091,公司27,1989 -69,118,733,公司28,1989 -82,52,314,公司29,1989 -88,121,557,公司30,1989 -129,114,1003,公司31,1989 -64,64,801,公司32,1989 -126,76,1078,公司33,1989 -106,65,1137,公司34,1989 -27,68,786,公司35,1989 -115,84,993,公司36,1989 -73,96,526,公司37,1989 -106,45,1020,公司38,1989 -121,74,404,公司39,1989 -132,79,795,公司40,1989 -56,122,1101,公司41,1989 -88,90,979,公司42,1989 -68,107,136,公司43,1989 -107,114,828,公司44,1989 -167,132,1062,公司45,1989 -79,44,409,公司46,1989 -71,130,417,公司47,1989 -51,74,242,公司48,1989 -137,95,1367,公司49,1989 -67,47,777,公司0,1990 -39,94,612,公司1,1990 -78,19,830,公司2,1990 -122,116,1110,公司3,1990 -48,102,865,公司4,1990 -67,45,825,公司5,1990 -70,115,1170,公司6,1990 -124,109,972,公司7,1990 -33,31,321,公司8,1990 -30,146,1132,公司9,1990 -107,33,1023,公司10,1990 -101,18,758,公司11,1990 -133,130,710,公司12,1990 -71,126,820,公司13,1990 -43,114,828,公司14,1990 -98,103,869,公司15,1990 -100,93,295,公司16,1990 -108,109,476,公司17,1990 -73,82,344,公司18,1990 -84,110,815,公司19,1990 -118,86,1065,公司20,1990 -89,102,811,公司21,1990 -97,101,473,公司22,1990 -51,94,392,公司23,1990 -121,34,244,公司24,1990 -60,132,1050,公司25,1990 -110,124,915,公司26,1990 -45,113,1117,公司27,1990 -71,119,735,公司28,1990 -81,52,303,公司29,1990 -90,124,547,公司30,1990 -129,114,964,公司31,1990 -66,66,840,公司32,1990 -127,79,1124,公司33,1990 -108,66,1108,公司34,1990 -27,68,747,公司35,1990 -114,85,1047,公司36,1990 -72,97,578,公司37,1990 -106,47,1059,公司38,1990 -120,77,429,公司39,1990 -132,78,790,公司40,1990 -59,124,1061,公司41,1990 -89,91,1033,公司42,1990 -71,108,172,公司43,1990 -106,114,836,公司44,1990 -169,136,1030,公司45,1990 -79,43,407,公司46,1990 -74,133,463,公司47,1990 -55,77,293,公司48,1990 -136,97,1360,公司49,1990 -70,47,768,公司0,1991 -42,95,594,公司1,1991 -79,19,872,公司2,1991 -124,117,1161,公司3,1991 -49,102,822,公司4,1991 -69,48,810,公司5,1991 -69,115,1220,公司6,1991 -122,112,954,公司7,1991 -34,32,319,公司8,1991 -31,145,1112,公司9,1991 -106,35,980,公司10,1991 -100,16,783,公司11,1991 -135,128,748,公司12,1991 -73,128,805,公司13,1991 -44,114,849,公司14,1991 -100,103,863,公司15,1991 -103,91,253,公司16,1991 -106,110,460,公司17,1991 -73,81,331,公司18,1991 -86,109,771,公司19,1991 -119,85,1095,公司20,1991 -92,104,866,公司21,1991 -96,104,495,公司22,1991 -50,94,398,公司23,1991 -123,33,252,公司24,1991 -61,132,1015,公司25,1991 -109,123,917,公司26,1991 -48,112,1096,公司27,1991 -73,121,700,公司28,1991 -82,54,311,公司29,1991 -90,127,534,公司30,1991 -130,114,995,公司31,1991 -69,69,819,公司32,1991 -130,80,1114,公司33,1991 -107,67,1117,公司34,1991 -30,69,716,公司35,1991 -116,86,1098,公司36,1991 -75,100,615,公司37,1991 -108,46,1103,公司38,1991 -122,81,407,公司39,1991 -132,80,764,公司40,1991 -61,124,1096,公司41,1991 -92,91,1032,公司42,1991 -73,109,178,公司43,1991 -106,118,880,公司44,1991 -169,135,1021,公司45,1991 -78,43,375,公司46,1991 -78,136,474,公司47,1991 -56,81,333,公司48,1991 -138,98,1342,公司49,1991 -72,48,781,公司0,1992 -41,97,640,公司1,1992 -80,19,849,公司2,1992 -123,118,1145,公司3,1992 -50,100,847,公司4,1992 -68,49,783,公司5,1992 -72,114,1220,公司6,1992 -125,112,967,公司7,1992 -33,31,336,公司8,1992 -34,143,1079,公司9,1992 -105,36,1007,公司10,1992 -102,17,783,公司11,1992 -134,129,732,公司12,1992 -71,131,825,公司13,1992 -45,116,867,公司14,1992 -99,106,891,公司15,1992 -104,92,303,公司16,1992 -109,112,459,公司17,1992 -73,79,313,公司18,1992 -87,109,745,公司19,1992 -120,87,1110,公司20,1992 -91,107,884,公司21,1992 -99,103,487,公司22,1992 -53,97,379,公司23,1992 -123,33,265,公司24,1992 -60,131,1004,公司25,1992 -111,124,926,公司26,1992 -51,113,1058,公司27,1992 -74,123,724,公司28,1992 -83,53,323,公司29,1992 -93,127,542,公司30,1992 -133,115,1001,公司31,1992 -68,68,776,公司32,1992 -132,80,1113,公司33,1992 -106,69,1126,公司34,1992 -33,71,746,公司35,1992 -116,89,1078,公司36,1992 -78,101,651,公司37,1992 -107,46,1063,公司38,1992 -121,82,372,公司39,1992 -133,81,760,公司40,1992 -60,125,1115,公司41,1992 -94,93,1045,公司42,1992 -72,110,226,公司43,1992 -109,117,849,公司44,1992 -169,138,1047,公司45,1992 -77,43,430,公司46,1992 -78,136,464,公司47,1992 -55,83,336,公司48,1992 -141,98,1375,公司49,1992 -75,49,799,公司0,1993 -42,96,661,公司1,1993 -83,19,813,公司2,1993 -125,120,1199,公司3,1993 -50,101,857,公司4,1993 -71,50,769,公司5,1993 -74,112,1178,公司6,1993 -124,112,1004,公司7,1993 -33,31,364,公司8,1993 -34,144,1063,公司9,1993 -106,39,1026,公司10,1993 -100,16,785,公司11,1993 -132,130,691,公司12,1993 -71,129,874,公司13,1993 -47,117,908,公司14,1993 -101,105,898,公司15,1993 -104,93,334,公司16,1993 -112,112,463,公司17,1993 -75,82,301,公司18,1993 -87,109,767,公司19,1993 -121,89,1136,公司20,1993 -93,105,860,公司21,1993 -102,103,479,公司22,1993 -55,100,418,公司23,1993 -124,36,308,公司24,1993 -61,131,1009,公司25,1993 -114,126,907,公司26,1993 -54,114,1089,公司27,1993 -77,126,690,公司28,1993 -85,55,347,公司29,1993 -96,127,511,公司30,1993 -134,116,1019,公司31,1993 -71,69,762,公司32,1993 -134,80,1128,公司33,1993 -107,70,1142,公司34,1993 -36,74,720,公司35,1993 -115,92,1132,公司36,1993 -78,104,632,公司37,1993 -108,49,1096,公司38,1993 -124,84,338,公司39,1993 -135,82,767,公司40,1993 -61,128,1170,公司41,1993 -93,93,1043,公司42,1993 -76,109,207,公司43,1993 -112,119,873,公司44,1993 -169,141,1049,公司45,1993 -78,43,484,公司46,1993 -82,138,513,公司47,1993 -58,86,316,公司48,1993 -142,100,1373,公司49,1993 -73,47,836,公司0,1994 -43,99,673,公司1,1994 -84,20,804,公司2,1994 -126,119,1235,公司3,1994 -52,101,835,公司4,1994 -70,50,814,公司5,1994 -74,112,1224,公司6,1994 -125,113,1033,公司7,1994 -35,34,395,公司8,1994 -34,143,1066,公司9,1994 -105,39,1025,公司10,1994 -101,16,766,公司11,1994 -132,131,714,公司12,1994 -71,131,899,公司13,1994 -47,119,944,公司14,1994 -103,106,877,公司15,1994 -105,95,319,公司16,1994 -113,115,476,公司17,1994 -77,84,270,公司18,1994 -90,111,747,公司19,1994 -124,89,1107,公司20,1994 -92,105,858,公司21,1994 -105,104,491,公司22,1994 -57,102,460,公司23,1994 -126,37,326,公司24,1994 -60,133,1001,公司25,1994 -113,128,887,公司26,1994 -55,115,1046,公司27,1994 -78,126,668,公司28,1994 -86,54,372,公司29,1994 -99,126,510,公司30,1994 -135,119,994,公司31,1994 -73,68,743,公司32,1994 -136,83,1177,公司33,1994 -107,72,1152,公司34,1994 -38,77,765,公司35,1994 -115,95,1143,公司36,1994 -77,107,671,公司37,1994 -107,50,1128,公司38,1994 -128,86,375,公司39,1994 -135,86,770,公司40,1994 -61,127,1133,公司41,1994 -95,96,1056,公司42,1994 -76,109,218,公司43,1994 -114,121,899,公司44,1994 -168,144,1074,公司45,1994 -78,43,464,公司46,1994 -82,141,545,公司47,1994 -59,86,322,公司48,1994 -144,100,1357,公司49,1994 -74,47,805,公司0,1995 -42,102,700,公司1,1995 -85,22,803,公司2,1995 -124,119,1231,公司3,1995 -53,103,821,公司4,1995 -71,50,858,公司5,1995 -75,112,1200,公司6,1995 -127,114,1013,公司7,1995 -36,34,375,公司8,1995 -36,141,1103,公司9,1995 -106,39,1073,公司10,1995 -102,15,760,公司11,1995 -131,132,749,公司12,1995 -71,133,946,公司13,1995 -47,119,992,公司14,1995 -106,106,841,公司15,1995 -108,96,365,公司16,1995 -113,115,442,公司17,1995 -80,85,287,公司18,1995 -91,113,749,公司19,1995 -125,90,1128,公司20,1995 -91,106,860,公司21,1995 -106,106,467,公司22,1995 -59,102,472,公司23,1995 -129,39,313,公司24,1995 -61,132,961,公司25,1995 -115,130,862,公司26,1995 -57,115,1068,公司27,1995 -79,125,624,公司28,1995 -87,54,418,公司29,1995 -98,129,505,公司30,1995 -138,118,961,公司31,1995 -76,67,719,公司32,1995 -138,84,1163,公司33,1995 -106,71,1149,公司34,1995 -38,78,814,公司35,1995 -115,98,1147,公司36,1995 -78,108,697,公司37,1995 -109,53,1117,公司38,1995 -131,87,347,公司39,1995 -136,89,780,公司40,1995 -61,127,1151,公司41,1995 -96,97,1012,公司42,1995 -79,111,272,公司43,1995 -115,124,909,公司44,1995 -171,146,1122,公司45,1995 -82,44,448,公司46,1995 -84,141,521,公司47,1995 -60,90,313,公司48,1995 -146,102,1372,公司49,1995 -75,47,818,公司0,1996 -45,105,754,公司1,1996 -86,23,793,公司2,1996 -124,121,1245,公司3,1996 -52,105,847,公司4,1996 -70,49,885,公司5,1996 -75,114,1199,公司6,1996 -128,117,1037,公司7,1996 -39,34,359,公司8,1996 -36,144,1061,公司9,1996 -105,41,1054,公司10,1996 -102,15,799,公司11,1996 -132,135,739,公司12,1996 -70,132,917,公司13,1996 -49,121,979,公司14,1996 -106,107,866,公司15,1996 -111,95,345,公司16,1996 -112,116,423,公司17,1996 -83,85,247,公司18,1996 -91,113,800,公司19,1996 -125,91,1130,公司20,1996 -94,106,908,公司21,1996 -108,105,480,公司22,1996 -59,102,492,公司23,1996 -131,41,335,公司24,1996 -60,131,950,公司25,1996 -116,129,874,公司26,1996 -60,116,1118,公司27,1996 -80,127,627,公司28,1996 -91,53,431,公司29,1996 -99,132,491,公司30,1996 -137,121,955,公司31,1996 -79,71,708,公司32,1996 -139,84,1183,公司33,1996 -109,71,1144,公司34,1996 -40,79,823,公司35,1996 -116,99,1142,公司36,1996 -77,111,657,公司37,1996 -113,52,1073,公司38,1996 -135,86,375,公司39,1996 -138,91,777,公司40,1996 -62,128,1127,公司41,1996 -96,100,1024,公司42,1996 -78,114,268,公司43,1996 -114,124,880,公司44,1996 -170,148,1103,公司45,1996 -85,46,436,公司46,1996 -87,144,553,公司47,1996 -59,89,331,公司48,1996 -147,102,1376,公司49,1996 -76,48,804,公司0,1997 -44,106,733,公司1,1997 -88,22,763,公司2,1997 -127,124,1220,公司3,1997 -53,104,850,公司4,1997 -69,52,840,公司5,1997 -77,114,1164,公司6,1997 -127,118,1018,公司7,1997 -41,32,315,公司8,1997 -35,143,1070,公司9,1997 -107,42,1076,公司10,1997 -103,16,851,公司11,1997 -134,137,719,公司12,1997 -71,134,916,公司13,1997 -50,124,984,公司14,1997 -109,106,848,公司15,1997 -113,93,345,公司16,1997 -115,119,476,公司17,1997 -83,85,220,公司18,1997 -93,112,855,公司19,1997 -125,90,1142,公司20,1997 -94,109,883,公司21,1997 -108,108,501,公司22,1997 -62,101,470,公司23,1997 -130,44,337,公司24,1997 -60,134,924,公司25,1997 -115,132,830,公司26,1997 -61,115,1097,公司27,1997 -81,128,629,公司28,1997 -92,56,477,公司29,1997 -102,131,488,公司30,1997 -138,120,973,公司31,1997 -81,71,679,公司32,1997 -138,87,1165,公司33,1997 -110,73,1195,公司34,1997 -39,82,818,公司35,1997 -115,102,1197,公司36,1997 -77,113,660,公司37,1997 -114,56,1048,公司38,1997 -139,87,335,公司39,1997 -141,90,761,公司40,1997 -61,127,1093,公司41,1997 -96,102,1004,公司42,1997 -77,117,302,公司43,1997 -113,127,919,公司44,1997 -171,147,1095,公司45,1997 -87,47,439,公司46,1997 -88,146,573,公司47,1997 -63,89,301,公司48,1997 -147,106,1395,公司49,1997 -79,49,790,公司0,1998 -44,106,738,公司1,1998 -86,25,768,公司2,1998 -126,123,1267,公司3,1998 -53,103,810,公司4,1998 -69,53,804,公司5,1998 -78,116,1180,公司6,1998 -127,118,984,公司7,1998 -40,32,285,公司8,1998 -36,144,1077,公司9,1998 -108,45,1040,公司10,1998 -106,17,897,公司11,1998 -136,139,716,公司12,1998 -73,134,920,公司13,1998 -50,125,989,公司14,1998 -108,107,806,公司15,1998 -114,94,386,公司16,1998 -114,119,495,公司17,1998 -86,85,246,公司18,1998 -92,113,834,公司19,1998 -127,92,1138,公司20,1998 -96,108,900,公司21,1998 -110,108,464,公司22,1998 -64,101,474,公司23,1998 -130,44,310,公司24,1998 -62,137,935,公司25,1998 -115,135,874,公司26,1998 -64,118,1125,公司27,1998 -81,129,599,公司28,1998 -93,56,529,公司29,1998 -105,133,532,公司30,1998 -139,119,928,公司31,1998 -82,73,732,公司32,1998 -137,90,1205,公司33,1998 -112,76,1168,公司34,1998 -40,83,845,公司35,1998 -117,102,1180,公司36,1998 -80,113,661,公司37,1998 -113,58,1050,公司38,1998 -142,88,325,公司39,1998 -141,91,802,公司40,1998 -62,128,1126,公司41,1998 -98,104,972,公司42,1998 -77,117,324,公司43,1998 -113,127,952,公司44,1998 -172,148,1113,公司45,1998 -87,48,396,公司46,1998 -87,148,574,公司47,1998 -62,90,328,公司48,1998 -149,110,1423,公司49,1998 -79,50,748,公司0,1999 -45,106,759,公司1,1999 -88,27,763,公司2,1999 -124,122,1296,公司3,1999 -52,102,805,公司4,1999 -68,52,765,公司5,1999 -78,118,1215,公司6,1999 -128,119,980,公司7,1999 -40,31,244,公司8,1999 -39,143,1061,公司9,1999 -110,46,1060,公司10,1999 -106,20,926,公司11,1999 -137,141,691,公司12,1999 -75,133,935,公司13,1999 -50,126,954,公司14,1999 -107,108,793,公司15,1999 -117,95,376,公司16,1999 -114,122,451,公司17,1999 -89,87,245,公司18,1999 -94,116,827,公司19,1999 -126,94,1161,公司20,1999 -97,110,869,公司21,1999 -110,109,429,公司22,1999 -67,104,474,公司23,1999 -132,45,275,公司24,1999 -61,139,939,公司25,1999 -114,138,928,公司26,1999 -67,120,1106,公司27,1999 -80,130,627,公司28,1999 -93,55,486,公司29,1999 -109,134,526,公司30,1999 -139,121,927,公司31,1999 -81,75,710,公司32,1999 -140,91,1173,公司33,1999 -114,75,1123,公司34,1999 -43,86,874,公司35,1999 -119,105,1213,公司36,1999 -82,115,709,公司37,1999 -115,57,1023,公司38,1999 -143,92,281,公司39,1999 -144,91,796,公司40,1999 -61,128,1136,公司41,1999 -101,106,1026,公司42,1999 -78,116,375,公司43,1999 -115,130,990,公司44,1999 -172,151,1161,公司45,1999 -89,49,414,公司46,1999 -88,147,550,公司47,1999 -64,90,352,公司48,1999 -152,112,1464,公司49,1999 -79,50,741,公司0,2000 -44,105,809,公司1,2000 -89,27,812,公司2,2000 -127,120,1329,公司3,2000 -54,102,831,公司4,2000 -70,55,775,公司5,2000 -80,118,1222,公司6,2000 -130,121,995,公司7,2000 -39,33,259,公司8,2000 -39,143,1114,公司9,2000 -112,46,1016,公司10,2000 -108,23,956,公司11,2000 -139,141,710,公司12,2000 -76,136,955,公司13,2000 -49,129,1008,公司14,2000 -109,108,750,公司15,2000 -117,98,358,公司16,2000 -114,123,423,公司17,2000 -90,87,215,公司18,2000 -94,119,875,公司19,2000 -126,96,1205,公司20,2000 -100,113,923,公司21,2000 -111,109,421,公司22,2000 -68,106,446,公司23,2000 -131,45,237,公司24,2000 -62,141,924,公司25,2000 -117,138,905,公司26,2000 -68,121,1088,公司27,2000 -80,130,612,公司28,2000 -93,54,522,公司29,2000 -109,135,498,公司30,2000 -142,124,897,公司31,2000 -83,75,670,公司32,2000 -141,91,1224,公司33,2000 -115,78,1142,公司34,2000 -47,88,864,公司35,2000 -120,107,1249,公司36,2000 -82,117,704,公司37,2000 -116,57,1074,公司38,2000 -144,95,314,公司39,2000 -143,90,751,公司40,2000 -61,130,1155,公司41,2000 -102,109,1065,公司42,2000 -79,115,418,公司43,2000 -116,131,952,公司44,2000 -172,151,1200,公司45,2000 -92,49,440,公司46,2000 -88,151,581,公司47,2000 -68,94,393,公司48,2000 -154,114,1470,公司49,2000 -79,52,733,公司0,2001 -44,105,834,公司1,2001 -89,29,866,公司2,2001 -128,119,1374,公司3,2001 -53,104,835,公司4,2001 -69,57,784,公司5,2001 -79,119,1209,公司6,2001 -131,120,1010,公司7,2001 -40,32,297,公司8,2001 -37,143,1155,公司9,2001 -112,48,1062,公司10,2001 -109,22,1002,公司11,2001 -141,142,751,公司12,2001 -77,136,960,公司13,2001 -51,128,983,公司14,2001 -112,110,734,公司15,2001 -117,100,403,公司16,2001 -115,122,387,公司17,2001 -91,89,208,公司18,2001 -95,122,871,公司19,2001 -128,97,1162,公司20,2001 -101,114,901,公司21,2001 -110,108,422,公司22,2001 -70,109,475,公司23,2001 -133,44,217,公司24,2001 -64,140,946,公司25,2001 -119,139,883,公司26,2001 -71,124,1071,公司27,2001 -79,133,580,公司28,2001 -95,54,479,公司29,2001 -109,139,527,公司30,2001 -142,124,929,公司31,2001 -85,77,658,公司32,2001 -143,93,1228,公司33,2001 -116,80,1178,公司34,2001 -50,91,881,公司35,2001 -121,110,1280,公司36,2001 -81,120,691,公司37,2001 -120,60,1036,公司38,2001 -146,97,325,公司39,2001 -142,90,790,公司40,2001 -62,130,1166,公司41,2001 -105,110,1097,公司42,2001 -81,116,386,公司43,2001 -117,133,1007,公司44,2001 -171,152,1182,公司45,2001 -92,49,487,公司46,2001 -88,151,605,公司47,2001 -68,98,426,公司48,2001 -158,116,1437,公司49,2001 -80,53,775,公司0,2002 -43,106,802,公司1,2002 -87,31,899,公司2,2002 -127,121,1406,公司3,2002 -54,102,813,公司4,2002 -72,55,741,公司5,2002 -80,119,1210,公司6,2002 -130,119,1006,公司7,2002 -38,32,345,公司8,2002 -35,145,1142,公司9,2002 -111,51,1042,公司10,2002 -112,24,1014,公司11,2002 -141,143,710,公司12,2002 -78,136,963,公司13,2002 -50,131,1003,公司14,2002 -114,109,767,公司15,2002 -118,99,366,公司16,2002 -116,121,409,公司17,2002 -89,90,175,公司18,2002 -94,125,894,公司19,2002 -131,100,1208,公司20,2002 -102,113,882,公司21,2002 -112,111,448,公司22,2002 -69,111,495,公司23,2002 -132,44,219,公司24,2002 -64,141,973,公司25,2002 -119,139,879,公司26,2002 -73,126,1068,公司27,2002 -82,136,542,公司28,2002 -97,53,513,公司29,2002 -110,139,512,公司30,2002 -144,126,952,公司31,2002 -87,76,699,公司32,2002 -144,92,1271,公司33,2002 -119,83,1211,公司34,2002 -52,92,849,公司35,2002 -124,109,1262,公司36,2002 -81,121,677,公司37,2002 -119,63,1031,公司38,2002 -149,100,372,公司39,2002 -143,93,805,公司40,2002 -64,131,1181,公司41,2002 -105,110,1056,公司42,2002 -84,115,420,公司43,2002 -117,133,1020,公司44,2002 -174,152,1156,公司45,2002 -94,52,445,公司46,2002 -91,155,562,公司47,2002 -70,100,429,公司48,2002 -159,118,1398,公司49,2002 -80,56,747,公司0,2003 -43,108,855,公司1,2003 -90,34,917,公司2,2003 -130,120,1413,公司3,2003 -53,101,806,公司4,2003 -72,54,742,公司5,2003 -79,118,1256,公司6,2003 -128,118,1029,公司7,2003 -38,33,388,公司8,2003 -36,146,1155,公司9,2003 -110,52,999,公司10,2003 -111,26,974,公司11,2003 -143,143,675,公司12,2003 -77,139,970,公司13,2003 -51,131,1050,公司14,2003 -117,110,790,公司15,2003 -118,101,381,公司16,2003 -119,120,439,公司17,2003 -91,90,199,公司18,2003 -96,128,928,公司19,2003 -134,101,1210,公司20,2003 -103,114,936,公司21,2003 -111,110,473,公司22,2003 -70,111,501,公司23,2003 -132,47,192,公司24,2003 -63,141,991,公司25,2003 -122,138,839,公司26,2003 -76,127,1119,公司27,2003 -84,136,529,公司28,2003 -97,52,488,公司29,2003 -112,141,559,公司30,2003 -147,128,982,公司31,2003 -89,79,671,公司32,2003 -147,92,1244,公司33,2003 -122,84,1178,公司34,2003 -52,92,855,公司35,2003 -123,113,1273,公司36,2003 -80,121,666,公司37,2003 -118,64,1008,公司38,2003 -150,101,413,公司39,2003 -144,97,837,公司40,2003 -66,131,1184,公司41,2003 -109,113,1042,公司42,2003 -84,117,465,公司43,2003 -116,133,1038,公司44,2003 -175,153,1139,公司45,2003 -98,55,484,公司46,2003 -95,158,551,公司47,2003 -74,102,431,公司48,2003 -160,120,1408,公司49,2003 -82,56,780,公司0,2004 -46,109,885,公司1,2004 -88,35,916,公司2,2004 -129,123,1443,公司3,2004 -52,102,827,公司4,2004 -71,54,728,公司5,2004 -80,119,1226,公司6,2004 -130,121,1028,公司7,2004 -37,33,416,公司8,2004 -36,145,1210,公司9,2004 -110,53,1047,公司10,2004 -110,27,929,公司11,2004 -143,142,654,公司12,2004 -78,138,1011,公司13,2004 -50,130,1053,公司14,2004 -117,110,833,公司15,2004 -118,102,418,公司16,2004 -119,122,460,公司17,2004 -91,91,228,公司18,2004 -98,131,890,公司19,2004 -137,103,1223,公司20,2004 -105,117,907,公司21,2004 -113,109,523,公司22,2004 -70,112,522,公司23,2004 -132,47,243,公司24,2004 -66,144,971,公司25,2004 -123,140,846,公司26,2004 -79,128,1152,公司27,2004 -87,137,583,公司28,2004 -97,52,473,公司29,2004 -112,142,572,公司30,2004 -147,131,1006,公司31,2004 -88,81,674,公司32,2004 -150,92,1250,公司33,2004 -125,85,1183,公司34,2004 -53,94,821,公司35,2004 -124,113,1233,公司36,2004 -81,123,643,公司37,2004 -119,64,1033,公司38,2004 -150,100,436,公司39,2004 -144,100,831,公司40,2004 -67,134,1226,公司41,2004 -108,113,1058,公司42,2004 -86,118,452,公司43,2004 -118,137,997,公司44,2004 -175,155,1168,公司45,2004 -100,57,536,公司46,2004 -96,161,532,公司47,2004 -76,103,441,公司48,2004 -163,123,1373,公司49,2004 -83,58,809,公司0,2005 -47,108,860,公司1,2005 -89,36,934,公司2,2005 -127,123,1466,公司3,2005 -52,104,843,公司4,2005 -70,52,700,公司5,2005 -80,119,1241,公司6,2005 -132,123,1059,公司7,2005 -40,33,405,公司8,2005 -36,146,1204,公司9,2005 -112,52,1036,公司10,2005 -109,26,921,公司11,2005 -145,142,674,公司12,2005 -79,139,992,公司13,2005 -52,132,1077,公司14,2005 -116,113,843,公司15,2005 -118,103,424,公司16,2005 -117,122,432,公司17,2005 -92,92,255,公司18,2005 -99,131,902,公司19,2005 -139,105,1186,公司20,2005 -105,116,935,公司21,2005 -115,108,563,公司22,2005 -72,114,538,公司23,2005 -135,46,269,公司24,2005 -69,144,976,公司25,2005 -124,141,882,公司26,2005 -80,128,1201,公司27,2005 -90,136,596,公司28,2005 -100,53,495,公司29,2005 -114,141,617,公司30,2005 -148,130,991,公司31,2005 -91,83,704,公司32,2005 -153,92,1217,公司33,2005 -125,89,1173,公司34,2005 -56,96,872,公司35,2005 -124,113,1213,公司36,2005 -82,122,664,公司37,2005 -121,67,1000,公司38,2005 -149,104,434,公司39,2005 -144,99,840,公司40,2005 -70,137,1201,公司41,2005 -111,114,1022,公司42,2005 -88,121,409,公司43,2005 -119,141,993,公司44,2005 -177,156,1126,公司45,2005 -104,60,504,公司46,2005 -95,160,499,公司47,2005 -75,102,449,公司48,2005 -162,126,1371,公司49,2005 -86,61,845,公司0,2006 -48,110,907,公司1,2006 -88,36,907,公司2,2006 -128,122,1447,公司3,2006 -54,103,848,公司4,2006 -73,51,718,公司5,2006 -82,119,1264,公司6,2006 -133,122,1070,公司7,2006 -40,35,410,公司8,2006 -35,147,1247,公司9,2006 -112,53,1025,公司10,2006 -109,27,923,公司11,2006 -148,144,667,公司12,2006 -79,140,971,公司13,2006 -51,131,1065,公司14,2006 -118,115,852,公司15,2006 -120,101,472,公司16,2006 -118,122,446,公司17,2006 -95,92,227,公司18,2006 -100,133,942,公司19,2006 -142,104,1212,公司20,2006 -106,117,938,公司21,2006 -117,111,540,公司22,2006 -72,117,552,公司23,2006 -137,48,243,公司24,2006 -69,144,965,公司25,2006 -126,140,905,公司26,2006 -81,130,1239,公司27,2006 -89,138,571,公司28,2006 -103,52,505,公司29,2006 -113,144,671,公司30,2006 -147,133,1025,公司31,2006 -90,83,701,公司32,2006 -154,94,1182,公司33,2006 -127,92,1209,公司34,2006 -55,95,912,公司35,2006 -124,114,1184,公司36,2006 -82,124,650,公司37,2006 -121,70,1004,公司38,2006 -149,106,461,公司39,2006 -143,102,859,公司40,2006 -71,139,1205,公司41,2006 -111,115,1000,公司42,2006 -88,120,376,公司43,2006 -123,140,1016,公司44,2006 -176,156,1088,公司45,2006 -104,61,500,公司46,2006 -98,162,544,公司47,2006 -79,105,485,公司48,2006 -165,126,1343,公司49,2006 -86,60,891,公司0,2007 -50,111,878,公司1,2007 -88,39,883,公司2,2007 -128,124,1469,公司3,2007 -54,104,828,公司4,2007 -73,50,768,公司5,2007 -83,120,1288,公司6,2007 -136,123,1034,公司7,2007 -43,35,425,公司8,2007 -35,148,1258,公司9,2007 -113,54,1047,公司10,2007 -108,26,948,公司11,2007 -149,144,694,公司12,2007 -77,142,1023,公司13,2007 -52,134,1049,公司14,2007 -117,116,859,公司15,2007 -122,104,473,公司16,2007 -120,124,407,公司17,2007 -96,91,187,公司18,2007 -103,135,951,公司19,2007 -141,106,1189,公司20,2007 -105,119,990,公司21,2007 -116,110,582,公司22,2007 -74,115,556,公司23,2007 -138,50,279,公司24,2007 -68,145,953,公司25,2007 -127,142,876,公司26,2007 -83,129,1236,公司27,2007 -91,137,597,公司28,2007 -106,55,471,公司29,2007 -113,143,713,公司30,2007 -149,132,997,公司31,2007 -93,84,668,公司32,2007 -153,96,1174,公司33,2007 -126,95,1180,公司34,2007 -57,97,872,公司35,2007 -126,115,1191,公司36,2007 -86,125,652,公司37,2007 -124,72,992,公司38,2007 -149,108,501,公司39,2007 -144,105,887,公司40,2007 -71,140,1246,公司41,2007 -114,118,1005,公司42,2007 -90,123,335,公司43,2007 -123,142,1015,公司44,2007 -179,157,1114,公司45,2007 -103,65,476,公司46,2007 -99,163,503,公司47,2007 -80,106,508,公司48,2007 -165,127,1300,公司49,2007 -88,60,915,公司0,2008 -51,114,933,公司1,2008 -91,39,914,公司2,2008 -127,126,1443,公司3,2008 -56,103,858,公司4,2008 -72,49,729,公司5,2008 -83,123,1302,公司6,2008 -137,123,1036,公司7,2008 -44,34,424,公司8,2008 -36,150,1261,公司9,2008 -113,52,1092,公司10,2008 -107,25,918,公司11,2008 -150,143,700,公司12,2008 -77,143,1007,公司13,2008 -51,133,1099,公司14,2008 -116,117,815,公司15,2008 -120,103,496,公司16,2008 -122,124,396,公司17,2008 -95,93,181,公司18,2008 -104,138,922,公司19,2008 -140,106,1233,公司20,2008 -105,120,975,公司21,2008 -115,110,635,公司22,2008 -76,115,552,公司23,2008 -140,49,236,公司24,2008 -68,145,986,公司25,2008 -130,143,840,公司26,2008 -85,130,1199,公司27,2008 -90,139,575,公司28,2008 -106,55,464,公司29,2008 -115,142,683,公司30,2008 -151,135,971,公司31,2008 -95,83,627,公司32,2008 -152,96,1202,公司33,2008 -128,97,1147,公司34,2008 -57,99,883,公司35,2008 -126,118,1237,公司36,2008 -89,124,687,公司37,2008 -125,73,950,公司38,2008 -152,110,555,公司39,2008 -148,105,939,公司40,2008 -71,140,1252,公司41,2008 -117,121,1051,公司42,2008 -94,122,328,公司43,2008 -124,144,995,公司44,2008 -179,160,1164,公司45,2008 -106,68,458,公司46,2008 -100,166,495,公司47,2008 -82,108,475,公司48,2008 -168,130,1316,公司49,2008 -89,61,893,公司0,2009 -53,114,913,公司1,2009 -94,40,914,公司2,2009 -128,125,1463,公司3,2009 -58,101,847,公司4,2009 -74,50,753,公司5,2009 -82,123,1338,公司6,2009 -138,125,994,公司7,2009 -46,36,408,公司8,2009 -37,151,1249,公司9,2009 -113,51,1085,公司10,2009 -106,25,901,公司11,2009 -148,143,731,公司12,2009 -76,146,1013,公司13,2009 -54,131,1078,公司14,2009 -115,116,785,公司15,2009 -122,104,541,公司16,2009 -123,122,372,公司17,2009 -98,92,225,公司18,2009 -105,140,945,公司19,2009 -139,109,1236,公司20,2009 -104,123,977,公司21,2009 -118,111,683,公司22,2009 -78,114,536,公司23,2009 -143,52,228,公司24,2009 -69,147,1003,公司25,2009 -129,146,873,公司26,2009 -85,133,1245,公司27,2009 -90,140,611,公司28,2009 -106,57,467,公司29,2009 -115,141,681,公司30,2009 -154,138,1024,公司31,2009 -95,83,587,公司32,2009 -152,99,1161,公司33,2009 -129,97,1115,公司34,2009 -58,99,932,公司35,2009 -129,118,1223,公司36,2009 -89,123,653,公司37,2009 -128,77,907,公司38,2009 -152,112,572,公司39,2009 -149,108,985,公司40,2009 -70,143,1284,公司41,2009 -120,121,1104,公司42,2009 -96,125,339,公司43,2009 -125,145,966,公司44,2009 -178,162,1122,公司45,2009 -106,70,463,公司46,2009 -104,168,515,公司47,2009 -82,108,486,公司48,2009 -171,130,1308,公司49,2009 -90,59,890,公司0,2010 -53,116,920,公司1,2010 -93,39,902,公司2,2010 -127,124,1505,公司3,2010 -58,102,880,公司4,2010 -73,51,710,公司5,2010 -85,122,1309,公司6,2010 -137,124,979,公司7,2010 -47,37,390,公司8,2010 -38,149,1271,公司9,2010 -115,53,1053,公司10,2010 -106,24,916,公司11,2010 -150,142,744,公司12,2010 -79,146,992,公司13,2010 -57,131,1054,公司14,2010 -114,115,780,公司15,2010 -125,104,564,公司16,2010 -126,121,389,公司17,2010 -101,91,182,公司18,2010 -107,143,978,公司19,2010 -142,109,1236,公司20,2010 -104,123,1021,公司21,2010 -118,110,690,公司22,2010 -78,116,534,公司23,2010 -145,55,252,公司24,2010 -72,149,1036,公司25,2010 -131,149,926,公司26,2010 -88,132,1257,公司27,2010 -90,142,577,公司28,2010 -108,57,423,公司29,2010 -114,143,658,公司30,2010 -155,141,1005,公司31,2010 -98,82,558,公司32,2010 -152,100,1150,公司33,2010 -131,98,1075,公司34,2010 -59,101,986,公司35,2010 -130,119,1226,公司36,2010 -89,126,668,公司37,2010 -128,80,938,公司38,2010 -153,115,592,公司39,2010 -151,109,959,公司40,2010 -71,147,1298,公司41,2010 -123,121,1096,公司42,2010 -95,125,392,公司43,2010 -125,144,997,公司44,2010 -180,166,1139,公司45,2010 -107,74,429,公司46,2010 -103,169,570,公司47,2010 -85,110,507,公司48,2010 -174,133,1310,公司49,2010 -93,60,850,公司0,2011 -54,117,928,公司1,2011 -93,41,863,公司2,2011 -128,125,1531,公司3,2011 -58,103,887,公司4,2011 -72,53,692,公司5,2011 -87,124,1333,公司6,2011 -139,123,966,公司7,2011 -49,39,360,公司8,2011 -41,148,1305,公司9,2011 -114,53,1080,公司10,2011 -108,25,876,公司11,2011 -150,141,719,公司12,2011 -81,147,977,公司13,2011 -58,132,1009,公司14,2011 -116,115,745,公司15,2011 -124,105,578,公司16,2011 -125,120,432,公司17,2011 -103,92,182,公司18,2011 -108,145,1032,公司19,2011 -143,108,1197,公司20,2011 -107,125,1059,公司21,2011 -117,111,681,公司22,2011 -79,118,517,公司23,2011 -144,57,297,公司24,2011 -71,150,1022,公司25,2011 -130,152,931,公司26,2011 -89,131,1251,公司27,2011 -91,141,552,公司28,2011 -109,56,444,公司29,2011 -114,143,668,公司30,2011 -154,142,1023,公司31,2011 -98,85,579,公司32,2011 -155,99,1148,公司33,2011 -134,98,1049,公司34,2011 -62,101,1016,公司35,2011 -133,119,1269,公司36,2011 -88,126,719,公司37,2011 -128,79,906,公司38,2011 -157,115,574,公司39,2011 -151,112,997,公司40,2011 -75,146,1278,公司41,2011 -125,124,1096,公司42,2011 -96,127,351,公司43,2011 -129,147,971,公司44,2011 -181,166,1161,公司45,2011 -108,73,463,公司46,2011 -103,170,527,公司47,2011 -87,112,515,公司48,2011 -173,135,1280,公司49,2011 -96,58,872,公司0,2012 -52,117,959,公司1,2012 -92,41,862,公司2,2012 -129,124,1505,公司3,2012 -58,102,843,公司4,2012 -70,55,747,公司5,2012 -87,123,1295,公司6,2012 -140,123,935,公司7,2012 -50,40,360,公司8,2012 -43,150,1274,公司9,2012 -114,54,1053,公司10,2012 -109,28,918,公司11,2012 -150,142,710,公司12,2012 -79,148,949,公司13,2012 -59,133,990,公司14,2012 -116,115,798,公司15,2012 -126,107,567,公司16,2012 -126,120,402,公司17,2012 -105,92,149,公司18,2012 -107,147,1002,公司19,2012 -145,109,1192,公司20,2012 -107,128,1046,公司21,2012 -119,113,733,公司22,2012 -81,119,492,公司23,2012 -147,56,309,公司24,2012 -73,152,1025,公司25,2012 -129,153,892,公司26,2012 -91,131,1236,公司27,2012 -92,143,558,公司28,2012 -112,59,478,公司29,2012 -115,145,720,公司30,2012 -154,142,984,公司31,2012 -99,88,574,公司32,2012 -155,101,1178,公司33,2012 -137,100,1086,公司34,2012 -63,102,973,公司35,2012 -135,121,1240,公司36,2012 -88,128,690,公司37,2012 -127,81,925,公司38,2012 -158,118,599,公司39,2012 -153,115,986,公司40,2012 -77,148,1314,公司41,2012 -126,127,1102,公司42,2012 -97,128,343,公司43,2012 -128,150,947,公司44,2012 -183,169,1188,公司45,2012 -109,75,430,公司46,2012 -105,171,573,公司47,2012 -86,115,568,公司48,2012 -174,136,1259,公司49,2012 -95,60,919,公司0,2013 -52,118,963,公司1,2013 -91,43,864,公司2,2013 -130,123,1544,公司3,2013 -60,100,852,公司4,2013 -73,56,775,公司5,2013 -90,125,1323,公司6,2013 -138,122,945,公司7,2013 -53,42,356,公司8,2013 -43,152,1294,公司9,2013 -115,55,1047,公司10,2013 -109,26,968,公司11,2013 -152,141,676,公司12,2013 -80,150,920,公司13,2013 -58,132,1029,公司14,2013 -116,114,823,公司15,2013 -127,106,537,公司16,2013 -125,122,427,公司17,2013 -104,94,141,公司18,2013 -110,150,1019,公司19,2013 -144,110,1228,公司20,2013 -110,127,1098,公司21,2013 -118,114,784,公司22,2013 -82,121,534,公司23,2013 -148,59,278,公司24,2013 -72,151,1040,公司25,2013 -132,154,897,公司26,2013 -90,133,1279,公司27,2013 -95,142,564,公司28,2013 -112,61,445,公司29,2013 -114,148,696,公司30,2013 -155,143,966,公司31,2013 -100,88,621,公司32,2013 -157,101,1174,公司33,2013 -139,101,1139,公司34,2013 -63,102,931,公司35,2013 -134,125,1213,公司36,2013 -88,129,713,公司37,2013 -129,84,916,公司38,2013 -161,119,557,公司39,2013 -152,118,966,公司40,2013 -79,147,1289,公司41,2013 -127,128,1118,公司42,2013 -100,128,337,公司43,2013 -131,151,904,公司44,2013 -185,171,1217,公司45,2013 -110,75,406,公司46,2013 -105,174,573,公司47,2013 -87,115,621,公司48,2013 -177,138,1295,公司49,2013 -97,62,885,公司0,2014 -54,120,946,公司1,2014 -89,42,866,公司2,2014 -129,126,1527,公司3,2014 -61,101,855,公司4,2014 -74,57,762,公司5,2014 -89,125,1333,公司6,2014 -138,121,906,公司7,2014 -55,42,325,公司8,2014 -44,153,1277,公司9,2014 -114,55,1049,公司10,2014 -112,26,998,公司11,2014 -153,144,698,公司12,2014 -82,148,959,公司13,2014 -59,132,1011,公司14,2014 -115,115,876,公司15,2014 -127,107,540,公司16,2014 -124,125,390,公司17,2014 -104,97,151,公司18,2014 -113,153,1020,公司19,2014 -147,113,1280,公司20,2014 -109,130,1150,公司21,2014 -119,116,802,公司22,2014 -84,123,563,公司23,2014 -148,60,287,公司24,2014 -72,150,1019,公司25,2014 -132,155,911,公司26,2014 -93,133,1291,公司27,2014 -98,145,589,公司28,2014 -112,63,401,公司29,2014 -116,149,714,公司30,2014 -157,142,991,公司31,2014 -99,87,646,公司32,2014 -158,104,1157,公司33,2014 -142,104,1185,公司34,2014 -66,101,944,公司35,2014 -136,124,1177,公司36,2014 -90,129,726,公司37,2014 -129,83,957,公司38,2014 -162,120,600,公司39,2014 -152,120,923,公司40,2014 -78,147,1339,公司41,2014 -131,129,1107,公司42,2014 -100,130,337,公司43,2014 -135,152,878,公司44,2014 -186,171,1254,公司45,2014 -113,77,399,公司46,2014 -106,174,592,公司47,2014 -89,118,584,公司48,2014 -180,138,1297,公司49,2014 -99,63,893,公司0,2015 -54,119,975,公司1,2015 -87,43,840,公司2,2015 -132,124,1574,公司3,2015 -61,101,882,公司4,2015 -73,55,746,公司5,2015 -88,124,1318,公司6,2015 -139,123,894,公司7,2015 -54,45,340,公司8,2015 -45,153,1293,公司9,2015 -116,56,1019,公司10,2015 -115,27,990,公司11,2015 -156,145,709,公司12,2015 -81,147,931,公司13,2015 -61,133,990,公司14,2015 -118,116,894,公司15,2015 -129,106,562,公司16,2015 -126,125,395,公司17,2015 -104,96,166,公司18,2015 -112,152,989,公司19,2015 -149,115,1251,公司20,2015 -109,131,1193,公司21,2015 -119,117,758,公司22,2015 -87,122,593,公司23,2015 -150,62,267,公司24,2015 -72,151,1015,公司25,2015 -132,155,931,公司26,2015 -92,133,1287,公司27,2015 -101,147,583,公司28,2015 -114,62,364,公司29,2015 -117,152,716,公司30,2015 -157,141,1022,公司31,2015 -100,90,669,公司32,2015 -158,106,1131,公司33,2015 -143,103,1154,公司34,2015 -69,103,972,公司35,2015 -136,124,1203,公司36,2015 -92,131,775,公司37,2015 -130,83,951,公司38,2015 -164,122,603,公司39,2015 -156,123,967,公司40,2015 -81,149,1319,公司41,2015 -135,131,1160,公司42,2015 -100,130,302,公司43,2015 -135,155,845,公司44,2015 -188,170,1281,公司45,2015 -116,78,436,公司46,2015 -106,173,603,公司47,2015 -89,120,545,公司48,2015 -181,139,1257,公司49,2015 -98,62,927,公司0,2016 -57,117,1012,公司1,2016 -90,42,866,公司2,2016 -132,124,1602,公司3,2016 -61,103,841,公司4,2016 -75,54,780,公司5,2016 -87,125,1321,公司6,2016 -139,124,862,公司7,2016 -57,47,355,公司8,2016 -47,155,1299,公司9,2016 -119,58,983,公司10,2016 -116,27,988,公司11,2016 -157,145,745,公司12,2016 -80,149,936,公司13,2016 -62,132,1017,公司14,2016 -119,119,892,公司15,2016 -131,109,585,公司16,2016 -125,127,408,公司17,2016 -106,98,135,公司18,2016 -112,153,945,公司19,2016 -150,115,1218,公司20,2016 -108,131,1235,公司21,2016 -121,117,727,公司22,2016 -89,124,645,公司23,2016 -152,63,276,公司24,2016 -73,154,1023,公司25,2016 -132,155,937,公司26,2016 -94,135,1279,公司27,2016 -104,148,599,公司28,2016 -117,65,396,公司29,2016 -119,154,759,公司30,2016 -157,142,993,公司31,2016 -99,89,667,公司32,2016 -161,109,1166,公司33,2016 -142,104,1128,公司34,2016 -73,102,984,公司35,2016 -135,125,1227,公司36,2016 -93,133,771,公司37,2016 -133,82,997,公司38,2016 -163,123,601,公司39,2016 -158,126,1002,公司40,2016 -81,150,1295,公司41,2016 -137,131,1200,公司42,2016 -103,133,305,公司43,2016 -138,159,809,公司44,2016 -189,169,1308,公司45,2016 -118,81,434,公司46,2016 -106,172,595,公司47,2016 -89,122,588,公司48,2016 -183,142,1255,公司49,2016 -101,61,952,公司0,2017 -57,117,987,公司1,2017 -90,42,837,公司2,2017 -134,126,1580,公司3,2017 -61,101,816,公司4,2017 -77,55,823,公司5,2017 -86,127,1350,公司6,2017 -141,123,866,公司7,2017 -59,46,408,公司8,2017 -50,158,1338,公司9,2017 -119,60,1026,公司10,2017 -115,28,1016,公司11,2017 -157,145,797,公司12,2017 -81,148,923,公司13,2017 -61,135,1017,公司14,2017 -120,119,864,公司15,2017 -133,111,629,公司16,2017 -124,129,443,公司17,2017 -107,100,165,公司18,2017 -112,154,949,公司19,2017 -151,116,1254,公司20,2017 -111,133,1248,公司21,2017 -121,117,742,公司22,2017 -89,125,663,公司23,2017 -150,66,298,公司24,2017 -75,154,1051,公司25,2017 -135,154,960,公司26,2017 -93,138,1258,公司27,2017 -104,150,642,公司28,2017 -119,64,352,公司29,2017 -119,154,775,公司30,2017 -157,143,1023,公司31,2017 -100,90,641,公司32,2017 -162,111,1217,公司33,2017 -141,104,1115,公司34,2017 -76,102,968,公司35,2017 -138,124,1245,公司36,2017 -96,135,758,公司37,2017 -136,83,1028,公司38,2017 -162,122,577,公司39,2017 -160,127,1018,公司40,2017 -83,153,1305,公司41,2017 -140,135,1238,公司42,2017 -102,137,303,公司43,2017 -141,162,789,公司44,2017 -188,173,1340,公司45,2017 -121,84,408,公司46,2017 -107,174,584,公司47,2017 -91,123,579,公司48,2017 -185,145,1240,公司49,2017 -103,63,970,公司0,2018 -55,117,1038,公司1,2018 -88,42,875,公司2,2018 -132,126,1631,公司3,2018 -62,104,791,公司4,2018 -79,56,809,公司5,2018 -85,127,1366,公司6,2018 -140,126,880,公司7,2018 -60,48,381,公司8,2018 -51,157,1298,公司9,2018 -120,59,1075,公司10,2018 -114,28,1016,公司11,2018 -159,143,793,公司12,2018 -84,146,882,公司13,2018 -64,138,1033,公司14,2018 -123,121,851,公司15,2018 -135,112,614,公司16,2018 -126,128,429,公司17,2018 -106,101,138,公司18,2018 -115,157,924,公司19,2018 -151,118,1295,公司20,2018 -114,135,1238,公司21,2018 -120,120,763,公司22,2018 -92,128,717,公司23,2018 -151,67,282,公司24,2018 -74,154,1044,公司25,2018 -138,155,928,公司26,2018 -95,139,1270,公司27,2018 -107,153,672,公司28,2018 -119,66,344,公司29,2018 -121,157,734,公司30,2018 -157,143,990,公司31,2018 -101,89,614,公司32,2018 -163,114,1239,公司33,2018 -143,105,1166,公司34,2018 -75,102,1015,公司35,2018 -137,123,1277,公司36,2018 -98,135,811,公司37,2018 -135,86,991,公司38,2018 -164,122,592,公司39,2018 -159,128,1043,公司40,2018 -82,156,1272,公司41,2018 -139,136,1200,公司42,2018 -102,139,309,公司43,2018 -144,161,829,公司44,2018 -187,176,1386,公司45,2018 -121,85,384,公司46,2018 -107,177,628,公司47,2018 -94,124,581,公司48,2018 -186,147,1236,公司49,2018 -105,64,931,公司0,2019 -55,117,1068,公司1,2019 -87,43,912,公司2,2019 -132,125,1637,公司3,2019 -64,106,766,公司4,2019 -82,55,857,公司5,2019 -84,126,1411,公司6,2019 -142,126,852,公司7,2019 -62,49,405,公司8,2019 -50,157,1267,公司9,2019 -123,61,1056,公司10,2019 -114,27,1028,公司11,2019 -158,142,804,公司12,2019 -84,149,924,公司13,2019 -65,140,1007,公司14,2019 -125,122,863,公司15,2019 -137,113,665,公司16,2019 -127,129,424,公司17,2019 -108,101,113,公司18,2019 -115,159,937,公司19,2019 -150,120,1291,公司20,2019 -115,137,1235,公司21,2019 -119,119,770,公司22,2019 -92,128,740,公司23,2019 -150,66,270,公司24,2019 -75,156,1096,公司25,2019 -140,156,920,公司26,2019 -97,138,1256,公司27,2019 -109,154,689,公司28,2019 -120,67,389,公司29,2019 -122,160,764,公司30,2019 -160,142,1034,公司31,2019 -103,90,627,公司32,2019 -163,116,1253,公司33,2019 -143,104,1142,公司34,2019 -78,105,1020,公司35,2019 -141,122,1271,公司36,2019 -99,135,859,公司37,2019 -138,87,952,公司38,2019 -164,121,555,公司39,2019 -162,130,1081,公司40,2019 -83,159,1229,公司41,2019 -138,137,1211,公司42,2019 -105,138,355,公司43,2019 -147,160,788,公司44,2019 -187,175,1438,公司45,2019 -123,85,366,公司46,2019 -110,181,646,公司47,2019 -94,123,589,公司48,2019 -186,146,1262,公司49,2019 -107,65,910,公司0,2020 -57,120,1094,公司1,2020 -86,45,914,公司2,2020 -133,123,1653,公司3,2020 -66,106,818,公司4,2020 -81,57,857,公司5,2020 -86,126,1413,公司6,2020 -142,129,829,公司7,2020 -63,51,445,公司8,2020 -49,157,1278,公司9,2020 -124,61,1099,公司10,2020 -115,27,999,公司11,2020 -161,141,836,公司12,2020 -83,147,892,公司13,2020 -65,139,974,公司14,2020 -126,121,889,公司15,2020 -140,115,630,公司16,2020 -130,132,458,公司17,2020 -107,104,105,公司18,2020 -117,159,949,公司19,2020 -150,122,1319,公司20,2020 -118,136,1284,公司21,2020 -121,122,809,公司22,2020 -93,129,746,公司23,2020 -152,66,267,公司24,2020 -74,156,1065,公司25,2020 -139,156,928,公司26,2020 -100,141,1286,公司27,2020 -110,154,715,公司28,2020 -119,67,383,公司29,2020 -122,159,816,公司30,2020 -161,143,1082,公司31,2020 -105,92,661,公司32,2020 -163,116,1222,公司33,2020 -147,107,1106,公司34,2020 -81,107,992,公司35,2020 -144,123,1247,公司36,2020 -98,138,861,公司37,2020 -139,90,932,公司38,2020 -164,124,513,公司39,2020 -165,130,1105,公司40,2020 -83,159,1192,公司41,2020 -139,140,1178,公司42,2020 -105,138,384,公司43,2020 -148,161,793,公司44,2020 -190,179,1464,公司45,2020 -124,86,381,公司46,2020 -111,182,629,公司47,2020 -98,122,575,公司48,2020 -188,145,1235,公司49,2020 -106,66,941,公司0,2021 -58,121,1117,公司1,2021 -87,46,883,公司2,2021 -133,125,1618,公司3,2021 -69,108,852,公司4,2021 -82,59,890,公司5,2021 -84,128,1421,公司6,2021 -141,130,788,公司7,2021 -63,51,440,公司8,2021 -49,159,1306,公司9,2021 -123,63,1064,公司10,2021 -117,27,1030,公司11,2021 -160,144,842,公司12,2021 -82,146,879,公司13,2021 -67,138,986,公司14,2021 -127,121,914,公司15,2021 -140,117,587,公司16,2021 -130,132,418,公司17,2021 -105,104,132,公司18,2021 -120,160,934,公司19,2021 -153,121,1283,公司20,2021 -119,139,1250,公司21,2021 -120,124,846,公司22,2021 -93,131,758,公司23,2021 -151,66,259,公司24,2021 -76,159,1057,公司25,2021 -140,159,965,公司26,2021 -103,140,1263,公司27,2021 -110,156,759,公司28,2021 -118,68,346,公司29,2021 -123,162,834,公司30,2021 -164,142,1129,公司31,2021 -104,93,696,公司32,2021 -162,116,1257,公司33,2021 -150,109,1124,公司34,2021 -81,106,971,公司35,2021 -143,126,1235,公司36,2021 -101,139,877,公司37,2021 -139,90,930,公司38,2021 -165,123,500,公司39,2021 -167,130,1124,公司40,2021 -83,162,1226,公司41,2021 -138,140,1164,公司42,2021 -108,138,429,公司43,2021 -147,161,774,公司44,2021 -192,180,1510,公司45,2021 -125,89,381,公司46,2021 -113,185,633,公司47,2021 -102,122,626,公司48,2021 -188,147,1222,公司49,2021 -107,67,989,公司0,2022 -56,120,1120,公司1,2022 -87,48,865,公司2,2022 -133,124,1611,公司3,2022 -70,106,881,公司4,2022 -81,60,894,公司5,2022 -83,131,1399,公司6,2022 -141,130,778,公司7,2022 -64,51,411,公司8,2022 -48,161,1339,公司9,2022 -125,62,1054,公司10,2022 -118,30,1056,公司11,2022 -158,146,842,公司12,2022 -80,149,901,公司13,2022 -65,139,988,公司14,2022 -130,121,958,公司15,2022 -140,120,580,公司16,2022 -133,134,436,公司17,2022 -107,103,125,公司18,2022 -118,162,898,公司19,2022 -152,122,1284,公司20,2022 -119,141,1211,公司21,2022 -121,123,830,公司22,2022 -95,131,730,公司23,2022 -151,67,244,公司24,2022 -75,162,1085,公司25,2022 -142,158,998,公司26,2022 -103,141,1290,公司27,2022 -112,157,771,公司28,2022 -120,69,327,公司29,2022 -123,163,846,公司30,2022 -167,143,1183,公司31,2022 -105,96,664,公司32,2022 -164,116,1281,公司33,2022 -152,112,1124,公司34,2022 -83,105,955,公司35,2022 -143,130,1287,公司36,2022 -105,142,869,公司37,2022 -139,89,902,公司38,2022 -167,126,496,公司39,2022 -166,129,1112,公司40,2022 -86,165,1245,公司41,2022 -137,140,1197,公司42,2022 -112,138,464,公司43,2022 -150,164,731,公司44,2022 -194,182,1557,公司45,2022 -125,93,378,公司46,2022 -114,187,649,公司47,2022 -105,122,593,公司48,2022 -192,148,1244,公司49,2022 -106,69,1036,公司0,2023 -59,119,1118,公司1,2023 -89,49,822,公司2,2023 -133,125,1594,公司3,2023 -72,106,860,公司4,2023 -81,60,858,公司5,2023 -82,130,1395,公司6,2023 -140,132,765,公司7,2023 -66,51,387,公司8,2023 -50,163,1392,公司9,2023 -125,60,1086,公司10,2023 -118,29,1052,公司11,2023 -159,146,816,公司12,2023 -83,147,945,公司13,2023 -66,137,1036,公司14,2023 -132,120,954,公司15,2023 -141,122,607,公司16,2023 -132,136,397,公司17,2023 -107,105,109,公司18,2023 -117,165,899,公司19,2023 -151,122,1322,公司20,2023 -120,143,1222,公司21,2023 -121,126,833,公司22,2023 -95,134,746,公司23,2023 -152,70,287,公司24,2023 -75,165,1106,公司25,2023 -141,160,1019,公司26,2023 -105,140,1274,公司27,2023 -115,159,763,公司28,2023 -121,68,363,公司29,2023 -124,162,836,公司30,2023 -166,144,1230,公司31,2023 -105,96,715,公司32,2023 -167,117,1329,公司33,2023 -154,115,1172,公司34,2023 -82,105,962,公司35,2023 -144,131,1274,公司36,2023 -107,144,869,公司37,2023 -140,89,937,公司38,2023 -167,129,542,公司39,2023 -169,132,1136,公司40,2023 -88,165,1232,公司41,2023 -141,142,1217,公司42,2023 -114,141,507,公司43,2023 -154,168,740,公司44,2023 -193,185,1528,公司45,2023 -128,94,341,公司46,2023 -114,191,652,公司47,2023 -108,123,647,公司48,2023 -192,147,1227,公司49,2023`, - input: '使用动态散点图帮我展示各公司年度收益率、净现金流和市值逐年的变化。' -}; - -export const dynamicRoseData = { - csv: `country,continent,GDP,year -美国,美洲,239270,1973 -印度,亚洲,22960,1973 -韩国,亚洲,7870,1973 -土耳其,亚洲,17240,1973 -印度尼西亚,亚洲,10980,1973 -沙特阿拉伯,亚洲,23760,1973 -泰国,亚洲,4130,1973 -菲律宾,亚洲,5660,1973 -马来西亚,亚洲,2780,1973 -英国,欧洲,114750,1973 -意大利,欧洲,107570,1973 -西班牙,欧洲,55990,1973 -荷兰,欧洲,36410,1973 -瑞士,欧洲,33920,1973 -芬兰,欧洲,9930,1973 -瑞典,欧洲,23020,1973 -比利时,欧洲,22280,1973 -挪威,欧洲,14540,1973 -美国,美洲,278390,1978 -印度,亚洲,29220,1978 -韩国,亚洲,13120,1978 -土耳其,亚洲,22620,1978 -印度尼西亚,亚洲,15390,1978 -沙特阿拉伯,亚洲,30080,1978 -泰国,亚洲,6000,1978 -菲律宾,亚洲,7480,1978 -马来西亚,亚洲,3900,1978 -英国,欧洲,121140,1978 -意大利,欧洲,126030,1978 -西班牙,欧洲,64080,1978 -荷兰,欧洲,41420,1978 -瑞士,欧洲,32360,1978 -芬兰,欧洲,10800,1978 -瑞典,欧洲,24650,1978 -比利时,欧洲,24970,1978 -挪威,欧洲,18160,1978 -美国,美洲,336520,1983 -印度,亚洲,34790,1983 -韩国,亚洲,18480,1983 -土耳其,亚洲,25000,1983 -印度尼西亚,亚洲,20870,1983 -沙特阿拉伯,亚洲,24130,1983 -泰国,亚洲,7840,1983 -菲律宾,亚洲,9070,1983 -马来西亚,亚洲,5510,1983 -英国,欧洲,129860.00000000001,1983 -意大利,欧洲,141500,1983 -西班牙,欧洲,67430,1983 -荷兰,欧洲,42830,1983 -瑞士,欧洲,35000,1983 -芬兰,欧洲,13130,1983 -瑞典,欧洲,26980,1983 -比利时,欧洲,26860,1983 -挪威,欧洲,20980,1983 -美国,美洲,427650,1988 -印度,亚洲,45400,1988 -韩国,亚洲,30960,1988 -土耳其,亚洲,33340,1988 -印度尼西亚,亚洲,26890,1988 -沙特阿拉伯,亚洲,25640,1988 -泰国,亚洲,11350,1988 -菲律宾,亚洲,8970,1988 -马来西亚,亚洲,6880,1988 -英国,欧洲,158980,1988 -意大利,欧洲,166060,1988 -西班牙,欧洲,80430,1988 -荷兰,欧洲,49070,1988 -瑞士,欧洲,39950,1988 -芬兰,欧洲,15720,1988 -瑞典,欧洲,31270,1988 -比利时,欧洲,30520,1988 -挪威,欧洲,24800,1988 -美国,美洲,488020,1993 -印度,亚洲,56680,1993 -韩国,亚洲,45790,1993 -土耳其,亚洲,41600,1993 -印度尼西亚,亚洲,37570,1993 -沙特阿拉伯,亚洲,34670,1993 -泰国,亚洲,17990,1993 -菲律宾,亚洲,10000,1993 -马来西亚,亚洲,10720,1993 -英国,欧洲,167180,1993 -意大利,欧洲,177750,1993 -西班牙,欧洲,89630,1993 -荷兰,欧洲,56320,1993 -瑞士,欧洲,42740,1993 -芬兰,欧洲,15040,1993 -瑞典,欧洲,30950,1993 -比利时,欧洲,33350,1993 -挪威,欧洲,28050,1993 -美国,美洲,521740,1998 -印度,亚洲,77270,1998 -韩国,亚洲,59600,1998 -土耳其,亚洲,50560,1998 -印度尼西亚,亚洲,42880,1998 -沙特阿拉伯,亚洲,37310,1998 -泰国,亚洲,19930,1998 -菲律宾,亚洲,12090,1998 -马来西亚,亚洲,14070,1998 -英国,欧洲,196370,1998 -意大利,欧洲,196130,1998 -西班牙,欧洲,104800,1998 -荷兰,欧洲,67570,1998 -瑞士,欧洲,46090,1998 -芬兰,欧洲,18940,1998 -瑞典,欧洲,36510,1998 -比利时,欧洲,37790,1998 -挪威,欧洲,34830,1998 -美国,美洲,545920,2003 -印度,亚洲,102500,2003 -韩国,亚洲,84420,2003 -土耳其,亚洲,55060,2003 -印度尼西亚,亚洲,51460,2003 -沙特阿拉伯,亚洲,40500,2003 -泰国,亚洲,25620,2003 -菲律宾,亚洲,14620,2003 -马来西亚,亚洲,18210,2003 -英国,欧洲,228640,2003 -意大利,欧洲,211730,2003 -西班牙,欧洲,126720,2003 -荷兰,欧洲,75950,2003 -瑞士,欧洲,49450,2003 -芬兰,欧洲,22260,2003 -瑞典,欧洲,42290,2003 -比利时,欧洲,42160,2003 -挪威,欧洲,38320,2003 -美国,美洲,578410,2008 -印度,亚洲,143180,2008 -韩国,亚洲,106280,2008 -土耳其,亚洲,74660,2008 -印度尼西亚,亚洲,67940,2008 -沙特阿拉伯,亚洲,51340,2008 -泰国,亚洲,31950,2008 -菲律宾,亚洲,19140,2008 -马来西亚,亚洲,24100,2008 -英国,欧洲,253560,2008 -意大利,欧洲,221500,2008 -西班牙,欧洲,147390,2008 -荷兰,欧洲,86710,2008 -瑞士,欧洲,57960,2008 -芬兰,欧洲,26270,2008 -瑞典,欧洲,48920,2008 -比利时,欧洲,47720,2008 -挪威,欧洲,43330,2008 -美国,美洲,589420,2013 -印度,亚洲,197840,2013 -韩国,亚洲,125320,2013 -土耳其,亚洲,97510,2013 -印度尼西亚,亚洲,89730,2013 -沙特阿拉伯,亚洲,62900,2013 -泰国,亚洲,37880,2013 -菲律宾,亚洲,24700,2013 -马来西亚,亚洲,29650,2013 -英国,欧洲,260510,2013 -意大利,欧洲,204670,2013 -西班牙,欧洲,134780,2013 -荷兰,欧洲,84970,2013 -瑞士,欧洲,61070,2013 -芬兰,欧洲,24970,2013 -瑞典,欧洲,51470,2013 -比利时,欧洲,49500,2013 -挪威,欧洲,44930,2013 -美国,美洲,617030,2018 -印度,亚洲,282220,2018 -韩国,亚洲,144970,2018 -土耳其,亚洲,124050,2018 -印度尼西亚,亚洲,114690,2018 -沙特阿拉伯,亚洲,70160,2018 -泰国,亚洲,44230,2018 -菲律宾,亚洲,34030,2018 -马来西亚,亚洲,38210,2018 -英国,欧洲,287930,2018 -意大利,欧洲,214100,2018 -西班牙,欧洲,153950,2018 -荷兰,欧洲,94810,2018 -瑞士,欧洲,67460,2018 -芬兰,欧洲,26920,2018 -瑞典,欧洲,58930,2018 -比利时,欧洲,53840,2018 -挪威,欧洲,48930,2018 -`, - input: '使用动态玫瑰图帮我展示各国GDP排名变化' -}; -export const dynamicRoseData1 = { - csv: `country,GDP,year -USA,37,2000 -Russia,32,2000 -China,28,2000 -Australia,16,2000 -Germany,13,2000 -France,13,2000 -Italy,13,2000 -Netherlands,12,2000 -Cuba,11,2000 -U.K.,11,2000 -USA,36,2004 -China,32,2004 -Russia,28,2004 -Australia,17,2004 -Japan,16,2004 -Germany,13,2004 -France,11,2004 -Italy,10,2004 -South Korea,9,2004 -U.K.,9,2004 -China,48,2008 -USA,36,2008 -Russia,24,2008 -U.K.,19,2008 -Germany,16,2008 -Australia,14,2008 -South Korea,13,2008 -Japan,9,2008 -Italy,8,2008 -France,7,2008 -USA,46,2012 -China,39,2012 -U.K.,29,2012 -Russia,19,2012 -South Korea,13,2012 -Germany,11,2012 -France,11,2012 -Australia,8,2012 -Italy,8,2012 -Hungary,8,2012 -USA,46,2016 -U.K.,27,2016 -China,26,2016 -Russia,19,2016 -Germany,17,2016 -Japan,12,2016 -France,10,2016 -South Korea,9,2016 -Italy,8,2016 -Australia,8,2016 -USA,39,2020 -China,38,2020 -Japan,27,2020 -U.K.,22,2020 -Russian Olympic Committee,20,2020 -Australia,17,2020 -Netherlands,10,2020 -France,10,2020 -Germany,10,2020 -Italy,10,2020`, - input: '使用动态玫瑰图帮我展示各国GDP排名变化' -}; - -export const sequenceData = { - csv: `playName,time,eventType -Deandre Ayton,-2209017943000,start -Deandre Ayton,-2209017476000,end -Deandre Ayton,-2209016998000,start -Deandre Ayton,-2209016057000,end -Deandre Ayton,-2209015551000,start -Deandre Ayton,-2209015127000,end -Deandre Ayton,-2209015116000,start -Deandre Ayton,-2209015063000,end -Devin Booker,-2209017943000,start -Devin Booker,-2209017293000,end -Devin Booker,-2209016892000,start -Devin Booker,-2209015783000,end -Devin Booker,-2209015380000,start -Devin Booker,-2209015063000,end -Kyle Lowry,-2209017943000,start -Kyle Lowry,-2209017476000,end -Kyle Lowry,-2209017223000,start -Kyle Lowry,-2209016762000,end -Kyle Lowry,-2209016614000,start -Kyle Lowry,-2209016057000,end -Kyle Lowry,-2209015884000,start -Kyle Lowry,-2209015063000,end -Jae Crowder,-2209017943000,start -Jae Crowder,-2209017293000,end -Jae Crowder,-2209016998000,start -Jae Crowder,-2209016139000,end -Jae Crowder,-2209015651000,start -Jae Crowder,-2209015063000,end -Aron Baynes,-2209017943000,start -Aron Baynes,-2209017476000,end -Aron Baynes,-2209016503000,start -Aron Baynes,-2209016166000,end -Pascal Siakam,-2209016892000,start -Pascal Siakam,-2209015788000,end -Pascal Siakam,-2209015528000,start -Pascal Siakam,-2209015063000,end -Pascal Siakam,-2209017943000,start -Pascal Siakam,-2209017223000,end -Mikal Bridges,-2209017943000,start -Mikal Bridges,-2209017650000,end -Mikal Bridges,-2209016998000,start -Mikal Bridges,-2209016762000,end -Mikal Bridges,-2209016503000,start -Mikal Bridges,-2209016003000,end -Mikal Bridges,-2209015783000,start -Mikal Bridges,-2209015063000,end -Chris Paul,-2209017943000,start -Chris Paul,-2209017476000,end -Chris Paul,-2209016998000,start -Chris Paul,-2209016057000,end -Chris Paul,-2209015551000,start -Chris Paul,-2209015063000,end -OG Anunoby,-2209017943000,start -OG Anunoby,-2209017476000,end -OG Anunoby,-2209017223000,start -OG Anunoby,-2209016614000,end -OG Anunoby,-2209016503000,start -OG Anunoby,-2209016021000,end -OG Anunoby,-2209015788000,start -OG Anunoby,-2209015063000,end -Fred VanVleet,-2209016892000,start -Fred VanVleet,-2209015884000,end -Fred VanVleet,-2209015651000,start -Fred VanVleet,-2209015063000,end -Fred VanVleet,-2209017943000,start -Fred VanVleet,-2209017223000,end -Cameron Johnson,-2209017650000,start -Cameron Johnson,-2209016998000,end -Cameron Johnson,-2209016762000,start -Cameron Johnson,-2209016503000,end -Cameron Johnson,-2209016139000,start -Cameron Johnson,-2209015651000,end -Yuta Watanabe,-2209017476000,start -Yuta Watanabe,-2209016892000,end -Yuta Watanabe,-2209016021000,start -Yuta Watanabe,-2209015651000,end -Dario Saric,-2209017476000,start -Dario Saric,-2209016998000,end -Dario Saric,-2209016057000,start -Dario Saric,-2209015551000,end -Dario Saric,-2209015127000,start -Dario Saric,-2209015116000,end -Chris Boucher,-2209017476000,start -Chris Boucher,-2209016998000,end -Chris Boucher,-2209015962000,start -Chris Boucher,-2209015528000,end -Norman Powell,-2209017476000,start -Norman Powell,-2209017119000,end -Norman Powell,-2209016762000,start -Norman Powell,-2209016547000,end -Norman Powell,-2209016057000,start -Norman Powell,-2209015063000,end -Cameron Payne,-2209017476000,start -Cameron Payne,-2209016998000,end -Cameron Payne,-2209016057000,start -Cameron Payne,-2209015551000,end -Langston Galloway,-2209017293000,start -Langston Galloway,-2209016998000,end -Jevon Carter,-2209017293000,start -Jevon Carter,-2209016892000,end -Jevon Carter,-2209016003000,start -Jevon Carter,-2209015380000,end -Malachi Flynn,-2209017119000,start -Malachi Flynn,-2209016892000,end -Alex Len,-2209016998000,start -Alex Len,-2209016503000,end -Alex Len,-2209016166000,start -Alex Len,-2209015962000,end -DeAndre' Bembry,-2209016547000,start -DeAndre' Bembry,-2209015783000,end`, - input: '使用时序图帮我展示各运动员在比赛中的行动记录。' -}; -export const mockUserTextInput0 = { - text: `快手消失了。快手上市后,市值一度超过2000亿美元,现在只剩200多亿美元。去年快手的营收破了千亿,公司也赚钱了,但市场不买账了。 -滴滴也不见了。滴滴去年营收接近2000亿元,并首次实现年度盈利,不过滴滴从美股退市后,一直没在港股上市,所以没有市值参考。`, - input: '' -}; -export const mockUserTextInput1 = { - text: - '全国人口[2]中,拥有大学(指大专及以上)文化程度的人口为218360767人;拥有高中(含中专)文化程度的人口为213005258人;' + - '拥有初中文化程度的人口为487163489人;拥有小学文化程度的人口为349658828人(以上各种受教育程度的人包括各类学校的毕业生、肄业生和在校生)。', - input: '对比本次人口普查各文化程度的人口比重。' -}; - -export const mockUserTextInput2 = { - text: '人口增长较多的5个省份依次为:广东、浙江、江苏、山东、河南,分别增加21709378人、10140697人、6088113人、5734388人、5341952人。', - input: '对比这五个城市的人口增长幅度。' -}; - -export const mockUserTextInput3 = { - text: `阿里2023年收入9275亿元,仅次于京东。这其中有大约一半来自电商,剩下的来自阿里云、菜鸟、优酷、饿了么等业务。 -腾讯的收入主要来自游戏和广告,2023年营收6090亿元,排名第三。相比阿里和京东,腾讯的模式要更轻一些,也更稳定。阿里和京东在线下做了很多布局,建快递仓库、开生鲜超市,前些年阿里甚至在线下买了一堆实体,现在“新零售”退潮,有些资产就砸手里了,外界都在猜测阿里会不会卖掉盒马和大润发。 -而腾讯这些年的主营业务一直没有变,微信始终是全民应用,游戏一直是现金奶牛。至于腾讯视频、腾讯云等业务,也都是线上模式。 -靠售卖虚拟商品和服务,一年做到6000多亿营收,目前只有腾讯有这个实力。 -京东、阿里、腾讯之外,其他公司自动被归入下一个档次——营收3000亿元以下。无论是卖手机的小米,卖车的理想,还是卖广告的百度,送外卖的美团,年营收都没超过3000亿元。 -不过这条线很快会被突破。拼多多2023年营收2476亿元,而2022年只有1306亿元,以这个增速没有任何悬念;美团2023年营收2767亿元,今年突破3000亿元问题不大;小米因为有了造车业务,应该也会突破。 -小米比较特殊。手机市场已经饱和了,过去几年全球手机销量一直在下滑,小米的营收连降两年,从2021年的3283亿元降到2023年的2710亿元。不过小米汽车开始交付了,拿了超过10万台订单。如果按每台车25万元的价格算,这10万台也能带来250亿元增量收入,让小米重回增长轨道,所以这就是为什么雷军一定要造车。 -这个前十的名单,有一条隐形门槛——营收千亿。 -排在第十位的快手,2023年营收1135亿元,这是它首次跨过千亿营收。2023年也是网易首次营收过千亿,不过它只有1035亿元,排在快手之后,没进前十。`, - input: '' -}; - -export const mockUserTextInput4 = { - text: `其次是员工规模。 - -2019年底的时候,腾讯不到6.3万人,2020年招了2.3万人,2021年又增加了2.7万人,总人数超过11万人。这是腾讯历史上员工规模最庞大的一年。 - -阿里在2019年有11.7万人,2020年合并高鑫零售,总人数翻了一倍多到25.2万人,2021年又增加了7200多人。 - -京东是所有互联网公司中人数最多的。2019年京东有22.8万人,2020年增加8.7万人,2021年增加7万人,2022年又增加6.5万人,总人数超过45万人。不过,这其中有30万是快递小哥。 - -其他互联网大厂,人员扩张的脉络基本类似:2020年、2021年疯狂招人,2021年达到历史顶峰,2022年、2023年开始收缩,进行不同程度裁员。 - -降本增效成为互联网大厂的关键词。前几年扩张太猛,招人太多,现在业务增速放缓,用不了那么多人了。`, - input: '' -}; - -export const mockUserTextInput5 = { - text: `阿里的变现能力不如腾讯,且波动较大,2023年盈利924亿元。不过阿里是中国拥有现金最多的互联网公司,从2020年开始,它每年都在储备现金,2022年超过5000亿元,2023年更是达到6530亿元。 -账上现金变多,一方面说明阿里前些年赚得多,家底厚,另一方面也说明这些资金没有更好的投资渠道,阿里在新业务上的探索变慢了。 -可能会让一些人感到意外的是,拼多多的变现能力现在仅次于腾讯、阿里。2023年拼多多的净利润为600亿元,相比2022年几乎翻倍,而2021年之前它还是亏损。从一台烧钱机器到赚钱机器,拼多多只用了三年时间,它账上的现金储备也比网易、小米、京东等公司都多。 -需要注意的是,拼多多还处在投资扩张期。600亿元的净利润,是在大力推动新业务的前提下实现的,它的海外业务TEMU正在全球范围跑马圈地,还没到变现阶段。这意味着拼多多的净利润还有很大提升空间。 -拼多多跟其他巨头很不一样的一个点是,虽然公司赚钱了,账上钱很多,但既不回购也不分红,而是要继续投资,官方说法是“投资于长期价值”。 -其他的互联网巨头,近两年也基本都赚钱了,2023年的盈利在100亿-300亿元之间。理想赚了118亿元,美团139亿元,小米175亿元,百度215亿元,京东233亿元,网易294亿元。快手和滴滴,也在2023年首次扭亏为盈。 -这其中有两家公司值得关注。 -网易是唯一一个跟BAT属于同时代,每年都很赚钱,市值还排在前五的互联网巨头。2023年网易的净利润是294亿元,虽然比不上腾讯、阿里、拼多多,但盈利很稳定。把网易过去五年的净利润数据拉出来,平均数是200亿元。` -}; - -export const mockUserTextInput6 = { - text: `2019年腾讯收入3773亿元,2020年增长了1048亿元,2021年又增长780亿元,但2022年是负增长,2023年只增长了545亿元。看增长率更明显,2020年高达27.8%,2023年只有9.8%。 -阿里的趋势也类似。2020年、2021年的营收增速为31.8%、29.8%,2022年降至3.4%,2023年是7.3%。 -网易从2020年到2023年,营收增速逐年下滑,2023年降至个位数的7.2%;小米2020年、2021年的增速高达19.4%、33.5%,随后两年都是负增长。` -}; - -export const mockUserTextInput7 = { - text: `目前,小红书的广告客户主要集中在消费品行业。有分析师向36氪表示,2023年,小红书广告收入占比最高的是个护美妆(18%),其次为时尚穿搭(12.5%)、美食饮品(10%)、家居家装(8.7%)、母婴(7%)、黄金珠宝(6%)、汽车(5.3%)、日化百货(5.1%)。` -}; - -export const mockUserTextInput8 = { - text: `| 排名 | 城市 | GDP | -|------|------|----------| -| 1 | 上海 | 47219亿 | -| 2 | 北京 | 43761亿 | -| 3 | 深圳 | 34606亿 | -| 4 | 广州 | 30356亿 | -| 5 | 重庆 | 30146亿 | -| 6 | 苏州 | 24653亿 | -| 7 | 成都 | 21257亿 | -| 8 | 杭州 | 18867亿 | -| 9 | 武汉 | 17600亿 | -` -}; - -export const mockUserTextInput9 = { - text: `| 年份 | 杭州GDP (亿元) | 南京GDP (亿元) | -|------|----------------|----------------| -| 2013 | 8343.95 | 8000.81 | -| 2014 | 9201.16 | 8867.93 | -| 2015 | 9600.17 | 9500.02 | -| 2016 | 10003.58 | 10450.08 | -| 2017 | 11700.94 | 11715.09 | -| 2018 | 13509.27 | 12820.40 | -| 2019 | 15373.05 | 14050.15 | -| 2020 | 16106.00 | 14817.95 | -| 2021 | 18109.00 | 16355.00 |` -}; - -export const mockUserTextInput10 = { - text: `你好,我没有找到最新的股市指数波动数据。不过,可以为你提供5月28日A股三大指数的波动情况,数据如下: - -上证指数跌0.46%,为3109.57点; -深证成指跌1.23%,为9391.05点; -创业板指跌1.35%,为1806.25点。 - -如果你需要了解更多股市指数波动信息,可以访问财经新闻网站或咨询专业的投资顾问。` -}; - -export const mockProgressData = { - csv: `年份,进度 - 2024年,0.56`, - input: '请使用环形进度图帮我展示今年的进度数据' -}; - -export const liquidData = { - csv: `进度 - 0.56`, - input: '请使用水波图展示进度数据' -}; diff --git a/packages/vmind/__tests__/browser/src/constants/mockResponse.ts b/packages/vmind/__tests__/browser/src/constants/mockResponse.ts deleted file mode 100644 index c23b5144..00000000 --- a/packages/vmind/__tests__/browser/src/constants/mockResponse.ts +++ /dev/null @@ -1,76 +0,0 @@ -export const mockGPTResponseLineChart = { - THOUGHT: - "The user wants to show the sales trend of each product, and the user wants to use a line chart. The data contains the date field, product type, and sales value, which can be used to draw a line chart. The 'date' field is used as the x-axis because it's a date, and the 'value' field is used as the y-axis because it's a number. The 'type' field is used to distinguish different products.", - CHART_TYPE: 'Line Chart', - FIELD_MAP: { - x: 'date', - y: 'value', - color: 'type' - }, - REASON: - "The line chart is suitable for displaying data that changes over time and can show the change trend, which can meet the user's intent. Line Chart is in the list of supported charts. The visual mapping result meets the user's intent. All fields in the data are used in the visual mapping. The keys in FIELD_MAP are all available visual channels.", - DOUBLE_CHECK: - "The line chart is suitable for displaying data that changes over time and can show the change trend, which can meet the user's intent. Line Chart is in the list of supported charts. The visual mapping result meets the user's intent. All fields in the data are used in the visual mapping. The keys in FIELD_MAP are all available visual channels. The reply content can be directly parsed by JSON.parse() in JavaScript.", - VIDEO_DURATION: 10 -}; - -export const mockGPTResponseBarChart = { - VIDEO_DURATION: 20, - THOUGHT: - "The user wants to show the sales of different products in different regions, which is suitable for displaying with a bar chart. The 'region' field can be used as the x-axis to show the sales of different regions, and the '销售额' field can be used as the y-axis to show the sales of different products. The '商品名称' field can be used as the color to distinguish different products. Since the user wants a business style, a Bar Chart is chosen.", - CHART_TYPE: 'Bar Chart', - FIELD_MAP: { - x: 'region', - y: '销售额', - color: '商品名称' - }, - REASON: - "The user wants to show the sales of different products in different regions, which is suitable for displaying with a bar chart. The 'region' field can be used as the x-axis to show the sales of different regions, and the '销售额' field can be used as the y-axis to show the sales of different products. The '商品名称' field can be used as the color to distinguish different products. Since the user wants a business style, a Bar Chart is chosen.", - DOUBLE_CHECK: - "The Bar Chart is suitable for displaying the sales of different products in different regions, which can meet the user's intent. Bar Chart is in the list of supported charts. The visual mapping result meets the user's intent. All fields in the data are used in the visual mapping. The keys in FIELD_MAP are all available visual channels. The reply content can be directly parsed by JSON.parse() in JavaScript." -}; - -export const mockGPTResponsePieChart = { - VIDEO_DURATION: 10, - THOUGHT: - "The user wants to show the market share of different mobile phone brands, and the user prefers a Chinese style. The data has two fields, one is the brand name, and the other is the market share, which is a percentage. The user's intention is to show the proportion of market share of different brands, which is suitable for a pie chart. The '品牌名称' field is used as the color to distinguish different brands, and the '市场份额' field is used as the angle of the pie chart to show the market share of each brand.", - CHART_TYPE: 'Pie Chart', - FIELD_MAP: { - angle: '市场份额', - color: '品牌名称' - }, - REASON: - 'The data contains the market share, and the user wants to show percentage data, which is suitable for displaying with a pie chart. The 市场份额 is used as the angle of the pie chart to show the market share of each brand. The 品牌名称 is used as the color to distinguish different brands. The Chinese style is not related to the chart type or visual mapping.', - DOUBLE_CHECK: - "The pie chart is suitable for displaying percentage data such as market share, which can meet the user's intent. Pie Chart is in the list of supported charts. The visual mapping result meets the user's intent. All fields in the data are used in the visual mapping. The keys in FIELD_MAP are all available visual channels. The reply content can be directly parsed by JSON.parse() in JavaScript.", - COLOR_PALETTE: ['#FF6000', '#FFE6C7', '#FFA559', '#454545', '#B70404', '#DB005B', '#F79327', '#FFE569'] -}; - -export const mockGPTResponseFunnelChart = { - THOUGHT: - "The user wants to show the proportion of conversion rate between different processes, which is suitable for displaying with a funnel chart. The data contains the conversion rate, process name, and month, and the user wants to show the data in a forest style. The '流程' field is used as the x-axis of the funnel chart to show the name of each process. The '转化率' field is used as the y-axis of the funnel chart to show the proportion of conversion rate between different processes. The 'Month' field is not used in the visual mapping because it's not necessary for the funnel chart.", - CHART_TYPE: 'Funnel Chart', - FIELD_MAP: { - x: '流程', - y: '转化率' - }, - REASON: - "The user wants to show the proportion of conversion rate between different processes, which is suitable for displaying with a funnel chart. The data contains the conversion rate, process name, and month, and the user wants to show the data in a forest style. The '流程' field is used as the x-axis of the funnel chart to show the name of each process. The '转化率' field is used as the y-axis of the funnel chart to show the proportion of conversion rate between different processes. The 'Month' field is not used in the visual mapping because it's not necessary for the funnel chart.", - DOUBLE_CHECK: - "The funnel chart is suitable for displaying the proportion of conversion rate between different processes, which can meet the user's intent. Funnel Chart is in the list of supported charts. The visual mapping result meets the user's intent. All fields in the data are used in the visual mapping. The keys in FIELD_MAP are all available visual channels. The reply content can be directly parsed by JSON.parse() in JavaScript." -}; - -export const mockGPTResponseDualAxisChart = { - THOUGHT: - 'The user wants to compare the breakfast consumption of male and female students, which is suitable for displaying with a bar chart. The data contains the breakfast consumption of male and female students and the day of the week, and the user wants to show the data in a forest style.', - CHART_TYPE: 'Bar Chart', - FIELD_MAP: { - x: '时间', - y: ['男-早餐', '女-早餐'], - color: '性别' - }, - REASON: - "The user wants to compare the breakfast consumption of male and female students, which is suitable for displaying with a bar chart. The '时间' field is used as the x-axis of the bar chart to show the day of the week. The '男-早餐' and '女-早餐' fields are used as the y-axis of the bar chart to show the breakfast consumption of male and female students. The '性别' field is used as the color to distinguish between male and female students. The forest style is used to make the chart more visually appealing.", - DOUBLE_CHECK: - "The bar chart is suitable for comparing data between different categories, which can meet the user's intent. Bar Chart is in the list of supported charts. The visual mapping result meets the user's intent. All fields in the data are used in the visual mapping. The keys in FIELD_MAP are all available visual channels. The reply content can be directly parsed by JSON.parse() in JavaScript." -}; diff --git a/packages/vmind/__tests__/browser/src/index.scss b/packages/vmind/__tests__/browser/src/index.scss deleted file mode 100644 index c022b4ff..00000000 --- a/packages/vmind/__tests__/browser/src/index.scss +++ /dev/null @@ -1,17 +0,0 @@ -#root { - height: 100vh; -} - -.flex-text-area { - display: flex; - flex: 1; - flex-direction: column; - - textarea { - flex: 1; - } -} - -.flex-1 { - flex: 1; -} \ No newline at end of file diff --git a/packages/vmind/__tests__/browser/src/index.tsx b/packages/vmind/__tests__/browser/src/index.tsx deleted file mode 100644 index 39f0670e..00000000 --- a/packages/vmind/__tests__/browser/src/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import App from './App'; -import '@arco-design/web-react/dist/css/arco.min.css'; - -ReactDOM.createRoot(document.getElementById('root')!).render( - - - -); diff --git a/packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartGeneration.tsx b/packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartGeneration.tsx deleted file mode 100644 index 6f2eb8e7..00000000 --- a/packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartGeneration.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useState } from 'react'; -import { Layout } from '@arco-design/web-react'; -import { DataInput } from './DataInput'; -import { ChartPreview } from './ChartPreview'; -const Sider = Layout.Sider; -const Content = Layout.Content; - -export function ChartGenerationPage() { - const [spec, setSpec] = useState(''); - const [specList, setSpecList] = useState([]); - - const [time, setTime] = useState<{ - totalTime: number; - frameArr: any[]; - }>(); - const [costTime, setCostTime] = useState(0); - return ( - - - { - setSpec(spec); - setSpecList([]); - setTime(time); - setCostTime(costTime); - }} - onSpecListGenerate={(specList: any[], time: any, costTime: number) => { - setSpec(undefined); - setSpecList(specList); - setTime(time); - setCostTime(costTime); - }} - /> - - - - - - ); -} diff --git a/packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartPreview.tsx b/packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartPreview.tsx deleted file mode 100644 index ca7e02b8..00000000 --- a/packages/vmind/__tests__/browser/src/pages/ChartGeneration/ChartPreview.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import React, { useState, useCallback, useEffect, useRef } from 'react'; -import '../index.scss'; -import { Button, Input, Card, Space, Modal, Spin } from '@arco-design/web-react'; -import VChart, { registerLiquidChart } from '@visactor/vchart'; -import { ManualTicker, defaultTimeline } from '@visactor/vrender-core'; -import VMind from '../../../../../src'; -import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg'; -import { createCanvas } from 'canvas'; -import { isNil } from '@visactor/vutils'; - -const TextArea = Input.TextArea; - -type IPropsType = { - spec: any; - specList?: any; - time: - | { - totalTime: number; - frameArr: any[]; - } - | undefined; - costTime: number; - style?: any; -}; - -function downloadGif(link: string, filename = 'out') { - const a = document.createElement('a'); - a.href = link; - a.download = `${filename}.gif`; - a.dispatchEvent(new MouseEvent('click')); -} - -function downloadVideo(link: string, filename = 'out') { - const a = document.createElement('a'); - a.href = link; - a.download = `${filename}.mp4`; - a.dispatchEvent(new MouseEvent('click')); -} - -registerLiquidChart(); - -export function ChartPreview(props: IPropsType) { - const [generating, setGenerating] = useState(false); - const [outType, setOutType] = useState<'gif' | 'video' | ''>(''); - const [src, setSrc] = useState(''); - const vchartRef = useRef(null); - - const vmind = new VMind({}); - // const [describe, setDescribe] = useState(mockUserInput6.input); - // const [csv, setCsv] = useState(mockUserInput6.csv); - // const [loading, setLoading] = useState(false); - - // const askGPT = useCallback(async () => { - // setLoading(true); - // const spec = await(NLToChartPipe(csv, describe)); - // props.onSpecGenerate(spec, 3000); - // setLoading(false); - // }, [describe, csv]); - const generateVideo = useCallback(async () => { - const { spec, time } = props; - if (!time || !spec) { - return; - } - setGenerating(true); - const ffmpeg = createFFmpeg({ - log: true - }); - await ffmpeg.load(); - const data = await vmind.exportVideo(spec, time, { - VChart, - FFmpeg: ffmpeg, - fetchFile, - ManualTicker, - defaultTimeline, - createCanvas - } as any); - const src = URL.createObjectURL(new Blob([data], { type: 'video/mp4' })); - setSrc(src); - setOutType('video'); - setGenerating(false); - }, [props, vmind]); - - const generateGif = useCallback(async () => { - const { spec, time } = props; - if (!time || !spec) { - return; - } - setGenerating(true); - const ffmpeg = createFFmpeg({ - log: true - }); - await ffmpeg.load(); - const data = await vmind.exportGIF(spec, time, { - VChart, - FFmpeg: ffmpeg, - fetchFile, - ManualTicker, - defaultTimeline, - createCanvas - }); - const src = URL.createObjectURL(new Blob([data], { type: 'video/mp4' })); - setSrc(src); - setOutType('gif'); - setGenerating(false); - // downloadVideo(src); - }, [props, vmind]); - - useEffect(() => { - //defaultTicker.mode = 'raf'; - const { spec, time } = props; - if (!time || !spec) { - vchartRef.current = null; - return; - } - //spec.animation = false; - if (isNil(vchartRef.current)) { - const cs = new VChart(spec, { - dom: 'chart', - mode: 'desktop-browser', - dpr: 2, - disableDirtyBounds: true - }); - vchartRef.current = cs; - vchartRef.current.renderAsync(); - } else { - vchartRef.current.updateSpec(props.spec); - } - }, [props]); - - useEffect(() => { - //defaultTicker.mode = 'raf'; - const { specList } = props; - specList.forEach((spec: any, index: number) => { - (document.getElementById(`chart-${index}`) as any).innerHTML = ''; - const cs = new VChart(spec, { - dom: `chart-${index}`, - mode: 'desktop-browser', - dpr: 2, - disableDirtyBounds: true - }); - cs.renderAsync(); - }); - }, [props]); - - return ( -
- { - setOutType(''); - if (outType === 'gif') { - downloadGif(src); - } else { - downloadVideo(src); - } - }} - onCancel={() => setOutType('')} - > - {outType === 'gif' ? : - - -
- - - - -
-
- {props.spec ?
: null} -
- {(props.specList ?? []).map((spec, index: number) => ( -
- ))} -
-
- {props.spec ? ( -
-

Total Time: {props.costTime / 1000} s

-

spec:

- - {/*
{JSON.stringify(props.spec, null, 4)}
*/} -
- ) : null} -
-
-
- ); -} diff --git a/packages/vmind/__tests__/browser/src/pages/ChartGeneration/DataInput.tsx b/packages/vmind/__tests__/browser/src/pages/ChartGeneration/DataInput.tsx deleted file mode 100644 index 03f21615..00000000 --- a/packages/vmind/__tests__/browser/src/pages/ChartGeneration/DataInput.tsx +++ /dev/null @@ -1,461 +0,0 @@ -/* eslint-disable no-console */ -import React, { useState, useCallback, useMemo } from 'react'; -import '../index.scss'; -import { - Avatar, - Input, - Divider, - Button, - InputNumber, - Upload, - Message, - Select, - Radio, - Checkbox, - Modal -} from '@arco-design/web-react'; -import { - mockUserInput10, - mockUserInput2, - mockUserInput3, - mockUserInput3Eng, - mockUserInput6, - mockUserInput6Eng, - mockUserInput8, - carSaleMockData, - mockUserInput15, - acceptRatioData, - mallSalesData, - hotWordsData, - mockUserInput4, - mockUserInput5, - mockUserInput9, - mockUserInput11, - mockUserInput12, - mockUserInput13, - mockUserInput14, - mockUserInput16, - mockUserInput17, - mockUserInput18, - SalesRecordsData, - gmvData, - mockProgressData, - liquidData, - bubbleCirclePackingData, - rangeColumnChartData, - sunburstChartData, - treemapChartData, - gaugeChartData, - linearProgressChartData, - basicHeatMapChartData, - vennChartData, - mapChartData - // singleColumnLineCombinationChartData, - // singleColumnLineCombinationChartData1, - // singleColumnBarCombinationChartData1, - // singleColumnBarCombinationChartData, - // dynamicScatterPlotData, - // dynamicRoseData, - // dynamicRoseData1, - // sequenceData -} from '../../constants/mockData'; -import VMind, { ArcoTheme } from '../../../../../src/index'; -import { Model } from '../../../../../src/index'; -import VChart from '@visactor/vchart'; -import axios from 'axios'; - -const TextArea = Input.TextArea; -const Option = Select.Option; -const RadioGroup = Radio.Group; - -type IPropsType = { - onSpecGenerate: ( - spec: any, - time: { - totalTime: number; - frameArr: any[]; - }, - costTime: number - ) => void; - onSpecListGenerate: any; -}; -const demoDataList: { [key: string]: any } = { - pie: mockUserInput2, - 'dynamic bar zh_cn': mockUserInput6, - line: mockUserInput8, - column: mockUserInput3, - column2: mockUserInput10, - wordcloud: hotWordsData, - wordcloud2: mockUserInput5, - 'scatter plot': mockUserInput4, - funnel: mockUserInput9, - 'dual-axis': mockUserInput11, - waterfall: mockUserInput12, - rose: mockUserInput13, - radar: mockUserInput14, - sankey: mockUserInput15, - 'box-plot': mockUserInput16, - gmv: gmvData, - 'Electric vehicle sales': carSaleMockData, - 'College entrance examination': acceptRatioData, - 'Shopping Mall Sales Performance': mallSalesData, - 'Global GDP': mockUserInput6Eng, - 'Sales of different drinkings': mockUserInput3Eng, - 'Multi measure': mockUserInput17, - DataQuery: mockUserInput18, - salesData: SalesRecordsData, - progress: mockProgressData, - liquid: liquidData, - BubbleCirclePacking: bubbleCirclePackingData, - Map: mapChartData, - RangeColumn: rangeColumnChartData, - Sunburst: sunburstChartData, - TreeMap: treemapChartData, - Gauge: gaugeChartData, - LinearProgress: linearProgressChartData, - BasicHeatMap: basicHeatMapChartData, - Venn: vennChartData - // SingleColumnLineCommon: singleColumnLineCombinationChartData, - // SingleColumnLineCommon1: singleColumnLineCombinationChartData1, - // SingleColumnBarCommon: singleColumnBarCombinationChartData, - // SingleColumnBarCommon1: singleColumnBarCombinationChartData1, - // dynamicScatterPlotData: dynamicScatterPlotData, - // dynamicRoseData: dynamicRoseData, - // dynamicRoseData1: dynamicRoseData1, - // sequenceData: sequenceData -}; - -const globalVariables = (import.meta as any).env; -const ModelConfigMap: Record = { - [Model.GPT3_5]: { url: globalVariables.VITE_GPT_URL, key: globalVariables.VITE_GPT_KEY }, - [Model.GPT4]: { url: globalVariables.VITE_GPT_URL, key: globalVariables.VITE_GPT_KEY }, - [Model.GPT_4o]: { url: globalVariables.VITE_GPT_URL, key: globalVariables.VITE_GPT_KEY }, - [Model.DEEPSEEK_R1]: { url: globalVariables.VITE_DEEPSEEK_URL, key: globalVariables.VITE_DEEPSEEK_KEY }, - [Model.DEEPSEEK_V3]: { url: globalVariables.VITE_DEEPSEEK_URL, key: globalVariables.VITE_DEEPSEEK_KEY }, - [globalVariables.VITE_CUSTOM_MODEL || 'Custom']: { - url: globalVariables.VITE_CUSTOM_URL, - key: globalVariables.VITE_CUSTOM_KEY - } -}; -const OPENAI_API_URL = 'https://api.openai.com/v1/chat/completions'; - -const MAP_CHART_BASEMAP = 'https://lf9-dp-fe-cms-tos.byteorg.com/obj/bit-cloud/geojson/world.json'; -const specTemplateTest = false; -export function DataInput(props: IPropsType) { - const defaultDataKey = Object.keys(demoDataList)[3]; - const [image, setImage] = useState(); - const [describe, setDescribe] = useState(demoDataList[defaultDataKey].input); - const [csv, setCsv] = useState(demoDataList[defaultDataKey].csv); - //const [spec, setSpec] = useState(''); - //const [time, setTime] = useState(1000); - const [model, setModel] = useState(Model.GPT_4o); - const [useDataQuery, setUseDataQuery] = useState(false); - const [showThoughts, setShowThoughts] = useState(false); - const [visible, setVisible] = React.useState(false); - const [url, setUrl] = React.useState(ModelConfigMap[model]?.url ?? OPENAI_API_URL); - const [apiKey, setApiKey] = React.useState(ModelConfigMap[model]?.key); - - const [loading, setLoading] = useState(false); - - const vmind: VMind = useMemo(() => { - if (!url || !apiKey) { - Message.error('Please set your LLM URL and API Key!!!'); - return null as unknown as VMind; - } - return new VMind({ - url, - model, - showThoughts: showThoughts, - headers: { - //must has Authorization: `Bearer ${openAIKey}` if use openai api - Authorization: `Bearer ${apiKey}`, - 'api-key': apiKey - } - // custom request test - // customRequestFunc: { - // chartAdvisor: async (messages, tools, options) => { - // return await axios(url, { - // method: 'POST', - // headers: options!.headers as any, - // data: { - // model: Model.DOUBAO_PRO_32K, - // messages, - // tools, - // stream: false - // } - // }).then(response => response.data); - // }, - // chartCommand: async (messages, tools, options) => { - // return { - // logId: '111', - // id: '111', - // choices: [ - // { - // index: 0, - // message: { - // role: 'assistant', - // content: '' - // }, - // finish_reason: 'stop' - // } - // ], - // usage: { - // prompt_tokens: 1, - // completion_tokens: 1, - // total_tokens: 2 - // } - // }; - // } - // } - }); - }, [apiKey, model, showThoughts, url]); - - const askGPT = useCallback(async () => { - //setLoading(true); - //const { fieldInfo: fieldInfoQuery, dataset: datasetQuery } = await vmind?.dataQuery(describe, fieldInfo, dataset); - //const dataset = mockData4; - //const fieldInfo = vmind?.getFieldInfo(dataset); - const dataset = image ? undefined : vmind.parseCSVData(csv).dataset; - - const finalDataset = specTemplateTest && model !== Model.CHART_ADVISOR ? undefined : dataset; - - const startTime = new Date().getTime(); - - // The map chart requires the user to register a base map named map in advance using VChart.registerMap - if (csv === demoDataList.Map.csv) { - const response = await fetch(MAP_CHART_BASEMAP); - const geoJson = await response.json(); - VChart.registerMap('map', geoJson); - } - const { - spec, - chartAdvistorRes, - time = { - totalTime: 2000, - frameArr: [] - } - } = await vmind.generateChart(describe, undefined, finalDataset, { - image, - enableDataQuery: useDataQuery, - //chartTypeList: [ChartType.BarChart, ChartType.LineChart], - // colorPalette: ArcoTheme.colorScheme, - theme: 'light' - }); - const endTime = new Date().getTime(); - console.log((vmind as any).data2ChartSchedule.getContext()); - if (chartAdvistorRes?.length) { - props.onSpecListGenerate( - chartAdvistorRes.map(v => (specTemplateTest ? vmind.fillSpecWithData(v.spec, dataset) : v.spec)) - ); - } else { - const finalSpec = specTemplateTest ? vmind.fillSpecWithData(spec, dataset) : spec; - - const costTime = endTime - startTime; - props.onSpecGenerate(finalSpec, time as any, costTime); - } - - setLoading(false); - }, [vmind, csv, model, describe, useDataQuery, props, image]); - - return ( -
-
-
- -
-
-
-

- - 0 - - Select Demo Data or image (optional) -

- - - { - const uploadFile = e.dataTransfer.files[0]; - if (!uploadFile.type.startsWith('image/')) { - Message.info('Please upload image files only'); - return; - } - }} - onRemove={(a, b) => { - setImage(undefined); - }} - fileList={image ? [{ url: image, uid: url }] : []} - customRequest={option => { - const { file, onError, onSuccess } = option; - const reader = new FileReader(); - reader.readAsDataURL(file); - reader.addEventListener('load', () => { - const result = reader.result; - if (!result) { - onError?.(); - return; - } - - setImage(result as string); - // Handle the image data as needed - onSuccess?.(); - }); - }} - tip="Only images can be uploaded" - /> -
- -
-
-

- - 1 - - What would you like to visualize? -

- - - {/*
{JSON.stringify(props.spec, null, 4)}
*/} -
- ) : null} - - -
- ); -} diff --git a/packages/vmind/__tests__/browser/src/pages/NewChartGeneration/DataInput.tsx b/packages/vmind/__tests__/browser/src/pages/NewChartGeneration/DataInput.tsx deleted file mode 100644 index 7d68567f..00000000 --- a/packages/vmind/__tests__/browser/src/pages/NewChartGeneration/DataInput.tsx +++ /dev/null @@ -1,275 +0,0 @@ -import React, { useState, useCallback, useMemo } from 'react'; -import '../index.scss'; -import { Avatar, Input, Divider, Button, Message, Select, Radio, Modal } from '@arco-design/web-react'; -import { chartGenerationMockData } from '../../constants/chartGeneratorData'; -import type { DataTable, FieldInfo } from '../../../../../src/index'; -import VMind from '../../../../../src/index'; -import { Model, AtomName, Schedule, LLMManage, DataType } from '../../../../../src/index'; - -const TextArea = Input.TextArea; -const Option = Select.Option; -const RadioGroup = Radio.Group; - -type IPropsType = { - onSpecGenerate: (spec: any, command: string, costTime: number) => void; - onSpecListGenerate?: any; -}; - -const globalVariables = (import.meta as any).env; -const ModelConfigMap: any = { - [Model.DOUBAO_PRO]: { url: globalVariables.VITE_DOUBAO_URL, key: globalVariables.VITE_DOUBAO_KEY }, - [Model.GPT_4o]: { url: globalVariables.VITE_GPT_URL, key: globalVariables.VITE_GPT_KEY } -}; -const OPENAI_API_URL = 'https://api.openai.com/v1/chat/completions'; - -const specTemplateTest = false; - -function dataTypeTransfer(dataType: string): DataType { - switch (dataType) { - case 'date': - case 'time': - return DataType.DATE; - case 'count': - return DataType.INT; - case 'numerical': - case 'ratio': - return DataType.FLOAT; - default: - return DataType.STRING; - } -} - -function transferFieldInfoInSimpleFieldInfo(fieldInfo: FieldInfo[]): FieldInfo[] { - return fieldInfo.map(item => ({ - fieldName: item.fieldName, - description: item.description, - type: dataTypeTransfer(item.type), - role: item.role - })); -} - -export function DataInput(props: IPropsType) { - const [dataTableIndex, setdataTableIndex] = useState(0); - const [query, setQuery] = useState(''); - const [model, setModel] = useState(Model.GPT_4o); - const mockData = React.useMemo(() => { - const llmData = chartGenerationMockData.find(item => item.llm === model) ?? chartGenerationMockData[0]; - return llmData.result; - }, [model]); - const [dataTable, setDataTable] = useState(mockData[dataTableIndex].context.dataTable as any); - const [fieldInfo, setFieldInfo] = useState(mockData[dataTableIndex].context.fieldInfo as any); - const [visible, setVisible] = React.useState(false); - const [url, setUrl] = React.useState(ModelConfigMap[model]?.url ?? OPENAI_API_URL); - const [apiKey, setApiKey] = React.useState(ModelConfigMap[model]?.key); - - const [loading, setLoading] = useState(false); - - React.useEffect(() => { - setDataTable(mockData[dataTableIndex].context.dataTable as any); - setFieldInfo(mockData[dataTableIndex].context.fieldInfo as any); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [model]); - - const llm = React.useRef( - new LLMManage({ - url, - headers: { - 'api-key': apiKey, - Authorization: `Bearer ${apiKey}` - }, - model, - maxTokens: 2048 - }) - ); - const schedule = React.useRef>( - new Schedule([AtomName.DATA_CLEAN, AtomName.CHART_COMMAND], { - base: { llm: llm.current }, - chartCommand: { useDataTable: true } - }) - ); - - React.useEffect(() => { - llm.current.updateOptions({ - url, - headers: { - 'api-key': apiKey, - Authorization: `Bearer ${apiKey}` - }, - model - }); - }, [url, model, apiKey]); - - const vmind: VMind = useMemo(() => { - if (!url || !apiKey) { - Message.error('Please set your LLM URL and API Key!!!'); - return null as unknown as VMind; - } - return new VMind({ - url, - model, - headers: { - //must has Authorization: `Bearer ${openAIKey}` if use openai api - Authorization: `Bearer ${apiKey}`, - 'api-key': apiKey - } - }); - }, [apiKey, model, url]); - - const askGPT = useCallback(async () => { - let finalDataTable = specTemplateTest && model !== Model.CHART_ADVISOR ? undefined : dataTable; - let finalFieldInfo = fieldInfo; - const startTime = new Date().getTime(); - - setLoading(true); - schedule.current.setNewTask({ - ...mockData[dataTableIndex].context - }); - const ctx = await schedule.current.run(query); - const finalDescribe = ctx.command; - finalDataTable = ctx.dataTable; - finalFieldInfo = ctx.fieldInfo || fieldInfo; - const chartGenerationRes = finalDescribe - ? await vmind.generateChart(finalDescribe, transferFieldInfoInSimpleFieldInfo(finalFieldInfo), finalDataTable, { - theme: 'light' - }) - : { spec: null }; - const endTime = new Date().getTime(); - const { spec } = chartGenerationRes; - - const finalSpec = specTemplateTest ? vmind.fillSpecWithData(spec, dataTable) : spec; - - const costTime = endTime - startTime; - props.onSpecGenerate(finalSpec, finalDescribe, costTime); - - setLoading(false); - }, [model, dataTable, fieldInfo, mockData, dataTableIndex, query, vmind, props]); - - return ( -
-
-
- -
-
-
-

- - 0 - - Select Demo Data (optional) -

- -
-
-

- - 1 - - Query to adjust result? -

- -