From 7cbe09fb982e5f42a0eff1ea4e9d3f463a229903 Mon Sep 17 00:00:00 2001 From: git-action Date: Mon, 11 May 2026 03:18:48 +0000 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20sync=20sdk/=20from=20gdc-ui=20?= =?UTF-8?q?=E2=86=92=20gooddata-ui-sdk/=20(41b71bd)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit risk: low --- .../git-check-release/action-build/index.js | 34993 ---------------- .github/actions/git-check-release/action.yml | 43 +- .../git-check-release/package-lock.json | 270 - .../actions/git-check-release/package.json | 19 - .../actions/git-check-release/src/index.js | 40 - .github/actions/rush/set-up-rush/action.yml | 16 +- .github/actions/zstd/detect-zstd/action.yml | 12 +- .github/actions/zstd/disable-zstd/action.yml | 12 +- .github/actions/zstd/enable-zstd/action.yml | 12 +- .oxfmtrc.json | 3 +- .../rush/browser-approved-packages.json | 2652 +- common/config/rush/pnpm-lock.yaml | 469 +- common/config/rush/version-policies.json | 4 +- .../examples-template/package.json | 2 +- .../example-attributefilter/package.json | 2 +- .../examples/example-chartconfig/package.json | 2 +- .../examples/example-columnchart/package.json | 2 +- .../examples/example-combochart/package.json | 2 +- .../examples/example-dashboard/package.json | 2 +- .../examples/example-datefilter/package.json | 2 +- .../src/example/Example.tsx | 1 + .../example-dependentfilters/package.json | 2 +- .../examples/example-execute/package.json | 2 +- .../example-execute/src/example/Example.tsx | 1 + .../examples/example-granularity/package.json | 2 +- .../src/example/Example.tsx | 1 + .../examples/example-headline/package.json | 2 +- .../examples/example-pivottable/package.json | 2 +- .../example-relativedatefilter/package.json | 2 +- .../examples/example-repeater/package.json | 2 +- .../sdk-interactive-examples/package.json | 2 +- libs/api-client-tiger/package.json | 2 +- .../VisualizationObjectModelV1.ts | 1 + .../src/gd-tiger-model/typeGuards.ts | 1 + libs/sdk-backend-base/package.json | 2 +- .../tests/AfmResultConverter.test.ts | 1 + .../src/customBackend/execution.ts | 1 + .../src/customBackend/index.ts | 1 + .../src/dummyBackend/index.ts | 1 + .../ldmFactories/catalog/attributeFactory.ts | 1 + .../src/ldmFactories/catalog/factFactory.ts | 1 + .../ldmFactories/catalog/measureFactory.ts | 1 + .../dashboard/insightWidgetFactory.ts | 1 + .../dashboard/kpiWidgetFactory.ts | 1 + .../ldmFactories/metadata/attributeFactory.ts | 1 + .../ldmFactories/metadata/dashboardFactory.ts | 1 + .../ldmFactories/metadata/dataSetFactory.ts | 1 + .../metadata/displayFormFactory.ts | 1 + .../src/ldmFactories/metadata/factFactory.ts | 1 + .../ldmFactories/metadata/measureFactory.ts | 1 + .../ldmFactories/metadata/variableFactory.ts | 1 + .../src/normalizingBackend/index.ts | 1 + libs/sdk-backend-mockingbird/package.json | 2 +- .../src/legacyRecordedBackend/index.ts | 1 + .../src/recordedBackend/index.ts | 1 + libs/sdk-backend-spi/package.json | 2 +- libs/sdk-backend-spi/src/backend/index.ts | 1 + .../src/workspace/attributes/index.ts | 1 + .../src/workspace/execution/index.ts | 1 + libs/sdk-backend-spi/src/workspace/index.ts | 1 + .../src/workspace/measures/index.ts | 1 + libs/sdk-backend-tiger/package.json | 2 +- .../src/backend/features/feature.ts | 1 + .../src/backend/features/hub.ts | 1 + .../src/backend/features/index.ts | 1 + .../src/backend/features/static.ts | 1 + libs/sdk-backend-tiger/src/backend/index.ts | 1 + .../src/backend/organization/agents.ts | 1 + .../backend/organization/automations/index.ts | 1 + .../src/backend/organization/genAI/index.ts | 1 + .../src/backend/organization/index.ts | 1 + .../src/backend/organization/llmEndpoints.ts | 1 + .../src/backend/organization/llmProviders.ts | 1 + .../organization/notificationChannels.ts | 1 + .../src/backend/organization/notifications.ts | 1 + .../src/backend/organization/permissions.ts | 1 + .../src/backend/organization/styling.ts | 1 + .../src/backend/organization/users.ts | 1 + .../src/backend/user/index.ts | 1 + .../workspace/attributes/elements/index.ts | 1 + .../src/backend/workspace/attributes/index.ts | 1 + .../workspace/automations/automationsQuery.ts | 1 + .../backend/workspace/automations/index.ts | 1 + .../catalog/availableItemsFactory.ts | 1 + .../src/backend/workspace/catalog/catalog.ts | 1 + .../workspace/catalog/datasetLoader.ts | 1 + .../src/backend/workspace/catalog/factory.ts | 1 + .../src/backend/workspace/dashboards/index.ts | 1 + .../src/backend/workspace/datasets/index.ts | 1 + .../workspace/execution/executionFactory.ts | 1 + .../workspace/execution/executionResult.ts | 1 + .../workspace/execution/preparedExecution.ts | 1 + .../workspace/exportDefinitions/index.ts | 1 + .../src/backend/workspace/facts/index.ts | 1 + .../workspace/genAI/ChatConversations.test.ts | 1 + .../workspace/genAI/MemoryItemsService.ts | 1 + .../src/backend/workspace/genAI/index.ts | 1 + .../src/backend/workspace/index.ts | 1 + .../src/backend/workspace/insights/index.ts | 1 + .../src/backend/workspace/measures/index.ts | 1 + .../src/backend/workspace/parameters/index.ts | 1 + .../src/backend/workspace/styling/index.ts | 1 + .../fromBackend/AutomationConverter.ts | 1 + .../fromBackend/ExportDefinitionsConverter.ts | 1 + .../fromBackend/afm/MeasureConverter.ts | 1 + .../afm/tests/GrandTotalsConverter.test.ts | 1 + .../fromBackend/afm/tests/dimensions.test.ts | 1 + .../fromBackend/afm/tests/result.test.ts | 1 + .../AnalyticalDashboardConverter.ts | 1 + .../v2/AnalyticalDashboardConverter.ts | 1 + .../AnalyticalDashboardConverter.test.ts | 1 + .../convertors/fromBackend/genAIConvertor.ts | 1 + .../tests/fixLegacyElementUris.test.ts | 1 + .../shared/storedFilterConverter.ts | 1 + .../toBackend/AnalyticalDashboardConverter.ts | 1 + .../toBackend/AutomationConverter.ts | 1 + .../toBackend/ExportDefinitionsConverter.ts | 1 + .../convertors/toBackend/InsightConverter.ts | 1 + .../toBackend/afm/MeasureConverter.ts | 1 + .../afm/tests/FilterConverter.test.ts | 1 + .../afm/tests/MeasureConverter.test.ts | 1 + .../afm/tests/toAfmResultSpec.test.ts | 1 + .../tests/integrated/catalog.test.ts | 1 + .../tests/integrated/elements.test.ts | 1 + .../api/sdk-code-convertors.api.md | 136 +- libs/sdk-code-convertors/package.json | 2 +- .../sdk-code-convertors/python/pyproject.toml | 2 +- .../src/configs/areaChart.ts | 1 + .../src/configs/barChart.ts | 1 + .../src/configs/bubbleChart.ts | 1 + .../src/configs/bulletChart.ts | 1 + .../src/configs/columnChart.ts | 1 + .../src/configs/comboChart.ts | 1 + .../src/configs/dependencyWheelChart.ts | 1 + .../src/configs/donutChart.ts | 1 + .../src/configs/funnelChart.ts | 1 + .../src/configs/geoAreaChart.ts | 1 + .../src/configs/geoChart.ts | 1 + .../src/configs/headlineChart.ts | 1 + .../src/configs/heatmapChart.ts | 1 + .../src/configs/lineChart.ts | 1 + .../src/configs/pieChart.ts | 1 + .../src/configs/pyramidChart.ts | 1 + .../src/configs/repeaterChart.ts | 1 + .../src/configs/sankeyChart.ts | 1 + .../src/configs/scatterChart.ts | 1 + libs/sdk-code-convertors/src/configs/table.ts | 1 + .../src/configs/treemapChart.ts | 1 + .../src/configs/waterfallChart.ts | 1 + .../src/utils/configUtils.ts | 1 + .../src/utils/convertBucketToTitle.ts | 1 + .../src/utils/filterUtils.ts | 1 + .../src/utils/locationUtils.ts | 1 + .../src/utils/yamlUtils.ts | 1 + libs/sdk-code-schemas/package.json | 2 +- libs/sdk-e2e-utils/package.json | 2 +- libs/sdk-embedding/package.json | 2 +- libs/sdk-model/package.json | 2 +- libs/sdk-model/src/dashboard/alert.ts | 1 + .../src/dashboard/analyticalWidgets.ts | 1 + libs/sdk-model/src/dashboard/baseWidget.ts | 1 + libs/sdk-model/src/dashboard/dashboard.ts | 1 + libs/sdk-model/src/dashboard/filterContext.ts | 1 + libs/sdk-model/src/dashboard/scheduledMail.ts | 1 + .../src/dashboard/test/alerts.fixtures.ts | 1 + .../src/dashboard/test/alerts.test.ts | 1 + .../src/dashboard/test/drills.test.ts | 1 + .../src/dashboard/test/filterContext.test.ts | 1 + libs/sdk-model/src/dashboard/test/kpi.test.ts | 1 + .../src/dashboard/test/parameter.test.ts | 1 + .../src/dashboard/test/widgets.test.ts | 1 + libs/sdk-model/src/dashboard/widget.ts | 1 + .../dateFilterConfig/tests/typeGuards.test.ts | 1 + .../src/execution/attribute/factory.ts | 1 + .../sdk-model/src/execution/base/dimension.ts | 1 + .../src/execution/buckets/bucketArray.ts | 1 + .../src/execution/buckets/bucketItem.ts | 1 + .../execution/executionDefinition/factory.ts | 1 + .../execution/executionDefinition/index.ts | 1 + .../executionDefinition/validation.ts | 1 + .../sdk-model/src/execution/filter/factory.ts | 1 + .../src/execution/filter/filterMerge.ts | 1 + .../src/execution/measure/factory.ts | 1 + .../src/execution/measure/fingerprint.ts | 1 + libs/sdk-model/src/genAI/chat.ts | 1 + libs/sdk-model/src/genAI/quality.ts | 1 + libs/sdk-model/src/insight/comparators.ts | 1 + libs/sdk-model/src/insight/factory.ts | 1 + libs/sdk-model/src/insight/sanitization.ts | 1 + libs/sdk-model/src/ldm/catalog/index.ts | 1 + libs/sdk-model/src/settings/index.ts | 1 + .../package.json | 2 +- libs/sdk-ui-all/package.json | 2 +- libs/sdk-ui-catalog/package.json | 2 +- libs/sdk-ui-catalog/src/catalog/Catalog.tsx | 1 + .../catalogDetail/CatalogDetailActionBar.tsx | 1 + .../catalogDetail/CatalogDetailActions.tsx | 1 + .../catalogDetail/CatalogDetailContent.tsx | 1 + .../src/catalogDetail/CatalogDetailHeader.tsx | 1 + .../CatalogDetailTabCertification.tsx | 1 + .../CatalogDetailTabMetadata.tsx | 1 + .../hooks/useCatalogItemUpdate.ts | 1 + .../src/catalogItem/CatalogFeedContext.tsx | 1 + .../src/catalogItem/converter.ts | 1 + libs/sdk-ui-catalog/src/catalogItem/query.ts | 1 + .../src/catalogItem/useCatalogEndpoints.ts | 1 + .../src/catalogItem/useCatalogItemFeed.ts | 1 + .../src/certification/CertificationIcon.tsx | 1 + .../src/filter/FilterCertification.tsx | 1 + .../src/filter/FilterCreatedBy.tsx | 1 + .../src/filter/FilterObjectType.tsx | 1 + .../src/filter/FilterOrigin.tsx | 1 + .../src/filter/FilterQuality.tsx | 1 + .../src/filter/FilterResetButton.tsx | 1 + libs/sdk-ui-catalog/src/filter/FilterTags.tsx | 1 + .../src/filter/FilterVisibility.tsx | 1 + libs/sdk-ui-catalog/src/lineage/Lineage.tsx | 1 + .../src/lineage/graph/createNode.ts | 1 + .../src/lineage/useLineageGraph.ts | 1 + .../src/main/hooks/useCatalogItemOpen.test.ts | 1 + .../src/objectType/ObjectTypeIcon.tsx | 1 + .../src/objectType/ObjectTypeSelect.tsx | 1 + .../src/objectType/ObjectTypeTooltip.tsx | 1 + libs/sdk-ui-catalog/src/objectType/labels.ts | 1 + .../src/parameter/ParameterCreateDialog.tsx | 1 + .../src/parameter/ParameterDeleteDialog.tsx | 1 + .../src/parameter/ParameterEditDialog.tsx | 1 + .../ParameterDeleteConfirmDialog.test.tsx | 1 + .../tests/ParameterEditDialog.test.tsx | 1 + .../tests/ParameterMutationContext.test.tsx | 1 + .../tests/parameterMutationPort.test.ts | 1 + .../src/quality/QualityIssue.tsx | 1 + .../src/quality/QualityIssueObjects.tsx | 1 + .../src/quality/QualityScoreCard.tsx | 1 + libs/sdk-ui-catalog/src/table/Table.tsx | 1 + .../src/tabs/CatalogItemCardGrid.tsx | 1 + .../src/tabs/CatalogTabPanel.tsx | 1 + libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx | 1 + libs/sdk-ui-charts/package.json | 2 +- .../src/charts/_base/BaseChart.tsx | 1 + .../src/charts/areaChart/AreaChart.tsx | 1 + .../src/charts/barChart/BarChart.tsx | 1 + .../src/charts/bubbleChart/BubbleChart.tsx | 1 + .../src/charts/bulletChart/BulletChart.tsx | 1 + .../src/charts/columnChart/ColumnChart.tsx | 1 + .../src/charts/comboChart/ComboChart.tsx | 1 + .../DependencyWheelChart.tsx | 1 + .../src/charts/donutChart/DonutChart.tsx | 1 + .../src/charts/funnelChart/FunnelChart.tsx | 1 + .../src/charts/headline/CoreHeadline.tsx | 1 + .../src/charts/headline/Headline.tsx | 1 + .../headline/HeadlineProviderFactory.ts | 1 + .../headlines/baseHeadline/BaseHeadline.tsx | 1 + .../headlines/baseHeadline/CompareSection.tsx | 1 + .../headlines/baseHeadline/PrimarySection.tsx | 1 + .../PrimarySectionCompactContent.tsx | 1 + .../BaseHeadlineDataItem.tsx | 1 + .../comparisonItems/ComparisonDataItem.tsx | 1 + .../ComparisonDataWithSubItem.tsx | 1 + .../comparisonItems/useComparisonDataItem.ts | 1 + .../tests/CompareSection.test.tsx | 1 + .../tests/CompareSectionItem.test.tsx | 1 + .../tests/PrimarySection.test.tsx | 1 + .../PrimarySectionCompactContent.test.tsx | 1 + .../tests/PrimarySectionContent.test.tsx | 1 + .../internal/interfaces/BaseHeadlines.ts | 1 + .../internal/providers/ComparisonProvider.ts | 1 + .../providers/MultiMeasuresProvider.ts | 1 + .../tests/ComparisonProvider.test.ts | 1 + .../ComparisonTransformation.tsx | 1 + .../MultiMeasuresTransformation.tsx | 1 + .../utils/BaseHeadlineTransformationUtils.ts | 1 + .../utils/ComparisonTransformationUtils.ts | 1 + .../src/charts/heatmap/Heatmap.tsx | 1 + .../src/charts/lineChart/LineChart.tsx | 1 + .../src/charts/pieChart/PieChart.tsx | 1 + .../src/charts/pyramidChart/PyramidChart.tsx | 1 + .../src/charts/repeater/CoreRepeater.tsx | 1 + .../src/charts/repeater/Repeater.tsx | 1 + .../repeater/internal/InlineColumnChart.tsx | 1 + .../repeater/internal/InlineLineChart.tsx | 1 + .../repeater/internal/RepeaterChart.tsx | 1 + .../charts/repeater/internal/columnSizing.ts | 1 + .../internal/repeaterAgGridDataSource.tsx | 1 + .../charts/repeater/internal/tableSizing.ts | 1 + .../src/charts/repeater/publicTypes.ts | 1 + .../src/charts/sankeyChart/SankeyChart.tsx | 1 + .../src/charts/scatterPlot/ScatterPlot.tsx | 1 + .../src/charts/treemap/Treemap.tsx | 1 + .../src/charts/xirr/CoreXirr.tsx | 1 + libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx | 1 + .../xirr/internal/XirrTransformation.tsx | 1 + .../internal/utils/XirrTransformationUtils.ts | 1 + .../src/highcharts/ChartTransformation.tsx | 1 + .../src/highcharts/adapter/Chart.tsx | 1 + .../highcharts/adapter/HighChartsRenderer.tsx | 1 + .../src/highcharts/adapter/legendBuilder.ts | 1 + .../autohideLabels/autohideBarLabels.ts | 1 + .../plugins/autohideLabels/autohideLabels.ts | 1 + .../_chartColoring/test/measure.test.ts | 1 + .../_chartCreators/commonConfiguration.ts | 1 + .../_chartCreators/customConfiguration.ts | 1 + .../customTooltip/referenceResolver.ts | 1 + .../_chartCreators/dataLabelsHelpers.ts | 1 + .../_chartCreators/drilldownEventing.ts | 1 + .../getOptionalStackingConfiguration.ts | 1 + .../_chartCreators/highChartsCreators.ts | 1 + .../chartTypes/_chartOptions/chartAxes.ts | 1 + .../chartTypes/_chartOptions/chartDrilling.ts | 1 + .../chartTypes/_chartOptions/chartLimits.ts | 1 + .../_chartOptions/chartOptionsBuilder.ts | 1 + .../chartTypes/_chartOptions/chartSeries.ts | 1 + .../chartTypes/_chartOptions/chartTooltips.ts | 1 + .../bulletChart/bulletChartColoring.ts | 1 + .../tests/sankeyChartColoring.test.ts | 1 + .../tests/sankeyChartOptions.test.ts | 1 + .../tests/sankeyChartTooltip.test.ts | 1 + .../waterfallChart/waterfallChartOptions.ts | 1 + libs/sdk-ui-dashboard/package.json | 2 +- .../dashboard/dashboardFilterContext.ts | 1 + .../dashboard/flexibleLayout/builder/item.ts | 1 + .../flexibleLayout/builder/layout.ts | 1 + .../flexibleLayout/builder/section.ts | 1 + .../flexibleLayout/builder/tests/item.test.ts | 1 + .../builder/tests/layout.test.ts | 1 + .../builder/tests/section.test.ts | 1 + .../dashboard/flexibleLayout/facade/item.ts | 1 + .../dashboard/flexibleLayout/facade/items.ts | 1 + .../dashboard/flexibleLayout/facade/layout.ts | 1 + .../flexibleLayout/facade/section.ts | 1 + .../flexibleLayout/facade/sections.ts | 1 + .../flexibleLayout/layoutConfiguration.ts | 1 + .../tests/dashboardFilterContext.test.ts | 1 + .../tests/dateFilterOptionMapping.test.ts | 1 + .../dateFilterConfig/tests/merge.test.ts | 1 + .../dateFilterConfig/tests/validation.test.ts | 1 + .../src/_staging/layout/sizing.ts | 1 + .../_staging/layout/test/coordinates.test.ts | 1 + .../_staging/sharedHooks/useFiltersNamings.ts | 1 + .../containerSwitcherSlideTransformer.ts | 1 + .../_staging/slideshow/layoutTransformer.ts | 1 + .../src/kdaDialog/KdaDialog.tsx | 1 + .../components/KdaSummaryDrivers.tsx | 1 + .../components/KdaSummaryHeadline.tsx | 1 + .../kdaDialog/composition/AddFilterButton.tsx | 1 + .../src/kdaDialog/composition/FiltersBar.tsx | 1 + .../composition/KeyDriversOverview.tsx | 1 + .../src/kdaDialog/dialog/KdaDialog.tsx | 1 + .../kdaDialog/dialog/KdaDialogController.tsx | 1 + .../dialog/KdaDialogFloatingStatusBar.tsx | 1 + .../dialog/hooks/useChangeAnalysis.ts | 1 + .../src/kdaDialog/hooks/useDriversList.ts | 1 + .../src/kdaDialog/hooks/useRelevantFilters.ts | 3 +- .../src/kdaDialog/hooks/useSummaryDrivers.ts | 1 + .../src/kdaDialog/providers/Kda.tsx | 1 + .../common/validateDrillToCustomUrlParams.ts | 1 + .../dashboard/changeSharingHandler.ts | 1 + .../dashboard/common/loadAutomationsData.ts | 1 + .../dashboard/common/stateInitializers.ts | 1 + .../dashboardSummaryWorkflowWorker.ts | 1 + .../dashboard/deleteDashboardHandler.ts | 1 + .../initializeDashboardHandler/index.ts | 1 + .../mergeDateFilterConfigs.ts | 1 + .../resolveDashboardConfig.ts | 1 + .../dashboard/resetDashboardHandler.ts | 1 + .../dashboard/saveAsDashboardHandler.ts | 1 + .../drill/crossFilteringHandler.ts | 1 + .../commandHandlers/drill/drillDownHandler.ts | 1 + .../drill/drillToAttributeUrlHandler.ts | 1 + .../drill/drillToCustomUrlHandler.ts | 1 + .../drill/drillToDashboardHandler.ts | 1 + .../drill/drillToInsightHandler.ts | 1 + .../drill/drillToInsightUtils.ts | 1 + .../drill/getDrillToUrlFilters.ts | 1 + .../drill/keyDriverAnalysisHandler.ts | 1 + .../drill/resolveDrillToAttributeUrl.ts | 1 + .../drill/resolveDrillToCustomUrl.ts | 1 + .../addAttributeFilterHandler.ts | 1 + .../addTextAttributeFilterHandler.ts | 1 + .../changeAttributeDisplayFormHandler.ts | 1 + ...laceAttributeFilterItemSelectionHandler.ts | 1 + .../setAttributeFilterParentHandler.ts | 1 + .../changeFilterContextSelectionHandler.ts | 1 + .../dateFilter/addDateFilterHandler.ts | 1 + .../filterContext/filterViewHandler.ts | 1 + .../src/model/commandHandlers/index.ts | 1 + .../layout/addLayoutSectionHandler.ts | 1 + .../layout/addSectionItemsHandler.ts | 1 + .../changeLayoutSectionHeaderHandler.ts | 1 + .../layout/moveLayoutSectionHandler.ts | 1 + .../layout/moveSectionItemHandler.ts | 1 + .../moveSectionItemToNewSectionHandler.ts | 1 + .../layout/removeLayoutSectionHandler.ts | 1 + .../removeSectionItemByWidgetRefHandler.ts | 1 + .../layout/removeSectionItemHandler.ts | 1 + .../layout/replaceSectionItemHandler.ts | 1 + .../layout/resizeHeightHandler.ts | 1 + .../layout/resizeWidthHandler.ts | 1 + .../layout/rowContainerSanitization.ts | 1 + .../layout/toggleLayoutDirectionHandler.ts | 1 + .../layout/validation/itemValidation.ts | 1 + .../commandHandlers/render/renderingWorker.ts | 1 + .../createScheduledEmailHandler.ts | 1 + .../initializeAutomationsHandler.ts | 1 + .../refreshAutomationsHandlers.ts | 1 + .../saveScheduledEmailHandler.ts | 1 + .../convertDashboardTabFromDefaultHandler.ts | 1 + .../tabs/createDashboardTabHandler.ts | 1 + .../tabs/deleteDashboardTabHandler.ts | 1 + .../tabs/startRenamingDashboardTabHandler.ts | 1 + .../users/loadAllUsersHandler.ts | 1 + .../addDrillDownForInsightWidgetHandler.ts | 1 + ...addVisualizationToSwitcherWidgetHandler.ts | 1 + .../changeInsightWidgetDescriptionHandler.ts | 1 + ...hangeInsightWidgetFilterSettingsHandler.ts | 1 + .../changeInsightWidgetHeaderHandler.ts | 1 + ...nsightWidgetIgnoreCrossFilteringHandler.ts | 1 + .../changeInsightWidgetInsightHandler.ts | 1 + ...ngeInsightWidgetVisConfigurationHandler.ts | 1 + ...changeInsightWidgetVisPropertiesHandler.ts | 1 + .../changeKpiWidgetComparisonHandler.ts | 1 + .../changeKpiWidgetConfigurationHandler.ts | 1 + .../changeKpiWidgetDescriptionHandler.ts | 1 + .../changeKpiWidgetFilterSettingsHandler.ts | 1 + .../widgets/changeKpiWidgetHeaderHandler.ts | 1 + .../widgets/changeKpiWidgetMeasureHandler.ts | 1 + .../changeRichTextWidgetContentHandler.ts | 1 + ...angeRichTextWidgetFilterSettingsHandler.ts | 1 + .../modifyDrillDownForInsightWidgetHandler.ts | 1 + .../modifyDrillsForInsightWidgetHandler.ts | 1 + .../widgets/refreshInsightWidgetHandler.ts | 1 + .../removeDrillDownForInsightWidgetHandler.ts | 1 + .../widgets/removeDrillForKpiWidgetHandler.ts | 1 + ...removeDrillToUrlForInsightWidgetHandler.ts | 1 + .../removeDrillsForInsightWidgetHandler.ts | 1 + .../widgets/setDrillForKpiWidgetHandler.ts | 1 + ...VisualizationsFromSwitcherWidgetHandler.ts | 1 + .../insightDrillDefinitionValidation.ts | 1 + .../widgets/validation/kpiDrillValidation.ts | 1 + .../removeDrillsSelectorValidation.ts | 1 + .../src/model/commands/dashboard.ts | 1 + .../src/model/commands/density.ts | 1 + .../src/model/commands/drill.ts | 1 + .../src/model/commands/events.ts | 1 + .../src/model/commands/executionResults.ts | 1 + .../src/model/commands/filters.ts | 1 + .../src/model/commands/insight.ts | 1 + .../src/model/commands/kpi.ts | 1 + .../src/model/commands/layout.ts | 1 + .../src/model/commands/renderMode.ts | 1 + .../src/model/commands/richText.ts | 1 + .../drillToSameDashboardHandlerFactory.ts | 1 + .../src/model/events/alerts.ts | 1 + .../src/model/events/dashboard.ts | 1 + .../src/model/events/drill.ts | 1 + .../src/model/events/drillTargets.ts | 1 + .../src/model/events/filters.ts | 1 + .../src/model/events/general.ts | 1 + .../src/model/events/insight.ts | 1 + libs/sdk-ui-dashboard/src/model/events/kpi.ts | 1 + .../src/model/events/layout.ts | 1 + .../src/model/events/render.ts | 1 + .../src/model/events/renderMode.ts | 1 + .../src/model/events/richText.ts | 1 + .../src/model/events/scheduledEmail.ts | 1 + .../src/model/events/showWidgetAsTable.ts | 1 + .../sdk-ui-dashboard/src/model/events/tabs.ts | 1 + .../src/model/events/visualizationSwitcher.ts | 1 + .../src/model/queries/insights.ts | 1 + .../queryServices/queryInsightDateDatasets.ts | 1 + .../queryServices/queryMeasureDateDatasets.ts | 1 + .../model/react/DashboardStoreProvider.tsx | 1 + .../useDashboardScheduledExportFilters.ts | 1 + .../filtering/useScheduledExportFilters.ts | 1 + .../react/filtering/useWidgetAlertFilters.ts | 1 + .../useWidgetScheduledExportFilters.ts | 1 + .../useDashboardScheduledEmails.ts | 1 + .../useDashboardScheduledEmailsDialog.ts | 1 + ...ashboardScheduledEmailsManagementDialog.ts | 1 + .../useDashboardAlerts.tsx | 1 + .../useDashboardAlertsDialog.ts | 1 + .../useDashboardAlertsManagementDialog.ts | 1 + .../src/model/react/useDashboardAlertsOld.ts | 1 + .../model/react/useDashboardAsyncRender.ts | 1 + .../src/model/react/useDashboardCommand.ts | 1 + .../react/useDashboardCommandProcessing.ts | 1 + .../model/react/useDashboardEventDispatch.ts | 1 + .../react/useDashboardQueryProcessing.ts | 1 + .../react/useDashboardUserInteraction.ts | 1 + .../react/useDispatchDashboardCommand.ts | 1 + .../src/model/react/useExportTemplates.ts | 1 + .../react/useInitializeDashboardStore.ts | 1 + .../model/react/useWidgetExecutionsHandler.ts | 1 + .../src/model/react/useWidgetFilters.ts | 1 + .../src/model/react/useWidgetSelection.tsx | 1 + .../src/model/react/useWorkspaceUsers.ts | 1 + .../model/store/_infra/dispatchAndWaitFor.ts | 1 + .../src/model/store/_infra/queryAndWaitFor.ts | 1 + .../src/model/store/_infra/queryCall.ts | 1 + .../src/model/store/_infra/queryProcessing.ts | 1 + .../model/store/_infra/rootCommandHandler.ts | 1 + .../accessibleDashboardsSelectors.ts | 1 + .../model/store/catalog/catalogSelectors.ts | 1 + .../catalog/tests/catalogReducers.test.ts | 1 + .../catalog/tests/catalogSelectors.test.ts | 1 + .../src/model/store/config/configReducers.ts | 1 + .../src/model/store/dashboardStore.ts | 1 + .../dashboardSummaryWorkflowSelectors.ts | 1 + .../src/model/store/drill/drillSelectors.ts | 1 + .../drillTargets/drillTargetsEntityAdapter.ts | 1 + .../drillTargets/drillTargetsSelectors.ts | 1 + .../entitlements/entitlementsReducers.ts | 1 + .../model/store/executed/executedSelectors.ts | 1 + .../executionResultsSelectors.ts | 1 + .../inaccessibleDashboardsSelectors.ts | 1 + .../model/store/insights/insightsSelectors.ts | 1 + .../listedDashboardsSelectors.ts | 1 + .../listedDashboardsSummarySelectors.ts | 1 + .../model/store/loading/loadingSelectors.ts | 1 + .../src/model/store/meta/metaSelectors.ts | 1 + .../store/parameters/parametersSelectors.ts | 1 + .../store/renderMode/renderModeReducers.ts | 1 + .../src/model/store/saving/savingSelectors.ts | 1 + .../DashboardStoreAccessorRepository.ts | 1 + .../SingleDashboardStoreAccessor.ts | 1 + .../dateFilterConfigReducers.ts | 1 + .../filterContext/filterContextReducers.ts | 1 + .../filterContext/filterContextSelectors.ts | 1 + .../tabs/filterContext/filterContextUtils.ts | 1 + .../model/store/tabs/layout/layoutReducers.ts | 1 + .../store/tabs/layout/layoutSelectors.ts | 1 + .../src/model/store/tabs/tabsSelectors.ts | 1 + .../sdk-ui-dashboard/src/model/store/types.ts | 1 + .../src/model/store/ui/uiReducers.ts | 1 + .../src/model/store/ui/uiSelectors.ts | 1 + .../tests/widgetDrillSelectors.test.ts | 1 + .../model/tests/fixtures/Layout.fixtures.ts | 1 + .../fixtures/SimpleDashboard.fixtures.ts | 1 + .../src/model/types/commonTypes.ts | 1 + .../src/model/utils/filterResolver.ts | 1 + .../attributeFiltersCustomizer.ts | 1 + .../customizationApis/customizationBuilder.ts | 1 + .../customizationApis/customizationLogging.ts | 1 + .../dashboardContentCustomizer.ts | 1 + .../dateFiltersCustomizer.ts | 1 + .../exportLayoutCustomizer.tsx | 1 + .../customizationApis/filterBarCustomizer.tsx | 1 + .../filterGroupsCustomizer.ts | 1 + .../customizationApis/filtersCustomizer.ts | 1 + .../fluidLayoutCustomizer.ts | 1 + .../customizationApis/insightCustomizer.tsx | 1 + .../customizationApis/layoutCustomizer.tsx | 1 + .../customizationApis/loadingCustomizer.tsx | 1 + .../measureValueFiltersCustomizer.ts | 1 + .../customizationApis/richTextCustomizer.tsx | 1 + .../tests/attributeFilterCustomizer.test.tsx | 1 + .../tests/dashboardContentCustomizer.test.tsx | 1 + .../tests/filterBarCustomizer.test.tsx | 1 + .../tests/fluidLayoutCustomizer.test.ts | 1 + .../tests/insightCustomizer.test.tsx | 1 + .../tests/layoutCustomizer.test.tsx | 1 + .../tests/loadingCustomizer.test.tsx | 1 + .../measureValueFilterCustomizer.test.tsx | 1 + .../tests/richTextCustommizer.test.tsx | 1 + .../tests/titleCustomizer.test.tsx | 1 + .../tests/topBarCustomizer.test.tsx | 1 + .../vidualisationSwitcherCustomizer.test.tsx | 1 + .../customizationApis/titleCustomizer.tsx | 1 + .../customizationApis/topBarCustomizer.tsx | 1 + .../visualizationSwitcherCustomizer.tsx | 1 + .../customizationApis/widgetCustomizer.tsx | 1 + libs/sdk-ui-dashboard/src/plugins/engine.ts | 1 + libs/sdk-ui-dashboard/src/plugins/plugin.ts | 1 + .../presentation/alerting/AlertingDialog.tsx | 1 + .../alerting/AlertingManagementDialog.tsx | 1 + .../DefaultAlertingDialogNew.tsx | 1 + .../hooks/useEditAlert.ts | 1 + .../hooks/useSaveAlertToBackend.ts | 1 + .../DefaultAlertingDialog/utils/convertors.ts | 1 + .../DefaultAlertingDialog/utils/getters.ts | 1 + .../DefaultAlertingDialog/utils/items.ts | 1 + .../utils/transformation.ts | 1 + ...ltAlertingManagementDialogContentBasic.tsx | 1 + .../DefaultAlertingManagementDialogNew.tsx | 1 + .../DefaultAlertingManagementDialogOld.tsx | 1 + .../components/AlertOld.tsx | 1 + .../components/AutomationAttributeFilter.tsx | 1 + .../components/AutomationDateFilter.tsx | 1 + .../components/AutomationFiltersSelect.tsx | 1 + .../automationFilters/useAutomationFilters.ts | 1 + .../useAutomationFiltersSelect.ts | 1 + .../DefaultCancelEditDialog.tsx | 1 + .../dashboard/DashboardContent.tsx | 1 + .../AlertingDialogProvider.tsx | 1 + .../DashboardHeader/DashboardHeader.tsx | 1 + .../DashboardSidebar/CreationPanel.tsx | 1 + .../DashboardSidebar/DashboardSidebar.tsx | 1 + .../DraggableInsightList.tsx | 1 + .../DraggableInsightListCore.tsx | 1 + .../DashboardSidebar/FloatingToolbar.tsx | 1 + .../DashboardSidebar/InsightPickerPanel.tsx | 1 + .../RenderModeAwareDashboardSidebar.tsx | 1 + .../SidebarConfigurationPanel.tsx | 1 + .../dashboard/components/DashboardInner.tsx | 1 + .../dashboard/components/DashboardLoading.tsx | 1 + .../components/DashboardMainContent.tsx | 1 + .../components/DashboardRenderer.tsx | 1 + .../src/presentation/dashboard/types.ts | 1 + .../DashboardComponentsContext.tsx | 1 + .../DashboardCustomizationsContext.tsx | 1 + .../dashboardContexts/useSlideData.ts | 1 + .../dashboardList/DashboardList.tsx | 1 + .../DashboardSettingsDialog.tsx | 1 + .../DefaultDashboardSettingsDialog.tsx | 1 + .../dashboardSettingsDialog/useDialogData.ts | 1 + .../deleteDialog/DefaultDeleteDialog.tsx | 1 + .../dialogs/ExportCsvDialogProvider.tsx | 1 + .../dialogs/ExportTemplateDialogProvider.tsx | 1 + .../dragAndDrop/DraggableCreatePanelItem.tsx | 1 + .../dragAndDrop/LayoutResizeContext.tsx | 3 +- .../WrapCreatePanelItemWithDrag.tsx | 1 + .../WrapInsightListItemWithDrag.tsx | 1 + .../DashboardLayoutDraggingComponent.tsx | 1 + .../RichTextDraggingComponent.tsx | 1 + ...VisualizationSwitcherDraggingComponent.tsx | 1 + .../dragAndDrop/useFilterDeleteDrop.ts | 1 + .../DrillToUrl/CustomUrlEditor.tsx | 1 + .../DashboardParametersSection.tsx | 1 + .../DisplayFormParam.tsx | 1 + .../IdentifierParametersSection.tsx | 1 + .../InsightParametersSection.tsx | 1 + .../DrillToUrl/CustomUrlSection.tsx | 1 + .../AttributeDisplayFormParameterDetail.tsx | 1 + .../DashboardIdParameterDetail.tsx | 1 + .../InsightIdParameterDetail.tsx | 1 + .../WidgetIdParameterDetail.tsx | 1 + .../drill/DrillSelect/DrillSelectDropdown.tsx | 1 + .../DrillSelectDropdownMenuItem.tsx | 1 + .../drill/DrillSelect/WithDrillSelect.tsx | 1 + .../src/presentation/drill/hooks/useDrills.ts | 1 + .../DefaultDashboardExportVariables.tsx | 1 + .../src/presentation/export/useExportData.ts | 1 + .../AttributeFilterParentFilteringContext.tsx | 1 + .../CreatableAttributeFilter.tsx | 1 + .../DefaultDashboardAttributeFilter.tsx | 1 + ...boardAttributeFilterComponentSetFactory.ts | 1 + .../addAttributeFilter/AttributesDropdown.tsx | 1 + .../AttributeListItemTooltip.tsx | 1 + .../AttributeFilterConfiguration.tsx | 1 + .../ConnectingAttributeDropdown.tsx | 1 + .../useDependentDateFiltersConfiguration.ts | 1 + .../hooks/useParentsConfiguration.ts | 1 + .../limitValues/LimitValuesConfiguration.tsx | 1 + .../dialog/ActionSelectionPage.tsx | 1 + .../dialog/AddLimitingItemDialog.tsx | 1 + .../limitValues/dialog/DateFiltersPage.tsx | 1 + .../limitValues/dialog/LimitingItemsPage.tsx | 1 + .../limitValues/dialog/ParentFiltersPage.tsx | 1 + .../parentFilters/ParentFiltersList.tsx | 1 + .../parentFilters/ParentFiltersListItem.tsx | 1 + ...ersListItemWithoutConnectingAttributes.tsx | 1 + .../selectionMode/SelectionMode.tsx | 1 + .../filterBar/attributeFilter/types.ts | 1 + .../configuration/ConfigurationModeSelect.tsx | 1 + .../dateFilter/DefaultDashboardDateFilter.tsx | 1 + .../DateFilterConfigurationBody.tsx | 1 + .../dateFilter/useDateFilterConfig.ts | 1 + .../filterBar/DefaultDashboardFilterGroup.tsx | 1 + .../filterBar/filterBar/DefaultFilterBar.tsx | 1 + .../filterBar/DefaultFilterBarContainer.tsx | 1 + .../filterBar/DefaultFilterBarItem.tsx | 1 + .../filterBar/filterBar/FilterBar.tsx | 1 + .../filterBar/RenderModeAwareFilterBar.tsx | 1 + .../filterBar/ResetFiltersButton.tsx | 1 + .../filterBar/filterViews/FilterViews.tsx | 1 + .../filterBar/filterViews/FilterViewsList.tsx | 1 + .../filterBar/hooks/useFilterBarState.ts | 1 + .../DefaultDashboardMeasureValueFilter.tsx | 1 + .../filterBar/tests/utils.test.ts | 1 + .../src/presentation/filterBar/utils.ts | 1 + .../DashboardItemOverlayController.tsx | 1 + .../flexibleLayout/DashboardLayoutWidget.tsx | 1 + .../flexibleLayout/DefaultDashboardLayout.tsx | 1 + .../DashboardLayout.tsx | 1 + .../DashboardLayoutEditSectionHeader.tsx | 1 + ...shboardLayoutEditSectionHeaderRenderer.tsx | 1 + ...boardLayoutExportSectionHeaderRenderer.tsx | 1 + .../DashboardLayoutGridRow.tsx | 1 + .../DashboardLayoutGridRowEdit.tsx | 1 + .../DashboardLayoutItem.tsx | 1 + .../DashboardLayoutItemRenderer.tsx | 1 + .../DashboardLayoutItemViewRenderer.tsx | 1 + .../DashboardLayoutSection.tsx | 1 + .../DashboardLayoutSectionHeaderRenderer.tsx | 1 + ...shboardLayoutViewSectionHeaderRenderer.tsx | 1 + .../DashboardLayoutWidgetRenderer.tsx | 1 + ...EditableDashboardLayoutSectionRenderer.tsx | 1 + .../EditableHeader/SectionHeaderEditable.tsx | 1 + ...portableDashboardLayoutSectionRenderer.tsx | 1 + .../GridLayoutElement.tsx | 1 + ...reDashboardLayoutSectionHeaderRenderer.tsx | 1 + ...odeAwareDashboardLayoutSectionRenderer.tsx | 1 + .../DefaultDashboardLayoutUtils.ts | 1 + .../DefaultFlexibleDashboardLayout.tsx | 1 + .../flexibleLayout/EmptyDashboardLayout.ts | 1 + .../EmptyDashboardNestedLayout.ts | 1 + .../ExportEmptyDashboardError.tsx | 1 + .../flexibleLayout/dragAndDrop/DragLayer.tsx | 1 + .../HeightResizerDragPreview.tsx | 1 + .../WidthResizerDragPreview.tsx | 1 + .../Resize/HeightResizerHotspot.tsx | 1 + .../Resize/WidthResizerHotspot.tsx | 1 + .../DashboardLayoutSectionBorderLine.tsx | 1 + .../EmptyDashboardDropZone.tsx | 1 + .../EmptyNestedLayoutDropZone.tsx | 1 + .../dragAndDrop/draggableWidget/Hotspot.tsx | 1 + .../draggableWidget/RowEndHotspot.tsx | 1 + .../draggableWidget/SectionHotspot.tsx | 1 + .../draggableWidget/WidgetDropZone.tsx | 1 + .../draggableWidget/WidgetDropZoneColumn.tsx | 1 + ...seDashboardLayoutPlaceholderDropHandler.ts | 1 + .../useEmptyContentHandlers.ts | 1 + .../useInsightListItemDropHandler.ts | 1 + .../useInsightPlaceholderDropHandler.ts | 1 + ...onDashboardLayoutPlaceholderDropHandler.ts | 1 + ...useNewSectionInsightListItemDropHandler.ts | 1 + ...NewSectionInsightPlaceholderDropHandler.ts | 1 + ...ewSectionRichTextPlaceholderDropHandler.ts | 1 + ...alizationSwitcherPlaceholderDropHandler.ts | 1 + .../useRichTextPlaceholderDropHandler.ts | 1 + ...alizationSwitcherPlaceholderDropHandler.ts | 1 + .../DashboardEditLayout.tsx | 1 + .../DashboardEditLayoutItemRenderer.tsx | 1 + .../DashboardEditLayoutMocks.ts | 1 + .../DashboardEditLayoutRowRenderer.tsx | 1 + ...shboardEditLayoutSectionHeaderRenderer.tsx | 1 + .../DashboardEditLayoutSectionRenderer.tsx | 1 + .../DashboardEditLayoutWidget.tsx | 1 + .../DashboardEditLayoutWidgetRenderer.tsx | 1 + .../presentation/insightList/InsightList.tsx | 1 + .../DefaultKpiDeleteDialog.tsx | 1 + .../DashboardItems/DashboardItemHeadline.tsx | 1 + .../saveAs/DefaultSaveAsDialog/index.tsx | 1 + .../src/presentation/saveAs/SaveAsDialog.tsx | 1 + .../DefaultScheduledEmailDialog.tsx | 1 + .../Attachments/DashboardAttachments.tsx | 1 + .../Attachments/WidgetAttachments.tsx | 1 + .../AttachmentsOld/AttachmentFilters.tsx | 1 + .../AttachmentsOld/DashboardAttachments.tsx | 1 + .../AttachmentsOld/WidgetAttachments.tsx | 1 + .../RecipientsSelect/RecipientsSelect.tsx | 1 + .../hooks/useEditScheduledEmail.ts | 1 + .../hooks/useSaveScheduledEmailToBackend.ts | 1 + .../DefaultScheduledEmailManagementDialog.tsx | 1 + ...duledEmailManagementDialogContentBasic.tsx | 1 + .../scheduledEmail/ScheduledEmailDialog.tsx | 1 + .../ScheduledEmailManagementDialog.tsx | 1 + .../shareDialog/DefaultShareDialog.tsx | 1 + .../presentation/shareDialog/ShareDialog.tsx | 1 + .../src/presentation/toolbar/Toolbar.tsx | 1 + .../topBar/buttonBar/ButtonBar.tsx | 1 + .../cancelButton/DefaultCancelButton.tsx | 1 + .../button/editButton/DefaultEditButton.tsx | 1 + .../saveAsButton/DefaultSaveAsNewButton.tsx | 1 + .../button/saveButton/DefaultSaveButton.tsx | 1 + .../button/saveButton/SaveButton.tsx | 1 + .../settingButton/DefaultSettingButton.tsx | 1 + .../button/settingButton/SettingButton.tsx | 1 + .../button/shareButton/DefaultShareButton.tsx | 1 + .../topBar/menuButton/DefaultMenuButton.tsx | 1 + .../topBar/menuButton/MenuButton.tsx | 1 + .../topBar/menuButton/useDefaultMenuItems.tsx | 1 + .../lockedStatus/DefaultLockedStatus.tsx | 1 + .../lockedStatus/LockedStatusIndicator.tsx | 1 + .../shareStatus/DefaultShareStatus.tsx | 1 + .../topBar/title/EditableTitle.tsx | 1 + .../topBar/title/RenderModeAwareTitle.tsx | 1 + .../src/presentation/topBar/title/Title.tsx | 1 + .../topBar/topBar/DefaultTopBar.tsx | 1 + .../topBar/topBar/RenderModeAwareTopBar.tsx | 1 + .../src/presentation/topBar/topBar/TopBar.tsx | 1 + .../AttributeFilterConfiguration.tsx | 1 + .../AttributeFilterConfigurationItem.tsx | 1 + .../configuration/DateDatasetFilter.tsx | 1 + .../configuration/DateFilterCheckbox.tsx | 1 + .../DateFilterConfigurationItem.tsx | 1 + .../configuration/FilterConfiguration.tsx | 1 + .../widget/common/useInsightExport.ts | 1 + .../dashboardLayout/DashboardLayout.tsx | 1 + .../dashboardLayout/DefaultDashboardLayout.ts | 1 + ...aultDashboardLayoutComponentSetFactory.tsx | 1 + .../ExportModeInsightWidgetDescription.tsx | 1 + .../InsightWidgetDescriptionTrigger.tsx | 1 + .../useInsightWidgetDescription.ts | 1 + .../widget/insight/DashboardInsight.tsx | 1 + .../insight/DefaultDashboardInsight.tsx | 1 + .../widget/insight/InsightBody.tsx | 1 + .../DashboardInsightWithDrillDialog.tsx | 1 + .../Insight/DashboardInsight.tsx | 1 + .../DashboardInsightWithDrillSelect.tsx | 1 + .../InsightDrillDialog/DrillDialog.tsx | 1 + .../DrillDialogExportDropdownResolver.tsx | 1 + .../InsightDrillDialog/DrillDialogInsight.tsx | 1 + .../InsightDrillDialog/InsightDrillDialog.tsx | 1 + .../ViewModeDashboardInsight.tsx | 1 + .../DrillFilters/DrillFiltersConfig.tsx | 1 + .../DrillFilters/DrillFiltersConfigInner.tsx | 1 + .../DrillFilters/drillFiltersConfigUtils.ts | 1 + .../DrillFilters/useDrillFiltersConfig.ts | 1 + .../useDrillFiltersConfigInner.ts | 1 + .../DrillFilters/useDrillFiltersCount.ts | 1 + .../useFetchTargetDashboardFilters.ts | 1 + .../DrillIntersectionIgnoredAttributes.tsx | 1 + .../DrillOriginSelector.tsx | 1 + .../DrillOriginSelectorBody.tsx | 1 + .../DrillTargetType/DrillTargetType.tsx | 1 + .../AttributeHierarchyDropdown.tsx | 1 + .../DrillTargets/AttributeHierarchyList.tsx | 1 + .../DrillTargetAttributeHierarchyItem.tsx | 1 + .../DrillTargets/DrillTargetDashboardItem.tsx | 1 + .../DrillTargets/DrillTargetInsightItem.tsx | 1 + .../DrillTargets/DrillTargetUrlItem.tsx | 1 + .../DrillTargets/DrillTargets.tsx | 1 + .../InsightAlertConfig/CreateAlert.tsx | 1 + .../InsightAlertConfig/EditAlert.tsx | 1 + .../insight/configuration/InsightAlerts.tsx | 1 + .../configuration/InsightAlertsNew.tsx | 1 + .../configuration/InsightAlertsOld.tsx | 1 + .../configuration/InsightConfiguration.tsx | 1 + .../InsightDescriptionConfig.tsx | 1 + .../configuration/InsightDrillConfigItem.tsx | 1 + .../configuration/InsightDrillConfigList.tsx | 1 + .../InsightDrillConfigPanel.tsx | 1 + .../tests/drillConfigMapper.test.ts | 1 + .../useInsightDrillConfigPanel.ts | 1 + .../insight/configuration/InsightFilters.tsx | 1 + .../configuration/InsightInteractions.tsx | 1 + .../src/presentation/widget/insight/types.ts | 1 + .../insightMenu/DashboardInsightMenu.tsx | 1 + .../DashboardInsightMenuButton.tsx | 1 + .../insightMenu/DashboardInsightMenuTitle.tsx | 1 + .../CustomUiMenuComponents.tsx | 1 + .../DashboardInsightMenu/index.tsx | 1 + .../DefaultDashboardInsightMenu.tsx | 3 +- .../DefaultDashboardInsightMenuButton.tsx | 1 + .../getDefaultInsightMenuItems.tsx | 1 + .../getExportTooltips.ts | 1 + .../widget/richText/DashboardRichText.tsx | 1 + .../richText/DefaultDashboardRichText.ts | 1 + ...ltDashboardRichTextComponentSetFactory.tsx | 1 + .../richText/EditModeDashboardRichText.tsx | 1 + .../richText/ExportModeDashboardRichText.tsx | 1 + .../richText/ViewModeDashboardRichText.tsx | 1 + .../configuration/RichTextConfiguration.tsx | 1 + .../configuration/RichTextFilters.tsx | 1 + .../DashboardRichTextMenuTitle.tsx | 1 + .../DashboardRichTextMenu/index.tsx | 1 + .../DefaultDashboardRichTextMenu.tsx | 3 +- .../DefaultShowAsTableButton.tsx | 1 + .../showAsTableButton/ShowAsTableButton.tsx | 1 + .../DashboardVisualizationSwitcher.tsx | 1 + .../DefaultDashboardVisualizationSwitcher.ts | 1 + ...sualizationSwitcherComponentSetFactory.tsx | 1 + ...EditModeDashboardVisualizationSwitcher.tsx | 1 + ...ViewModeDashboardVisualizationSwitcher.tsx | 1 + .../configuration/Toolbar.tsx | 1 + .../configuration/VisualizationConfig.tsx | 1 + .../VisualizationsList/VisualizationsList.tsx | 1 + .../configuration/VisualizationsPage.tsx | 1 + .../EditableDashboardNestedLayoutWidget.tsx | 1 + ...erModeAwareDashboardNestedLayoutWidget.tsx | 1 + .../DashboardNestedLayoutWidget/Toolbar.tsx | 1 + .../widget/widget/DashboardWidget.tsx | 1 + .../widget/widget/DefaultDashboardWidget.tsx | 1 + .../DashboardWidgetInsightGuard.tsx | 1 + .../DefaultDashboardInsightWidget.tsx | 1 + .../EditableDashboardInsightWidget.tsx | 1 + .../ExportableDashboardInsightWidget.tsx | 1 + .../RenderModeAwareDashboardInsightWidget.ts | 1 + .../DefaultDashboardRichTextWidget.tsx | 1 + .../EditableDashboardRichTextWidget.tsx | 1 + .../ExportableDashboardRichTextWidget.tsx | 1 + ...RenderModeAwareDashboardRichTextWidget.tsx | 1 + ...ltDashboardVisualizationSwitcherWidget.tsx | 1 + ...leDashboardVisualizationSwitcherWidget.tsx | 1 + ...leDashboardVisualizationSwitcherWidget.tsx | 1 + ...reDashboardVisualizationSwitcherWidget.tsx | 1 + .../DefaultWidgetDeleteDialog.tsx | 1 + libs/sdk-ui-ext/package.json | 2 +- .../src/automations/Automations.tsx | 1 + .../automations/columns/AutomationIcon.tsx | 1 + .../columns/useAutomationColumns.tsx | 1 + .../filters/useAutomationFilters.ts | 1 + .../test/InsightDataLoader.test.ts | 1 + .../src/insightPicker/InsightPicker.tsx | 1 + .../src/insightPicker/InsightPickerCore.tsx | 1 + .../src/insightView/InsightView.tsx | 1 + .../internal/components/BaseVisualization.tsx | 1 + .../components/VisualizationCatalog.ts | 1 + .../tests/utils.test.ts | 1 + .../BasemapDropdownControl.tsx | 1 + .../configurationControls/CellsControl.tsx | 1 + .../ColumnHeadersPositionControl.tsx | 1 + .../DataLabelsControl.tsx | 1 + .../DataPointsControl.tsx | 1 + .../GeoViewportControl.tsx | 1 + .../GrandTotalsControl.tsx | 1 + .../configurationControls/ImageControl.tsx | 1 + .../MetricsPositionControl.tsx | 1 + .../OrientationDropdownControl.tsx | 1 + .../configurationControls/PagingSection.tsx | 1 + .../PushpinShapeControl.tsx | 1 + .../PushpinSizeControl.tsx | 1 + .../RowHeightControl.tsx | 1 + .../TextWrappingControl.tsx | 1 + .../VerticalAlignControl.tsx | 1 + .../advanced/AdvancedSection.tsx | 1 + .../advanced/ConfigEditor.tsx | 1 + .../anomalies/AnomaliesSection.tsx | 1 + .../axis/LabelSubsection.tsx | 1 + .../axis/NameSubsection.tsx | 1 + .../colors/ColorsSection.tsx | 1 + .../colors/coloredItemsList/ColoredItem.tsx | 1 + .../coloredItemsList/ColoredItemsList.tsx | 1 + .../tests/ColoredItemsList.test.tsx | 1 + .../comparison/ComparisonSection.tsx | 1 + .../calculation/CalculationControl.tsx | 1 + .../calculation/CalculationListItem.tsx | 1 + .../indicators/IndicatorSubSection.tsx | 1 + .../colorsControl/ColorsControl.tsx | 1 + .../comparison/values/ValueSubSection.tsx | 1 + .../numberFormat/NumberFormatControl.tsx | 1 + .../forecast/ForecastSection.tsx | 1 + .../legend/GeoLegendSection.tsx | 1 + .../legend/LegendSection.tsx | 1 + .../BarChartConfigurationPanel.tsx | 1 + .../BaseChartConfigurationPanel.tsx | 1 + .../BubbleChartConfigurationPanel.tsx | 1 + .../BulletChartConfigurationPanel.tsx | 1 + .../ConfigurationPanelContent.tsx | 1 + .../FunnelChartConfigurationPanel.tsx | 1 + .../GeoAreaConfigurationPanel.tsx | 1 + .../GeoPushpinConfigurationPanel.tsx | 1 + .../HeadlineConfigurationPanel.tsx | 1 + .../HeatMapConfigurationPanel.tsx | 1 + .../LineChartBasedConfigurationPanel.tsx | 1 + .../PieChartConfigurationPanel.tsx | 1 + .../PivotTableConfigurationPanel.tsx | 1 + .../PyramidChartConfigurationPanel.tsx | 1 + .../RepeaterConfigurationPanel.tsx | 1 + .../SankeyChartConfigurationPanel.tsx | 1 + .../ScatterPlotConfigurationPanel.tsx | 1 + .../TreeMapConfigurationPanel.tsx | 1 + .../UnsupportedConfigurationPanel.tsx | 1 + .../WaterfallChartConfigurationPanel.tsx | 1 + .../DataSources/AddDataSource.tsx | 1 + .../DataSources/AddDataSourceSelect.tsx | 1 + .../DataSources/DataSourceItem.tsx | 1 + .../DataSources/DataSourceList.tsx | 1 + .../DataSources/PermissionsDropdown.tsx | 1 + .../DataSources/PermissionsDropdownItem.tsx | 1 + .../DataSources/PermissionsDropdownList.tsx | 1 + .../Details/EditUserDetails.tsx | 1 + .../Details/EditUserGroupDetails.tsx | 1 + .../Details/UserDetailsView.tsx | 1 + .../Details/UserGroupDetailsView.tsx | 1 + .../UserGroups/AddUserGroup.tsx | 1 + .../UserGroups/AddUserGroupContent.tsx | 1 + .../UserGroups/AddUserGroupSelect.tsx | 1 + .../UserGroups/UserGroupsList.tsx | 1 + .../userManagementDialogs/Users/AddUser.tsx | 1 + .../Users/AddUserContent.tsx | 1 + .../Users/AddUserSelect.tsx | 1 + .../userManagementDialogs/Users/UsersList.tsx | 1 + .../Workspace/AddSingleWorkspaceSelect.tsx | 1 + .../Workspace/AddWorkspace.tsx | 1 + .../Workspace/AddWorkspaceSelect.tsx | 1 + .../WorkspaceItem/GranularPermissions.tsx | 1 + .../GranularPermissionsItems.tsx | 1 + .../GranularPermissionsWorkspaceItem.tsx | 1 + .../HierarchicalPermissionsDropdown.tsx | 1 + .../WorkspaceItem/PermissionDropdownItem.tsx | 1 + .../WorkspaceItem/PermissionsDropdown.tsx | 1 + .../WorkspaceItem/PermissionsDropdownList.tsx | 1 + .../Workspace/WorkspaceItem/WorkspaceItem.tsx | 1 + .../WorkspaceItem/granularPermissionUtils.ts | 1 + .../Workspace/WorkspaceList.tsx | 1 + .../BigChartDescriptor.ts | 1 + .../PluggableColumnBarCharts.tsx | 1 + .../PluggableUnknownChart.tsx | 1 + .../UnknownVisualizationDescriptor.ts | 1 + .../areaChart/AreaChartDescriptor.ts | 1 + .../tests/PluggableAreaChart.test.tsx | 1 + .../barChart/BarChartDescriptor.ts | 1 + .../barChart/PluggableBarChart.tsx | 1 + .../tests/PluggableBaseChart.test.tsx | 1 + .../bubbleChart/BubbleChartDescriptor.ts | 1 + .../bulletChart/BulletChartDescriptor.ts | 1 + .../bulletChart/PluggableBulletChart.tsx | 1 + .../tests/PluggableBulletChart.test.tsx | 1 + .../columnChart/ColumnChartDescriptor.ts | 1 + .../comboChart/ComboChartDescriptor.ts | 1 + .../ComboChartDescriptorDeprecated.ts | 1 + .../DependencyWheelChartDescriptor.tsx | 1 + .../donutChart/DonutChartDescriptor.ts | 1 + .../funnelChart/FunnelChartDescriptor.ts | 1 + .../geoAreaChart/GeoAreaChartDescriptor.ts | 1 + .../geoAreaChart/PluggableGeoAreaChart.tsx | 1 + .../geoChart/GeoPushpinChartDescriptor.ts | 1 + .../GeoPushpinChartNextDescriptor.ts | 1 + .../PluggableGeoPushpinChartNext.tsx | 1 + .../geoChartNext/geoConfigBuilder.test.ts | 1 + .../geoChartNext/geoVirtualBucketFactory.ts | 1 + .../headline/HeadlineDescriptor.ts | 1 + .../headline/PluggableHeadline.tsx | 1 + .../heatMap/HeatmapDescriptor.ts | 1 + .../heatMap/tests/PluggableHeatmap.test.tsx | 1 + .../lineChart/LineChartDescriptor.ts | 1 + .../pieChart/PieChartDescriptor.ts | 1 + .../pivotTable/PivotTableDescriptor.ts | 1 + .../pivotTable/PluggablePivotTable.tsx | 1 + .../pivotTable/pivotTableConfigFromInsight.ts | 1 + .../tests/PluggablePivotTable.test.tsx | 1 + .../pivotTable/tests/sortItemsHelpers.test.ts | 1 + .../pivotTable/tests/widthItemHelpers.test.ts | 1 + .../PivotTableNextDescriptor.ts | 1 + .../PluggablePivotTableNext.tsx | 1 + .../pyramidChart/PyramidChartDescriptor.ts | 1 + .../repeater/RepeaterDescriptor.ts | 1 + .../sankeyChart/SankeyChartDescriptor.tsx | 1 + .../scatterPlot/PluggableScatterPlot.tsx | 1 + .../scatterPlot/ScatterPlotDescriptor.ts | 1 + .../AbstractPluggableVisualization.test.tsx | 1 + .../tests/PluggableColumnBarCharts.test.tsx | 1 + .../tests/drillDownUtil.test.ts | 1 + .../treeMap/TreemapDescriptor.ts | 1 + .../treeMap/tests/PluggableTreemap.test.tsx | 1 + .../WaterfallChartDescriptor.ts | 1 + .../xirr/PluggableXirr.tsx | 1 + .../xirr/XirrDescriptor.ts | 1 + .../internal/constants/supportedProperties.ts | 1 + .../src/internal/constants/uiConfig.ts | 1 + .../src/internal/utils/bucketConfig.ts | 1 + .../src/internal/utils/bucketHelper.ts | 1 + .../src/internal/utils/bucketRules.ts | 1 + .../src/internal/utils/controlsHelper.ts | 1 + .../getReactEmbeddingCodeGenerator.ts | 1 + .../insightToPropsConverter/convenience.ts | 1 + .../insightViewCodeGenerator.ts | 1 + .../internal/utils/geoPushpinCompatibility.ts | 1 + .../src/internal/utils/keyDriverAnalysis.ts | 1 + .../src/internal/utils/propertiesHelper.ts | 1 + libs/sdk-ui-ext/src/internal/utils/sort.ts | 1 + .../areaChartUiConfigHelper.ts | 1 + .../lineChartUiConfigHelper.ts | 1 + .../uiConfigHelpers/treemapUiConfigHelper.ts | 1 + .../Notification/DefaultNotification.tsx | 1 + .../DefaultNotificationsList.tsx | 1 + .../DefaultNotificationsPanel.tsx | 1 + .../DefaultNotificationsPanelButton.tsx | 1 + .../NotificationsPanel/NotificationsPanel.tsx | 1 + .../data/useNotifications.tsx | 1 + libs/sdk-ui-filters/package.json | 2 +- .../AttributeFilter/AttributeFilterButton.tsx | 1 + .../AttributeDisplayFormDropdown.tsx | 1 + .../AttributeDisplayFormSelect.tsx | 1 + .../Dropdown/AttributeFilterDropdownBody.tsx | 1 + .../AttributeFilterDropdownHeader.tsx | 1 + .../AttributeFilterDropdownButton.tsx | 1 + .../AttributeFilterElementsSelect.tsx | 1 + .../AttributeFilterElementsSelectItem.tsx | 1 + .../AttributeFilterEmptyFilteredResult.tsx | 1 + ...ctionAttributeFilterElementsSelectItem.tsx | 1 + .../Components/FilterMenu/FilterMenu.tsx | 1 + .../TextFilterBody/TextFilterBody.tsx | 1 + .../useTextFilterBodyValidation.ts | 1 + .../src/AttributeFilter/hooks/types.ts | 1 + .../hooks/useAttributeFilterController.ts | 1 + .../hooks/useAttributeFilterControllerData.ts | 1 + .../hooks/useElementsFilterController.ts | 1 + .../hooks/useTextFilterController.ts | 1 + .../hooks/useTextFilterInnerController.ts | 1 + .../src/AttributeFilter/types.ts | 1 + .../src/AttributeFilter/utils.ts | 1 + .../AttributeFilterHandler/internal/bridge.ts | 1 + .../internal/callbacks.ts | 1 + .../AttributeFilterHandler/internal/loader.ts | 1 + .../internal/multiSelectHandler.ts | 1 + .../internal/redux/elements/elementsSaga.ts | 1 + .../internal/redux/elements/loadElements.ts | 1 + .../redux/elements/loadElementsFromBackend.ts | 1 + .../loadElementsFromStaticElements.ts | 1 + .../internal/redux/init/initSaga.ts | 1 + .../redux/loadAttribute/loadAttributeSaga.ts | 1 + .../loadInitialElementsPageSaga.ts | 1 + .../loadNextElementsPageSaga.ts | 1 + .../redux/selection/selectionReducers.ts | 1 + .../internal/singleSelectHandler.ts | 1 + .../test/loadCustomElements.test.ts | 1 + .../test/loadInitialElementsPage.test.ts | 1 + .../test/loadNextElementsPage.test.ts | 1 + .../AbsoluteDateFilterForm.tsx | 1 + .../AbsoluteDateFilterFormSection.tsx | 1 + .../AllTime/AllTimeFilterSection.tsx | 1 + .../src/DateFilter/DateFilter.tsx | 1 + .../DateFilterBody/DateFilterBody.tsx | 1 + .../DateFilterBody/DateFilterBodyContent.tsx | 1 + .../DateFilterBodyContentFiltered.tsx | 1 + .../DateFilterBody/DateFilterFormContent.tsx | 1 + .../src/DateFilter/DateFilterCore.tsx | 1 + .../DateFilter/DateRangePicker/DateInput.tsx | 1 + .../DateFilter/DateRangePicker/DatePicker.tsx | 1 + .../DateRangePicker/DateRangePicker.tsx | 1 + .../DateRangePicker/EndDateInputField.tsx | 1 + .../DateRangePicker/StartDateInputField.tsx | 1 + .../DateFilter/DateRangePicker/TimeInput.tsx | 1 + .../tests/DateRangePicker.test.tsx | 1 + .../src/DateFilter/DateRangePicker/utils.ts | 1 + .../DynamicSelect/DynamicSelect.tsx | 1 + .../RelativeRangeDynamicSelect.tsx | 1 + .../src/DateFilter/DynamicSelect/utils.ts | 1 + .../RelativeDateFilterForm.tsx | 1 + .../RelativeDateFilterFormSection.tsx | 1 + .../src/DateFilter/constants/config.tsx | 1 + .../src/DateFilter/tests/DateFilter.test.tsx | 1 + .../src/DateFilter/utils/AFMConversions.ts | 1 + .../utils/Translations/DateFilterTitle.ts | 1 + .../tests/DateFilterTitle.test.ts | 1 + .../src/FilterGroup/FilterGroup.tsx | 1 + .../MeasureValueFilterDetailsBubble.tsx | 1 + .../src/MeasureValueFilter/PreviewSection.tsx | 1 + .../tests/MeasureValueFilter.test.tsx | 1 + .../tests/MeasureValueFilterDropdown.test.tsx | 1 + .../AttributeDropdown/AttributeDropdown.tsx | 1 + .../AttributeDropdownBody.tsx | 3 +- .../MeasureDropdown/MeasureDropdown.tsx | 1 + .../MeasureDropdown/MeasureDropdownBody.tsx | 1 + .../OperatorDropdown/OperatorDropdown.tsx | 1 + .../OperatorDropdown/OperatorDropdownBody.tsx | 1 + .../src/RankingFilter/Preview.tsx | 1 + .../ValueDropdown/ValueDropdown.tsx | 1 + .../tests/RankingFilter.test.tsx | 1 + .../tests/RankingFilterDropdown.test.tsx | 1 + libs/sdk-ui-gen-ai/package.json | 2 +- .../components/ConversationDeleteDialog.tsx | 1 + .../src/components/ErrorBoundary.tsx | 1 + .../src/components/GenAIChat.tsx | 1 + .../src/components/GenAIChatConversations.tsx | 1 + .../src/components/GenAIChatDialog.tsx | 1 + .../src/components/GenAIChatHeader.tsx | 1 + .../src/components/GenAIChatWrapper.tsx | 1 + libs/sdk-ui-gen-ai/src/components/Input.tsx | 1 + .../sdk-ui-gen-ai/src/components/Messages.tsx | 1 + .../completion/plugins/rehype-references.ts | 1 + .../completion/plugins/remark-references.ts | 1 + .../src/components/completion/references.ts | 1 + .../components/completion/useCompletion.ts | 1 + .../src/components/messages/AssistantItem.tsx | 1 + .../messages/AssistantItemFeedback.tsx | 1 + .../components/messages/AssistantMessage.tsx | 1 + .../messages/ConversationItemContents.tsx | 1 + .../components/messages/MessageContents.tsx | 1 + .../components/messages/ReasoningMessage.tsx | 1 + .../src/components/messages/ToolItem.tsx | 1 + .../src/components/messages/UserItem.tsx | 1 + .../src/components/messages/UserMessage.tsx | 1 + .../ChangeAnalysisContentsComponent.tsx | 1 + .../messages/contents/ErrorContents.tsx | 1 + .../components/messages/contents/Markdown.tsx | 1 + .../messages/contents/RoutingContents.tsx | 1 + .../messages/contents/SearchContents.tsx | 1 + .../contents/SemanticSearchContents.tsx | 1 + .../messages/contents/TextContents.tsx | 1 + .../contents/VisualizationContents.tsx | 1 + .../contents/VisualizationSaveDialog.tsx | 1 + .../ConversationKdaContent.tsx | 1 + .../ConversationVisualisation.tsx | 1 + .../ConversationVisualizationContent.tsx | 1 + .../ConversationWhatIfContent.tsx | 1 + .../components/messages/useUserFeedback.ts | 1 + .../src/permissions/PermissionsContext.tsx | 1 + .../store/chatWindow/chatWindowSelectors.ts | 1 + .../src/store/messages/messagesSelectors.ts | 1 + .../src/store/sideEffects/index.ts | 1 + .../src/store/sideEffects/onThreadLoad.ts | 1 + .../src/store/sideEffects/onUserFeedback.ts | 1 + .../src/store/sideEffects/onUserMessage.ts | 1 + .../sideEffects/onVisualisationRender.ts | 1 + libs/sdk-ui-geo/package.json | 2 +- .../src/core/geoChart/GeoChartInner.tsx | 1 + .../core/geoChart/GeoChartLegendRenderer.tsx | 1 + .../core/geoChart/GeoChartOptionsWrapper.tsx | 1 + .../src/core/geoChart/GeoChartRenderer.tsx | 1 + .../src/core/geoChart/GeoValidatorHOC.tsx | 1 + .../src/core/geoChart/geoChartColor.ts | 1 + .../src/core/geoChart/geoChartDataLayers.ts | 1 + .../src/core/geoChart/geoChartDataSource.ts | 1 + .../src/core/geoChart/geoChartTooltip.ts | 1 + .../core/geoChart/helpers/geoChart/common.ts | 1 + .../core/geoChart/helpers/geoChart/data.ts | 1 + .../geoChart/helpers/geoChart/drilling.ts | 1 + .../next/components/GeoChartDataLoader.tsx | 1 + .../src/next/components/RenderGeoChart.tsx | 1 + .../GeoChartLegendOverlay.tsx | 1 + .../multiLayerLegend/LegendGroupColor.tsx | 1 + .../LegendGroupColorScale.tsx | 1 + .../multiLayerLegend/LegendGroupSize.tsx | 1 + .../MultiLayerLegendPanel.tsx | 1 + .../MultiLayerLegendSection.tsx | 1 + .../components/multiLayerLegend/groupTitle.ts | 1 + .../src/next/context/GeoDataContext.tsx | 1 + .../src/next/hooks/layers/useLayersData.ts | 1 + .../src/next/hooks/layers/useLayersPrepare.ts | 1 + .../next/hooks/layers/useSyncLayersToMap.ts | 1 + .../src/next/hooks/pushData/useGeoPushData.ts | 1 + .../src/next/layers/area/adapter.ts | 1 + .../sdk-ui-geo/src/next/layers/area/layers.ts | 1 + .../src/next/layers/area/operations.ts | 1 + .../sdk-ui-geo/src/next/layers/area/source.ts | 1 + .../layers/execution/buildLayerExecution.ts | 1 + .../src/next/layers/pushpin/adapter.ts | 1 + .../src/next/layers/pushpin/layers.ts | 1 + .../src/next/layers/pushpin/operations.ts | 1 + .../src/next/layers/pushpin/source.ts | 1 + .../next/layers/registry/adapterRegistry.ts | 1 + .../src/next/layers/registry/output.ts | 1 + .../src/next/map/runtime/mapInitialization.ts | 1 + .../map/styleReconciliation/planBuilder.ts | 1 + .../map/styleReconciliation/reconcileStyle.ts | 1 + .../next/map/viewport/viewportCalculation.ts | 1 + .../src/next/types/config/areaChart.ts | 1 + .../src/next/types/config/pushpinChart.ts | 1 + .../src/next/types/config/unified.ts | 1 + .../src/next/types/geoData/pushpin.ts | 1 + .../sdk-ui-geo/src/next/types/legend/model.ts | 1 + .../sdk-ui-geo/src/next/types/map/provider.ts | 1 + .../src/next/types/props/geoChart/internal.ts | 1 + .../src/next/utils/layerConversion.ts | 1 + .../src/next/utils/legend/aggregateLegend.ts | 1 + .../next/utils/legend/computeAreaLegend.ts | 1 + .../next/utils/legend/computePushpinLegend.ts | 1 + libs/sdk-ui-kit/package.json | 2 +- .../UiAsyncTable/SkeletonItemFactory.tsx | 1 + .../UiAsyncTable/UiAsyncTable.tsx | 1 + .../UiAsyncTable/UiAsyncTableBody.tsx | 1 + .../UiAsyncTable/UiAsyncTableBulkActions.tsx | 1 + .../UiAsyncTable/UiAsyncTableCheckbox.tsx | 1 + .../UiAsyncTable/UiAsyncTableFilter.tsx | 1 + .../UiAsyncTable/UiAsyncTableHeader.tsx | 1 + .../UiAsyncTable/UiAsyncTableRow.tsx | 1 + .../UiAsyncTable/UiAsyncTableToolbar.tsx | 1 + .../UiAsyncTable/WithConditionalAnchor.tsx | 1 + .../useAsyncTableResponsiveColumns.ts | 1 + .../@ui/UiAsyncTable/UiAsyncTable/utils.ts | 1 + .../sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx | 1 + .../src/@ui/UiChip/ChipDeleteButton.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx | 1 + .../src/@ui/UiDropdown/UiDropdown.tsx | 1 + .../UiFloatingElement/UiFloatingElement.tsx | 1 + .../UiFloatingElement/useFloatingPosition.ts | 1 + .../src/@ui/UiFloatingElement/utils.ts | 1 + .../src/@ui/UiFocusManager/UiAutofocus.tsx | 1 + .../src/@ui/UiFocusManager/UiFocusTrap.tsx | 1 + .../UiFocusManager/UiReturnFocusOnUnmount.tsx | 1 + .../@ui/UiFocusManager/UiTabOutHandler.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx | 1 + .../src/@ui/UiIcon/UiIconBackground.tsx | 1 + .../src/@ui/UiListbox/UiListbox.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx | 1 + .../defaults/DefaultUiMenuContent.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx | 1 + libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx | 1 + .../src/@ui/UiTags/hooks/useResponsiveTags.ts | 1 + .../sdk-ui-kit/src/@ui/UiTags/interactions.ts | 1 + .../src/@ui/UiTooltip/UiTooltip.tsx | 1 + .../src/@ui/UiTreeview/UiTreeview.tsx | 1 + libs/sdk-ui-kit/src/Bubble/Bubble.tsx | 1 + libs/sdk-ui-kit/src/Bubble/withBubble.tsx | 1 + .../CatalogItemPicker/CatalogItemPicker.tsx | 1 + .../CatalogItemPickerParts.tsx | 1 + .../CatalogItemPicker/listboxItemBuilders.tsx | 1 + .../useCatalogItemPickerHandlers.ts | 1 + .../src/ChartSorting/ChartSorting.tsx | 1 + .../src/ColorPicker/ColorPicker.tsx | 1 + .../src/DescriptionPanel/DescriptionPanel.tsx | 1 + .../src/Dialog/CommunityEditionDialog.tsx | 1 + libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx | 1 + .../src/Dialog/ConfirmDialogBase.tsx | 1 + libs/sdk-ui-kit/src/Dialog/Dialog.tsx | 1 + libs/sdk-ui-kit/src/Dialog/DialogBase.tsx | 1 + .../src/Dialog/DialogCloseButton.tsx | 1 + .../Dialog/DialogList/DialogListItemBasic.tsx | 1 + .../EmbedInsightDialogBase.tsx | 1 + .../components/CodeOptions.tsx | 1 + .../components/ComponentTypeSelect.tsx | 1 + .../components/EmbedInsightContent.tsx | 1 + .../components/HeightSetting.tsx | 1 + .../components/LocaleSetting.tsx | 1 + .../components/ReactOptions.tsx | 1 + .../components/WebComponentsOptions.tsx | 1 + libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx | 1 + .../src/Dialog/ExportDialogBase.tsx | 1 + .../src/Dialog/ExportTabularPdfDialog.tsx | 1 + .../HubspotConversionTouchPointDialog.tsx | 1 + .../ShareDialogBase/AddGranteeBase.tsx | 1 + .../ShareDialogBase/AddGranteeButton.tsx | 1 + .../ShareDialogBase/AsyncSelectComponents.tsx | 1 + .../ComponentInteractionContext.tsx | 1 + .../ComponentLabelsContext.tsx | 1 + .../ShareDialogBase/GranteeIcons.tsx | 1 + .../ShareDialogBase/GranteeItem.tsx | 1 + .../GranularGranteeGroupItem.tsx | 1 + .../GranularGranteeUserItem.tsx | 1 + .../GranularPermissionsDropdown.tsx | 1 + .../GranularPermissionsDropdownBody.tsx | 1 + .../ShareDialogBase/ShareDialogBase.tsx | 1 + .../ShareDialogBase/ShareGranteeBase.tsx | 1 + .../ShareDialogBase/ShareGranteeContent.tsx | 1 + .../ShareDialog/ShareDialogBase/ShareLink.tsx | 1 + .../test/AddGranteeSelect.test.tsx | 1 + .../test/useShareDialogBase.test.ts | 1 + .../ShareDialogBase/test/utils.test.ts | 1 + .../ShareDialogBase/useShareDialogBase.ts | 1 + .../ShareDialog/ShareDialogBase/utils.ts | 1 + .../StylingEditorDialog.tsx | 1 + libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx | 1 + libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx | 1 + .../src/Dropdown/tests/Dropdown.test.tsx | 1 + .../src/EditableLabel/EditableLabel.tsx | 1 + .../FileUpload/FileDropzone/FileDropzone.tsx | 1 + .../UploadFileList/UploadFileList.tsx | 1 + .../UploadStatusDialog/UploadStatusDialog.tsx | 1 + .../src/FileUpload/hooks/useFileSelection.ts | 1 + .../src/FlexDimensions/FlexDimensions.tsx | 1 + libs/sdk-ui-kit/src/Form/InputPure.tsx | 1 + libs/sdk-ui-kit/src/Header/Header.tsx | 1 + libs/sdk-ui-kit/src/Header/HeaderAccount.tsx | 1 + libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx | 1 + .../src/Header/HeaderSearchButton.tsx | 1 + .../src/Header/HeaderWorkspacePicker.tsx | 1 + .../src/Header/generateHeaderHelpMenuItems.ts | 1 + .../Header/generateHeaderMenuItemsGroups.ts | 1 + .../tests/activateHeaderMenuItems.test.ts | 1 + .../generateHeaderAccountMenuItems.test.ts | 1 + .../tests/generateHeaderHelpMenuItems.test.ts | 1 + .../generateHeaderMenuItemsGroups.test.ts | 1 + libs/sdk-ui-kit/src/List/AsyncList.tsx | 1 + libs/sdk-ui-kit/src/List/InsightListItem.tsx | 1 + .../InvertableSelect/InvertableSelect.tsx | 1 + .../InvertableSelectVirtualised.tsx | 1 + .../src/List/LegacyInvertableList.tsx | 1 + .../src/List/LegacyMultiSelectList.tsx | 1 + libs/sdk-ui-kit/src/List/MultiSelectList.tsx | 1 + .../List/tests/LegacyMultiSelectList.test.tsx | 1 + .../src/Menu/menuOpener/MenuOpenedByClick.tsx | 1 + .../src/Menu/menuOpener/MenuOpenedByHover.tsx | 1 + .../src/Menu/menuOpener/MenuOpener.tsx | 1 + .../src/Menu/positioning/MenuPosition.tsx | 1 + .../positioning/PositionedMenuContent.tsx | 1 + libs/sdk-ui-kit/src/Messages/Message.tsx | 1 + .../toasts/NonContextToastsInterop.tsx | 1 + .../src/Messages/toasts/ToastsCenter.tsx | 1 + .../src/Messages/toasts/useToastMessage.ts | 1 + libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx | 1 + libs/sdk-ui-kit/src/Overlay/Overlay.tsx | 1 + .../src/Overlay/ZoomAwareOverlay.tsx | 1 + .../src/RecurrenceForm/DateTime.tsx | 1 + .../src/RecurrenceForm/Recurrence.tsx | 1 + .../src/RecurrenceForm/RepeatTypeSelect.tsx | 1 + .../simpleRecurrenceTypeMappingFn.test.ts | 1 + .../src/RecurrenceForm/utils/utils.test.ts | 1 + .../src/RichText/RichTextWithTooltip.tsx | 1 + .../RichText/hooks/useEvaluatedReferences.ts | 1 + .../src/RichText/plugins/rehype-references.ts | 1 + .../src/ScrollablePanel/ScrollablePanel.tsx | 1 + .../src/SettingItem/SettingItem.tsx | 1 + .../StylingSettingBody.tsx | 1 + .../StylingSettingList.tsx | 1 + .../StylingSettingWidget.tsx | 1 + .../src/SettingWidget/TooltipIcon.tsx | 1 + .../tests/StylingSettingWidget.test.tsx | 1 + .../src/SettingWidget/tests/utils.test.ts | 1 + libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx | 1 + .../MeasureNumberFormat.tsx | 1 + .../customFormatDialog/CustomFormatDialog.tsx | 1 + .../customFormatDialog/FormatInput.tsx | 1 + .../FormatTemplatesDropdown.tsx | 1 + .../previewSection/Preview.tsx | 1 + .../presetsDropdown/PresetsDropdown.tsx | 1 + libs/sdk-ui-kit/src/utils/overlay.ts | 1 + libs/sdk-ui-loaders/package.json | 2 +- .../adaptiveComponentLoaders.ts | 1 + .../dynamicComponentLoaders.ts | 1 + libs/sdk-ui-pivot/package.json | 2 +- libs/sdk-ui-pivot/src/impl/base/agUtils.ts | 1 + libs/sdk-ui-pivot/src/impl/cell/cellClass.ts | 1 + .../src/impl/config/tableConfigAccessors.ts | 1 + libs/sdk-ui-pivot/src/impl/data/dataSource.ts | 1 + .../src/impl/data/dataSourceUtils.ts | 1 + libs/sdk-ui-pivot/src/impl/data/rowFactory.ts | 1 + .../impl/data/tests/GroupingProvider.test.ts | 1 + .../drilling/cellDrillabilityPredicate.ts | 1 + .../impl/drilling/drillIntersectionFactory.ts | 1 + .../tests/colDrillHeadersFactory.test.ts | 1 + .../tests/drillIntersectionFactory.test.ts | 1 + .../impl/drilling/tests/drillTargets.test.ts | 1 + .../drilling/tests/drilledRowFactory.test.ts | 1 + libs/sdk-ui-pivot/src/impl/gridOptions.ts | 1 + libs/sdk-ui-pivot/src/impl/privateTypes.ts | 1 + .../impl/resizing/tests/columnSizing.test.ts | 1 + .../impl/resizing/tests/updateColDefs.test.ts | 1 + .../src/impl/structure/colDefFactory.ts | 1 + .../src/impl/structure/colDefHeaderClass.ts | 1 + .../src/impl/structure/colDefTemplates.ts | 1 + .../src/impl/structure/colLocatorFactory.ts | 1 + .../src/impl/structure/colLocatorMatching.ts | 1 + .../structure/headers/AggregationsMenu.tsx | 1 + .../structure/headers/AggregationsSubMenu.tsx | 1 + .../headers/AggregationsSubMenuItems.tsx | 1 + .../structure/headers/ColumnGroupHeader.tsx | 1 + .../impl/structure/headers/ColumnHeader.tsx | 1 + .../structure/headers/ColumnTotalHeader.tsx | 1 + .../src/impl/structure/headers/HeaderCell.tsx | 1 + .../headers/aggregationsMenuHelper.ts | 1 + .../src/impl/structure/tableDescriptor.ts | 1 + .../impl/structure/tableDescriptorFactory.ts | 1 + .../tests/columnLocatorFactory.test.ts | 1 + .../tests/columnLocatorMatching.test.ts | 1 + .../tests/columnSortItemFactory.test.ts | 1 + .../structure/tests/tableDescriptor.test.ts | 1 + .../tests/tableDescriptorFactory.test.ts | 1 + libs/sdk-ui-pivot/src/impl/tableFacade.ts | 1 + .../src/impl/tableFacadeInitializer.ts | 1 + .../next/components/AvoidResizeFlickering.tsx | 1 + .../next/components/Cell/AttributeCell.tsx | 1 + .../components/Header/AttributeHeader.tsx | 1 + .../Header/EmptyMeasureGroupHeader.tsx | 1 + .../Header/EmptyMeasureGroupValueHeader.tsx | 1 + .../Header/HeaderCell/HeaderMenu.tsx | 1 + .../components/Header/MeasureGroupHeader.tsx | 1 + .../next/components/Header/MeasureHeader.tsx | 1 + .../components/Header/PivotGroupHeader.tsx | 1 + .../utils/constructAggregationsMenuItems.ts | 1 + .../src/next/context/ColumnDefsContext.tsx | 1 + .../aggregations/applyTotalsToExecutionDef.ts | 1 + .../next/features/columns/attributeColDef.ts | 1 + .../src/next/features/columns/colId.ts | 1 + .../src/next/features/columns/createColDef.ts | 1 + .../next/features/columns/measureColDef.ts | 1 + .../next/features/data/createExecutionDef.ts | 1 + .../data/createServerSideDataSource.ts | 1 + .../next/features/data/dataViewToColDefs.ts | 1 + .../next/features/data/dataViewToRowData.ts | 1 + .../next/features/drilling/intersection.ts | 1 + .../src/next/features/drilling/isDrillable.ts | 1 + .../pivoting/columnDefsToPivotGroups.ts | 1 + .../resizing/applyColumnWidthsToColDef.ts | 1 + ...ColumnWidthItemForColumnDefinition.test.ts | 1 + .../getColumnWidthItemForColumnDefinition.ts | 1 + .../features/sorting/applySortByToColDef.ts | 1 + .../features/sorting/sortItemsToSortModel.ts | 1 + .../features/sorting/sortModelToSortItems.ts | 1 + .../src/next/features/styling/cell.ts | 1 + .../src/next/features/styling/headerCell.ts | 1 + .../textWrapping/applyTextWrappingToColDef.ts | 1 + .../applyTextWrappingToGroupDef.ts | 1 + ...lumnTextWrappingItemForColumnDefinition.ts | 1 + .../src/next/hooks/header/useHeaderMenu.ts | 1 + .../hooks/resizing/useColumnSizingProps.ts | 1 + .../hooks/resizing/useManualResize.test.ts | 1 + .../textWrapping/useUpdateTextWrapping.ts | 1 + .../src/next/hooks/useAfterRenderCallback.ts | 1 + .../src/next/hooks/useAgGridReactProps.ts | 1 + .../src/next/hooks/useDataLoadingProps.ts | 1 + .../src/next/hooks/useFocusManagementProps.ts | 1 + .../src/next/hooks/useGrandTotalRows.ts | 1 + .../src/next/hooks/useInteractionProps.ts | 1 + .../src/next/hooks/useSortingProps.ts | 1 + .../sdk-ui-pluggable-application/package.json | 2 +- libs/sdk-ui-semantic-search/package.json | 2 +- .../internal/LeveledSearchTreeViewItem.tsx | 1 + .../src/internal/SearchNoResults.tsx | 1 + .../src/internal/SearchOverlay.tsx | 1 + .../src/internal/itemsBuilder.ts | 1 + .../lib/create_tiger_workspace.js | 1 + .../lib/delete_tiger_workspace.js | 1 + .../lib/export_tiger_workspace_fixture.js | 1 + .../charts/_infra/legendResponsiveVariants.ts | 1 + .../charts/areaChart/axisCustomization.tsx | 1 + .../scenarios/charts/areaChart/coloring.tsx | 1 + .../charts/areaChart/customization.tsx | 1 + .../scenarios/charts/areaChart/stacking.tsx | 1 + .../scenarios/charts/areaChart/theming.tsx | 1 + .../charts/barChart/axisCustomization.ts | 1 + .../scenarios/charts/barChart/coloring.tsx | 1 + .../charts/barChart/customization.tsx | 1 + .../scenarios/charts/barChart/drilling.tsx | 1 + .../scenarios/charts/barChart/responsive.tsx | 1 + .../charts/barChart/reversedStacking.ts | 1 + .../scenarios/charts/barChart/stacking.tsx | 1 + .../src/scenarios/charts/barChart/theming.tsx | 1 + .../charts/bubbleChart/axisCustomization.ts | 1 + .../scenarios/charts/bubbleChart/coloring.tsx | 1 + .../charts/bubbleChart/customization.tsx | 1 + .../charts/bubbleChart/singleSeries.tsx | 1 + .../scenarios/charts/bubbleChart/theming.tsx | 1 + .../charts/bulletChart/axisCustomization.ts | 1 + .../scenarios/charts/bulletChart/coloring.tsx | 1 + .../charts/bulletChart/customization.tsx | 1 + .../scenarios/charts/bulletChart/drilling.tsx | 1 + .../charts/bulletChart/responsive.tsx | 1 + .../scenarios/charts/bulletChart/theming.tsx | 1 + .../charts/columnChart/axisCustomization.ts | 1 + .../scenarios/charts/columnChart/coloring.tsx | 1 + .../charts/columnChart/customization.tsx | 1 + .../scenarios/charts/columnChart/drilling.tsx | 1 + .../charts/columnChart/responsive.tsx | 1 + .../scenarios/charts/columnChart/stacking.tsx | 1 + .../scenarios/charts/columnChart/theming.tsx | 1 + .../scenarios/charts/comboChart/_variants.ts | 1 + .../charts/comboChart/axisCustomization.tsx | 1 + .../scenarios/charts/comboChart/coloring.tsx | 1 + .../charts/comboChart/customization.tsx | 1 + .../scenarios/charts/comboChart/stacking.tsx | 1 + .../scenarios/charts/comboChart/theming.tsx | 1 + .../charts/dependencyWheelChart/coloring.tsx | 1 + .../dependencyWheelChart/customization.tsx | 1 + .../charts/dependencyWheelChart/theming.tsx | 1 + .../scenarios/charts/donutChart/coloring.tsx | 1 + .../charts/donutChart/customization.tsx | 1 + .../charts/donutChart/responsive.tsx | 1 + .../scenarios/charts/donutChart/theming.tsx | 1 + .../scenarios/charts/funnelChart/coloring.tsx | 1 + .../charts/funnelChart/customization.tsx | 1 + .../scenarios/charts/funnelChart/theming.tsx | 1 + .../src/scenarios/charts/headline/base.tsx | 1 + .../scenarios/charts/headline/drilling.tsx | 1 + .../charts/heatmap/axisCustomization.tsx | 1 + .../src/scenarios/charts/heatmap/coloring.tsx | 1 + .../charts/heatmap/customization.tsx | 1 + .../src/scenarios/charts/heatmap/theming.tsx | 1 + .../charts/lineChart/axisCustomization.ts | 1 + .../scenarios/charts/lineChart/coloring.tsx | 1 + .../charts/lineChart/customization.tsx | 1 + .../scenarios/charts/lineChart/responsive.tsx | 1 + .../scenarios/charts/lineChart/theming.tsx | 1 + .../scenarios/charts/pieChart/coloring.tsx | 1 + .../charts/pieChart/customization.tsx | 1 + .../scenarios/charts/pieChart/responsive.tsx | 1 + .../src/scenarios/charts/pieChart/theming.tsx | 1 + .../charts/pyramidChart/coloring.tsx | 1 + .../charts/pyramidChart/customization.tsx | 1 + .../scenarios/charts/pyramidChart/theming.tsx | 1 + .../scenarios/charts/repeater/coloring.tsx | 1 + .../charts/repeater/customization.tsx | 1 + .../src/scenarios/charts/repeater/theming.tsx | 1 + .../scenarios/charts/sankeyChart/coloring.tsx | 1 + .../charts/sankeyChart/customization.tsx | 1 + .../scenarios/charts/sankeyChart/theming.tsx | 1 + .../charts/scatterPlot/axisCustomization.ts | 1 + .../scenarios/charts/scatterPlot/coloring.tsx | 1 + .../charts/scatterPlot/customization.tsx | 1 + .../scenarios/charts/scatterPlot/theming.tsx | 1 + .../src/scenarios/charts/treemap/coloring.tsx | 1 + .../charts/treemap/customization.tsx | 1 + .../src/scenarios/charts/treemap/theming.tsx | 1 + .../charts/waterfallChart/coloring.tsx | 1 + .../charts/waterfallChart/customization.tsx | 1 + .../charts/waterfallChart/theming.tsx | 1 + .../src/scenarios/geoChart/base.tsx | 1 + .../src/scenarios/geoChart/clusters.tsx | 1 + .../src/scenarios/geoChart/coloring.tsx | 1 + .../src/scenarios/geoChart/legends.tsx | 1 + .../src/scenarios/geoChart/multiLayer.tsx | 1 + .../src/scenarios/geoChart/viewport.tsx | 1 + .../src/scenarios/pivotTable/autoresize.tsx | 1 + .../scenarios/pivotTable/customization.tsx | 1 + .../src/scenarios/pivotTable/drilling.tsx | 1 + .../src/scenarios/pivotTable/manualSizing.tsx | 1 + .../src/scenarios/pivotTable/sorting.tsx | 1 + .../src/scenarios/pivotTable/theming.tsx | 1 + .../src/scenarios/pivotTable/totals.tsx | 1 + .../scenarios/pivotTable/transposition.tsx | 1 + .../scenarios/pivotTableNext/autoresize.tsx | 1 + .../src/scenarios/pivotTableNext/config.tsx | 1 + .../src/scenarios/pivotTableNext/drilling.tsx | 1 + .../scenarios/pivotTableNext/manualSizing.tsx | 1 + .../src/scenarios/pivotTableNext/sorting.tsx | 1 + .../src/scenarios/pivotTableNext/totals.tsx | 1 + .../pivotTableNext/transposition.tsx | 1 + .../tests/_infra/render.tsx | 1 + .../tests/_infra/renderPlugVis.tsx | 1 + .../smoke-and-capture/allScenarios.test.tsx | 1 + .../neobackstop/serve/Dockerfile | 2 +- .../kda/KdaDialog.normal.stories.tsx | 1 + .../kda/KdaDialog.themed.stories.tsx | 1 + .../kit/Bubble/Bubble.stories.tsx | 1 + .../kit/ChartSorting/ChartSorting.stories.tsx | 1 + .../kit/Dialog/Dialog.stories.tsx | 1 + .../kit/DialogList/DialogList.stories.tsx | 1 + .../ManagementDialogComposition.stories.tsx | 1 + .../EmbedInsightDialog/CodeArea.stories.tsx | 1 + .../EmbedInsightDialogBase.stories.tsx | 1 + .../kit/Header/Header.stories.tsx | 1 + .../kit/List/LegacyLists.stories.tsx | 1 + .../kit/List/MenuList.stories.tsx | 1 + .../kit/NestedMenu/NestedMenu.stories.tsx | 1 + .../kit/RichText/RichText.stories.tsx | 1 + .../ShareDialog/AddGranteeBase.stories.tsx | 1 + .../kit/ShareDialog/GranteeItem.stories.tsx | 1 + .../kit/ShareDialog/ShareDialog.stories.tsx | 1 + .../ShareDialog/ShareGranteeBase.stories.tsx | 1 + .../ShortenedText/ShortenedText.stories.tsx | 1 + .../StylingSettingWidget.stories.tsx | 1 + .../ui/UiTooltip.stories.tsx | 1 + .../visualizations/insightStories.tsx | 1 + libs/sdk-ui-theme-provider/package.json | 2 +- .../src/ThemeProvider/ScopedThemeProvider.tsx | 1 + .../src/ThemeProvider/ThemeProvider.tsx | 1 + .../src/variablesSpec/validate/validate.ts | 1 + libs/sdk-ui-vis-commons/package.json | 2 +- .../src/coloring/test/attribute.test.ts | 1 + .../src/legend/FluidLegend.tsx | 1 + libs/sdk-ui-vis-commons/src/legend/Legend.tsx | 1 + .../src/legend/LegendGroup.tsx | 1 + .../src/legend/LegendItem.tsx | 1 + .../src/legend/LegendList.tsx | 1 + .../src/legend/PopUpLegend/PopUpLegend.tsx | 1 + .../src/legend/StaticLegend.tsx | 1 + libs/sdk-ui-vis-commons/src/legend/helpers.ts | 1 + libs/sdk-ui-web-components/Dockerfile | 2 +- libs/sdk-ui/package.json | 2 +- libs/sdk-ui/src/base/errors/errorHandling.ts | 1 + .../base/headerMatching/HeaderPredicate.ts | 1 + .../headerMatching/HeaderPredicateFactory.ts | 1 + .../tests/HeaderPredicateFactory.test.ts | 1 + .../tests/headerPredicate.test.ts | 1 + .../tests/mappingHeader.test.ts | 1 + .../base/localization/TranslationsProvider.ts | 1 + .../src/base/localization/intlUtils.tsx | 1 + .../ArithmeticMeasureTitleFactory.ts | 1 + .../base/measureTitles/fillMissingTitles.ts | 1 + .../ClientWorkspaceContext.tsx | 1 + .../base/react/legacy/withEntireDataView.tsx | 1 + .../react/tests/CancelablePromise.test.ts | 1 + .../src/base/react/useCancelablePromise.ts | 1 + .../base/react/useCancelablePromiseUtils.ts | 1 + .../validation/ValidationContextStore.tsx | 1 + .../base/results/internal/dataAccessImpl.ts | 1 + .../results/internal/dataAccessMethods.ts | 1 + .../results/tableData/dataViewToTableData.ts | 3 +- .../collect/collectColumnDefinitions.ts | 1 + .../mapping/collect/collectRowDefinitions.ts | 1 + .../mapping/dataViewToTableDataMapping.ts | 1 + libs/sdk-ui/src/base/vis/DrillEvents.ts | 1 + .../sdk-ui/src/base/vis/VisualizationProps.ts | 1 + libs/sdk-ui/src/base/vis/drilling.ts | 1 + libs/sdk-ui/src/base/vis/export.ts | 1 + libs/sdk-ui/src/base/vis/geoDataExport.ts | 1 + .../src/base/vis/geoExportNormalization.ts | 1 + libs/sdk-ui/src/execution/DataViewLoader.tsx | 1 + libs/sdk-ui/src/execution/Execute.tsx | 1 + libs/sdk-ui/src/execution/ExecuteInsight.tsx | 1 + .../src/execution/useExecutionDataView.ts | 1 + .../src/execution/useInsightDataView.ts | 1 + libs/sdk-ui/src/execution/withExecution.ts | 1 + libs/sdk-ui/src/kpi/Kpi.tsx | 1 + libs/util/package.json | 2 +- tools/app-toolkit/package.json | 2 +- tools/app-toolkit/src/initCmd/index.ts | 1 + .../src/base/test/sdkDepedencyGraph.test.ts | 1 + tools/applink/src/devConsole/action.ts | 1 + .../pipeline/tests/buildScheduler.test.ts | 1 + .../src/devConsole/pipeline/tests/fixture.ts | 1 + tools/applink/src/devConsole/ui/appLog.ts | 1 + .../applink/src/devConsole/ui/buildOutput.ts | 1 + .../applink/src/devConsole/ui/packageList.ts | 1 + tools/applink/src/devConsole/ui/ui.ts | 1 + tools/catalog-export/package.json | 2 +- .../catalog-export/src/loaders/tiger/index.ts | 1 + .../src/loaders/tiger/tigerCatalog.ts | 1 + .../src/loaders/tiger/tigerDateDatasets.ts | 1 + .../src/loaders/tiger/tigerLoad.ts | 1 + .../src/transform/toTypescript.ts | 1 + .../configTemplates/js/.oxfmtrc.json | 3 +- .../configTemplates/ts/.oxfmtrc.json | 3 +- .../src/harness/PluginLoader.tsx | 1 + tools/eslint-config/package.json | 2 +- tools/eslint-config/scripts/build.ts | 1 + tools/eslint-config/scripts/build/v9.ts | 1 + tools/i18n-toolkit/package.json | 2 +- .../src/validations/messagesUsage.ts | 1 + tools/lint-config/package.json | 2 +- tools/mock-handling/package.json | 2 +- tools/mock-handling/src/codegen/index.ts | 1 + .../src/recordings/catalogRepository.ts | 1 + .../recordings/collectionItemsRepository.ts | 1 + .../src/recordings/dashboards.ts | 1 + .../src/recordings/dashboardsRepository.ts | 1 + .../src/recordings/displayForms.ts | 1 + .../src/recordings/displayFormsRepository.ts | 1 + .../mock-handling/src/recordings/execution.ts | 1 + .../src/recordings/executionRepository.ts | 1 + .../mock-handling/src/recordings/insights.ts | 1 + .../src/recordings/insightsRepository.ts | 1 + .../src/recordings/visClassesRepository.ts | 1 + tools/oxlint-config/package.json | 2 +- tools/plugin-toolkit/package.json | 2 +- .../src/_base/inputHandling/extractors.ts | 1 + .../plugin-toolkit/src/addPluginCmd/index.ts | 1 + tools/plugin-toolkit/src/initCmd/index.ts | 1 + .../src/inspectCmds/inspectCmdAction.ts | 1 + .../src/inspectCmds/inspectDashboard.ts | 1 + tools/plugin-toolkit/src/inspectCmds/types.ts | 1 + .../plugin-toolkit/src/linkPluginCmd/index.ts | 1 + .../src/listCmds/listCmdAction.ts | 1 + .../src/listCmds/listDashboardPlugins.ts | 1 + .../src/listCmds/listDashboards.ts | 1 + tools/plugin-toolkit/src/listCmds/types.ts | 1 + .../src/removeParamsCmd/index.ts | 1 + .../src/unlinkPluginCmd/index.ts | 1 + .../src/updatePluginParamsCmd/index.ts | 1 + tools/reference-workspace/package.json | 2 +- tools/stylelint-config/package.json | 2 +- 1726 files changed, 3396 insertions(+), 37069 deletions(-) delete mode 100644 .github/actions/git-check-release/action-build/index.js delete mode 100644 .github/actions/git-check-release/package-lock.json delete mode 100644 .github/actions/git-check-release/package.json delete mode 100644 .github/actions/git-check-release/src/index.js diff --git a/.github/actions/git-check-release/action-build/index.js b/.github/actions/git-check-release/action-build/index.js deleted file mode 100644 index 093cb334c79..00000000000 --- a/.github/actions/git-check-release/action-build/index.js +++ /dev/null @@ -1,34993 +0,0 @@ -/******/ (() => { - // webpackBootstrap - /******/ var __webpack_modules__ = { - /***/ 7351: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.issue = exports.issueCommand = void 0; - const os = __importStar(__nccwpck_require__(2037)); - const utils_1 = __nccwpck_require__(5278); - /** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ - function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); - } - exports.issueCommand = issueCommand; - function issue(name, message = "") { - issueCommand(name, {}, message); - } - exports.issue = issue; - const CMD_STRING = "::"; - class Command { - constructor(command, properties, message) { - if (!command) { - command = "missing.command"; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += " "; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } else { - cmdStr += ","; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } - } - function escapeData(s) { - return utils_1 - .toCommandValue(s) - .replace(/%/g, "%25") - .replace(/\r/g, "%0D") - .replace(/\n/g, "%0A"); - } - function escapeProperty(s) { - return utils_1 - .toCommandValue(s) - .replace(/%/g, "%25") - .replace(/\r/g, "%0D") - .replace(/\n/g, "%0A") - .replace(/:/g, "%3A") - .replace(/,/g, "%2C"); - } - //# sourceMappingURL=command.js.map - - /***/ - }, - - /***/ 2186: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getIDToken = - exports.getState = - exports.saveState = - exports.group = - exports.endGroup = - exports.startGroup = - exports.info = - exports.notice = - exports.warning = - exports.error = - exports.debug = - exports.isDebug = - exports.setFailed = - exports.setCommandEcho = - exports.setOutput = - exports.getBooleanInput = - exports.getMultilineInput = - exports.getInput = - exports.addPath = - exports.setSecret = - exports.exportVariable = - exports.ExitCode = - void 0; - const command_1 = __nccwpck_require__(7351); - const file_command_1 = __nccwpck_require__(717); - const utils_1 = __nccwpck_require__(5278); - const os = __importStar(__nccwpck_require__(2037)); - const path = __importStar(__nccwpck_require__(1017)); - const oidc_utils_1 = __nccwpck_require__(8041); - /** - * The code to exit an action - */ - var ExitCode; - (function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[(ExitCode["Success"] = 0)] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[(ExitCode["Failure"] = 1)] = "Failure"; - })((ExitCode = exports.ExitCode || (exports.ExitCode = {}))); - //----------------------------------------------------------------------- - // Variables - //----------------------------------------------------------------------- - /** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ - // oxlint-disable-next-line @typescript-eslint/no-explicit-any - function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env["GITHUB_ENV"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "ENV", - file_command_1.prepareKeyValueMessage(name, val), - ); - } - command_1.issueCommand("set-env", { name }, convertedVal); - } - exports.exportVariable = exportVariable; - /** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ - function setSecret(secret) { - command_1.issueCommand("add-mask", {}, secret); - } - exports.setSecret = setSecret; - /** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ - function addPath(inputPath) { - const filePath = process.env["GITHUB_PATH"] || ""; - if (filePath) { - file_command_1.issueFileCommand("PATH", inputPath); - } else { - command_1.issueCommand("add-path", {}, inputPath); - } - process.env["PATH"] = `${inputPath}${path.delimiter}${process.env["PATH"]}`; - } - exports.addPath = addPath; - /** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ - function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); - } - exports.getInput = getInput; - /** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ - function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split("\n") - .filter((x) => x !== ""); - if (options && options.trimWhitespace === false) { - return inputs; - } - return inputs.map((input) => input.trim()); - } - exports.getMultilineInput = getMultilineInput; - /** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ - function getBooleanInput(name, options) { - const trueValue = ["true", "True", "TRUE"]; - const falseValue = ["false", "False", "FALSE"]; - const val = getInput(name, options); - if (trueValue.includes(val)) return true; - if (falseValue.includes(val)) return false; - throw new TypeError( - `Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + - `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``, - ); - } - exports.getBooleanInput = getBooleanInput; - /** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ - // oxlint-disable-next-line @typescript-eslint/no-explicit-any - function setOutput(name, value) { - const filePath = process.env["GITHUB_OUTPUT"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "OUTPUT", - file_command_1.prepareKeyValueMessage(name, value), - ); - } - process.stdout.write(os.EOL); - command_1.issueCommand("set-output", { name }, utils_1.toCommandValue(value)); - } - exports.setOutput = setOutput; - /** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ - function setCommandEcho(enabled) { - command_1.issue("echo", enabled ? "on" : "off"); - } - exports.setCommandEcho = setCommandEcho; - //----------------------------------------------------------------------- - // Results - //----------------------------------------------------------------------- - /** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ - function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); - } - exports.setFailed = setFailed; - //----------------------------------------------------------------------- - // Logging Commands - //----------------------------------------------------------------------- - /** - * Gets whether Actions Step Debug is on or not - */ - function isDebug() { - return process.env["RUNNER_DEBUG"] === "1"; - } - exports.isDebug = isDebug; - /** - * Writes debug message to user log - * @param message debug message - */ - function debug(message) { - command_1.issueCommand("debug", {}, message); - } - exports.debug = debug; - /** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ - function error(message, properties = {}) { - command_1.issueCommand( - "error", - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message, - ); - } - exports.error = error; - /** - * Adds a warning issue - * @param message warning issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ - function warning(message, properties = {}) { - command_1.issueCommand( - "warning", - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message, - ); - } - exports.warning = warning; - /** - * Adds a notice issue - * @param message notice issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ - function notice(message, properties = {}) { - command_1.issueCommand( - "notice", - utils_1.toCommandProperties(properties), - message instanceof Error ? message.toString() : message, - ); - } - exports.notice = notice; - /** - * Writes info to log with console.log. - * @param message info message - */ - function info(message) { - process.stdout.write(message + os.EOL); - } - exports.info = info; - /** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ - function startGroup(name) { - command_1.issue("group", name); - } - exports.startGroup = startGroup; - /** - * End an output group. - */ - function endGroup() { - command_1.issue("endgroup"); - } - exports.endGroup = endGroup; - /** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ - function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } finally { - endGroup(); - } - return result; - }); - } - exports.group = group; - //----------------------------------------------------------------------- - // Wrapper action state - //----------------------------------------------------------------------- - /** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ - // oxlint-disable-next-line @typescript-eslint/no-explicit-any - function saveState(name, value) { - const filePath = process.env["GITHUB_STATE"] || ""; - if (filePath) { - return file_command_1.issueFileCommand( - "STATE", - file_command_1.prepareKeyValueMessage(name, value), - ); - } - command_1.issueCommand("save-state", { name }, utils_1.toCommandValue(value)); - } - exports.saveState = saveState; - /** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ - function getState(name) { - return process.env[`STATE_${name}`] || ""; - } - exports.getState = getState; - function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); - } - exports.getIDToken = getIDToken; - /** - * Summary exports - */ - var summary_1 = __nccwpck_require__(1327); - Object.defineProperty(exports, "summary", { - enumerable: true, - get: function () { - return summary_1.summary; - }, - }); - /** - * @deprecated use core.summary - */ - var summary_2 = __nccwpck_require__(1327); - Object.defineProperty(exports, "markdownSummary", { - enumerable: true, - get: function () { - return summary_2.markdownSummary; - }, - }); - /** - * Path exports - */ - var path_utils_1 = __nccwpck_require__(2981); - Object.defineProperty(exports, "toPosixPath", { - enumerable: true, - get: function () { - return path_utils_1.toPosixPath; - }, - }); - Object.defineProperty(exports, "toWin32Path", { - enumerable: true, - get: function () { - return path_utils_1.toWin32Path; - }, - }); - Object.defineProperty(exports, "toPlatformPath", { - enumerable: true, - get: function () { - return path_utils_1.toPlatformPath; - }, - }); - //# sourceMappingURL=core.js.map - - /***/ - }, - - /***/ 717: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - // For internal use, subject to change. - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; - // We use any as a valid input type - /* eslint-disable @typescript-eslint/no-explicit-any */ - const fs = __importStar(__nccwpck_require__(7147)); - const os = __importStar(__nccwpck_require__(2037)); - const uuid_1 = __nccwpck_require__(5840); - const utils_1 = __nccwpck_require__(5278); - function issueFileCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: "utf8", - }); - } - exports.issueFileCommand = issueFileCommand; - function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - const convertedValue = utils_1.toCommandValue(value); - // These should realistically never happen, but just in case someone finds a - // way to exploit uuid generation let's not allow keys or values that contain - // the delimiter. - if (key.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); - } - if (convertedValue.includes(delimiter)) { - throw new Error( - `Unexpected input: value should not contain the delimiter "${delimiter}"`, - ); - } - return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; - } - exports.prepareKeyValueMessage = prepareKeyValueMessage; - //# sourceMappingURL=file-command.js.map - - /***/ - }, - - /***/ 8041: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.OidcClient = void 0; - const http_client_1 = __nccwpck_require__(6255); - const auth_1 = __nccwpck_require__(5526); - const core_1 = __nccwpck_require__(2186); - class OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry, - }; - return new http_client_1.HttpClient( - "actions/oidc-client", - [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], - requestOptions, - ); - } - static getRequestToken() { - const token = process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"]; - if (!token) { - throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable"); - } - return token; - } - static getIDTokenUrl() { - const runtimeUrl = process.env["ACTIONS_ID_TOKEN_REQUEST_URL"]; - if (!runtimeUrl) { - throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable"); - } - return runtimeUrl; - } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); - const res = yield httpclient.getJson(id_token_url).catch((error) => { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n - Error Message: ${error.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error("Response json body do not have ID Token field"); - } - return id_token; - }); - } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { - try { - // New ID Token is requested from action service - let id_token_url = OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; - } - core_1.debug(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - core_1.setSecret(id_token); - return id_token; - } catch (error) { - throw new Error(`Error message: ${error.message}`); - } - }); - } - } - exports.OidcClient = OidcClient; - //# sourceMappingURL=oidc-utils.js.map - - /***/ - }, - - /***/ 2981: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { - enumerable: true, - get: function () { - return m[k]; - }, - }); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; - const path = __importStar(__nccwpck_require__(1017)); - /** - * toPosixPath converts the given path to the posix form. On Windows, \\ will be - * replaced with /. - * - * @param pth. Path to transform. - * @return string Posix path. - */ - function toPosixPath(pth) { - return pth.replace(/[\\]/g, "/"); - } - exports.toPosixPath = toPosixPath; - /** - * toWin32Path converts the given path to the win32 form. On Linux, / will be - * replaced with \\. - * - * @param pth. Path to transform. - * @return string Win32 path. - */ - function toWin32Path(pth) { - return pth.replace(/[/]/g, "\\"); - } - exports.toWin32Path = toWin32Path; - /** - * toPlatformPath converts the given path to a platform-specific path. It does - * this by replacing instances of / and \ with the platform-specific path - * separator. - * - * @param pth The path to platformize. - * @return string The platform-specific path. - */ - function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path.sep); - } - exports.toPlatformPath = toPlatformPath; - //# sourceMappingURL=path-utils.js.map - - /***/ - }, - - /***/ 1327: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.summary = - exports.markdownSummary = - exports.SUMMARY_DOCS_URL = - exports.SUMMARY_ENV_VAR = - void 0; - const os_1 = __nccwpck_require__(2037); - const fs_1 = __nccwpck_require__(7147); - const { access, appendFile, writeFile } = fs_1.promises; - exports.SUMMARY_ENV_VAR = "GITHUB_STEP_SUMMARY"; - exports.SUMMARY_DOCS_URL = - "https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary"; - class Summary { - constructor() { - this._buffer = ""; - } - /** - * Finds the summary file path from the environment, rejects if env var is not found or file does not exist - * Also checks r/w permissions. - * - * @returns step summary file path - */ - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; - } - const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error( - `Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`, - ); - } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } catch (_a) { - throw new Error( - `Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`, - ); - } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - /** - * Wraps content in an HTML tag, adding any HTML attributes - * - * @param {string} tag HTML tag to wrap - * @param {string | null} content content within the tag - * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add - * - * @returns {string} content wrapped in HTML element - */ - wrap(tag, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(""); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; - } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise} summary instance - */ - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 - ? void 0 - : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: "utf8" }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ""; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(os_1.EOL); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, lang && { lang }); - const element = this.wrap("pre", this.wrap("code", code), attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag = ordered ? "ol" : "ul"; - const listItems = items.map((item) => this.wrap("li", item)).join(""); - const element = this.wrap(tag, listItems); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows - .map((row) => { - const cells = row - .map((cell) => { - if (typeof cell === "string") { - return this.wrap("td", cell); - } - const { header, data, colspan, rowspan } = cell; - const tag = header ? "th" : "td"; - const attrs = Object.assign( - Object.assign({}, colspan && { colspan }), - rowspan && { rowspan }, - ); - return this.wrap(tag, data, attrs); - }) - .join(""); - return this.wrap("tr", cells); - }) - .join(""); - const element = this.wrap("table", tableBody); - return this.addRaw(element).addEOL(); - } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap("details", this.wrap("summary", label) + content); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, width && { width }), height && { height }); - const element = this.wrap("img", null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag = `h${level}`; - const allowedTag = ["h1", "h2", "h3", "h4", "h5", "h6"].includes(tag) ? tag : "h1"; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML thematic break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addSeparator() { - const element = this.wrap("hr", null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap("br", null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, cite && { cite }); - const element = this.wrap("blockquote", text, attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap("a", text, { href }); - return this.addRaw(element).addEOL(); - } - } - const _summary = new Summary(); - /** - * @deprecated use `core.summary` - */ - exports.markdownSummary = _summary; - exports.summary = _summary; - //# sourceMappingURL=summary.js.map - - /***/ - }, - - /***/ 5278: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - // We use any as a valid input type - /* eslint-disable @typescript-eslint/no-explicit-any */ - Object.defineProperty(exports, "__esModule", { value: true }); - exports.toCommandProperties = exports.toCommandValue = void 0; - /** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ - function toCommandValue(input) { - if (input === null || input === undefined) { - return ""; - } else if (typeof input === "string" || input instanceof String) { - return input; - } - return JSON.stringify(input); - } - exports.toCommandValue = toCommandValue; - /** - * - * @param annotationProperties - * @returns The command properties to send with the actual annotation command - * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 - */ - function toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) { - return {}; - } - return { - title: annotationProperties.title, - file: annotationProperties.file, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn, - }; - } - exports.toCommandProperties = toCommandProperties; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 4087: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.Context = void 0; - const fs_1 = __nccwpck_require__(7147); - const os_1 = __nccwpck_require__(2037); - class Context { - /** - * Hydrate the context from the environment - */ - constructor() { - var _a, _b, _c; - this.payload = {}; - if (process.env.GITHUB_EVENT_PATH) { - if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse( - (0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: "utf8" }), - ); - } else { - const path = process.env.GITHUB_EVENT_PATH; - process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); - } - } - this.eventName = process.env.GITHUB_EVENT_NAME; - this.sha = process.env.GITHUB_SHA; - this.ref = process.env.GITHUB_REF; - this.workflow = process.env.GITHUB_WORKFLOW; - this.action = process.env.GITHUB_ACTION; - this.actor = process.env.GITHUB_ACTOR; - this.job = process.env.GITHUB_JOB; - this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); - this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); - this.apiUrl = - (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 - ? _a - : `https://api.github.com`; - this.serverUrl = - (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 - ? _b - : `https://github.com`; - this.graphqlUrl = - (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 - ? _c - : `https://api.github.com/graphql`; - } - get issue() { - const payload = this.payload; - return Object.assign(Object.assign({}, this.repo), { - number: (payload.issue || payload.pull_request || payload).number, - }); - } - get repo() { - if (process.env.GITHUB_REPOSITORY) { - const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); - return { owner, repo }; - } - if (this.payload.repository) { - return { - owner: this.payload.repository.owner.login, - repo: this.payload.repository.name, - }; - } - throw new Error( - "context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'", - ); - } - } - exports.Context = Context; - //# sourceMappingURL=context.js.map - - /***/ - }, - - /***/ 5438: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getOctokit = exports.context = void 0; - const Context = __importStar(__nccwpck_require__(4087)); - const utils_1 = __nccwpck_require__(3030); - exports.context = new Context.Context(); - /** - * Returns a hydrated octokit ready to use for GitHub Actions - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ - function getOctokit(token, options, ...additionalPlugins) { - const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); - return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); - } - exports.getOctokit = getOctokit; - //# sourceMappingURL=github.js.map - - /***/ - }, - - /***/ 7914: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getApiBaseUrl = - exports.getProxyFetch = - exports.getProxyAgentDispatcher = - exports.getProxyAgent = - exports.getAuthString = - void 0; - const httpClient = __importStar(__nccwpck_require__(6255)); - const undici_1 = __nccwpck_require__(1773); - function getAuthString(token, options) { - if (!token && !options.auth) { - throw new Error("Parameter token or opts.auth is required"); - } else if (token && options.auth) { - throw new Error("Parameters token and opts.auth may not both be specified"); - } - return typeof options.auth === "string" ? options.auth : `token ${token}`; - } - exports.getAuthString = getAuthString; - function getProxyAgent(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgent(destinationUrl); - } - exports.getProxyAgent = getProxyAgent; - function getProxyAgentDispatcher(destinationUrl) { - const hc = new httpClient.HttpClient(); - return hc.getAgentDispatcher(destinationUrl); - } - exports.getProxyAgentDispatcher = getProxyAgentDispatcher; - function getProxyFetch(destinationUrl) { - const httpDispatcher = getProxyAgentDispatcher(destinationUrl); - const proxyFetch = (url, opts) => - __awaiter(this, void 0, void 0, function* () { - return (0, undici_1.fetch)( - url, - Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }), - ); - }); - return proxyFetch; - } - exports.getProxyFetch = getProxyFetch; - function getApiBaseUrl() { - return process.env["GITHUB_API_URL"] || "https://api.github.com"; - } - exports.getApiBaseUrl = getApiBaseUrl; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 3030: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; - const Context = __importStar(__nccwpck_require__(4087)); - const Utils = __importStar(__nccwpck_require__(7914)); - // octokit + plugins - const core_1 = __nccwpck_require__(6762); - const plugin_rest_endpoint_methods_1 = __nccwpck_require__(3044); - const plugin_paginate_rest_1 = __nccwpck_require__(4193); - exports.context = new Context.Context(); - const baseUrl = Utils.getApiBaseUrl(); - exports.defaults = { - baseUrl, - request: { - agent: Utils.getProxyAgent(baseUrl), - fetch: Utils.getProxyFetch(baseUrl), - }, - }; - exports.GitHub = core_1.Octokit.plugin( - plugin_rest_endpoint_methods_1.restEndpointMethods, - plugin_paginate_rest_1.paginateRest, - ).defaults(exports.defaults); - /** - * Convience function to correctly format Octokit Options to pass into the constructor. - * - * @param token the repo PAT or GITHUB_TOKEN - * @param options other options to set - */ - function getOctokitOptions(token, options) { - const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller - // Auth - const auth = Utils.getAuthString(token, opts); - if (auth) { - opts.auth = auth; - } - return opts; - } - exports.getOctokitOptions = getOctokitOptions; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 5526: /***/ function (__unused_webpack_module, exports) { - "use strict"; - - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.PersonalAccessTokenCredentialHandler = - exports.BearerCredentialHandler = - exports.BasicCredentialHandler = - void 0; - class BasicCredentialHandler { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); - } - options.headers["Authorization"] = `Basic ${Buffer.from( - `${this.username}:${this.password}`, - ).toString("base64")}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); - } - } - exports.BasicCredentialHandler = BasicCredentialHandler; - class BearerCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); - } - options.headers["Authorization"] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); - } - } - exports.BearerCredentialHandler = BearerCredentialHandler; - class PersonalAccessTokenCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error("The request has no headers"); - } - options.headers["Authorization"] = `Basic ${Buffer.from(`PAT:${this.token}`).toString( - "base64", - )}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error("not implemented"); - }); - } - } - exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; - //# sourceMappingURL=auth.js.map - - /***/ - }, - - /***/ 6255: /***/ function (__unused_webpack_module, exports, __nccwpck_require__) { - "use strict"; - - /* eslint-disable @typescript-eslint/no-explicit-any */ - var __createBinding = - (this && this.__createBinding) || - (Object.create - ? function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { - enumerable: true, - get: function () { - return m[k]; - }, - }; - } - Object.defineProperty(o, k2, desc); - } - : function (o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - var __setModuleDefault = - (this && this.__setModuleDefault) || - (Object.create - ? function (o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } - : function (o, v) { - o["default"] = v; - }); - var __importStar = - (this && this.__importStar) || - function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) - for (var k in mod) - if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) - __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - var __awaiter = - (this && this.__awaiter) || - function (thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P - ? value - : new P(function (resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done - ? resolve(result.value) - : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - Object.defineProperty(exports, "__esModule", { value: true }); - exports.HttpClient = - exports.isHttps = - exports.HttpClientResponse = - exports.HttpClientError = - exports.getProxyUrl = - exports.MediaTypes = - exports.Headers = - exports.HttpCodes = - void 0; - const http = __importStar(__nccwpck_require__(3685)); - const https = __importStar(__nccwpck_require__(5687)); - const pm = __importStar(__nccwpck_require__(9835)); - const tunnel = __importStar(__nccwpck_require__(4294)); - const undici_1 = __nccwpck_require__(1773); - var HttpCodes; - (function (HttpCodes) { - HttpCodes[(HttpCodes["OK"] = 200)] = "OK"; - HttpCodes[(HttpCodes["MultipleChoices"] = 300)] = "MultipleChoices"; - HttpCodes[(HttpCodes["MovedPermanently"] = 301)] = "MovedPermanently"; - HttpCodes[(HttpCodes["ResourceMoved"] = 302)] = "ResourceMoved"; - HttpCodes[(HttpCodes["SeeOther"] = 303)] = "SeeOther"; - HttpCodes[(HttpCodes["NotModified"] = 304)] = "NotModified"; - HttpCodes[(HttpCodes["UseProxy"] = 305)] = "UseProxy"; - HttpCodes[(HttpCodes["SwitchProxy"] = 306)] = "SwitchProxy"; - HttpCodes[(HttpCodes["TemporaryRedirect"] = 307)] = "TemporaryRedirect"; - HttpCodes[(HttpCodes["PermanentRedirect"] = 308)] = "PermanentRedirect"; - HttpCodes[(HttpCodes["BadRequest"] = 400)] = "BadRequest"; - HttpCodes[(HttpCodes["Unauthorized"] = 401)] = "Unauthorized"; - HttpCodes[(HttpCodes["PaymentRequired"] = 402)] = "PaymentRequired"; - HttpCodes[(HttpCodes["Forbidden"] = 403)] = "Forbidden"; - HttpCodes[(HttpCodes["NotFound"] = 404)] = "NotFound"; - HttpCodes[(HttpCodes["MethodNotAllowed"] = 405)] = "MethodNotAllowed"; - HttpCodes[(HttpCodes["NotAcceptable"] = 406)] = "NotAcceptable"; - HttpCodes[(HttpCodes["ProxyAuthenticationRequired"] = 407)] = "ProxyAuthenticationRequired"; - HttpCodes[(HttpCodes["RequestTimeout"] = 408)] = "RequestTimeout"; - HttpCodes[(HttpCodes["Conflict"] = 409)] = "Conflict"; - HttpCodes[(HttpCodes["Gone"] = 410)] = "Gone"; - HttpCodes[(HttpCodes["TooManyRequests"] = 429)] = "TooManyRequests"; - HttpCodes[(HttpCodes["InternalServerError"] = 500)] = "InternalServerError"; - HttpCodes[(HttpCodes["NotImplemented"] = 501)] = "NotImplemented"; - HttpCodes[(HttpCodes["BadGateway"] = 502)] = "BadGateway"; - HttpCodes[(HttpCodes["ServiceUnavailable"] = 503)] = "ServiceUnavailable"; - HttpCodes[(HttpCodes["GatewayTimeout"] = 504)] = "GatewayTimeout"; - })(HttpCodes || (exports.HttpCodes = HttpCodes = {})); - var Headers; - (function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; - })(Headers || (exports.Headers = Headers = {})); - var MediaTypes; - (function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; - })(MediaTypes || (exports.MediaTypes = MediaTypes = {})); - /** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ""; - } - exports.getProxyUrl = getProxyUrl; - const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect, - ]; - const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout, - ]; - const RetryableHttpVerbs = ["OPTIONS", "GET", "DELETE", "HEAD"]; - const ExponentialBackoffCeiling = 10; - const ExponentialBackoffTimeSlice = 5; - class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = "HttpClientError"; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } - } - exports.HttpClientError = HttpClientError; - class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => - __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on("data", (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on("end", () => { - resolve(output.toString()); - }); - }), - ); - }); - } - readBodyBuffer() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => - __awaiter(this, void 0, void 0, function* () { - const chunks = []; - this.message.on("data", (chunk) => { - chunks.push(chunk); - }); - this.message.on("end", () => { - resolve(Buffer.concat(chunks)); - }); - }), - ); - }); - } - } - exports.HttpClientResponse = HttpClientResponse; - function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === "https:"; - } - exports.isHttps = isHttps; - class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("OPTIONS", requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("GET", requestUrl, null, additionalHeaders || {}); - }); - } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("DELETE", requestUrl, null, additionalHeaders || {}); - }); - } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("POST", requestUrl, data, additionalHeaders || {}); - }); - } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("PATCH", requestUrl, data, additionalHeaders || {}); - }); - } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("PUT", requestUrl, data, additionalHeaders || {}); - }); - } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request("HEAD", requestUrl, null, additionalHeaders || {}); - }); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson, - ); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson, - ); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.Accept, - MediaTypes.ApplicationJson, - ); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader( - additionalHeaders, - Headers.ContentType, - MediaTypes.ApplicationJson, - ); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error("Client has already been disposed."); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - const maxTries = - this._allowRetries && RetryableHttpVerbs.includes(verb) - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - // Check if it's an authentication challenge - if ( - response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized - ) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while ( - response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0 - ) { - const redirectUrl = response.message.headers["location"]; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if ( - parsedUrl.protocol === "https:" && - parsedUrl.protocol !== parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade - ) { - throw new Error( - "Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.", - ); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - yield response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - // header names are case insensitive - if (header.toLowerCase() === "authorization") { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if ( - !response.message.statusCode || - !HttpResponseRetryCodes.includes(response.message.statusCode) - ) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; - } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } else if (!res) { - // If `err` is not passed, then `res` must be passed. - reject(new Error("Unknown error")); - } else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - if (typeof data === "string") { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers["Content-Length"] = Buffer.byteLength(data, "utf8"); - } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - } - const req = info.httpModule.request(info.options, (msg) => { - const res = new HttpClientResponse(msg); - handleResult(undefined, res); - }); - let socket; - req.on("socket", (sock) => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on("error", function (err) { - // err has statusCode property - // res should have headers - handleResult(err); - }); - if (data && typeof data === "string") { - req.write(data, "utf8"); - } - if (data && typeof data !== "string") { - data.on("close", function () { - req.end(); - }); - data.pipe(req); - } else { - req.end(); - } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - getAgentDispatcher(serverUrl) { - const parsedUrl = new URL(serverUrl); - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (!useProxy) { - return; - } - return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === "https:"; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort; - info.options.path = (info.parsedUrl.pathname || "") + (info.parsedUrl.search || ""); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers["user-agent"] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); - } - } - return info; - } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign( - {}, - lowercaseKeys(this.requestOptions.headers), - lowercaseKeys(headers || {}), - ); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === "https:"; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign( - Object.assign( - {}, - (proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`, - }, - ), - { host: proxyUrl.hostname, port: proxyUrl.port }, - ), - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === "https:"; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false, - }); - } - return agent; - } - _getProxyAgentDispatcher(parsedUrl, proxyUrl) { - let proxyAgent; - if (this._keepAlive) { - proxyAgent = this._proxyAgentDispatcher; - } - // if agent is already assigned use that agent. - if (proxyAgent) { - return proxyAgent; - } - const usingSsl = parsedUrl.protocol === "https:"; - proxyAgent = new undici_1.ProxyAgent( - Object.assign( - { uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, - (proxyUrl.username || proxyUrl.password) && { - token: `${proxyUrl.username}:${proxyUrl.password}`, - }, - ), - ); - this._proxyAgentDispatcher = proxyAgent; - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { - rejectUnauthorized: false, - }); - } - return proxyAgent; - } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise((resolve) => setTimeout(() => resolve(), ms)); - }); - } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => - __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {}, - }; - // not found leads to null obj returned - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - // get the result from the body - function dateTimeDeserializer(key, value) { - if (typeof value === "string") { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } else { - resolve(response); - } - }), - ); - }); - } - } - exports.HttpClient = HttpClient; - const lowercaseKeys = (obj) => - Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); - //# sourceMappingURL=index.js.map - - /***/ - }, - - /***/ 9835: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.checkBypass = exports.getProxyUrl = void 0; - function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === "https:"; - if (checkBypass(reqUrl)) { - return undefined; - } - const proxyVar = (() => { - if (usingSsl) { - return process.env["https_proxy"] || process.env["HTTPS_PROXY"]; - } else { - return process.env["http_proxy"] || process.env["HTTP_PROXY"]; - } - })(); - if (proxyVar) { - try { - return new URL(proxyVar); - } catch (_a) { - if (!proxyVar.startsWith("http://") && !proxyVar.startsWith("https://")) - return new URL(`http://${proxyVar}`); - } - } else { - return undefined; - } - } - exports.getProxyUrl = getProxyUrl; - function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - const reqHost = reqUrl.hostname; - if (isLoopbackAddress(reqHost)) { - return true; - } - const noProxy = process.env["no_proxy"] || process.env["NO_PROXY"] || ""; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } else if (reqUrl.protocol === "http:") { - reqPort = 80; - } else if (reqUrl.protocol === "https:") { - reqPort = 443; - } - // Format the request hostname and hostname with port - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === "number") { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (const upperNoProxyItem of noProxy - .split(",") - .map((x) => x.trim().toUpperCase()) - .filter((x) => x)) { - if ( - upperNoProxyItem === "*" || - upperReqHosts.some( - (x) => - x === upperNoProxyItem || - x.endsWith(`.${upperNoProxyItem}`) || - (upperNoProxyItem.startsWith(".") && x.endsWith(`${upperNoProxyItem}`)), - ) - ) { - return true; - } - } - return false; - } - exports.checkBypass = checkBypass; - function isLoopbackAddress(host) { - const hostLower = host.toLowerCase(); - return ( - hostLower === "localhost" || - hostLower.startsWith("127.") || - hostLower.startsWith("[::1]") || - hostLower.startsWith("[0:0:0:0:0:0:0:1]") - ); - } - //# sourceMappingURL=proxy.js.map - - /***/ - }, - - /***/ 334: /***/ (module) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - createTokenAuth: () => createTokenAuth, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/auth.js - var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; - var REGEX_IS_INSTALLATION = /^ghs_/; - var REGEX_IS_USER_TO_SERVER = /^ghu_/; - async function auth(token) { - const isApp = token.split(/\./).length === 3; - const isInstallation = - REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); - const tokenType = isApp - ? "app" - : isInstallation - ? "installation" - : isUserToServer - ? "user-to-server" - : "oauth"; - return { - type: "token", - token, - tokenType, - }; - } - - // pkg/dist-src/with-authorization-prefix.js - function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; - } - return `token ${token}`; - } - - // pkg/dist-src/hook.js - async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); - } - - // pkg/dist-src/index.js - var createTokenAuth = function createTokenAuth2(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); - } - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); - } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token), - }); - }; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 6762: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - Octokit: () => Octokit, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_universal_user_agent = __nccwpck_require__(5030); - var import_before_after_hook = __nccwpck_require__(3682); - var import_request = __nccwpck_require__(6234); - var import_graphql = __nccwpck_require__(8467); - var import_auth_token = __nccwpck_require__(334); - - // pkg/dist-src/version.js - var VERSION = "5.1.0"; - - // pkg/dist-src/index.js - var noop = () => {}; - var consoleWarn = console.warn.bind(console); - var consoleError = console.error.bind(console); - var userAgentTrail = `octokit-core.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`; - var Octokit = class { - static { - this.VERSION = VERSION; - } - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super( - Object.assign( - {}, - defaults, - options, - options.userAgent && defaults.userAgent - ? { - userAgent: `${options.userAgent} ${defaults.userAgent}`, - } - : null, - ), - ); - } - }; - return OctokitWithDefaults; - } - static { - this.plugins = []; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - static plugin(...newPlugins) { - const currentPlugins = this.plugins; - const NewOctokit = class extends this { - static { - this.plugins = currentPlugins.concat( - newPlugins.filter((plugin) => !currentPlugins.includes(plugin)), - ); - } - }; - return NewOctokit; - } - constructor(options = {}) { - const hook = new import_before_after_hook.Collection(); - const requestDefaults = { - baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - // @ts-ignore internal usage only, no need to type - hook: hook.bind(null, "request"), - }), - mediaType: { - previews: [], - format: "", - }, - }; - requestDefaults.headers["user-agent"] = options.userAgent - ? `${options.userAgent} ${userAgentTrail}` - : userAgentTrail; - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; - } - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; - } - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } - this.request = import_request.request.defaults(requestDefaults); - this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults( - requestDefaults, - ); - this.log = Object.assign( - { - debug: noop, - info: noop, - warn: consoleWarn, - error: consoleError, - }, - options.log, - ); - this.hook = hook; - if (!options.authStrategy) { - if (!options.auth) { - this.auth = async () => ({ - type: "unauthenticated", - }); - } else { - const auth = (0, import_auth_token.createTokenAuth)(options.auth); - hook.wrap("request", auth.hook); - this.auth = auth; - } - } else { - const { authStrategy, ...otherOptions } = options; - const auth = authStrategy( - Object.assign( - { - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions, - }, - options.auth, - ), - ); - hook.wrap("request", auth.hook); - this.auth = auth; - } - const classConstructor = this.constructor; - for (let i = 0; i < classConstructor.plugins.length; ++i) { - Object.assign(this, classConstructor.plugins[i](this, options)); - } - } - }; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 9440: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - endpoint: () => endpoint, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/defaults.js - var import_universal_user_agent = __nccwpck_require__(5030); - - // pkg/dist-src/version.js - var VERSION = "9.0.4"; - - // pkg/dist-src/defaults.js - var userAgent = `octokit-endpoint.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`; - var DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent, - }, - mediaType: { - format: "", - }, - }; - - // pkg/dist-src/util/lowercase-keys.js - function lowercaseKeys(object) { - if (!object) { - return {}; - } - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); - } - - // pkg/dist-src/util/is-plain-object.js - function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return ( - typeof Ctor === "function" && - Ctor instanceof Ctor && - Function.prototype.call(Ctor) === Function.prototype.call(value) - ); - } - - // pkg/dist-src/util/merge-deep.js - function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach((key) => { - if (isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { [key]: options[key] }); - else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { [key]: options[key] }); - } - }); - return result; - } - - // pkg/dist-src/util/remove-undefined-properties.js - function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === void 0) { - delete obj[key]; - } - } - return obj; - } - - // pkg/dist-src/merge.js - function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { method, url } : { url: method }, options); - } else { - options = Object.assign({}, route); - } - options.headers = lowercaseKeys(options.headers); - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); - if (options.url === "/graphql") { - if (defaults && defaults.mediaType.previews?.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews - .filter((preview) => !mergedOptions.mediaType.previews.includes(preview)) - .concat(mergedOptions.mediaType.previews); - } - mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map( - (preview) => preview.replace(/-preview/, ""), - ); - } - return mergedOptions; - } - - // pkg/dist-src/util/add-query-parameters.js - function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); - if (names.length === 0) { - return url; - } - return ( - url + - separator + - names - .map((name) => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } - return `${name}=${encodeURIComponent(parameters[name])}`; - }) - .join("&") - ); - } - - // pkg/dist-src/util/extract-url-variable-names.js - var urlVariableRegex = /\{[^}]+\}/g; - function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); - } - function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); - if (!matches) { - return []; - } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); - } - - // pkg/dist-src/util/omit.js - function omit(object, keysToOmit) { - const result = { __proto__: null }; - for (const key of Object.keys(object)) { - if (keysToOmit.indexOf(key) === -1) { - result[key] = object[key]; - } - } - return result; - } - - // pkg/dist-src/util/url-template.js - function encodeReserved(str) { - return str - .split(/(%[0-9A-Fa-f]{2})/g) - .map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - return part; - }) - .join(""); - } - function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); - } - function encodeValue(operator, value, key) { - value = - operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; - } - } - function isDefined(value) { - return value !== void 0 && value !== null; - } - function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; - } - function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - if (isDefined(value) && value !== "") { - if ( - typeof value === "string" || - typeof value === "number" || - typeof value === "boolean" - ) { - value = value.toString(); - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - result.push( - encodeValue(operator, value2, isKeyOperator(operator) ? key : ""), - ); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value2) { - tmp.push(encodeValue(operator, value2)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; - } - function parseUrl(template) { - return { - expand: expand.bind(null, template), - }; - } - function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - template = template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - if (operator && operator !== "+") { - var separator = ","; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); - if (template === "/") { - return template; - } else { - return template.replace(/\/$/, ""); - } - } - - // pkg/dist-src/parse.js - function parse(options) { - let method = options.method.toUpperCase(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, [ - "method", - "baseUrl", - "url", - "headers", - "request", - "mediaType", - ]); - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } - const omittedParameters = Object.keys(options) - .filter((option) => urlVariableNames.includes(option)) - .concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { - if (options.mediaType.format) { - headers.accept = headers.accept - .split(/,/) - .map((format) => - format.replace( - /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, - `application/vnd$1$2.${options.mediaType.format}`, - ), - ) - .join(","); - } - if (url.endsWith("/graphql")) { - if (options.mediaType.previews?.length) { - const previewsFromAcceptHeader = - headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader - .concat(options.mediaType.previews) - .map((preview) => { - const format = options.mediaType.format - ? `.${options.mediaType.format}` - : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }) - .join(","); - } - } - } - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } - return Object.assign( - { method, url, headers }, - typeof body !== "undefined" ? { body } : null, - options.request ? { request: options.request } : null, - ); - } - - // pkg/dist-src/endpoint-with-defaults.js - function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); - } - - // pkg/dist-src/with-defaults.js - function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS2 = merge(oldDefaults, newDefaults); - const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); - return Object.assign(endpoint2, { - DEFAULTS: DEFAULTS2, - defaults: withDefaults.bind(null, DEFAULTS2), - merge: merge.bind(null, DEFAULTS2), - parse, - }); - } - - // pkg/dist-src/index.js - var endpoint = withDefaults(null, DEFAULTS); - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 8467: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - GraphqlResponseError: () => GraphqlResponseError, - graphql: () => graphql2, - withCustomRequest: () => withCustomRequest, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_request3 = __nccwpck_require__(6234); - var import_universal_user_agent = __nccwpck_require__(5030); - - // pkg/dist-src/version.js - var VERSION = "7.0.2"; - - // pkg/dist-src/with-defaults.js - var import_request2 = __nccwpck_require__(6234); - - // pkg/dist-src/graphql.js - var import_request = __nccwpck_require__(6234); - - // pkg/dist-src/error.js - function _buildMessageForResponseErrors(data) { - return ( - `Request failed due to following response errors: -` + data.errors.map((e) => ` - ${e.message}`).join("\n") - ); - } - var GraphqlResponseError = class extends Error { - constructor(request2, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request2; - this.headers = headers; - this.response = response; - this.name = "GraphqlResponseError"; - this.errors = response.errors; - this.data = response.data; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } - }; - - // pkg/dist-src/graphql.js - var NON_VARIABLE_OPTIONS = [ - "method", - "baseUrl", - "url", - "headers", - "request", - "query", - "mediaType", - ]; - var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; - var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; - function graphql(request2, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject( - new Error(`[@octokit/graphql] "query" cannot be used as variable name`), - ); - } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject( - new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`), - ); - } - } - const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - if (!result.variables) { - result.variables = {}; - } - result.variables[key] = parsedOptions[key]; - return result; - }, {}); - const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request2(requestOptions).then((response) => { - if (response.data.errors) { - const headers = {}; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; - } - throw new GraphqlResponseError(requestOptions, headers, response.data); - } - return response.data.data; - }); - } - - // pkg/dist-src/with-defaults.js - function withDefaults(request2, newDefaults) { - const newRequest = request2.defaults(newDefaults); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: newRequest.endpoint, - }); - } - - // pkg/dist-src/index.js - var graphql2 = withDefaults(import_request3.request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`, - }, - method: "POST", - url: "/graphql", - }); - function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql", - }); - } - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 4193: /***/ (module) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - composePaginateRest: () => composePaginateRest, - isPaginatingEndpoint: () => isPaginatingEndpoint, - paginateRest: () => paginateRest, - paginatingEndpoints: () => paginatingEndpoints, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/version.js - var VERSION = "9.1.5"; - - // pkg/dist-src/normalize-paginated-list-response.js - function normalizePaginatedListResponse(response) { - if (!response.data) { - return { - ...response, - data: [], - }; - } - const responseNeedsNormalization = - "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) return response; - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; - } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } - response.data.total_count = totalCount; - return response; - } - - // pkg/dist-src/iterator.js - function iterator(octokit, route, parameters) { - const options = - typeof route === "function" - ? route.endpoint(parameters) - : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { done: true }; - try { - const response = await requestMethod({ method, url, headers }); - const normalizedResponse = normalizePaginatedListResponse(response); - url = ((normalizedResponse.headers.link || "").match( - /<([^>]+)>;\s*rel="next"/, - ) || [])[1]; - return { value: normalizedResponse }; - } catch (error) { - if (error.status !== 409) throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [], - }, - }; - } - }, - }), - }; - } - - // pkg/dist-src/paginate.js - function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = void 0; - } - return gather( - octokit, - [], - iterator(octokit, route, parameters)[Symbol.asyncIterator](), - mapFn, - ); - } - function gather(octokit, results, iterator2, mapFn) { - return iterator2.next().then((result) => { - if (result.done) { - return results; - } - let earlyExit = false; - function done() { - earlyExit = true; - } - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - if (earlyExit) { - return results; - } - return gather(octokit, results, iterator2, mapFn); - }); - } - - // pkg/dist-src/compose-paginate.js - var composePaginateRest = Object.assign(paginate, { - iterator, - }); - - // pkg/dist-src/generated/paginating-endpoints.js - var paginatingEndpoints = [ - "GET /advisories", - "GET /app/hook/deliveries", - "GET /app/installation-requests", - "GET /app/installations", - "GET /assignments/{assignment_id}/accepted_assignments", - "GET /classrooms", - "GET /classrooms/{classroom_id}/assignments", - "GET /enterprises/{enterprise}/dependabot/alerts", - "GET /enterprises/{enterprise}/secret-scanning/alerts", - "GET /events", - "GET /gists", - "GET /gists/public", - "GET /gists/starred", - "GET /gists/{gist_id}/comments", - "GET /gists/{gist_id}/commits", - "GET /gists/{gist_id}/forks", - "GET /installation/repositories", - "GET /issues", - "GET /licenses", - "GET /marketplace_listing/plans", - "GET /marketplace_listing/plans/{plan_id}/accounts", - "GET /marketplace_listing/stubbed/plans", - "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", - "GET /networks/{owner}/{repo}/events", - "GET /notifications", - "GET /organizations", - "GET /orgs/{org}/actions/cache/usage-by-repository", - "GET /orgs/{org}/actions/permissions/repositories", - "GET /orgs/{org}/actions/runners", - "GET /orgs/{org}/actions/secrets", - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - "GET /orgs/{org}/actions/variables", - "GET /orgs/{org}/actions/variables/{name}/repositories", - "GET /orgs/{org}/blocks", - "GET /orgs/{org}/code-scanning/alerts", - "GET /orgs/{org}/codespaces", - "GET /orgs/{org}/codespaces/secrets", - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - "GET /orgs/{org}/copilot/billing/seats", - "GET /orgs/{org}/dependabot/alerts", - "GET /orgs/{org}/dependabot/secrets", - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - "GET /orgs/{org}/events", - "GET /orgs/{org}/failed_invitations", - "GET /orgs/{org}/hooks", - "GET /orgs/{org}/hooks/{hook_id}/deliveries", - "GET /orgs/{org}/installations", - "GET /orgs/{org}/invitations", - "GET /orgs/{org}/invitations/{invitation_id}/teams", - "GET /orgs/{org}/issues", - "GET /orgs/{org}/members", - "GET /orgs/{org}/members/{username}/codespaces", - "GET /orgs/{org}/migrations", - "GET /orgs/{org}/migrations/{migration_id}/repositories", - "GET /orgs/{org}/outside_collaborators", - "GET /orgs/{org}/packages", - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - "GET /orgs/{org}/personal-access-token-requests", - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", - "GET /orgs/{org}/personal-access-tokens", - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", - "GET /orgs/{org}/projects", - "GET /orgs/{org}/properties/values", - "GET /orgs/{org}/public_members", - "GET /orgs/{org}/repos", - "GET /orgs/{org}/rulesets", - "GET /orgs/{org}/rulesets/rule-suites", - "GET /orgs/{org}/secret-scanning/alerts", - "GET /orgs/{org}/security-advisories", - "GET /orgs/{org}/teams", - "GET /orgs/{org}/teams/{team_slug}/discussions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - "GET /orgs/{org}/teams/{team_slug}/invitations", - "GET /orgs/{org}/teams/{team_slug}/members", - "GET /orgs/{org}/teams/{team_slug}/projects", - "GET /orgs/{org}/teams/{team_slug}/repos", - "GET /orgs/{org}/teams/{team_slug}/teams", - "GET /projects/columns/{column_id}/cards", - "GET /projects/{project_id}/collaborators", - "GET /projects/{project_id}/columns", - "GET /repos/{owner}/{repo}/actions/artifacts", - "GET /repos/{owner}/{repo}/actions/caches", - "GET /repos/{owner}/{repo}/actions/organization-secrets", - "GET /repos/{owner}/{repo}/actions/organization-variables", - "GET /repos/{owner}/{repo}/actions/runners", - "GET /repos/{owner}/{repo}/actions/runs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", - "GET /repos/{owner}/{repo}/actions/secrets", - "GET /repos/{owner}/{repo}/actions/variables", - "GET /repos/{owner}/{repo}/actions/workflows", - "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", - "GET /repos/{owner}/{repo}/activity", - "GET /repos/{owner}/{repo}/assignees", - "GET /repos/{owner}/{repo}/branches", - "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", - "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", - "GET /repos/{owner}/{repo}/code-scanning/alerts", - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - "GET /repos/{owner}/{repo}/code-scanning/analyses", - "GET /repos/{owner}/{repo}/codespaces", - "GET /repos/{owner}/{repo}/codespaces/devcontainers", - "GET /repos/{owner}/{repo}/codespaces/secrets", - "GET /repos/{owner}/{repo}/collaborators", - "GET /repos/{owner}/{repo}/comments", - "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/commits", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", - "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", - "GET /repos/{owner}/{repo}/commits/{ref}/status", - "GET /repos/{owner}/{repo}/commits/{ref}/statuses", - "GET /repos/{owner}/{repo}/contributors", - "GET /repos/{owner}/{repo}/dependabot/alerts", - "GET /repos/{owner}/{repo}/dependabot/secrets", - "GET /repos/{owner}/{repo}/deployments", - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - "GET /repos/{owner}/{repo}/environments", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", - "GET /repos/{owner}/{repo}/events", - "GET /repos/{owner}/{repo}/forks", - "GET /repos/{owner}/{repo}/hooks", - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", - "GET /repos/{owner}/{repo}/invitations", - "GET /repos/{owner}/{repo}/issues", - "GET /repos/{owner}/{repo}/issues/comments", - "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/issues/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", - "GET /repos/{owner}/{repo}/issues/{issue_number}/events", - "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", - "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", - "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", - "GET /repos/{owner}/{repo}/keys", - "GET /repos/{owner}/{repo}/labels", - "GET /repos/{owner}/{repo}/milestones", - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - "GET /repos/{owner}/{repo}/notifications", - "GET /repos/{owner}/{repo}/pages/builds", - "GET /repos/{owner}/{repo}/projects", - "GET /repos/{owner}/{repo}/pulls", - "GET /repos/{owner}/{repo}/pulls/comments", - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - "GET /repos/{owner}/{repo}/releases", - "GET /repos/{owner}/{repo}/releases/{release_id}/assets", - "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", - "GET /repos/{owner}/{repo}/rules/branches/{branch}", - "GET /repos/{owner}/{repo}/rulesets", - "GET /repos/{owner}/{repo}/rulesets/rule-suites", - "GET /repos/{owner}/{repo}/secret-scanning/alerts", - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", - "GET /repos/{owner}/{repo}/security-advisories", - "GET /repos/{owner}/{repo}/stargazers", - "GET /repos/{owner}/{repo}/subscribers", - "GET /repos/{owner}/{repo}/tags", - "GET /repos/{owner}/{repo}/teams", - "GET /repos/{owner}/{repo}/topics", - "GET /repositories", - "GET /repositories/{repository_id}/environments/{environment_name}/secrets", - "GET /repositories/{repository_id}/environments/{environment_name}/variables", - "GET /search/code", - "GET /search/commits", - "GET /search/issues", - "GET /search/labels", - "GET /search/repositories", - "GET /search/topics", - "GET /search/users", - "GET /teams/{team_id}/discussions", - "GET /teams/{team_id}/discussions/{discussion_number}/comments", - "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", - "GET /teams/{team_id}/discussions/{discussion_number}/reactions", - "GET /teams/{team_id}/invitations", - "GET /teams/{team_id}/members", - "GET /teams/{team_id}/projects", - "GET /teams/{team_id}/repos", - "GET /teams/{team_id}/teams", - "GET /user/blocks", - "GET /user/codespaces", - "GET /user/codespaces/secrets", - "GET /user/emails", - "GET /user/followers", - "GET /user/following", - "GET /user/gpg_keys", - "GET /user/installations", - "GET /user/installations/{installation_id}/repositories", - "GET /user/issues", - "GET /user/keys", - "GET /user/marketplace_purchases", - "GET /user/marketplace_purchases/stubbed", - "GET /user/memberships/orgs", - "GET /user/migrations", - "GET /user/migrations/{migration_id}/repositories", - "GET /user/orgs", - "GET /user/packages", - "GET /user/packages/{package_type}/{package_name}/versions", - "GET /user/public_emails", - "GET /user/repos", - "GET /user/repository_invitations", - "GET /user/social_accounts", - "GET /user/ssh_signing_keys", - "GET /user/starred", - "GET /user/subscriptions", - "GET /user/teams", - "GET /users", - "GET /users/{username}/events", - "GET /users/{username}/events/orgs/{org}", - "GET /users/{username}/events/public", - "GET /users/{username}/followers", - "GET /users/{username}/following", - "GET /users/{username}/gists", - "GET /users/{username}/gpg_keys", - "GET /users/{username}/keys", - "GET /users/{username}/orgs", - "GET /users/{username}/packages", - "GET /users/{username}/projects", - "GET /users/{username}/received_events", - "GET /users/{username}/received_events/public", - "GET /users/{username}/repos", - "GET /users/{username}/social_accounts", - "GET /users/{username}/ssh_signing_keys", - "GET /users/{username}/starred", - "GET /users/{username}/subscriptions", - ]; - - // pkg/dist-src/paginating-endpoints.js - function isPaginatingEndpoint(arg) { - if (typeof arg === "string") { - return paginatingEndpoints.includes(arg); - } else { - return false; - } - } - - // pkg/dist-src/index.js - function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit), - }), - }; - } - paginateRest.VERSION = VERSION; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 3044: /***/ (module) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - legacyRestEndpointMethods: () => legacyRestEndpointMethods, - restEndpointMethods: () => restEndpointMethods, - }); - module.exports = __toCommonJS(dist_src_exports); - - // pkg/dist-src/version.js - var VERSION = "10.3.0"; - - // pkg/dist-src/generated/endpoints.js - var Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: [ - "POST /orgs/{org}/actions/runners/{runner_id}/labels", - ], - addCustomLabelsToSelfHostedRunnerForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - addSelectedRepoToOrgVariable: [ - "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}", - ], - approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], - cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], - createEnvironmentVariable: [ - "POST /repositories/{repository_id}/environments/{environment_name}/variables", - ], - createOrUpdateEnvironmentSecret: [ - "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - createOrgVariable: ["POST /orgs/{org}/actions/variables"], - createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], - createRegistrationTokenForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/registration-token", - ], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], - createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], - createWorkflowDispatch: [ - "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", - ], - deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], - deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], - deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - deleteEnvironmentSecret: [ - "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", - ], - deleteEnvironmentVariable: [ - "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}", - ], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - deleteRepoVariable: ["DELETE /repos/{owner}/{repo}/actions/variables/{name}"], - deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], - deleteSelfHostedRunnerFromRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}", - ], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - disableSelectedRepositoryGithubActionsOrganization: [ - "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], - downloadArtifact: [ - "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}", - ], - downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], - downloadWorkflowRunAttemptLogs: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs", - ], - downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - enableSelectedRepositoryGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}", - ], - enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], - forceCancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"], - generateRunnerJitconfigForOrg: ["POST /orgs/{org}/actions/runners/generate-jitconfig"], - generateRunnerJitconfigForRepo: [ - "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig", - ], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], - getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], - getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], - getAllowedActionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getCustomOidcSubClaimForRepo: [ - "GET /repos/{owner}/{repo}/actions/oidc/customization/sub", - ], - getEnvironmentPublicKey: [ - "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key", - ], - getEnvironmentSecret: [ - "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}", - ], - getEnvironmentVariable: [ - "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}", - ], - getGithubActionsDefaultWorkflowPermissionsOrganization: [ - "GET /orgs/{org}/actions/permissions/workflow", - ], - getGithubActionsDefaultWorkflowPermissionsRepository: [ - "GET /repos/{owner}/{repo}/actions/permissions/workflow", - ], - getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], - getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], - getPendingDeploymentsForRun: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", - ], - getRepoPermissions: [ - "GET /repos/{owner}/{repo}/actions/permissions", - {}, - { renamed: ["actions", "getGithubActionsPermissionsRepository"] }, - ], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], - getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}", - ], - getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], - getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listEnvironmentSecrets: [ - "GET /repositories/{repository_id}/environments/{environment_name}/secrets", - ], - listEnvironmentVariables: [ - "GET /repositories/{repository_id}/environments/{environment_name}/variables", - ], - listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], - listJobsForWorkflowRunAttempt: [ - "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", - ], - listLabelsForSelfHostedRunnerForOrg: [ - "GET /orgs/{org}/actions/runners/{runner_id}/labels", - ], - listLabelsForSelfHostedRunnerForRepo: [ - "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listOrgVariables: ["GET /orgs/{org}/actions/variables"], - listRepoOrganizationSecrets: ["GET /repos/{owner}/{repo}/actions/organization-secrets"], - listRepoOrganizationVariables: [ - "GET /repos/{owner}/{repo}/actions/organization-variables", - ], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - listSelectedReposForOrgVariable: [ - "GET /orgs/{org}/actions/variables/{name}/repositories", - ], - listSelectedRepositoriesEnabledGithubActionsOrganization: [ - "GET /orgs/{org}/actions/permissions/repositories", - ], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], - listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs", - ], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels", - ], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - removeCustomLabelFromSelfHostedRunnerForOrg: [ - "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}", - ], - removeCustomLabelFromSelfHostedRunnerForRepo: [ - "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}", - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}", - ], - removeSelectedRepoFromOrgVariable: [ - "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}", - ], - reviewCustomGatesForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule", - ], - reviewPendingDeploymentsForRun: [ - "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments", - ], - setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], - setAllowedActionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions", - ], - setCustomLabelsForSelfHostedRunnerForOrg: [ - "PUT /orgs/{org}/actions/runners/{runner_id}/labels", - ], - setCustomLabelsForSelfHostedRunnerForRepo: [ - "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels", - ], - setCustomOidcSubClaimForRepo: [ - "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub", - ], - setGithubActionsDefaultWorkflowPermissionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/workflow", - ], - setGithubActionsDefaultWorkflowPermissionsRepository: [ - "PUT /repos/{owner}/{repo}/actions/permissions/workflow", - ], - setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], - setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories", - ], - setSelectedReposForOrgVariable: ["PUT /orgs/{org}/actions/variables/{name}/repositories"], - setSelectedRepositoriesEnabledGithubActionsOrganization: [ - "PUT /orgs/{org}/actions/permissions/repositories", - ], - setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"], - updateEnvironmentVariable: [ - "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}", - ], - updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], - updateRepoVariable: ["PATCH /repos/{owner}/{repo}/actions/variables/{name}"], - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: [ - "GET /notifications/threads/{thread_id}/subscription", - ], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"], - }, - apps: { - addRepoToInstallation: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }, - ], - addRepoToInstallationForAuthenticatedUser: [ - "PUT /user/installations/{installation_id}/repositories/{repository_id}", - ], - checkToken: ["POST /applications/{client_id}/token"], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: [ - "POST /app/installations/{installation_id}/access_tokens", - ], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], - getSubscriptionPlanForAccountStubbed: [ - "GET /marketplace_listing/stubbed/accounts/{account_id}", - ], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], - listInstallationReposForAuthenticatedUser: [ - "GET /user/installations/{installation_id}/repositories", - ], - listInstallationRequestsForAuthenticatedApp: ["GET /app/installation-requests"], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], - listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], - removeRepoFromInstallation: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - {}, - { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }, - ], - removeRepoFromInstallationForAuthenticatedUser: [ - "DELETE /user/installations/{installation_id}/repositories/{repository_id}", - ], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - scopeToken: ["POST /applications/{client_id}/token/scoped"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], - updateWebhookConfigForApp: ["PATCH /app/hook/config"], - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], - getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], - getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"], - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], - rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], - setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"], - }, - codeScanning: { - deleteAnalysis: [ - "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}", - ], - getAlert: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", - {}, - { renamedParameters: { alert_id: "alert_number" } }, - ], - getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], - getCodeqlDatabase: [ - "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", - ], - getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], - getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - listAlertInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - ], - listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: [ - "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", - {}, - { renamed: ["codeScanning", "listAlertInstances"] }, - ], - listCodeqlDatabases: ["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], - updateDefaultSetup: ["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"], - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct"], - getConductCode: ["GET /codes_of_conduct/{key}"], - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - checkPermissionsForDevcontainer: [ - "GET /repos/{owner}/{repo}/codespaces/permissions_check", - ], - codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], - createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/codespaces/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], - createWithPrForAuthenticatedUser: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces", - ], - createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], - deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: [ - "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}", - ], - deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], - exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], - getCodespacesForUserInOrg: ["GET /orgs/{org}/members/{username}/codespaces"], - getExportDetailsForAuthenticatedUser: [ - "GET /user/codespaces/{codespace_name}/exports/{export_id}", - ], - getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], - getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], - listDevcontainersInRepositoryForAuthenticatedUser: [ - "GET /repos/{owner}/{repo}/codespaces/devcontainers", - ], - listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: [ - "GET /orgs/{org}/codespaces", - {}, - { renamedParameters: { org_id: "org" } }, - ], - listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], - listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: [ - "GET /user/codespaces/secrets/{secret_name}/repositories", - ], - listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - ], - preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], - publishForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/publish"], - removeRepositoryForSecretForAuthenticatedUser: [ - "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}", - ], - repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], - setRepositoriesForSecretForAuthenticatedUser: [ - "PUT /user/codespaces/secrets/{secret_name}/repositories", - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories", - ], - startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], - stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: [ - "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop", - ], - updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"], - }, - copilot: { - addCopilotForBusinessSeatsForTeams: ["POST /orgs/{org}/copilot/billing/selected_teams"], - addCopilotForBusinessSeatsForUsers: ["POST /orgs/{org}/copilot/billing/selected_users"], - cancelCopilotSeatAssignmentForTeams: [ - "DELETE /orgs/{org}/copilot/billing/selected_teams", - ], - cancelCopilotSeatAssignmentForUsers: [ - "DELETE /orgs/{org}/copilot/billing/selected_users", - ], - getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], - getCopilotSeatDetailsForUser: ["GET /orgs/{org}/members/{username}/copilot"], - listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"], - }, - dependabot: { - addSelectedRepoToOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", - ], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], - getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/dependabot/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], - listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: [ - "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - ], - removeSelectedRepoFromOrgSecret: [ - "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}", - ], - setSelectedReposForOrgSecret: [ - "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories", - ], - updateAlert: ["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], - }, - dependencyGraph: { - createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], - diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"], - exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"], - }, - emojis: { get: ["GET /emojis"] }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"], - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"], - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"], - }, - interactions: { - getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: [ - "GET /user/interaction-limits", - {}, - { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }, - ], - removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], - removeRestrictionsForYourPublicRepos: [ - "DELETE /user/interaction-limits", - {}, - { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }, - ], - setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: [ - "PUT /user/interaction-limits", - {}, - { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }, - ], - }, - issues: { - addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - checkUserCanBeAssignedToIssue: [ - "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}", - ], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: [ - "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", - ], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], - removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"], - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"], - }, - markdown: { - render: ["POST /markdown"], - renderRaw: [ - "POST /markdown/raw", - { headers: { "content-type": "text/plain; charset=utf-8" } }, - ], - }, - meta: { - get: ["GET /meta"], - getAllVersions: ["GET /versions"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"], - }, - migrations: { - cancelImport: [ - "DELETE /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import", - }, - ], - deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], - deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], - downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], - getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], - getCommitAuthors: [ - "GET /repos/{owner}/{repo}/import/authors", - {}, - { - deprecated: - "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors", - }, - ], - getImportStatus: [ - "GET /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status", - }, - ], - getLargeFiles: [ - "GET /repos/{owner}/{repo}/import/large_files", - {}, - { - deprecated: - "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files", - }, - ], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], - listForAuthenticatedUser: ["GET /user/migrations"], - listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: [ - "GET /user/migrations/{migration_id}/repositories", - {}, - { renamed: ["migrations", "listReposForAuthenticatedUser"] }, - ], - mapCommitAuthor: [ - "PATCH /repos/{owner}/{repo}/import/authors/{author_id}", - {}, - { - deprecated: - "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author", - }, - ], - setLfsPreference: [ - "PATCH /repos/{owner}/{repo}/import/lfs", - {}, - { - deprecated: - "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference", - }, - ], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: [ - "PUT /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import", - }, - ], - unlockRepoForAuthenticatedUser: [ - "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock", - ], - unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], - updateImport: [ - "PATCH /repos/{owner}/{repo}/import", - {}, - { - deprecated: - "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import", - }, - ], - }, - oidc: { - getOidcCustomSubTemplateForOrg: ["GET /orgs/{org}/actions/oidc/customization/sub"], - updateOidcCustomSubTemplateForOrg: ["PUT /orgs/{org}/actions/oidc/customization/sub"], - }, - orgs: { - addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], - createInvitation: ["POST /orgs/{org}/invitations"], - createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], - createOrUpdateCustomPropertiesValuesForRepos: ["PATCH /orgs/{org}/properties/values"], - createOrUpdateCustomProperty: [ - "PUT /orgs/{org}/properties/schema/{custom_property_name}", - ], - createWebhook: ["POST /orgs/{org}/hooks"], - delete: ["DELETE /orgs/{org}"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - enableOrDisableSecurityProductOnAllOrgRepos: [ - "POST /orgs/{org}/{security_product}/{enablement}", - ], - get: ["GET /orgs/{org}"], - getAllCustomProperties: ["GET /orgs/{org}/properties/schema"], - getCustomProperty: ["GET /orgs/{org}/properties/schema/{custom_property_name}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"], - listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPatGrantRepositories: [ - "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", - ], - listPatGrantRequestRepositories: [ - "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", - ], - listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], - listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], - listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", - ], - removeCustomProperty: ["DELETE /orgs/{org}/properties/schema/{custom_property_name}"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], - removePublicMembershipForAuthenticatedUser: [ - "DELETE /orgs/{org}/public_members/{username}", - ], - removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], - reviewPatGrantRequest: [ - "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}", - ], - reviewPatGrantRequestsInBulk: ["POST /orgs/{org}/personal-access-token-requests"], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], - updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], - updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"], - }, - packages: { - deletePackageForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}", - ], - deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], - deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], - deletePackageVersionForAuthenticatedUser: [ - "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - deletePackageVersionForOrg: [ - "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - deletePackageVersionForUser: [ - "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - getAllPackageVersionsForAPackageOwnedByAnOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - {}, - { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }, - ], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions", - {}, - { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"], - }, - ], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions", - ], - getAllPackageVersionsForPackageOwnedByOrg: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", - ], - getAllPackageVersionsForPackageOwnedByUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions", - ], - getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], - getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], - getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], - getPackageVersionForAuthenticatedUser: [ - "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - getPackageVersionForOrganization: [ - "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - getPackageVersionForUser: [ - "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}", - ], - listDockerMigrationConflictingPackagesForAuthenticatedUser: [ - "GET /user/docker/conflicts", - ], - listDockerMigrationConflictingPackagesForOrganization: [ - "GET /orgs/{org}/docker/conflicts", - ], - listDockerMigrationConflictingPackagesForUser: ["GET /users/{username}/docker/conflicts"], - listPackagesForAuthenticatedUser: ["GET /user/packages"], - listPackagesForOrganization: ["GET /orgs/{org}/packages"], - listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/restore{?token}", - ], - restorePackageForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}", - ], - restorePackageForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}", - ], - restorePackageVersionForAuthenticatedUser: [ - "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", - ], - restorePackageVersionForOrg: [ - "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", - ], - restorePackageVersionForUser: [ - "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore", - ], - }, - projects: { - addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], - createCard: ["POST /projects/columns/{column_id}/cards"], - createColumn: ["POST /projects/{project_id}/columns"], - createForAuthenticatedUser: ["POST /user/projects"], - createForOrg: ["POST /orgs/{org}/projects"], - createForRepo: ["POST /repos/{owner}/{repo}/projects"], - delete: ["DELETE /projects/{project_id}"], - deleteCard: ["DELETE /projects/columns/cards/{card_id}"], - deleteColumn: ["DELETE /projects/columns/{column_id}"], - get: ["GET /projects/{project_id}"], - getCard: ["GET /projects/columns/cards/{card_id}"], - getColumn: ["GET /projects/columns/{column_id}"], - getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], - listCards: ["GET /projects/columns/{column_id}/cards"], - listCollaborators: ["GET /projects/{project_id}/collaborators"], - listColumns: ["GET /projects/{project_id}/columns"], - listForOrg: ["GET /orgs/{org}/projects"], - listForRepo: ["GET /repos/{owner}/{repo}/projects"], - listForUser: ["GET /users/{username}/projects"], - moveCard: ["POST /projects/columns/cards/{card_id}/moves"], - moveColumn: ["POST /projects/columns/{column_id}/moves"], - removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], - update: ["PATCH /projects/{project_id}"], - updateCard: ["PATCH /projects/columns/cards/{card_id}"], - updateColumn: ["PATCH /projects/columns/{column_id}"], - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies", - ], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - deletePendingReview: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}", - ], - deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - dismissReview: [ - "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals", - ], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", - ], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: [ - "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: [ - "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", - ], - requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - submitReview: [ - "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events", - ], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], - updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - }, - rateLimit: { get: ["GET /rate_limit"] }, - reactions: { - createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - createForIssueComment: [ - "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", - ], - createForPullRequestReviewComment: [ - "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - ], - createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], - createForTeamDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - ], - createForTeamDiscussionInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - ], - deleteForCommitComment: [ - "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}", - ], - deleteForIssue: [ - "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}", - ], - deleteForIssueComment: [ - "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}", - ], - deleteForPullRequestComment: [ - "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}", - ], - deleteForRelease: [ - "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}", - ], - deleteForTeamDiscussion: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}", - ], - deleteForTeamDiscussionComment: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}", - ], - listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - listForPullRequestReviewComment: [ - "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", - ], - listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], - listForTeamDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", - ], - listForTeamDiscussionInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", - ], - }, - repos: { - acceptInvitation: [ - "PATCH /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }, - ], - acceptInvitationForAuthenticatedUser: [ - "PATCH /user/repository_invitations/{invitation_id}", - ], - addAppAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - addTeamAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - addUserAccessRestrictions: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - checkAutomatedSecurityFixes: ["GET /repos/{owner}/{repo}/automated-security-fixes"], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], - codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], - createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - createCommitSignatureProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - ], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentBranchPolicy: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - ], - createDeploymentProtectionRule: [ - "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", - ], - createDeploymentStatus: [ - "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createOrgRuleset: ["POST /orgs/{org}/rulesets"], - createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages"], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], - createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], - createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: [ - "DELETE /user/repository_invitations/{invitation_id}", - {}, - { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }, - ], - declineInvitationForAuthenticatedUser: [ - "DELETE /user/repository_invitations/{invitation_id}", - ], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - deleteAdminBranchProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], - deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - ], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], - deleteDeploymentBranchPolicy: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", - ], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], - deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], - deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], - disableDeploymentProtectionRule: [ - "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", - ], - disablePrivateVulnerabilityReporting: [ - "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting", - ], - disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], - downloadArchive: [ - "GET /repos/{owner}/{repo}/zipball/{ref}", - {}, - { renamed: ["repos", "downloadZipballArchive"] }, - ], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], - enablePrivateVulnerabilityReporting: [ - "PUT /repos/{owner}/{repo}/private-vulnerability-reporting", - ], - enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], - generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions", - ], - getAdminBranchProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - getAllDeploymentProtectionRules: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules", - ], - getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - ], - getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - ], - getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], - getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: [ - "GET /repos/{owner}/{repo}/collaborators/{username}/permission", - ], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures", - ], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getCustomDeploymentProtectionRule: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}", - ], - getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentBranchPolicy: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", - ], - getDeploymentStatus: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}", - ], - getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], - getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], - getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], - getOrgRulesets: ["GET /orgs/{org}/rulesets"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getRepoRuleSuite: ["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"], - getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], - getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], - getStatusChecksProtection: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - getTeamsWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - ], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: [ - "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - ], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], - getWebhookDelivery: [ - "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}", - ], - listActivities: ["GET /repos/{owner}/{repo}/activity"], - listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head", - ], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listCustomDeploymentRuleIntegrations: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", - ], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentBranchPolicies: [ - "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", - ], - listDeploymentStatuses: [ - "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", - ], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: [ - "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", - ], - listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: [ - "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts", - ], - removeAppAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], - removeStatusCheckContexts: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - removeStatusCheckProtection: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - removeTeamAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - removeUserAccessRestrictions: [ - "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: [ - "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins", - ], - setAppAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", - {}, - { mapToData: "apps" }, - ], - setStatusCheckContexts: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", - {}, - { mapToData: "contexts" }, - ], - setTeamAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", - {}, - { mapToData: "teams" }, - ], - setUserAccessRestrictions: [ - "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", - {}, - { mapToData: "users" }, - ], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateDeploymentBranchPolicy: [ - "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}", - ], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], - updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], - updatePullRequestReviewProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews", - ], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], - updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], - updateStatusCheckPotection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - {}, - { renamed: ["repos", "updateStatusCheckProtection"] }, - ], - updateStatusCheckProtection: [ - "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", - ], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], - uploadReleaseAsset: [ - "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", - { baseUrl: "https://uploads.github.com" }, - ], - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits"], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics"], - users: ["GET /search/users"], - }, - secretScanning: { - getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: [ - "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", - ], - updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - }, - securityAdvisories: { - createPrivateVulnerabilityReport: [ - "POST /repos/{owner}/{repo}/security-advisories/reports", - ], - createRepositoryAdvisory: ["POST /repos/{owner}/{repo}/security-advisories"], - createRepositoryAdvisoryCveRequest: [ - "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve", - ], - getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], - getRepositoryAdvisory: ["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"], - listGlobalAdvisories: ["GET /advisories"], - listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], - listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], - updateRepositoryAdvisory: ["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"], - }, - teams: { - addOrUpdateMembershipForUserInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - addOrUpdateProjectPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}", - ], - addOrUpdateRepoPermissionsInOrg: [ - "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}", - ], - checkPermissionsForProjectInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}", - ], - checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: [ - "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - deleteDiscussionInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: [ - "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", - ], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], - listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: [ - "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}", - ], - removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - updateDiscussionCommentInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}", - ], - updateDiscussionInOrg: [ - "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}", - ], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"], - }, - users: { - addEmailForAuthenticated: [ - "POST /user/emails", - {}, - { renamed: ["users", "addEmailForAuthenticatedUser"] }, - ], - addEmailForAuthenticatedUser: ["POST /user/emails"], - addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: [ - "POST /user/gpg_keys", - {}, - { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }, - ], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: [ - "POST /user/keys", - {}, - { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }, - ], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteEmailForAuthenticated: [ - "DELETE /user/emails", - {}, - { renamed: ["users", "deleteEmailForAuthenticatedUser"] }, - ], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: [ - "DELETE /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }, - ], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: [ - "DELETE /user/keys/{key_id}", - {}, - { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }, - ], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], - deleteSshSigningKeyForAuthenticatedUser: [ - "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}", - ], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: [ - "GET /user/gpg_keys/{gpg_key_id}", - {}, - { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }, - ], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: [ - "GET /user/keys/{key_id}", - {}, - { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }, - ], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: [ - "GET /user/blocks", - {}, - { renamed: ["users", "listBlockedByAuthenticatedUser"] }, - ], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: [ - "GET /user/emails", - {}, - { renamed: ["users", "listEmailsForAuthenticatedUser"] }, - ], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: [ - "GET /user/following", - {}, - { renamed: ["users", "listFollowedByAuthenticatedUser"] }, - ], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: [ - "GET /user/gpg_keys", - {}, - { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }, - ], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: [ - "GET /user/public_emails", - {}, - { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }, - ], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: [ - "GET /user/keys", - {}, - { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }, - ], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], - listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: [ - "PATCH /user/email/visibility", - {}, - { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }, - ], - setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"], - }, - }; - var endpoints_default = Endpoints; - - // pkg/dist-src/endpoints-to-methods.js - var endpointMethodsMap = /* @__PURE__ */ new Map(); - for (const [scope, endpoints] of Object.entries(endpoints_default)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign( - { - method, - url, - }, - defaults, - ); - if (!endpointMethodsMap.has(scope)) { - endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); - } - endpointMethodsMap.get(scope).set(methodName, { - scope, - methodName, - endpointDefaults, - decorations, - }); - } - } - var handler = { - has({ scope }, methodName) { - return endpointMethodsMap.get(scope).has(methodName); - }, - getOwnPropertyDescriptor(target, methodName) { - return { - value: this.get(target, methodName), - // ensures method is in the cache - configurable: true, - writable: true, - enumerable: true, - }; - }, - defineProperty(target, methodName, descriptor) { - Object.defineProperty(target.cache, methodName, descriptor); - return true; - }, - deleteProperty(target, methodName) { - delete target.cache[methodName]; - return true; - }, - ownKeys({ scope }) { - return [...endpointMethodsMap.get(scope).keys()]; - }, - set(target, methodName, value) { - return (target.cache[methodName] = value); - }, - get({ octokit, scope, cache }, methodName) { - if (cache[methodName]) { - return cache[methodName]; - } - const method = endpointMethodsMap.get(scope).get(methodName); - if (!method) { - return void 0; - } - const { endpointDefaults, decorations } = method; - if (decorations) { - cache[methodName] = decorate( - octokit, - scope, - methodName, - endpointDefaults, - decorations, - ); - } else { - cache[methodName] = octokit.request.defaults(endpointDefaults); - } - return cache[methodName]; - }, - }; - function endpointsToMethods(octokit) { - const newMethods = {}; - for (const scope of endpointMethodsMap.keys()) { - newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); - } - return newMethods; - } - function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - function withDecorations(...args) { - let options = requestWithDefaults.endpoint.merge(...args); - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: void 0, - }); - return requestWithDefaults(options); - } - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn( - `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`, - ); - } - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } - if (decorations.renamedParameters) { - const options2 = requestWithDefaults.endpoint.merge(...args); - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options2) { - octokit.log.warn( - `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`, - ); - if (!(alias in options2)) { - options2[alias] = options2[name]; - } - delete options2[name]; - } - } - return requestWithDefaults(options2); - } - return requestWithDefaults(...args); - } - return Object.assign(withDecorations, requestWithDefaults); - } - - // pkg/dist-src/index.js - function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - rest: api, - }; - } - restEndpointMethods.VERSION = VERSION; - function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit); - return { - ...api, - rest: api, - }; - } - legacyRestEndpointMethods.VERSION = VERSION; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 537: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __create = Object.create; - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __getProtoOf = Object.getPrototypeOf; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toESM = (mod, isNodeMode, target) => ( - (target = mod != null ? __create(__getProtoOf(mod)) : {}), - __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule - ? __defProp(target, "default", { value: mod, enumerable: true }) - : target, - mod, - ) - ); - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - RequestError: () => RequestError, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_deprecation = __nccwpck_require__(8932); - var import_once = __toESM(__nccwpck_require__(1223)); - var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); - var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); - var RequestError = class extends Error { - constructor(message, statusCode, options) { - super(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = "HttpError"; - this.status = statusCode; - let headers; - if ("headers" in options && typeof options.headers !== "undefined") { - headers = options.headers; - } - if ("response" in options) { - this.response = options.response; - headers = options.response.headers; - } - const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace( - / .*$/, - " [REDACTED]", - ), - }); - } - requestCopy.url = requestCopy.url - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; - Object.defineProperty(this, "code", { - get() { - logOnceCode( - new import_deprecation.Deprecation( - "[@octokit/request-error] `error.code` is deprecated, use `error.status`.", - ), - ); - return statusCode; - }, - }); - Object.defineProperty(this, "headers", { - get() { - logOnceHeaders( - new import_deprecation.Deprecation( - "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.", - ), - ); - return headers || {}; - }, - }); - } - }; - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 6234: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - var __defProp = Object.defineProperty; - var __getOwnPropDesc = Object.getOwnPropertyDescriptor; - var __getOwnPropNames = Object.getOwnPropertyNames; - var __hasOwnProp = Object.prototype.hasOwnProperty; - var __export = (target, all) => { - for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); - }; - var __copyProps = (to, from, except, desc) => { - if ((from && typeof from === "object") || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { - get: () => from[key], - enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable, - }); - } - return to; - }; - var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - - // pkg/dist-src/index.js - var dist_src_exports = {}; - __export(dist_src_exports, { - request: () => request, - }); - module.exports = __toCommonJS(dist_src_exports); - var import_endpoint = __nccwpck_require__(9440); - var import_universal_user_agent = __nccwpck_require__(5030); - - // pkg/dist-src/version.js - var VERSION = "8.2.0"; - - // pkg/dist-src/is-plain-object.js - function isPlainObject(value) { - if (typeof value !== "object" || value === null) return false; - if (Object.prototype.toString.call(value) !== "[object Object]") return false; - const proto = Object.getPrototypeOf(value); - if (proto === null) return true; - const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; - return ( - typeof Ctor === "function" && - Ctor instanceof Ctor && - Function.prototype.call(Ctor) === Function.prototype.call(value) - ); - } - - // pkg/dist-src/fetch-wrapper.js - var import_request_error = __nccwpck_require__(537); - - // pkg/dist-src/get-buffer-response.js - function getBufferResponse(response) { - return response.arrayBuffer(); - } - - // pkg/dist-src/fetch-wrapper.js - function fetchWrapper(requestOptions) { - var _a, _b, _c; - const log = - requestOptions.request && requestOptions.request.log - ? requestOptions.request.log - : console; - const parseSuccessResponseBody = - ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; - if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } - let headers = {}; - let status; - let url; - let { fetch } = globalThis; - if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { - fetch = requestOptions.request.fetch; - } - if (!fetch) { - throw new Error( - "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing", - ); - } - return fetch(requestOptions.url, { - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - signal: (_c = requestOptions.request) == null ? void 0 : _c.signal, - // duplex must be set if request.body is ReadableStream or Async Iterables. - // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. - ...(requestOptions.body && { duplex: "half" }), - }) - .then(async (response) => { - url = response.url; - status = response.status; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if ("deprecation" in headers) { - const matches = - headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn( - `[@octokit/request] "${requestOptions.method} ${ - requestOptions.url - }" is deprecated. It is scheduled to be removed on ${headers.sunset}${ - deprecationLink ? `. See ${deprecationLink}` : "" - }`, - ); - } - if (status === 204 || status === 205) { - return; - } - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } - throw new import_request_error.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: void 0, - }, - request: requestOptions, - }); - } - if (status === 304) { - throw new import_request_error.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response), - }, - request: requestOptions, - }); - } - if (status >= 400) { - const data = await getResponseData(response); - const error = new import_request_error.RequestError( - toErrorMessage(data), - status, - { - response: { - url, - status, - headers, - data, - }, - request: requestOptions, - }, - ); - throw error; - } - return parseSuccessResponseBody ? await getResponseData(response) : response.body; - }) - .then((data) => { - return { - status, - url, - headers, - data, - }; - }) - .catch((error) => { - if (error instanceof import_request_error.RequestError) throw error; - else if (error.name === "AbortError") throw error; - let message = error.message; - if (error.name === "TypeError" && "cause" in error) { - if (error.cause instanceof Error) { - message = error.cause.message; - } else if (typeof error.cause === "string") { - message = error.cause; - } - } - throw new import_request_error.RequestError(message, 500, { - request: requestOptions, - }); - }); - } - async function getResponseData(response) { - const contentType = response.headers.get("content-type"); - if (/application\/json/.test(contentType)) { - return response - .json() - .catch(() => response.text()) - .catch(() => ""); - } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } - return getBufferResponse(response); - } - function toErrorMessage(data) { - if (typeof data === "string") return data; - let suffix; - if ("documentation_url" in data) { - suffix = ` - ${data.documentation_url}`; - } else { - suffix = ""; - } - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`; - } - return `${data.message}${suffix}`; - } - return `Unknown error: ${JSON.stringify(data)}`; - } - - // pkg/dist-src/with-defaults.js - function withDefaults(oldEndpoint, newDefaults) { - const endpoint2 = oldEndpoint.defaults(newDefaults); - const newApi = function (route, parameters) { - const endpointOptions = endpoint2.merge(route, parameters); - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint2.parse(endpointOptions)); - } - const request2 = (route2, parameters2) => { - return fetchWrapper(endpoint2.parse(endpoint2.merge(route2, parameters2))); - }; - Object.assign(request2, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2), - }); - return endpointOptions.request.hook(request2, endpointOptions); - }; - return Object.assign(newApi, { - endpoint: endpoint2, - defaults: withDefaults.bind(null, endpoint2), - }); - } - - // pkg/dist-src/index.js - var request = withDefaults(import_endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${(0, - import_universal_user_agent.getUserAgent)()}`, - }, - }); - // Annotate the CommonJS export names for ESM import in node: - 0 && 0; - - /***/ - }, - - /***/ 3682: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - var register = __nccwpck_require__(4670); - var addHook = __nccwpck_require__(5549); - var removeHook = __nccwpck_require__(6819); - - // bind with array of arguments: https://stackoverflow.com/a/21792913 - var bind = Function.bind; - var bindable = bind.bind(bind); - - function bindApi(hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]); - hook.api = { remove: removeHookRef }; - hook.remove = removeHookRef; - ["before", "error", "after", "wrap"].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind]; - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); - }); - } - - function HookSingular() { - var singularHookName = "h"; - var singularHookState = { - registry: {}, - }; - var singularHook = register.bind(null, singularHookState, singularHookName); - bindApi(singularHook, singularHookState, singularHookName); - return singularHook; - } - - function HookCollection() { - var state = { - registry: {}, - }; - - var hook = register.bind(null, state); - bindApi(hook, state); - - return hook; - } - - var collectionHookDeprecationMessageDisplayed = false; - function Hook() { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn( - '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4', - ); - collectionHookDeprecationMessageDisplayed = true; - } - return HookCollection(); - } - - Hook.Singular = HookSingular.bind(); - Hook.Collection = HookCollection.bind(); - - module.exports = Hook; - // expose constructors as a named property for TypeScript - module.exports.Hook = Hook; - module.exports.Singular = Hook.Singular; - module.exports.Collection = Hook.Collection; - - /***/ - }, - - /***/ 5549: /***/ (module) => { - module.exports = addHook; - - function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } - - if (kind === "before") { - hook = function (method, options) { - return Promise.resolve() - .then(orig.bind(null, options)) - .then(method.bind(null, options)); - }; - } - - if (kind === "after") { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; - } - - if (kind === "error") { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; - } - - state.registry[name].push({ - hook: hook, - orig: orig, - }); - } - - /***/ - }, - - /***/ 4670: /***/ (module) => { - module.exports = register; - - function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - - if (!options) { - options = {}; - } - - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name) { - return register.bind(null, state, name, callback, options); - }, method)(); - } - - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - - return state.registry[name].reduce(function (method, registered) { - return registered.hook.bind(null, method, options); - }, method)(); - }); - } - - /***/ - }, - - /***/ 6819: /***/ (module) => { - module.exports = removeHook; - - function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - - if (index === -1) { - return; - } - - state.registry[name].splice(index, 1); - } - - /***/ - }, - - /***/ 8932: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - - class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - - this.name = "Deprecation"; - } - } - - exports.Deprecation = Deprecation; - - /***/ - }, - - /***/ 7129: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - // A linked list to keep track of recently-used-ness - const Yallist = __nccwpck_require__(665); - - const MAX = Symbol("max"); - const LENGTH = Symbol("length"); - const LENGTH_CALCULATOR = Symbol("lengthCalculator"); - const ALLOW_STALE = Symbol("allowStale"); - const MAX_AGE = Symbol("maxAge"); - const DISPOSE = Symbol("dispose"); - const NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet"); - const LRU_LIST = Symbol("lruList"); - const CACHE = Symbol("cache"); - const UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet"); - - const naiveLength = () => 1; - - // lruList is a yallist where the head is the youngest - // item, and the tail is the oldest. the list contains the Hit - // objects as the entries. - // Each Hit object has a reference to its Yallist.Node. This - // never changes. - // - // cache is a Map (or PseudoMap) that matches the keys to - // the Yallist.Node object. - class LRUCache { - constructor(options) { - if (typeof options === "number") options = { max: options }; - - if (!options) options = {}; - - if (options.max && (typeof options.max !== "number" || options.max < 0)) - throw new TypeError("max must be a non-negative number"); - // Kind of weird to have a default max of Infinity, but oh well. - const max = (this[MAX] = options.max || Infinity); - - const lc = options.length || naiveLength; - this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc; - this[ALLOW_STALE] = options.stale || false; - if (options.maxAge && typeof options.maxAge !== "number") - throw new TypeError("maxAge must be a number"); - this[MAX_AGE] = options.maxAge || 0; - this[DISPOSE] = options.dispose; - this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; - this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false; - this.reset(); - } - - // resize the cache when the max changes. - set max(mL) { - if (typeof mL !== "number" || mL < 0) - throw new TypeError("max must be a non-negative number"); - - this[MAX] = mL || Infinity; - trim(this); - } - get max() { - return this[MAX]; - } - - set allowStale(allowStale) { - this[ALLOW_STALE] = !!allowStale; - } - get allowStale() { - return this[ALLOW_STALE]; - } - - set maxAge(mA) { - if (typeof mA !== "number") throw new TypeError("maxAge must be a non-negative number"); - - this[MAX_AGE] = mA; - trim(this); - } - get maxAge() { - return this[MAX_AGE]; - } - - // resize the cache when the lengthCalculator changes. - set lengthCalculator(lC) { - if (typeof lC !== "function") lC = naiveLength; - - if (lC !== this[LENGTH_CALCULATOR]) { - this[LENGTH_CALCULATOR] = lC; - this[LENGTH] = 0; - this[LRU_LIST].forEach((hit) => { - hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key); - this[LENGTH] += hit.length; - }); - } - trim(this); - } - get lengthCalculator() { - return this[LENGTH_CALCULATOR]; - } - - get length() { - return this[LENGTH]; - } - get itemCount() { - return this[LRU_LIST].length; - } - - rforEach(fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].tail; walker !== null; ) { - const prev = walker.prev; - forEachStep(this, fn, walker, thisp); - walker = prev; - } - } - - forEach(fn, thisp) { - thisp = thisp || this; - for (let walker = this[LRU_LIST].head; walker !== null; ) { - const next = walker.next; - forEachStep(this, fn, walker, thisp); - walker = next; - } - } - - keys() { - return this[LRU_LIST].toArray().map((k) => k.key); - } - - values() { - return this[LRU_LIST].toArray().map((k) => k.value); - } - - reset() { - if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) { - this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value)); - } - - this[CACHE] = new Map(); // hash of items by key - this[LRU_LIST] = new Yallist(); // list of items in order of use recency - this[LENGTH] = 0; // length of items in the list - } - - dump() { - return this[LRU_LIST] - .map((hit) => - isStale(this, hit) - ? false - : { - k: hit.key, - v: hit.value, - e: hit.now + (hit.maxAge || 0), - }, - ) - .toArray() - .filter((h) => h); - } - - dumpLru() { - return this[LRU_LIST]; - } - - set(key, value, maxAge) { - maxAge = maxAge || this[MAX_AGE]; - - if (maxAge && typeof maxAge !== "number") throw new TypeError("maxAge must be a number"); - - const now = maxAge ? Date.now() : 0; - const len = this[LENGTH_CALCULATOR](value, key); - - if (this[CACHE].has(key)) { - if (len > this[MAX]) { - del(this, this[CACHE].get(key)); - return false; - } - - const node = this[CACHE].get(key); - const item = node.value; - - // dispose of the old one before overwriting - // split out into 2 ifs for better coverage tracking - if (this[DISPOSE]) { - if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value); - } - - item.now = now; - item.maxAge = maxAge; - item.value = value; - this[LENGTH] += len - item.length; - item.length = len; - this.get(key); - trim(this); - return true; - } - - const hit = new Entry(key, value, len, now, maxAge); - - // oversized objects fall out of cache automatically. - if (hit.length > this[MAX]) { - if (this[DISPOSE]) this[DISPOSE](key, value); - - return false; - } - - this[LENGTH] += hit.length; - this[LRU_LIST].unshift(hit); - this[CACHE].set(key, this[LRU_LIST].head); - trim(this); - return true; - } - - has(key) { - if (!this[CACHE].has(key)) return false; - const hit = this[CACHE].get(key).value; - return !isStale(this, hit); - } - - get(key) { - return get(this, key, true); - } - - peek(key) { - return get(this, key, false); - } - - pop() { - const node = this[LRU_LIST].tail; - if (!node) return null; - - del(this, node); - return node.value; - } - - del(key) { - del(this, this[CACHE].get(key)); - } - - load(arr) { - // reset the cache - this.reset(); - - const now = Date.now(); - // A previous serialized cache has the most recent items first - for (let l = arr.length - 1; l >= 0; l--) { - const hit = arr[l]; - const expiresAt = hit.e || 0; - if (expiresAt === 0) - // the item was created without expiration in a non aged cache - this.set(hit.k, hit.v); - else { - const maxAge = expiresAt - now; - // dont add already expired items - if (maxAge > 0) { - this.set(hit.k, hit.v, maxAge); - } - } - } - } - - prune() { - this[CACHE].forEach((value, key) => get(this, key, false)); - } - } - - const get = (self, key, doUse) => { - const node = self[CACHE].get(key); - if (node) { - const hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) return undefined; - } else { - if (doUse) { - if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now(); - self[LRU_LIST].unshiftNode(node); - } - } - return hit.value; - } - }; - - const isStale = (self, hit) => { - if (!hit || (!hit.maxAge && !self[MAX_AGE])) return false; - - const diff = Date.now() - hit.now; - return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE]; - }; - - const trim = (self) => { - if (self[LENGTH] > self[MAX]) { - for (let walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null; ) { - // We know that we're about to delete this one, and also - // what the next least recently used key will be, so just - // go ahead and set it now. - const prev = walker.prev; - del(self, walker); - walker = prev; - } - } - }; - - const del = (self, node) => { - if (node) { - const hit = node.value; - if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value); - - self[LENGTH] -= hit.length; - self[CACHE].delete(hit.key); - self[LRU_LIST].removeNode(node); - } - }; - - class Entry { - constructor(key, value, length, now, maxAge) { - this.key = key; - this.value = value; - this.length = length; - this.now = now; - this.maxAge = maxAge || 0; - } - } - - const forEachStep = (self, fn, node, thisp) => { - let hit = node.value; - if (isStale(self, hit)) { - del(self, node); - if (!self[ALLOW_STALE]) hit = undefined; - } - if (hit) fn.call(thisp, hit.value, hit.key, self); - }; - - module.exports = LRUCache; - - /***/ - }, - - /***/ 1223: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - var wrappy = __nccwpck_require__(2940); - module.exports = wrappy(once); - module.exports.strict = wrappy(onceStrict); - - once.proto = once(function () { - Object.defineProperty(Function.prototype, "once", { - value: function () { - return once(this); - }, - configurable: true, - }); - - Object.defineProperty(Function.prototype, "onceStrict", { - value: function () { - return onceStrict(this); - }, - configurable: true, - }); - }); - - function once(fn) { - var f = function () { - if (f.called) return f.value; - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - f.called = false; - return f; - } - - function onceStrict(fn) { - var f = function () { - if (f.called) throw new Error(f.onceError); - f.called = true; - return (f.value = fn.apply(this, arguments)); - }; - var name = fn.name || "Function wrapped with `once`"; - f.onceError = name + " shouldn't be called more than once"; - f.called = false; - return f; - } - - /***/ - }, - - /***/ 1532: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const ANY = Symbol("SemVer ANY"); - // hoisted class for cyclic dependency - class Comparator { - static get ANY() { - return ANY; - } - - constructor(comp, options) { - options = parseOptions(options); - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp; - } else { - comp = comp.value; - } - } - - comp = comp.trim().split(/\s+/).join(" "); - debug("comparator", comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); - - if (this.semver === ANY) { - this.value = ""; - } else { - this.value = this.operator + this.semver.version; - } - - debug("comp", this); - } - - parse(comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - const m = comp.match(r); - - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`); - } - - this.operator = m[1] !== undefined ? m[1] : ""; - if (this.operator === "=") { - this.operator = ""; - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY; - } else { - this.semver = new SemVer(m[2], this.options.loose); - } - } - - toString() { - return this.value; - } - - test(version) { - debug("Comparator.test", version, this.options.loose); - - if (this.semver === ANY || version === ANY) { - return true; - } - - if (typeof version === "string") { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false; - } - } - - return cmp(version, this.operator, this.semver, this.options); - } - - intersects(comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError("a Comparator is required"); - } - - if (this.operator === "") { - if (this.value === "") { - return true; - } - return new Range(comp.value, options).test(this.value); - } else if (comp.operator === "") { - if (comp.value === "") { - return true; - } - return new Range(this.value, options).test(comp.semver); - } - - options = parseOptions(options); - - // Special cases where nothing can possibly be lower - if ( - options.includePrerelease && - (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0") - ) { - return false; - } - if ( - !options.includePrerelease && - (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0")) - ) { - return false; - } - - // Same direction increasing (> or >=) - if (this.operator.startsWith(">") && comp.operator.startsWith(">")) { - return true; - } - // Same direction decreasing (< or <=) - if (this.operator.startsWith("<") && comp.operator.startsWith("<")) { - return true; - } - // same SemVer and both sides are inclusive (<= or >=) - if ( - this.semver.version === comp.semver.version && - this.operator.includes("=") && - comp.operator.includes("=") - ) { - return true; - } - // opposite directions less than - if ( - cmp(this.semver, "<", comp.semver, options) && - this.operator.startsWith(">") && - comp.operator.startsWith("<") - ) { - return true; - } - // opposite directions greater than - if ( - cmp(this.semver, ">", comp.semver, options) && - this.operator.startsWith("<") && - comp.operator.startsWith(">") - ) { - return true; - } - return false; - } - } - - module.exports = Comparator; - - const parseOptions = __nccwpck_require__(785); - const { safeRe: re, t } = __nccwpck_require__(9523); - const cmp = __nccwpck_require__(5098); - const debug = __nccwpck_require__(427); - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - - /***/ - }, - - /***/ 9828: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // hoisted class for cyclic dependency - class Range { - constructor(range, options) { - options = parseOptions(options); - - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range; - } else { - return new Range(range.raw, options); - } - } - - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value; - this.set = [[range]]; - this.format(); - return this; - } - - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - - // First reduce all whitespace as much as possible so we do not have to rely - // on potentially slow regexes like \s*. This is then stored and used for - // future error messages as well. - this.raw = range.trim().split(/\s+/).join(" "); - - // First, split on || - this.set = this.raw - .split("||") - // map the range to a 2d array of comparators - .map((r) => this.parseRange(r.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter((c) => c.length); - - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${this.raw}`); - } - - // if we have any that are not the null set, throw out null sets. - if (this.set.length > 1) { - // keep the first one, in case they're all null sets - const first = this.set[0]; - this.set = this.set.filter((c) => !isNullSet(c[0])); - if (this.set.length === 0) { - this.set = [first]; - } else if (this.set.length > 1) { - // if we have any that are *, then the range is just * - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c]; - break; - } - } - } - } - - this.format(); - } - - format() { - this.range = this.set - .map((comps) => comps.join(" ").trim()) - .join("||") - .trim(); - return this.range; - } - - toString() { - return this.range; - } - - parseRange(range) { - // memoize range parsing for performance. - // this is a very hot path, and fully deterministic. - const memoOpts = - (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | - (this.options.loose && FLAG_LOOSE); - const memoKey = memoOpts + ":" + range; - const cached = cache.get(memoKey); - if (cached) { - return cached; - } - - const loose = this.options.loose; - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); - debug("hyphen replace", range); - - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); - debug("comparator trim", range); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace); - debug("tilde trim", range); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace); - debug("caret trim", range); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - let rangeList = range - .split(" ") - .map((comp) => parseComparator(comp, this.options)) - .join(" ") - .split(/\s+/) - // >=0.0.0 is equivalent to * - .map((comp) => replaceGTE0(comp, this.options)); - - if (loose) { - // in loose mode, throw out any that are not valid comparators - rangeList = rangeList.filter((comp) => { - debug("loose invalid filter", comp, this.options); - return !!comp.match(re[t.COMPARATORLOOSE]); - }); - } - debug("range list", rangeList); - - // if any comparators are the null set, then replace with JUST null set - // if more than one comparator, remove any * comparators - // also, don't include the same comparator more than once - const rangeMap = new Map(); - const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); - for (const comp of comparators) { - if (isNullSet(comp)) { - return [comp]; - } - rangeMap.set(comp.value, comp); - } - if (rangeMap.size > 1 && rangeMap.has("")) { - rangeMap.delete(""); - } - - const result = [...rangeMap.values()]; - cache.set(memoKey, result); - return result; - } - - intersects(range, options) { - if (!(range instanceof Range)) { - throw new TypeError("a Range is required"); - } - - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options); - }); - }) - ); - }) - ); - }); - } - - // if ANY of the sets match ALL of its comparators, then pass - test(version) { - if (!version) { - return false; - } - - if (typeof version === "string") { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false; - } - } - - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true; - } - } - return false; - } - } - - module.exports = Range; - - const LRU = __nccwpck_require__(7129); - const cache = new LRU({ max: 1000 }); - - const parseOptions = __nccwpck_require__(785); - const Comparator = __nccwpck_require__(1532); - const debug = __nccwpck_require__(427); - const SemVer = __nccwpck_require__(8088); - const { - safeRe: re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace, - } = __nccwpck_require__(9523); - const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = __nccwpck_require__(2293); - - const isNullSet = (c) => c.value === "<0.0.0-0"; - const isAny = (c) => c.value === ""; - - // take a set of comparators and determine whether there - // exists a version which can satisfy it - const isSatisfiable = (comparators, options) => { - let result = true; - const remainingComparators = comparators.slice(); - let testComparator = remainingComparators.pop(); - - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options); - }); - - testComparator = remainingComparators.pop(); - } - - return result; - }; - - // comprised of xranges, tildes, stars, and gtlt's at this point. - // already replaced the hyphen ranges - // turn into a set of JUST comparators. - const parseComparator = (comp, options) => { - debug("comp", comp, options); - comp = replaceCarets(comp, options); - debug("caret", comp); - comp = replaceTildes(comp, options); - debug("tildes", comp); - comp = replaceXRanges(comp, options); - debug("xrange", comp); - comp = replaceStars(comp, options); - debug("stars", comp); - return comp; - }; - - const isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; - - // ~, ~> --> * (any, kinda silly) - // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 - // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 - // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 - // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 - // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 - // ~0.0.1 --> >=0.0.1 <0.1.0-0 - const replaceTildes = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceTilde(c, options)) - .join(" "); - }; - - const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; - return comp.replace(r, (_, M, m, p, pr) => { - debug("tilde", comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ""; - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; - } else if (pr) { - debug("replaceTilde pr", pr); - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } else { - // ~1.2.3 == >=1.2.3 <1.3.0-0 - ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; - } - - debug("tilde return", ret); - return ret; - }); - }; - - // ^ --> * (any, kinda silly) - // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 - // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 - // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 - // ^1.2.3 --> >=1.2.3 <2.0.0-0 - // ^1.2.0 --> >=1.2.0 <2.0.0-0 - // ^0.0.1 --> >=0.0.1 <0.0.2-0 - // ^0.1.0 --> >=0.1.0 <0.2.0-0 - const replaceCarets = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceCaret(c, options)) - .join(" "); - }; - - const replaceCaret = (comp, options) => { - debug("caret", comp, options); - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; - const z = options.includePrerelease ? "-0" : ""; - return comp.replace(r, (_, M, m, p, pr) => { - debug("caret", comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ""; - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; - } else if (isX(p)) { - if (M === "0") { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; - } - } else if (pr) { - debug("replaceCaret pr", pr); - if (M === "0") { - if (m === "0") { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; - } - } else { - debug("no pr"); - if (M === "0") { - if (m === "0") { - ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; - } - } - - debug("caret return", ret); - return ret; - }); - }; - - const replaceXRanges = (comp, options) => { - debug("replaceXRanges", comp, options); - return comp - .split(/\s+/) - .map((c) => replaceXRange(c, options)) - .join(" "); - }; - - const replaceXRange = (comp, options) => { - comp = comp.trim(); - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug("xRange", comp, ret, gtlt, M, m, p, pr); - const xM = isX(M); - const xm = xM || isX(m); - const xp = xm || isX(p); - const anyX = xp; - - if (gtlt === "=" && anyX) { - gtlt = ""; - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? "-0" : ""; - - if (xM) { - if (gtlt === ">" || gtlt === "<") { - // nothing is allowed - ret = "<0.0.0-0"; - } else { - // nothing is forbidden - ret = "*"; - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0; - } - p = 0; - - if (gtlt === ">") { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = ">="; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else { - m = +m + 1; - p = 0; - } - } else if (gtlt === "<=") { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = "<"; - if (xm) { - M = +M + 1; - } else { - m = +m + 1; - } - } - - if (gtlt === "<") { - pr = "-0"; - } - - ret = `${gtlt + M}.${m}.${p}${pr}`; - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; - } else if (xp) { - ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; - } - - debug("xRange return", ret); - - return ret; - }); - }; - - // Because * is AND-ed with everything else in the comparator, - // and '' means "any version", just remove the *s entirely. - const replaceStars = (comp, options) => { - debug("replaceStars", comp, options); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], ""); - }; - - const replaceGTE0 = (comp, options) => { - debug("replaceGTE0", comp, options); - return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); - }; - - // This function is passed to string.replace(re[t.HYPHENRANGE]) - // M, m, patch, prerelease, build - // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 - // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do - // 1.2 - 3.4 => >=1.2.0 <3.5.0-0 - const hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => { - if (isX(fM)) { - from = ""; - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? "-0" : ""}`; - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; - } else if (fpr) { - from = `>=${from}`; - } else { - from = `>=${from}${incPr ? "-0" : ""}`; - } - - if (isX(tM)) { - to = ""; - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0`; - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0`; - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}`; - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0`; - } else { - to = `<=${to}`; - } - - return `${from} ${to}`.trim(); - }; - - const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false; - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === Comparator.ANY) { - continue; - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver; - if ( - allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch - ) { - return true; - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; - }; - - /***/ - }, - - /***/ 8088: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const debug = __nccwpck_require__(427); - const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(2293); - const { safeRe: re, t } = __nccwpck_require__(9523); - - const parseOptions = __nccwpck_require__(785); - const { compareIdentifiers } = __nccwpck_require__(2463); - class SemVer { - constructor(version, options) { - options = parseOptions(options); - - if (version instanceof SemVer) { - if ( - version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease - ) { - return version; - } else { - version = version.version; - } - } else if (typeof version !== "string") { - throw new TypeError( - `Invalid version. Must be a string. Got type "${typeof version}".`, - ); - } - - if (version.length > MAX_LENGTH) { - throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); - } - - debug("SemVer", version, options); - this.options = options; - this.loose = !!options.loose; - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease; - - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); - - if (!m) { - throw new TypeError(`Invalid Version: ${version}`); - } - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError("Invalid major version"); - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError("Invalid minor version"); - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError("Invalid patch version"); - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = []; - } else { - this.prerelease = m[4].split(".").map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num; - } - } - return id; - }); - } - - this.build = m[5] ? m[5].split(".") : []; - this.format(); - } - - format() { - this.version = `${this.major}.${this.minor}.${this.patch}`; - if (this.prerelease.length) { - this.version += `-${this.prerelease.join(".")}`; - } - return this.version; - } - - toString() { - return this.version; - } - - compare(other) { - debug("SemVer.compare", this.version, this.options, other); - if (!(other instanceof SemVer)) { - if (typeof other === "string" && other === this.version) { - return 0; - } - other = new SemVer(other, this.options); - } - - if (other.version === this.version) { - return 0; - } - - return this.compareMain(other) || this.comparePre(other); - } - - compareMain(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - return ( - compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) - ); - } - - comparePre(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1; - } else if (!this.prerelease.length && other.prerelease.length) { - return 1; - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0; - } - - let i = 0; - do { - const a = this.prerelease[i]; - const b = other.prerelease[i]; - debug("prerelease compare", i, a, b); - if (a === undefined && b === undefined) { - return 0; - } else if (b === undefined) { - return 1; - } else if (a === undefined) { - return -1; - } else if (a === b) { - continue; - } else { - return compareIdentifiers(a, b); - } - } while (++i); - } - - compareBuild(other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - let i = 0; - do { - const a = this.build[i]; - const b = other.build[i]; - debug("prerelease compare", i, a, b); - if (a === undefined && b === undefined) { - return 0; - } else if (b === undefined) { - return 1; - } else if (a === undefined) { - return -1; - } else if (a === b) { - continue; - } else { - return compareIdentifiers(a, b); - } - } while (++i); - } - - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc(release, identifier, identifierBase) { - switch (release) { - case "premajor": - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc("pre", identifier, identifierBase); - break; - case "preminor": - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc("pre", identifier, identifierBase); - break; - case "prepatch": - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc("patch", identifier, identifierBase); - this.inc("pre", identifier, identifierBase); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case "prerelease": - if (this.prerelease.length === 0) { - this.inc("patch", identifier, identifierBase); - } - this.inc("pre", identifier, identifierBase); - break; - - case "major": - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) { - this.major++; - } - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case "minor": - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++; - } - this.patch = 0; - this.prerelease = []; - break; - case "patch": - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++; - } - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case "pre": { - const base = Number(identifierBase) ? 1 : 0; - - if (!identifier && identifierBase === false) { - throw new Error("invalid increment argument: identifier is empty"); - } - - if (this.prerelease.length === 0) { - this.prerelease = [base]; - } else { - let i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === "number") { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) { - // didn't increment anything - if ( - identifier === this.prerelease.join(".") && - identifierBase === false - ) { - throw new Error( - "invalid increment argument: identifier already exists", - ); - } - this.prerelease.push(base); - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - let prerelease = [identifier, base]; - if (identifierBase === false) { - prerelease = [identifier]; - } - if (compareIdentifiers(this.prerelease[0], identifier) === 0) { - if (isNaN(this.prerelease[1])) { - this.prerelease = prerelease; - } - } else { - this.prerelease = prerelease; - } - } - break; - } - default: - throw new Error(`invalid increment argument: ${release}`); - } - this.raw = this.format(); - if (this.build.length) { - this.raw += `+${this.build.join(".")}`; - } - return this; - } - } - - module.exports = SemVer; - - /***/ - }, - - /***/ 8848: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ""), options); - return s ? s.version : null; - }; - module.exports = clean; - - /***/ - }, - - /***/ 5098: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const eq = __nccwpck_require__(1898); - const neq = __nccwpck_require__(6017); - const gt = __nccwpck_require__(4123); - const gte = __nccwpck_require__(5522); - const lt = __nccwpck_require__(194); - const lte = __nccwpck_require__(7520); - - const cmp = (a, op, b, loose) => { - switch (op) { - case "===": - if (typeof a === "object") { - a = a.version; - } - if (typeof b === "object") { - b = b.version; - } - return a === b; - - case "!==": - if (typeof a === "object") { - a = a.version; - } - if (typeof b === "object") { - b = b.version; - } - return a !== b; - - case "": - case "=": - case "==": - return eq(a, b, loose); - - case "!=": - return neq(a, b, loose); - - case ">": - return gt(a, b, loose); - - case ">=": - return gte(a, b, loose); - - case "<": - return lt(a, b, loose); - - case "<=": - return lte(a, b, loose); - - default: - throw new TypeError(`Invalid operator: ${op}`); - } - }; - module.exports = cmp; - - /***/ - }, - - /***/ 3466: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const parse = __nccwpck_require__(5925); - const { safeRe: re, t } = __nccwpck_require__(9523); - - const coerce = (version, options) => { - if (version instanceof SemVer) { - return version; - } - - if (typeof version === "number") { - version = String(version); - } - - if (typeof version !== "string") { - return null; - } - - options = options || {}; - - let match = null; - if (!options.rtl) { - match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; - let next; - while ( - (next = coerceRtlRegex.exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || next.index + next[0].length !== match.index + match[0].length) { - match = next; - } - coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; - } - // leave it in a clean state - coerceRtlRegex.lastIndex = -1; - } - - if (match === null) { - return null; - } - - const major = match[2]; - const minor = match[3] || "0"; - const patch = match[4] || "0"; - const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ""; - const build = options.includePrerelease && match[6] ? `+${match[6]}` : ""; - - return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options); - }; - module.exports = coerce; - - /***/ - }, - - /***/ 2156: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose); - const versionB = new SemVer(b, loose); - return versionA.compare(versionB) || versionA.compareBuild(versionB); - }; - module.exports = compareBuild; - - /***/ - }, - - /***/ 2804: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const compareLoose = (a, b) => compare(a, b, true); - module.exports = compareLoose; - - /***/ - }, - - /***/ 4309: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); - - module.exports = compare; - - /***/ - }, - - /***/ 4297: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - - const diff = (version1, version2) => { - const v1 = parse(version1, null, true); - const v2 = parse(version2, null, true); - const comparison = v1.compare(v2); - - if (comparison === 0) { - return null; - } - - const v1Higher = comparison > 0; - const highVersion = v1Higher ? v1 : v2; - const lowVersion = v1Higher ? v2 : v1; - const highHasPre = !!highVersion.prerelease.length; - const lowHasPre = !!lowVersion.prerelease.length; - - if (lowHasPre && !highHasPre) { - // Going from prerelease -> no prerelease requires some special casing - - // If the low version has only a major, then it will always be a major - // Some examples: - // 1.0.0-1 -> 1.0.0 - // 1.0.0-1 -> 1.1.1 - // 1.0.0-1 -> 2.0.0 - if (!lowVersion.patch && !lowVersion.minor) { - return "major"; - } - - // Otherwise it can be determined by checking the high version - - if (highVersion.patch) { - // anything higher than a patch bump would result in the wrong version - return "patch"; - } - - if (highVersion.minor) { - // anything higher than a minor bump would result in the wrong version - return "minor"; - } - - // bumping major/minor/patch all have same result - return "major"; - } - - // add the `pre` prefix if we are going to a prerelease version - const prefix = highHasPre ? "pre" : ""; - - if (v1.major !== v2.major) { - return prefix + "major"; - } - - if (v1.minor !== v2.minor) { - return prefix + "minor"; - } - - if (v1.patch !== v2.patch) { - return prefix + "patch"; - } - - // high and low are preleases - return "prerelease"; - }; - - module.exports = diff; - - /***/ - }, - - /***/ 1898: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const eq = (a, b, loose) => compare(a, b, loose) === 0; - module.exports = eq; - - /***/ - }, - - /***/ 4123: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const gt = (a, b, loose) => compare(a, b, loose) > 0; - module.exports = gt; - - /***/ - }, - - /***/ 5522: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const gte = (a, b, loose) => compare(a, b, loose) >= 0; - module.exports = gte; - - /***/ - }, - - /***/ 900: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - - const inc = (version, release, options, identifier, identifierBase) => { - if (typeof options === "string") { - identifierBase = identifier; - identifier = options; - options = undefined; - } - - try { - return new SemVer(version instanceof SemVer ? version.version : version, options).inc( - release, - identifier, - identifierBase, - ).version; - } catch (er) { - return null; - } - }; - module.exports = inc; - - /***/ - }, - - /***/ 194: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const lt = (a, b, loose) => compare(a, b, loose) < 0; - module.exports = lt; - - /***/ - }, - - /***/ 7520: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const lte = (a, b, loose) => compare(a, b, loose) <= 0; - module.exports = lte; - - /***/ - }, - - /***/ 6688: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const major = (a, loose) => new SemVer(a, loose).major; - module.exports = major; - - /***/ - }, - - /***/ 8447: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const minor = (a, loose) => new SemVer(a, loose).minor; - module.exports = minor; - - /***/ - }, - - /***/ 6017: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const neq = (a, b, loose) => compare(a, b, loose) !== 0; - module.exports = neq; - - /***/ - }, - - /***/ 5925: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const parse = (version, options, throwErrors = false) => { - if (version instanceof SemVer) { - return version; - } - try { - return new SemVer(version, options); - } catch (er) { - if (!throwErrors) { - return null; - } - throw er; - } - }; - - module.exports = parse; - - /***/ - }, - - /***/ 2866: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const patch = (a, loose) => new SemVer(a, loose).patch; - module.exports = patch; - - /***/ - }, - - /***/ 4016: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - const prerelease = (version, options) => { - const parsed = parse(version, options); - return parsed && parsed.prerelease.length ? parsed.prerelease : null; - }; - module.exports = prerelease; - - /***/ - }, - - /***/ 6417: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compare = __nccwpck_require__(4309); - const rcompare = (a, b, loose) => compare(b, a, loose); - module.exports = rcompare; - - /***/ - }, - - /***/ 8701: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compareBuild = __nccwpck_require__(2156); - const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); - module.exports = rsort; - - /***/ - }, - - /***/ 6055: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const satisfies = (version, range, options) => { - try { - range = new Range(range, options); - } catch (er) { - return false; - } - return range.test(version); - }; - module.exports = satisfies; - - /***/ - }, - - /***/ 1426: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const compareBuild = __nccwpck_require__(2156); - const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); - module.exports = sort; - - /***/ - }, - - /***/ 9601: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const parse = __nccwpck_require__(5925); - const valid = (version, options) => { - const v = parse(version, options); - return v ? v.version : null; - }; - module.exports = valid; - - /***/ - }, - - /***/ 1383: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // just pre-load all the stuff that index.js lazily exports - const internalRe = __nccwpck_require__(9523); - const constants = __nccwpck_require__(2293); - const SemVer = __nccwpck_require__(8088); - const identifiers = __nccwpck_require__(2463); - const parse = __nccwpck_require__(5925); - const valid = __nccwpck_require__(9601); - const clean = __nccwpck_require__(8848); - const inc = __nccwpck_require__(900); - const diff = __nccwpck_require__(4297); - const major = __nccwpck_require__(6688); - const minor = __nccwpck_require__(8447); - const patch = __nccwpck_require__(2866); - const prerelease = __nccwpck_require__(4016); - const compare = __nccwpck_require__(4309); - const rcompare = __nccwpck_require__(6417); - const compareLoose = __nccwpck_require__(2804); - const compareBuild = __nccwpck_require__(2156); - const sort = __nccwpck_require__(1426); - const rsort = __nccwpck_require__(8701); - const gt = __nccwpck_require__(4123); - const lt = __nccwpck_require__(194); - const eq = __nccwpck_require__(1898); - const neq = __nccwpck_require__(6017); - const gte = __nccwpck_require__(5522); - const lte = __nccwpck_require__(7520); - const cmp = __nccwpck_require__(5098); - const coerce = __nccwpck_require__(3466); - const Comparator = __nccwpck_require__(1532); - const Range = __nccwpck_require__(9828); - const satisfies = __nccwpck_require__(6055); - const toComparators = __nccwpck_require__(2706); - const maxSatisfying = __nccwpck_require__(579); - const minSatisfying = __nccwpck_require__(832); - const minVersion = __nccwpck_require__(4179); - const validRange = __nccwpck_require__(2098); - const outside = __nccwpck_require__(420); - const gtr = __nccwpck_require__(9380); - const ltr = __nccwpck_require__(3323); - const intersects = __nccwpck_require__(7008); - const simplifyRange = __nccwpck_require__(5297); - const subset = __nccwpck_require__(7863); - module.exports = { - parse, - valid, - clean, - inc, - diff, - major, - minor, - patch, - prerelease, - compare, - rcompare, - compareLoose, - compareBuild, - sort, - rsort, - gt, - lt, - eq, - neq, - gte, - lte, - cmp, - coerce, - Comparator, - Range, - satisfies, - toComparators, - maxSatisfying, - minSatisfying, - minVersion, - validRange, - outside, - gtr, - ltr, - intersects, - simplifyRange, - subset, - SemVer, - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - RELEASE_TYPES: constants.RELEASE_TYPES, - compareIdentifiers: identifiers.compareIdentifiers, - rcompareIdentifiers: identifiers.rcompareIdentifiers, - }; - - /***/ - }, - - /***/ 2293: /***/ (module) => { - // Note: this is the semver.org version of the spec that it implements - // Not necessarily the package version of this code. - const SEMVER_SPEC_VERSION = "2.0.0"; - - const MAX_LENGTH = 256; - const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */ 9007199254740991; - - // Max safe segment length for coercion. - const MAX_SAFE_COMPONENT_LENGTH = 16; - - // Max safe length for a build identifier. The max length minus 6 characters for - // the shortest version with a build 0.0.0+BUILD. - const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; - - const RELEASE_TYPES = [ - "major", - "premajor", - "minor", - "preminor", - "patch", - "prepatch", - "prerelease", - ]; - - module.exports = { - MAX_LENGTH, - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_SAFE_INTEGER, - RELEASE_TYPES, - SEMVER_SPEC_VERSION, - FLAG_INCLUDE_PRERELEASE: 0b001, - FLAG_LOOSE: 0b010, - }; - - /***/ - }, - - /***/ 427: /***/ (module) => { - const debug = - typeof process === "object" && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) - ? (...args) => console.error("SEMVER", ...args) - : () => {}; - - module.exports = debug; - - /***/ - }, - - /***/ 2463: /***/ (module) => { - const numeric = /^[0-9]+$/; - const compareIdentifiers = (a, b) => { - const anum = numeric.test(a); - const bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; - }; - - const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); - - module.exports = { - compareIdentifiers, - rcompareIdentifiers, - }; - - /***/ - }, - - /***/ 785: /***/ (module) => { - // parse out just the options we care about - const looseOption = Object.freeze({ loose: true }); - const emptyOpts = Object.freeze({}); - const parseOptions = (options) => { - if (!options) { - return emptyOpts; - } - - if (typeof options !== "object") { - return looseOption; - } - - return options; - }; - module.exports = parseOptions; - - /***/ - }, - - /***/ 9523: /***/ (module, exports, __nccwpck_require__) => { - const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = - __nccwpck_require__(2293); - const debug = __nccwpck_require__(427); - exports = module.exports = {}; - - // The actual regexps go on exports.re - const re = (exports.re = []); - const safeRe = (exports.safeRe = []); - const src = (exports.src = []); - const t = (exports.t = {}); - let R = 0; - - const LETTERDASHNUMBER = "[a-zA-Z0-9-]"; - - // Replace some greedy regex tokens to prevent regex dos issues. These regex are - // used internally via the safeRe object since all inputs in this library get - // normalized first to trim and collapse all extra whitespace. The original - // regexes are exported for userland consumption and lower level usage. A - // future breaking change could export the safer regex only with a note that - // all input should have extra whitespace removed. - const safeRegexReplacements = [ - ["\\s", 1], - ["\\d", MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], - ]; - - const makeSafeRegex = (value) => { - for (const [token, max] of safeRegexReplacements) { - value = value - .split(`${token}*`) - .join(`${token}{0,${max}}`) - .split(`${token}+`) - .join(`${token}{1,${max}}`); - } - return value; - }; - - const createToken = (name, value, isGlobal) => { - const safe = makeSafeRegex(value); - const index = R++; - debug(name, index, value); - t[name] = index; - src[index] = value; - re[index] = new RegExp(value, isGlobal ? "g" : undefined); - safeRe[index] = new RegExp(safe, isGlobal ? "g" : undefined); - }; - - // The following Regular Expressions can be used for tokenizing, - // validating, and parsing SemVer version strings. - - // ## Numeric Identifier - // A single `0`, or a non-zero digit followed by zero or more digits. - - createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); - createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); - - // ## Non-numeric Identifier - // Zero or more digits, followed by a letter or hyphen, and then zero or - // more letters, digits, or hyphens. - - createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); - - // ## Main Version - // Three dot-separated numeric identifiers. - - createToken( - "MAINVERSION", - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`, - ); - - createToken( - "MAINVERSIONLOOSE", - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`, - ); - - // ## Pre-release Version Identifier - // A numeric identifier, or a non-numeric identifier. - - createToken( - "PRERELEASEIDENTIFIER", - `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`, - ); - - createToken( - "PRERELEASEIDENTIFIERLOOSE", - `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`, - ); - - // ## Pre-release Version - // Hyphen, followed by one or more dot-separated pre-release version - // identifiers. - - createToken( - "PRERELEASE", - `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`, - ); - - createToken( - "PRERELEASELOOSE", - `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`, - ); - - // ## Build Metadata Identifier - // Any combination of digits, letters, or hyphens. - - createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); - - // ## Build Metadata - // Plus sign, followed by one or more period-separated build metadata - // identifiers. - - createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); - - // ## Full Version String - // A main version, followed optionally by a pre-release version and - // build metadata. - - // Note that the only major, minor, patch, and pre-release sections of - // the version string are capturing groups. The build metadata is not a - // capturing group, because it should not ever be used in version - // comparison. - - createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); - - createToken("FULL", `^${src[t.FULLPLAIN]}$`); - - // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. - // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty - // common in the npm registry. - createToken( - "LOOSEPLAIN", - `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`, - ); - - createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); - - createToken("GTLT", "((?:<|>)?=?)"); - - // Something like "2.*" or "1.2.x". - // Note that "x.x" is a valid xRange identifer, meaning "any version" - // Only the first item is strictly required. - createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); - createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); - - createToken( - "XRANGEPLAIN", - `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?` + - `)?)?`, - ); - - createToken( - "XRANGEPLAINLOOSE", - `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?` + - `)?)?`, - ); - - createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); - createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); - - // Coercion. - // Extract anything that could conceivably be a part of a valid semver - createToken( - "COERCEPLAIN", - `${"(^|[^\\d])" + "(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`, - ); - createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); - createToken( - "COERCEFULL", - src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?` + `(?:${src[t.BUILD]})?` + `(?:$|[^\\d])`, - ); - createToken("COERCERTL", src[t.COERCE], true); - createToken("COERCERTLFULL", src[t.COERCEFULL], true); - - // Tilde ranges. - // Meaning is "reasonably at or greater than" - createToken("LONETILDE", "(?:~>?)"); - - createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); - exports.tildeTrimReplace = "$1~"; - - createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); - createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); - - // Caret ranges. - // Meaning is "at least and backwards compatible with" - createToken("LONECARET", "(?:\\^)"); - - createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); - exports.caretTrimReplace = "$1^"; - - createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); - createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); - - // A simple gt/lt/eq thing, or just "" to indicate "any version" - createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); - createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); - - // An expression to strip any whitespace between the gtlt and the thing - // it modifies, so that `> 1.2.3` ==> `>1.2.3` - createToken( - "COMPARATORTRIM", - `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, - true, - ); - exports.comparatorTrimReplace = "$1$2$3"; - - // Something like `1.2.3 - 1.2.4` - // Note that these all use the loose form, because they'll be - // checked against either the strict or loose comparator form - // later. - createToken( - "HYPHENRANGE", - `^\\s*(${src[t.XRANGEPLAIN]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAIN]})` + `\\s*$`, - ); - - createToken( - "HYPHENRANGELOOSE", - `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + `\\s+-\\s+` + `(${src[t.XRANGEPLAINLOOSE]})` + `\\s*$`, - ); - - // Star ranges basically just allow anything at all. - createToken("STAR", "(<|>)?=?\\s*\\*"); - // >=0.0.0 is like a star - createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); - createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); - - /***/ - }, - - /***/ 9380: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // Determine if version is greater than all the versions possible in the range. - const outside = __nccwpck_require__(420); - const gtr = (version, range, options) => outside(version, range, ">", options); - module.exports = gtr; - - /***/ - }, - - /***/ 7008: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const intersects = (r1, r2, options) => { - r1 = new Range(r1, options); - r2 = new Range(r2, options); - return r1.intersects(r2, options); - }; - module.exports = intersects; - - /***/ - }, - - /***/ 3323: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const outside = __nccwpck_require__(420); - // Determine if version is less than all the versions possible in the range - const ltr = (version, range, options) => outside(version, range, "<", options); - module.exports = ltr; - - /***/ - }, - - /***/ 579: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - - const maxSatisfying = (versions, range, options) => { - let max = null; - let maxSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null; - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v; - maxSV = new SemVer(max, options); - } - } - }); - return max; - }; - module.exports = maxSatisfying; - - /***/ - }, - - /***/ 832: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - const minSatisfying = (versions, range, options) => { - let min = null; - let minSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null; - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v; - minSV = new SemVer(min, options); - } - } - }); - return min; - }; - module.exports = minSatisfying; - - /***/ - }, - - /***/ 4179: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Range = __nccwpck_require__(9828); - const gt = __nccwpck_require__(4123); - - const minVersion = (range, loose) => { - range = new Range(range, loose); - - let minver = new SemVer("0.0.0"); - if (range.test(minver)) { - return minver; - } - - minver = new SemVer("0.0.0-0"); - if (range.test(minver)) { - return minver; - } - - minver = null; - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - - let setMin = null; - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version); - switch (comparator.operator) { - case ">": - if (compver.prerelease.length === 0) { - compver.patch++; - } else { - compver.prerelease.push(0); - } - compver.raw = compver.format(); - /* fallthrough */ - case "": - case ">=": - if (!setMin || gt(compver, setMin)) { - setMin = compver; - } - break; - case "<": - case "<=": - /* Ignore maximum versions */ - break; - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`); - } - }); - if (setMin && (!minver || gt(minver, setMin))) { - minver = setMin; - } - } - - if (minver && range.test(minver)) { - return minver; - } - - return null; - }; - module.exports = minVersion; - - /***/ - }, - - /***/ 420: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const SemVer = __nccwpck_require__(8088); - const Comparator = __nccwpck_require__(1532); - const { ANY } = Comparator; - const Range = __nccwpck_require__(9828); - const satisfies = __nccwpck_require__(6055); - const gt = __nccwpck_require__(4123); - const lt = __nccwpck_require__(194); - const lte = __nccwpck_require__(7520); - const gte = __nccwpck_require__(5522); - - const outside = (version, range, hilo, options) => { - version = new SemVer(version, options); - range = new Range(range, options); - - let gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case ">": - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = ">"; - ecomp = ">="; - break; - case "<": - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = "<"; - ecomp = "<="; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisfies the range it is not outside - if (satisfies(version, range, options)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - - let high = null; - let low = null; - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator(">=0.0.0"); - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; - }; - - module.exports = outside; - - /***/ - }, - - /***/ 5297: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - // given a set of versions and a range, create a "simplified" range - // that includes the same versions that the original range does - // If the original range is shorter than the simplified one, return that. - const satisfies = __nccwpck_require__(6055); - const compare = __nccwpck_require__(4309); - module.exports = (versions, range, options) => { - const set = []; - let first = null; - let prev = null; - const v = versions.sort((a, b) => compare(a, b, options)); - for (const version of v) { - const included = satisfies(version, range, options); - if (included) { - prev = version; - if (!first) { - first = version; - } - } else { - if (prev) { - set.push([first, prev]); - } - prev = null; - first = null; - } - } - if (first) { - set.push([first, null]); - } - - const ranges = []; - for (const [min, max] of set) { - if (min === max) { - ranges.push(min); - } else if (!max && min === v[0]) { - ranges.push("*"); - } else if (!max) { - ranges.push(`>=${min}`); - } else if (min === v[0]) { - ranges.push(`<=${max}`); - } else { - ranges.push(`${min} - ${max}`); - } - } - const simplified = ranges.join(" || "); - const original = typeof range.raw === "string" ? range.raw : String(range); - return simplified.length < original.length ? simplified : range; - }; - - /***/ - }, - - /***/ 7863: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const Comparator = __nccwpck_require__(1532); - const { ANY } = Comparator; - const satisfies = __nccwpck_require__(6055); - const compare = __nccwpck_require__(4309); - - // Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: - // - Every simple range `r1, r2, ...` is a null set, OR - // - Every simple range `r1, r2, ...` which is not a null set is a subset of - // some `R1, R2, ...` - // - // Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: - // - If c is only the ANY comparator - // - If C is only the ANY comparator, return true - // - Else if in prerelease mode, return false - // - else replace c with `[>=0.0.0]` - // - If C is only the ANY comparator - // - if in prerelease mode, return true - // - else replace C with `[>=0.0.0]` - // - Let EQ be the set of = comparators in c - // - If EQ is more than one, return true (null set) - // - Let GT be the highest > or >= comparator in c - // - Let LT be the lowest < or <= comparator in c - // - If GT and LT, and GT.semver > LT.semver, return true (null set) - // - If any C is a = range, and GT or LT are set, return false - // - If EQ - // - If GT, and EQ does not satisfy GT, return true (null set) - // - If LT, and EQ does not satisfy LT, return true (null set) - // - If EQ satisfies every C, return true - // - Else return false - // - If GT - // - If GT.semver is lower than any > or >= comp in C, return false - // - If GT is >=, and GT.semver does not satisfy every C, return false - // - If GT.semver has a prerelease, and not in prerelease mode - // - If no C has a prerelease and the GT.semver tuple, return false - // - If LT - // - If LT.semver is greater than any < or <= comp in C, return false - // - If LT is <=, and LT.semver does not satisfy every C, return false - // - If GT.semver has a prerelease, and not in prerelease mode - // - If no C has a prerelease and the LT.semver tuple, return false - // - Else return true - - const subset = (sub, dom, options = {}) => { - if (sub === dom) { - return true; - } - - sub = new Range(sub, options); - dom = new Range(dom, options); - let sawNonNull = false; - - OUTER: for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options); - sawNonNull = sawNonNull || isSub !== null; - if (isSub) { - continue OUTER; - } - } - // the null set is a subset of everything, but null simple ranges in - // a complex range should be ignored. so if we saw a non-null range, - // then we know this isn't a subset, but if EVERY simple range was null, - // then it is a subset. - if (sawNonNull) { - return false; - } - } - return true; - }; - - const minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; - const minimumVersion = [new Comparator(">=0.0.0")]; - - const simpleSubset = (sub, dom, options) => { - if (sub === dom) { - return true; - } - - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) { - return true; - } else if (options.includePrerelease) { - sub = minimumVersionWithPreRelease; - } else { - sub = minimumVersion; - } - } - - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) { - return true; - } else { - dom = minimumVersion; - } - } - - const eqSet = new Set(); - let gt, lt; - for (const c of sub) { - if (c.operator === ">" || c.operator === ">=") { - gt = higherGT(gt, c, options); - } else if (c.operator === "<" || c.operator === "<=") { - lt = lowerLT(lt, c, options); - } else { - eqSet.add(c.semver); - } - } - - if (eqSet.size > 1) { - return null; - } - - let gtltComp; - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options); - if (gtltComp > 0) { - return null; - } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) { - return null; - } - } - - // will iterate one or zero times - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) { - return null; - } - - if (lt && !satisfies(eq, String(lt), options)) { - return null; - } - - for (const c of dom) { - if (!satisfies(eq, String(c), options)) { - return false; - } - } - - return true; - } - - let higher, lower; - let hasDomLT, hasDomGT; - // if the subset has a prerelease, we need a comparator in the superset - // with the same tuple and a prerelease, or it's not a subset - let needDomLTPre = - lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; - let needDomGTPre = - gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; - // exception: <1.2.3-0 is the same as <1.2.3 - if ( - needDomLTPre && - needDomLTPre.prerelease.length === 1 && - lt.operator === "<" && - needDomLTPre.prerelease[0] === 0 - ) { - needDomLTPre = false; - } - - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; - hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; - if (gt) { - if (needDomGTPre) { - if ( - c.semver.prerelease && - c.semver.prerelease.length && - c.semver.major === needDomGTPre.major && - c.semver.minor === needDomGTPre.minor && - c.semver.patch === needDomGTPre.patch - ) { - needDomGTPre = false; - } - } - if (c.operator === ">" || c.operator === ">=") { - higher = higherGT(gt, c, options); - if (higher === c && higher !== gt) { - return false; - } - } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) { - return false; - } - } - if (lt) { - if (needDomLTPre) { - if ( - c.semver.prerelease && - c.semver.prerelease.length && - c.semver.major === needDomLTPre.major && - c.semver.minor === needDomLTPre.minor && - c.semver.patch === needDomLTPre.patch - ) { - needDomLTPre = false; - } - } - if (c.operator === "<" || c.operator === "<=") { - lower = lowerLT(lt, c, options); - if (lower === c && lower !== lt) { - return false; - } - } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) { - return false; - } - } - if (!c.operator && (lt || gt) && gtltComp !== 0) { - return false; - } - } - - // if there was a < or >, and nothing in the dom, then must be false - // UNLESS it was limited by another range in the other direction. - // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) { - return false; - } - - if (lt && hasDomGT && !gt && gtltComp !== 0) { - return false; - } - - // we needed a prerelease range in a specific tuple, but didn't get one - // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, - // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) { - return false; - } - - return true; - }; - - // >=1.2.3 is lower than >1.2.3 - const higherGT = (a, b, options) => { - if (!a) { - return b; - } - const comp = compare(a.semver, b.semver, options); - return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; - }; - - // <=1.2.3 is higher than <1.2.3 - const lowerLT = (a, b, options) => { - if (!a) { - return b; - } - const comp = compare(a.semver, b.semver, options); - return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; - }; - - module.exports = subset; - - /***/ - }, - - /***/ 2706: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - - // Mostly just for testing and legacy API reasons - const toComparators = (range, options) => - new Range(range, options).set.map((comp) => - comp - .map((c) => c.value) - .join(" ") - .trim() - .split(" "), - ); - - module.exports = toComparators; - - /***/ - }, - - /***/ 2098: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const Range = __nccwpck_require__(9828); - const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || "*"; - } catch (er) { - return null; - } - }; - module.exports = validRange; - - /***/ - }, - - /***/ 4294: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - module.exports = __nccwpck_require__(4219); - - /***/ - }, - - /***/ 4219: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - var net = __nccwpck_require__(1808); - var tls = __nccwpck_require__(4404); - var http = __nccwpck_require__(3685); - var https = __nccwpck_require__(5687); - var events = __nccwpck_require__(2361); - var assert = __nccwpck_require__(9491); - var util = __nccwpck_require__(3837); - - exports.httpOverHttp = httpOverHttp; - exports.httpsOverHttp = httpsOverHttp; - exports.httpOverHttps = httpOverHttps; - exports.httpsOverHttps = httpsOverHttps; - - function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; - } - - function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; - } - - function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; - } - - function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; - } - - function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - - self.on("free", function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); - } - util.inherits(TunnelingAgent, events.EventEmitter); - - TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions( - { request: req }, - self.options, - toOptions(host, port, localAddress), - ); - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - - // If we are under maxSockets create a new one. - self.createSocket(options, function (socket) { - socket.on("free", onFree); - socket.on("close", onCloseOrRemove); - socket.on("agentRemove", onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit("free", socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener("free", onFree); - socket.removeListener("close", onCloseOrRemove); - socket.removeListener("agentRemove", onCloseOrRemove); - } - }); - }; - - TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); - - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: "CONNECT", - path: options.host + ":" + options.port, - agent: false, - headers: { - host: options.host + ":" + options.port, - }, - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers["Proxy-Authorization"] = - "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); - } - - debug("making CONNECT request"); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once("response", onResponse); // for v0.6 - connectReq.once("upgrade", onUpgrade); // for v0.6 - connectReq.once("connect", onConnect); // for v0.7 or later - connectReq.once("error", onError); - connectReq.end(); - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function () { - onConnect(res, socket, head); - }); - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug("tunneling socket could not be established, statusCode=%d", res.statusCode); - socket.destroy(); - var error = new Error( - "tunneling socket could not be established, " + "statusCode=" + res.statusCode, - ); - error.code = "ECONNRESET"; - options.request.emit("error", error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug("got illegal response body from proxy"); - socket.destroy(); - var error = new Error("got illegal response body from proxy"); - error.code = "ECONNRESET"; - options.request.emit("error", error); - self.removeSocket(placeholder); - return; - } - debug("tunneling connection has established"); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - - debug( - "tunneling socket could not be established, cause=%s\n", - cause.message, - cause.stack, - ); - var error = new Error( - "tunneling socket could not be established, " + "cause=" + cause.message, - ); - error.code = "ECONNRESET"; - options.request.emit("error", error); - self.removeSocket(placeholder); - } - }; - - TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket); - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); - - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function (socket) { - pending.request.onSocket(socket); - }); - } - }; - - function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function (socket) { - var hostHeader = options.request.getHeader("host"); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, "") : options.host, - }); - - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); - } - - function toOptions(host, port, localAddress) { - if (typeof host === "string") { - // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress, - }; - } - return host; // for v0.11 or later - } - - function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === "object") { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; - } - - var debug; - if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === "string") { - args[0] = "TUNNEL: " + args[0]; - } else { - args.unshift("TUNNEL:"); - } - console.error.apply(console, args); - }; - } else { - debug = function () {}; - } - exports.debug = debug; // for test - - /***/ - }, - - /***/ 1773: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Client = __nccwpck_require__(3598); - const Dispatcher = __nccwpck_require__(412); - const errors = __nccwpck_require__(8045); - const Pool = __nccwpck_require__(4634); - const BalancedPool = __nccwpck_require__(7931); - const Agent = __nccwpck_require__(7890); - const util = __nccwpck_require__(3983); - const { InvalidArgumentError } = errors; - const api = __nccwpck_require__(4059); - const buildConnector = __nccwpck_require__(2067); - const MockClient = __nccwpck_require__(8687); - const MockAgent = __nccwpck_require__(6771); - const MockPool = __nccwpck_require__(6193); - const mockErrors = __nccwpck_require__(888); - const ProxyAgent = __nccwpck_require__(7858); - const RetryHandler = __nccwpck_require__(2286); - const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(1892); - const DecoratorHandler = __nccwpck_require__(6930); - const RedirectHandler = __nccwpck_require__(2860); - const createRedirectInterceptor = __nccwpck_require__(8861); - - let hasCrypto; - try { - __nccwpck_require__(6113); - hasCrypto = true; - } catch { - hasCrypto = false; - } - - Object.assign(Dispatcher.prototype, api); - - module.exports.Dispatcher = Dispatcher; - module.exports.Client = Client; - module.exports.Pool = Pool; - module.exports.BalancedPool = BalancedPool; - module.exports.Agent = Agent; - module.exports.ProxyAgent = ProxyAgent; - module.exports.RetryHandler = RetryHandler; - - module.exports.DecoratorHandler = DecoratorHandler; - module.exports.RedirectHandler = RedirectHandler; - module.exports.createRedirectInterceptor = createRedirectInterceptor; - - module.exports.buildConnector = buildConnector; - module.exports.errors = errors; - - function makeDispatcher(fn) { - return (url, opts, handler) => { - if (typeof opts === "function") { - handler = opts; - opts = null; - } - - if ( - !url || - (typeof url !== "string" && typeof url !== "object" && !(url instanceof URL)) - ) { - throw new InvalidArgumentError("invalid url"); - } - - if (opts != null && typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (opts && opts.path != null) { - if (typeof opts.path !== "string") { - throw new InvalidArgumentError("invalid opts.path"); - } - - let path = opts.path; - if (!opts.path.startsWith("/")) { - path = `/${path}`; - } - - url = new URL(util.parseOrigin(url).origin + path); - } else { - if (!opts) { - opts = typeof url === "object" ? url : {}; - } - - url = util.parseURL(url); - } - - const { agent, dispatcher = getGlobalDispatcher() } = opts; - - if (agent) { - throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?"); - } - - return fn.call( - dispatcher, - { - ...opts, - origin: url.origin, - path: url.search ? `${url.pathname}${url.search}` : url.pathname, - method: opts.method || (opts.body ? "PUT" : "GET"), - }, - handler, - ); - }; - } - - module.exports.setGlobalDispatcher = setGlobalDispatcher; - module.exports.getGlobalDispatcher = getGlobalDispatcher; - - if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { - let fetchImpl = null; - module.exports.fetch = async function fetch(resource) { - if (!fetchImpl) { - fetchImpl = __nccwpck_require__(4881).fetch; - } - - try { - return await fetchImpl(...arguments); - } catch (err) { - if (typeof err === "object") { - Error.captureStackTrace(err, this); - } - - throw err; - } - }; - module.exports.Headers = __nccwpck_require__(554).Headers; - module.exports.Response = __nccwpck_require__(7823).Response; - module.exports.Request = __nccwpck_require__(8359).Request; - module.exports.FormData = __nccwpck_require__(2015).FormData; - module.exports.File = __nccwpck_require__(8511).File; - module.exports.FileReader = __nccwpck_require__(1446).FileReader; - - const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(1246); - - module.exports.setGlobalOrigin = setGlobalOrigin; - module.exports.getGlobalOrigin = getGlobalOrigin; - - const { CacheStorage } = __nccwpck_require__(7907); - const { kConstruct } = __nccwpck_require__(9174); - - // Cache & CacheStorage are tightly coupled with fetch. Even if it may run - // in an older version of Node, it doesn't have any use without fetch. - module.exports.caches = new CacheStorage(kConstruct); - } - - if (util.nodeMajor >= 16) { - const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(1724); - - module.exports.deleteCookie = deleteCookie; - module.exports.getCookies = getCookies; - module.exports.getSetCookies = getSetCookies; - module.exports.setCookie = setCookie; - - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685); - - module.exports.parseMIMEType = parseMIMEType; - module.exports.serializeAMimeType = serializeAMimeType; - } - - if (util.nodeMajor >= 18 && hasCrypto) { - const { WebSocket } = __nccwpck_require__(4284); - - module.exports.WebSocket = WebSocket; - } - - module.exports.request = makeDispatcher(api.request); - module.exports.stream = makeDispatcher(api.stream); - module.exports.pipeline = makeDispatcher(api.pipeline); - module.exports.connect = makeDispatcher(api.connect); - module.exports.upgrade = makeDispatcher(api.upgrade); - - module.exports.MockClient = MockClient; - module.exports.MockPool = MockPool; - module.exports.MockAgent = MockAgent; - module.exports.mockErrors = mockErrors; - - /***/ - }, - - /***/ 7890: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { InvalidArgumentError } = __nccwpck_require__(8045); - const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = - __nccwpck_require__(2785); - const DispatcherBase = __nccwpck_require__(4839); - const Pool = __nccwpck_require__(4634); - const Client = __nccwpck_require__(3598); - const util = __nccwpck_require__(3983); - const createRedirectInterceptor = __nccwpck_require__(8861); - const { WeakRef, FinalizationRegistry } = __nccwpck_require__(6436)(); - - const kOnConnect = Symbol("onConnect"); - const kOnDisconnect = Symbol("onDisconnect"); - const kOnConnectionError = Symbol("onConnectionError"); - const kMaxRedirections = Symbol("maxRedirections"); - const kOnDrain = Symbol("onDrain"); - const kFactory = Symbol("factory"); - const kFinalizer = Symbol("finalizer"); - const kOptions = Symbol("options"); - - function defaultFactory(origin, opts) { - return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); - } - - class Agent extends DispatcherBase { - constructor({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { - super(); - - if (typeof factory !== "function") { - throw new InvalidArgumentError("factory must be a function."); - } - - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError("connect must be a function or an object"); - } - - if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { - throw new InvalidArgumentError("maxRedirections must be a positive number"); - } - - if (connect && typeof connect !== "function") { - connect = { ...connect }; - } - - this[kInterceptors] = - options.interceptors && - options.interceptors.Agent && - Array.isArray(options.interceptors.Agent) - ? options.interceptors.Agent - : [createRedirectInterceptor({ maxRedirections })]; - - this[kOptions] = { ...util.deepClone(options), connect }; - this[kOptions].interceptors = options.interceptors - ? { ...options.interceptors } - : undefined; - this[kMaxRedirections] = maxRedirections; - this[kFactory] = factory; - this[kClients] = new Map(); - this[kFinalizer] = new FinalizationRegistry( - /* istanbul ignore next: gc is undeterministic */ (key) => { - const ref = this[kClients].get(key); - if (ref !== undefined && ref.deref() === undefined) { - this[kClients].delete(key); - } - }, - ); - - const agent = this; - - this[kOnDrain] = (origin, targets) => { - agent.emit("drain", origin, [agent, ...targets]); - }; - - this[kOnConnect] = (origin, targets) => { - agent.emit("connect", origin, [agent, ...targets]); - }; - - this[kOnDisconnect] = (origin, targets, err) => { - agent.emit("disconnect", origin, [agent, ...targets], err); - }; - - this[kOnConnectionError] = (origin, targets, err) => { - agent.emit("connectionError", origin, [agent, ...targets], err); - }; - } - - get [kRunning]() { - let ret = 0; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore next: gc is undeterministic */ - if (client) { - ret += client[kRunning]; - } - } - return ret; - } - - [kDispatch](opts, handler) { - let key; - if (opts.origin && (typeof opts.origin === "string" || opts.origin instanceof URL)) { - key = String(opts.origin); - } else { - throw new InvalidArgumentError("opts.origin must be a non-empty string or URL."); - } - - const ref = this[kClients].get(key); - - let dispatcher = ref ? ref.deref() : null; - if (!dispatcher) { - dispatcher = this[kFactory](opts.origin, this[kOptions]) - .on("drain", this[kOnDrain]) - .on("connect", this[kOnConnect]) - .on("disconnect", this[kOnDisconnect]) - .on("connectionError", this[kOnConnectionError]); - - this[kClients].set(key, new WeakRef(dispatcher)); - this[kFinalizer].register(dispatcher, key); - } - - return dispatcher.dispatch(opts, handler); - } - - async [kClose]() { - const closePromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore else: gc is undeterministic */ - if (client) { - closePromises.push(client.close()); - } - } - - await Promise.all(closePromises); - } - - async [kDestroy](err) { - const destroyPromises = []; - for (const ref of this[kClients].values()) { - const client = ref.deref(); - /* istanbul ignore else: gc is undeterministic */ - if (client) { - destroyPromises.push(client.destroy(err)); - } - } - - await Promise.all(destroyPromises); - } - } - - module.exports = Agent; - - /***/ - }, - - /***/ 7032: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const { addAbortListener } = __nccwpck_require__(3983); - const { RequestAbortedError } = __nccwpck_require__(8045); - - const kListener = Symbol("kListener"); - const kSignal = Symbol("kSignal"); - - function abort(self) { - if (self.abort) { - self.abort(); - } else { - self.onError(new RequestAbortedError()); - } - } - - function addSignal(self, signal) { - self[kSignal] = null; - self[kListener] = null; - - if (!signal) { - return; - } - - if (signal.aborted) { - abort(self); - return; - } - - self[kSignal] = signal; - self[kListener] = () => { - abort(self); - }; - - addAbortListener(self[kSignal], self[kListener]); - } - - function removeSignal(self) { - if (!self[kSignal]) { - return; - } - - if ("removeEventListener" in self[kSignal]) { - self[kSignal].removeEventListener("abort", self[kListener]); - } else { - self[kSignal].removeListener("abort", self[kListener]); - } - - self[kSignal] = null; - self[kListener] = null; - } - - module.exports = { - addSignal, - removeSignal, - }; - - /***/ - }, - - /***/ 9744: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { AsyncResource } = __nccwpck_require__(852); - const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - - class ConnectHandler extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - const { signal, opaque, responseHeaders } = opts; - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - super("UNDICI_CONNECT"); - - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.callback = callback; - this.abort = null; - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders() { - throw new SocketError("bad connect", null); - } - - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - - removeSignal(this); - - this.callback = null; - - let headers = rawHeaders; - // Indicates is an HTTP2Session - if (headers != null) { - headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - } - - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - socket, - opaque, - context, - }); - } - - onError(err) { - const { callback, opaque } = this; - - removeSignal(this); - - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - } - - function connect(opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - connect.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - const connectHandler = new ConnectHandler(opts, callback); - this.dispatch({ ...opts, method: "CONNECT" }, connectHandler); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = connect; - - /***/ - }, - - /***/ 8752: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Readable, Duplex, PassThrough } = __nccwpck_require__(2781); - const { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = - __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { AsyncResource } = __nccwpck_require__(852); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - const assert = __nccwpck_require__(9491); - - const kResume = Symbol("resume"); - - class PipelineRequest extends Readable { - constructor() { - super({ autoDestroy: true }); - - this[kResume] = null; - } - - _read() { - const { [kResume]: resume } = this; - - if (resume) { - this[kResume] = null; - resume(); - } - } - - _destroy(err, callback) { - this._read(); - - callback(err); - } - } - - class PipelineResponse extends Readable { - constructor(resume) { - super({ autoDestroy: true }); - this[kResume] = resume; - } - - _read() { - this[kResume](); - } - - _destroy(err, callback) { - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } - - callback(err); - } - } - - class PipelineHandler extends AsyncResource { - constructor(opts, handler) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (typeof handler !== "function") { - throw new InvalidArgumentError("invalid handler"); - } - - const { signal, method, opaque, onInfo, responseHeaders } = opts; - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - if (method === "CONNECT") { - throw new InvalidArgumentError("invalid method"); - } - - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError("invalid onInfo callback"); - } - - super("UNDICI_PIPELINE"); - - this.opaque = opaque || null; - this.responseHeaders = responseHeaders || null; - this.handler = handler; - this.abort = null; - this.context = null; - this.onInfo = onInfo || null; - - this.req = new PipelineRequest().on("error", util.nop); - - this.ret = new Duplex({ - readableObjectMode: opts.objectMode, - autoDestroy: true, - read: () => { - const { body } = this; - - if (body && body.resume) { - body.resume(); - } - }, - write: (chunk, encoding, callback) => { - const { req } = this; - - if (req.push(chunk, encoding) || req._readableState.destroyed) { - callback(); - } else { - req[kResume] = callback; - } - }, - destroy: (err, callback) => { - const { body, req, res, ret, abort } = this; - - if (!err && !ret._readableState.endEmitted) { - err = new RequestAbortedError(); - } - - if (abort && err) { - abort(); - } - - util.destroy(body, err); - util.destroy(req, err); - util.destroy(res, err); - - removeSignal(this); - - callback(err); - }, - }).on("prefinish", () => { - const { req } = this; - - // Node < 15 does not call _final in same tick. - req.push(null); - }); - - this.res = null; - - addSignal(this, signal); - } - - onConnect(abort, context) { - const { ret, res } = this; - - assert(!res, "pipeline cannot be retried"); - - if (ret.destroyed) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders(statusCode, rawHeaders, resume) { - const { opaque, handler, context } = this; - - if (statusCode < 200) { - if (this.onInfo) { - const headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - this.onInfo({ statusCode, headers }); - } - return; - } - - this.res = new PipelineResponse(resume); - - let body; - try { - this.handler = null; - const headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - body = this.runInAsyncScope(handler, null, { - statusCode, - headers, - opaque, - body: this.res, - context, - }); - } catch (err) { - this.res.on("error", util.nop); - throw err; - } - - if (!body || typeof body.on !== "function") { - throw new InvalidReturnValueError("expected Readable"); - } - - body.on("data", (chunk) => { - const { ret, body } = this; - - if (!ret.push(chunk) && body.pause) { - body.pause(); - } - }) - .on("error", (err) => { - const { ret } = this; - - util.destroy(ret, err); - }) - .on("end", () => { - const { ret } = this; - - ret.push(null); - }) - .on("close", () => { - const { ret } = this; - - if (!ret._readableState.ended) { - util.destroy(ret, new RequestAbortedError()); - } - }); - - this.body = body; - } - - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - - onComplete(trailers) { - const { res } = this; - res.push(null); - } - - onError(err) { - const { ret } = this; - this.handler = null; - util.destroy(ret, err); - } - } - - function pipeline(opts, handler) { - try { - const pipelineHandler = new PipelineHandler(opts, handler); - this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler); - return pipelineHandler.ret; - } catch (err) { - return new PassThrough().destroy(err); - } - } - - module.exports = pipeline; - - /***/ - }, - - /***/ 5448: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Readable = __nccwpck_require__(3858); - const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { getResolveErrorBodyCallback } = __nccwpck_require__(7474); - const { AsyncResource } = __nccwpck_require__(852); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - - class RequestHandler extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - const { - signal, - method, - opaque, - body, - onInfo, - responseHeaders, - throwOnError, - highWaterMark, - } = opts; - - try { - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (highWaterMark && (typeof highWaterMark !== "number" || highWaterMark < 0)) { - throw new InvalidArgumentError("invalid highWaterMark"); - } - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - if (method === "CONNECT") { - throw new InvalidArgumentError("invalid method"); - } - - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError("invalid onInfo callback"); - } - - super("UNDICI_REQUEST"); - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on("error", util.nop), err); - } - throw err; - } - - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.res = null; - this.abort = null; - this.body = body; - this.trailers = {}; - this.context = null; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError; - this.highWaterMark = highWaterMark; - - if (util.isStream(body)) { - body.on("error", (err) => { - this.onError(err); - }); - } - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this; - - const headers = - responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }); - } - return; - } - - const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; - const contentType = parsedHeaders["content-type"]; - const body = new Readable({ resume, abort, contentType, highWaterMark }); - - this.callback = null; - this.res = body; - if (callback !== null) { - if (this.throwOnError && statusCode >= 400) { - this.runInAsyncScope(getResolveErrorBodyCallback, null, { - callback, - body, - contentType, - statusCode, - statusMessage, - headers, - }); - } else { - this.runInAsyncScope(callback, null, null, { - statusCode, - headers, - trailers: this.trailers, - opaque, - body, - context, - }); - } - } - } - - onData(chunk) { - const { res } = this; - return res.push(chunk); - } - - onComplete(trailers) { - const { res } = this; - - removeSignal(this); - - util.parseHeaders(trailers, this.trailers); - - res.push(null); - } - - onError(err) { - const { res, callback, body, opaque } = this; - - removeSignal(this); - - if (callback) { - // TODO: Does this need queueMicrotask? - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - - if (res) { - this.res = null; - // Ensure all queued handlers are invoked before destroying res. - queueMicrotask(() => { - util.destroy(res, err); - }); - } - - if (body) { - this.body = null; - util.destroy(body, err); - } - } - } - - function request(opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - request.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - this.dispatch(opts, new RequestHandler(opts, callback)); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = request; - module.exports.RequestHandler = RequestHandler; - - /***/ - }, - - /***/ 5395: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { finished, PassThrough } = __nccwpck_require__(2781); - const { InvalidArgumentError, InvalidReturnValueError, RequestAbortedError } = - __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { getResolveErrorBodyCallback } = __nccwpck_require__(7474); - const { AsyncResource } = __nccwpck_require__(852); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - - class StreamHandler extends AsyncResource { - constructor(opts, factory, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts; - - try { - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (typeof factory !== "function") { - throw new InvalidArgumentError("invalid factory"); - } - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - if (method === "CONNECT") { - throw new InvalidArgumentError("invalid method"); - } - - if (onInfo && typeof onInfo !== "function") { - throw new InvalidArgumentError("invalid onInfo callback"); - } - - super("UNDICI_STREAM"); - } catch (err) { - if (util.isStream(body)) { - util.destroy(body.on("error", util.nop), err); - } - throw err; - } - - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.factory = factory; - this.callback = callback; - this.res = null; - this.abort = null; - this.context = null; - this.trailers = null; - this.body = body; - this.onInfo = onInfo || null; - this.throwOnError = throwOnError || false; - - if (util.isStream(body)) { - body.on("error", (err) => { - this.onError(err); - }); - } - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = context; - } - - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const { factory, opaque, context, callback, responseHeaders } = this; - - const headers = - responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - - if (statusCode < 200) { - if (this.onInfo) { - this.onInfo({ statusCode, headers }); - } - return; - } - - this.factory = null; - - let res; - - if (this.throwOnError && statusCode >= 400) { - const parsedHeaders = - responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers; - const contentType = parsedHeaders["content-type"]; - res = new PassThrough(); - - this.callback = null; - this.runInAsyncScope(getResolveErrorBodyCallback, null, { - callback, - body: res, - contentType, - statusCode, - statusMessage, - headers, - }); - } else { - if (factory === null) { - return; - } - - res = this.runInAsyncScope(factory, null, { - statusCode, - headers, - opaque, - context, - }); - - if ( - !res || - typeof res.write !== "function" || - typeof res.end !== "function" || - typeof res.on !== "function" - ) { - throw new InvalidReturnValueError("expected Writable"); - } - - // TODO: Avoid finished. It registers an unnecessary amount of listeners. - finished(res, { readable: false }, (err) => { - const { callback, res, opaque, trailers, abort } = this; - - this.res = null; - if (err || !res.readable) { - util.destroy(res, err); - } - - this.callback = null; - this.runInAsyncScope(callback, null, err || null, { opaque, trailers }); - - if (err) { - abort(); - } - }); - } - - res.on("drain", resume); - - this.res = res; - - const needDrain = - res.writableNeedDrain !== undefined - ? res.writableNeedDrain - : res._writableState && res._writableState.needDrain; - - return needDrain !== true; - } - - onData(chunk) { - const { res } = this; - - return res ? res.write(chunk) : true; - } - - onComplete(trailers) { - const { res } = this; - - removeSignal(this); - - if (!res) { - return; - } - - this.trailers = util.parseHeaders(trailers); - - res.end(); - } - - onError(err) { - const { res, callback, opaque, body } = this; - - removeSignal(this); - - this.factory = null; - - if (res) { - this.res = null; - util.destroy(res, err); - } else if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - - if (body) { - this.body = null; - util.destroy(body, err); - } - } - } - - function stream(opts, factory, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - stream.call(this, opts, factory, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - this.dispatch(opts, new StreamHandler(opts, factory, callback)); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = stream; - - /***/ - }, - - /***/ 6923: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8045); - const { AsyncResource } = __nccwpck_require__(852); - const util = __nccwpck_require__(3983); - const { addSignal, removeSignal } = __nccwpck_require__(7032); - const assert = __nccwpck_require__(9491); - - class UpgradeHandler extends AsyncResource { - constructor(opts, callback) { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("invalid opts"); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - const { signal, opaque, responseHeaders } = opts; - - if ( - signal && - typeof signal.on !== "function" && - typeof signal.addEventListener !== "function" - ) { - throw new InvalidArgumentError("signal must be an EventEmitter or EventTarget"); - } - - super("UNDICI_UPGRADE"); - - this.responseHeaders = responseHeaders || null; - this.opaque = opaque || null; - this.callback = callback; - this.abort = null; - this.context = null; - - addSignal(this, signal); - } - - onConnect(abort, context) { - if (!this.callback) { - throw new RequestAbortedError(); - } - - this.abort = abort; - this.context = null; - } - - onHeaders() { - throw new SocketError("bad upgrade", null); - } - - onUpgrade(statusCode, rawHeaders, socket) { - const { callback, opaque, context } = this; - - assert.strictEqual(statusCode, 101); - - removeSignal(this); - - this.callback = null; - const headers = - this.responseHeaders === "raw" - ? util.parseRawHeaders(rawHeaders) - : util.parseHeaders(rawHeaders); - this.runInAsyncScope(callback, null, null, { - headers, - socket, - opaque, - context, - }); - } - - onError(err) { - const { callback, opaque } = this; - - removeSignal(this); - - if (callback) { - this.callback = null; - queueMicrotask(() => { - this.runInAsyncScope(callback, null, err, { opaque }); - }); - } - } - } - - function upgrade(opts, callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - upgrade.call(this, opts, (err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - try { - const upgradeHandler = new UpgradeHandler(opts, callback); - this.dispatch( - { - ...opts, - method: opts.method || "GET", - upgrade: opts.protocol || "Websocket", - }, - upgradeHandler, - ); - } catch (err) { - if (typeof callback !== "function") { - throw err; - } - const opaque = opts && opts.opaque; - queueMicrotask(() => callback(err, { opaque })); - } - } - - module.exports = upgrade; - - /***/ - }, - - /***/ 4059: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - module.exports.request = __nccwpck_require__(5448); - module.exports.stream = __nccwpck_require__(5395); - module.exports.pipeline = __nccwpck_require__(8752); - module.exports.upgrade = __nccwpck_require__(6923); - module.exports.connect = __nccwpck_require__(9744); - - /***/ - }, - - /***/ 3858: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // Ported from https://github.com/nodejs/undici/pull/907 - - const assert = __nccwpck_require__(9491); - const { Readable } = __nccwpck_require__(2781); - const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = - __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3983); - - let Blob; - - const kConsume = Symbol("kConsume"); - const kReading = Symbol("kReading"); - const kBody = Symbol("kBody"); - const kAbort = Symbol("abort"); - const kContentType = Symbol("kContentType"); - - const noop = () => {}; - - module.exports = class BodyReadable extends Readable { - constructor({ - resume, - abort, - contentType = "", - highWaterMark = 64 * 1024, // Same as nodejs fs streams. - }) { - super({ - autoDestroy: true, - read: resume, - highWaterMark, - }); - - this._readableState.dataEmitted = false; - - this[kAbort] = abort; - this[kConsume] = null; - this[kBody] = null; - this[kContentType] = contentType; - - // Is stream being consumed through Readable API? - // This is an optimization so that we avoid checking - // for 'data' and 'readable' listeners in the hot path - // inside push(). - this[kReading] = false; - } - - destroy(err) { - if (this.destroyed) { - // Node < 16 - return this; - } - - if (!err && !this._readableState.endEmitted) { - err = new RequestAbortedError(); - } - - if (err) { - this[kAbort](); - } - - return super.destroy(err); - } - - emit(ev, ...args) { - if (ev === "data") { - // Node < 16.7 - this._readableState.dataEmitted = true; - } else if (ev === "error") { - // Node < 16 - this._readableState.errorEmitted = true; - } - return super.emit(ev, ...args); - } - - on(ev, ...args) { - if (ev === "data" || ev === "readable") { - this[kReading] = true; - } - return super.on(ev, ...args); - } - - addListener(ev, ...args) { - return this.on(ev, ...args); - } - - off(ev, ...args) { - const ret = super.off(ev, ...args); - if (ev === "data" || ev === "readable") { - this[kReading] = this.listenerCount("data") > 0 || this.listenerCount("readable") > 0; - } - return ret; - } - - removeListener(ev, ...args) { - return this.off(ev, ...args); - } - - push(chunk) { - if (this[kConsume] && chunk !== null && this.readableLength === 0) { - consumePush(this[kConsume], chunk); - return this[kReading] ? super.push(chunk) : true; - } - return super.push(chunk); - } - - // https://fetch.spec.whatwg.org/#dom-body-text - async text() { - return consume(this, "text"); - } - - // https://fetch.spec.whatwg.org/#dom-body-json - async json() { - return consume(this, "json"); - } - - // https://fetch.spec.whatwg.org/#dom-body-blob - async blob() { - return consume(this, "blob"); - } - - // https://fetch.spec.whatwg.org/#dom-body-arraybuffer - async arrayBuffer() { - return consume(this, "arrayBuffer"); - } - - // https://fetch.spec.whatwg.org/#dom-body-formdata - async formData() { - // TODO: Implement. - throw new NotSupportedError(); - } - - // https://fetch.spec.whatwg.org/#dom-body-bodyused - get bodyUsed() { - return util.isDisturbed(this); - } - - // https://fetch.spec.whatwg.org/#dom-body-body - get body() { - if (!this[kBody]) { - this[kBody] = ReadableStreamFrom(this); - if (this[kConsume]) { - // TODO: Is this the best way to force a lock? - this[kBody].getReader(); // Ensure stream is locked. - assert(this[kBody].locked); - } - } - return this[kBody]; - } - - dump(opts) { - let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144; - const signal = opts && opts.signal; - - if (signal) { - try { - if (typeof signal !== "object" || !("aborted" in signal)) { - throw new InvalidArgumentError("signal must be an AbortSignal"); - } - util.throwIfAborted(signal); - } catch (err) { - return Promise.reject(err); - } - } - - if (this.closed) { - return Promise.resolve(null); - } - - return new Promise((resolve, reject) => { - const signalListenerCleanup = signal - ? util.addAbortListener(signal, () => { - this.destroy(); - }) - : noop; - - this.on("close", function () { - signalListenerCleanup(); - if (signal && signal.aborted) { - reject( - signal.reason || - Object.assign(new Error("The operation was aborted"), { - name: "AbortError", - }), - ); - } else { - resolve(null); - } - }) - .on("error", noop) - .on("data", function (chunk) { - limit -= chunk.length; - if (limit <= 0) { - this.destroy(); - } - }) - .resume(); - }); - } - }; - - // https://streams.spec.whatwg.org/#readablestream-locked - function isLocked(self) { - // Consume is an implicit lock. - return (self[kBody] && self[kBody].locked === true) || self[kConsume]; - } - - // https://fetch.spec.whatwg.org/#body-unusable - function isUnusable(self) { - return util.isDisturbed(self) || isLocked(self); - } - - async function consume(stream, type) { - if (isUnusable(stream)) { - throw new TypeError("unusable"); - } - - assert(!stream[kConsume]); - - return new Promise((resolve, reject) => { - stream[kConsume] = { - type, - stream, - resolve, - reject, - length: 0, - body: [], - }; - - stream - .on("error", function (err) { - consumeFinish(this[kConsume], err); - }) - .on("close", function () { - if (this[kConsume].body !== null) { - consumeFinish(this[kConsume], new RequestAbortedError()); - } - }); - - process.nextTick(consumeStart, stream[kConsume]); - }); - } - - function consumeStart(consume) { - if (consume.body === null) { - return; - } - - const { _readableState: state } = consume.stream; - - for (const chunk of state.buffer) { - consumePush(consume, chunk); - } - - if (state.endEmitted) { - consumeEnd(this[kConsume]); - } else { - consume.stream.on("end", function () { - consumeEnd(this[kConsume]); - }); - } - - consume.stream.resume(); - - while (consume.stream.read() != null) { - // Loop - } - } - - function consumeEnd(consume) { - const { type, body, resolve, stream, length } = consume; - - try { - if (type === "text") { - resolve(toUSVString(Buffer.concat(body))); - } else if (type === "json") { - resolve(JSON.parse(Buffer.concat(body))); - } else if (type === "arrayBuffer") { - const dst = new Uint8Array(length); - - let pos = 0; - for (const buf of body) { - dst.set(buf, pos); - pos += buf.byteLength; - } - - resolve(dst.buffer); - } else if (type === "blob") { - if (!Blob) { - Blob = __nccwpck_require__(4300).Blob; - } - resolve(new Blob(body, { type: stream[kContentType] })); - } - - consumeFinish(consume); - } catch (err) { - stream.destroy(err); - } - } - - function consumePush(consume, chunk) { - consume.length += chunk.length; - consume.body.push(chunk); - } - - function consumeFinish(consume, err) { - if (consume.body === null) { - return; - } - - if (err) { - consume.reject(err); - } else { - consume.resolve(); - } - - consume.type = null; - consume.stream = null; - consume.resolve = null; - consume.reject = null; - consume.length = 0; - consume.body = null; - } - - /***/ - }, - - /***/ 7474: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const assert = __nccwpck_require__(9491); - const { ResponseStatusCodeError } = __nccwpck_require__(8045); - const { toUSVString } = __nccwpck_require__(3983); - - async function getResolveErrorBodyCallback({ - callback, - body, - contentType, - statusCode, - statusMessage, - headers, - }) { - assert(body); - - let chunks = []; - let limit = 0; - - for await (const chunk of body) { - chunks.push(chunk); - limit += chunk.length; - if (limit > 128 * 1024) { - chunks = null; - break; - } - } - - if (statusCode === 204 || !contentType || !chunks) { - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, - statusCode, - headers, - ), - ); - return; - } - - try { - if (contentType.startsWith("application/json")) { - const payload = JSON.parse(toUSVString(Buffer.concat(chunks))); - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${ - statusMessage ? `: ${statusMessage}` : "" - }`, - statusCode, - headers, - payload, - ), - ); - return; - } - - if (contentType.startsWith("text/")) { - const payload = toUSVString(Buffer.concat(chunks)); - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${ - statusMessage ? `: ${statusMessage}` : "" - }`, - statusCode, - headers, - payload, - ), - ); - return; - } - } catch (err) { - // Process in a fallback if error - } - - process.nextTick( - callback, - new ResponseStatusCodeError( - `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`, - statusCode, - headers, - ), - ); - } - - module.exports = { getResolveErrorBodyCallback }; - - /***/ - }, - - /***/ 7931: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { BalancedPoolMissingUpstreamError, InvalidArgumentError } = __nccwpck_require__(8045); - const { PoolBase, kClients, kNeedDrain, kAddClient, kRemoveClient, kGetDispatcher } = - __nccwpck_require__(3198); - const Pool = __nccwpck_require__(4634); - const { kUrl, kInterceptors } = __nccwpck_require__(2785); - const { parseOrigin } = __nccwpck_require__(3983); - const kFactory = Symbol("factory"); - - const kOptions = Symbol("options"); - const kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); - const kCurrentWeight = Symbol("kCurrentWeight"); - const kIndex = Symbol("kIndex"); - const kWeight = Symbol("kWeight"); - const kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); - const kErrorPenalty = Symbol("kErrorPenalty"); - - function getGreatestCommonDivisor(a, b) { - if (b === 0) return a; - return getGreatestCommonDivisor(b, a % b); - } - - function defaultFactory(origin, opts) { - return new Pool(origin, opts); - } - - class BalancedPool extends PoolBase { - constructor(upstreams = [], { factory = defaultFactory, ...opts } = {}) { - super(); - - this[kOptions] = opts; - this[kIndex] = -1; - this[kCurrentWeight] = 0; - - this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100; - this[kErrorPenalty] = this[kOptions].errorPenalty || 15; - - if (!Array.isArray(upstreams)) { - upstreams = [upstreams]; - } - - if (typeof factory !== "function") { - throw new InvalidArgumentError("factory must be a function."); - } - - this[kInterceptors] = - opts.interceptors && - opts.interceptors.BalancedPool && - Array.isArray(opts.interceptors.BalancedPool) - ? opts.interceptors.BalancedPool - : []; - this[kFactory] = factory; - - for (const upstream of upstreams) { - this.addUpstream(upstream); - } - this._updateBalancedPoolStats(); - } - - addUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - - if ( - this[kClients].find( - (pool) => - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true, - ) - ) { - return this; - } - const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])); - - this[kAddClient](pool); - pool.on("connect", () => { - pool[kWeight] = Math.min( - this[kMaxWeightPerServer], - pool[kWeight] + this[kErrorPenalty], - ); - }); - - pool.on("connectionError", () => { - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - }); - - pool.on("disconnect", (...args) => { - const err = args[2]; - if (err && err.code === "UND_ERR_SOCKET") { - // decrease the weight of the pool. - pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]); - this._updateBalancedPoolStats(); - } - }); - - for (const client of this[kClients]) { - client[kWeight] = this[kMaxWeightPerServer]; - } - - this._updateBalancedPoolStats(); - - return this; - } - - _updateBalancedPoolStats() { - this[kGreatestCommonDivisor] = this[kClients] - .map((p) => p[kWeight]) - .reduce(getGreatestCommonDivisor, 0); - } - - removeUpstream(upstream) { - const upstreamOrigin = parseOrigin(upstream).origin; - - const pool = this[kClients].find( - (pool) => - pool[kUrl].origin === upstreamOrigin && - pool.closed !== true && - pool.destroyed !== true, - ); - - if (pool) { - this[kRemoveClient](pool); - } - - return this; - } - - get upstreams() { - return this[kClients] - .filter((dispatcher) => dispatcher.closed !== true && dispatcher.destroyed !== true) - .map((p) => p[kUrl].origin); - } - - [kGetDispatcher]() { - // We validate that pools is greater than 0, - // otherwise we would have to wait until an upstream - // is added, which might never happen. - if (this[kClients].length === 0) { - throw new BalancedPoolMissingUpstreamError(); - } - - const dispatcher = this[kClients].find( - (dispatcher) => - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true, - ); - - if (!dispatcher) { - return; - } - - const allClientsBusy = this[kClients] - .map((pool) => pool[kNeedDrain]) - .reduce((a, b) => a && b, true); - - if (allClientsBusy) { - return; - } - - let counter = 0; - - let maxWeightIndex = this[kClients].findIndex((pool) => !pool[kNeedDrain]); - - while (counter++ < this[kClients].length) { - this[kIndex] = (this[kIndex] + 1) % this[kClients].length; - const pool = this[kClients][this[kIndex]]; - - // find pool index with the largest weight - if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { - maxWeightIndex = this[kIndex]; - } - - // decrease the current weight every `this[kClients].length`. - if (this[kIndex] === 0) { - // Set the current weight to the next lower weight. - this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]; - - if (this[kCurrentWeight] <= 0) { - this[kCurrentWeight] = this[kMaxWeightPerServer]; - } - } - if (pool[kWeight] >= this[kCurrentWeight] && !pool[kNeedDrain]) { - return pool; - } - } - - this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]; - this[kIndex] = maxWeightIndex; - return this[kClients][maxWeightIndex]; - } - } - - module.exports = BalancedPool; - - /***/ - }, - - /***/ 6101: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kConstruct } = __nccwpck_require__(9174); - const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(2396); - const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3983); - const { kHeadersList } = __nccwpck_require__(2785); - const { webidl } = __nccwpck_require__(1744); - const { Response, cloneResponse } = __nccwpck_require__(7823); - const { Request } = __nccwpck_require__(8359); - const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861); - const { fetching } = __nccwpck_require__(4881); - const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(2538); - const assert = __nccwpck_require__(9491); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation - * @typedef {Object} CacheBatchOperation - * @property {'delete' | 'put'} type - * @property {any} request - * @property {any} response - * @property {import('../../types/cache').CacheQueryOptions} options - */ - - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list - * @typedef {[any, any][]} requestResponseList - */ - - class Cache { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list - * @type {requestResponseList} - */ - #relevantRequestResponseList; - - constructor() { - if (arguments[0] !== kConstruct) { - webidl.illegalConstructor(); - } - - this.#relevantRequestResponseList = arguments[1]; - } - - async match(request, options = {}) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.match" }); - - request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - const p = await this.matchAll(request, options); - - if (p.length === 0) { - return; - } - - return p[0]; - } - - async matchAll(request = undefined, options = {}) { - webidl.brandCheck(this, Cache); - - if (request !== undefined) request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - // 1. - let r = null; - - // 2. - if (request !== undefined) { - if (request instanceof Request) { - // 2.1.1 - r = request[kState]; - - // 2.1.2 - if (r.method !== "GET" && !options.ignoreMethod) { - return []; - } - } else if (typeof request === "string") { - // 2.2.1 - r = new Request(request)[kState]; - } - } - - // 5. - // 5.1 - const responses = []; - - // 5.2 - if (request === undefined) { - // 5.2.1 - for (const requestResponse of this.#relevantRequestResponseList) { - responses.push(requestResponse[1]); - } - } else { - // 5.3 - // 5.3.1 - const requestResponses = this.#queryCache(r, options); - - // 5.3.2 - for (const requestResponse of requestResponses) { - responses.push(requestResponse[1]); - } - } - - // 5.4 - // We don't implement CORs so we don't need to loop over the responses, yay! - - // 5.5.1 - const responseList = []; - - // 5.5.2 - for (const response of responses) { - // 5.5.2.1 - const responseObject = new Response(response.body?.source ?? null); - const body = responseObject[kState].body; - responseObject[kState] = response; - responseObject[kState].body = body; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = "immutable"; - - responseList.push(responseObject); - } - - // 6. - return Object.freeze(responseList); - } - - async add(request) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.add" }); - - request = webidl.converters.RequestInfo(request); - - // 1. - const requests = [request]; - - // 2. - const responseArrayPromise = this.addAll(requests); - - // 3. - return await responseArrayPromise; - } - - async addAll(requests) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.addAll" }); - - requests = webidl.converters["sequence"](requests); - - // 1. - const responsePromises = []; - - // 2. - const requestList = []; - - // 3. - for (const request of requests) { - if (typeof request === "string") { - continue; - } - - // 3.1 - const r = request[kState]; - - // 3.2 - if (!urlIsHttpHttpsScheme(r.url) || r.method !== "GET") { - throw webidl.errors.exception({ - header: "Cache.addAll", - message: "Expected http/s scheme when method is not GET.", - }); - } - } - - // 4. - /** @type {ReturnType[]} */ - const fetchControllers = []; - - // 5. - for (const request of requests) { - // 5.1 - const r = new Request(request)[kState]; - - // 5.2 - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: "Cache.addAll", - message: "Expected http/s scheme.", - }); - } - - // 5.4 - r.initiator = "fetch"; - r.destination = "subresource"; - - // 5.5 - requestList.push(r); - - // 5.6 - const responsePromise = createDeferredPromise(); - - // 5.7 - fetchControllers.push( - fetching({ - request: r, - dispatcher: getGlobalDispatcher(), - processResponse(response) { - // 1. - if ( - response.type === "error" || - response.status === 206 || - response.status < 200 || - response.status > 299 - ) { - responsePromise.reject( - webidl.errors.exception({ - header: "Cache.addAll", - message: - "Received an invalid status code or the request failed.", - }), - ); - } else if (response.headersList.contains("vary")) { - // 2. - // 2.1 - const fieldValues = getFieldValues(response.headersList.get("vary")); - - // 2.2 - for (const fieldValue of fieldValues) { - // 2.2.1 - if (fieldValue === "*") { - responsePromise.reject( - webidl.errors.exception({ - header: "Cache.addAll", - message: "invalid vary field value", - }), - ); - - for (const controller of fetchControllers) { - controller.abort(); - } - - return; - } - } - } - }, - processResponseEndOfBody(response) { - // 1. - if (response.aborted) { - responsePromise.reject(new DOMException("aborted", "AbortError")); - return; - } - - // 2. - responsePromise.resolve(response); - }, - }), - ); - - // 5.8 - responsePromises.push(responsePromise.promise); - } - - // 6. - const p = Promise.all(responsePromises); - - // 7. - const responses = await p; - - // 7.1 - const operations = []; - - // 7.2 - let index = 0; - - // 7.3 - for (const response of responses) { - // 7.3.1 - /** @type {CacheBatchOperation} */ - const operation = { - type: "put", // 7.3.2 - request: requestList[index], // 7.3.3 - response, // 7.3.4 - }; - - operations.push(operation); // 7.3.5 - - index++; // 7.3.6 - } - - // 7.5 - const cacheJobPromise = createDeferredPromise(); - - // 7.6.1 - let errorData = null; - - // 7.6.2 - try { - this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - - // 7.6.3 - queueMicrotask(() => { - // 7.6.3.1 - if (errorData === null) { - cacheJobPromise.resolve(undefined); - } else { - // 7.6.3.2 - cacheJobPromise.reject(errorData); - } - }); - - // 7.7 - return cacheJobPromise.promise; - } - - async put(request, response) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 2, { header: "Cache.put" }); - - request = webidl.converters.RequestInfo(request); - response = webidl.converters.Response(response); - - // 1. - let innerRequest = null; - - // 2. - if (request instanceof Request) { - innerRequest = request[kState]; - } else { - // 3. - innerRequest = new Request(request)[kState]; - } - - // 4. - if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== "GET") { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Expected an http/s scheme when method is not GET", - }); - } - - // 5. - const innerResponse = response[kState]; - - // 6. - if (innerResponse.status === 206) { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Got 206 status", - }); - } - - // 7. - if (innerResponse.headersList.contains("vary")) { - // 7.1. - const fieldValues = getFieldValues(innerResponse.headersList.get("vary")); - - // 7.2. - for (const fieldValue of fieldValues) { - // 7.2.1 - if (fieldValue === "*") { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Got * vary field value", - }); - } - } - } - - // 8. - if ( - innerResponse.body && - (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked) - ) { - throw webidl.errors.exception({ - header: "Cache.put", - message: "Response body is locked or disturbed", - }); - } - - // 9. - const clonedResponse = cloneResponse(innerResponse); - - // 10. - const bodyReadPromise = createDeferredPromise(); - - // 11. - if (innerResponse.body != null) { - // 11.1 - const stream = innerResponse.body.stream; - - // 11.2 - const reader = stream.getReader(); - - // 11.3 - readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject); - } else { - bodyReadPromise.resolve(undefined); - } - - // 12. - /** @type {CacheBatchOperation[]} */ - const operations = []; - - // 13. - /** @type {CacheBatchOperation} */ - const operation = { - type: "put", // 14. - request: innerRequest, // 15. - response: clonedResponse, // 16. - }; - - // 17. - operations.push(operation); - - // 19. - const bytes = await bodyReadPromise.promise; - - if (clonedResponse.body != null) { - clonedResponse.body.source = bytes; - } - - // 19.1 - const cacheJobPromise = createDeferredPromise(); - - // 19.2.1 - let errorData = null; - - // 19.2.2 - try { - this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - - // 19.2.3 - queueMicrotask(() => { - // 19.2.3.1 - if (errorData === null) { - cacheJobPromise.resolve(); - } else { - // 19.2.3.2 - cacheJobPromise.reject(errorData); - } - }); - - return cacheJobPromise.promise; - } - - async delete(request, options = {}) { - webidl.brandCheck(this, Cache); - webidl.argumentLengthCheck(arguments, 1, { header: "Cache.delete" }); - - request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - /** - * @type {Request} - */ - let r = null; - - if (request instanceof Request) { - r = request[kState]; - - if (r.method !== "GET" && !options.ignoreMethod) { - return false; - } - } else { - assert(typeof request === "string"); - - r = new Request(request)[kState]; - } - - /** @type {CacheBatchOperation[]} */ - const operations = []; - - /** @type {CacheBatchOperation} */ - const operation = { - type: "delete", - request: r, - options, - }; - - operations.push(operation); - - const cacheJobPromise = createDeferredPromise(); - - let errorData = null; - let requestResponses; - - try { - requestResponses = this.#batchCacheOperations(operations); - } catch (e) { - errorData = e; - } - - queueMicrotask(() => { - if (errorData === null) { - cacheJobPromise.resolve(!!requestResponses?.length); - } else { - cacheJobPromise.reject(errorData); - } - }); - - return cacheJobPromise.promise; - } - - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys - * @param {any} request - * @param {import('../../types/cache').CacheQueryOptions} options - * @returns {readonly Request[]} - */ - async keys(request = undefined, options = {}) { - webidl.brandCheck(this, Cache); - - if (request !== undefined) request = webidl.converters.RequestInfo(request); - options = webidl.converters.CacheQueryOptions(options); - - // 1. - let r = null; - - // 2. - if (request !== undefined) { - // 2.1 - if (request instanceof Request) { - // 2.1.1 - r = request[kState]; - - // 2.1.2 - if (r.method !== "GET" && !options.ignoreMethod) { - return []; - } - } else if (typeof request === "string") { - // 2.2 - r = new Request(request)[kState]; - } - } - - // 4. - const promise = createDeferredPromise(); - - // 5. - // 5.1 - const requests = []; - - // 5.2 - if (request === undefined) { - // 5.2.1 - for (const requestResponse of this.#relevantRequestResponseList) { - // 5.2.1.1 - requests.push(requestResponse[0]); - } - } else { - // 5.3 - // 5.3.1 - const requestResponses = this.#queryCache(r, options); - - // 5.3.2 - for (const requestResponse of requestResponses) { - // 5.3.2.1 - requests.push(requestResponse[0]); - } - } - - // 5.4 - queueMicrotask(() => { - // 5.4.1 - const requestList = []; - - // 5.4.2 - for (const request of requests) { - const requestObject = new Request("https://a"); - requestObject[kState] = request; - requestObject[kHeaders][kHeadersList] = request.headersList; - requestObject[kHeaders][kGuard] = "immutable"; - requestObject[kRealm] = request.client; - - // 5.4.2.1 - requestList.push(requestObject); - } - - // 5.4.3 - promise.resolve(Object.freeze(requestList)); - }); - - return promise.promise; - } - - /** - * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm - * @param {CacheBatchOperation[]} operations - * @returns {requestResponseList} - */ - #batchCacheOperations(operations) { - // 1. - const cache = this.#relevantRequestResponseList; - - // 2. - const backupCache = [...cache]; - - // 3. - const addedItems = []; - - // 4.1 - const resultList = []; - - try { - // 4.2 - for (const operation of operations) { - // 4.2.1 - if (operation.type !== "delete" && operation.type !== "put") { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: 'operation type does not match "delete" or "put"', - }); - } - - // 4.2.2 - if (operation.type === "delete" && operation.response != null) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "delete operation should not have an associated response", - }); - } - - // 4.2.3 - if (this.#queryCache(operation.request, operation.options, addedItems).length) { - throw new DOMException("???", "InvalidStateError"); - } - - // 4.2.4 - let requestResponses; - - // 4.2.5 - if (operation.type === "delete") { - // 4.2.5.1 - requestResponses = this.#queryCache(operation.request, operation.options); - - // TODO: the spec is wrong, this is needed to pass WPTs - if (requestResponses.length === 0) { - return []; - } - - // 4.2.5.2 - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse); - assert(idx !== -1); - - // 4.2.5.2.1 - cache.splice(idx, 1); - } - } else if (operation.type === "put") { - // 4.2.6 - // 4.2.6.1 - if (operation.response == null) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "put operation should have an associated response", - }); - } - - // 4.2.6.2 - const r = operation.request; - - // 4.2.6.3 - if (!urlIsHttpHttpsScheme(r.url)) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "expected http or https scheme", - }); - } - - // 4.2.6.4 - if (r.method !== "GET") { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "not get method", - }); - } - - // 4.2.6.5 - if (operation.options != null) { - throw webidl.errors.exception({ - header: "Cache.#batchCacheOperations", - message: "options must not be defined", - }); - } - - // 4.2.6.6 - requestResponses = this.#queryCache(operation.request); - - // 4.2.6.7 - for (const requestResponse of requestResponses) { - const idx = cache.indexOf(requestResponse); - assert(idx !== -1); - - // 4.2.6.7.1 - cache.splice(idx, 1); - } - - // 4.2.6.8 - cache.push([operation.request, operation.response]); - - // 4.2.6.10 - addedItems.push([operation.request, operation.response]); - } - - // 4.2.7 - resultList.push([operation.request, operation.response]); - } - - // 4.3 - return resultList; - } catch (e) { - // 5. - // 5.1 - this.#relevantRequestResponseList.length = 0; - - // 5.2 - this.#relevantRequestResponseList = backupCache; - - // 5.3 - throw e; - } - } - - /** - * @see https://w3c.github.io/ServiceWorker/#query-cache - * @param {any} requestQuery - * @param {import('../../types/cache').CacheQueryOptions} options - * @param {requestResponseList} targetStorage - * @returns {requestResponseList} - */ - #queryCache(requestQuery, options, targetStorage) { - /** @type {requestResponseList} */ - const resultList = []; - - const storage = targetStorage ?? this.#relevantRequestResponseList; - - for (const requestResponse of storage) { - const [cachedRequest, cachedResponse] = requestResponse; - if ( - this.#requestMatchesCachedItem( - requestQuery, - cachedRequest, - cachedResponse, - options, - ) - ) { - resultList.push(requestResponse); - } - } - - return resultList; - } - - /** - * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm - * @param {any} requestQuery - * @param {any} request - * @param {any | null} response - * @param {import('../../types/cache').CacheQueryOptions | undefined} options - * @returns {boolean} - */ - #requestMatchesCachedItem(requestQuery, request, response = null, options) { - // if (options?.ignoreMethod === false && request.method === 'GET') { - // return false - // } - - const queryURL = new URL(requestQuery.url); - - const cachedURL = new URL(request.url); - - if (options?.ignoreSearch) { - cachedURL.search = ""; - - queryURL.search = ""; - } - - if (!urlEquals(queryURL, cachedURL, true)) { - return false; - } - - if (response == null || options?.ignoreVary || !response.headersList.contains("vary")) { - return true; - } - - const fieldValues = getFieldValues(response.headersList.get("vary")); - - for (const fieldValue of fieldValues) { - if (fieldValue === "*") { - return false; - } - - const requestValue = request.headersList.get(fieldValue); - const queryValue = requestQuery.headersList.get(fieldValue); - - // If one has the header and the other doesn't, or one has - // a different value than the other, return false - if (requestValue !== queryValue) { - return false; - } - } - - return true; - } - } - - Object.defineProperties(Cache.prototype, { - [Symbol.toStringTag]: { - value: "Cache", - configurable: true, - }, - match: kEnumerableProperty, - matchAll: kEnumerableProperty, - add: kEnumerableProperty, - addAll: kEnumerableProperty, - put: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty, - }); - - const cacheQueryOptionConverters = [ - { - key: "ignoreSearch", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "ignoreMethod", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "ignoreVary", - converter: webidl.converters.boolean, - defaultValue: false, - }, - ]; - - webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters); - - webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ - ...cacheQueryOptionConverters, - { - key: "cacheName", - converter: webidl.converters.DOMString, - }, - ]); - - webidl.converters.Response = webidl.interfaceConverter(Response); - - webidl.converters["sequence"] = webidl.sequenceConverter( - webidl.converters.RequestInfo, - ); - - module.exports = { - Cache, - }; - - /***/ - }, - - /***/ 7907: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kConstruct } = __nccwpck_require__(9174); - const { Cache } = __nccwpck_require__(6101); - const { webidl } = __nccwpck_require__(1744); - const { kEnumerableProperty } = __nccwpck_require__(3983); - - class CacheStorage { - /** - * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map - * @type {Map} - */ - async has(cacheName) { - webidl.brandCheck(this, CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.has" }); - - cacheName = webidl.converters.DOMString(cacheName); - - // 2.1.1 - // 2.2 - return this.#caches.has(cacheName); - } - - /** - * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open - * @param {string} cacheName - * @returns {Promise} - */ - async open(cacheName) { - webidl.brandCheck(this, CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.open" }); - - cacheName = webidl.converters.DOMString(cacheName); - - // 2.1 - if (this.#caches.has(cacheName)) { - // await caches.open('v1') !== await caches.open('v1') - - // 2.1.1 - const cache = this.#caches.get(cacheName); - - // 2.1.1.1 - return new Cache(kConstruct, cache); - } - - // 2.2 - const cache = []; - - // 2.3 - this.#caches.set(cacheName, cache); - - // 2.4 - return new Cache(kConstruct, cache); - } - - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete - * @param {string} cacheName - * @returns {Promise} - */ - async delete(cacheName) { - webidl.brandCheck(this, CacheStorage); - webidl.argumentLengthCheck(arguments, 1, { header: "CacheStorage.delete" }); - - cacheName = webidl.converters.DOMString(cacheName); - - return this.#caches.delete(cacheName); - } - - /** - * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys - * @returns {string[]} - */ - async keys() { - webidl.brandCheck(this, CacheStorage); - - // 2.1 - const keys = this.#caches.keys(); - - // 2.2 - return [...keys]; - } - } - - Object.defineProperties(CacheStorage.prototype, { - [Symbol.toStringTag]: { - value: "CacheStorage", - configurable: true, - }, - match: kEnumerableProperty, - has: kEnumerableProperty, - open: kEnumerableProperty, - delete: kEnumerableProperty, - keys: kEnumerableProperty, - }); - - module.exports = { - CacheStorage, - }; - - /***/ - }, - - /***/ 9174: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - module.exports = { - kConstruct: __nccwpck_require__(2785).kConstruct, - }; - - /***/ - }, - - /***/ 2396: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const assert = __nccwpck_require__(9491); - const { URLSerializer } = __nccwpck_require__(685); - const { isValidHeaderName } = __nccwpck_require__(2538); - - /** - * @see https://url.spec.whatwg.org/#concept-url-equals - * @param {URL} A - * @param {URL} B - * @param {boolean | undefined} excludeFragment - * @returns {boolean} - */ - function urlEquals(A, B, excludeFragment = false) { - const serializedA = URLSerializer(A, excludeFragment); - - const serializedB = URLSerializer(B, excludeFragment); - - return serializedA === serializedB; - } - - /** - * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 - * @param {string} header - */ - function fieldValues(header) { - assert(header !== null); - - const values = []; - - for (let value of header.split(",")) { - value = value.trim(); - - if (!value.length) { - continue; - } else if (!isValidHeaderName(value)) { - continue; - } - - values.push(value); - } - - return values; - } - - module.exports = { - urlEquals, - fieldValues, - }; - - /***/ - }, - - /***/ 3598: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // @ts-check - - /* global WebAssembly */ - - const assert = __nccwpck_require__(9491); - const net = __nccwpck_require__(1808); - const http = __nccwpck_require__(3685); - const { pipeline } = __nccwpck_require__(2781); - const util = __nccwpck_require__(3983); - const timers = __nccwpck_require__(9459); - const Request = __nccwpck_require__(2905); - const DispatcherBase = __nccwpck_require__(4839); - const { - RequestContentLengthMismatchError, - ResponseContentLengthMismatchError, - InvalidArgumentError, - RequestAbortedError, - HeadersTimeoutError, - HeadersOverflowError, - SocketError, - InformationalError, - BodyTimeoutError, - HTTPParserError, - ResponseExceededMaxSizeError, - ClientDestroyedError, - } = __nccwpck_require__(8045); - const buildConnector = __nccwpck_require__(2067); - const { - kUrl, - kReset, - kServerName, - kClient, - kBusy, - kParser, - kConnect, - kBlocking, - kResuming, - kRunning, - kPending, - kSize, - kWriting, - kQueue, - kConnected, - kConnecting, - kNeedDrain, - kNoRef, - kKeepAliveDefaultTimeout, - kHostHeader, - kPendingIdx, - kRunningIdx, - kError, - kPipelining, - kSocket, - kKeepAliveTimeoutValue, - kMaxHeadersSize, - kKeepAliveMaxTimeout, - kKeepAliveTimeoutThreshold, - kHeadersTimeout, - kBodyTimeout, - kStrictContentLength, - kConnector, - kMaxRedirections, - kMaxRequests, - kCounter, - kClose, - kDestroy, - kDispatch, - kInterceptors, - kLocalAddress, - kMaxResponseSize, - kHTTPConnVersion, - // HTTP2 - kHost, - kHTTP2Session, - kHTTP2SessionState, - kHTTP2BuildRequest, - kHTTP2CopyHeaders, - kHTTP1BuildRequest, - } = __nccwpck_require__(2785); - - /** @type {import('http2')} */ - let http2; - try { - http2 = __nccwpck_require__(5158); - } catch { - // @ts-ignore - http2 = { constants: {} }; - } - - const { - constants: { - HTTP2_HEADER_AUTHORITY, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_CONTENT_LENGTH, - HTTP2_HEADER_EXPECT, - HTTP2_HEADER_STATUS, - }, - } = http2; - - // Experimental - let h2ExperimentalWarned = false; - - const FastBuffer = Buffer[Symbol.species]; - - const kClosedResolve = Symbol("kClosedResolve"); - - const channels = {}; - - try { - const diagnosticsChannel = __nccwpck_require__(7643); - channels.sendHeaders = diagnosticsChannel.channel("undici:client:sendHeaders"); - channels.beforeConnect = diagnosticsChannel.channel("undici:client:beforeConnect"); - channels.connectError = diagnosticsChannel.channel("undici:client:connectError"); - channels.connected = diagnosticsChannel.channel("undici:client:connected"); - } catch { - channels.sendHeaders = { hasSubscribers: false }; - channels.beforeConnect = { hasSubscribers: false }; - channels.connectError = { hasSubscribers: false }; - channels.connected = { hasSubscribers: false }; - } - - /** - * @type {import('../types/client').default} - */ - class Client extends DispatcherBase { - /** - * - * @param {string|URL} url - * @param {import('../types/client').Client.Options} options - */ - constructor( - url, - { - interceptors, - maxHeaderSize, - headersTimeout, - socketTimeout, - requestTimeout, - connectTimeout, - bodyTimeout, - idleTimeout, - keepAlive, - keepAliveTimeout, - maxKeepAliveTimeout, - keepAliveMaxTimeout, - keepAliveTimeoutThreshold, - socketPath, - pipelining, - tls, - strictContentLength, - maxCachedSessions, - maxRedirections, - connect, - maxRequestsPerClient, - localAddress, - maxResponseSize, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - // h2 - allowH2, - maxConcurrentStreams, - } = {}, - ) { - super(); - - if (keepAlive !== undefined) { - throw new InvalidArgumentError("unsupported keepAlive, use pipelining=0 instead"); - } - - if (socketTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported socketTimeout, use headersTimeout & bodyTimeout instead", - ); - } - - if (requestTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported requestTimeout, use headersTimeout & bodyTimeout instead", - ); - } - - if (idleTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported idleTimeout, use keepAliveTimeout instead", - ); - } - - if (maxKeepAliveTimeout !== undefined) { - throw new InvalidArgumentError( - "unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead", - ); - } - - if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { - throw new InvalidArgumentError("invalid maxHeaderSize"); - } - - if (socketPath != null && typeof socketPath !== "string") { - throw new InvalidArgumentError("invalid socketPath"); - } - - if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { - throw new InvalidArgumentError("invalid connectTimeout"); - } - - if ( - keepAliveTimeout != null && - (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0) - ) { - throw new InvalidArgumentError("invalid keepAliveTimeout"); - } - - if ( - keepAliveMaxTimeout != null && - (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0) - ) { - throw new InvalidArgumentError("invalid keepAliveMaxTimeout"); - } - - if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { - throw new InvalidArgumentError("invalid keepAliveTimeoutThreshold"); - } - - if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError("headersTimeout must be a positive integer or zero"); - } - - if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError("bodyTimeout must be a positive integer or zero"); - } - - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError("connect must be a function or an object"); - } - - if ( - maxRedirections != null && - (!Number.isInteger(maxRedirections) || maxRedirections < 0) - ) { - throw new InvalidArgumentError("maxRedirections must be a positive number"); - } - - if ( - maxRequestsPerClient != null && - (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0) - ) { - throw new InvalidArgumentError("maxRequestsPerClient must be a positive number"); - } - - if ( - localAddress != null && - (typeof localAddress !== "string" || net.isIP(localAddress) === 0) - ) { - throw new InvalidArgumentError("localAddress must be valid string IP address"); - } - - if ( - maxResponseSize != null && - (!Number.isInteger(maxResponseSize) || maxResponseSize < -1) - ) { - throw new InvalidArgumentError("maxResponseSize must be a positive number"); - } - - if ( - autoSelectFamilyAttemptTimeout != null && - (!Number.isInteger(autoSelectFamilyAttemptTimeout) || - autoSelectFamilyAttemptTimeout < -1) - ) { - throw new InvalidArgumentError( - "autoSelectFamilyAttemptTimeout must be a positive number", - ); - } - - // h2 - if (allowH2 != null && typeof allowH2 !== "boolean") { - throw new InvalidArgumentError("allowH2 must be a valid boolean value"); - } - - if ( - maxConcurrentStreams != null && - (typeof maxConcurrentStreams !== "number" || maxConcurrentStreams < 1) - ) { - throw new InvalidArgumentError( - "maxConcurrentStreams must be a possitive integer, greater than 0", - ); - } - - if (typeof connect !== "function") { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily - ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } - : undefined), - ...connect, - }); - } - - this[kInterceptors] = - interceptors && interceptors.Client && Array.isArray(interceptors.Client) - ? interceptors.Client - : [createRedirectInterceptor({ maxRedirections })]; - this[kUrl] = util.parseOrigin(url); - this[kConnector] = connect; - this[kSocket] = null; - this[kPipelining] = pipelining != null ? pipelining : 1; - this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize; - this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout; - this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout; - this[kKeepAliveTimeoutThreshold] = - keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold; - this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]; - this[kServerName] = null; - this[kLocalAddress] = localAddress != null ? localAddress : null; - this[kResuming] = 0; // 0, idle, 1, scheduled, 2 resuming - this[kNeedDrain] = 0; // 0, idle, 1, scheduled, 2 resuming - this[kHostHeader] = `host: ${this[kUrl].hostname}${ - this[kUrl].port ? `:${this[kUrl].port}` : "" - }\r\n`; - this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3; - this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3; - this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength; - this[kMaxRedirections] = maxRedirections; - this[kMaxRequests] = maxRequestsPerClient; - this[kClosedResolve] = null; - this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1; - this[kHTTPConnVersion] = "h1"; - - // HTTP/2 - this[kHTTP2Session] = null; - this[kHTTP2SessionState] = !allowH2 - ? null - : { - // streams: null, // Fixed queue of streams - For future support of `push` - openStreams: 0, // Keep track of them to decide wether or not unref the session - maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100, // Max peerConcurrentStreams for a Node h2 server - }; - this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ""}`; - - // kQueue is built up of 3 sections separated by - // the kRunningIdx and kPendingIdx indices. - // | complete | running | pending | - // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length - // kRunningIdx points to the first running element. - // kPendingIdx points to the first pending element. - // This implements a fast queue with an amortized - // time of O(1). - - this[kQueue] = []; - this[kRunningIdx] = 0; - this[kPendingIdx] = 0; - } - - get pipelining() { - return this[kPipelining]; - } - - set pipelining(value) { - this[kPipelining] = value; - resume(this, true); - } - - get [kPending]() { - return this[kQueue].length - this[kPendingIdx]; - } - - get [kRunning]() { - return this[kPendingIdx] - this[kRunningIdx]; - } - - get [kSize]() { - return this[kQueue].length - this[kRunningIdx]; - } - - get [kConnected]() { - return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed; - } - - get [kBusy]() { - const socket = this[kSocket]; - return ( - (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || - this[kSize] >= (this[kPipelining] || 1) || - this[kPending] > 0 - ); - } - - /* istanbul ignore: only used for test */ - [kConnect](cb) { - connect(this); - this.once("connect", cb); - } - - [kDispatch](opts, handler) { - const origin = opts.origin || this[kUrl].origin; - - const request = - this[kHTTPConnVersion] === "h2" - ? Request[kHTTP2BuildRequest](origin, opts, handler) - : Request[kHTTP1BuildRequest](origin, opts, handler); - - this[kQueue].push(request); - if (this[kResuming]) { - // Do nothing. - } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { - // Wait a tick in case stream/iterator is ended in the same tick. - this[kResuming] = 1; - process.nextTick(resume, this); - } else { - resume(this, true); - } - - if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { - this[kNeedDrain] = 2; - } - - return this[kNeedDrain] < 2; - } - - async [kClose]() { - // TODO: for H2 we need to gracefully flush the remaining enqueued - // request and close each stream. - return new Promise((resolve) => { - if (!this[kSize]) { - resolve(null); - } else { - this[kClosedResolve] = resolve; - } - }); - } - - async [kDestroy](err) { - return new Promise((resolve) => { - const requests = this[kQueue].splice(this[kPendingIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } - - const callback = () => { - if (this[kClosedResolve]) { - // TODO (fix): Should we error here with ClientDestroyedError? - this[kClosedResolve](); - this[kClosedResolve] = null; - } - resolve(); - }; - - if (this[kHTTP2Session] != null) { - util.destroy(this[kHTTP2Session], err); - this[kHTTP2Session] = null; - this[kHTTP2SessionState] = null; - } - - if (!this[kSocket]) { - queueMicrotask(callback); - } else { - util.destroy(this[kSocket].on("close", callback), err); - } - - resume(this); - }); - } - } - - function onHttp2SessionError(err) { - assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); - - this[kSocket][kError] = err; - - onError(this[kClient], err); - } - - function onHttp2FrameError(type, code, id) { - const err = new InformationalError( - `HTTP/2: "frameError" received - type ${type}, code ${code}`, - ); - - if (id === 0) { - this[kSocket][kError] = err; - onError(this[kClient], err); - } - } - - function onHttp2SessionEnd() { - util.destroy(this, new SocketError("other side closed")); - util.destroy(this[kSocket], new SocketError("other side closed")); - } - - function onHTTP2GoAway(code) { - const client = this[kClient]; - const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`); - client[kSocket] = null; - client[kHTTP2Session] = null; - - if (client.destroyed) { - assert(this[kPending] === 0); - - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(this, request, err); - } - } else if (client[kRunning] > 0) { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - - errorRequest(client, request, err); - } - - client[kPendingIdx] = client[kRunningIdx]; - - assert(client[kRunning] === 0); - - client.emit("disconnect", client[kUrl], [client], err); - - resume(client); - } - - const constants = __nccwpck_require__(953); - const createRedirectInterceptor = __nccwpck_require__(8861); - const EMPTY_BUF = Buffer.alloc(0); - - async function lazyllhttp() { - const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(1145) : undefined; - - let mod; - try { - mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(5627), "base64")); - } catch (e) { - /* istanbul ignore next */ - - // We could check if the error was caused by the simd option not - // being enabled, but the occurring of this other error - // * https://github.com/emscripten-core/emscripten/issues/11495 - // got me to remove that check to avoid breaking Node 12. - mod = await WebAssembly.compile( - Buffer.from(llhttpWasmData || __nccwpck_require__(1145), "base64"), - ); - } - - return await WebAssembly.instantiate(mod, { - env: { - /* eslint-disable camelcase */ - - wasm_on_url: (p, at, len) => { - /* istanbul ignore next */ - return 0; - }, - wasm_on_status: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || - 0 - ); - }, - wasm_on_message_begin: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageBegin() || 0; - }, - wasm_on_header_field: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onHeaderField( - new FastBuffer(currentBufferRef.buffer, start, len), - ) || 0 - ); - }, - wasm_on_header_value: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onHeaderValue( - new FastBuffer(currentBufferRef.buffer, start, len), - ) || 0 - ); - }, - wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { - assert.strictEqual(currentParser.ptr, p); - return ( - currentParser.onHeadersComplete( - statusCode, - Boolean(upgrade), - Boolean(shouldKeepAlive), - ) || 0 - ); - }, - wasm_on_body: (p, at, len) => { - assert.strictEqual(currentParser.ptr, p); - const start = at - currentBufferPtr + currentBufferRef.byteOffset; - return ( - currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 - ); - }, - wasm_on_message_complete: (p) => { - assert.strictEqual(currentParser.ptr, p); - return currentParser.onMessageComplete() || 0; - }, - - /* eslint-enable camelcase */ - }, - }); - } - - let llhttpInstance = null; - let llhttpPromise = lazyllhttp(); - llhttpPromise.catch(); - - let currentParser = null; - let currentBufferRef = null; - let currentBufferSize = 0; - let currentBufferPtr = null; - - const TIMEOUT_HEADERS = 1; - const TIMEOUT_BODY = 2; - const TIMEOUT_IDLE = 3; - - class Parser { - constructor(client, socket, { exports }) { - assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0); - - this.llhttp = exports; - this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE); - this.client = client; - this.socket = socket; - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - this.statusCode = null; - this.statusText = ""; - this.upgrade = false; - this.headers = []; - this.headersSize = 0; - this.headersMaxSize = client[kMaxHeadersSize]; - this.shouldKeepAlive = false; - this.paused = false; - this.resume = this.resume.bind(this); - - this.bytesRead = 0; - - this.keepAlive = ""; - this.contentLength = ""; - this.connection = ""; - this.maxResponseSize = client[kMaxResponseSize]; - } - - setTimeout(value, type) { - this.timeoutType = type; - if (value !== this.timeoutValue) { - timers.clearTimeout(this.timeout); - if (value) { - this.timeout = timers.setTimeout(onParserTimeout, value, this); - // istanbul ignore else: only for jest - if (this.timeout.unref) { - this.timeout.unref(); - } - } else { - this.timeout = null; - } - this.timeoutValue = value; - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - } - - resume() { - if (this.socket.destroyed || !this.paused) { - return; - } - - assert(this.ptr != null); - assert(currentParser == null); - - this.llhttp.llhttp_resume(this.ptr); - - assert(this.timeoutType === TIMEOUT_BODY); - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - - this.paused = false; - this.execute(this.socket.read() || EMPTY_BUF); // Flush parser. - this.readMore(); - } - - readMore() { - while (!this.paused && this.ptr) { - const chunk = this.socket.read(); - if (chunk === null) { - break; - } - this.execute(chunk); - } - } - - execute(data) { - assert(this.ptr != null); - assert(currentParser == null); - assert(!this.paused); - - const { socket, llhttp } = this; - - if (data.length > currentBufferSize) { - if (currentBufferPtr) { - llhttp.free(currentBufferPtr); - } - currentBufferSize = Math.ceil(data.length / 4096) * 4096; - currentBufferPtr = llhttp.malloc(currentBufferSize); - } - - new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data); - - // Call `execute` on the wasm parser. - // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, - // and finally the length of bytes to parse. - // The return value is an error code or `constants.ERROR.OK`. - try { - let ret; - - try { - currentBufferRef = data; - currentParser = this; - ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length); - /* eslint-disable-next-line no-useless-catch */ - } catch (err) { - /* istanbul ignore next: difficult to make a test case for */ - throw err; - } finally { - currentParser = null; - currentBufferRef = null; - } - - const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr; - - if (ret === constants.ERROR.PAUSED_UPGRADE) { - this.onUpgrade(data.slice(offset)); - } else if (ret === constants.ERROR.PAUSED) { - this.paused = true; - socket.unshift(data.slice(offset)); - } else if (ret !== constants.ERROR.OK) { - const ptr = llhttp.llhttp_get_error_reason(this.ptr); - let message = ""; - /* istanbul ignore else: difficult to make a test case for */ - if (ptr) { - const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0); - message = - "Response does not match the HTTP/1.1 protocol (" + - Buffer.from(llhttp.memory.buffer, ptr, len).toString() + - ")"; - } - throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)); - } - } catch (err) { - util.destroy(socket, err); - } - } - - destroy() { - assert(this.ptr != null); - assert(currentParser == null); - - this.llhttp.llhttp_free(this.ptr); - this.ptr = null; - - timers.clearTimeout(this.timeout); - this.timeout = null; - this.timeoutValue = null; - this.timeoutType = null; - - this.paused = false; - } - - onStatus(buf) { - this.statusText = buf.toString(); - } - - onMessageBegin() { - const { socket, client } = this; - - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1; - } - - const request = client[kQueue][client[kRunningIdx]]; - if (!request) { - return -1; - } - } - - onHeaderField(buf) { - const len = this.headers.length; - - if ((len & 1) === 0) { - this.headers.push(buf); - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } - - this.trackHeader(buf.length); - } - - onHeaderValue(buf) { - let len = this.headers.length; - - if ((len & 1) === 1) { - this.headers.push(buf); - len += 1; - } else { - this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]); - } - - const key = this.headers[len - 2]; - if (key.length === 10 && key.toString().toLowerCase() === "keep-alive") { - this.keepAlive += buf.toString(); - } else if (key.length === 10 && key.toString().toLowerCase() === "connection") { - this.connection += buf.toString(); - } else if (key.length === 14 && key.toString().toLowerCase() === "content-length") { - this.contentLength += buf.toString(); - } - - this.trackHeader(buf.length); - } - - trackHeader(len) { - this.headersSize += len; - if (this.headersSize >= this.headersMaxSize) { - util.destroy(this.socket, new HeadersOverflowError()); - } - } - - onUpgrade(head) { - const { upgrade, client, socket, headers, statusCode } = this; - - assert(upgrade); - - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - - assert(!socket.destroyed); - assert(socket === client[kSocket]); - assert(!this.paused); - assert(request.upgrade || request.method === "CONNECT"); - - this.statusCode = null; - this.statusText = ""; - this.shouldKeepAlive = null; - - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - - socket.unshift(head); - - socket[kParser].destroy(); - socket[kParser] = null; - - socket[kClient] = null; - socket[kError] = null; - socket - .removeListener("error", onSocketError) - .removeListener("readable", onSocketReadable) - .removeListener("end", onSocketEnd) - .removeListener("close", onSocketClose); - - client[kSocket] = null; - client[kQueue][client[kRunningIdx]++] = null; - client.emit("disconnect", client[kUrl], [client], new InformationalError("upgrade")); - - try { - request.onUpgrade(statusCode, headers, socket); - } catch (err) { - util.destroy(socket, err); - } - - resume(client); - } - - onHeadersComplete(statusCode, upgrade, shouldKeepAlive) { - const { client, socket, headers, statusText } = this; - - /* istanbul ignore next: difficult to make a test case for */ - if (socket.destroyed) { - return -1; - } - - const request = client[kQueue][client[kRunningIdx]]; - - /* istanbul ignore next: difficult to make a test case for */ - if (!request) { - return -1; - } - - assert(!this.upgrade); - assert(this.statusCode < 200); - - if (statusCode === 100) { - util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket))); - return -1; - } - - /* this can only happen if server is misbehaving */ - if (upgrade && !request.upgrade) { - util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket))); - return -1; - } - - assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS); - - this.statusCode = statusCode; - this.shouldKeepAlive = - shouldKeepAlive || - // Override llhttp value which does not allow keepAlive for HEAD. - (request.method === "HEAD" && - !socket[kReset] && - this.connection.toLowerCase() === "keep-alive"); - - if (this.statusCode >= 200) { - const bodyTimeout = - request.bodyTimeout != null ? request.bodyTimeout : client[kBodyTimeout]; - this.setTimeout(bodyTimeout, TIMEOUT_BODY); - } else if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - - if (request.method === "CONNECT") { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2; - } - - if (upgrade) { - assert(client[kRunning] === 1); - this.upgrade = true; - return 2; - } - - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - - if (this.shouldKeepAlive && client[kPipelining]) { - const keepAliveTimeout = this.keepAlive - ? util.parseKeepAliveTimeout(this.keepAlive) - : null; - - if (keepAliveTimeout != null) { - const timeout = Math.min( - keepAliveTimeout - client[kKeepAliveTimeoutThreshold], - client[kKeepAliveMaxTimeout], - ); - if (timeout <= 0) { - socket[kReset] = true; - } else { - client[kKeepAliveTimeoutValue] = timeout; - } - } else { - client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]; - } - } else { - // Stop more requests from being dispatched. - socket[kReset] = true; - } - - const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false; - - if (request.aborted) { - return -1; - } - - if (request.method === "HEAD") { - return 1; - } - - if (statusCode < 200) { - return 1; - } - - if (socket[kBlocking]) { - socket[kBlocking] = false; - resume(client); - } - - return pause ? constants.ERROR.PAUSED : 0; - } - - onBody(buf) { - const { client, socket, statusCode, maxResponseSize } = this; - - if (socket.destroyed) { - return -1; - } - - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - - assert.strictEqual(this.timeoutType, TIMEOUT_BODY); - if (this.timeout) { - // istanbul ignore else: only for jest - if (this.timeout.refresh) { - this.timeout.refresh(); - } - } - - assert(statusCode >= 200); - - if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { - util.destroy(socket, new ResponseExceededMaxSizeError()); - return -1; - } - - this.bytesRead += buf.length; - - if (request.onData(buf) === false) { - return constants.ERROR.PAUSED; - } - } - - onMessageComplete() { - const { - client, - socket, - statusCode, - upgrade, - headers, - contentLength, - bytesRead, - shouldKeepAlive, - } = this; - - if (socket.destroyed && (!statusCode || shouldKeepAlive)) { - return -1; - } - - if (upgrade) { - return; - } - - const request = client[kQueue][client[kRunningIdx]]; - assert(request); - - assert(statusCode >= 100); - - this.statusCode = null; - this.statusText = ""; - this.bytesRead = 0; - this.contentLength = ""; - this.keepAlive = ""; - this.connection = ""; - - assert(this.headers.length % 2 === 0); - this.headers = []; - this.headersSize = 0; - - if (statusCode < 200) { - return; - } - - /* istanbul ignore next: should be handled by llhttp? */ - if ( - request.method !== "HEAD" && - contentLength && - bytesRead !== parseInt(contentLength, 10) - ) { - util.destroy(socket, new ResponseContentLengthMismatchError()); - return -1; - } - - request.onComplete(headers); - - client[kQueue][client[kRunningIdx]++] = null; - - if (socket[kWriting]) { - assert.strictEqual(client[kRunning], 0); - // Response completed before request. - util.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (!shouldKeepAlive) { - util.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (socket[kReset] && client[kRunning] === 0) { - // Destroy socket once all requests have completed. - // The request at the tail of the pipeline is the one - // that requested reset and no further requests should - // have been queued since then. - util.destroy(socket, new InformationalError("reset")); - return constants.ERROR.PAUSED; - } else if (client[kPipelining] === 1) { - // We must wait a full event loop cycle to reuse this socket to make sure - // that non-spec compliant servers are not closing the connection even if they - // said they won't. - setImmediate(resume, client); - } else { - resume(client); - } - } - } - - function onParserTimeout(parser) { - const { socket, timeoutType, client } = parser; - - /* istanbul ignore else */ - if (timeoutType === TIMEOUT_HEADERS) { - if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { - assert(!parser.paused, "cannot be paused while waiting for headers"); - util.destroy(socket, new HeadersTimeoutError()); - } - } else if (timeoutType === TIMEOUT_BODY) { - if (!parser.paused) { - util.destroy(socket, new BodyTimeoutError()); - } - } else if (timeoutType === TIMEOUT_IDLE) { - assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]); - util.destroy(socket, new InformationalError("socket idle timeout")); - } - } - - function onSocketReadable() { - const { [kParser]: parser } = this; - if (parser) { - parser.readMore(); - } - } - - function onSocketError(err) { - const { [kClient]: client, [kParser]: parser } = this; - - assert(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID"); - - if (client[kHTTPConnVersion] !== "h2") { - // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded - // to the user. - if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so for as a valid response. - parser.onMessageComplete(); - return; - } - } - - this[kError] = err; - - onError(this[kClient], err); - } - - function onError(client, err) { - if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") { - // Error is not caused by running request and not a recoverable - // socket error. - - assert(client[kPendingIdx] === client[kRunningIdx]); - - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - assert(client[kSize] === 0); - } - } - - function onSocketEnd() { - const { [kParser]: parser, [kClient]: client } = this; - - if (client[kHTTPConnVersion] !== "h2") { - if (parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.onMessageComplete(); - return; - } - } - - util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this))); - } - - function onSocketClose() { - const { [kClient]: client, [kParser]: parser } = this; - - if (client[kHTTPConnVersion] === "h1" && parser) { - if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { - // We treat all incoming data so far as a valid response. - parser.onMessageComplete(); - } - - this[kParser].destroy(); - this[kParser] = null; - } - - const err = this[kError] || new SocketError("closed", util.getSocketInfo(this)); - - client[kSocket] = null; - - if (client.destroyed) { - assert(client[kPending] === 0); - - // Fail entire queue. - const requests = client[kQueue].splice(client[kRunningIdx]); - for (let i = 0; i < requests.length; i++) { - const request = requests[i]; - errorRequest(client, request, err); - } - } else if (client[kRunning] > 0 && err.code !== "UND_ERR_INFO") { - // Fail head of pipeline. - const request = client[kQueue][client[kRunningIdx]]; - client[kQueue][client[kRunningIdx]++] = null; - - errorRequest(client, request, err); - } - - client[kPendingIdx] = client[kRunningIdx]; - - assert(client[kRunning] === 0); - - client.emit("disconnect", client[kUrl], [client], err); - - resume(client); - } - - async function connect(client) { - assert(!client[kConnecting]); - assert(!client[kSocket]); - - let { host, hostname, protocol, port } = client[kUrl]; - - // Resolve ipv6 - if (hostname[0] === "[") { - const idx = hostname.indexOf("]"); - - assert(idx !== -1); - const ip = hostname.substring(1, idx); - - assert(net.isIP(ip)); - hostname = ip; - } - - client[kConnecting] = true; - - if (channels.beforeConnect.hasSubscribers) { - channels.beforeConnect.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - connector: client[kConnector], - }); - } - - try { - const socket = await new Promise((resolve, reject) => { - client[kConnector]( - { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - (err, socket) => { - if (err) { - reject(err); - } else { - resolve(socket); - } - }, - ); - }); - - if (client.destroyed) { - util.destroy( - socket.on("error", () => {}), - new ClientDestroyedError(), - ); - return; - } - - client[kConnecting] = false; - - assert(socket); - - const isH2 = socket.alpnProtocol === "h2"; - if (isH2) { - if (!h2ExperimentalWarned) { - h2ExperimentalWarned = true; - process.emitWarning( - "H2 support is experimental, expect them to change at any time.", - { - code: "UNDICI-H2", - }, - ); - } - - const session = http2.connect(client[kUrl], { - createConnection: () => socket, - peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams, - }); - - client[kHTTPConnVersion] = "h2"; - session[kClient] = client; - session[kSocket] = socket; - session.on("error", onHttp2SessionError); - session.on("frameError", onHttp2FrameError); - session.on("end", onHttp2SessionEnd); - session.on("goaway", onHTTP2GoAway); - session.on("close", onSocketClose); - session.unref(); - - client[kHTTP2Session] = session; - socket[kHTTP2Session] = session; - } else { - if (!llhttpInstance) { - llhttpInstance = await llhttpPromise; - llhttpPromise = null; - } - - socket[kNoRef] = false; - socket[kWriting] = false; - socket[kReset] = false; - socket[kBlocking] = false; - socket[kParser] = new Parser(client, socket, llhttpInstance); - } - - socket[kCounter] = 0; - socket[kMaxRequests] = client[kMaxRequests]; - socket[kClient] = client; - socket[kError] = null; - - socket - .on("error", onSocketError) - .on("readable", onSocketReadable) - .on("end", onSocketEnd) - .on("close", onSocketClose); - - client[kSocket] = socket; - - if (channels.connected.hasSubscribers) { - channels.connected.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - connector: client[kConnector], - socket, - }); - } - client.emit("connect", client[kUrl], [client]); - } catch (err) { - if (client.destroyed) { - return; - } - - client[kConnecting] = false; - - if (channels.connectError.hasSubscribers) { - channels.connectError.publish({ - connectParams: { - host, - hostname, - protocol, - port, - servername: client[kServerName], - localAddress: client[kLocalAddress], - }, - connector: client[kConnector], - error: err, - }); - } - - if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") { - assert(client[kRunning] === 0); - while ( - client[kPending] > 0 && - client[kQueue][client[kPendingIdx]].servername === client[kServerName] - ) { - const request = client[kQueue][client[kPendingIdx]++]; - errorRequest(client, request, err); - } - } else { - onError(client, err); - } - - client.emit("connectionError", client[kUrl], [client], err); - } - - resume(client); - } - - function emitDrain(client) { - client[kNeedDrain] = 0; - client.emit("drain", client[kUrl], [client]); - } - - function resume(client, sync) { - if (client[kResuming] === 2) { - return; - } - - client[kResuming] = 2; - - _resume(client, sync); - client[kResuming] = 0; - - if (client[kRunningIdx] > 256) { - client[kQueue].splice(0, client[kRunningIdx]); - client[kPendingIdx] -= client[kRunningIdx]; - client[kRunningIdx] = 0; - } - } - - function _resume(client, sync) { - while (true) { - if (client.destroyed) { - assert(client[kPending] === 0); - return; - } - - if (client[kClosedResolve] && !client[kSize]) { - client[kClosedResolve](); - client[kClosedResolve] = null; - return; - } - - const socket = client[kSocket]; - - if (socket && !socket.destroyed && socket.alpnProtocol !== "h2") { - if (client[kSize] === 0) { - if (!socket[kNoRef] && socket.unref) { - socket.unref(); - socket[kNoRef] = true; - } - } else if (socket[kNoRef] && socket.ref) { - socket.ref(); - socket[kNoRef] = false; - } - - if (client[kSize] === 0) { - if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { - socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE); - } - } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { - if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { - const request = client[kQueue][client[kRunningIdx]]; - const headersTimeout = - request.headersTimeout != null - ? request.headersTimeout - : client[kHeadersTimeout]; - socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS); - } - } - } - - if (client[kBusy]) { - client[kNeedDrain] = 2; - } else if (client[kNeedDrain] === 2) { - if (sync) { - client[kNeedDrain] = 1; - process.nextTick(emitDrain, client); - } else { - emitDrain(client); - } - continue; - } - - if (client[kPending] === 0) { - return; - } - - if (client[kRunning] >= (client[kPipelining] || 1)) { - return; - } - - const request = client[kQueue][client[kPendingIdx]]; - - if (client[kUrl].protocol === "https:" && client[kServerName] !== request.servername) { - if (client[kRunning] > 0) { - return; - } - - client[kServerName] = request.servername; - - if (socket && socket.servername !== request.servername) { - util.destroy(socket, new InformationalError("servername changed")); - return; - } - } - - if (client[kConnecting]) { - return; - } - - if (!socket && !client[kHTTP2Session]) { - connect(client); - return; - } - - if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { - return; - } - - if (client[kRunning] > 0 && !request.idempotent) { - // Non-idempotent request cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return; - } - - if (client[kRunning] > 0 && (request.upgrade || request.method === "CONNECT")) { - // Don't dispatch an upgrade until all preceding requests have completed. - // A misbehaving server might upgrade the connection before all pipelined - // request has completed. - return; - } - - if ( - client[kRunning] > 0 && - util.bodyLength(request.body) !== 0 && - (util.isStream(request.body) || util.isAsyncIterable(request.body)) - ) { - // Request with stream or iterator body can error while other requests - // are inflight and indirectly error those as well. - // Ensure this doesn't happen by waiting for inflight - // to complete before dispatching. - - // Request with stream or iterator body cannot be retried. - // Ensure that no other requests are inflight and - // could cause failure. - return; - } - - if (!request.aborted && write(client, request)) { - client[kPendingIdx]++; - } else { - client[kQueue].splice(client[kPendingIdx], 1); - } - } - } - - // https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 - function shouldSendContentLength(method) { - return ( - method !== "GET" && - method !== "HEAD" && - method !== "OPTIONS" && - method !== "TRACE" && - method !== "CONNECT" - ); - } - - function write(client, request) { - if (client[kHTTPConnVersion] === "h2") { - writeH2(client, client[kHTTP2Session], request); - return; - } - - const { body, method, path, host, upgrade, headers, blocking, reset } = request; - - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 - - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. - - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; - - if (body && typeof body.read === "function") { - // Try to read EOF in order to get length. - body.read(0); - } - - const bodyLength = util.bodyLength(body); - - let contentLength = bodyLength; - - if (contentLength === null) { - contentLength = request.contentLength; - } - - if (contentLength === 0 && !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. - - contentLength = null; - } - - // https://github.com/nodejs/undici/issues/2046 - // A user agent may send a Content-Length header with 0 value, this should be allowed. - if ( - shouldSendContentLength(method) && - contentLength > 0 && - request.contentLength !== null && - request.contentLength !== contentLength - ) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false; - } - - process.emitWarning(new RequestContentLengthMismatchError()); - } - - const socket = client[kSocket]; - - try { - request.onConnect((err) => { - if (request.aborted || request.completed) { - return; - } - - errorRequest(client, request, err || new RequestAbortedError()); - - util.destroy(socket, new InformationalError("aborted")); - }); - } catch (err) { - errorRequest(client, request, err); - } - - if (request.aborted) { - return false; - } - - if (method === "HEAD") { - // https://github.com/mcollina/undici/issues/258 - // Close after a HEAD request to interop with misbehaving servers - // that may send a body in the response. - - socket[kReset] = true; - } - - if (upgrade || method === "CONNECT") { - // On CONNECT or upgrade, block pipeline from dispatching further - // requests on this connection. - - socket[kReset] = true; - } - - if (reset != null) { - socket[kReset] = reset; - } - - if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { - socket[kReset] = true; - } - - if (blocking) { - socket[kBlocking] = true; - } - - let header = `${method} ${path} HTTP/1.1\r\n`; - - if (typeof host === "string") { - header += `host: ${host}\r\n`; - } else { - header += client[kHostHeader]; - } - - if (upgrade) { - header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n`; - } else if (client[kPipelining] && !socket[kReset]) { - header += "connection: keep-alive\r\n"; - } else { - header += "connection: close\r\n"; - } - - if (headers) { - header += headers; - } - - if (channels.sendHeaders.hasSubscribers) { - channels.sendHeaders.publish({ request, headers: header, socket }); - } - - /* istanbul ignore else: assertion */ - if (!body || bodyLength === 0) { - if (contentLength === 0) { - socket.write(`${header}content-length: 0\r\n\r\n`, "latin1"); - } else { - assert(contentLength === null, "no body must not have content length"); - socket.write(`${header}\r\n`, "latin1"); - } - request.onRequestSent(); - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, "buffer body must have content length"); - - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, "latin1"); - socket.write(body); - socket.uncork(); - request.onBodySent(body); - request.onRequestSent(); - if (!expectsPayload) { - socket[kReset] = true; - } - } else if (util.isBlobLike(body)) { - if (typeof body.stream === "function") { - writeIterable({ - body: body.stream(), - client, - request, - socket, - contentLength, - header, - expectsPayload, - }); - } else { - writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }); - } - } else if (util.isStream(body)) { - writeStream({ body, client, request, socket, contentLength, header, expectsPayload }); - } else if (util.isIterable(body)) { - writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }); - } else { - assert(false); - } - - return true; - } - - function writeH2(client, session, request) { - const { - body, - method, - path, - host, - upgrade, - expectContinue, - signal, - headers: reqHeaders, - } = request; - - let headers; - if (typeof reqHeaders === "string") headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()); - else headers = reqHeaders; - - if (upgrade) { - errorRequest(client, request, new Error("Upgrade not supported for H2")); - return false; - } - - try { - // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? - request.onConnect((err) => { - if (request.aborted || request.completed) { - return; - } - - errorRequest(client, request, err || new RequestAbortedError()); - }); - } catch (err) { - errorRequest(client, request, err); - } - - if (request.aborted) { - return false; - } - - /** @type {import('node:http2').ClientHttp2Stream} */ - let stream; - const h2State = client[kHTTP2SessionState]; - - headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]; - headers[HTTP2_HEADER_METHOD] = method; - - if (method === "CONNECT") { - session.ref(); - // we are already connected, streams are pending, first request - // will create a new stream. We trigger a request to create the stream and wait until - // `ready` event is triggered - // We disabled endStream to allow the user to write to the stream - stream = session.request(headers, { endStream: false, signal }); - - if (stream.id && !stream.pending) { - request.onUpgrade(null, null, stream); - ++h2State.openStreams; - } else { - stream.once("ready", () => { - request.onUpgrade(null, null, stream); - ++h2State.openStreams; - }); - } - - stream.once("close", () => { - h2State.openStreams -= 1; - // TODO(HTTP/2): unref only if current streams count is 0 - if (h2State.openStreams === 0) session.unref(); - }); - - return true; - } - - // https://tools.ietf.org/html/rfc7540#section-8.3 - // :path and :scheme headers must be omited when sending CONNECT - - headers[HTTP2_HEADER_PATH] = path; - headers[HTTP2_HEADER_SCHEME] = "https"; - - // https://tools.ietf.org/html/rfc7231#section-4.3.1 - // https://tools.ietf.org/html/rfc7231#section-4.3.2 - // https://tools.ietf.org/html/rfc7231#section-4.3.5 - - // Sending a payload body on a request that does not - // expect it can cause undefined behavior on some - // servers and corrupt connection state. Do not - // re-use the connection for further requests. - - const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH"; - - if (body && typeof body.read === "function") { - // Try to read EOF in order to get length. - body.read(0); - } - - let contentLength = util.bodyLength(body); - - if (contentLength == null) { - contentLength = request.contentLength; - } - - if (contentLength === 0 || !expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD NOT send a Content-Length header field when - // the request message does not contain a payload body and the method - // semantics do not anticipate such a body. - - contentLength = null; - } - - // https://github.com/nodejs/undici/issues/2046 - // A user agent may send a Content-Length header with 0 value, this should be allowed. - if ( - shouldSendContentLength(method) && - contentLength > 0 && - request.contentLength != null && - request.contentLength !== contentLength - ) { - if (client[kStrictContentLength]) { - errorRequest(client, request, new RequestContentLengthMismatchError()); - return false; - } - - process.emitWarning(new RequestContentLengthMismatchError()); - } - - if (contentLength != null) { - assert(body, "no body must not have content length"); - headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`; - } - - session.ref(); - - const shouldEndStream = method === "GET" || method === "HEAD"; - if (expectContinue) { - headers[HTTP2_HEADER_EXPECT] = "100-continue"; - stream = session.request(headers, { endStream: shouldEndStream, signal }); - - stream.once("continue", writeBodyH2); - } else { - stream = session.request(headers, { - endStream: shouldEndStream, - signal, - }); - writeBodyH2(); - } - - // Increment counter as we have new several streams open - ++h2State.openStreams; - - stream.once("response", (headers) => { - const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers; - - if ( - request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), "") === - false - ) { - stream.pause(); - } - }); - - stream.once("end", () => { - request.onComplete([]); - }); - - stream.on("data", (chunk) => { - if (request.onData(chunk) === false) { - stream.pause(); - } - }); - - stream.once("close", () => { - h2State.openStreams -= 1; - // TODO(HTTP/2): unref only if current streams count is 0 - if (h2State.openStreams === 0) { - session.unref(); - } - }); - - stream.once("error", function (err) { - if ( - client[kHTTP2Session] && - !client[kHTTP2Session].destroyed && - !this.closed && - !this.destroyed - ) { - h2State.streams -= 1; - util.destroy(stream, err); - } - }); - - stream.once("frameError", (type, code) => { - const err = new InformationalError( - `HTTP/2: "frameError" received - type ${type}, code ${code}`, - ); - errorRequest(client, request, err); - - if ( - client[kHTTP2Session] && - !client[kHTTP2Session].destroyed && - !this.closed && - !this.destroyed - ) { - h2State.streams -= 1; - util.destroy(stream, err); - } - }); - - // stream.on('aborted', () => { - // // TODO(HTTP/2): Support aborted - // }) - - // stream.on('timeout', () => { - // // TODO(HTTP/2): Support timeout - // }) - - // stream.on('push', headers => { - // // TODO(HTTP/2): Suppor push - // }) - - // stream.on('trailers', headers => { - // // TODO(HTTP/2): Support trailers - // }) - - return true; - - function writeBodyH2() { - /* istanbul ignore else: assertion */ - if (!body) { - request.onRequestSent(); - } else if (util.isBuffer(body)) { - assert(contentLength === body.byteLength, "buffer body must have content length"); - stream.cork(); - stream.write(body); - stream.uncork(); - stream.end(); - request.onBodySent(body); - request.onRequestSent(); - } else if (util.isBlobLike(body)) { - if (typeof body.stream === "function") { - writeIterable({ - client, - request, - contentLength, - h2stream: stream, - expectsPayload, - body: body.stream(), - socket: client[kSocket], - header: "", - }); - } else { - writeBlob({ - body, - client, - request, - contentLength, - expectsPayload, - h2stream: stream, - header: "", - socket: client[kSocket], - }); - } - } else if (util.isStream(body)) { - writeStream({ - body, - client, - request, - contentLength, - expectsPayload, - socket: client[kSocket], - h2stream: stream, - header: "", - }); - } else if (util.isIterable(body)) { - writeIterable({ - body, - client, - request, - contentLength, - expectsPayload, - header: "", - h2stream: stream, - socket: client[kSocket], - }); - } else { - assert(false); - } - } - } - - function writeStream({ - h2stream, - body, - client, - request, - socket, - contentLength, - header, - expectsPayload, - }) { - assert(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined"); - - if (client[kHTTPConnVersion] === "h2") { - // For HTTP/2, is enough to pipe the stream - const pipe = pipeline(body, h2stream, (err) => { - if (err) { - util.destroy(body, err); - util.destroy(h2stream, err); - } else { - request.onRequestSent(); - } - }); - - pipe.on("data", onPipeData); - pipe.once("end", () => { - pipe.removeListener("data", onPipeData); - util.destroy(pipe); - }); - - function onPipeData(chunk) { - request.onBodySent(chunk); - } - - return; - } - - let finished = false; - - const writer = new AsyncWriter({ - socket, - request, - contentLength, - client, - expectsPayload, - header, - }); - - const onData = function (chunk) { - if (finished) { - return; - } - - try { - if (!writer.write(chunk) && this.pause) { - this.pause(); - } - } catch (err) { - util.destroy(this, err); - } - }; - const onDrain = function () { - if (finished) { - return; - } - - if (body.resume) { - body.resume(); - } - }; - const onAbort = function () { - if (finished) { - return; - } - const err = new RequestAbortedError(); - queueMicrotask(() => onFinished(err)); - }; - const onFinished = function (err) { - if (finished) { - return; - } - - finished = true; - - assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)); - - socket.off("drain", onDrain).off("error", onFinished); - - body.removeListener("data", onData) - .removeListener("end", onFinished) - .removeListener("error", onFinished) - .removeListener("close", onAbort); - - if (!err) { - try { - writer.end(); - } catch (er) { - err = er; - } - } - - writer.destroy(err); - - if (err && (err.code !== "UND_ERR_INFO" || err.message !== "reset")) { - util.destroy(body, err); - } else { - util.destroy(body); - } - }; - - body.on("data", onData).on("end", onFinished).on("error", onFinished).on("close", onAbort); - - if (body.resume) { - body.resume(); - } - - socket.on("drain", onDrain).on("error", onFinished); - } - - async function writeBlob({ - h2stream, - body, - client, - request, - socket, - contentLength, - header, - expectsPayload, - }) { - assert(contentLength === body.size, "blob body must have content length"); - - const isH2 = client[kHTTPConnVersion] === "h2"; - try { - if (contentLength != null && contentLength !== body.size) { - throw new RequestContentLengthMismatchError(); - } - - const buffer = Buffer.from(await body.arrayBuffer()); - - if (isH2) { - h2stream.cork(); - h2stream.write(buffer); - h2stream.uncork(); - } else { - socket.cork(); - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, "latin1"); - socket.write(buffer); - socket.uncork(); - } - - request.onBodySent(buffer); - request.onRequestSent(); - - if (!expectsPayload) { - socket[kReset] = true; - } - - resume(client); - } catch (err) { - util.destroy(isH2 ? h2stream : socket, err); - } - } - - async function writeIterable({ - h2stream, - body, - client, - request, - socket, - contentLength, - header, - expectsPayload, - }) { - assert(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined"); - - let callback = null; - function onDrain() { - if (callback) { - const cb = callback; - callback = null; - cb(); - } - } - - const waitForDrain = () => - new Promise((resolve, reject) => { - assert(callback === null); - - if (socket[kError]) { - reject(socket[kError]); - } else { - callback = resolve; - } - }); - - if (client[kHTTPConnVersion] === "h2") { - h2stream.on("close", onDrain).on("drain", onDrain); - - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError]; - } - - const res = h2stream.write(chunk); - request.onBodySent(chunk); - if (!res) { - await waitForDrain(); - } - } - } catch (err) { - h2stream.destroy(err); - } finally { - request.onRequestSent(); - h2stream.end(); - h2stream.off("close", onDrain).off("drain", onDrain); - } - - return; - } - - socket.on("close", onDrain).on("drain", onDrain); - - const writer = new AsyncWriter({ - socket, - request, - contentLength, - client, - expectsPayload, - header, - }); - try { - // It's up to the user to somehow abort the async iterable. - for await (const chunk of body) { - if (socket[kError]) { - throw socket[kError]; - } - - if (!writer.write(chunk)) { - await waitForDrain(); - } - } - - writer.end(); - } catch (err) { - writer.destroy(err); - } finally { - socket.off("close", onDrain).off("drain", onDrain); - } - } - - class AsyncWriter { - constructor({ socket, request, contentLength, client, expectsPayload, header }) { - this.socket = socket; - this.request = request; - this.contentLength = contentLength; - this.client = client; - this.bytesWritten = 0; - this.expectsPayload = expectsPayload; - this.header = header; - - socket[kWriting] = true; - } - - write(chunk) { - const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = - this; - - if (socket[kError]) { - throw socket[kError]; - } - - if (socket.destroyed) { - return false; - } - - const len = Buffer.byteLength(chunk); - if (!len) { - return true; - } - - // We should defer writing chunks. - if (contentLength !== null && bytesWritten + len > contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError(); - } - - process.emitWarning(new RequestContentLengthMismatchError()); - } - - socket.cork(); - - if (bytesWritten === 0) { - if (!expectsPayload) { - socket[kReset] = true; - } - - if (contentLength === null) { - socket.write(`${header}transfer-encoding: chunked\r\n`, "latin1"); - } else { - socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, "latin1"); - } - } - - if (contentLength === null) { - socket.write(`\r\n${len.toString(16)}\r\n`, "latin1"); - } - - this.bytesWritten += len; - - const ret = socket.write(chunk); - - socket.uncork(); - - request.onBodySent(chunk); - - if (!ret) { - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } - } - } - - return ret; - } - - end() { - const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = - this; - request.onRequestSent(); - - socket[kWriting] = false; - - if (socket[kError]) { - throw socket[kError]; - } - - if (socket.destroyed) { - return; - } - - if (bytesWritten === 0) { - if (expectsPayload) { - // https://tools.ietf.org/html/rfc7230#section-3.3.2 - // A user agent SHOULD send a Content-Length in a request message when - // no Transfer-Encoding is sent and the request method defines a meaning - // for an enclosed payload body. - - socket.write(`${header}content-length: 0\r\n\r\n`, "latin1"); - } else { - socket.write(`${header}\r\n`, "latin1"); - } - } else if (contentLength === null) { - socket.write("\r\n0\r\n\r\n", "latin1"); - } - - if (contentLength !== null && bytesWritten !== contentLength) { - if (client[kStrictContentLength]) { - throw new RequestContentLengthMismatchError(); - } else { - process.emitWarning(new RequestContentLengthMismatchError()); - } - } - - if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { - // istanbul ignore else: only for jest - if (socket[kParser].timeout.refresh) { - socket[kParser].timeout.refresh(); - } - } - - resume(client); - } - - destroy(err) { - const { socket, client } = this; - - socket[kWriting] = false; - - if (err) { - assert(client[kRunning] <= 1, "pipeline should only contain this request"); - util.destroy(socket, err); - } - } - } - - function errorRequest(client, request, err) { - try { - request.onError(err); - assert(request.aborted); - } catch (err) { - client.emit("error", err); - } - } - - module.exports = Client; - - /***/ - }, - - /***/ 6436: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - /* istanbul ignore file: only for Node 12 */ - - const { kConnected, kSize } = __nccwpck_require__(2785); - - class CompatWeakRef { - constructor(value) { - this.value = value; - } - - deref() { - return this.value[kConnected] === 0 && this.value[kSize] === 0 ? undefined : this.value; - } - } - - class CompatFinalizer { - constructor(finalizer) { - this.finalizer = finalizer; - } - - register(dispatcher, key) { - if (dispatcher.on) { - dispatcher.on("disconnect", () => { - if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { - this.finalizer(key); - } - }); - } - } - } - - module.exports = function () { - // FIXME: remove workaround when the Node bug is fixed - // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 - if (process.env.NODE_V8_COVERAGE) { - return { - WeakRef: CompatWeakRef, - FinalizationRegistry: CompatFinalizer, - }; - } - return { - WeakRef: global.WeakRef || CompatWeakRef, - FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer, - }; - }; - - /***/ - }, - - /***/ 663: /***/ (module) => { - "use strict"; - - // https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size - const maxAttributeValueSize = 1024; - - // https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size - const maxNameValuePairSize = 4096; - - module.exports = { - maxAttributeValueSize, - maxNameValuePairSize, - }; - - /***/ - }, - - /***/ 1724: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { parseSetCookie } = __nccwpck_require__(4408); - const { stringify, getHeadersList } = __nccwpck_require__(3121); - const { webidl } = __nccwpck_require__(1744); - const { Headers } = __nccwpck_require__(554); - - /** - * @typedef {Object} Cookie - * @property {string} name - * @property {string} value - * @property {Date|number|undefined} expires - * @property {number|undefined} maxAge - * @property {string|undefined} domain - * @property {string|undefined} path - * @property {boolean|undefined} secure - * @property {boolean|undefined} httpOnly - * @property {'Strict'|'Lax'|'None'} sameSite - * @property {string[]} unparsed - */ - - /** - * @param {Headers} headers - * @returns {Record} - */ - function getCookies(headers) { - webidl.argumentLengthCheck(arguments, 1, { header: "getCookies" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - const cookie = headers.get("cookie"); - const out = {}; - - if (!cookie) { - return out; - } - - for (const piece of cookie.split(";")) { - const [name, ...value] = piece.split("="); - - out[name.trim()] = value.join("="); - } - - return out; - } - - /** - * @param {Headers} headers - * @param {string} name - * @param {{ path?: string, domain?: string }|undefined} attributes - * @returns {void} - */ - function deleteCookie(headers, name, attributes) { - webidl.argumentLengthCheck(arguments, 2, { header: "deleteCookie" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - name = webidl.converters.DOMString(name); - attributes = webidl.converters.DeleteCookieAttributes(attributes); - - // Matches behavior of - // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 - setCookie(headers, { - name, - value: "", - expires: new Date(0), - ...attributes, - }); - } - - /** - * @param {Headers} headers - * @returns {Cookie[]} - */ - function getSetCookies(headers) { - webidl.argumentLengthCheck(arguments, 1, { header: "getSetCookies" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - const cookies = getHeadersList(headers).cookies; - - if (!cookies) { - return []; - } - - // In older versions of undici, cookies is a list of name:value. - return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)); - } - - /** - * @param {Headers} headers - * @param {Cookie} cookie - * @returns {void} - */ - function setCookie(headers, cookie) { - webidl.argumentLengthCheck(arguments, 2, { header: "setCookie" }); - - webidl.brandCheck(headers, Headers, { strict: false }); - - cookie = webidl.converters.Cookie(cookie); - - const str = stringify(cookie); - - if (str) { - headers.append("Set-Cookie", stringify(cookie)); - } - } - - webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "path", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "domain", - defaultValue: null, - }, - ]); - - webidl.converters.Cookie = webidl.dictionaryConverter([ - { - converter: webidl.converters.DOMString, - key: "name", - }, - { - converter: webidl.converters.DOMString, - key: "value", - }, - { - converter: webidl.nullableConverter((value) => { - if (typeof value === "number") { - return webidl.converters["unsigned long long"](value); - } - - return new Date(value); - }), - key: "expires", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters["long long"]), - key: "maxAge", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "domain", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.DOMString), - key: "path", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: "secure", - defaultValue: null, - }, - { - converter: webidl.nullableConverter(webidl.converters.boolean), - key: "httpOnly", - defaultValue: null, - }, - { - converter: webidl.converters.USVString, - key: "sameSite", - allowedValues: ["Strict", "Lax", "None"], - }, - { - converter: webidl.sequenceConverter(webidl.converters.DOMString), - key: "unparsed", - defaultValue: [], - }, - ]); - - module.exports = { - getCookies, - deleteCookie, - getSetCookies, - setCookie, - }; - - /***/ - }, - - /***/ 4408: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(663); - const { isCTLExcludingHtab } = __nccwpck_require__(3121); - const { collectASequenceOfCodePointsFast } = __nccwpck_require__(685); - const assert = __nccwpck_require__(9491); - - /** - * @description Parses the field-value attributes of a set-cookie header string. - * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 - * @param {string} header - * @returns if the header is invalid, null will be returned - */ - function parseSetCookie(header) { - // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F - // character (CTL characters excluding HTAB): Abort these steps and - // ignore the set-cookie-string entirely. - if (isCTLExcludingHtab(header)) { - return null; - } - - let nameValuePair = ""; - let unparsedAttributes = ""; - let name = ""; - let value = ""; - - // 2. If the set-cookie-string contains a %x3B (";") character: - if (header.includes(";")) { - // 1. The name-value-pair string consists of the characters up to, - // but not including, the first %x3B (";"), and the unparsed- - // attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question). - const position = { position: 0 }; - - nameValuePair = collectASequenceOfCodePointsFast(";", header, position); - unparsedAttributes = header.slice(position.position); - } else { - // Otherwise: - - // 1. The name-value-pair string consists of all the characters - // contained in the set-cookie-string, and the unparsed- - // attributes is the empty string. - nameValuePair = header; - } - - // 3. If the name-value-pair string lacks a %x3D ("=") character, then - // the name string is empty, and the value string is the value of - // name-value-pair. - if (!nameValuePair.includes("=")) { - value = nameValuePair; - } else { - // Otherwise, the name string consists of the characters up to, but - // not including, the first %x3D ("=") character, and the (possibly - // empty) value string consists of the characters after the first - // %x3D ("=") character. - const position = { position: 0 }; - name = collectASequenceOfCodePointsFast("=", nameValuePair, position); - value = nameValuePair.slice(position.position + 1); - } - - // 4. Remove any leading or trailing WSP characters from the name - // string and the value string. - name = name.trim(); - value = value.trim(); - - // 5. If the sum of the lengths of the name string and the value string - // is more than 4096 octets, abort these steps and ignore the set- - // cookie-string entirely. - if (name.length + value.length > maxNameValuePairSize) { - return null; - } - - // 6. The cookie-name is the name string, and the cookie-value is the - // value string. - return { - name, - value, - ...parseUnparsedAttributes(unparsedAttributes), - }; - } - - /** - * Parses the remaining attributes of a set-cookie header - * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 - * @param {string} unparsedAttributes - * @param {[Object.]={}} cookieAttributeList - */ - function parseUnparsedAttributes(unparsedAttributes, cookieAttributeList = {}) { - // 1. If the unparsed-attributes string is empty, skip the rest of - // these steps. - if (unparsedAttributes.length === 0) { - return cookieAttributeList; - } - - // 2. Discard the first character of the unparsed-attributes (which - // will be a %x3B (";") character). - assert(unparsedAttributes[0] === ";"); - unparsedAttributes = unparsedAttributes.slice(1); - - let cookieAv = ""; - - // 3. If the remaining unparsed-attributes contains a %x3B (";") - // character: - if (unparsedAttributes.includes(";")) { - // 1. Consume the characters of the unparsed-attributes up to, but - // not including, the first %x3B (";") character. - cookieAv = collectASequenceOfCodePointsFast(";", unparsedAttributes, { position: 0 }); - unparsedAttributes = unparsedAttributes.slice(cookieAv.length); - } else { - // Otherwise: - - // 1. Consume the remainder of the unparsed-attributes. - cookieAv = unparsedAttributes; - unparsedAttributes = ""; - } - - // Let the cookie-av string be the characters consumed in this step. - - let attributeName = ""; - let attributeValue = ""; - - // 4. If the cookie-av string contains a %x3D ("=") character: - if (cookieAv.includes("=")) { - // 1. The (possibly empty) attribute-name string consists of the - // characters up to, but not including, the first %x3D ("=") - // character, and the (possibly empty) attribute-value string - // consists of the characters after the first %x3D ("=") - // character. - const position = { position: 0 }; - - attributeName = collectASequenceOfCodePointsFast("=", cookieAv, position); - attributeValue = cookieAv.slice(position.position + 1); - } else { - // Otherwise: - - // 1. The attribute-name string consists of the entire cookie-av - // string, and the attribute-value string is empty. - attributeName = cookieAv; - } - - // 5. Remove any leading or trailing WSP characters from the attribute- - // name string and the attribute-value string. - attributeName = attributeName.trim(); - attributeValue = attributeValue.trim(); - - // 6. If the attribute-value is longer than 1024 octets, ignore the - // cookie-av string and return to Step 1 of this algorithm. - if (attributeValue.length > maxAttributeValueSize) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - // 7. Process the attribute-name and attribute-value according to the - // requirements in the following subsections. (Notice that - // attributes with unrecognized attribute-names are ignored.) - const attributeNameLowercase = attributeName.toLowerCase(); - - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 - // If the attribute-name case-insensitively matches the string - // "Expires", the user agent MUST process the cookie-av as follows. - if (attributeNameLowercase === "expires") { - // 1. Let the expiry-time be the result of parsing the attribute-value - // as cookie-date (see Section 5.1.1). - const expiryTime = new Date(attributeValue); - - // 2. If the attribute-value failed to parse as a cookie date, ignore - // the cookie-av. - - cookieAttributeList.expires = expiryTime; - } else if (attributeNameLowercase === "max-age") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 - // If the attribute-name case-insensitively matches the string "Max- - // Age", the user agent MUST process the cookie-av as follows. - - // 1. If the first character of the attribute-value is not a DIGIT or a - // "-" character, ignore the cookie-av. - const charCode = attributeValue.charCodeAt(0); - - if ((charCode < 48 || charCode > 57) && attributeValue[0] !== "-") { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - // 2. If the remainder of attribute-value contains a non-DIGIT - // character, ignore the cookie-av. - if (!/^\d+$/.test(attributeValue)) { - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - // 3. Let delta-seconds be the attribute-value converted to an integer. - const deltaSeconds = Number(attributeValue); - - // 4. Let cookie-age-limit be the maximum age of the cookie (which - // SHOULD be 400 days or less, see Section 4.1.2.2). - - // 5. Set delta-seconds to the smaller of its present value and cookie- - // age-limit. - // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) - - // 6. If delta-seconds is less than or equal to zero (0), let expiry- - // time be the earliest representable date and time. Otherwise, let - // the expiry-time be the current date and time plus delta-seconds - // seconds. - // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds - - // 7. Append an attribute to the cookie-attribute-list with an - // attribute-name of Max-Age and an attribute-value of expiry-time. - cookieAttributeList.maxAge = deltaSeconds; - } else if (attributeNameLowercase === "domain") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 - // If the attribute-name case-insensitively matches the string "Domain", - // the user agent MUST process the cookie-av as follows. - - // 1. Let cookie-domain be the attribute-value. - let cookieDomain = attributeValue; - - // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be - // cookie-domain without its leading %x2E ("."). - if (cookieDomain[0] === ".") { - cookieDomain = cookieDomain.slice(1); - } - - // 3. Convert the cookie-domain to lower case. - cookieDomain = cookieDomain.toLowerCase(); - - // 4. Append an attribute to the cookie-attribute-list with an - // attribute-name of Domain and an attribute-value of cookie-domain. - cookieAttributeList.domain = cookieDomain; - } else if (attributeNameLowercase === "path") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 - // If the attribute-name case-insensitively matches the string "Path", - // the user agent MUST process the cookie-av as follows. - - // 1. If the attribute-value is empty or if the first character of the - // attribute-value is not %x2F ("/"): - let cookiePath = ""; - if (attributeValue.length === 0 || attributeValue[0] !== "/") { - // 1. Let cookie-path be the default-path. - cookiePath = "/"; - } else { - // Otherwise: - - // 1. Let cookie-path be the attribute-value. - cookiePath = attributeValue; - } - - // 2. Append an attribute to the cookie-attribute-list with an - // attribute-name of Path and an attribute-value of cookie-path. - cookieAttributeList.path = cookiePath; - } else if (attributeNameLowercase === "secure") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 - // If the attribute-name case-insensitively matches the string "Secure", - // the user agent MUST append an attribute to the cookie-attribute-list - // with an attribute-name of Secure and an empty attribute-value. - - cookieAttributeList.secure = true; - } else if (attributeNameLowercase === "httponly") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 - // If the attribute-name case-insensitively matches the string - // "HttpOnly", the user agent MUST append an attribute to the cookie- - // attribute-list with an attribute-name of HttpOnly and an empty - // attribute-value. - - cookieAttributeList.httpOnly = true; - } else if (attributeNameLowercase === "samesite") { - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 - // If the attribute-name case-insensitively matches the string - // "SameSite", the user agent MUST process the cookie-av as follows: - - // 1. Let enforcement be "Default". - let enforcement = "Default"; - - const attributeValueLowercase = attributeValue.toLowerCase(); - // 2. If cookie-av's attribute-value is a case-insensitive match for - // "None", set enforcement to "None". - if (attributeValueLowercase.includes("none")) { - enforcement = "None"; - } - - // 3. If cookie-av's attribute-value is a case-insensitive match for - // "Strict", set enforcement to "Strict". - if (attributeValueLowercase.includes("strict")) { - enforcement = "Strict"; - } - - // 4. If cookie-av's attribute-value is a case-insensitive match for - // "Lax", set enforcement to "Lax". - if (attributeValueLowercase.includes("lax")) { - enforcement = "Lax"; - } - - // 5. Append an attribute to the cookie-attribute-list with an - // attribute-name of "SameSite" and an attribute-value of - // enforcement. - cookieAttributeList.sameSite = enforcement; - } else { - cookieAttributeList.unparsed ??= []; - - cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`); - } - - // 8. Return to Step 1 of this algorithm. - return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList); - } - - module.exports = { - parseSetCookie, - parseUnparsedAttributes, - }; - - /***/ - }, - - /***/ 3121: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const assert = __nccwpck_require__(9491); - const { kHeadersList } = __nccwpck_require__(2785); - - function isCTLExcludingHtab(value) { - if (value.length === 0) { - return false; - } - - for (const char of value) { - const code = char.charCodeAt(0); - - if (code >= 0x00 || code <= 0x08 || code >= 0x0a || code <= 0x1f || code === 0x7f) { - return false; - } - } - } - - /** - CHAR = - token = 1* - separators = "(" | ")" | "<" | ">" | "@" - | "," | ";" | ":" | "\" | <"> - | "/" | "[" | "]" | "?" | "=" - | "{" | "}" | SP | HT - * @param {string} name - */ - function validateCookieName(name) { - for (const char of name) { - const code = char.charCodeAt(0); - - if ( - code <= 0x20 || - code > 0x7f || - char === "(" || - char === ")" || - char === ">" || - char === "<" || - char === "@" || - char === "," || - char === ";" || - char === ":" || - char === "\\" || - char === '"' || - char === "/" || - char === "[" || - char === "]" || - char === "?" || - char === "=" || - char === "{" || - char === "}" - ) { - throw new Error("Invalid cookie name"); - } - } - } - - /** - cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) - cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E - ; US-ASCII characters excluding CTLs, - ; whitespace DQUOTE, comma, semicolon, - ; and backslash - * @param {string} value - */ - function validateCookieValue(value) { - for (const char of value) { - const code = char.charCodeAt(0); - - if ( - code < 0x21 || // exclude CTLs (0-31) - code === 0x22 || - code === 0x2c || - code === 0x3b || - code === 0x5c || - code > 0x7e // non-ascii - ) { - throw new Error("Invalid header value"); - } - } - } - - /** - * path-value = - * @param {string} path - */ - function validateCookiePath(path) { - for (const char of path) { - const code = char.charCodeAt(0); - - if (code < 0x21 || char === ";") { - throw new Error("Invalid cookie path"); - } - } - } - - /** - * I have no idea why these values aren't allowed to be honest, - * but Deno tests these. - Khafra - * @param {string} domain - */ - function validateCookieDomain(domain) { - if (domain.startsWith("-") || domain.endsWith(".") || domain.endsWith("-")) { - throw new Error("Invalid cookie domain"); - } - } - - /** - * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 - * @param {number|Date} date - IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT - ; fixed length/zone/capitalization subset of the format - ; see Section 3.3 of [RFC5322] - - day-name = %x4D.6F.6E ; "Mon", case-sensitive - / %x54.75.65 ; "Tue", case-sensitive - / %x57.65.64 ; "Wed", case-sensitive - / %x54.68.75 ; "Thu", case-sensitive - / %x46.72.69 ; "Fri", case-sensitive - / %x53.61.74 ; "Sat", case-sensitive - / %x53.75.6E ; "Sun", case-sensitive - date1 = day SP month SP year - ; e.g., 02 Jun 1982 - - day = 2DIGIT - month = %x4A.61.6E ; "Jan", case-sensitive - / %x46.65.62 ; "Feb", case-sensitive - / %x4D.61.72 ; "Mar", case-sensitive - / %x41.70.72 ; "Apr", case-sensitive - / %x4D.61.79 ; "May", case-sensitive - / %x4A.75.6E ; "Jun", case-sensitive - / %x4A.75.6C ; "Jul", case-sensitive - / %x41.75.67 ; "Aug", case-sensitive - / %x53.65.70 ; "Sep", case-sensitive - / %x4F.63.74 ; "Oct", case-sensitive - / %x4E.6F.76 ; "Nov", case-sensitive - / %x44.65.63 ; "Dec", case-sensitive - year = 4DIGIT - - GMT = %x47.4D.54 ; "GMT", case-sensitive - - time-of-day = hour ":" minute ":" second - ; 00:00:00 - 23:59:60 (leap second) - - hour = 2DIGIT - minute = 2DIGIT - second = 2DIGIT - */ - function toIMFDate(date) { - if (typeof date === "number") { - date = new Date(date); - } - - const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; - - const months = [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec", - ]; - - const dayName = days[date.getUTCDay()]; - const day = date.getUTCDate().toString().padStart(2, "0"); - const month = months[date.getUTCMonth()]; - const year = date.getUTCFullYear(); - const hour = date.getUTCHours().toString().padStart(2, "0"); - const minute = date.getUTCMinutes().toString().padStart(2, "0"); - const second = date.getUTCSeconds().toString().padStart(2, "0"); - - return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`; - } - - /** - max-age-av = "Max-Age=" non-zero-digit *DIGIT - ; In practice, both expires-av and max-age-av - ; are limited to dates representable by the - ; user agent. - * @param {number} maxAge - */ - function validateCookieMaxAge(maxAge) { - if (maxAge < 0) { - throw new Error("Invalid cookie max-age"); - } - } - - /** - * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 - * @param {import('./index').Cookie} cookie - */ - function stringify(cookie) { - if (cookie.name.length === 0) { - return null; - } - - validateCookieName(cookie.name); - validateCookieValue(cookie.value); - - const out = [`${cookie.name}=${cookie.value}`]; - - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 - // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 - if (cookie.name.startsWith("__Secure-")) { - cookie.secure = true; - } - - if (cookie.name.startsWith("__Host-")) { - cookie.secure = true; - cookie.domain = null; - cookie.path = "/"; - } - - if (cookie.secure) { - out.push("Secure"); - } - - if (cookie.httpOnly) { - out.push("HttpOnly"); - } - - if (typeof cookie.maxAge === "number") { - validateCookieMaxAge(cookie.maxAge); - out.push(`Max-Age=${cookie.maxAge}`); - } - - if (cookie.domain) { - validateCookieDomain(cookie.domain); - out.push(`Domain=${cookie.domain}`); - } - - if (cookie.path) { - validateCookiePath(cookie.path); - out.push(`Path=${cookie.path}`); - } - - if (cookie.expires && cookie.expires.toString() !== "Invalid Date") { - out.push(`Expires=${toIMFDate(cookie.expires)}`); - } - - if (cookie.sameSite) { - out.push(`SameSite=${cookie.sameSite}`); - } - - for (const part of cookie.unparsed) { - if (!part.includes("=")) { - throw new Error("Invalid unparsed"); - } - - const [key, ...value] = part.split("="); - - out.push(`${key.trim()}=${value.join("=")}`); - } - - return out.join("; "); - } - - let kHeadersListNode; - - function getHeadersList(headers) { - if (headers[kHeadersList]) { - return headers[kHeadersList]; - } - - if (!kHeadersListNode) { - kHeadersListNode = Object.getOwnPropertySymbols(headers).find( - (symbol) => symbol.description === "headers list", - ); - - assert(kHeadersListNode, "Headers cannot be parsed"); - } - - const headersList = headers[kHeadersListNode]; - assert(headersList); - - return headersList; - } - - module.exports = { - isCTLExcludingHtab, - stringify, - getHeadersList, - }; - - /***/ - }, - - /***/ 2067: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const net = __nccwpck_require__(1808); - const assert = __nccwpck_require__(9491); - const util = __nccwpck_require__(3983); - const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8045); - - let tls; // include tls conditionally since it is not always available - - // TODO: session re-use does not wait for the first - // connection to resolve the session and might therefore - // resolve the same servername multiple times even when - // re-use is enabled. - - let SessionCache; - // FIXME: remove workaround when the Node bug is fixed - // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 - if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { - SessionCache = class WeakSessionCache { - constructor(maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions; - this._sessionCache = new Map(); - this._sessionRegistry = new global.FinalizationRegistry((key) => { - if (this._sessionCache.size < this._maxCachedSessions) { - return; - } - - const ref = this._sessionCache.get(key); - if (ref !== undefined && ref.deref() === undefined) { - this._sessionCache.delete(key); - } - }); - } - - get(sessionKey) { - const ref = this._sessionCache.get(sessionKey); - return ref ? ref.deref() : null; - } - - set(sessionKey, session) { - if (this._maxCachedSessions === 0) { - return; - } - - this._sessionCache.set(sessionKey, new WeakRef(session)); - this._sessionRegistry.register(session, sessionKey); - } - }; - } else { - SessionCache = class SimpleSessionCache { - constructor(maxCachedSessions) { - this._maxCachedSessions = maxCachedSessions; - this._sessionCache = new Map(); - } - - get(sessionKey) { - return this._sessionCache.get(sessionKey); - } - - set(sessionKey, session) { - if (this._maxCachedSessions === 0) { - return; - } - - if (this._sessionCache.size >= this._maxCachedSessions) { - // remove the oldest session - const { value: oldestKey } = this._sessionCache.keys().next(); - this._sessionCache.delete(oldestKey); - } - - this._sessionCache.set(sessionKey, session); - } - }; - } - - function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { - if ( - maxCachedSessions != null && - (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0) - ) { - throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero"); - } - - const options = { path: socketPath, ...opts }; - const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions); - timeout = timeout == null ? 10e3 : timeout; - allowH2 = allowH2 != null ? allowH2 : false; - return function connect( - { hostname, host, protocol, port, servername, localAddress, httpSocket }, - callback, - ) { - let socket; - if (protocol === "https:") { - if (!tls) { - tls = __nccwpck_require__(4404); - } - servername = servername || options.servername || util.getServerName(host) || null; - - const sessionKey = servername || hostname; - const session = sessionCache.get(sessionKey) || null; - - assert(sessionKey); - - socket = tls.connect({ - highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... - ...options, - servername, - session, - localAddress, - // TODO(HTTP/2): Add support for h2c - ALPNProtocols: allowH2 ? ["http/1.1", "h2"] : ["http/1.1"], - socket: httpSocket, // upgrade socket connection - port: port || 443, - host: hostname, - }); - - socket.on("session", function (session) { - // TODO (fix): Can a session become invalid once established? Don't think so? - sessionCache.set(sessionKey, session); - }); - } else { - assert(!httpSocket, "httpSocket can only be sent on TLS update"); - socket = net.connect({ - highWaterMark: 64 * 1024, // Same as nodejs fs streams. - ...options, - localAddress, - port: port || 80, - host: hostname, - }); - } - - // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket - if (options.keepAlive == null || options.keepAlive) { - const keepAliveInitialDelay = - options.keepAliveInitialDelay === undefined - ? 60e3 - : options.keepAliveInitialDelay; - socket.setKeepAlive(true, keepAliveInitialDelay); - } - - const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout); - - socket - .setNoDelay(true) - .once(protocol === "https:" ? "secureConnect" : "connect", function () { - cancelTimeout(); - - if (callback) { - const cb = callback; - callback = null; - cb(null, this); - } - }) - .on("error", function (err) { - cancelTimeout(); - - if (callback) { - const cb = callback; - callback = null; - cb(err); - } - }); - - return socket; - }; - } - - function setupTimeout(onConnectTimeout, timeout) { - if (!timeout) { - return () => {}; - } - - let s1 = null; - let s2 = null; - const timeoutId = setTimeout(() => { - // setImmediate is added to make sure that we priotorise socket error events over timeouts - s1 = setImmediate(() => { - if (process.platform === "win32") { - // Windows needs an extra setImmediate probably due to implementation differences in the socket logic - s2 = setImmediate(() => onConnectTimeout()); - } else { - onConnectTimeout(); - } - }); - }, timeout); - return () => { - clearTimeout(timeoutId); - clearImmediate(s1); - clearImmediate(s2); - }; - } - - function onConnectTimeout(socket) { - util.destroy(socket, new ConnectTimeoutError()); - } - - module.exports = buildConnector; - - /***/ - }, - - /***/ 8045: /***/ (module) => { - "use strict"; - - class UndiciError extends Error { - constructor(message) { - super(message); - this.name = "UndiciError"; - this.code = "UND_ERR"; - } - } - - class ConnectTimeoutError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ConnectTimeoutError); - this.name = "ConnectTimeoutError"; - this.message = message || "Connect Timeout Error"; - this.code = "UND_ERR_CONNECT_TIMEOUT"; - } - } - - class HeadersTimeoutError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, HeadersTimeoutError); - this.name = "HeadersTimeoutError"; - this.message = message || "Headers Timeout Error"; - this.code = "UND_ERR_HEADERS_TIMEOUT"; - } - } - - class HeadersOverflowError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, HeadersOverflowError); - this.name = "HeadersOverflowError"; - this.message = message || "Headers Overflow Error"; - this.code = "UND_ERR_HEADERS_OVERFLOW"; - } - } - - class BodyTimeoutError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, BodyTimeoutError); - this.name = "BodyTimeoutError"; - this.message = message || "Body Timeout Error"; - this.code = "UND_ERR_BODY_TIMEOUT"; - } - } - - class ResponseStatusCodeError extends UndiciError { - constructor(message, statusCode, headers, body) { - super(message); - Error.captureStackTrace(this, ResponseStatusCodeError); - this.name = "ResponseStatusCodeError"; - this.message = message || "Response Status Code Error"; - this.code = "UND_ERR_RESPONSE_STATUS_CODE"; - this.body = body; - this.status = statusCode; - this.statusCode = statusCode; - this.headers = headers; - } - } - - class InvalidArgumentError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, InvalidArgumentError); - this.name = "InvalidArgumentError"; - this.message = message || "Invalid Argument Error"; - this.code = "UND_ERR_INVALID_ARG"; - } - } - - class InvalidReturnValueError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, InvalidReturnValueError); - this.name = "InvalidReturnValueError"; - this.message = message || "Invalid Return Value Error"; - this.code = "UND_ERR_INVALID_RETURN_VALUE"; - } - } - - class RequestAbortedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, RequestAbortedError); - this.name = "AbortError"; - this.message = message || "Request aborted"; - this.code = "UND_ERR_ABORTED"; - } - } - - class InformationalError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, InformationalError); - this.name = "InformationalError"; - this.message = message || "Request information"; - this.code = "UND_ERR_INFO"; - } - } - - class RequestContentLengthMismatchError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, RequestContentLengthMismatchError); - this.name = "RequestContentLengthMismatchError"; - this.message = message || "Request body length does not match content-length header"; - this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"; - } - } - - class ResponseContentLengthMismatchError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ResponseContentLengthMismatchError); - this.name = "ResponseContentLengthMismatchError"; - this.message = message || "Response body length does not match content-length header"; - this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH"; - } - } - - class ClientDestroyedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ClientDestroyedError); - this.name = "ClientDestroyedError"; - this.message = message || "The client is destroyed"; - this.code = "UND_ERR_DESTROYED"; - } - } - - class ClientClosedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ClientClosedError); - this.name = "ClientClosedError"; - this.message = message || "The client is closed"; - this.code = "UND_ERR_CLOSED"; - } - } - - class SocketError extends UndiciError { - constructor(message, socket) { - super(message); - Error.captureStackTrace(this, SocketError); - this.name = "SocketError"; - this.message = message || "Socket error"; - this.code = "UND_ERR_SOCKET"; - this.socket = socket; - } - } - - class NotSupportedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, NotSupportedError); - this.name = "NotSupportedError"; - this.message = message || "Not supported error"; - this.code = "UND_ERR_NOT_SUPPORTED"; - } - } - - class BalancedPoolMissingUpstreamError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, NotSupportedError); - this.name = "MissingUpstreamError"; - this.message = message || "No upstream has been added to the BalancedPool"; - this.code = "UND_ERR_BPL_MISSING_UPSTREAM"; - } - } - - class HTTPParserError extends Error { - constructor(message, code, data) { - super(message); - Error.captureStackTrace(this, HTTPParserError); - this.name = "HTTPParserError"; - this.code = code ? `HPE_${code}` : undefined; - this.data = data ? data.toString() : undefined; - } - } - - class ResponseExceededMaxSizeError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, ResponseExceededMaxSizeError); - this.name = "ResponseExceededMaxSizeError"; - this.message = message || "Response content exceeded max size"; - this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE"; - } - } - - class RequestRetryError extends UndiciError { - constructor(message, code, { headers, data }) { - super(message); - Error.captureStackTrace(this, RequestRetryError); - this.name = "RequestRetryError"; - this.message = message || "Request retry error"; - this.code = "UND_ERR_REQ_RETRY"; - this.statusCode = code; - this.data = data; - this.headers = headers; - } - } - - module.exports = { - HTTPParserError, - UndiciError, - HeadersTimeoutError, - HeadersOverflowError, - BodyTimeoutError, - RequestContentLengthMismatchError, - ConnectTimeoutError, - ResponseStatusCodeError, - InvalidArgumentError, - InvalidReturnValueError, - RequestAbortedError, - ClientDestroyedError, - ClientClosedError, - InformationalError, - SocketError, - NotSupportedError, - ResponseContentLengthMismatchError, - BalancedPoolMissingUpstreamError, - ResponseExceededMaxSizeError, - RequestRetryError, - }; - - /***/ - }, - - /***/ 2905: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { InvalidArgumentError, NotSupportedError } = __nccwpck_require__(8045); - const assert = __nccwpck_require__(9491); - const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(2785); - const util = __nccwpck_require__(3983); - - // tokenRegExp and headerCharRegex have been lifted from - // https://github.com/nodejs/node/blob/main/lib/_http_common.js - - /** - * Verifies that the given val is a valid HTTP token - * per the rules defined in RFC 7230 - * See https://tools.ietf.org/html/rfc7230#section-3.2.6 - */ - const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; - - /** - * Matches if val contains an invalid field-vchar - * field-value = *( field-content / obs-fold ) - * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] - * field-vchar = VCHAR / obs-text - */ - const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; - - // Verifies that a given path is valid does not contain control chars \x00 to \x20 - const invalidPathRegex = /[^\u0021-\u00ff]/; - - const kHandler = Symbol("handler"); - - const channels = {}; - - let extractBody; - - try { - const diagnosticsChannel = __nccwpck_require__(7643); - channels.create = diagnosticsChannel.channel("undici:request:create"); - channels.bodySent = diagnosticsChannel.channel("undici:request:bodySent"); - channels.headers = diagnosticsChannel.channel("undici:request:headers"); - channels.trailers = diagnosticsChannel.channel("undici:request:trailers"); - channels.error = diagnosticsChannel.channel("undici:request:error"); - } catch { - channels.create = { hasSubscribers: false }; - channels.bodySent = { hasSubscribers: false }; - channels.headers = { hasSubscribers: false }; - channels.trailers = { hasSubscribers: false }; - channels.error = { hasSubscribers: false }; - } - - class Request { - constructor( - origin, - { - path, - method, - body, - headers, - query, - idempotent, - blocking, - upgrade, - headersTimeout, - bodyTimeout, - reset, - throwOnError, - expectContinue, - }, - handler, - ) { - if (typeof path !== "string") { - throw new InvalidArgumentError("path must be a string"); - } else if ( - path[0] !== "/" && - !(path.startsWith("http://") || path.startsWith("https://")) && - method !== "CONNECT" - ) { - throw new InvalidArgumentError("path must be an absolute URL or start with a slash"); - } else if (invalidPathRegex.exec(path) !== null) { - throw new InvalidArgumentError("invalid request path"); - } - - if (typeof method !== "string") { - throw new InvalidArgumentError("method must be a string"); - } else if (tokenRegExp.exec(method) === null) { - throw new InvalidArgumentError("invalid request method"); - } - - if (upgrade && typeof upgrade !== "string") { - throw new InvalidArgumentError("upgrade must be a string"); - } - - if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { - throw new InvalidArgumentError("invalid headersTimeout"); - } - - if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { - throw new InvalidArgumentError("invalid bodyTimeout"); - } - - if (reset != null && typeof reset !== "boolean") { - throw new InvalidArgumentError("invalid reset"); - } - - if (expectContinue != null && typeof expectContinue !== "boolean") { - throw new InvalidArgumentError("invalid expectContinue"); - } - - this.headersTimeout = headersTimeout; - - this.bodyTimeout = bodyTimeout; - - this.throwOnError = throwOnError === true; - - this.method = method; - - this.abort = null; - - if (body == null) { - this.body = null; - } else if (util.isStream(body)) { - this.body = body; - - const rState = this.body._readableState; - if (!rState || !rState.autoDestroy) { - this.endHandler = function autoDestroy() { - util.destroy(this); - }; - this.body.on("end", this.endHandler); - } - - this.errorHandler = (err) => { - if (this.abort) { - this.abort(err); - } else { - this.error = err; - } - }; - this.body.on("error", this.errorHandler); - } else if (util.isBuffer(body)) { - this.body = body.byteLength ? body : null; - } else if (ArrayBuffer.isView(body)) { - this.body = body.buffer.byteLength - ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) - : null; - } else if (body instanceof ArrayBuffer) { - this.body = body.byteLength ? Buffer.from(body) : null; - } else if (typeof body === "string") { - this.body = body.length ? Buffer.from(body) : null; - } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { - this.body = body; - } else { - throw new InvalidArgumentError( - "body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable", - ); - } - - this.completed = false; - - this.aborted = false; - - this.upgrade = upgrade || null; - - this.path = query ? util.buildURL(path, query) : path; - - this.origin = origin; - - this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent; - - this.blocking = blocking == null ? false : blocking; - - this.reset = reset == null ? null : reset; - - this.host = null; - - this.contentLength = null; - - this.contentType = null; - - this.headers = ""; - - // Only for H2 - this.expectContinue = expectContinue != null ? expectContinue : false; - - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError("headers array must be even"); - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(this, headers[i], headers[i + 1]); - } - } else if (headers && typeof headers === "object") { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(this, key, headers[key]); - } - } else if (headers != null) { - throw new InvalidArgumentError("headers must be an object or an array"); - } - - if (util.isFormDataLike(this.body)) { - if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { - throw new InvalidArgumentError( - "Form-Data bodies are only supported in node v16.8 and newer.", - ); - } - - if (!extractBody) { - extractBody = __nccwpck_require__(1472).extractBody; - } - - const [bodyStream, contentType] = extractBody(body); - if (this.contentType == null) { - this.contentType = contentType; - this.headers += `content-type: ${contentType}\r\n`; - } - this.body = bodyStream.stream; - this.contentLength = bodyStream.length; - } else if (util.isBlobLike(body) && this.contentType == null && body.type) { - this.contentType = body.type; - this.headers += `content-type: ${body.type}\r\n`; - } - - util.validateHandler(handler, method, upgrade); - - this.servername = util.getServerName(this.host); - - this[kHandler] = handler; - - if (channels.create.hasSubscribers) { - channels.create.publish({ request: this }); - } - } - - onBodySent(chunk) { - if (this[kHandler].onBodySent) { - try { - return this[kHandler].onBodySent(chunk); - } catch (err) { - this.abort(err); - } - } - } - - onRequestSent() { - if (channels.bodySent.hasSubscribers) { - channels.bodySent.publish({ request: this }); - } - - if (this[kHandler].onRequestSent) { - try { - return this[kHandler].onRequestSent(); - } catch (err) { - this.abort(err); - } - } - } - - onConnect(abort) { - assert(!this.aborted); - assert(!this.completed); - - if (this.error) { - abort(this.error); - } else { - this.abort = abort; - return this[kHandler].onConnect(abort); - } - } - - onHeaders(statusCode, headers, resume, statusText) { - assert(!this.aborted); - assert(!this.completed); - - if (channels.headers.hasSubscribers) { - channels.headers.publish({ - request: this, - response: { statusCode, headers, statusText }, - }); - } - - try { - return this[kHandler].onHeaders(statusCode, headers, resume, statusText); - } catch (err) { - this.abort(err); - } - } - - onData(chunk) { - assert(!this.aborted); - assert(!this.completed); - - try { - return this[kHandler].onData(chunk); - } catch (err) { - this.abort(err); - return false; - } - } - - onUpgrade(statusCode, headers, socket) { - assert(!this.aborted); - assert(!this.completed); - - return this[kHandler].onUpgrade(statusCode, headers, socket); - } - - onComplete(trailers) { - this.onFinally(); - - assert(!this.aborted); - - this.completed = true; - if (channels.trailers.hasSubscribers) { - channels.trailers.publish({ request: this, trailers }); - } - - try { - return this[kHandler].onComplete(trailers); - } catch (err) { - // TODO (fix): This might be a bad idea? - this.onError(err); - } - } - - onError(error) { - this.onFinally(); - - if (channels.error.hasSubscribers) { - channels.error.publish({ request: this, error }); - } - - if (this.aborted) { - return; - } - this.aborted = true; - - return this[kHandler].onError(error); - } - - onFinally() { - if (this.errorHandler) { - this.body.off("error", this.errorHandler); - this.errorHandler = null; - } - - if (this.endHandler) { - this.body.off("end", this.endHandler); - this.endHandler = null; - } - } - - // TODO: adjust to support H2 - addHeader(key, value) { - processHeader(this, key, value); - return this; - } - - static [kHTTP1BuildRequest](origin, opts, handler) { - // TODO: Migrate header parsing here, to make Requests - // HTTP agnostic - return new Request(origin, opts, handler); - } - - static [kHTTP2BuildRequest](origin, opts, handler) { - const headers = opts.headers; - opts = { ...opts, headers: null }; - - const request = new Request(origin, opts, handler); - - request.headers = {}; - - if (Array.isArray(headers)) { - if (headers.length % 2 !== 0) { - throw new InvalidArgumentError("headers array must be even"); - } - for (let i = 0; i < headers.length; i += 2) { - processHeader(request, headers[i], headers[i + 1], true); - } - } else if (headers && typeof headers === "object") { - const keys = Object.keys(headers); - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - processHeader(request, key, headers[key], true); - } - } else if (headers != null) { - throw new InvalidArgumentError("headers must be an object or an array"); - } - - return request; - } - - static [kHTTP2CopyHeaders](raw) { - const rawHeaders = raw.split("\r\n"); - const headers = {}; - - for (const header of rawHeaders) { - const [key, value] = header.split(": "); - - if (value == null || value.length === 0) continue; - - if (headers[key]) headers[key] += `,${value}`; - else headers[key] = value; - } - - return headers; - } - } - - function processHeaderValue(key, val, skipAppend) { - if (val && typeof val === "object") { - throw new InvalidArgumentError(`invalid ${key} header`); - } - - val = val != null ? `${val}` : ""; - - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`); - } - - return skipAppend ? val : `${key}: ${val}\r\n`; - } - - function processHeader(request, key, val, skipAppend = false) { - if (val && typeof val === "object" && !Array.isArray(val)) { - throw new InvalidArgumentError(`invalid ${key} header`); - } else if (val === undefined) { - return; - } - - if (request.host === null && key.length === 4 && key.toLowerCase() === "host") { - if (headerCharRegex.exec(val) !== null) { - throw new InvalidArgumentError(`invalid ${key} header`); - } - // Consumed by Client - request.host = val; - } else if ( - request.contentLength === null && - key.length === 14 && - key.toLowerCase() === "content-length" - ) { - request.contentLength = parseInt(val, 10); - if (!Number.isFinite(request.contentLength)) { - throw new InvalidArgumentError("invalid content-length header"); - } - } else if ( - request.contentType === null && - key.length === 12 && - key.toLowerCase() === "content-type" - ) { - request.contentType = val; - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); - else request.headers += processHeaderValue(key, val); - } else if (key.length === 17 && key.toLowerCase() === "transfer-encoding") { - throw new InvalidArgumentError("invalid transfer-encoding header"); - } else if (key.length === 10 && key.toLowerCase() === "connection") { - const value = typeof val === "string" ? val.toLowerCase() : null; - if (value !== "close" && value !== "keep-alive") { - throw new InvalidArgumentError("invalid connection header"); - } else if (value === "close") { - request.reset = true; - } - } else if (key.length === 10 && key.toLowerCase() === "keep-alive") { - throw new InvalidArgumentError("invalid keep-alive header"); - } else if (key.length === 7 && key.toLowerCase() === "upgrade") { - throw new InvalidArgumentError("invalid upgrade header"); - } else if (key.length === 6 && key.toLowerCase() === "expect") { - throw new NotSupportedError("expect header not supported"); - } else if (tokenRegExp.exec(key) === null) { - throw new InvalidArgumentError("invalid header key"); - } else { - if (Array.isArray(val)) { - for (let i = 0; i < val.length; i++) { - if (skipAppend) { - if (request.headers[key]) - request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`; - else request.headers[key] = processHeaderValue(key, val[i], skipAppend); - } else { - request.headers += processHeaderValue(key, val[i]); - } - } - } else { - if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend); - else request.headers += processHeaderValue(key, val); - } - } - } - - module.exports = Request; - - /***/ - }, - - /***/ 2785: /***/ (module) => { - module.exports = { - kClose: Symbol("close"), - kDestroy: Symbol("destroy"), - kDispatch: Symbol("dispatch"), - kUrl: Symbol("url"), - kWriting: Symbol("writing"), - kResuming: Symbol("resuming"), - kQueue: Symbol("queue"), - kConnect: Symbol("connect"), - kConnecting: Symbol("connecting"), - kHeadersList: Symbol("headers list"), - kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), - kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), - kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), - kKeepAliveTimeoutValue: Symbol("keep alive timeout"), - kKeepAlive: Symbol("keep alive"), - kHeadersTimeout: Symbol("headers timeout"), - kBodyTimeout: Symbol("body timeout"), - kServerName: Symbol("server name"), - kLocalAddress: Symbol("local address"), - kHost: Symbol("host"), - kNoRef: Symbol("no ref"), - kBodyUsed: Symbol("used"), - kRunning: Symbol("running"), - kBlocking: Symbol("blocking"), - kPending: Symbol("pending"), - kSize: Symbol("size"), - kBusy: Symbol("busy"), - kQueued: Symbol("queued"), - kFree: Symbol("free"), - kConnected: Symbol("connected"), - kClosed: Symbol("closed"), - kNeedDrain: Symbol("need drain"), - kReset: Symbol("reset"), - kDestroyed: Symbol.for("nodejs.stream.destroyed"), - kMaxHeadersSize: Symbol("max headers size"), - kRunningIdx: Symbol("running index"), - kPendingIdx: Symbol("pending index"), - kError: Symbol("error"), - kClients: Symbol("clients"), - kClient: Symbol("client"), - kParser: Symbol("parser"), - kOnDestroyed: Symbol("destroy callbacks"), - kPipelining: Symbol("pipelining"), - kSocket: Symbol("socket"), - kHostHeader: Symbol("host header"), - kConnector: Symbol("connector"), - kStrictContentLength: Symbol("strict content length"), - kMaxRedirections: Symbol("maxRedirections"), - kMaxRequests: Symbol("maxRequestsPerClient"), - kProxy: Symbol("proxy agent options"), - kCounter: Symbol("socket request counter"), - kInterceptors: Symbol("dispatch interceptors"), - kMaxResponseSize: Symbol("max response size"), - kHTTP2Session: Symbol("http2Session"), - kHTTP2SessionState: Symbol("http2Session state"), - kHTTP2BuildRequest: Symbol("http2 build request"), - kHTTP1BuildRequest: Symbol("http1 build request"), - kHTTP2CopyHeaders: Symbol("http2 copy headers"), - kHTTPConnVersion: Symbol("http connection version"), - kRetryHandlerDefaultRetry: Symbol("retry agent default retry"), - kConstruct: Symbol("constructable"), - }; - - /***/ - }, - - /***/ 3983: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const assert = __nccwpck_require__(9491); - const { kDestroyed, kBodyUsed } = __nccwpck_require__(2785); - const { IncomingMessage } = __nccwpck_require__(3685); - const stream = __nccwpck_require__(2781); - const net = __nccwpck_require__(1808); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const { Blob } = __nccwpck_require__(4300); - const nodeUtil = __nccwpck_require__(3837); - const { stringify } = __nccwpck_require__(3477); - - const [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v)); - - function nop() {} - - function isStream(obj) { - return ( - obj && - typeof obj === "object" && - typeof obj.pipe === "function" && - typeof obj.on === "function" - ); - } - - // based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) - function isBlobLike(object) { - return ( - (Blob && object instanceof Blob) || - (object && - typeof object === "object" && - (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && - /^(Blob|File)$/.test(object[Symbol.toStringTag])) - ); - } - - function buildURL(url, queryParams) { - if (url.includes("?") || url.includes("#")) { - throw new Error('Query params cannot be passed when url already contains "?" or "#".'); - } - - const stringified = stringify(queryParams); - - if (stringified) { - url += "?" + stringified; - } - - return url; - } - - function parseURL(url) { - if (typeof url === "string") { - url = new URL(url); - - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError( - "Invalid URL protocol: the URL must start with `http:` or `https:`.", - ); - } - - return url; - } - - if (!url || typeof url !== "object") { - throw new InvalidArgumentError( - "Invalid URL: The URL argument must be a non-null object.", - ); - } - - if (!/^https?:/.test(url.origin || url.protocol)) { - throw new InvalidArgumentError( - "Invalid URL protocol: the URL must start with `http:` or `https:`.", - ); - } - - if (!(url instanceof URL)) { - if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) { - throw new InvalidArgumentError( - "Invalid URL: port must be a valid integer or a string representation of an integer.", - ); - } - - if (url.path != null && typeof url.path !== "string") { - throw new InvalidArgumentError( - "Invalid URL path: the path must be a string or null/undefined.", - ); - } - - if (url.pathname != null && typeof url.pathname !== "string") { - throw new InvalidArgumentError( - "Invalid URL pathname: the pathname must be a string or null/undefined.", - ); - } - - if (url.hostname != null && typeof url.hostname !== "string") { - throw new InvalidArgumentError( - "Invalid URL hostname: the hostname must be a string or null/undefined.", - ); - } - - if (url.origin != null && typeof url.origin !== "string") { - throw new InvalidArgumentError( - "Invalid URL origin: the origin must be a string or null/undefined.", - ); - } - - const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80; - let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`; - let path = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`; - - if (origin.endsWith("/")) { - origin = origin.substring(0, origin.length - 1); - } - - if (path && !path.startsWith("/")) { - path = `/${path}`; - } - // new URL(path, origin) is unsafe when `path` contains an absolute URL - // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: - // If first parameter is a relative URL, second param is required, and will be used as the base URL. - // If first parameter is an absolute URL, a given second param will be ignored. - url = new URL(origin + path); - } - - return url; - } - - function parseOrigin(url) { - url = parseURL(url); - - if (url.pathname !== "/" || url.search || url.hash) { - throw new InvalidArgumentError("invalid url"); - } - - return url; - } - - function getHostname(host) { - if (host[0] === "[") { - const idx = host.indexOf("]"); - - assert(idx !== -1); - return host.substring(1, idx); - } - - const idx = host.indexOf(":"); - if (idx === -1) return host; - - return host.substring(0, idx); - } - - // IP addresses are not valid server names per RFC6066 - // > Currently, the only server names supported are DNS hostnames - function getServerName(host) { - if (!host) { - return null; - } - - assert.strictEqual(typeof host, "string"); - - const servername = getHostname(host); - if (net.isIP(servername)) { - return ""; - } - - return servername; - } - - function deepClone(obj) { - return JSON.parse(JSON.stringify(obj)); - } - - function isAsyncIterable(obj) { - return !!(obj != null && typeof obj[Symbol.asyncIterator] === "function"); - } - - function isIterable(obj) { - return !!( - obj != null && - (typeof obj[Symbol.iterator] === "function" || - typeof obj[Symbol.asyncIterator] === "function") - ); - } - - function bodyLength(body) { - if (body == null) { - return 0; - } else if (isStream(body)) { - const state = body._readableState; - return state && - state.objectMode === false && - state.ended === true && - Number.isFinite(state.length) - ? state.length - : null; - } else if (isBlobLike(body)) { - return body.size != null ? body.size : null; - } else if (isBuffer(body)) { - return body.byteLength; - } - - return null; - } - - function isDestroyed(stream) { - return !stream || !!(stream.destroyed || stream[kDestroyed]); - } - - function isReadableAborted(stream) { - const state = stream && stream._readableState; - return isDestroyed(stream) && state && !state.endEmitted; - } - - function destroy(stream, err) { - if (stream == null || !isStream(stream) || isDestroyed(stream)) { - return; - } - - if (typeof stream.destroy === "function") { - if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { - // See: https://github.com/nodejs/node/pull/38505/files - stream.socket = null; - } - - stream.destroy(err); - } else if (err) { - process.nextTick( - (stream, err) => { - stream.emit("error", err); - }, - stream, - err, - ); - } - - if (stream.destroyed !== true) { - stream[kDestroyed] = true; - } - } - - const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/; - function parseKeepAliveTimeout(val) { - const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR); - return m ? parseInt(m[1], 10) * 1000 : null; - } - - function parseHeaders(headers, obj = {}) { - // For H2 support - if (!Array.isArray(headers)) return headers; - - for (let i = 0; i < headers.length; i += 2) { - const key = headers[i].toString().toLowerCase(); - let val = obj[key]; - - if (!val) { - if (Array.isArray(headers[i + 1])) { - obj[key] = headers[i + 1].map((x) => x.toString("utf8")); - } else { - obj[key] = headers[i + 1].toString("utf8"); - } - } else { - if (!Array.isArray(val)) { - val = [val]; - obj[key] = val; - } - val.push(headers[i + 1].toString("utf8")); - } - } - - // See https://github.com/nodejs/node/pull/46528 - if ("content-length" in obj && "content-disposition" in obj) { - obj["content-disposition"] = Buffer.from(obj["content-disposition"]).toString("latin1"); - } - - return obj; - } - - function parseRawHeaders(headers) { - const ret = []; - let hasContentLength = false; - let contentDispositionIdx = -1; - - for (let n = 0; n < headers.length; n += 2) { - const key = headers[n + 0].toString(); - const val = headers[n + 1].toString("utf8"); - - if ( - key.length === 14 && - (key === "content-length" || key.toLowerCase() === "content-length") - ) { - ret.push(key, val); - hasContentLength = true; - } else if ( - key.length === 19 && - (key === "content-disposition" || key.toLowerCase() === "content-disposition") - ) { - contentDispositionIdx = ret.push(key, val) - 1; - } else { - ret.push(key, val); - } - } - - // See https://github.com/nodejs/node/pull/46528 - if (hasContentLength && contentDispositionIdx !== -1) { - ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString("latin1"); - } - - return ret; - } - - function isBuffer(buffer) { - // See, https://github.com/mcollina/undici/pull/319 - return buffer instanceof Uint8Array || Buffer.isBuffer(buffer); - } - - function validateHandler(handler, method, upgrade) { - if (!handler || typeof handler !== "object") { - throw new InvalidArgumentError("handler must be an object"); - } - - if (typeof handler.onConnect !== "function") { - throw new InvalidArgumentError("invalid onConnect method"); - } - - if (typeof handler.onError !== "function") { - throw new InvalidArgumentError("invalid onError method"); - } - - if (typeof handler.onBodySent !== "function" && handler.onBodySent !== undefined) { - throw new InvalidArgumentError("invalid onBodySent method"); - } - - if (upgrade || method === "CONNECT") { - if (typeof handler.onUpgrade !== "function") { - throw new InvalidArgumentError("invalid onUpgrade method"); - } - } else { - if (typeof handler.onHeaders !== "function") { - throw new InvalidArgumentError("invalid onHeaders method"); - } - - if (typeof handler.onData !== "function") { - throw new InvalidArgumentError("invalid onData method"); - } - - if (typeof handler.onComplete !== "function") { - throw new InvalidArgumentError("invalid onComplete method"); - } - } - } - - // A body is disturbed if it has been read from and it cannot - // be re-used without losing state or data. - function isDisturbed(body) { - return !!( - body && - (stream.isDisturbed - ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? - : body[kBodyUsed] || - body.readableDidRead || - (body._readableState && body._readableState.dataEmitted) || - isReadableAborted(body)) - ); - } - - function isErrored(body) { - return !!( - body && - (stream.isErrored - ? stream.isErrored(body) - : /state: 'errored'/.test(nodeUtil.inspect(body))) - ); - } - - function isReadable(body) { - return !!( - body && - (stream.isReadable - ? stream.isReadable(body) - : /state: 'readable'/.test(nodeUtil.inspect(body))) - ); - } - - function getSocketInfo(socket) { - return { - localAddress: socket.localAddress, - localPort: socket.localPort, - remoteAddress: socket.remoteAddress, - remotePort: socket.remotePort, - remoteFamily: socket.remoteFamily, - timeout: socket.timeout, - bytesWritten: socket.bytesWritten, - bytesRead: socket.bytesRead, - }; - } - - async function* convertIterableToBuffer(iterable) { - for await (const chunk of iterable) { - yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk); - } - } - - let ReadableStream; - function ReadableStreamFrom(iterable) { - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - if (ReadableStream.from) { - return ReadableStream.from(convertIterableToBuffer(iterable)); - } - - let iterator; - return new ReadableStream( - { - async start() { - iterator = iterable[Symbol.asyncIterator](); - }, - async pull(controller) { - const { done, value } = await iterator.next(); - if (done) { - queueMicrotask(() => { - controller.close(); - }); - } else { - const buf = Buffer.isBuffer(value) ? value : Buffer.from(value); - controller.enqueue(new Uint8Array(buf)); - } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - }, - }, - 0, - ); - } - - // The chunk should be a FormData instance and contains - // all the required methods. - function isFormDataLike(object) { - return ( - object && - typeof object === "object" && - typeof object.append === "function" && - typeof object.delete === "function" && - typeof object.get === "function" && - typeof object.getAll === "function" && - typeof object.has === "function" && - typeof object.set === "function" && - object[Symbol.toStringTag] === "FormData" - ); - } - - function throwIfAborted(signal) { - if (!signal) { - return; - } - if (typeof signal.throwIfAborted === "function") { - signal.throwIfAborted(); - } else { - if (signal.aborted) { - // DOMException not available < v17.0.0 - const err = new Error("The operation was aborted"); - err.name = "AbortError"; - throw err; - } - } - } - - function addAbortListener(signal, listener) { - if ("addEventListener" in signal) { - signal.addEventListener("abort", listener, { once: true }); - return () => signal.removeEventListener("abort", listener); - } - signal.addListener("abort", listener); - return () => signal.removeListener("abort", listener); - } - - const hasToWellFormed = !!String.prototype.toWellFormed; - - /** - * @param {string} val - */ - function toUSVString(val) { - if (hasToWellFormed) { - return `${val}`.toWellFormed(); - } else if (nodeUtil.toUSVString) { - return nodeUtil.toUSVString(val); - } - - return `${val}`; - } - - // Parsed accordingly to RFC 9110 - // https://www.rfc-editor.org/rfc/rfc9110#field.content-range - function parseRangeHeader(range) { - if (range == null || range === "") return { start: 0, end: null, size: null }; - - const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null; - return m - ? { - start: parseInt(m[1]), - end: m[2] ? parseInt(m[2]) : null, - size: m[3] ? parseInt(m[3]) : null, - } - : null; - } - - const kEnumerableProperty = Object.create(null); - kEnumerableProperty.enumerable = true; - - module.exports = { - kEnumerableProperty, - nop, - isDisturbed, - isErrored, - isReadable, - toUSVString, - isReadableAborted, - isBlobLike, - parseOrigin, - parseURL, - getServerName, - isStream, - isIterable, - isAsyncIterable, - isDestroyed, - parseRawHeaders, - parseHeaders, - parseKeepAliveTimeout, - destroy, - bodyLength, - deepClone, - ReadableStreamFrom, - isBuffer, - validateHandler, - getSocketInfo, - isFormDataLike, - buildURL, - throwIfAborted, - addAbortListener, - parseRangeHeader, - nodeMajor, - nodeMinor, - nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), - safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"], - }; - - /***/ - }, - - /***/ 4839: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Dispatcher = __nccwpck_require__(412); - const { ClientDestroyedError, ClientClosedError, InvalidArgumentError } = - __nccwpck_require__(8045); - const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(2785); - - const kDestroyed = Symbol("destroyed"); - const kClosed = Symbol("closed"); - const kOnDestroyed = Symbol("onDestroyed"); - const kOnClosed = Symbol("onClosed"); - const kInterceptedDispatch = Symbol("Intercepted Dispatch"); - - class DispatcherBase extends Dispatcher { - constructor() { - super(); - - this[kDestroyed] = false; - this[kOnDestroyed] = null; - this[kClosed] = false; - this[kOnClosed] = []; - } - - get destroyed() { - return this[kDestroyed]; - } - - get closed() { - return this[kClosed]; - } - - get interceptors() { - return this[kInterceptors]; - } - - set interceptors(newInterceptors) { - if (newInterceptors) { - for (let i = newInterceptors.length - 1; i >= 0; i--) { - const interceptor = this[kInterceptors][i]; - if (typeof interceptor !== "function") { - throw new InvalidArgumentError("interceptor must be an function"); - } - } - } - - this[kInterceptors] = newInterceptors; - } - - close(callback) { - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.close((err, data) => { - return err ? reject(err) : resolve(data); - }); - }); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (this[kDestroyed]) { - queueMicrotask(() => callback(new ClientDestroyedError(), null)); - return; - } - - if (this[kClosed]) { - if (this[kOnClosed]) { - this[kOnClosed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return; - } - - this[kClosed] = true; - this[kOnClosed].push(callback); - - const onClosed = () => { - const callbacks = this[kOnClosed]; - this[kOnClosed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - - // Should not error. - this[kClose]() - .then(() => this.destroy()) - .then(() => { - queueMicrotask(onClosed); - }); - } - - destroy(err, callback) { - if (typeof err === "function") { - callback = err; - err = null; - } - - if (callback === undefined) { - return new Promise((resolve, reject) => { - this.destroy(err, (err, data) => { - return err - ? /* istanbul ignore next: should never error */ reject(err) - : resolve(data); - }); - }); - } - - if (typeof callback !== "function") { - throw new InvalidArgumentError("invalid callback"); - } - - if (this[kDestroyed]) { - if (this[kOnDestroyed]) { - this[kOnDestroyed].push(callback); - } else { - queueMicrotask(() => callback(null, null)); - } - return; - } - - if (!err) { - err = new ClientDestroyedError(); - } - - this[kDestroyed] = true; - this[kOnDestroyed] = this[kOnDestroyed] || []; - this[kOnDestroyed].push(callback); - - const onDestroyed = () => { - const callbacks = this[kOnDestroyed]; - this[kOnDestroyed] = null; - for (let i = 0; i < callbacks.length; i++) { - callbacks[i](null, null); - } - }; - - // Should not error. - this[kDestroy](err).then(() => { - queueMicrotask(onDestroyed); - }); - } - - [kInterceptedDispatch](opts, handler) { - if (!this[kInterceptors] || this[kInterceptors].length === 0) { - this[kInterceptedDispatch] = this[kDispatch]; - return this[kDispatch](opts, handler); - } - - let dispatch = this[kDispatch].bind(this); - for (let i = this[kInterceptors].length - 1; i >= 0; i--) { - dispatch = this[kInterceptors][i](dispatch); - } - this[kInterceptedDispatch] = dispatch; - return dispatch(opts, handler); - } - - dispatch(opts, handler) { - if (!handler || typeof handler !== "object") { - throw new InvalidArgumentError("handler must be an object"); - } - - try { - if (!opts || typeof opts !== "object") { - throw new InvalidArgumentError("opts must be an object."); - } - - if (this[kDestroyed] || this[kOnDestroyed]) { - throw new ClientDestroyedError(); - } - - if (this[kClosed]) { - throw new ClientClosedError(); - } - - return this[kInterceptedDispatch](opts, handler); - } catch (err) { - if (typeof handler.onError !== "function") { - throw new InvalidArgumentError("invalid onError method"); - } - - handler.onError(err); - - return false; - } - } - } - - module.exports = DispatcherBase; - - /***/ - }, - - /***/ 412: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const EventEmitter = __nccwpck_require__(2361); - - class Dispatcher extends EventEmitter { - dispatch() { - throw new Error("not implemented"); - } - - close() { - throw new Error("not implemented"); - } - - destroy() { - throw new Error("not implemented"); - } - } - - module.exports = Dispatcher; - - /***/ - }, - - /***/ 1472: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Busboy = __nccwpck_require__(727); - const util = __nccwpck_require__(3983); - const { - ReadableStreamFrom, - isBlobLike, - isReadableStreamLike, - readableStreamClose, - createDeferredPromise, - fullyReadBody, - } = __nccwpck_require__(2538); - const { FormData } = __nccwpck_require__(2015); - const { kState } = __nccwpck_require__(5861); - const { webidl } = __nccwpck_require__(1744); - const { DOMException, structuredClone } = __nccwpck_require__(1037); - const { Blob, File: NativeFile } = __nccwpck_require__(4300); - const { kBodyUsed } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { isErrored } = __nccwpck_require__(3983); - const { isUint8Array, isArrayBuffer } = __nccwpck_require__(9830); - const { File: UndiciFile } = __nccwpck_require__(8511); - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685); - - let ReadableStream = globalThis.ReadableStream; - - /** @type {globalThis['File']} */ - const File = NativeFile ?? UndiciFile; - const textEncoder = new TextEncoder(); - const textDecoder = new TextDecoder(); - - // https://fetch.spec.whatwg.org/#concept-bodyinit-extract - function extractBody(object, keepalive = false) { - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - // 1. Let stream be null. - let stream = null; - - // 2. If object is a ReadableStream object, then set stream to object. - if (object instanceof ReadableStream) { - stream = object; - } else if (isBlobLike(object)) { - // 3. Otherwise, if object is a Blob object, set stream to the - // result of running object’s get stream. - stream = object.stream(); - } else { - // 4. Otherwise, set stream to a new ReadableStream object, and set - // up stream. - stream = new ReadableStream({ - async pull(controller) { - controller.enqueue( - typeof source === "string" ? textEncoder.encode(source) : source, - ); - queueMicrotask(() => readableStreamClose(controller)); - }, - start() {}, - type: undefined, - }); - } - - // 5. Assert: stream is a ReadableStream object. - assert(isReadableStreamLike(stream)); - - // 6. Let action be null. - let action = null; - - // 7. Let source be null. - let source = null; - - // 8. Let length be null. - let length = null; - - // 9. Let type be null. - let type = null; - - // 10. Switch on object: - if (typeof object === "string") { - // Set source to the UTF-8 encoding of object. - // Note: setting source to a Uint8Array here breaks some mocking assumptions. - source = object; - - // Set type to `text/plain;charset=UTF-8`. - type = "text/plain;charset=UTF-8"; - } else if (object instanceof URLSearchParams) { - // URLSearchParams - - // spec says to run application/x-www-form-urlencoded on body.list - // this is implemented in Node.js as apart of an URLSearchParams instance toString method - // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 - // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 - - // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. - source = object.toString(); - - // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. - type = "application/x-www-form-urlencoded;charset=UTF-8"; - } else if (isArrayBuffer(object)) { - // BufferSource/ArrayBuffer - - // Set source to a copy of the bytes held by object. - source = new Uint8Array(object.slice()); - } else if (ArrayBuffer.isView(object)) { - // BufferSource/ArrayBufferView - - // Set source to a copy of the bytes held by object. - source = new Uint8Array( - object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength), - ); - } else if (util.isFormDataLike(object)) { - const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart( - 11, - "0", - )}`; - const prefix = `--${boundary}\r\nContent-Disposition: form-data`; - - /*! formdata-polyfill. MIT License. Jimmy Wärting */ - const escape = (str) => - str.replace(/\n/g, "%0A").replace(/\r/g, "%0D").replace(/"/g, "%22"); - const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, "\r\n"); - - // Set action to this step: run the multipart/form-data - // encoding algorithm, with object’s entry list and UTF-8. - // - This ensures that the body is immutable and can't be changed afterwords - // - That the content-length is calculated in advance. - // - And that all parts are pre-encoded and ready to be sent. - - const blobParts = []; - const rn = new Uint8Array([13, 10]); // '\r\n' - length = 0; - let hasUnknownSizeValue = false; - - for (const [name, value] of object) { - if (typeof value === "string") { - const chunk = textEncoder.encode( - prefix + - `; name="${escape(normalizeLinefeeds(name))}"` + - `\r\n\r\n${normalizeLinefeeds(value)}\r\n`, - ); - blobParts.push(chunk); - length += chunk.byteLength; - } else { - const chunk = textEncoder.encode( - `${prefix}; name="${escape(normalizeLinefeeds(name))}"` + - (value.name ? `; filename="${escape(value.name)}"` : "") + - "\r\n" + - `Content-Type: ${value.type || "application/octet-stream"}\r\n\r\n`, - ); - blobParts.push(chunk, value, rn); - if (typeof value.size === "number") { - length += chunk.byteLength + value.size + rn.byteLength; - } else { - hasUnknownSizeValue = true; - } - } - } - - const chunk = textEncoder.encode(`--${boundary}--`); - blobParts.push(chunk); - length += chunk.byteLength; - if (hasUnknownSizeValue) { - length = null; - } - - // Set source to object. - source = object; - - action = async function* () { - for (const part of blobParts) { - if (part.stream) { - yield* part.stream(); - } else { - yield part; - } - } - }; - - // Set type to `multipart/form-data; boundary=`, - // followed by the multipart/form-data boundary string generated - // by the multipart/form-data encoding algorithm. - type = "multipart/form-data; boundary=" + boundary; - } else if (isBlobLike(object)) { - // Blob - - // Set source to object. - source = object; - - // Set length to object’s size. - length = object.size; - - // If object’s type attribute is not the empty byte sequence, set - // type to its value. - if (object.type) { - type = object.type; - } - } else if (typeof object[Symbol.asyncIterator] === "function") { - // If keepalive is true, then throw a TypeError. - if (keepalive) { - throw new TypeError("keepalive"); - } - - // If object is disturbed or locked, then throw a TypeError. - if (util.isDisturbed(object) || object.locked) { - throw new TypeError("Response body object should not be disturbed or locked"); - } - - stream = object instanceof ReadableStream ? object : ReadableStreamFrom(object); - } - - // 11. If source is a byte sequence, then set action to a - // step that returns source and length to source’s length. - if (typeof source === "string" || util.isBuffer(source)) { - length = Buffer.byteLength(source); - } - - // 12. If action is non-null, then run these steps in in parallel: - if (action != null) { - // Run action. - let iterator; - stream = new ReadableStream({ - async start() { - iterator = action(object)[Symbol.asyncIterator](); - }, - async pull(controller) { - const { value, done } = await iterator.next(); - if (done) { - // When running action is done, close stream. - queueMicrotask(() => { - controller.close(); - }); - } else { - // Whenever one or more bytes are available and stream is not errored, - // enqueue a Uint8Array wrapping an ArrayBuffer containing the available - // bytes into stream. - if (!isErrored(stream)) { - controller.enqueue(new Uint8Array(value)); - } - } - return controller.desiredSize > 0; - }, - async cancel(reason) { - await iterator.return(); - }, - type: undefined, - }); - } - - // 13. Let body be a body whose stream is stream, source is source, - // and length is length. - const body = { stream, source, length }; - - // 14. Return (body, type). - return [body, type]; - } - - // https://fetch.spec.whatwg.org/#bodyinit-safely-extract - function safelyExtractBody(object, keepalive = false) { - if (!ReadableStream) { - // istanbul ignore next - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - // To safely extract a body and a `Content-Type` value from - // a byte sequence or BodyInit object object, run these steps: - - // 1. If object is a ReadableStream object, then: - if (object instanceof ReadableStream) { - // Assert: object is neither disturbed nor locked. - // istanbul ignore next - assert(!util.isDisturbed(object), "The body has already been consumed."); - // istanbul ignore next - assert(!object.locked, "The stream is locked."); - } - - // 2. Return the results of extracting object. - return extractBody(object, keepalive); - } - - function cloneBody(body) { - // To clone a body body, run these steps: - - // https://fetch.spec.whatwg.org/#concept-body-clone - - // 1. Let « out1, out2 » be the result of teeing body’s stream. - const [out1, out2] = body.stream.tee(); - const out2Clone = structuredClone(out2, { transfer: [out2] }); - // This, for whatever reasons, unrefs out2Clone which allows - // the process to exit by itself. - const [, finalClone] = out2Clone.tee(); - - // 2. Set body’s stream to out1. - body.stream = out1; - - // 3. Return a body whose stream is out2 and other members are copied from body. - return { - stream: finalClone, - length: body.length, - source: body.source, - }; - } - - async function* consumeBody(body) { - if (body) { - if (isUint8Array(body)) { - yield body; - } else { - const stream = body.stream; - - if (util.isDisturbed(stream)) { - throw new TypeError("The body has already been consumed."); - } - - if (stream.locked) { - throw new TypeError("The stream is locked."); - } - - // Compat. - stream[kBodyUsed] = true; - - yield* stream; - } - } - } - - function throwIfAborted(state) { - if (state.aborted) { - throw new DOMException("The operation was aborted.", "AbortError"); - } - } - - function bodyMixinMethods(instance) { - const methods = { - blob() { - // The blob() method steps are to return the result of - // running consume body with this and the following step - // given a byte sequence bytes: return a Blob whose - // contents are bytes and whose type attribute is this’s - // MIME type. - return specConsumeBody( - this, - (bytes) => { - let mimeType = bodyMimeType(this); - - if (mimeType === "failure") { - mimeType = ""; - } else if (mimeType) { - mimeType = serializeAMimeType(mimeType); - } - - // Return a Blob whose contents are bytes and type attribute - // is mimeType. - return new Blob([bytes], { type: mimeType }); - }, - instance, - ); - }, - - arrayBuffer() { - // The arrayBuffer() method steps are to return the result - // of running consume body with this and the following step - // given a byte sequence bytes: return a new ArrayBuffer - // whose contents are bytes. - return specConsumeBody( - this, - (bytes) => { - return new Uint8Array(bytes).buffer; - }, - instance, - ); - }, - - text() { - // The text() method steps are to return the result of running - // consume body with this and UTF-8 decode. - return specConsumeBody(this, utf8DecodeBytes, instance); - }, - - json() { - // The json() method steps are to return the result of running - // consume body with this and parse JSON from bytes. - return specConsumeBody(this, parseJSONFromBytes, instance); - }, - - async formData() { - webidl.brandCheck(this, instance); - - throwIfAborted(this[kState]); - - const contentType = this.headers.get("Content-Type"); - - // If mimeType’s essence is "multipart/form-data", then: - if (/multipart\/form-data/.test(contentType)) { - const headers = {}; - for (const [key, value] of this.headers) headers[key.toLowerCase()] = value; - - const responseFormData = new FormData(); - - let busboy; - - try { - busboy = new Busboy({ - headers, - preservePath: true, - }); - } catch (err) { - throw new DOMException(`${err}`, "AbortError"); - } - - busboy.on("field", (name, value) => { - responseFormData.append(name, value); - }); - busboy.on("file", (name, value, filename, encoding, mimeType) => { - const chunks = []; - - if (encoding === "base64" || encoding.toLowerCase() === "base64") { - let base64chunk = ""; - - value.on("data", (chunk) => { - base64chunk += chunk.toString().replace(/[\r\n]/gm, ""); - - const end = base64chunk.length - (base64chunk.length % 4); - chunks.push(Buffer.from(base64chunk.slice(0, end), "base64")); - - base64chunk = base64chunk.slice(end); - }); - value.on("end", () => { - chunks.push(Buffer.from(base64chunk, "base64")); - responseFormData.append( - name, - new File(chunks, filename, { type: mimeType }), - ); - }); - } else { - value.on("data", (chunk) => { - chunks.push(chunk); - }); - value.on("end", () => { - responseFormData.append( - name, - new File(chunks, filename, { type: mimeType }), - ); - }); - } - }); - - const busboyResolve = new Promise((resolve, reject) => { - busboy.on("finish", resolve); - busboy.on("error", (err) => reject(new TypeError(err))); - }); - - if (this.body !== null) - for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk); - busboy.end(); - await busboyResolve; - - return responseFormData; - } else if (/application\/x-www-form-urlencoded/.test(contentType)) { - // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: - - // 1. Let entries be the result of parsing bytes. - let entries; - try { - let text = ""; - // application/x-www-form-urlencoded parser will keep the BOM. - // https://url.spec.whatwg.org/#concept-urlencoded-parser - // Note that streaming decoder is stateful and cannot be reused - const streamingDecoder = new TextDecoder("utf-8", { ignoreBOM: true }); - - for await (const chunk of consumeBody(this[kState].body)) { - if (!isUint8Array(chunk)) { - throw new TypeError("Expected Uint8Array chunk"); - } - text += streamingDecoder.decode(chunk, { stream: true }); - } - text += streamingDecoder.decode(); - entries = new URLSearchParams(text); - } catch (err) { - // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. - // 2. If entries is failure, then throw a TypeError. - throw Object.assign(new TypeError(), { cause: err }); - } - - // 3. Return a new FormData object whose entries are entries. - const formData = new FormData(); - for (const [name, value] of entries) { - formData.append(name, value); - } - return formData; - } else { - // Wait a tick before checking if the request has been aborted. - // Otherwise, a TypeError can be thrown when an AbortError should. - await Promise.resolve(); - - throwIfAborted(this[kState]); - - // Otherwise, throw a TypeError. - throw webidl.errors.exception({ - header: `${instance.name}.formData`, - message: "Could not parse content as FormData.", - }); - } - }, - }; - - return methods; - } - - function mixinBody(prototype) { - Object.assign(prototype.prototype, bodyMixinMethods(prototype)); - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-body-consume-body - * @param {Response|Request} object - * @param {(value: unknown) => unknown} convertBytesToJSValue - * @param {Response|Request} instance - */ - async function specConsumeBody(object, convertBytesToJSValue, instance) { - webidl.brandCheck(object, instance); - - throwIfAborted(object[kState]); - - // 1. If object is unusable, then return a promise rejected - // with a TypeError. - if (bodyUnusable(object[kState].body)) { - throw new TypeError("Body is unusable"); - } - - // 2. Let promise be a new promise. - const promise = createDeferredPromise(); - - // 3. Let errorSteps given error be to reject promise with error. - const errorSteps = (error) => promise.reject(error); - - // 4. Let successSteps given a byte sequence data be to resolve - // promise with the result of running convertBytesToJSValue - // with data. If that threw an exception, then run errorSteps - // with that exception. - const successSteps = (data) => { - try { - promise.resolve(convertBytesToJSValue(data)); - } catch (e) { - errorSteps(e); - } - }; - - // 5. If object’s body is null, then run successSteps with an - // empty byte sequence. - if (object[kState].body == null) { - successSteps(new Uint8Array()); - return promise.promise; - } - - // 6. Otherwise, fully read object’s body given successSteps, - // errorSteps, and object’s relevant global object. - await fullyReadBody(object[kState].body, successSteps, errorSteps); - - // 7. Return promise. - return promise.promise; - } - - // https://fetch.spec.whatwg.org/#body-unusable - function bodyUnusable(body) { - // An object including the Body interface mixin is - // said to be unusable if its body is non-null and - // its body’s stream is disturbed or locked. - return body != null && (body.stream.locked || util.isDisturbed(body.stream)); - } - - /** - * @see https://encoding.spec.whatwg.org/#utf-8-decode - * @param {Buffer} buffer - */ - function utf8DecodeBytes(buffer) { - if (buffer.length === 0) { - return ""; - } - - // 1. Let buffer be the result of peeking three bytes from - // ioQueue, converted to a byte sequence. - - // 2. If buffer is 0xEF 0xBB 0xBF, then read three - // bytes from ioQueue. (Do nothing with those bytes.) - if (buffer[0] === 0xef && buffer[1] === 0xbb && buffer[2] === 0xbf) { - buffer = buffer.subarray(3); - } - - // 3. Process a queue with an instance of UTF-8’s - // decoder, ioQueue, output, and "replacement". - const output = textDecoder.decode(buffer); - - // 4. Return output. - return output; - } - - /** - * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value - * @param {Uint8Array} bytes - */ - function parseJSONFromBytes(bytes) { - return JSON.parse(utf8DecodeBytes(bytes)); - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-body-mime-type - * @param {import('./response').Response|import('./request').Request} object - */ - function bodyMimeType(object) { - const { headersList } = object[kState]; - const contentType = headersList.get("content-type"); - - if (contentType === null) { - return "failure"; - } - - return parseMIMEType(contentType); - } - - module.exports = { - extractBody, - safelyExtractBody, - cloneBody, - mixinBody, - }; - - /***/ - }, - - /***/ 1037: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(1267); - - const corsSafeListedMethods = ["GET", "HEAD", "POST"]; - const corsSafeListedMethodsSet = new Set(corsSafeListedMethods); - - const nullBodyStatus = [101, 204, 205, 304]; - - const redirectStatus = [301, 302, 303, 307, 308]; - const redirectStatusSet = new Set(redirectStatus); - - // https://fetch.spec.whatwg.org/#block-bad-port - const badPorts = [ - "1", - "7", - "9", - "11", - "13", - "15", - "17", - "19", - "20", - "21", - "22", - "23", - "25", - "37", - "42", - "43", - "53", - "69", - "77", - "79", - "87", - "95", - "101", - "102", - "103", - "104", - "109", - "110", - "111", - "113", - "115", - "117", - "119", - "123", - "135", - "137", - "139", - "143", - "161", - "179", - "389", - "427", - "465", - "512", - "513", - "514", - "515", - "526", - "530", - "531", - "532", - "540", - "548", - "554", - "556", - "563", - "587", - "601", - "636", - "989", - "990", - "993", - "995", - "1719", - "1720", - "1723", - "2049", - "3659", - "4045", - "5060", - "5061", - "6000", - "6566", - "6665", - "6666", - "6667", - "6668", - "6669", - "6697", - "10080", - ]; - - const badPortsSet = new Set(badPorts); - - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policies - const referrerPolicy = [ - "", - "no-referrer", - "no-referrer-when-downgrade", - "same-origin", - "origin", - "strict-origin", - "origin-when-cross-origin", - "strict-origin-when-cross-origin", - "unsafe-url", - ]; - const referrerPolicySet = new Set(referrerPolicy); - - const requestRedirect = ["follow", "manual", "error"]; - - const safeMethods = ["GET", "HEAD", "OPTIONS", "TRACE"]; - const safeMethodsSet = new Set(safeMethods); - - const requestMode = ["navigate", "same-origin", "no-cors", "cors"]; - - const requestCredentials = ["omit", "same-origin", "include"]; - - const requestCache = [ - "default", - "no-store", - "reload", - "no-cache", - "force-cache", - "only-if-cached", - ]; - - // https://fetch.spec.whatwg.org/#request-body-header-name - const requestBodyHeader = [ - "content-encoding", - "content-language", - "content-location", - "content-type", - // See https://github.com/nodejs/undici/issues/2021 - // 'Content-Length' is a forbidden header name, which is typically - // removed in the Headers implementation. However, undici doesn't - // filter out headers, so we add it here. - "content-length", - ]; - - // https://fetch.spec.whatwg.org/#enumdef-requestduplex - const requestDuplex = ["half"]; - - // http://fetch.spec.whatwg.org/#forbidden-method - const forbiddenMethods = ["CONNECT", "TRACE", "TRACK"]; - const forbiddenMethodsSet = new Set(forbiddenMethods); - - const subresource = [ - "audio", - "audioworklet", - "font", - "image", - "manifest", - "paintworklet", - "script", - "style", - "track", - "video", - "xslt", - "", - ]; - const subresourceSet = new Set(subresource); - - /** @type {globalThis['DOMException']} */ - const DOMException = - globalThis.DOMException ?? - (() => { - // DOMException was only made a global in Node v17.0.0, - // but fetch supports >= v16.8. - try { - atob("~"); - } catch (err) { - return Object.getPrototypeOf(err).constructor; - } - })(); - - let channel; - - /** @type {globalThis['structuredClone']} */ - const structuredClone = - globalThis.structuredClone ?? - // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js - // structuredClone was added in v17.0.0, but fetch supports v16.8 - function structuredClone(value, options = undefined) { - if (arguments.length === 0) { - throw new TypeError("missing argument"); - } - - if (!channel) { - channel = new MessageChannel(); - } - channel.port1.unref(); - channel.port2.unref(); - channel.port1.postMessage(value, options?.transfer); - return receiveMessageOnPort(channel.port2).message; - }; - - module.exports = { - DOMException, - structuredClone, - subresource, - forbiddenMethods, - requestBodyHeader, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - redirectStatus, - corsSafeListedMethods, - nullBodyStatus, - safeMethods, - badPorts, - requestDuplex, - subresourceSet, - badPortsSet, - redirectStatusSet, - corsSafeListedMethodsSet, - safeMethodsSet, - forbiddenMethodsSet, - referrerPolicySet, - }; - - /***/ - }, - - /***/ 685: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const assert = __nccwpck_require__(9491); - const { atob } = __nccwpck_require__(4300); - const { isomorphicDecode } = __nccwpck_require__(2538); - - const encoder = new TextEncoder(); - - /** - * @see https://mimesniff.spec.whatwg.org/#http-token-code-point - */ - const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/; - const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/; // eslint-disable-line - /** - * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point - */ - const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/; // eslint-disable-line - - // https://fetch.spec.whatwg.org/#data-url-processor - /** @param {URL} dataURL */ - function dataURLProcessor(dataURL) { - // 1. Assert: dataURL’s scheme is "data". - assert(dataURL.protocol === "data:"); - - // 2. Let input be the result of running the URL - // serializer on dataURL with exclude fragment - // set to true. - let input = URLSerializer(dataURL, true); - - // 3. Remove the leading "data:" string from input. - input = input.slice(5); - - // 4. Let position point at the start of input. - const position = { position: 0 }; - - // 5. Let mimeType be the result of collecting a - // sequence of code points that are not equal - // to U+002C (,), given position. - let mimeType = collectASequenceOfCodePointsFast(",", input, position); - - // 6. Strip leading and trailing ASCII whitespace - // from mimeType. - // Undici implementation note: we need to store the - // length because if the mimetype has spaces removed, - // the wrong amount will be sliced from the input in - // step #9 - const mimeTypeLength = mimeType.length; - mimeType = removeASCIIWhitespace(mimeType, true, true); - - // 7. If position is past the end of input, then - // return failure - if (position.position >= input.length) { - return "failure"; - } - - // 8. Advance position by 1. - position.position++; - - // 9. Let encodedBody be the remainder of input. - const encodedBody = input.slice(mimeTypeLength + 1); - - // 10. Let body be the percent-decoding of encodedBody. - let body = stringPercentDecode(encodedBody); - - // 11. If mimeType ends with U+003B (;), followed by - // zero or more U+0020 SPACE, followed by an ASCII - // case-insensitive match for "base64", then: - if (/;(\u0020){0,}base64$/i.test(mimeType)) { - // 1. Let stringBody be the isomorphic decode of body. - const stringBody = isomorphicDecode(body); - - // 2. Set body to the forgiving-base64 decode of - // stringBody. - body = forgivingBase64(stringBody); - - // 3. If body is failure, then return failure. - if (body === "failure") { - return "failure"; - } - - // 4. Remove the last 6 code points from mimeType. - mimeType = mimeType.slice(0, -6); - - // 5. Remove trailing U+0020 SPACE code points from mimeType, - // if any. - mimeType = mimeType.replace(/(\u0020)+$/, ""); - - // 6. Remove the last U+003B (;) code point from mimeType. - mimeType = mimeType.slice(0, -1); - } - - // 12. If mimeType starts with U+003B (;), then prepend - // "text/plain" to mimeType. - if (mimeType.startsWith(";")) { - mimeType = "text/plain" + mimeType; - } - - // 13. Let mimeTypeRecord be the result of parsing - // mimeType. - let mimeTypeRecord = parseMIMEType(mimeType); - - // 14. If mimeTypeRecord is failure, then set - // mimeTypeRecord to text/plain;charset=US-ASCII. - if (mimeTypeRecord === "failure") { - mimeTypeRecord = parseMIMEType("text/plain;charset=US-ASCII"); - } - - // 15. Return a new data: URL struct whose MIME - // type is mimeTypeRecord and body is body. - // https://fetch.spec.whatwg.org/#data-url-struct - return { mimeType: mimeTypeRecord, body }; - } - - // https://url.spec.whatwg.org/#concept-url-serializer - /** - * @param {URL} url - * @param {boolean} excludeFragment - */ - function URLSerializer(url, excludeFragment = false) { - if (!excludeFragment) { - return url.href; - } - - const href = url.href; - const hashLength = url.hash.length; - - return hashLength === 0 ? href : href.substring(0, href.length - hashLength); - } - - // https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points - /** - * @param {(char: string) => boolean} condition - * @param {string} input - * @param {{ position: number }} position - */ - function collectASequenceOfCodePoints(condition, input, position) { - // 1. Let result be the empty string. - let result = ""; - - // 2. While position doesn’t point past the end of input and the - // code point at position within input meets the condition condition: - while (position.position < input.length && condition(input[position.position])) { - // 1. Append that code point to the end of result. - result += input[position.position]; - - // 2. Advance position by 1. - position.position++; - } - - // 3. Return result. - return result; - } - - /** - * A faster collectASequenceOfCodePoints that only works when comparing a single character. - * @param {string} char - * @param {string} input - * @param {{ position: number }} position - */ - function collectASequenceOfCodePointsFast(char, input, position) { - const idx = input.indexOf(char, position.position); - const start = position.position; - - if (idx === -1) { - position.position = input.length; - return input.slice(start); - } - - position.position = idx; - return input.slice(start, position.position); - } - - // https://url.spec.whatwg.org/#string-percent-decode - /** @param {string} input */ - function stringPercentDecode(input) { - // 1. Let bytes be the UTF-8 encoding of input. - const bytes = encoder.encode(input); - - // 2. Return the percent-decoding of bytes. - return percentDecode(bytes); - } - - // https://url.spec.whatwg.org/#percent-decode - /** @param {Uint8Array} input */ - function percentDecode(input) { - // 1. Let output be an empty byte sequence. - /** @type {number[]} */ - const output = []; - - // 2. For each byte byte in input: - for (let i = 0; i < input.length; i++) { - const byte = input[i]; - - // 1. If byte is not 0x25 (%), then append byte to output. - if (byte !== 0x25) { - output.push(byte); - - // 2. Otherwise, if byte is 0x25 (%) and the next two bytes - // after byte in input are not in the ranges - // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), - // and 0x61 (a) to 0x66 (f), all inclusive, append byte - // to output. - } else if ( - byte === 0x25 && - !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) - ) { - output.push(0x25); - - // 3. Otherwise: - } else { - // 1. Let bytePoint be the two bytes after byte in input, - // decoded, and then interpreted as hexadecimal number. - const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]); - const bytePoint = Number.parseInt(nextTwoBytes, 16); - - // 2. Append a byte whose value is bytePoint to output. - output.push(bytePoint); - - // 3. Skip the next two bytes in input. - i += 2; - } - } - - // 3. Return output. - return Uint8Array.from(output); - } - - // https://mimesniff.spec.whatwg.org/#parse-a-mime-type - /** @param {string} input */ - function parseMIMEType(input) { - // 1. Remove any leading and trailing HTTP whitespace - // from input. - input = removeHTTPWhitespace(input, true, true); - - // 2. Let position be a position variable for input, - // initially pointing at the start of input. - const position = { position: 0 }; - - // 3. Let type be the result of collecting a sequence - // of code points that are not U+002F (/) from - // input, given position. - const type = collectASequenceOfCodePointsFast("/", input, position); - - // 4. If type is the empty string or does not solely - // contain HTTP token code points, then return failure. - // https://mimesniff.spec.whatwg.org/#http-token-code-point - if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { - return "failure"; - } - - // 5. If position is past the end of input, then return - // failure - if (position.position > input.length) { - return "failure"; - } - - // 6. Advance position by 1. (This skips past U+002F (/).) - position.position++; - - // 7. Let subtype be the result of collecting a sequence of - // code points that are not U+003B (;) from input, given - // position. - let subtype = collectASequenceOfCodePointsFast(";", input, position); - - // 8. Remove any trailing HTTP whitespace from subtype. - subtype = removeHTTPWhitespace(subtype, false, true); - - // 9. If subtype is the empty string or does not solely - // contain HTTP token code points, then return failure. - if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { - return "failure"; - } - - const typeLowercase = type.toLowerCase(); - const subtypeLowercase = subtype.toLowerCase(); - - // 10. Let mimeType be a new MIME type record whose type - // is type, in ASCII lowercase, and subtype is subtype, - // in ASCII lowercase. - // https://mimesniff.spec.whatwg.org/#mime-type - const mimeType = { - type: typeLowercase, - subtype: subtypeLowercase, - /** @type {Map} */ - parameters: new Map(), - // https://mimesniff.spec.whatwg.org/#mime-type-essence - essence: `${typeLowercase}/${subtypeLowercase}`, - }; - - // 11. While position is not past the end of input: - while (position.position < input.length) { - // 1. Advance position by 1. (This skips past U+003B (;).) - position.position++; - - // 2. Collect a sequence of code points that are HTTP - // whitespace from input given position. - collectASequenceOfCodePoints( - // https://fetch.spec.whatwg.org/#http-whitespace - (char) => HTTP_WHITESPACE_REGEX.test(char), - input, - position, - ); - - // 3. Let parameterName be the result of collecting a - // sequence of code points that are not U+003B (;) - // or U+003D (=) from input, given position. - let parameterName = collectASequenceOfCodePoints( - (char) => char !== ";" && char !== "=", - input, - position, - ); - - // 4. Set parameterName to parameterName, in ASCII - // lowercase. - parameterName = parameterName.toLowerCase(); - - // 5. If position is not past the end of input, then: - if (position.position < input.length) { - // 1. If the code point at position within input is - // U+003B (;), then continue. - if (input[position.position] === ";") { - continue; - } - - // 2. Advance position by 1. (This skips past U+003D (=).) - position.position++; - } - - // 6. If position is past the end of input, then break. - if (position.position > input.length) { - break; - } - - // 7. Let parameterValue be null. - let parameterValue = null; - - // 8. If the code point at position within input is - // U+0022 ("), then: - if (input[position.position] === '"') { - // 1. Set parameterValue to the result of collecting - // an HTTP quoted string from input, given position - // and the extract-value flag. - parameterValue = collectAnHTTPQuotedString(input, position, true); - - // 2. Collect a sequence of code points that are not - // U+003B (;) from input, given position. - collectASequenceOfCodePointsFast(";", input, position); - - // 9. Otherwise: - } else { - // 1. Set parameterValue to the result of collecting - // a sequence of code points that are not U+003B (;) - // from input, given position. - parameterValue = collectASequenceOfCodePointsFast(";", input, position); - - // 2. Remove any trailing HTTP whitespace from parameterValue. - parameterValue = removeHTTPWhitespace(parameterValue, false, true); - - // 3. If parameterValue is the empty string, then continue. - if (parameterValue.length === 0) { - continue; - } - } - - // 10. If all of the following are true - // - parameterName is not the empty string - // - parameterName solely contains HTTP token code points - // - parameterValue solely contains HTTP quoted-string token code points - // - mimeType’s parameters[parameterName] does not exist - // then set mimeType’s parameters[parameterName] to parameterValue. - if ( - parameterName.length !== 0 && - HTTP_TOKEN_CODEPOINTS.test(parameterName) && - (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && - !mimeType.parameters.has(parameterName) - ) { - mimeType.parameters.set(parameterName, parameterValue); - } - } - - // 12. Return mimeType. - return mimeType; - } - - // https://infra.spec.whatwg.org/#forgiving-base64-decode - /** @param {string} data */ - function forgivingBase64(data) { - // 1. Remove all ASCII whitespace from data. - data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, ""); // eslint-disable-line - - // 2. If data’s code point length divides by 4 leaving - // no remainder, then: - if (data.length % 4 === 0) { - // 1. If data ends with one or two U+003D (=) code points, - // then remove them from data. - data = data.replace(/=?=$/, ""); - } - - // 3. If data’s code point length divides by 4 leaving - // a remainder of 1, then return failure. - if (data.length % 4 === 1) { - return "failure"; - } - - // 4. If data contains a code point that is not one of - // U+002B (+) - // U+002F (/) - // ASCII alphanumeric - // then return failure. - if (/[^+/0-9A-Za-z]/.test(data)) { - return "failure"; - } - - const binary = atob(data); - const bytes = new Uint8Array(binary.length); - - for (let byte = 0; byte < binary.length; byte++) { - bytes[byte] = binary.charCodeAt(byte); - } - - return bytes; - } - - // https://fetch.spec.whatwg.org/#collect-an-http-quoted-string - // tests: https://fetch.spec.whatwg.org/#example-http-quoted-string - /** - * @param {string} input - * @param {{ position: number }} position - * @param {boolean?} extractValue - */ - function collectAnHTTPQuotedString(input, position, extractValue) { - // 1. Let positionStart be position. - const positionStart = position.position; - - // 2. Let value be the empty string. - let value = ""; - - // 3. Assert: the code point at position within input - // is U+0022 ("). - assert(input[position.position] === '"'); - - // 4. Advance position by 1. - position.position++; - - // 5. While true: - while (true) { - // 1. Append the result of collecting a sequence of code points - // that are not U+0022 (") or U+005C (\) from input, given - // position, to value. - value += collectASequenceOfCodePoints( - (char) => char !== '"' && char !== "\\", - input, - position, - ); - - // 2. If position is past the end of input, then break. - if (position.position >= input.length) { - break; - } - - // 3. Let quoteOrBackslash be the code point at position within - // input. - const quoteOrBackslash = input[position.position]; - - // 4. Advance position by 1. - position.position++; - - // 5. If quoteOrBackslash is U+005C (\), then: - if (quoteOrBackslash === "\\") { - // 1. If position is past the end of input, then append - // U+005C (\) to value and break. - if (position.position >= input.length) { - value += "\\"; - break; - } - - // 2. Append the code point at position within input to value. - value += input[position.position]; - - // 3. Advance position by 1. - position.position++; - - // 6. Otherwise: - } else { - // 1. Assert: quoteOrBackslash is U+0022 ("). - assert(quoteOrBackslash === '"'); - - // 2. Break. - break; - } - } - - // 6. If the extract-value flag is set, then return value. - if (extractValue) { - return value; - } - - // 7. Return the code points from positionStart to position, - // inclusive, within input. - return input.slice(positionStart, position.position); - } - - /** - * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type - */ - function serializeAMimeType(mimeType) { - assert(mimeType !== "failure"); - const { parameters, essence } = mimeType; - - // 1. Let serialization be the concatenation of mimeType’s - // type, U+002F (/), and mimeType’s subtype. - let serialization = essence; - - // 2. For each name → value of mimeType’s parameters: - for (let [name, value] of parameters.entries()) { - // 1. Append U+003B (;) to serialization. - serialization += ";"; - - // 2. Append name to serialization. - serialization += name; - - // 3. Append U+003D (=) to serialization. - serialization += "="; - - // 4. If value does not solely contain HTTP token code - // points or value is the empty string, then: - if (!HTTP_TOKEN_CODEPOINTS.test(value)) { - // 1. Precede each occurence of U+0022 (") or - // U+005C (\) in value with U+005C (\). - value = value.replace(/(\\|")/g, "\\$1"); - - // 2. Prepend U+0022 (") to value. - value = '"' + value; - - // 3. Append U+0022 (") to value. - value += '"'; - } - - // 5. Append value to serialization. - serialization += value; - } - - // 3. Return serialization. - return serialization; - } - - /** - * @see https://fetch.spec.whatwg.org/#http-whitespace - * @param {string} char - */ - function isHTTPWhiteSpace(char) { - return char === "\r" || char === "\n" || char === "\t" || char === " "; - } - - /** - * @see https://fetch.spec.whatwg.org/#http-whitespace - * @param {string} str - */ - function removeHTTPWhitespace(str, leading = true, trailing = true) { - let lead = 0; - let trail = str.length - 1; - - if (leading) { - for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); - } - - if (trailing) { - for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); - } - - return str.slice(lead, trail + 1); - } - - /** - * @see https://infra.spec.whatwg.org/#ascii-whitespace - * @param {string} char - */ - function isASCIIWhitespace(char) { - return char === "\r" || char === "\n" || char === "\t" || char === "\f" || char === " "; - } - - /** - * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace - */ - function removeASCIIWhitespace(str, leading = true, trailing = true) { - let lead = 0; - let trail = str.length - 1; - - if (leading) { - for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); - } - - if (trailing) { - for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); - } - - return str.slice(lead, trail + 1); - } - - module.exports = { - dataURLProcessor, - URLSerializer, - collectASequenceOfCodePoints, - collectASequenceOfCodePointsFast, - stringPercentDecode, - parseMIMEType, - collectAnHTTPQuotedString, - serializeAMimeType, - }; - - /***/ - }, - - /***/ 8511: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Blob, File: NativeFile } = __nccwpck_require__(4300); - const { types } = __nccwpck_require__(3837); - const { kState } = __nccwpck_require__(5861); - const { isBlobLike } = __nccwpck_require__(2538); - const { webidl } = __nccwpck_require__(1744); - const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685); - const { kEnumerableProperty } = __nccwpck_require__(3983); - const encoder = new TextEncoder(); - - class File extends Blob { - constructor(fileBits, fileName, options = {}) { - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" }); - - fileBits = webidl.converters["sequence"](fileBits); - fileName = webidl.converters.USVString(fileName); - options = webidl.converters.FilePropertyBag(options); - - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - // Note: Blob handles this for us - - // 2. Let n be the fileName argument to the constructor. - const n = fileName; - - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: - - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // 2. Convert every character in t to ASCII lowercase. - let t = options.type; - let d; - - // eslint-disable-next-line no-labels - substep: { - if (t) { - t = parseMIMEType(t); - - if (t === "failure") { - t = ""; - // eslint-disable-next-line no-labels - break substep; - } - - t = serializeAMimeType(t).toLowerCase(); - } - - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - d = options.lastModified; - } - - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. - - super(processBlobParts(fileBits, options), { type: t }); - this[kState] = { - name: n, - lastModified: d, - type: t, - }; - } - - get name() { - webidl.brandCheck(this, File); - - return this[kState].name; - } - - get lastModified() { - webidl.brandCheck(this, File); - - return this[kState].lastModified; - } - - get type() { - webidl.brandCheck(this, File); - - return this[kState].type; - } - } - - class FileLike { - constructor(blobLike, fileName, options = {}) { - // TODO: argument idl type check - - // The File constructor is invoked with two or three parameters, depending - // on whether the optional dictionary parameter is used. When the File() - // constructor is invoked, user agents must run the following steps: - - // 1. Let bytes be the result of processing blob parts given fileBits and - // options. - - // 2. Let n be the fileName argument to the constructor. - const n = fileName; - - // 3. Process FilePropertyBag dictionary argument by running the following - // substeps: - - // 1. If the type member is provided and is not the empty string, let t - // be set to the type dictionary member. If t contains any characters - // outside the range U+0020 to U+007E, then set t to the empty string - // and return from these substeps. - // TODO - const t = options.type; - - // 2. Convert every character in t to ASCII lowercase. - // TODO - - // 3. If the lastModified member is provided, let d be set to the - // lastModified dictionary member. If it is not provided, set d to the - // current date and time represented as the number of milliseconds since - // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). - const d = options.lastModified ?? Date.now(); - - // 4. Return a new File object F such that: - // F refers to the bytes byte sequence. - // F.size is set to the number of total bytes in bytes. - // F.name is set to n. - // F.type is set to t. - // F.lastModified is set to d. - - this[kState] = { - blobLike, - name: n, - type: t, - lastModified: d, - }; - } - - stream(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.stream(...args); - } - - arrayBuffer(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.arrayBuffer(...args); - } - - slice(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.slice(...args); - } - - text(...args) { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.text(...args); - } - - get size() { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.size; - } - - get type() { - webidl.brandCheck(this, FileLike); - - return this[kState].blobLike.type; - } - - get name() { - webidl.brandCheck(this, FileLike); - - return this[kState].name; - } - - get lastModified() { - webidl.brandCheck(this, FileLike); - - return this[kState].lastModified; - } - - get [Symbol.toStringTag]() { - return "File"; - } - } - - Object.defineProperties(File.prototype, { - [Symbol.toStringTag]: { - value: "File", - configurable: true, - }, - name: kEnumerableProperty, - lastModified: kEnumerableProperty, - }); - - webidl.converters.Blob = webidl.interfaceConverter(Blob); - - webidl.converters.BlobPart = function (V, opts) { - if (webidl.util.Type(V) === "Object") { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V, opts); - } - } - - return webidl.converters.USVString(V, opts); - }; - - webidl.converters["sequence"] = webidl.sequenceConverter(webidl.converters.BlobPart); - - // https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag - webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ - { - key: "lastModified", - converter: webidl.converters["long long"], - get defaultValue() { - return Date.now(); - }, - }, - { - key: "type", - converter: webidl.converters.DOMString, - defaultValue: "", - }, - { - key: "endings", - converter: (value) => { - value = webidl.converters.DOMString(value); - value = value.toLowerCase(); - - if (value !== "native") { - value = "transparent"; - } - - return value; - }, - defaultValue: "transparent", - }, - ]); - - /** - * @see https://www.w3.org/TR/FileAPI/#process-blob-parts - * @param {(NodeJS.TypedArray|Blob|string)[]} parts - * @param {{ type: string, endings: string }} options - */ - function processBlobParts(parts, options) { - // 1. Let bytes be an empty sequence of bytes. - /** @type {NodeJS.TypedArray[]} */ - const bytes = []; - - // 2. For each element in parts: - for (const element of parts) { - // 1. If element is a USVString, run the following substeps: - if (typeof element === "string") { - // 1. Let s be element. - let s = element; - - // 2. If the endings member of options is "native", set s - // to the result of converting line endings to native - // of element. - if (options.endings === "native") { - s = convertLineEndingsNative(s); - } - - // 3. Append the result of UTF-8 encoding s to bytes. - bytes.push(encoder.encode(s)); - } else if (types.isAnyArrayBuffer(element) || types.isTypedArray(element)) { - // 2. If element is a BufferSource, get a copy of the - // bytes held by the buffer source, and append those - // bytes to bytes. - if (!element.buffer) { - // ArrayBuffer - bytes.push(new Uint8Array(element)); - } else { - bytes.push( - new Uint8Array(element.buffer, element.byteOffset, element.byteLength), - ); - } - } else if (isBlobLike(element)) { - // 3. If element is a Blob, append the bytes it represents - // to bytes. - bytes.push(element); - } - } - - // 3. Return bytes. - return bytes; - } - - /** - * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native - * @param {string} s - */ - function convertLineEndingsNative(s) { - // 1. Let native line ending be be the code point U+000A LF. - let nativeLineEnding = "\n"; - - // 2. If the underlying platform’s conventions are to - // represent newlines as a carriage return and line feed - // sequence, set native line ending to the code point - // U+000D CR followed by the code point U+000A LF. - if (process.platform === "win32") { - nativeLineEnding = "\r\n"; - } - - return s.replace(/\r?\n/g, nativeLineEnding); - } - - // If this function is moved to ./util.js, some tools (such as - // rollup) will warn about circular dependencies. See: - // https://github.com/nodejs/undici/issues/1629 - function isFileLike(object) { - return ( - (NativeFile && object instanceof NativeFile) || - object instanceof File || - (object && - (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && - object[Symbol.toStringTag] === "File") - ); - } - - module.exports = { File, FileLike, isFileLike }; - - /***/ - }, - - /***/ 2015: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(2538); - const { kState } = __nccwpck_require__(5861); - const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(8511); - const { webidl } = __nccwpck_require__(1744); - const { Blob, File: NativeFile } = __nccwpck_require__(4300); - - /** @type {globalThis['File']} */ - const File = NativeFile ?? UndiciFile; - - // https://xhr.spec.whatwg.org/#formdata - class FormData { - constructor(form) { - if (form !== undefined) { - throw webidl.errors.conversionFailed({ - prefix: "FormData constructor", - argument: "Argument 1", - types: ["undefined"], - }); - } - - this[kState] = []; - } - - append(name, value, filename = undefined) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" }); - - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'", - ); - } - - // 1. Let value be value if given; otherwise blobValue. - - name = webidl.converters.USVString(name); - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value); - filename = arguments.length === 3 ? webidl.converters.USVString(filename) : undefined; - - // 2. Let entry be the result of creating an entry with - // name, value, and filename if given. - const entry = makeEntry(name, value, filename); - - // 3. Append entry to this’s entry list. - this[kState].push(entry); - } - - delete(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" }); - - name = webidl.converters.USVString(name); - - // The delete(name) method steps are to remove all entries whose name - // is name from this’s entry list. - this[kState] = this[kState].filter((entry) => entry.name !== name); - } - - get(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" }); - - name = webidl.converters.USVString(name); - - // 1. If there is no entry whose name is name in this’s entry list, - // then return null. - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx === -1) { - return null; - } - - // 2. Return the value of the first entry whose name is name from - // this’s entry list. - return this[kState][idx].value; - } - - getAll(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" }); - - name = webidl.converters.USVString(name); - - // 1. If there is no entry whose name is name in this’s entry list, - // then return the empty list. - // 2. Return the values of all entries whose name is name, in order, - // from this’s entry list. - return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value); - } - - has(name) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" }); - - name = webidl.converters.USVString(name); - - // The has(name) method steps are to return true if there is an entry - // whose name is name in this’s entry list; otherwise false. - return this[kState].findIndex((entry) => entry.name === name) !== -1; - } - - set(name, value, filename = undefined) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" }); - - if (arguments.length === 3 && !isBlobLike(value)) { - throw new TypeError( - "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'", - ); - } - - // The set(name, value) and set(name, blobValue, filename) method steps - // are: - - // 1. Let value be value if given; otherwise blobValue. - - name = webidl.converters.USVString(name); - value = isBlobLike(value) - ? webidl.converters.Blob(value, { strict: false }) - : webidl.converters.USVString(value); - filename = arguments.length === 3 ? toUSVString(filename) : undefined; - - // 2. Let entry be the result of creating an entry with name, value, and - // filename if given. - const entry = makeEntry(name, value, filename); - - // 3. If there are entries in this’s entry list whose name is name, then - // replace the first such entry with entry and remove the others. - const idx = this[kState].findIndex((entry) => entry.name === name); - if (idx !== -1) { - this[kState] = [ - ...this[kState].slice(0, idx), - entry, - ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name), - ]; - } else { - // 4. Otherwise, append entry to this’s entry list. - this[kState].push(entry); - } - } - - entries() { - webidl.brandCheck(this, FormData); - - return makeIterator( - () => this[kState].map((pair) => [pair.name, pair.value]), - "FormData", - "key+value", - ); - } - - keys() { - webidl.brandCheck(this, FormData); - - return makeIterator( - () => this[kState].map((pair) => [pair.name, pair.value]), - "FormData", - "key", - ); - } - - values() { - webidl.brandCheck(this, FormData); - - return makeIterator( - () => this[kState].map((pair) => [pair.name, pair.value]), - "FormData", - "value", - ); - } - - /** - * @param {(value: string, key: string, self: FormData) => void} callbackFn - * @param {unknown} thisArg - */ - forEach(callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, FormData); - - webidl.argumentLengthCheck(arguments, 1, { header: "FormData.forEach" }); - - if (typeof callbackFn !== "function") { - throw new TypeError( - "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.", - ); - } - - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } - } - } - - FormData.prototype[Symbol.iterator] = FormData.prototype.entries; - - Object.defineProperties(FormData.prototype, { - [Symbol.toStringTag]: { - value: "FormData", - configurable: true, - }, - }); - - /** - * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry - * @param {string} name - * @param {string|Blob} value - * @param {?string} filename - * @returns - */ - function makeEntry(name, value, filename) { - // 1. Set name to the result of converting name into a scalar value string. - // "To convert a string into a scalar value string, replace any surrogates - // with U+FFFD." - // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end - name = Buffer.from(name).toString("utf8"); - - // 2. If value is a string, then set value to the result of converting - // value into a scalar value string. - if (typeof value === "string") { - value = Buffer.from(value).toString("utf8"); - } else { - // 3. Otherwise: - - // 1. If value is not a File object, then set value to a new File object, - // representing the same bytes, whose name attribute value is "blob" - if (!isFileLike(value)) { - value = - value instanceof Blob - ? new File([value], "blob", { type: value.type }) - : new FileLike(value, "blob", { type: value.type }); - } - - // 2. If filename is given, then set value to a new File object, - // representing the same bytes, whose name attribute is filename. - if (filename !== undefined) { - /** @type {FilePropertyBag} */ - const options = { - type: value.type, - lastModified: value.lastModified, - }; - - value = - (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile - ? new File([value], filename, options) - : new FileLike(value, filename, options); - } - } - - // 4. Return an entry whose name is name and whose value is value. - return { name, value }; - } - - module.exports = { FormData }; - - /***/ - }, - - /***/ 1246: /***/ (module) => { - "use strict"; - - // In case of breaking changes, increase the version - // number to avoid conflicts. - const globalOrigin = Symbol.for("undici.globalOrigin.1"); - - function getGlobalOrigin() { - return globalThis[globalOrigin]; - } - - function setGlobalOrigin(newOrigin) { - if (newOrigin === undefined) { - Object.defineProperty(globalThis, globalOrigin, { - value: undefined, - writable: true, - enumerable: false, - configurable: false, - }); - - return; - } - - const parsedURL = new URL(newOrigin); - - if (parsedURL.protocol !== "http:" && parsedURL.protocol !== "https:") { - throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`); - } - - Object.defineProperty(globalThis, globalOrigin, { - value: parsedURL, - writable: true, - enumerable: false, - configurable: false, - }); - } - - module.exports = { - getGlobalOrigin, - setGlobalOrigin, - }; - - /***/ - }, - - /***/ 554: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // https://github.com/Ethan-Arrowood/undici-fetch - - const { kHeadersList, kConstruct } = __nccwpck_require__(2785); - const { kGuard } = __nccwpck_require__(5861); - const { kEnumerableProperty } = __nccwpck_require__(3983); - const { makeIterator, isValidHeaderName, isValidHeaderValue } = __nccwpck_require__(2538); - const { webidl } = __nccwpck_require__(1744); - const assert = __nccwpck_require__(9491); - - const kHeadersMap = Symbol("headers map"); - const kHeadersSortedMap = Symbol("headers map sorted"); - - /** - * @param {number} code - */ - function isHTTPWhiteSpaceCharCode(code) { - return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020; - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize - * @param {string} potentialValue - */ - function headerValueNormalize(potentialValue) { - // To normalize a byte sequence potentialValue, remove - // any leading and trailing HTTP whitespace bytes from - // potentialValue. - let i = 0; - let j = potentialValue.length; - - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j; - while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i; - - return i === 0 && j === potentialValue.length - ? potentialValue - : potentialValue.substring(i, j); - } - - function fill(headers, object) { - // To fill a Headers object headers with a given object object, run these steps: - - // 1. If object is a sequence, then for each header in object: - // Note: webidl conversion to array has already been done. - if (Array.isArray(object)) { - for (let i = 0; i < object.length; ++i) { - const header = object[i]; - // 1. If header does not contain exactly two items, then throw a TypeError. - if (header.length !== 2) { - throw webidl.errors.exception({ - header: "Headers constructor", - message: `expected name/value pair to be length 2, found ${header.length}.`, - }); - } - - // 2. Append (header’s first item, header’s second item) to headers. - appendHeader(headers, header[0], header[1]); - } - } else if (typeof object === "object" && object !== null) { - // Note: null should throw - - // 2. Otherwise, object is a record, then for each key → value in object, - // append (key, value) to headers - const keys = Object.keys(object); - for (let i = 0; i < keys.length; ++i) { - appendHeader(headers, keys[i], object[keys[i]]); - } - } else { - throw webidl.errors.conversionFailed({ - prefix: "Headers constructor", - argument: "Argument 1", - types: ["sequence>", "record"], - }); - } - } - - /** - * @see https://fetch.spec.whatwg.org/#concept-headers-append - */ - function appendHeader(headers, name, value) { - // 1. Normalize value. - value = headerValueNormalize(value); - - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.append", - value: name, - type: "header name", - }); - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.append", - value, - type: "header value", - }); - } - - // 3. If headers’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if headers’s guard is "request" and name is a - // forbidden header name, return. - // Note: undici does not implement forbidden header names - if (headers[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (headers[kGuard] === "request-no-cors") { - // 5. Otherwise, if headers’s guard is "request-no-cors": - // TODO - } - - // 6. Otherwise, if headers’s guard is "response" and name is a - // forbidden response-header name, return. - - // 7. Append (name, value) to headers’s header list. - return headers[kHeadersList].append(name, value); - - // 8. If headers’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from headers - } - - class HeadersList { - /** @type {[string, string][]|null} */ - cookies = null; - - constructor(init) { - if (init instanceof HeadersList) { - this[kHeadersMap] = new Map(init[kHeadersMap]); - this[kHeadersSortedMap] = init[kHeadersSortedMap]; - this.cookies = init.cookies === null ? null : [...init.cookies]; - } else { - this[kHeadersMap] = new Map(init); - this[kHeadersSortedMap] = null; - } - } - - // https://fetch.spec.whatwg.org/#header-list-contains - contains(name) { - // A header list list contains a header name name if list - // contains a header whose name is a byte-case-insensitive - // match for name. - name = name.toLowerCase(); - - return this[kHeadersMap].has(name); - } - - clear() { - this[kHeadersMap].clear(); - this[kHeadersSortedMap] = null; - this.cookies = null; - } - - // https://fetch.spec.whatwg.org/#concept-header-list-append - append(name, value) { - this[kHeadersSortedMap] = null; - - // 1. If list contains name, then set name to the first such - // header’s name. - const lowercaseName = name.toLowerCase(); - const exists = this[kHeadersMap].get(lowercaseName); - - // 2. Append (name, value) to list. - if (exists) { - const delimiter = lowercaseName === "cookie" ? "; " : ", "; - this[kHeadersMap].set(lowercaseName, { - name: exists.name, - value: `${exists.value}${delimiter}${value}`, - }); - } else { - this[kHeadersMap].set(lowercaseName, { name, value }); - } - - if (lowercaseName === "set-cookie") { - this.cookies ??= []; - this.cookies.push(value); - } - } - - // https://fetch.spec.whatwg.org/#concept-header-list-set - set(name, value) { - this[kHeadersSortedMap] = null; - const lowercaseName = name.toLowerCase(); - - if (lowercaseName === "set-cookie") { - this.cookies = [value]; - } - - // 1. If list contains name, then set the value of - // the first such header to value and remove the - // others. - // 2. Otherwise, append header (name, value) to list. - this[kHeadersMap].set(lowercaseName, { name, value }); - } - - // https://fetch.spec.whatwg.org/#concept-header-list-delete - delete(name) { - this[kHeadersSortedMap] = null; - - name = name.toLowerCase(); - - if (name === "set-cookie") { - this.cookies = null; - } - - this[kHeadersMap].delete(name); - } - - // https://fetch.spec.whatwg.org/#concept-header-list-get - get(name) { - const value = this[kHeadersMap].get(name.toLowerCase()); - - // 1. If list does not contain name, then return null. - // 2. Return the values of all headers in list whose name - // is a byte-case-insensitive match for name, - // separated from each other by 0x2C 0x20, in order. - return value === undefined ? null : value.value; - } - - *[Symbol.iterator]() { - // use the lowercased name - for (const [name, { value }] of this[kHeadersMap]) { - yield [name, value]; - } - } - - get entries() { - const headers = {}; - - if (this[kHeadersMap].size) { - for (const { name, value } of this[kHeadersMap].values()) { - headers[name] = value; - } - } - - return headers; - } - } - - // https://fetch.spec.whatwg.org/#headers-class - class Headers { - constructor(init = undefined) { - if (init === kConstruct) { - return; - } - this[kHeadersList] = new HeadersList(); - - // The new Headers(init) constructor steps are: - - // 1. Set this’s guard to "none". - this[kGuard] = "none"; - - // 2. If init is given, then fill this with init. - if (init !== undefined) { - init = webidl.converters.HeadersInit(init); - fill(this, init); - } - } - - // https://fetch.spec.whatwg.org/#dom-headers-append - append(name, value) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 2, { header: "Headers.append" }); - - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); - - return appendHeader(this, name, value); - } - - // https://fetch.spec.whatwg.org/#dom-headers-delete - delete(name) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.delete" }); - - name = webidl.converters.ByteString(name); - - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.delete", - value: name, - type: "header name", - }); - } - - // 2. If this’s guard is "immutable", then throw a TypeError. - // 3. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 4. Otherwise, if this’s guard is "request-no-cors", name - // is not a no-CORS-safelisted request-header name, and - // name is not a privileged no-CORS request-header name, - // return. - // 5. Otherwise, if this’s guard is "response" and name is - // a forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request-no-cors") { - // TODO - } - - // 6. If this’s header list does not contain name, then - // return. - if (!this[kHeadersList].contains(name)) { - return; - } - - // 7. Delete name from this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this. - this[kHeadersList].delete(name); - } - - // https://fetch.spec.whatwg.org/#dom-headers-get - get(name) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.get" }); - - name = webidl.converters.ByteString(name); - - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.get", - value: name, - type: "header name", - }); - } - - // 2. Return the result of getting name from this’s header - // list. - return this[kHeadersList].get(name); - } - - // https://fetch.spec.whatwg.org/#dom-headers-has - has(name) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.has" }); - - name = webidl.converters.ByteString(name); - - // 1. If name is not a header name, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.has", - value: name, - type: "header name", - }); - } - - // 2. Return true if this’s header list contains name; - // otherwise false. - return this[kHeadersList].contains(name); - } - - // https://fetch.spec.whatwg.org/#dom-headers-set - set(name, value) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 2, { header: "Headers.set" }); - - name = webidl.converters.ByteString(name); - value = webidl.converters.ByteString(value); - - // 1. Normalize value. - value = headerValueNormalize(value); - - // 2. If name is not a header name or value is not a - // header value, then throw a TypeError. - if (!isValidHeaderName(name)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.set", - value: name, - type: "header name", - }); - } else if (!isValidHeaderValue(value)) { - throw webidl.errors.invalidArgument({ - prefix: "Headers.set", - value, - type: "header value", - }); - } - - // 3. If this’s guard is "immutable", then throw a TypeError. - // 4. Otherwise, if this’s guard is "request" and name is a - // forbidden header name, return. - // 5. Otherwise, if this’s guard is "request-no-cors" and - // name/value is not a no-CORS-safelisted request-header, - // return. - // 6. Otherwise, if this’s guard is "response" and name is a - // forbidden response-header name, return. - // Note: undici does not implement forbidden header names - if (this[kGuard] === "immutable") { - throw new TypeError("immutable"); - } else if (this[kGuard] === "request-no-cors") { - // TODO - } - - // 7. Set (name, value) in this’s header list. - // 8. If this’s guard is "request-no-cors", then remove - // privileged no-CORS request headers from this - this[kHeadersList].set(name, value); - } - - // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie - getSetCookie() { - webidl.brandCheck(this, Headers); - - // 1. If this’s header list does not contain `Set-Cookie`, then return « ». - // 2. Return the values of all headers in this’s header list whose name is - // a byte-case-insensitive match for `Set-Cookie`, in order. - - const list = this[kHeadersList].cookies; - - if (list) { - return [...list]; - } - - return []; - } - - // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine - get [kHeadersSortedMap]() { - if (this[kHeadersList][kHeadersSortedMap]) { - return this[kHeadersList][kHeadersSortedMap]; - } - - // 1. Let headers be an empty list of headers with the key being the name - // and value the value. - const headers = []; - - // 2. Let names be the result of convert header names to a sorted-lowercase - // set with all the names of the headers in list. - const names = [...this[kHeadersList]].sort((a, b) => (a[0] < b[0] ? -1 : 1)); - const cookies = this[kHeadersList].cookies; - - // 3. For each name of names: - for (let i = 0; i < names.length; ++i) { - const [name, value] = names[i]; - // 1. If name is `set-cookie`, then: - if (name === "set-cookie") { - // 1. Let values be a list of all values of headers in list whose name - // is a byte-case-insensitive match for name, in order. - - // 2. For each value of values: - // 1. Append (name, value) to headers. - for (let j = 0; j < cookies.length; ++j) { - headers.push([name, cookies[j]]); - } - } else { - // 2. Otherwise: - - // 1. Let value be the result of getting name from list. - - // 2. Assert: value is non-null. - assert(value !== null); - - // 3. Append (name, value) to headers. - headers.push([name, value]); - } - } - - this[kHeadersList][kHeadersSortedMap] = headers; - - // 4. Return headers. - return headers; - } - - keys() { - webidl.brandCheck(this, Headers); - - if (this[kGuard] === "immutable") { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, "Headers", "key"); - } - - return makeIterator(() => [...this[kHeadersSortedMap].values()], "Headers", "key"); - } - - values() { - webidl.brandCheck(this, Headers); - - if (this[kGuard] === "immutable") { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, "Headers", "value"); - } - - return makeIterator(() => [...this[kHeadersSortedMap].values()], "Headers", "value"); - } - - entries() { - webidl.brandCheck(this, Headers); - - if (this[kGuard] === "immutable") { - const value = this[kHeadersSortedMap]; - return makeIterator(() => value, "Headers", "key+value"); - } - - return makeIterator(() => [...this[kHeadersSortedMap].values()], "Headers", "key+value"); - } - - /** - * @param {(value: string, key: string, self: Headers) => void} callbackFn - * @param {unknown} thisArg - */ - forEach(callbackFn, thisArg = globalThis) { - webidl.brandCheck(this, Headers); - - webidl.argumentLengthCheck(arguments, 1, { header: "Headers.forEach" }); - - if (typeof callbackFn !== "function") { - throw new TypeError( - "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.", - ); - } - - for (const [key, value] of this) { - callbackFn.apply(thisArg, [value, key, this]); - } - } - - [Symbol.for("nodejs.util.inspect.custom")]() { - webidl.brandCheck(this, Headers); - - return this[kHeadersList]; - } - } - - Headers.prototype[Symbol.iterator] = Headers.prototype.entries; - - Object.defineProperties(Headers.prototype, { - append: kEnumerableProperty, - delete: kEnumerableProperty, - get: kEnumerableProperty, - has: kEnumerableProperty, - set: kEnumerableProperty, - getSetCookie: kEnumerableProperty, - keys: kEnumerableProperty, - values: kEnumerableProperty, - entries: kEnumerableProperty, - forEach: kEnumerableProperty, - [Symbol.iterator]: { enumerable: false }, - [Symbol.toStringTag]: { - value: "Headers", - configurable: true, - }, - }); - - webidl.converters.HeadersInit = function (V) { - if (webidl.util.Type(V) === "Object") { - if (V[Symbol.iterator]) { - return webidl.converters["sequence>"](V); - } - - return webidl.converters["record"](V); - } - - throw webidl.errors.conversionFailed({ - prefix: "Headers constructor", - argument: "Argument 1", - types: ["sequence>", "record"], - }); - }; - - module.exports = { - fill, - Headers, - HeadersList, - }; - - /***/ - }, - - /***/ 4881: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - // https://github.com/Ethan-Arrowood/undici-fetch - - const { Response, makeNetworkError, makeAppropriateNetworkError, filterResponse, makeResponse } = - __nccwpck_require__(7823); - const { Headers } = __nccwpck_require__(554); - const { Request, makeRequest } = __nccwpck_require__(8359); - const zlib = __nccwpck_require__(9796); - const { - bytesMatch, - makePolicyContainer, - clonePolicyContainer, - requestBadPort, - TAOCheck, - appendRequestOriginHeader, - responseLocationURL, - requestCurrentURL, - setRequestReferrerPolicyOnRedirect, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - createOpaqueTimingInfo, - appendFetchMetadata, - corsCheck, - crossOriginResourcePolicyCheck, - determineRequestsReferrer, - coarsenedSharedCurrentTime, - createDeferredPromise, - isBlobLike, - sameOrigin, - isCancelled, - isAborted, - isErrorLike, - fullyReadBody, - readableStreamClose, - isomorphicEncode, - urlIsLocal, - urlIsHttpHttpsScheme, - urlHasHttpsScheme, - } = __nccwpck_require__(2538); - const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861); - const assert = __nccwpck_require__(9491); - const { safelyExtractBody } = __nccwpck_require__(1472); - const { - redirectStatusSet, - nullBodyStatus, - safeMethodsSet, - requestBodyHeader, - subresourceSet, - DOMException, - } = __nccwpck_require__(1037); - const { kHeadersList } = __nccwpck_require__(2785); - const EE = __nccwpck_require__(2361); - const { Readable, pipeline } = __nccwpck_require__(2781); - const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = - __nccwpck_require__(3983); - const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(685); - const { TransformStream } = __nccwpck_require__(5356); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - const { webidl } = __nccwpck_require__(1744); - const { STATUS_CODES } = __nccwpck_require__(3685); - const GET_OR_HEAD = ["GET", "HEAD"]; - - /** @type {import('buffer').resolveObjectURL} */ - let resolveObjectURL; - let ReadableStream = globalThis.ReadableStream; - - class Fetch extends EE { - constructor(dispatcher) { - super(); - - this.dispatcher = dispatcher; - this.connection = null; - this.dump = false; - this.state = "ongoing"; - // 2 terminated listeners get added per request, - // but only 1 gets removed. If there are 20 redirects, - // 21 listeners will be added. - // See https://github.com/nodejs/undici/issues/1711 - // TODO (fix): Find and fix root cause for leaked listener. - this.setMaxListeners(21); - } - - terminate(reason) { - if (this.state !== "ongoing") { - return; - } - - this.state = "terminated"; - this.connection?.destroy(reason); - this.emit("terminated", reason); - } - - // https://fetch.spec.whatwg.org/#fetch-controller-abort - abort(error) { - if (this.state !== "ongoing") { - return; - } - - // 1. Set controller’s state to "aborted". - this.state = "aborted"; - - // 2. Let fallbackError be an "AbortError" DOMException. - // 3. Set error to fallbackError if it is not given. - if (!error) { - error = new DOMException("The operation was aborted.", "AbortError"); - } - - // 4. Let serializedError be StructuredSerialize(error). - // If that threw an exception, catch it, and let - // serializedError be StructuredSerialize(fallbackError). - - // 5. Set controller’s serialized abort reason to serializedError. - this.serializedAbortReason = error; - - this.connection?.destroy(error); - this.emit("terminated", error); - } - } - - // https://fetch.spec.whatwg.org/#fetch-method - function fetch(input, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "globalThis.fetch" }); - - // 1. Let p be a new promise. - const p = createDeferredPromise(); - - // 2. Let requestObject be the result of invoking the initial value of - // Request as constructor with input and init as arguments. If this throws - // an exception, reject p with it and return p. - let requestObject; - - try { - requestObject = new Request(input, init); - } catch (e) { - p.reject(e); - return p.promise; - } - - // 3. Let request be requestObject’s request. - const request = requestObject[kState]; - - // 4. If requestObject’s signal’s aborted flag is set, then: - if (requestObject.signal.aborted) { - // 1. Abort the fetch() call with p, request, null, and - // requestObject’s signal’s abort reason. - abortFetch(p, request, null, requestObject.signal.reason); - - // 2. Return p. - return p.promise; - } - - // 5. Let globalObject be request’s client’s global object. - const globalObject = request.client.globalObject; - - // 6. If globalObject is a ServiceWorkerGlobalScope object, then set - // request’s service-workers mode to "none". - if (globalObject?.constructor?.name === "ServiceWorkerGlobalScope") { - request.serviceWorkers = "none"; - } - - // 7. Let responseObject be null. - let responseObject = null; - - // 8. Let relevantRealm be this’s relevant Realm. - const relevantRealm = null; - - // 9. Let locallyAborted be false. - let locallyAborted = false; - - // 10. Let controller be null. - let controller = null; - - // 11. Add the following abort steps to requestObject’s signal: - addAbortListener(requestObject.signal, () => { - // 1. Set locallyAborted to true. - locallyAborted = true; - - // 2. Assert: controller is non-null. - assert(controller != null); - - // 3. Abort controller with requestObject’s signal’s abort reason. - controller.abort(requestObject.signal.reason); - - // 4. Abort the fetch() call with p, request, responseObject, - // and requestObject’s signal’s abort reason. - abortFetch(p, request, responseObject, requestObject.signal.reason); - }); - - // 12. Let handleFetchDone given response response be to finalize and - // report timing with response, globalObject, and "fetch". - const handleFetchDone = (response) => finalizeAndReportTiming(response, "fetch"); - - // 13. Set controller to the result of calling fetch given request, - // with processResponseEndOfBody set to handleFetchDone, and processResponse - // given response being these substeps: - - const processResponse = (response) => { - // 1. If locallyAborted is true, terminate these substeps. - if (locallyAborted) { - return Promise.resolve(); - } - - // 2. If response’s aborted flag is set, then: - if (response.aborted) { - // 1. Let deserializedError be the result of deserialize a serialized - // abort reason given controller’s serialized abort reason and - // relevantRealm. - - // 2. Abort the fetch() call with p, request, responseObject, and - // deserializedError. - - abortFetch(p, request, responseObject, controller.serializedAbortReason); - return Promise.resolve(); - } - - // 3. If response is a network error, then reject p with a TypeError - // and terminate these substeps. - if (response.type === "error") { - p.reject(Object.assign(new TypeError("fetch failed"), { cause: response.error })); - return Promise.resolve(); - } - - // 4. Set responseObject to the result of creating a Response object, - // given response, "immutable", and relevantRealm. - responseObject = new Response(); - responseObject[kState] = response; - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = response.headersList; - responseObject[kHeaders][kGuard] = "immutable"; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 5. Resolve p with responseObject. - p.resolve(responseObject); - }; - - controller = fetching({ - request, - processResponseEndOfBody: handleFetchDone, - processResponse, - dispatcher: init.dispatcher ?? getGlobalDispatcher(), // undici - }); - - // 14. Return p. - return p.promise; - } - - // https://fetch.spec.whatwg.org/#finalize-and-report-timing - function finalizeAndReportTiming(response, initiatorType = "other") { - // 1. If response is an aborted network error, then return. - if (response.type === "error" && response.aborted) { - return; - } - - // 2. If response’s URL list is null or empty, then return. - if (!response.urlList?.length) { - return; - } - - // 3. Let originalURL be response’s URL list[0]. - const originalURL = response.urlList[0]; - - // 4. Let timingInfo be response’s timing info. - let timingInfo = response.timingInfo; - - // 5. Let cacheState be response’s cache state. - let cacheState = response.cacheState; - - // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. - if (!urlIsHttpHttpsScheme(originalURL)) { - return; - } - - // 7. If timingInfo is null, then return. - if (timingInfo === null) { - return; - } - - // 8. If response’s timing allow passed flag is not set, then: - if (!response.timingAllowPassed) { - // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. - timingInfo = createOpaqueTimingInfo({ - startTime: timingInfo.startTime, - }); - - // 2. Set cacheState to the empty string. - cacheState = ""; - } - - // 9. Set timingInfo’s end time to the coarsened shared current time - // given global’s relevant settings object’s cross-origin isolated - // capability. - // TODO: given global’s relevant settings object’s cross-origin isolated - // capability? - timingInfo.endTime = coarsenedSharedCurrentTime(); - - // 10. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo; - - // 11. Mark resource timing for timingInfo, originalURL, initiatorType, - // global, and cacheState. - markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState); - } - - // https://w3c.github.io/resource-timing/#dfn-mark-resource-timing - function markResourceTiming(timingInfo, originalURL, initiatorType, globalThis, cacheState) { - if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { - performance.markResourceTiming( - timingInfo, - originalURL.href, - initiatorType, - globalThis, - cacheState, - ); - } - } - - // https://fetch.spec.whatwg.org/#abort-fetch - function abortFetch(p, request, responseObject, error) { - // Note: AbortSignal.reason was added in node v17.2.0 - // which would give us an undefined error to reject with. - // Remove this once node v16 is no longer supported. - if (!error) { - error = new DOMException("The operation was aborted.", "AbortError"); - } - - // 1. Reject promise with error. - p.reject(error); - - // 2. If request’s body is not null and is readable, then cancel request’s - // body with error. - if (request.body != null && isReadable(request.body?.stream)) { - request.body.stream.cancel(error).catch((err) => { - if (err.code === "ERR_INVALID_STATE") { - // Node bug? - return; - } - throw err; - }); - } - - // 3. If responseObject is null, then return. - if (responseObject == null) { - return; - } - - // 4. Let response be responseObject’s response. - const response = responseObject[kState]; - - // 5. If response’s body is not null and is readable, then error response’s - // body with error. - if (response.body != null && isReadable(response.body?.stream)) { - response.body.stream.cancel(error).catch((err) => { - if (err.code === "ERR_INVALID_STATE") { - // Node bug? - return; - } - throw err; - }); - } - } - - // https://fetch.spec.whatwg.org/#fetching - function fetching({ - request, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseEndOfBody, - processResponseConsumeBody, - useParallelQueue = false, - dispatcher, // undici - }) { - // 1. Let taskDestination be null. - let taskDestination = null; - - // 2. Let crossOriginIsolatedCapability be false. - let crossOriginIsolatedCapability = false; - - // 3. If request’s client is non-null, then: - if (request.client != null) { - // 1. Set taskDestination to request’s client’s global object. - taskDestination = request.client.globalObject; - - // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin - // isolated capability. - crossOriginIsolatedCapability = request.client.crossOriginIsolatedCapability; - } - - // 4. If useParallelQueue is true, then set taskDestination to the result of - // starting a new parallel queue. - // TODO - - // 5. Let timingInfo be a new fetch timing info whose start time and - // post-redirect start time are the coarsened shared current time given - // crossOriginIsolatedCapability. - const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability); - const timingInfo = createOpaqueTimingInfo({ - startTime: currenTime, - }); - - // 6. Let fetchParams be a new fetch params whose - // request is request, - // timing info is timingInfo, - // process request body chunk length is processRequestBodyChunkLength, - // process request end-of-body is processRequestEndOfBody, - // process response is processResponse, - // process response consume body is processResponseConsumeBody, - // process response end-of-body is processResponseEndOfBody, - // task destination is taskDestination, - // and cross-origin isolated capability is crossOriginIsolatedCapability. - const fetchParams = { - controller: new Fetch(dispatcher), - request, - timingInfo, - processRequestBodyChunkLength, - processRequestEndOfBody, - processResponse, - processResponseConsumeBody, - processResponseEndOfBody, - taskDestination, - crossOriginIsolatedCapability, - }; - - // 7. If request’s body is a byte sequence, then set request’s body to - // request’s body as a body. - // NOTE: Since fetching is only called from fetch, body should already be - // extracted. - assert(!request.body || request.body.stream); - - // 8. If request’s window is "client", then set request’s window to request’s - // client, if request’s client’s global object is a Window object; otherwise - // "no-window". - if (request.window === "client") { - // TODO: What if request.client is null? - request.window = - request.client?.globalObject?.constructor?.name === "Window" - ? request.client - : "no-window"; - } - - // 9. If request’s origin is "client", then set request’s origin to request’s - // client’s origin. - if (request.origin === "client") { - // TODO: What if request.client is null? - request.origin = request.client?.origin; - } - - // 10. If all of the following conditions are true: - // TODO - - // 11. If request’s policy container is "client", then: - if (request.policyContainer === "client") { - // 1. If request’s client is non-null, then set request’s policy - // container to a clone of request’s client’s policy container. [HTML] - if (request.client != null) { - request.policyContainer = clonePolicyContainer(request.client.policyContainer); - } else { - // 2. Otherwise, set request’s policy container to a new policy - // container. - request.policyContainer = makePolicyContainer(); - } - } - - // 12. If request’s header list does not contain `Accept`, then: - if (!request.headersList.contains("accept")) { - // 1. Let value be `*/*`. - const value = "*/*"; - - // 2. A user agent should set value to the first matching statement, if - // any, switching on request’s destination: - // "document" - // "frame" - // "iframe" - // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` - // "image" - // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` - // "style" - // `text/css,*/*;q=0.1` - // TODO - - // 3. Append `Accept`/value to request’s header list. - request.headersList.append("accept", value); - } - - // 13. If request’s header list does not contain `Accept-Language`, then - // user agents should append `Accept-Language`/an appropriate value to - // request’s header list. - if (!request.headersList.contains("accept-language")) { - request.headersList.append("accept-language", "*"); - } - - // 14. If request’s priority is null, then use request’s initiator and - // destination appropriately in setting request’s priority to a - // user-agent-defined object. - if (request.priority === null) { - // TODO - } - - // 15. If request is a subresource request, then: - if (subresourceSet.has(request.destination)) { - // TODO - } - - // 16. Run main fetch given fetchParams. - mainFetch(fetchParams).catch((err) => { - fetchParams.controller.terminate(err); - }); - - // 17. Return fetchParam's controller - return fetchParams.controller; - } - - // https://fetch.spec.whatwg.org/#concept-main-fetch - async function mainFetch(fetchParams, recursive = false) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. If request’s local-URLs-only flag is set and request’s current URL is - // not local, then set response to a network error. - if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { - response = makeNetworkError("local URLs only"); - } - - // 4. Run report Content Security Policy violations for request. - // TODO - - // 5. Upgrade request to a potentially trustworthy URL, if appropriate. - tryUpgradeRequestToAPotentiallyTrustworthyURL(request); - - // 6. If should request be blocked due to a bad port, should fetching request - // be blocked as mixed content, or should request be blocked by Content - // Security Policy returns blocked, then set response to a network error. - if (requestBadPort(request) === "blocked") { - response = makeNetworkError("bad port"); - } - // TODO: should fetching request be blocked as mixed content? - // TODO: should request be blocked by Content Security Policy? - - // 7. If request’s referrer policy is the empty string, then set request’s - // referrer policy to request’s policy container’s referrer policy. - if (request.referrerPolicy === "") { - request.referrerPolicy = request.policyContainer.referrerPolicy; - } - - // 8. If request’s referrer is not "no-referrer", then set request’s - // referrer to the result of invoking determine request’s referrer. - if (request.referrer !== "no-referrer") { - request.referrer = determineRequestsReferrer(request); - } - - // 9. Set request’s current URL’s scheme to "https" if all of the following - // conditions are true: - // - request’s current URL’s scheme is "http" - // - request’s current URL’s host is a domain - // - Matching request’s current URL’s host per Known HSTS Host Domain Name - // Matching results in either a superdomain match with an asserted - // includeSubDomains directive or a congruent match (with or without an - // asserted includeSubDomains directive). [HSTS] - // TODO - - // 10. If recursive is false, then run the remaining steps in parallel. - // TODO - - // 11. If response is null, then set response to the result of running - // the steps corresponding to the first matching statement: - if (response === null) { - response = await (async () => { - const currentURL = requestCurrentURL(request); - - if ( - // - request’s current URL’s origin is same origin with request’s origin, - // and request’s response tainting is "basic" - (sameOrigin(currentURL, request.url) && request.responseTainting === "basic") || - // request’s current URL’s scheme is "data" - currentURL.protocol === "data:" || - // - request’s mode is "navigate" or "websocket" - request.mode === "navigate" || - request.mode === "websocket" - ) { - // 1. Set request’s response tainting to "basic". - request.responseTainting = "basic"; - - // 2. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams); - } - - // request’s mode is "same-origin" - if (request.mode === "same-origin") { - // 1. Return a network error. - return makeNetworkError('request mode cannot be "same-origin"'); - } - - // request’s mode is "no-cors" - if (request.mode === "no-cors") { - // 1. If request’s redirect mode is not "follow", then return a network - // error. - if (request.redirect !== "follow") { - return makeNetworkError( - 'redirect mode cannot be "follow" for "no-cors" request', - ); - } - - // 2. Set request’s response tainting to "opaque". - request.responseTainting = "opaque"; - - // 3. Return the result of running scheme fetch given fetchParams. - return await schemeFetch(fetchParams); - } - - // request’s current URL’s scheme is not an HTTP(S) scheme - if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { - // Return a network error. - return makeNetworkError("URL scheme must be a HTTP(S) scheme"); - } - - // - request’s use-CORS-preflight flag is set - // - request’s unsafe-request flag is set and either request’s method is - // not a CORS-safelisted method or CORS-unsafe request-header names with - // request’s header list is not empty - // 1. Set request’s response tainting to "cors". - // 2. Let corsWithPreflightResponse be the result of running HTTP fetch - // given fetchParams and true. - // 3. If corsWithPreflightResponse is a network error, then clear cache - // entries using request. - // 4. Return corsWithPreflightResponse. - // TODO - - // Otherwise - // 1. Set request’s response tainting to "cors". - request.responseTainting = "cors"; - - // 2. Return the result of running HTTP fetch given fetchParams. - return await httpFetch(fetchParams); - })(); - } - - // 12. If recursive is true, then return response. - if (recursive) { - return response; - } - - // 13. If response is not a network error and response is not a filtered - // response, then: - if (response.status !== 0 && !response.internalResponse) { - // If request’s response tainting is "cors", then: - if (request.responseTainting === "cors") { - // 1. Let headerNames be the result of extracting header list values - // given `Access-Control-Expose-Headers` and response’s header list. - // TODO - // 2. If request’s credentials mode is not "include" and headerNames - // contains `*`, then set response’s CORS-exposed header-name list to - // all unique header names in response’s header list. - // TODO - // 3. Otherwise, if headerNames is not null or failure, then set - // response’s CORS-exposed header-name list to headerNames. - // TODO - } - - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (request.responseTainting === "basic") { - response = filterResponse(response, "basic"); - } else if (request.responseTainting === "cors") { - response = filterResponse(response, "cors"); - } else if (request.responseTainting === "opaque") { - response = filterResponse(response, "opaque"); - } else { - assert(false); - } - } - - // 14. Let internalResponse be response, if response is a network error, - // and response’s internal response otherwise. - let internalResponse = response.status === 0 ? response : response.internalResponse; - - // 15. If internalResponse’s URL list is empty, then set it to a clone of - // request’s URL list. - if (internalResponse.urlList.length === 0) { - internalResponse.urlList.push(...request.urlList); - } - - // 16. If request’s timing allow failed flag is unset, then set - // internalResponse’s timing allow passed flag. - if (!request.timingAllowFailed) { - response.timingAllowPassed = true; - } - - // 17. If response is not a network error and any of the following returns - // blocked - // - should internalResponse to request be blocked as mixed content - // - should internalResponse to request be blocked by Content Security Policy - // - should internalResponse to request be blocked due to its MIME type - // - should internalResponse to request be blocked due to nosniff - // TODO - - // 18. If response’s type is "opaque", internalResponse’s status is 206, - // internalResponse’s range-requested flag is set, and request’s header - // list does not contain `Range`, then set response and internalResponse - // to a network error. - if ( - response.type === "opaque" && - internalResponse.status === 206 && - internalResponse.rangeRequested && - !request.headers.contains("range") - ) { - response = internalResponse = makeNetworkError(); - } - - // 19. If response is not a network error and either request’s method is - // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, - // set internalResponse’s body to null and disregard any enqueuing toward - // it (if any). - if ( - response.status !== 0 && - (request.method === "HEAD" || - request.method === "CONNECT" || - nullBodyStatus.includes(internalResponse.status)) - ) { - internalResponse.body = null; - fetchParams.controller.dump = true; - } - - // 20. If request’s integrity metadata is not the empty string, then: - if (request.integrity) { - // 1. Let processBodyError be this step: run fetch finale given fetchParams - // and a network error. - const processBodyError = (reason) => fetchFinale(fetchParams, makeNetworkError(reason)); - - // 2. If request’s response tainting is "opaque", or response’s body is null, - // then run processBodyError and abort these steps. - if (request.responseTainting === "opaque" || response.body == null) { - processBodyError(response.error); - return; - } - - // 3. Let processBody given bytes be these steps: - const processBody = (bytes) => { - // 1. If bytes do not match request’s integrity metadata, - // then run processBodyError and abort these steps. [SRI] - if (!bytesMatch(bytes, request.integrity)) { - processBodyError("integrity mismatch"); - return; - } - - // 2. Set response’s body to bytes as a body. - response.body = safelyExtractBody(bytes)[0]; - - // 3. Run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response); - }; - - // 4. Fully read response’s body given processBody and processBodyError. - await fullyReadBody(response.body, processBody, processBodyError); - } else { - // 21. Otherwise, run fetch finale given fetchParams and response. - fetchFinale(fetchParams, response); - } - } - - // https://fetch.spec.whatwg.org/#concept-scheme-fetch - // given a fetch params fetchParams - function schemeFetch(fetchParams) { - // Note: since the connection is destroyed on redirect, which sets fetchParams to a - // cancelled state, we do not want this condition to trigger *unless* there have been - // no redirects. See https://github.com/nodejs/undici/issues/1776 - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { - return Promise.resolve(makeAppropriateNetworkError(fetchParams)); - } - - // 2. Let request be fetchParams’s request. - const { request } = fetchParams; - - const { protocol: scheme } = requestCurrentURL(request); - - // 3. Switch on request’s current URL’s scheme and run the associated steps: - switch (scheme) { - case "about:": { - // If request’s current URL’s path is the string "blank", then return a new response - // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », - // and body is the empty byte sequence as a body. - - // Otherwise, return a network error. - return Promise.resolve(makeNetworkError("about scheme is not supported")); - } - case "blob:": { - if (!resolveObjectURL) { - resolveObjectURL = __nccwpck_require__(4300).resolveObjectURL; - } - - // 1. Let blobURLEntry be request’s current URL’s blob URL entry. - const blobURLEntry = requestCurrentURL(request); - - // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 - // Buffer.resolveObjectURL does not ignore URL queries. - if (blobURLEntry.search.length !== 0) { - return Promise.resolve( - makeNetworkError("NetworkError when attempting to fetch resource."), - ); - } - - const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()); - - // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s - // object is not a Blob object, then return a network error. - if (request.method !== "GET" || !isBlobLike(blobURLEntryObject)) { - return Promise.resolve(makeNetworkError("invalid method")); - } - - // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. - const bodyWithType = safelyExtractBody(blobURLEntryObject); - - // 4. Let body be bodyWithType’s body. - const body = bodyWithType[0]; - - // 5. Let length be body’s length, serialized and isomorphic encoded. - const length = isomorphicEncode(`${body.length}`); - - // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. - const type = bodyWithType[1] ?? ""; - - // 7. Return a new response whose status message is `OK`, header list is - // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. - const response = makeResponse({ - statusText: "OK", - headersList: [ - ["content-length", { name: "Content-Length", value: length }], - ["content-type", { name: "Content-Type", value: type }], - ], - }); - - response.body = body; - - return Promise.resolve(response); - } - case "data:": { - // 1. Let dataURLStruct be the result of running the - // data: URL processor on request’s current URL. - const currentURL = requestCurrentURL(request); - const dataURLStruct = dataURLProcessor(currentURL); - - // 2. If dataURLStruct is failure, then return a - // network error. - if (dataURLStruct === "failure") { - return Promise.resolve(makeNetworkError("failed to fetch the data URL")); - } - - // 3. Let mimeType be dataURLStruct’s MIME type, serialized. - const mimeType = serializeAMimeType(dataURLStruct.mimeType); - - // 4. Return a response whose status message is `OK`, - // header list is « (`Content-Type`, mimeType) », - // and body is dataURLStruct’s body as a body. - return Promise.resolve( - makeResponse({ - statusText: "OK", - headersList: [["content-type", { name: "Content-Type", value: mimeType }]], - body: safelyExtractBody(dataURLStruct.body)[0], - }), - ); - } - case "file:": { - // For now, unfortunate as it is, file URLs are left as an exercise for the reader. - // When in doubt, return a network error. - return Promise.resolve(makeNetworkError("not implemented... yet...")); - } - case "http:": - case "https:": { - // Return the result of running HTTP fetch given fetchParams. - - return httpFetch(fetchParams).catch((err) => makeNetworkError(err)); - } - default: { - return Promise.resolve(makeNetworkError("unknown scheme")); - } - } - } - - // https://fetch.spec.whatwg.org/#finalize-response - function finalizeResponse(fetchParams, response) { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true; - - // 2, If fetchParams’s process response done is not null, then queue a fetch - // task to run fetchParams’s process response done given response, with - // fetchParams’s task destination. - if (fetchParams.processResponseDone != null) { - queueMicrotask(() => fetchParams.processResponseDone(response)); - } - } - - // https://fetch.spec.whatwg.org/#fetch-finale - function fetchFinale(fetchParams, response) { - // 1. If response is a network error, then: - if (response.type === "error") { - // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». - response.urlList = [fetchParams.request.urlList[0]]; - - // 2. Set response’s timing info to the result of creating an opaque timing - // info for fetchParams’s timing info. - response.timingInfo = createOpaqueTimingInfo({ - startTime: fetchParams.timingInfo.startTime, - }); - } - - // 2. Let processResponseEndOfBody be the following steps: - const processResponseEndOfBody = () => { - // 1. Set fetchParams’s request’s done flag. - fetchParams.request.done = true; - - // If fetchParams’s process response end-of-body is not null, - // then queue a fetch task to run fetchParams’s process response - // end-of-body given response with fetchParams’s task destination. - if (fetchParams.processResponseEndOfBody != null) { - queueMicrotask(() => fetchParams.processResponseEndOfBody(response)); - } - }; - - // 3. If fetchParams’s process response is non-null, then queue a fetch task - // to run fetchParams’s process response given response, with fetchParams’s - // task destination. - if (fetchParams.processResponse != null) { - queueMicrotask(() => fetchParams.processResponse(response)); - } - - // 4. If response’s body is null, then run processResponseEndOfBody. - if (response.body == null) { - processResponseEndOfBody(); - } else { - // 5. Otherwise: - - // 1. Let transformStream be a new a TransformStream. - - // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, - // enqueues chunk in transformStream. - const identityTransformAlgorithm = (chunk, controller) => { - controller.enqueue(chunk); - }; - - // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm - // and flushAlgorithm set to processResponseEndOfBody. - const transformStream = new TransformStream( - { - start() {}, - transform: identityTransformAlgorithm, - flush: processResponseEndOfBody, - }, - { - size() { - return 1; - }, - }, - { - size() { - return 1; - }, - }, - ); - - // 4. Set response’s body to the result of piping response’s body through transformStream. - response.body = { stream: response.body.stream.pipeThrough(transformStream) }; - } - - // 6. If fetchParams’s process response consume body is non-null, then: - if (fetchParams.processResponseConsumeBody != null) { - // 1. Let processBody given nullOrBytes be this step: run fetchParams’s - // process response consume body given response and nullOrBytes. - const processBody = (nullOrBytes) => - fetchParams.processResponseConsumeBody(response, nullOrBytes); - - // 2. Let processBodyError be this step: run fetchParams’s process - // response consume body given response and failure. - const processBodyError = (failure) => - fetchParams.processResponseConsumeBody(response, failure); - - // 3. If response’s body is null, then queue a fetch task to run processBody - // given null, with fetchParams’s task destination. - if (response.body == null) { - queueMicrotask(() => processBody(null)); - } else { - // 4. Otherwise, fully read response’s body given processBody, processBodyError, - // and fetchParams’s task destination. - return fullyReadBody(response.body, processBody, processBodyError); - } - return Promise.resolve(); - } - } - - // https://fetch.spec.whatwg.org/#http-fetch - async function httpFetch(fetchParams) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. Let actualResponse be null. - let actualResponse = null; - - // 4. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 5. If request’s service-workers mode is "all", then: - if (request.serviceWorkers === "all") { - // TODO - } - - // 6. If response is null, then: - if (response === null) { - // 1. If makeCORSPreflight is true and one of these conditions is true: - // TODO - - // 2. If request’s redirect mode is "follow", then set request’s - // service-workers mode to "none". - if (request.redirect === "follow") { - request.serviceWorkers = "none"; - } - - // 3. Set response and actualResponse to the result of running - // HTTP-network-or-cache fetch given fetchParams. - actualResponse = response = await httpNetworkOrCacheFetch(fetchParams); - - // 4. If request’s response tainting is "cors" and a CORS check - // for request and response returns failure, then return a network error. - if (request.responseTainting === "cors" && corsCheck(request, response) === "failure") { - return makeNetworkError("cors failure"); - } - - // 5. If the TAO check for request and response returns failure, then set - // request’s timing allow failed flag. - if (TAOCheck(request, response) === "failure") { - request.timingAllowFailed = true; - } - } - - // 7. If either request’s response tainting or response’s type - // is "opaque", and the cross-origin resource policy check with - // request’s origin, request’s client, request’s destination, - // and actualResponse returns blocked, then return a network error. - if ( - (request.responseTainting === "opaque" || response.type === "opaque") && - crossOriginResourcePolicyCheck( - request.origin, - request.client, - request.destination, - actualResponse, - ) === "blocked" - ) { - return makeNetworkError("blocked"); - } - - // 8. If actualResponse’s status is a redirect status, then: - if (redirectStatusSet.has(actualResponse.status)) { - // 1. If actualResponse’s status is not 303, request’s body is not null, - // and the connection uses HTTP/2, then user agents may, and are even - // encouraged to, transmit an RST_STREAM frame. - // See, https://github.com/whatwg/fetch/issues/1288 - if (request.redirect !== "manual") { - fetchParams.controller.connection.destroy(); - } - - // 2. Switch on request’s redirect mode: - if (request.redirect === "error") { - // Set response to a network error. - response = makeNetworkError("unexpected redirect"); - } else if (request.redirect === "manual") { - // Set response to an opaque-redirect filtered response whose internal - // response is actualResponse. - // NOTE(spec): On the web this would return an `opaqueredirect` response, - // but that doesn't make sense server side. - // See https://github.com/nodejs/undici/issues/1193. - response = actualResponse; - } else if (request.redirect === "follow") { - // Set response to the result of running HTTP-redirect fetch given - // fetchParams and response. - response = await httpRedirectFetch(fetchParams, response); - } else { - assert(false); - } - } - - // 9. Set response’s timing info to timingInfo. - response.timingInfo = timingInfo; - - // 10. Return response. - return response; - } - - // https://fetch.spec.whatwg.org/#http-redirect-fetch - function httpRedirectFetch(fetchParams, response) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let actualResponse be response, if response is not a filtered response, - // and response’s internal response otherwise. - const actualResponse = response.internalResponse ? response.internalResponse : response; - - // 3. Let locationURL be actualResponse’s location URL given request’s current - // URL’s fragment. - let locationURL; - - try { - locationURL = responseLocationURL(actualResponse, requestCurrentURL(request).hash); - - // 4. If locationURL is null, then return response. - if (locationURL == null) { - return response; - } - } catch (err) { - // 5. If locationURL is failure, then return a network error. - return Promise.resolve(makeNetworkError(err)); - } - - // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network - // error. - if (!urlIsHttpHttpsScheme(locationURL)) { - return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme")); - } - - // 7. If request’s redirect count is 20, then return a network error. - if (request.redirectCount === 20) { - return Promise.resolve(makeNetworkError("redirect count exceeded")); - } - - // 8. Increase request’s redirect count by 1. - request.redirectCount += 1; - - // 9. If request’s mode is "cors", locationURL includes credentials, and - // request’s origin is not same origin with locationURL’s origin, then return - // a network error. - if ( - request.mode === "cors" && - (locationURL.username || locationURL.password) && - !sameOrigin(request, locationURL) - ) { - return Promise.resolve( - makeNetworkError('cross origin not allowed for request mode "cors"'), - ); - } - - // 10. If request’s response tainting is "cors" and locationURL includes - // credentials, then return a network error. - if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) { - return Promise.resolve( - makeNetworkError('URL cannot contain credentials for request mode "cors"'), - ); - } - - // 11. If actualResponse’s status is not 303, request’s body is non-null, - // and request’s body’s source is null, then return a network error. - if (actualResponse.status !== 303 && request.body != null && request.body.source == null) { - return Promise.resolve(makeNetworkError()); - } - - // 12. If one of the following is true - // - actualResponse’s status is 301 or 302 and request’s method is `POST` - // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` - if ( - ([301, 302].includes(actualResponse.status) && request.method === "POST") || - (actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) - ) { - // then: - // 1. Set request’s method to `GET` and request’s body to null. - request.method = "GET"; - request.body = null; - - // 2. For each headerName of request-body-header name, delete headerName from - // request’s header list. - for (const headerName of requestBodyHeader) { - request.headersList.delete(headerName); - } - } - - // 13. If request’s current URL’s origin is not same origin with locationURL’s - // origin, then for each headerName of CORS non-wildcard request-header name, - // delete headerName from request’s header list. - if (!sameOrigin(requestCurrentURL(request), locationURL)) { - // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name - request.headersList.delete("authorization"); - - // https://fetch.spec.whatwg.org/#authentication-entries - request.headersList.delete("proxy-authorization", true); - - // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. - request.headersList.delete("cookie"); - request.headersList.delete("host"); - } - - // 14. If request’s body is non-null, then set request’s body to the first return - // value of safely extracting request’s body’s source. - if (request.body != null) { - assert(request.body.source != null); - request.body = safelyExtractBody(request.body.source)[0]; - } - - // 15. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 16. Set timingInfo’s redirect end time and post-redirect start time to the - // coarsened shared current time given fetchParams’s cross-origin isolated - // capability. - timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime( - fetchParams.crossOriginIsolatedCapability, - ); - - // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s - // redirect start time to timingInfo’s start time. - if (timingInfo.redirectStartTime === 0) { - timingInfo.redirectStartTime = timingInfo.startTime; - } - - // 18. Append locationURL to request’s URL list. - request.urlList.push(locationURL); - - // 19. Invoke set request’s referrer policy on redirect on request and - // actualResponse. - setRequestReferrerPolicyOnRedirect(request, actualResponse); - - // 20. Return the result of running main fetch given fetchParams and true. - return mainFetch(fetchParams, true); - } - - // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch - async function httpNetworkOrCacheFetch( - fetchParams, - isAuthenticationFetch = false, - isNewConnectionFetch = false, - ) { - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let httpFetchParams be null. - let httpFetchParams = null; - - // 3. Let httpRequest be null. - let httpRequest = null; - - // 4. Let response be null. - let response = null; - - // 5. Let storedResponse be null. - // TODO: cache - - // 6. Let httpCache be null. - const httpCache = null; - - // 7. Let the revalidatingFlag be unset. - const revalidatingFlag = false; - - // 8. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. If request’s window is "no-window" and request’s redirect mode is - // "error", then set httpFetchParams to fetchParams and httpRequest to - // request. - if (request.window === "no-window" && request.redirect === "error") { - httpFetchParams = fetchParams; - httpRequest = request; - } else { - // Otherwise: - - // 1. Set httpRequest to a clone of request. - httpRequest = makeRequest(request); - - // 2. Set httpFetchParams to a copy of fetchParams. - httpFetchParams = { ...fetchParams }; - - // 3. Set httpFetchParams’s request to httpRequest. - httpFetchParams.request = httpRequest; - } - - // 3. Let includeCredentials be true if one of - const includeCredentials = - request.credentials === "include" || - (request.credentials === "same-origin" && request.responseTainting === "basic"); - - // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s - // body is non-null; otherwise null. - const contentLength = httpRequest.body ? httpRequest.body.length : null; - - // 5. Let contentLengthHeaderValue be null. - let contentLengthHeaderValue = null; - - // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or - // `PUT`, then set contentLengthHeaderValue to `0`. - if (httpRequest.body == null && ["POST", "PUT"].includes(httpRequest.method)) { - contentLengthHeaderValue = "0"; - } - - // 7. If contentLength is non-null, then set contentLengthHeaderValue to - // contentLength, serialized and isomorphic encoded. - if (contentLength != null) { - contentLengthHeaderValue = isomorphicEncode(`${contentLength}`); - } - - // 8. If contentLengthHeaderValue is non-null, then append - // `Content-Length`/contentLengthHeaderValue to httpRequest’s header - // list. - if (contentLengthHeaderValue != null) { - httpRequest.headersList.append("content-length", contentLengthHeaderValue); - } - - // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, - // contentLengthHeaderValue) to httpRequest’s header list. - - // 10. If contentLength is non-null and httpRequest’s keepalive is true, - // then: - if (contentLength != null && httpRequest.keepalive) { - // NOTE: keepalive is a noop outside of browser context. - } - - // 11. If httpRequest’s referrer is a URL, then append - // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, - // to httpRequest’s header list. - if (httpRequest.referrer instanceof URL) { - httpRequest.headersList.append("referer", isomorphicEncode(httpRequest.referrer.href)); - } - - // 12. Append a request `Origin` header for httpRequest. - appendRequestOriginHeader(httpRequest); - - // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] - appendFetchMetadata(httpRequest); - - // 14. If httpRequest’s header list does not contain `User-Agent`, then - // user agents should append `User-Agent`/default `User-Agent` value to - // httpRequest’s header list. - if (!httpRequest.headersList.contains("user-agent")) { - httpRequest.headersList.append( - "user-agent", - typeof esbuildDetection === "undefined" ? "undici" : "node", - ); - } - - // 15. If httpRequest’s cache mode is "default" and httpRequest’s header - // list contains `If-Modified-Since`, `If-None-Match`, - // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set - // httpRequest’s cache mode to "no-store". - if ( - httpRequest.cache === "default" && - (httpRequest.headersList.contains("if-modified-since") || - httpRequest.headersList.contains("if-none-match") || - httpRequest.headersList.contains("if-unmodified-since") || - httpRequest.headersList.contains("if-match") || - httpRequest.headersList.contains("if-range")) - ) { - httpRequest.cache = "no-store"; - } - - // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent - // no-cache cache-control header modification flag is unset, and - // httpRequest’s header list does not contain `Cache-Control`, then append - // `Cache-Control`/`max-age=0` to httpRequest’s header list. - if ( - httpRequest.cache === "no-cache" && - !httpRequest.preventNoCacheCacheControlHeaderModification && - !httpRequest.headersList.contains("cache-control") - ) { - httpRequest.headersList.append("cache-control", "max-age=0"); - } - - // 17. If httpRequest’s cache mode is "no-store" or "reload", then: - if (httpRequest.cache === "no-store" || httpRequest.cache === "reload") { - // 1. If httpRequest’s header list does not contain `Pragma`, then append - // `Pragma`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.contains("pragma")) { - httpRequest.headersList.append("pragma", "no-cache"); - } - - // 2. If httpRequest’s header list does not contain `Cache-Control`, - // then append `Cache-Control`/`no-cache` to httpRequest’s header list. - if (!httpRequest.headersList.contains("cache-control")) { - httpRequest.headersList.append("cache-control", "no-cache"); - } - } - - // 18. If httpRequest’s header list contains `Range`, then append - // `Accept-Encoding`/`identity` to httpRequest’s header list. - if (httpRequest.headersList.contains("range")) { - httpRequest.headersList.append("accept-encoding", "identity"); - } - - // 19. Modify httpRequest’s header list per HTTP. Do not append a given - // header if httpRequest’s header list contains that header’s name. - // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 - if (!httpRequest.headersList.contains("accept-encoding")) { - if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { - httpRequest.headersList.append("accept-encoding", "br, gzip, deflate"); - } else { - httpRequest.headersList.append("accept-encoding", "gzip, deflate"); - } - } - - httpRequest.headersList.delete("host"); - - // 20. If includeCredentials is true, then: - if (includeCredentials) { - // 1. If the user agent is not configured to block cookies for httpRequest - // (see section 7 of [COOKIES]), then: - // TODO: credentials - // 2. If httpRequest’s header list does not contain `Authorization`, then: - // TODO: credentials - } - - // 21. If there’s a proxy-authentication entry, use it as appropriate. - // TODO: proxy-authentication - - // 22. Set httpCache to the result of determining the HTTP cache - // partition, given httpRequest. - // TODO: cache - - // 23. If httpCache is null, then set httpRequest’s cache mode to - // "no-store". - if (httpCache == null) { - httpRequest.cache = "no-store"; - } - - // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", - // then: - if (httpRequest.mode !== "no-store" && httpRequest.mode !== "reload") { - // TODO: cache - } - - // 9. If aborted, then return the appropriate network error for fetchParams. - // TODO - - // 10. If response is null, then: - if (response == null) { - // 1. If httpRequest’s cache mode is "only-if-cached", then return a - // network error. - if (httpRequest.mode === "only-if-cached") { - return makeNetworkError("only if cached"); - } - - // 2. Let forwardResponse be the result of running HTTP-network fetch - // given httpFetchParams, includeCredentials, and isNewConnectionFetch. - const forwardResponse = await httpNetworkFetch( - httpFetchParams, - includeCredentials, - isNewConnectionFetch, - ); - - // 3. If httpRequest’s method is unsafe and forwardResponse’s status is - // in the range 200 to 399, inclusive, invalidate appropriate stored - // responses in httpCache, as per the "Invalidation" chapter of HTTP - // Caching, and set storedResponse to null. [HTTP-CACHING] - if ( - !safeMethodsSet.has(httpRequest.method) && - forwardResponse.status >= 200 && - forwardResponse.status <= 399 - ) { - // TODO: cache - } - - // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, - // then: - if (revalidatingFlag && forwardResponse.status === 304) { - // TODO: cache - } - - // 5. If response is null, then: - if (response == null) { - // 1. Set response to forwardResponse. - response = forwardResponse; - - // 2. Store httpRequest and forwardResponse in httpCache, as per the - // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] - // TODO: cache - } - } - - // 11. Set response’s URL list to a clone of httpRequest’s URL list. - response.urlList = [...httpRequest.urlList]; - - // 12. If httpRequest’s header list contains `Range`, then set response’s - // range-requested flag. - if (httpRequest.headersList.contains("range")) { - response.rangeRequested = true; - } - - // 13. Set response’s request-includes-credentials to includeCredentials. - response.requestIncludesCredentials = includeCredentials; - - // 14. If response’s status is 401, httpRequest’s response tainting is not - // "cors", includeCredentials is true, and request’s window is an environment - // settings object, then: - // TODO - - // 15. If response’s status is 407, then: - if (response.status === 407) { - // 1. If request’s window is "no-window", then return a network error. - if (request.window === "no-window") { - return makeNetworkError(); - } - - // 2. ??? - - // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams); - } - - // 4. Prompt the end user as appropriate in request’s window and store - // the result as a proxy-authentication entry. [HTTP-AUTH] - // TODO: Invoke some kind of callback? - - // 5. Set response to the result of running HTTP-network-or-cache fetch given - // fetchParams. - // TODO - return makeNetworkError("proxy authentication required"); - } - - // 16. If all of the following are true - if ( - // response’s status is 421 - response.status === 421 && - // isNewConnectionFetch is false - !isNewConnectionFetch && - // request’s body is null, or request’s body is non-null and request’s body’s source is non-null - (request.body == null || request.body.source != null) - ) { - // then: - - // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. - if (isCancelled(fetchParams)) { - return makeAppropriateNetworkError(fetchParams); - } - - // 2. Set response to the result of running HTTP-network-or-cache - // fetch given fetchParams, isAuthenticationFetch, and true. - - // TODO (spec): The spec doesn't specify this but we need to cancel - // the active response before we can start a new one. - // https://github.com/whatwg/fetch/issues/1293 - fetchParams.controller.connection.destroy(); - - response = await httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch, true); - } - - // 17. If isAuthenticationFetch is true, then create an authentication entry - if (isAuthenticationFetch) { - // TODO - } - - // 18. Return response. - return response; - } - - // https://fetch.spec.whatwg.org/#http-network-fetch - async function httpNetworkFetch( - fetchParams, - includeCredentials = false, - forceNewConnection = false, - ) { - assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed); - - fetchParams.controller.connection = { - abort: null, - destroyed: false, - destroy(err) { - if (!this.destroyed) { - this.destroyed = true; - this.abort?.(err ?? new DOMException("The operation was aborted.", "AbortError")); - } - }, - }; - - // 1. Let request be fetchParams’s request. - const request = fetchParams.request; - - // 2. Let response be null. - let response = null; - - // 3. Let timingInfo be fetchParams’s timing info. - const timingInfo = fetchParams.timingInfo; - - // 4. Let httpCache be the result of determining the HTTP cache partition, - // given request. - // TODO: cache - const httpCache = null; - - // 5. If httpCache is null, then set request’s cache mode to "no-store". - if (httpCache == null) { - request.cache = "no-store"; - } - - // 6. Let networkPartitionKey be the result of determining the network - // partition key given request. - // TODO - - // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise - // "no". - const newConnection = forceNewConnection ? "yes" : "no"; // eslint-disable-line no-unused-vars - - // 8. Switch on request’s mode: - if (request.mode === "websocket") { - // Let connection be the result of obtaining a WebSocket connection, - // given request’s current URL. - // TODO - } else { - // Let connection be the result of obtaining a connection, given - // networkPartitionKey, request’s current URL’s origin, - // includeCredentials, and forceNewConnection. - // TODO - } - - // 9. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. If connection is failure, then return a network error. - - // 2. Set timingInfo’s final connection timing info to the result of - // calling clamp and coarsen connection timing info with connection’s - // timing info, timingInfo’s post-redirect start time, and fetchParams’s - // cross-origin isolated capability. - - // 3. If connection is not an HTTP/2 connection, request’s body is non-null, - // and request’s body’s source is null, then append (`Transfer-Encoding`, - // `chunked`) to request’s header list. - - // 4. Set timingInfo’s final network-request start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated - // capability. - - // 5. Set response to the result of making an HTTP request over connection - // using request with the following caveats: - - // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] - // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] - - // - If request’s body is non-null, and request’s body’s source is null, - // then the user agent may have a buffer of up to 64 kibibytes and store - // a part of request’s body in that buffer. If the user agent reads from - // request’s body beyond that buffer’s size and the user agent needs to - // resend request, then instead return a network error. - - // - Set timingInfo’s final network-response start time to the coarsened - // shared current time given fetchParams’s cross-origin isolated capability, - // immediately after the user agent’s HTTP parser receives the first byte - // of the response (e.g., frame header bytes for HTTP/2 or response status - // line for HTTP/1.x). - - // - Wait until all the headers are transmitted. - - // - Any responses whose status is in the range 100 to 199, inclusive, - // and is not 101, are to be ignored, except for the purposes of setting - // timingInfo’s final network-response start time above. - - // - If request’s header list contains `Transfer-Encoding`/`chunked` and - // response is transferred via HTTP/1.0 or older, then return a network - // error. - - // - If the HTTP request results in a TLS client certificate dialog, then: - - // 1. If request’s window is an environment settings object, make the - // dialog available in request’s window. - - // 2. Otherwise, return a network error. - - // To transmit request’s body body, run these steps: - let requestBody = null; - // 1. If body is null and fetchParams’s process request end-of-body is - // non-null, then queue a fetch task given fetchParams’s process request - // end-of-body and fetchParams’s task destination. - if (request.body == null && fetchParams.processRequestEndOfBody) { - queueMicrotask(() => fetchParams.processRequestEndOfBody()); - } else if (request.body != null) { - // 2. Otherwise, if body is non-null: - - // 1. Let processBodyChunk given bytes be these steps: - const processBodyChunk = async function* (bytes) { - // 1. If the ongoing fetch is terminated, then abort these steps. - if (isCancelled(fetchParams)) { - return; - } - - // 2. Run this step in parallel: transmit bytes. - yield bytes; - - // 3. If fetchParams’s process request body is non-null, then run - // fetchParams’s process request body given bytes’s length. - fetchParams.processRequestBodyChunkLength?.(bytes.byteLength); - }; - - // 2. Let processEndOfBody be these steps: - const processEndOfBody = () => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return; - } - - // 2. If fetchParams’s process request end-of-body is non-null, - // then run fetchParams’s process request end-of-body. - if (fetchParams.processRequestEndOfBody) { - fetchParams.processRequestEndOfBody(); - } - }; - - // 3. Let processBodyError given e be these steps: - const processBodyError = (e) => { - // 1. If fetchParams is canceled, then abort these steps. - if (isCancelled(fetchParams)) { - return; - } - - // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. - if (e.name === "AbortError") { - fetchParams.controller.abort(); - } else { - fetchParams.controller.terminate(e); - } - }; - - // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, - // processBodyError, and fetchParams’s task destination. - requestBody = (async function* () { - try { - for await (const bytes of request.body.stream) { - yield* processBodyChunk(bytes); - } - processEndOfBody(); - } catch (err) { - processBodyError(err); - } - })(); - } - - try { - // socket is only provided for websockets - const { body, status, statusText, headersList, socket } = await dispatch({ - body: requestBody, - }); - - if (socket) { - response = makeResponse({ status, statusText, headersList, socket }); - } else { - const iterator = body[Symbol.asyncIterator](); - fetchParams.controller.next = () => iterator.next(); - - response = makeResponse({ status, statusText, headersList }); - } - } catch (err) { - // 10. If aborted, then: - if (err.name === "AbortError") { - // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. - fetchParams.controller.connection.destroy(); - - // 2. Return the appropriate network error for fetchParams. - return makeAppropriateNetworkError(fetchParams, err); - } - - return makeNetworkError(err); - } - - // 11. Let pullAlgorithm be an action that resumes the ongoing fetch - // if it is suspended. - const pullAlgorithm = () => { - fetchParams.controller.resume(); - }; - - // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s - // controller with reason, given reason. - const cancelAlgorithm = (reason) => { - fetchParams.controller.abort(reason); - }; - - // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by - // the user agent. - // TODO - - // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object - // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. - // TODO - - // 15. Let stream be a new ReadableStream. - // 16. Set up stream with pullAlgorithm set to pullAlgorithm, - // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to - // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - const stream = new ReadableStream( - { - async start(controller) { - fetchParams.controller.controller = controller; - }, - async pull(controller) { - await pullAlgorithm(controller); - }, - async cancel(reason) { - await cancelAlgorithm(reason); - }, - }, - { - highWaterMark: 0, - size() { - return 1; - }, - }, - ); - - // 17. Run these steps, but abort when the ongoing fetch is terminated: - - // 1. Set response’s body to a new body whose stream is stream. - response.body = { stream }; - - // 2. If response is not a network error and request’s cache mode is - // not "no-store", then update response in httpCache for request. - // TODO - - // 3. If includeCredentials is true and the user agent is not configured - // to block cookies for request (see section 7 of [COOKIES]), then run the - // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on - // the value of each header whose name is a byte-case-insensitive match for - // `Set-Cookie` in response’s header list, if any, and request’s current URL. - // TODO - - // 18. If aborted, then: - // TODO - - // 19. Run these steps in parallel: - - // 1. Run these steps, but abort when fetchParams is canceled: - fetchParams.controller.on("terminated", onAborted); - fetchParams.controller.resume = async () => { - // 1. While true - while (true) { - // 1-3. See onData... - - // 4. Set bytes to the result of handling content codings given - // codings and bytes. - let bytes; - let isFailure; - try { - const { done, value } = await fetchParams.controller.next(); - - if (isAborted(fetchParams)) { - break; - } - - bytes = done ? undefined : value; - } catch (err) { - if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { - // zlib doesn't like empty streams. - bytes = undefined; - } else { - bytes = err; - - // err may be propagated from the result of calling readablestream.cancel, - // which might not be an error. https://github.com/nodejs/undici/issues/2009 - isFailure = true; - } - } - - if (bytes === undefined) { - // 2. Otherwise, if the bytes transmission for response’s message - // body is done normally and stream is readable, then close - // stream, finalize response for fetchParams and response, and - // abort these in-parallel steps. - readableStreamClose(fetchParams.controller.controller); - - finalizeResponse(fetchParams, response); - - return; - } - - // 5. Increase timingInfo’s decoded body size by bytes’s length. - timingInfo.decodedBodySize += bytes?.byteLength ?? 0; - - // 6. If bytes is failure, then terminate fetchParams’s controller. - if (isFailure) { - fetchParams.controller.terminate(bytes); - return; - } - - // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes - // into stream. - fetchParams.controller.controller.enqueue(new Uint8Array(bytes)); - - // 8. If stream is errored, then terminate the ongoing fetch. - if (isErrored(stream)) { - fetchParams.controller.terminate(); - return; - } - - // 9. If stream doesn’t need more data ask the user agent to suspend - // the ongoing fetch. - if (!fetchParams.controller.controller.desiredSize) { - return; - } - } - }; - - // 2. If aborted, then: - function onAborted(reason) { - // 2. If fetchParams is aborted, then: - if (isAborted(fetchParams)) { - // 1. Set response’s aborted flag. - response.aborted = true; - - // 2. If stream is readable, then error stream with the result of - // deserialize a serialized abort reason given fetchParams’s - // controller’s serialized abort reason and an - // implementation-defined realm. - if (isReadable(stream)) { - fetchParams.controller.controller.error( - fetchParams.controller.serializedAbortReason, - ); - } - } else { - // 3. Otherwise, if stream is readable, error stream with a TypeError. - if (isReadable(stream)) { - fetchParams.controller.controller.error( - new TypeError("terminated", { - cause: isErrorLike(reason) ? reason : undefined, - }), - ); - } - } - - // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. - // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. - fetchParams.controller.connection.destroy(); - } - - // 20. Return response. - return response; - - async function dispatch({ body }) { - const url = requestCurrentURL(request); - /** @type {import('../..').Agent} */ - const agent = fetchParams.controller.dispatcher; - - return new Promise((resolve, reject) => - agent.dispatch( - { - path: url.pathname + url.search, - origin: url.origin, - method: request.method, - body: fetchParams.controller.dispatcher.isMockActive - ? request.body && (request.body.source || request.body.stream) - : body, - headers: request.headersList.entries, - maxRedirections: 0, - upgrade: request.mode === "websocket" ? "websocket" : undefined, - }, - { - body: null, - abort: null, - - onConnect(abort) { - // TODO (fix): Do we need connection here? - const { connection } = fetchParams.controller; - - if (connection.destroyed) { - abort(new DOMException("The operation was aborted.", "AbortError")); - } else { - fetchParams.controller.on("terminated", abort); - this.abort = connection.abort = abort; - } - }, - - onHeaders(status, headersList, resume, statusText) { - if (status < 200) { - return; - } - - let codings = []; - let location = ""; - - const headers = new Headers(); - - // For H2, the headers are a plain JS object - // We distinguish between them and iterate accordingly - if (Array.isArray(headersList)) { - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString("latin1"); - const val = headersList[n + 1].toString("latin1"); - if (key.toLowerCase() === "content-encoding") { - // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 - // "All content-coding values are case-insensitive..." - codings = val - .toLowerCase() - .split(",") - .map((x) => x.trim()); - } else if (key.toLowerCase() === "location") { - location = val; - } - - headers[kHeadersList].append(key, val); - } - } else { - const keys = Object.keys(headersList); - for (const key of keys) { - const val = headersList[key]; - if (key.toLowerCase() === "content-encoding") { - // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 - // "All content-coding values are case-insensitive..." - codings = val - .toLowerCase() - .split(",") - .map((x) => x.trim()) - .reverse(); - } else if (key.toLowerCase() === "location") { - location = val; - } - - headers[kHeadersList].append(key, val); - } - } - - this.body = new Readable({ read: resume }); - - const decoders = []; - - const willFollow = - request.redirect === "follow" && - location && - redirectStatusSet.has(status); - - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding - if ( - request.method !== "HEAD" && - request.method !== "CONNECT" && - !nullBodyStatus.includes(status) && - !willFollow - ) { - for (const coding of codings) { - // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 - if (coding === "x-gzip" || coding === "gzip") { - decoders.push( - zlib.createGunzip({ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH, - }), - ); - } else if (coding === "deflate") { - decoders.push(zlib.createInflate()); - } else if (coding === "br") { - decoders.push(zlib.createBrotliDecompress()); - } else { - decoders.length = 0; - break; - } - } - } - - resolve({ - status, - statusText, - headersList: headers[kHeadersList], - body: decoders.length - ? pipeline(this.body, ...decoders, () => {}) - : this.body.on("error", () => {}), - }); - - return true; - }, - - onData(chunk) { - if (fetchParams.controller.dump) { - return; - } - - // 1. If one or more bytes have been transmitted from response’s - // message body, then: - - // 1. Let bytes be the transmitted bytes. - const bytes = chunk; - - // 2. Let codings be the result of extracting header list values - // given `Content-Encoding` and response’s header list. - // See pullAlgorithm. - - // 3. Increase timingInfo’s encoded body size by bytes’s length. - timingInfo.encodedBodySize += bytes.byteLength; - - // 4. See pullAlgorithm... - - return this.body.push(bytes); - }, - - onComplete() { - if (this.abort) { - fetchParams.controller.off("terminated", this.abort); - } - - fetchParams.controller.ended = true; - - this.body.push(null); - }, - - onError(error) { - if (this.abort) { - fetchParams.controller.off("terminated", this.abort); - } - - this.body?.destroy(error); - - fetchParams.controller.terminate(error); - - reject(error); - }, - - onUpgrade(status, headersList, socket) { - if (status !== 101) { - return; - } - - const headers = new Headers(); - - for (let n = 0; n < headersList.length; n += 2) { - const key = headersList[n + 0].toString("latin1"); - const val = headersList[n + 1].toString("latin1"); - - headers[kHeadersList].append(key, val); - } - - resolve({ - status, - statusText: STATUS_CODES[status], - headersList: headers[kHeadersList], - socket, - }); - - return true; - }, - }, - ), - ); - } - } - - module.exports = { - fetch, - Fetch, - fetching, - finalizeAndReportTiming, - }; - - /***/ - }, - - /***/ 8359: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - /* globals AbortController */ - - const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(1472); - const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(554); - const { FinalizationRegistry } = __nccwpck_require__(6436)(); - const util = __nccwpck_require__(3983); - const { - isValidHTTPToken, - sameOrigin, - normalizeMethod, - makePolicyContainer, - normalizeMethodRecord, - } = __nccwpck_require__(2538); - const { - forbiddenMethodsSet, - corsSafeListedMethodsSet, - referrerPolicy, - requestRedirect, - requestMode, - requestCredentials, - requestCache, - requestDuplex, - } = __nccwpck_require__(1037); - const { kEnumerableProperty } = util; - const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(5861); - const { webidl } = __nccwpck_require__(1744); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { URLSerializer } = __nccwpck_require__(685); - const { kHeadersList, kConstruct } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = - __nccwpck_require__(2361); - - let TransformStream = globalThis.TransformStream; - - const kAbortController = Symbol("abortController"); - - const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { - signal.removeEventListener("abort", abort); - }); - - // https://fetch.spec.whatwg.org/#request-class - class Request { - // https://fetch.spec.whatwg.org/#dom-request - constructor(input, init = {}) { - if (input === kConstruct) { - return; - } - - webidl.argumentLengthCheck(arguments, 1, { header: "Request constructor" }); - - input = webidl.converters.RequestInfo(input); - init = webidl.converters.RequestInit(init); - - // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object - this[kRealm] = { - settingsObject: { - baseUrl: getGlobalOrigin(), - get origin() { - return this.baseUrl?.origin; - }, - policyContainer: makePolicyContainer(), - }, - }; - - // 1. Let request be null. - let request = null; - - // 2. Let fallbackMode be null. - let fallbackMode = null; - - // 3. Let baseURL be this’s relevant settings object’s API base URL. - const baseUrl = this[kRealm].settingsObject.baseUrl; - - // 4. Let signal be null. - let signal = null; - - // 5. If input is a string, then: - if (typeof input === "string") { - // 1. Let parsedURL be the result of parsing input with baseURL. - // 2. If parsedURL is failure, then throw a TypeError. - let parsedURL; - try { - parsedURL = new URL(input, baseUrl); - } catch (err) { - throw new TypeError("Failed to parse URL from " + input, { cause: err }); - } - - // 3. If parsedURL includes credentials, then throw a TypeError. - if (parsedURL.username || parsedURL.password) { - throw new TypeError( - "Request cannot be constructed from a URL that includes credentials: " + - input, - ); - } - - // 4. Set request to a new request whose URL is parsedURL. - request = makeRequest({ urlList: [parsedURL] }); - - // 5. Set fallbackMode to "cors". - fallbackMode = "cors"; - } else { - // 6. Otherwise: - - // 7. Assert: input is a Request object. - assert(input instanceof Request); - - // 8. Set request to input’s request. - request = input[kState]; - - // 9. Set signal to input’s signal. - signal = input[kSignal]; - } - - // 7. Let origin be this’s relevant settings object’s origin. - const origin = this[kRealm].settingsObject.origin; - - // 8. Let window be "client". - let window = "client"; - - // 9. If request’s window is an environment settings object and its origin - // is same origin with origin, then set window to request’s window. - if ( - request.window?.constructor?.name === "EnvironmentSettingsObject" && - sameOrigin(request.window, origin) - ) { - window = request.window; - } - - // 10. If init["window"] exists and is non-null, then throw a TypeError. - if (init.window != null) { - throw new TypeError(`'window' option '${window}' must be null`); - } - - // 11. If init["window"] exists, then set window to "no-window". - if ("window" in init) { - window = "no-window"; - } - - // 12. Set request to a new request with the following properties: - request = makeRequest({ - // URL request’s URL. - // undici implementation note: this is set as the first item in request's urlList in makeRequest - // method request’s method. - method: request.method, - // header list A copy of request’s header list. - // undici implementation note: headersList is cloned in makeRequest - headersList: request.headersList, - // unsafe-request flag Set. - unsafeRequest: request.unsafeRequest, - // client This’s relevant settings object. - client: this[kRealm].settingsObject, - // window window. - window, - // priority request’s priority. - priority: request.priority, - // origin request’s origin. The propagation of the origin is only significant for navigation requests - // being handled by a service worker. In this scenario a request can have an origin that is different - // from the current client. - origin: request.origin, - // referrer request’s referrer. - referrer: request.referrer, - // referrer policy request’s referrer policy. - referrerPolicy: request.referrerPolicy, - // mode request’s mode. - mode: request.mode, - // credentials mode request’s credentials mode. - credentials: request.credentials, - // cache mode request’s cache mode. - cache: request.cache, - // redirect mode request’s redirect mode. - redirect: request.redirect, - // integrity metadata request’s integrity metadata. - integrity: request.integrity, - // keepalive request’s keepalive. - keepalive: request.keepalive, - // reload-navigation flag request’s reload-navigation flag. - reloadNavigation: request.reloadNavigation, - // history-navigation flag request’s history-navigation flag. - historyNavigation: request.historyNavigation, - // URL list A clone of request’s URL list. - urlList: [...request.urlList], - }); - - const initHasKey = Object.keys(init).length !== 0; - - // 13. If init is not empty, then: - if (initHasKey) { - // 1. If request’s mode is "navigate", then set it to "same-origin". - if (request.mode === "navigate") { - request.mode = "same-origin"; - } - - // 2. Unset request’s reload-navigation flag. - request.reloadNavigation = false; - - // 3. Unset request’s history-navigation flag. - request.historyNavigation = false; - - // 4. Set request’s origin to "client". - request.origin = "client"; - - // 5. Set request’s referrer to "client" - request.referrer = "client"; - - // 6. Set request’s referrer policy to the empty string. - request.referrerPolicy = ""; - - // 7. Set request’s URL to request’s current URL. - request.url = request.urlList[request.urlList.length - 1]; - - // 8. Set request’s URL list to « request’s URL ». - request.urlList = [request.url]; - } - - // 14. If init["referrer"] exists, then: - if (init.referrer !== undefined) { - // 1. Let referrer be init["referrer"]. - const referrer = init.referrer; - - // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". - if (referrer === "") { - request.referrer = "no-referrer"; - } else { - // 1. Let parsedReferrer be the result of parsing referrer with - // baseURL. - // 2. If parsedReferrer is failure, then throw a TypeError. - let parsedReferrer; - try { - parsedReferrer = new URL(referrer, baseUrl); - } catch (err) { - throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { - cause: err, - }); - } - - // 3. If one of the following is true - // - parsedReferrer’s scheme is "about" and path is the string "client" - // - parsedReferrer’s origin is not same origin with origin - // then set request’s referrer to "client". - if ( - (parsedReferrer.protocol === "about:" && - parsedReferrer.hostname === "client") || - (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) - ) { - request.referrer = "client"; - } else { - // 4. Otherwise, set request’s referrer to parsedReferrer. - request.referrer = parsedReferrer; - } - } - } - - // 15. If init["referrerPolicy"] exists, then set request’s referrer policy - // to it. - if (init.referrerPolicy !== undefined) { - request.referrerPolicy = init.referrerPolicy; - } - - // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. - let mode; - if (init.mode !== undefined) { - mode = init.mode; - } else { - mode = fallbackMode; - } - - // 17. If mode is "navigate", then throw a TypeError. - if (mode === "navigate") { - throw webidl.errors.exception({ - header: "Request constructor", - message: "invalid request mode navigate.", - }); - } - - // 18. If mode is non-null, set request’s mode to mode. - if (mode != null) { - request.mode = mode; - } - - // 19. If init["credentials"] exists, then set request’s credentials mode - // to it. - if (init.credentials !== undefined) { - request.credentials = init.credentials; - } - - // 18. If init["cache"] exists, then set request’s cache mode to it. - if (init.cache !== undefined) { - request.cache = init.cache; - } - - // 21. If request’s cache mode is "only-if-cached" and request’s mode is - // not "same-origin", then throw a TypeError. - if (request.cache === "only-if-cached" && request.mode !== "same-origin") { - throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode"); - } - - // 22. If init["redirect"] exists, then set request’s redirect mode to it. - if (init.redirect !== undefined) { - request.redirect = init.redirect; - } - - // 23. If init["integrity"] exists, then set request’s integrity metadata to it. - if (init.integrity != null) { - request.integrity = String(init.integrity); - } - - // 24. If init["keepalive"] exists, then set request’s keepalive to it. - if (init.keepalive !== undefined) { - request.keepalive = Boolean(init.keepalive); - } - - // 25. If init["method"] exists, then: - if (init.method !== undefined) { - // 1. Let method be init["method"]. - let method = init.method; - - // 2. If method is not a method or method is a forbidden method, then - // throw a TypeError. - if (!isValidHTTPToken(method)) { - throw new TypeError(`'${method}' is not a valid HTTP method.`); - } - - if (forbiddenMethodsSet.has(method.toUpperCase())) { - throw new TypeError(`'${method}' HTTP method is unsupported.`); - } - - // 3. Normalize method. - method = normalizeMethodRecord[method] ?? normalizeMethod(method); - - // 4. Set request’s method to method. - request.method = method; - } - - // 26. If init["signal"] exists, then set signal to it. - if (init.signal !== undefined) { - signal = init.signal; - } - - // 27. Set this’s request to request. - this[kState] = request; - - // 28. Set this’s signal to a new AbortSignal object with this’s relevant - // Realm. - // TODO: could this be simplified with AbortSignal.any - // (https://dom.spec.whatwg.org/#dom-abortsignal-any) - const ac = new AbortController(); - this[kSignal] = ac.signal; - this[kSignal][kRealm] = this[kRealm]; - - // 29. If signal is not null, then make this’s signal follow signal. - if (signal != null) { - if ( - !signal || - typeof signal.aborted !== "boolean" || - typeof signal.addEventListener !== "function" - ) { - throw new TypeError( - "Failed to construct 'Request': member signal is not of type AbortSignal.", - ); - } - - if (signal.aborted) { - ac.abort(signal.reason); - } else { - // Keep a strong ref to ac while request object - // is alive. This is needed to prevent AbortController - // from being prematurely garbage collected. - // See, https://github.com/nodejs/undici/issues/1926. - this[kAbortController] = ac; - - const acRef = new WeakRef(ac); - const abort = function () { - const ac = acRef.deref(); - if (ac !== undefined) { - ac.abort(this.reason); - } - }; - - // Third-party AbortControllers may not work with these. - // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. - try { - // If the max amount of listeners is equal to the default, increase it - // This is only available in node >= v19.9.0 - if ( - typeof getMaxListeners === "function" && - getMaxListeners(signal) === defaultMaxListeners - ) { - setMaxListeners(100, signal); - } else if (getEventListeners(signal, "abort").length >= defaultMaxListeners) { - setMaxListeners(100, signal); - } - } catch {} - - util.addAbortListener(signal, abort); - requestFinalizer.register(ac, { signal, abort }); - } - } - - // 30. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is request’s header list and guard is - // "request". - this[kHeaders] = new Headers(kConstruct); - this[kHeaders][kHeadersList] = request.headersList; - this[kHeaders][kGuard] = "request"; - this[kHeaders][kRealm] = this[kRealm]; - - // 31. If this’s request’s mode is "no-cors", then: - if (mode === "no-cors") { - // 1. If this’s request’s method is not a CORS-safelisted method, - // then throw a TypeError. - if (!corsSafeListedMethodsSet.has(request.method)) { - throw new TypeError(`'${request.method} is unsupported in no-cors mode.`); - } - - // 2. Set this’s headers’s guard to "request-no-cors". - this[kHeaders][kGuard] = "request-no-cors"; - } - - // 32. If init is not empty, then: - if (initHasKey) { - /** @type {HeadersList} */ - const headersList = this[kHeaders][kHeadersList]; - // 1. Let headers be a copy of this’s headers and its associated header - // list. - // 2. If init["headers"] exists, then set headers to init["headers"]. - const headers = - init.headers !== undefined ? init.headers : new HeadersList(headersList); - - // 3. Empty this’s headers’s header list. - headersList.clear(); - - // 4. If headers is a Headers object, then for each header in its header - // list, append header’s name/header’s value to this’s headers. - if (headers instanceof HeadersList) { - for (const [key, val] of headers) { - headersList.append(key, val); - } - // Note: Copy the `set-cookie` meta-data. - headersList.cookies = headers.cookies; - } else { - // 5. Otherwise, fill this’s headers with headers. - fillHeaders(this[kHeaders], headers); - } - } - - // 33. Let inputBody be input’s request’s body if input is a Request - // object; otherwise null. - const inputBody = input instanceof Request ? input[kState].body : null; - - // 34. If either init["body"] exists and is non-null or inputBody is - // non-null, and request’s method is `GET` or `HEAD`, then throw a - // TypeError. - if ( - (init.body != null || inputBody != null) && - (request.method === "GET" || request.method === "HEAD") - ) { - throw new TypeError("Request with GET/HEAD method cannot have body."); - } - - // 35. Let initBody be null. - let initBody = null; - - // 36. If init["body"] exists and is non-null, then: - if (init.body != null) { - // 1. Let Content-Type be null. - // 2. Set initBody and Content-Type to the result of extracting - // init["body"], with keepalive set to request’s keepalive. - const [extractedBody, contentType] = extractBody(init.body, request.keepalive); - initBody = extractedBody; - - // 3, If Content-Type is non-null and this’s headers’s header list does - // not contain `Content-Type`, then append `Content-Type`/Content-Type to - // this’s headers. - if (contentType && !this[kHeaders][kHeadersList].contains("content-type")) { - this[kHeaders].append("content-type", contentType); - } - } - - // 37. Let inputOrInitBody be initBody if it is non-null; otherwise - // inputBody. - const inputOrInitBody = initBody ?? inputBody; - - // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is - // null, then: - if (inputOrInitBody != null && inputOrInitBody.source == null) { - // 1. If initBody is non-null and init["duplex"] does not exist, - // then throw a TypeError. - if (initBody != null && init.duplex == null) { - throw new TypeError( - "RequestInit: duplex option is required when sending a body.", - ); - } - - // 2. If this’s request’s mode is neither "same-origin" nor "cors", - // then throw a TypeError. - if (request.mode !== "same-origin" && request.mode !== "cors") { - throw new TypeError( - 'If request is made from ReadableStream, mode should be "same-origin" or "cors"', - ); - } - - // 3. Set this’s request’s use-CORS-preflight flag. - request.useCORSPreflightFlag = true; - } - - // 39. Let finalBody be inputOrInitBody. - let finalBody = inputOrInitBody; - - // 40. If initBody is null and inputBody is non-null, then: - if (initBody == null && inputBody != null) { - // 1. If input is unusable, then throw a TypeError. - if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { - throw new TypeError( - "Cannot construct a Request with a Request object that has already been used.", - ); - } - - // 2. Set finalBody to the result of creating a proxy for inputBody. - if (!TransformStream) { - TransformStream = __nccwpck_require__(5356).TransformStream; - } - - // https://streams.spec.whatwg.org/#readablestream-create-a-proxy - const identityTransform = new TransformStream(); - inputBody.stream.pipeThrough(identityTransform); - finalBody = { - source: inputBody.source, - length: inputBody.length, - stream: identityTransform.readable, - }; - } - - // 41. Set this’s request’s body to finalBody. - this[kState].body = finalBody; - } - - // Returns request’s HTTP method, which is "GET" by default. - get method() { - webidl.brandCheck(this, Request); - - // The method getter steps are to return this’s request’s method. - return this[kState].method; - } - - // Returns the URL of request as a string. - get url() { - webidl.brandCheck(this, Request); - - // The url getter steps are to return this’s request’s URL, serialized. - return URLSerializer(this[kState].url); - } - - // Returns a Headers object consisting of the headers associated with request. - // Note that headers added in the network layer by the user agent will not - // be accounted for in this object, e.g., the "Host" header. - get headers() { - webidl.brandCheck(this, Request); - - // The headers getter steps are to return this’s headers. - return this[kHeaders]; - } - - // Returns the kind of resource requested by request, e.g., "document" - // or "script". - get destination() { - webidl.brandCheck(this, Request); - - // The destination getter are to return this’s request’s destination. - return this[kState].destination; - } - - // Returns the referrer of request. Its value can be a same-origin URL if - // explicitly set in init, the empty string to indicate no referrer, and - // "about:client" when defaulting to the global’s default. This is used - // during fetching to determine the value of the `Referer` header of the - // request being made. - get referrer() { - webidl.brandCheck(this, Request); - - // 1. If this’s request’s referrer is "no-referrer", then return the - // empty string. - if (this[kState].referrer === "no-referrer") { - return ""; - } - - // 2. If this’s request’s referrer is "client", then return - // "about:client". - if (this[kState].referrer === "client") { - return "about:client"; - } - - // Return this’s request’s referrer, serialized. - return this[kState].referrer.toString(); - } - - // Returns the referrer policy associated with request. - // This is used during fetching to compute the value of the request’s - // referrer. - get referrerPolicy() { - webidl.brandCheck(this, Request); - - // The referrerPolicy getter steps are to return this’s request’s referrer policy. - return this[kState].referrerPolicy; - } - - // Returns the mode associated with request, which is a string indicating - // whether the request will use CORS, or will be restricted to same-origin - // URLs. - get mode() { - webidl.brandCheck(this, Request); - - // The mode getter steps are to return this’s request’s mode. - return this[kState].mode; - } - - // Returns the credentials mode associated with request, - // which is a string indicating whether credentials will be sent with the - // request always, never, or only when sent to a same-origin URL. - get credentials() { - // The credentials getter steps are to return this’s request’s credentials mode. - return this[kState].credentials; - } - - // Returns the cache mode associated with request, - // which is a string indicating how the request will - // interact with the browser’s cache when fetching. - get cache() { - webidl.brandCheck(this, Request); - - // The cache getter steps are to return this’s request’s cache mode. - return this[kState].cache; - } - - // Returns the redirect mode associated with request, - // which is a string indicating how redirects for the - // request will be handled during fetching. A request - // will follow redirects by default. - get redirect() { - webidl.brandCheck(this, Request); - - // The redirect getter steps are to return this’s request’s redirect mode. - return this[kState].redirect; - } - - // Returns request’s subresource integrity metadata, which is a - // cryptographic hash of the resource being fetched. Its value - // consists of multiple hashes separated by whitespace. [SRI] - get integrity() { - webidl.brandCheck(this, Request); - - // The integrity getter steps are to return this’s request’s integrity - // metadata. - return this[kState].integrity; - } - - // Returns a boolean indicating whether or not request can outlive the - // global in which it was created. - get keepalive() { - webidl.brandCheck(this, Request); - - // The keepalive getter steps are to return this’s request’s keepalive. - return this[kState].keepalive; - } - - // Returns a boolean indicating whether or not request is for a reload - // navigation. - get isReloadNavigation() { - webidl.brandCheck(this, Request); - - // The isReloadNavigation getter steps are to return true if this’s - // request’s reload-navigation flag is set; otherwise false. - return this[kState].reloadNavigation; - } - - // Returns a boolean indicating whether or not request is for a history - // navigation (a.k.a. back-foward navigation). - get isHistoryNavigation() { - webidl.brandCheck(this, Request); - - // The isHistoryNavigation getter steps are to return true if this’s request’s - // history-navigation flag is set; otherwise false. - return this[kState].historyNavigation; - } - - // Returns the signal associated with request, which is an AbortSignal - // object indicating whether or not request has been aborted, and its - // abort event handler. - get signal() { - webidl.brandCheck(this, Request); - - // The signal getter steps are to return this’s signal. - return this[kSignal]; - } - - get body() { - webidl.brandCheck(this, Request); - - return this[kState].body ? this[kState].body.stream : null; - } - - get bodyUsed() { - webidl.brandCheck(this, Request); - - return !!this[kState].body && util.isDisturbed(this[kState].body.stream); - } - - get duplex() { - webidl.brandCheck(this, Request); - - return "half"; - } - - // Returns a clone of request. - clone() { - webidl.brandCheck(this, Request); - - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || this.body?.locked) { - throw new TypeError("unusable"); - } - - // 2. Let clonedRequest be the result of cloning this’s request. - const clonedRequest = cloneRequest(this[kState]); - - // 3. Let clonedRequestObject be the result of creating a Request object, - // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. - const clonedRequestObject = new Request(kConstruct); - clonedRequestObject[kState] = clonedRequest; - clonedRequestObject[kRealm] = this[kRealm]; - clonedRequestObject[kHeaders] = new Headers(kConstruct); - clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList; - clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - - // 4. Make clonedRequestObject’s signal follow this’s signal. - const ac = new AbortController(); - if (this.signal.aborted) { - ac.abort(this.signal.reason); - } else { - util.addAbortListener(this.signal, () => { - ac.abort(this.signal.reason); - }); - } - clonedRequestObject[kSignal] = ac.signal; - - // 4. Return clonedRequestObject. - return clonedRequestObject; - } - } - - mixinBody(Request); - - function makeRequest(init) { - // https://fetch.spec.whatwg.org/#requests - const request = { - method: "GET", - localURLsOnly: false, - unsafeRequest: false, - body: null, - client: null, - reservedClient: null, - replacesClientId: "", - window: "client", - keepalive: false, - serviceWorkers: "all", - initiator: "", - destination: "", - priority: null, - origin: "client", - policyContainer: "client", - referrer: "client", - referrerPolicy: "", - mode: "no-cors", - useCORSPreflightFlag: false, - credentials: "same-origin", - useCredentials: false, - cache: "default", - redirect: "follow", - integrity: "", - cryptoGraphicsNonceMetadata: "", - parserMetadata: "", - reloadNavigation: false, - historyNavigation: false, - userActivation: false, - taintedOrigin: false, - redirectCount: 0, - responseTainting: "basic", - preventNoCacheCacheControlHeaderModification: false, - done: false, - timingAllowFailed: false, - ...init, - headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), - }; - request.url = request.urlList[0]; - return request; - } - - // https://fetch.spec.whatwg.org/#concept-request-clone - function cloneRequest(request) { - // To clone a request request, run these steps: - - // 1. Let newRequest be a copy of request, except for its body. - const newRequest = makeRequest({ ...request, body: null }); - - // 2. If request’s body is non-null, set newRequest’s body to the - // result of cloning request’s body. - if (request.body != null) { - newRequest.body = cloneBody(request.body); - } - - // 3. Return newRequest. - return newRequest; - } - - Object.defineProperties(Request.prototype, { - method: kEnumerableProperty, - url: kEnumerableProperty, - headers: kEnumerableProperty, - redirect: kEnumerableProperty, - clone: kEnumerableProperty, - signal: kEnumerableProperty, - duplex: kEnumerableProperty, - destination: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - isHistoryNavigation: kEnumerableProperty, - isReloadNavigation: kEnumerableProperty, - keepalive: kEnumerableProperty, - integrity: kEnumerableProperty, - cache: kEnumerableProperty, - credentials: kEnumerableProperty, - attribute: kEnumerableProperty, - referrerPolicy: kEnumerableProperty, - referrer: kEnumerableProperty, - mode: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "Request", - configurable: true, - }, - }); - - webidl.converters.Request = webidl.interfaceConverter(Request); - - // https://fetch.spec.whatwg.org/#requestinfo - webidl.converters.RequestInfo = function (V) { - if (typeof V === "string") { - return webidl.converters.USVString(V); - } - - if (V instanceof Request) { - return webidl.converters.Request(V); - } - - return webidl.converters.USVString(V); - }; - - webidl.converters.AbortSignal = webidl.interfaceConverter(AbortSignal); - - // https://fetch.spec.whatwg.org/#requestinit - webidl.converters.RequestInit = webidl.dictionaryConverter([ - { - key: "method", - converter: webidl.converters.ByteString, - }, - { - key: "headers", - converter: webidl.converters.HeadersInit, - }, - { - key: "body", - converter: webidl.nullableConverter(webidl.converters.BodyInit), - }, - { - key: "referrer", - converter: webidl.converters.USVString, - }, - { - key: "referrerPolicy", - converter: webidl.converters.DOMString, - // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy - allowedValues: referrerPolicy, - }, - { - key: "mode", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#concept-request-mode - allowedValues: requestMode, - }, - { - key: "credentials", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcredentials - allowedValues: requestCredentials, - }, - { - key: "cache", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestcache - allowedValues: requestCache, - }, - { - key: "redirect", - converter: webidl.converters.DOMString, - // https://fetch.spec.whatwg.org/#requestredirect - allowedValues: requestRedirect, - }, - { - key: "integrity", - converter: webidl.converters.DOMString, - }, - { - key: "keepalive", - converter: webidl.converters.boolean, - }, - { - key: "signal", - converter: webidl.nullableConverter((signal) => - webidl.converters.AbortSignal(signal, { strict: false }), - ), - }, - { - key: "window", - converter: webidl.converters.any, - }, - { - key: "duplex", - converter: webidl.converters.DOMString, - allowedValues: requestDuplex, - }, - ]); - - module.exports = { Request, makeRequest }; - - /***/ - }, - - /***/ 7823: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Headers, HeadersList, fill } = __nccwpck_require__(554); - const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(1472); - const util = __nccwpck_require__(3983); - const { kEnumerableProperty } = util; - const { - isValidReasonPhrase, - isCancelled, - isAborted, - isBlobLike, - serializeJavascriptValueToJSONString, - isErrorLike, - isomorphicEncode, - } = __nccwpck_require__(2538); - const { redirectStatusSet, nullBodyStatus, DOMException } = __nccwpck_require__(1037); - const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861); - const { webidl } = __nccwpck_require__(1744); - const { FormData } = __nccwpck_require__(2015); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { URLSerializer } = __nccwpck_require__(685); - const { kHeadersList, kConstruct } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { types } = __nccwpck_require__(3837); - - const ReadableStream = globalThis.ReadableStream || __nccwpck_require__(5356).ReadableStream; - const textEncoder = new TextEncoder("utf-8"); - - // https://fetch.spec.whatwg.org/#response-class - class Response { - // Creates network error Response. - static error() { - // TODO - const relevantRealm = { settingsObject: {} }; - - // The static error() method steps are to return the result of creating a - // Response object, given a new network error, "immutable", and this’s - // relevant Realm. - const responseObject = new Response(); - responseObject[kState] = makeNetworkError(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList; - responseObject[kHeaders][kGuard] = "immutable"; - responseObject[kHeaders][kRealm] = relevantRealm; - return responseObject; - } - - // https://fetch.spec.whatwg.org/#dom-response-json - static json(data, init = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "Response.json" }); - - if (init !== null) { - init = webidl.converters.ResponseInit(init); - } - - // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. - const bytes = textEncoder.encode(serializeJavascriptValueToJSONString(data)); - - // 2. Let body be the result of extracting bytes. - const body = extractBody(bytes); - - // 3. Let responseObject be the result of creating a Response object, given a new response, - // "response", and this’s relevant Realm. - const relevantRealm = { settingsObject: {} }; - const responseObject = new Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = "response"; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). - initializeResponse(responseObject, init, { body: body[0], type: "application/json" }); - - // 5. Return responseObject. - return responseObject; - } - - // Creates a redirect Response that redirects to url with status status. - static redirect(url, status = 302) { - const relevantRealm = { settingsObject: {} }; - - webidl.argumentLengthCheck(arguments, 1, { header: "Response.redirect" }); - - url = webidl.converters.USVString(url); - status = webidl.converters["unsigned short"](status); - - // 1. Let parsedURL be the result of parsing url with current settings - // object’s API base URL. - // 2. If parsedURL is failure, then throw a TypeError. - // TODO: base-URL? - let parsedURL; - try { - parsedURL = new URL(url, getGlobalOrigin()); - } catch (err) { - throw Object.assign(new TypeError("Failed to parse URL from " + url), { - cause: err, - }); - } - - // 3. If status is not a redirect status, then throw a RangeError. - if (!redirectStatusSet.has(status)) { - throw new RangeError("Invalid status code " + status); - } - - // 4. Let responseObject be the result of creating a Response object, - // given a new response, "immutable", and this’s relevant Realm. - const responseObject = new Response(); - responseObject[kRealm] = relevantRealm; - responseObject[kHeaders][kGuard] = "immutable"; - responseObject[kHeaders][kRealm] = relevantRealm; - - // 5. Set responseObject’s response’s status to status. - responseObject[kState].status = status; - - // 6. Let value be parsedURL, serialized and isomorphic encoded. - const value = isomorphicEncode(URLSerializer(parsedURL)); - - // 7. Append `Location`/value to responseObject’s response’s header list. - responseObject[kState].headersList.append("location", value); - - // 8. Return responseObject. - return responseObject; - } - - // https://fetch.spec.whatwg.org/#dom-response - constructor(body = null, init = {}) { - if (body !== null) { - body = webidl.converters.BodyInit(body); - } - - init = webidl.converters.ResponseInit(init); - - // TODO - this[kRealm] = { settingsObject: {} }; - - // 1. Set this’s response to a new response. - this[kState] = makeResponse({}); - - // 2. Set this’s headers to a new Headers object with this’s relevant - // Realm, whose header list is this’s response’s header list and guard - // is "response". - this[kHeaders] = new Headers(kConstruct); - this[kHeaders][kGuard] = "response"; - this[kHeaders][kHeadersList] = this[kState].headersList; - this[kHeaders][kRealm] = this[kRealm]; - - // 3. Let bodyWithType be null. - let bodyWithType = null; - - // 4. If body is non-null, then set bodyWithType to the result of extracting body. - if (body != null) { - const [extractedBody, type] = extractBody(body); - bodyWithType = { body: extractedBody, type }; - } - - // 5. Perform initialize a response given this, init, and bodyWithType. - initializeResponse(this, init, bodyWithType); - } - - // Returns response’s type, e.g., "cors". - get type() { - webidl.brandCheck(this, Response); - - // The type getter steps are to return this’s response’s type. - return this[kState].type; - } - - // Returns response’s URL, if it has one; otherwise the empty string. - get url() { - webidl.brandCheck(this, Response); - - const urlList = this[kState].urlList; - - // The url getter steps are to return the empty string if this’s - // response’s URL is null; otherwise this’s response’s URL, - // serialized with exclude fragment set to true. - const url = urlList[urlList.length - 1] ?? null; - - if (url === null) { - return ""; - } - - return URLSerializer(url, true); - } - - // Returns whether response was obtained through a redirect. - get redirected() { - webidl.brandCheck(this, Response); - - // The redirected getter steps are to return true if this’s response’s URL - // list has more than one item; otherwise false. - return this[kState].urlList.length > 1; - } - - // Returns response’s status. - get status() { - webidl.brandCheck(this, Response); - - // The status getter steps are to return this’s response’s status. - return this[kState].status; - } - - // Returns whether response’s status is an ok status. - get ok() { - webidl.brandCheck(this, Response); - - // The ok getter steps are to return true if this’s response’s status is an - // ok status; otherwise false. - return this[kState].status >= 200 && this[kState].status <= 299; - } - - // Returns response’s status message. - get statusText() { - webidl.brandCheck(this, Response); - - // The statusText getter steps are to return this’s response’s status - // message. - return this[kState].statusText; - } - - // Returns response’s headers as Headers. - get headers() { - webidl.brandCheck(this, Response); - - // The headers getter steps are to return this’s headers. - return this[kHeaders]; - } - - get body() { - webidl.brandCheck(this, Response); - - return this[kState].body ? this[kState].body.stream : null; - } - - get bodyUsed() { - webidl.brandCheck(this, Response); - - return !!this[kState].body && util.isDisturbed(this[kState].body.stream); - } - - // Returns a clone of response. - clone() { - webidl.brandCheck(this, Response); - - // 1. If this is unusable, then throw a TypeError. - if (this.bodyUsed || (this.body && this.body.locked)) { - throw webidl.errors.exception({ - header: "Response.clone", - message: "Body has already been consumed.", - }); - } - - // 2. Let clonedResponse be the result of cloning this’s response. - const clonedResponse = cloneResponse(this[kState]); - - // 3. Return the result of creating a Response object, given - // clonedResponse, this’s headers’s guard, and this’s relevant Realm. - const clonedResponseObject = new Response(); - clonedResponseObject[kState] = clonedResponse; - clonedResponseObject[kRealm] = this[kRealm]; - clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList; - clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]; - clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]; - - return clonedResponseObject; - } - } - - mixinBody(Response); - - Object.defineProperties(Response.prototype, { - type: kEnumerableProperty, - url: kEnumerableProperty, - status: kEnumerableProperty, - ok: kEnumerableProperty, - redirected: kEnumerableProperty, - statusText: kEnumerableProperty, - headers: kEnumerableProperty, - clone: kEnumerableProperty, - body: kEnumerableProperty, - bodyUsed: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "Response", - configurable: true, - }, - }); - - Object.defineProperties(Response, { - json: kEnumerableProperty, - redirect: kEnumerableProperty, - error: kEnumerableProperty, - }); - - // https://fetch.spec.whatwg.org/#concept-response-clone - function cloneResponse(response) { - // To clone a response response, run these steps: - - // 1. If response is a filtered response, then return a new identical - // filtered response whose internal response is a clone of response’s - // internal response. - if (response.internalResponse) { - return filterResponse(cloneResponse(response.internalResponse), response.type); - } - - // 2. Let newResponse be a copy of response, except for its body. - const newResponse = makeResponse({ ...response, body: null }); - - // 3. If response’s body is non-null, then set newResponse’s body to the - // result of cloning response’s body. - if (response.body != null) { - newResponse.body = cloneBody(response.body); - } - - // 4. Return newResponse. - return newResponse; - } - - function makeResponse(init) { - return { - aborted: false, - rangeRequested: false, - timingAllowPassed: false, - requestIncludesCredentials: false, - type: "default", - status: 200, - timingInfo: null, - cacheState: "", - statusText: "", - ...init, - headersList: init.headersList ? new HeadersList(init.headersList) : new HeadersList(), - urlList: init.urlList ? [...init.urlList] : [], - }; - } - - function makeNetworkError(reason) { - const isError = isErrorLike(reason); - return makeResponse({ - type: "error", - status: 0, - error: isError ? reason : new Error(reason ? String(reason) : reason), - aborted: reason && reason.name === "AbortError", - }); - } - - function makeFilteredResponse(response, state) { - state = { - internalResponse: response, - ...state, - }; - - return new Proxy(response, { - get(target, p) { - return p in state ? state[p] : target[p]; - }, - set(target, p, value) { - assert(!(p in state)); - target[p] = value; - return true; - }, - }); - } - - // https://fetch.spec.whatwg.org/#concept-filtered-response - function filterResponse(response, type) { - // Set response to the following filtered response with response as its - // internal response, depending on request’s response tainting: - if (type === "basic") { - // A basic filtered response is a filtered response whose type is "basic" - // and header list excludes any headers in internal response’s header list - // whose name is a forbidden response-header name. - - // Note: undici does not implement forbidden response-header names - return makeFilteredResponse(response, { - type: "basic", - headersList: response.headersList, - }); - } else if (type === "cors") { - // A CORS filtered response is a filtered response whose type is "cors" - // and header list excludes any headers in internal response’s header - // list whose name is not a CORS-safelisted response-header name, given - // internal response’s CORS-exposed header-name list. - - // Note: undici does not implement CORS-safelisted response-header names - return makeFilteredResponse(response, { - type: "cors", - headersList: response.headersList, - }); - } else if (type === "opaque") { - // An opaque filtered response is a filtered response whose type is - // "opaque", URL list is the empty list, status is 0, status message - // is the empty byte sequence, header list is empty, and body is null. - - return makeFilteredResponse(response, { - type: "opaque", - urlList: Object.freeze([]), - status: 0, - statusText: "", - body: null, - }); - } else if (type === "opaqueredirect") { - // An opaque-redirect filtered response is a filtered response whose type - // is "opaqueredirect", status is 0, status message is the empty byte - // sequence, header list is empty, and body is null. - - return makeFilteredResponse(response, { - type: "opaqueredirect", - status: 0, - statusText: "", - headersList: [], - body: null, - }); - } else { - assert(false); - } - } - - // https://fetch.spec.whatwg.org/#appropriate-network-error - function makeAppropriateNetworkError(fetchParams, err = null) { - // 1. Assert: fetchParams is canceled. - assert(isCancelled(fetchParams)); - - // 2. Return an aborted network error if fetchParams is aborted; - // otherwise return a network error. - return isAborted(fetchParams) - ? makeNetworkError( - Object.assign(new DOMException("The operation was aborted.", "AbortError"), { - cause: err, - }), - ) - : makeNetworkError( - Object.assign(new DOMException("Request was cancelled."), { cause: err }), - ); - } - - // https://whatpr.org/fetch/1392.html#initialize-a-response - function initializeResponse(response, init, body) { - // 1. If init["status"] is not in the range 200 to 599, inclusive, then - // throw a RangeError. - if (init.status !== null && (init.status < 200 || init.status > 599)) { - throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.'); - } - - // 2. If init["statusText"] does not match the reason-phrase token production, - // then throw a TypeError. - if ("statusText" in init && init.statusText != null) { - // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: - // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) - if (!isValidReasonPhrase(String(init.statusText))) { - throw new TypeError("Invalid statusText"); - } - } - - // 3. Set response’s response’s status to init["status"]. - if ("status" in init && init.status != null) { - response[kState].status = init.status; - } - - // 4. Set response’s response’s status message to init["statusText"]. - if ("statusText" in init && init.statusText != null) { - response[kState].statusText = init.statusText; - } - - // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. - if ("headers" in init && init.headers != null) { - fill(response[kHeaders], init.headers); - } - - // 6. If body was given, then: - if (body) { - // 1. If response's status is a null body status, then throw a TypeError. - if (nullBodyStatus.includes(response.status)) { - throw webidl.errors.exception({ - header: "Response constructor", - message: "Invalid response status code " + response.status, - }); - } - - // 2. Set response's body to body's body. - response[kState].body = body.body; - - // 3. If body's type is non-null and response's header list does not contain - // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. - if (body.type != null && !response[kState].headersList.contains("Content-Type")) { - response[kState].headersList.append("content-type", body.type); - } - } - } - - webidl.converters.ReadableStream = webidl.interfaceConverter(ReadableStream); - - webidl.converters.FormData = webidl.interfaceConverter(FormData); - - webidl.converters.URLSearchParams = webidl.interfaceConverter(URLSearchParams); - - // https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit - webidl.converters.XMLHttpRequestBodyInit = function (V) { - if (typeof V === "string") { - return webidl.converters.USVString(V); - } - - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - - if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { - return webidl.converters.BufferSource(V); - } - - if (util.isFormDataLike(V)) { - return webidl.converters.FormData(V, { strict: false }); - } - - if (V instanceof URLSearchParams) { - return webidl.converters.URLSearchParams(V); - } - - return webidl.converters.DOMString(V); - }; - - // https://fetch.spec.whatwg.org/#bodyinit - webidl.converters.BodyInit = function (V) { - if (V instanceof ReadableStream) { - return webidl.converters.ReadableStream(V); - } - - // Note: the spec doesn't include async iterables, - // this is an undici extension. - if (V?.[Symbol.asyncIterator]) { - return V; - } - - return webidl.converters.XMLHttpRequestBodyInit(V); - }; - - webidl.converters.ResponseInit = webidl.dictionaryConverter([ - { - key: "status", - converter: webidl.converters["unsigned short"], - defaultValue: 200, - }, - { - key: "statusText", - converter: webidl.converters.ByteString, - defaultValue: "", - }, - { - key: "headers", - converter: webidl.converters.HeadersInit, - }, - ]); - - module.exports = { - makeNetworkError, - makeResponse, - makeAppropriateNetworkError, - filterResponse, - Response, - cloneResponse, - }; - - /***/ - }, - - /***/ 5861: /***/ (module) => { - "use strict"; - - module.exports = { - kUrl: Symbol("url"), - kHeaders: Symbol("headers"), - kSignal: Symbol("signal"), - kState: Symbol("state"), - kGuard: Symbol("guard"), - kRealm: Symbol("realm"), - }; - - /***/ - }, - - /***/ 2538: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { - redirectStatusSet, - referrerPolicySet: referrerPolicyTokens, - badPortsSet, - } = __nccwpck_require__(1037); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { performance } = __nccwpck_require__(4074); - const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3983); - const assert = __nccwpck_require__(9491); - const { isUint8Array } = __nccwpck_require__(9830); - - // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable - /** @type {import('crypto')|undefined} */ - let crypto; - - try { - crypto = __nccwpck_require__(6113); - } catch {} - - function responseURL(response) { - // https://fetch.spec.whatwg.org/#responses - // A response has an associated URL. It is a pointer to the last URL - // in response’s URL list and null if response’s URL list is empty. - const urlList = response.urlList; - const length = urlList.length; - return length === 0 ? null : urlList[length - 1].toString(); - } - - // https://fetch.spec.whatwg.org/#concept-response-location-url - function responseLocationURL(response, requestFragment) { - // 1. If response’s status is not a redirect status, then return null. - if (!redirectStatusSet.has(response.status)) { - return null; - } - - // 2. Let location be the result of extracting header list values given - // `Location` and response’s header list. - let location = response.headersList.get("location"); - - // 3. If location is a header value, then set location to the result of - // parsing location with response’s URL. - if (location !== null && isValidHeaderValue(location)) { - location = new URL(location, responseURL(response)); - } - - // 4. If location is a URL whose fragment is null, then set location’s - // fragment to requestFragment. - if (location && !location.hash) { - location.hash = requestFragment; - } - - // 5. Return location. - return location; - } - - /** @returns {URL} */ - function requestCurrentURL(request) { - return request.urlList[request.urlList.length - 1]; - } - - function requestBadPort(request) { - // 1. Let url be request’s current URL. - const url = requestCurrentURL(request); - - // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, - // then return blocked. - if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { - return "blocked"; - } - - // 3. Return allowed. - return "allowed"; - } - - function isErrorLike(object) { - return ( - object instanceof Error || - object?.constructor?.name === "Error" || - object?.constructor?.name === "DOMException" - ); - } - - // Check whether |statusText| is a ByteString and - // matches the Reason-Phrase token production. - // RFC 2616: https://tools.ietf.org/html/rfc2616 - // RFC 7230: https://tools.ietf.org/html/rfc7230 - // "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" - // https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 - function isValidReasonPhrase(statusText) { - for (let i = 0; i < statusText.length; ++i) { - const c = statusText.charCodeAt(i); - if ( - !( - ( - c === 0x09 || // HTAB - (c >= 0x20 && c <= 0x7e) || // SP / VCHAR - (c >= 0x80 && c <= 0xff) - ) // obs-text - ) - ) { - return false; - } - } - return true; - } - - /** - * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 - * @param {number} c - */ - function isTokenCharCode(c) { - switch (c) { - case 0x22: - case 0x28: - case 0x29: - case 0x2c: - case 0x2f: - case 0x3a: - case 0x3b: - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: - case 0x40: - case 0x5b: - case 0x5c: - case 0x5d: - case 0x7b: - case 0x7d: - // DQUOTE and "(),/:;<=>?@[\]{}" - return false; - default: - // VCHAR %x21-7E - return c >= 0x21 && c <= 0x7e; - } - } - - /** - * @param {string} characters - */ - function isValidHTTPToken(characters) { - if (characters.length === 0) { - return false; - } - for (let i = 0; i < characters.length; ++i) { - if (!isTokenCharCode(characters.charCodeAt(i))) { - return false; - } - } - return true; - } - - /** - * @see https://fetch.spec.whatwg.org/#header-name - * @param {string} potentialValue - */ - function isValidHeaderName(potentialValue) { - return isValidHTTPToken(potentialValue); - } - - /** - * @see https://fetch.spec.whatwg.org/#header-value - * @param {string} potentialValue - */ - function isValidHeaderValue(potentialValue) { - // - Has no leading or trailing HTTP tab or space bytes. - // - Contains no 0x00 (NUL) or HTTP newline bytes. - if ( - potentialValue.startsWith("\t") || - potentialValue.startsWith(" ") || - potentialValue.endsWith("\t") || - potentialValue.endsWith(" ") - ) { - return false; - } - - if ( - potentialValue.includes("\0") || - potentialValue.includes("\r") || - potentialValue.includes("\n") - ) { - return false; - } - - return true; - } - - // https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect - function setRequestReferrerPolicyOnRedirect(request, actualResponse) { - // Given a request request and a response actualResponse, this algorithm - // updates request’s referrer policy according to the Referrer-Policy - // header (if any) in actualResponse. - - // 1. Let policy be the result of executing § 8.1 Parse a referrer policy - // from a Referrer-Policy header on actualResponse. - - // 8.1 Parse a referrer policy from a Referrer-Policy header - // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. - const { headersList } = actualResponse; - // 2. Let policy be the empty string. - // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. - // 4. Return policy. - const policyHeader = (headersList.get("referrer-policy") ?? "").split(","); - - // Note: As the referrer-policy can contain multiple policies - // separated by comma, we need to loop through all of them - // and pick the first valid one. - // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy - let policy = ""; - if (policyHeader.length > 0) { - // The right-most policy takes precedence. - // The left-most policy is the fallback. - for (let i = policyHeader.length; i !== 0; i--) { - const token = policyHeader[i - 1].trim(); - if (referrerPolicyTokens.has(token)) { - policy = token; - break; - } - } - } - - // 2. If policy is not the empty string, then set request’s referrer policy to policy. - if (policy !== "") { - request.referrerPolicy = policy; - } - } - - // https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check - function crossOriginResourcePolicyCheck() { - // TODO - return "allowed"; - } - - // https://fetch.spec.whatwg.org/#concept-cors-check - function corsCheck() { - // TODO - return "success"; - } - - // https://fetch.spec.whatwg.org/#concept-tao-check - function TAOCheck() { - // TODO - return "success"; - } - - function appendFetchMetadata(httpRequest) { - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header - // TODO - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header - - // 1. Assert: r’s url is a potentially trustworthy URL. - // TODO - - // 2. Let header be a Structured Header whose value is a token. - let header = null; - - // 3. Set header’s value to r’s mode. - header = httpRequest.mode; - - // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. - httpRequest.headersList.set("sec-fetch-mode", header); - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header - // TODO - - // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header - // TODO - } - - // https://fetch.spec.whatwg.org/#append-a-request-origin-header - function appendRequestOriginHeader(request) { - // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. - let serializedOrigin = request.origin; - - // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. - if (request.responseTainting === "cors" || request.mode === "websocket") { - if (serializedOrigin) { - request.headersList.append("origin", serializedOrigin); - } - - // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: - } else if (request.method !== "GET" && request.method !== "HEAD") { - // 1. Switch on request’s referrer policy: - switch (request.referrerPolicy) { - case "no-referrer": - // Set serializedOrigin to `null`. - serializedOrigin = null; - break; - case "no-referrer-when-downgrade": - case "strict-origin": - case "strict-origin-when-cross-origin": - // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. - if ( - request.origin && - urlHasHttpsScheme(request.origin) && - !urlHasHttpsScheme(requestCurrentURL(request)) - ) { - serializedOrigin = null; - } - break; - case "same-origin": - // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. - if (!sameOrigin(request, requestCurrentURL(request))) { - serializedOrigin = null; - } - break; - default: - // Do nothing. - } - - if (serializedOrigin) { - // 2. Append (`Origin`, serializedOrigin) to request’s header list. - request.headersList.append("origin", serializedOrigin); - } - } - } - - function coarsenedSharedCurrentTime(crossOriginIsolatedCapability) { - // TODO - return performance.now(); - } - - // https://fetch.spec.whatwg.org/#create-an-opaque-timing-info - function createOpaqueTimingInfo(timingInfo) { - return { - startTime: timingInfo.startTime ?? 0, - redirectStartTime: 0, - redirectEndTime: 0, - postRedirectStartTime: timingInfo.startTime ?? 0, - finalServiceWorkerStartTime: 0, - finalNetworkResponseStartTime: 0, - finalNetworkRequestStartTime: 0, - endTime: 0, - encodedBodySize: 0, - decodedBodySize: 0, - finalConnectionTimingInfo: null, - }; - } - - // https://html.spec.whatwg.org/multipage/origin.html#policy-container - function makePolicyContainer() { - // Note: the fetch spec doesn't make use of embedder policy or CSP list - return { - referrerPolicy: "strict-origin-when-cross-origin", - }; - } - - // https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container - function clonePolicyContainer(policyContainer) { - return { - referrerPolicy: policyContainer.referrerPolicy, - }; - } - - // https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer - function determineRequestsReferrer(request) { - // 1. Let policy be request's referrer policy. - const policy = request.referrerPolicy; - - // Note: policy cannot (shouldn't) be null or an empty string. - assert(policy); - - // 2. Let environment be request’s client. - - let referrerSource = null; - - // 3. Switch on request’s referrer: - if (request.referrer === "client") { - // Note: node isn't a browser and doesn't implement document/iframes, - // so we bypass this step and replace it with our own. - - const globalOrigin = getGlobalOrigin(); - - if (!globalOrigin || globalOrigin.origin === "null") { - return "no-referrer"; - } - - // note: we need to clone it as it's mutated - referrerSource = new URL(globalOrigin); - } else if (request.referrer instanceof URL) { - // Let referrerSource be request’s referrer. - referrerSource = request.referrer; - } - - // 4. Let request’s referrerURL be the result of stripping referrerSource for - // use as a referrer. - let referrerURL = stripURLForReferrer(referrerSource); - - // 5. Let referrerOrigin be the result of stripping referrerSource for use as - // a referrer, with the origin-only flag set to true. - const referrerOrigin = stripURLForReferrer(referrerSource, true); - - // 6. If the result of serializing referrerURL is a string whose length is - // greater than 4096, set referrerURL to referrerOrigin. - if (referrerURL.toString().length > 4096) { - referrerURL = referrerOrigin; - } - - const areSameOrigin = sameOrigin(request, referrerURL); - const isNonPotentiallyTrustWorthy = - isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(request.url); - - // 8. Execute the switch statements corresponding to the value of policy: - switch (policy) { - case "origin": - return referrerOrigin != null - ? referrerOrigin - : stripURLForReferrer(referrerSource, true); - case "unsafe-url": - return referrerURL; - case "same-origin": - return areSameOrigin ? referrerOrigin : "no-referrer"; - case "origin-when-cross-origin": - return areSameOrigin ? referrerURL : referrerOrigin; - case "strict-origin-when-cross-origin": { - const currentURL = requestCurrentURL(request); - - // 1. If the origin of referrerURL and the origin of request’s current - // URL are the same, then return referrerURL. - if (sameOrigin(referrerURL, currentURL)) { - return referrerURL; - } - - // 2. If referrerURL is a potentially trustworthy URL and request’s - // current URL is not a potentially trustworthy URL, then return no - // referrer. - if ( - isURLPotentiallyTrustworthy(referrerURL) && - !isURLPotentiallyTrustworthy(currentURL) - ) { - return "no-referrer"; - } - - // 3. Return referrerOrigin. - return referrerOrigin; - } - case "strict-origin": // eslint-disable-line - /** - * 1. If referrerURL is a potentially trustworthy URL and - * request’s current URL is not a potentially trustworthy URL, - * then return no referrer. - * 2. Return referrerOrigin - */ - case "no-referrer-when-downgrade": // eslint-disable-line - /** - * 1. If referrerURL is a potentially trustworthy URL and - * request’s current URL is not a potentially trustworthy URL, - * then return no referrer. - * 2. Return referrerOrigin - */ - - default: - // eslint-disable-line - return isNonPotentiallyTrustWorthy ? "no-referrer" : referrerOrigin; - } - } - - /** - * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url - * @param {URL} url - * @param {boolean|undefined} originOnly - */ - function stripURLForReferrer(url, originOnly) { - // 1. Assert: url is a URL. - assert(url instanceof URL); - - // 2. If url’s scheme is a local scheme, then return no referrer. - if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") { - return "no-referrer"; - } - - // 3. Set url’s username to the empty string. - url.username = ""; - - // 4. Set url’s password to the empty string. - url.password = ""; - - // 5. Set url’s fragment to null. - url.hash = ""; - - // 6. If the origin-only flag is true, then: - if (originOnly) { - // 1. Set url’s path to « the empty string ». - url.pathname = ""; - - // 2. Set url’s query to null. - url.search = ""; - } - - // 7. Return url. - return url; - } - - function isURLPotentiallyTrustworthy(url) { - if (!(url instanceof URL)) { - return false; - } - - // If child of about, return true - if (url.href === "about:blank" || url.href === "about:srcdoc") { - return true; - } - - // If scheme is data, return true - if (url.protocol === "data:") return true; - - // If file, return true - if (url.protocol === "file:") return true; - - return isOriginPotentiallyTrustworthy(url.origin); - - function isOriginPotentiallyTrustworthy(origin) { - // If origin is explicitly null, return false - if (origin == null || origin === "null") return false; - - const originAsURL = new URL(origin); - - // If secure, return true - if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") { - return true; - } - - // If localhost or variants, return true - if ( - /^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || - originAsURL.hostname === "localhost" || - originAsURL.hostname.includes("localhost.") || - originAsURL.hostname.endsWith(".localhost") - ) { - return true; - } - - // If any other, return false - return false; - } - } - - /** - * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist - * @param {Uint8Array} bytes - * @param {string} metadataList - */ - function bytesMatch(bytes, metadataList) { - // If node is not built with OpenSSL support, we cannot check - // a request's integrity, so allow it by default (the spec will - // allow requests if an invalid hash is given, as precedence). - /* istanbul ignore if: only if node is built with --without-ssl */ - if (crypto === undefined) { - return true; - } - - // 1. Let parsedMetadata be the result of parsing metadataList. - const parsedMetadata = parseMetadata(metadataList); - - // 2. If parsedMetadata is no metadata, return true. - if (parsedMetadata === "no metadata") { - return true; - } - - // 3. If parsedMetadata is the empty set, return true. - if (parsedMetadata.length === 0) { - return true; - } - - // 4. Let metadata be the result of getting the strongest - // metadata from parsedMetadata. - const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)); - // get the strongest algorithm - const strongest = list[0].algo; - // get all entries that use the strongest algorithm; ignore weaker - const metadata = list.filter((item) => item.algo === strongest); - - // 5. For each item in metadata: - for (const item of metadata) { - // 1. Let algorithm be the alg component of item. - const algorithm = item.algo; - - // 2. Let expectedValue be the val component of item. - let expectedValue = item.hash; - - // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e - // "be liberal with padding". This is annoying, and it's not even in the spec. - - if (expectedValue.endsWith("==")) { - expectedValue = expectedValue.slice(0, -2); - } - - // 3. Let actualValue be the result of applying algorithm to bytes. - let actualValue = crypto.createHash(algorithm).update(bytes).digest("base64"); - - if (actualValue.endsWith("==")) { - actualValue = actualValue.slice(0, -2); - } - - // 4. If actualValue is a case-sensitive match for expectedValue, - // return true. - if (actualValue === expectedValue) { - return true; - } - - let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest("base64url"); - - if (actualBase64URL.endsWith("==")) { - actualBase64URL = actualBase64URL.slice(0, -2); - } - - if (actualBase64URL === expectedValue) { - return true; - } - } - - // 6. Return false. - return false; - } - - // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options - // https://www.w3.org/TR/CSP2/#source-list-syntax - // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 - const parseHashWithOptions = - /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i; - - /** - * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata - * @param {string} metadata - */ - function parseMetadata(metadata) { - // 1. Let result be the empty set. - /** @type {{ algo: string, hash: string }[]} */ - const result = []; - - // 2. Let empty be equal to true. - let empty = true; - - const supportedHashes = crypto.getHashes(); - - // 3. For each token returned by splitting metadata on spaces: - for (const token of metadata.split(" ")) { - // 1. Set empty to false. - empty = false; - - // 2. Parse token as a hash-with-options. - const parsedToken = parseHashWithOptions.exec(token); - - // 3. If token does not parse, continue to the next token. - if (parsedToken === null || parsedToken.groups === undefined) { - // Note: Chromium blocks the request at this point, but Firefox - // gives a warning that an invalid integrity was given. The - // correct behavior is to ignore these, and subsequently not - // check the integrity of the resource. - continue; - } - - // 4. Let algorithm be the hash-algo component of token. - const algorithm = parsedToken.groups.algo; - - // 5. If algorithm is a hash function recognized by the user - // agent, add the parsed token to result. - if (supportedHashes.includes(algorithm.toLowerCase())) { - result.push(parsedToken.groups); - } - } - - // 4. Return no metadata if empty is true, otherwise return result. - if (empty === true) { - return "no metadata"; - } - - return result; - } - - // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request - function tryUpgradeRequestToAPotentiallyTrustworthyURL(request) { - // TODO - } - - /** - * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} - * @param {URL} A - * @param {URL} B - */ - function sameOrigin(A, B) { - // 1. If A and B are the same opaque origin, then return true. - if (A.origin === B.origin && A.origin === "null") { - return true; - } - - // 2. If A and B are both tuple origins and their schemes, - // hosts, and port are identical, then return true. - if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { - return true; - } - - // 3. Return false. - return false; - } - - function createDeferredPromise() { - let res; - let rej; - const promise = new Promise((resolve, reject) => { - res = resolve; - rej = reject; - }); - - return { promise, resolve: res, reject: rej }; - } - - function isAborted(fetchParams) { - return fetchParams.controller.state === "aborted"; - } - - function isCancelled(fetchParams) { - return ( - fetchParams.controller.state === "aborted" || - fetchParams.controller.state === "terminated" - ); - } - - const normalizeMethodRecord = { - delete: "DELETE", - DELETE: "DELETE", - get: "GET", - GET: "GET", - head: "HEAD", - HEAD: "HEAD", - options: "OPTIONS", - OPTIONS: "OPTIONS", - post: "POST", - POST: "POST", - put: "PUT", - PUT: "PUT", - }; - - // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. - Object.setPrototypeOf(normalizeMethodRecord, null); - - /** - * @see https://fetch.spec.whatwg.org/#concept-method-normalize - * @param {string} method - */ - function normalizeMethod(method) { - return normalizeMethodRecord[method.toLowerCase()] ?? method; - } - - // https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string - function serializeJavascriptValueToJSONString(value) { - // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). - const result = JSON.stringify(value); - - // 2. If result is undefined, then throw a TypeError. - if (result === undefined) { - throw new TypeError("Value is not JSON serializable"); - } - - // 3. Assert: result is a string. - assert(typeof result === "string"); - - // 4. Return result. - return result; - } - - // https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object - const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); - - /** - * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object - * @param {() => unknown[]} iterator - * @param {string} name name of the instance - * @param {'key'|'value'|'key+value'} kind - */ - function makeIterator(iterator, name, kind) { - const object = { - index: 0, - kind, - target: iterator, - }; - - const i = { - next() { - // 1. Let interface be the interface for which the iterator prototype object exists. - - // 2. Let thisValue be the this value. - - // 3. Let object be ? ToObject(thisValue). - - // 4. If object is a platform object, then perform a security - // check, passing: - - // 5. If object is not a default iterator object for interface, - // then throw a TypeError. - if (Object.getPrototypeOf(this) !== i) { - throw new TypeError( - `'next' called on an object that does not implement interface ${name} Iterator.`, - ); - } - - // 6. Let index be object’s index. - // 7. Let kind be object’s kind. - // 8. Let values be object’s target's value pairs to iterate over. - const { index, kind, target } = object; - const values = target(); - - // 9. Let len be the length of values. - const len = values.length; - - // 10. If index is greater than or equal to len, then return - // CreateIterResultObject(undefined, true). - if (index >= len) { - return { value: undefined, done: true }; - } - - // 11. Let pair be the entry in values at index index. - const pair = values[index]; - - // 12. Set object’s index to index + 1. - object.index = index + 1; - - // 13. Return the iterator result for pair and kind. - return iteratorResult(pair, kind); - }, - // The class string of an iterator prototype object for a given interface is the - // result of concatenating the identifier of the interface and the string " Iterator". - [Symbol.toStringTag]: `${name} Iterator`, - }; - - // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. - Object.setPrototypeOf(i, esIteratorPrototype); - // esIteratorPrototype needs to be the prototype of i - // which is the prototype of an empty object. Yes, it's confusing. - return Object.setPrototypeOf({}, i); - } - - // https://webidl.spec.whatwg.org/#iterator-result - function iteratorResult(pair, kind) { - let result; - - // 1. Let result be a value determined by the value of kind: - switch (kind) { - case "key": { - // 1. Let idlKey be pair’s key. - // 2. Let key be the result of converting idlKey to an - // ECMAScript value. - // 3. result is key. - result = pair[0]; - break; - } - case "value": { - // 1. Let idlValue be pair’s value. - // 2. Let value be the result of converting idlValue to - // an ECMAScript value. - // 3. result is value. - result = pair[1]; - break; - } - case "key+value": { - // 1. Let idlKey be pair’s key. - // 2. Let idlValue be pair’s value. - // 3. Let key be the result of converting idlKey to an - // ECMAScript value. - // 4. Let value be the result of converting idlValue to - // an ECMAScript value. - // 5. Let array be ! ArrayCreate(2). - // 6. Call ! CreateDataProperty(array, "0", key). - // 7. Call ! CreateDataProperty(array, "1", value). - // 8. result is array. - result = pair; - break; - } - } - - // 2. Return CreateIterResultObject(result, false). - return { value: result, done: false }; - } - - /** - * @see https://fetch.spec.whatwg.org/#body-fully-read - */ - async function fullyReadBody(body, processBody, processBodyError) { - // 1. If taskDestination is null, then set taskDestination to - // the result of starting a new parallel queue. - - // 2. Let successSteps given a byte sequence bytes be to queue a - // fetch task to run processBody given bytes, with taskDestination. - const successSteps = processBody; - - // 3. Let errorSteps be to queue a fetch task to run processBodyError, - // with taskDestination. - const errorSteps = processBodyError; - - // 4. Let reader be the result of getting a reader for body’s stream. - // If that threw an exception, then run errorSteps with that - // exception and return. - let reader; - - try { - reader = body.stream.getReader(); - } catch (e) { - errorSteps(e); - return; - } - - // 5. Read all bytes from reader, given successSteps and errorSteps. - try { - const result = await readAllBytes(reader); - successSteps(result); - } catch (e) { - errorSteps(e); - } - } - - /** @type {ReadableStream} */ - let ReadableStream = globalThis.ReadableStream; - - function isReadableStreamLike(stream) { - if (!ReadableStream) { - ReadableStream = __nccwpck_require__(5356).ReadableStream; - } - - return ( - stream instanceof ReadableStream || - (stream[Symbol.toStringTag] === "ReadableStream" && typeof stream.tee === "function") - ); - } - - const MAXIMUM_ARGUMENT_LENGTH = 65535; - - /** - * @see https://infra.spec.whatwg.org/#isomorphic-decode - * @param {number[]|Uint8Array} input - */ - function isomorphicDecode(input) { - // 1. To isomorphic decode a byte sequence input, return a string whose code point - // length is equal to input’s length and whose code points have the same values - // as the values of input’s bytes, in the same order. - - if (input.length < MAXIMUM_ARGUMENT_LENGTH) { - return String.fromCharCode(...input); - } - - return input.reduce((previous, current) => previous + String.fromCharCode(current), ""); - } - - /** - * @param {ReadableStreamController} controller - */ - function readableStreamClose(controller) { - try { - controller.close(); - } catch (err) { - // TODO: add comment explaining why this error occurs. - if (!err.message.includes("Controller is already closed")) { - throw err; - } - } - } - - /** - * @see https://infra.spec.whatwg.org/#isomorphic-encode - * @param {string} input - */ - function isomorphicEncode(input) { - // 1. Assert: input contains no code points greater than U+00FF. - for (let i = 0; i < input.length; i++) { - assert(input.charCodeAt(i) <= 0xff); - } - - // 2. Return a byte sequence whose length is equal to input’s code - // point length and whose bytes have the same values as the - // values of input’s code points, in the same order - return input; - } - - /** - * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes - * @see https://streams.spec.whatwg.org/#read-loop - * @param {ReadableStreamDefaultReader} reader - */ - async function readAllBytes(reader) { - const bytes = []; - let byteLength = 0; - - while (true) { - const { done, value: chunk } = await reader.read(); - - if (done) { - // 1. Call successSteps with bytes. - return Buffer.concat(bytes, byteLength); - } - - // 1. If chunk is not a Uint8Array object, call failureSteps - // with a TypeError and abort these steps. - if (!isUint8Array(chunk)) { - throw new TypeError("Received non-Uint8Array chunk"); - } - - // 2. Append the bytes represented by chunk to bytes. - bytes.push(chunk); - byteLength += chunk.length; - - // 3. Read-loop given reader, bytes, successSteps, and failureSteps. - } - } - - /** - * @see https://fetch.spec.whatwg.org/#is-local - * @param {URL} url - */ - function urlIsLocal(url) { - assert("protocol" in url); // ensure it's a url object - - const protocol = url.protocol; - - return protocol === "about:" || protocol === "blob:" || protocol === "data:"; - } - - /** - * @param {string|URL} url - */ - function urlHasHttpsScheme(url) { - if (typeof url === "string") { - return url.startsWith("https:"); - } - - return url.protocol === "https:"; - } - - /** - * @see https://fetch.spec.whatwg.org/#http-scheme - * @param {URL} url - */ - function urlIsHttpHttpsScheme(url) { - assert("protocol" in url); // ensure it's a url object - - const protocol = url.protocol; - - return protocol === "http:" || protocol === "https:"; - } - - /** - * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. - */ - const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)); - - module.exports = { - isAborted, - isCancelled, - createDeferredPromise, - ReadableStreamFrom, - toUSVString, - tryUpgradeRequestToAPotentiallyTrustworthyURL, - coarsenedSharedCurrentTime, - determineRequestsReferrer, - makePolicyContainer, - clonePolicyContainer, - appendFetchMetadata, - appendRequestOriginHeader, - TAOCheck, - corsCheck, - crossOriginResourcePolicyCheck, - createOpaqueTimingInfo, - setRequestReferrerPolicyOnRedirect, - isValidHTTPToken, - requestBadPort, - requestCurrentURL, - responseURL, - responseLocationURL, - isBlobLike, - isURLPotentiallyTrustworthy, - isValidReasonPhrase, - sameOrigin, - normalizeMethod, - serializeJavascriptValueToJSONString, - makeIterator, - isValidHeaderName, - isValidHeaderValue, - hasOwn, - isErrorLike, - fullyReadBody, - bytesMatch, - isReadableStreamLike, - readableStreamClose, - isomorphicEncode, - isomorphicDecode, - urlIsLocal, - urlHasHttpsScheme, - urlIsHttpHttpsScheme, - readAllBytes, - normalizeMethodRecord, - }; - - /***/ - }, - - /***/ 1744: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { types } = __nccwpck_require__(3837); - const { hasOwn, toUSVString } = __nccwpck_require__(2538); - - /** @type {import('../../types/webidl').Webidl} */ - const webidl = {}; - webidl.converters = {}; - webidl.util = {}; - webidl.errors = {}; - - webidl.errors.exception = function (message) { - return new TypeError(`${message.header}: ${message.message}`); - }; - - webidl.errors.conversionFailed = function (context) { - const plural = context.types.length === 1 ? "" : " one of"; - const message = - `${context.argument} could not be converted to` + - `${plural}: ${context.types.join(", ")}.`; - - return webidl.errors.exception({ - header: context.prefix, - message, - }); - }; - - webidl.errors.invalidArgument = function (context) { - return webidl.errors.exception({ - header: context.prefix, - message: `"${context.value}" is an invalid ${context.type}.`, - }); - }; - - // https://webidl.spec.whatwg.org/#implements - webidl.brandCheck = function (V, I, opts = undefined) { - if (opts?.strict !== false && !(V instanceof I)) { - throw new TypeError("Illegal invocation"); - } else { - return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]; - } - }; - - webidl.argumentLengthCheck = function ({ length }, min, ctx) { - if (length < min) { - throw webidl.errors.exception({ - message: - `${min} argument${min !== 1 ? "s" : ""} required, ` + - `but${length ? " only" : ""} ${length} found.`, - ...ctx, - }); - } - }; - - webidl.illegalConstructor = function () { - throw webidl.errors.exception({ - header: "TypeError", - message: "Illegal constructor", - }); - }; - - // https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values - webidl.util.Type = function (V) { - switch (typeof V) { - case "undefined": - return "Undefined"; - case "boolean": - return "Boolean"; - case "string": - return "String"; - case "symbol": - return "Symbol"; - case "number": - return "Number"; - case "bigint": - return "BigInt"; - case "function": - case "object": { - if (V === null) { - return "Null"; - } - - return "Object"; - } - } - }; - - // https://webidl.spec.whatwg.org/#abstract-opdef-converttoint - webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { - let upperBound; - let lowerBound; - - // 1. If bitLength is 64, then: - if (bitLength === 64) { - // 1. Let upperBound be 2^53 − 1. - upperBound = Math.pow(2, 53) - 1; - - // 2. If signedness is "unsigned", then let lowerBound be 0. - if (signedness === "unsigned") { - lowerBound = 0; - } else { - // 3. Otherwise let lowerBound be −2^53 + 1. - lowerBound = Math.pow(-2, 53) + 1; - } - } else if (signedness === "unsigned") { - // 2. Otherwise, if signedness is "unsigned", then: - - // 1. Let lowerBound be 0. - lowerBound = 0; - - // 2. Let upperBound be 2^bitLength − 1. - upperBound = Math.pow(2, bitLength) - 1; - } else { - // 3. Otherwise: - - // 1. Let lowerBound be -2^bitLength − 1. - lowerBound = Math.pow(-2, bitLength) - 1; - - // 2. Let upperBound be 2^bitLength − 1 − 1. - upperBound = Math.pow(2, bitLength - 1) - 1; - } - - // 4. Let x be ? ToNumber(V). - let x = Number(V); - - // 5. If x is −0, then set x to +0. - if (x === 0) { - x = 0; - } - - // 6. If the conversion is to an IDL type associated - // with the [EnforceRange] extended attribute, then: - if (opts.enforceRange === true) { - // 1. If x is NaN, +∞, or −∞, then throw a TypeError. - if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) { - throw webidl.errors.exception({ - header: "Integer conversion", - message: `Could not convert ${V} to an integer.`, - }); - } - - // 2. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x); - - // 3. If x < lowerBound or x > upperBound, then - // throw a TypeError. - if (x < lowerBound || x > upperBound) { - throw webidl.errors.exception({ - header: "Integer conversion", - message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`, - }); - } - - // 4. Return x. - return x; - } - - // 7. If x is not NaN and the conversion is to an IDL - // type associated with the [Clamp] extended - // attribute, then: - if (!Number.isNaN(x) && opts.clamp === true) { - // 1. Set x to min(max(x, lowerBound), upperBound). - x = Math.min(Math.max(x, lowerBound), upperBound); - - // 2. Round x to the nearest integer, choosing the - // even integer if it lies halfway between two, - // and choosing +0 rather than −0. - if (Math.floor(x) % 2 === 0) { - x = Math.floor(x); - } else { - x = Math.ceil(x); - } - - // 3. Return x. - return x; - } - - // 8. If x is NaN, +0, +∞, or −∞, then return +0. - if ( - Number.isNaN(x) || - (x === 0 && Object.is(0, x)) || - x === Number.POSITIVE_INFINITY || - x === Number.NEGATIVE_INFINITY - ) { - return 0; - } - - // 9. Set x to IntegerPart(x). - x = webidl.util.IntegerPart(x); - - // 10. Set x to x modulo 2^bitLength. - x = x % Math.pow(2, bitLength); - - // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, - // then return x − 2^bitLength. - if (signedness === "signed" && x >= Math.pow(2, bitLength) - 1) { - return x - Math.pow(2, bitLength); - } - - // 12. Otherwise, return x. - return x; - }; - - // https://webidl.spec.whatwg.org/#abstract-opdef-integerpart - webidl.util.IntegerPart = function (n) { - // 1. Let r be floor(abs(n)). - const r = Math.floor(Math.abs(n)); - - // 2. If n < 0, then return -1 × r. - if (n < 0) { - return -1 * r; - } - - // 3. Otherwise, return r. - return r; - }; - - // https://webidl.spec.whatwg.org/#es-sequence - webidl.sequenceConverter = function (converter) { - return (V) => { - // 1. If Type(V) is not Object, throw a TypeError. - if (webidl.util.Type(V) !== "Object") { - throw webidl.errors.exception({ - header: "Sequence", - message: `Value of type ${webidl.util.Type(V)} is not an Object.`, - }); - } - - // 2. Let method be ? GetMethod(V, @@iterator). - /** @type {Generator} */ - const method = V?.[Symbol.iterator]?.(); - const seq = []; - - // 3. If method is undefined, throw a TypeError. - if (method === undefined || typeof method.next !== "function") { - throw webidl.errors.exception({ - header: "Sequence", - message: "Object is not an iterator.", - }); - } - - // https://webidl.spec.whatwg.org/#create-sequence-from-iterable - while (true) { - const { done, value } = method.next(); - - if (done) { - break; - } - - seq.push(converter(value)); - } - - return seq; - }; - }; - - // https://webidl.spec.whatwg.org/#es-to-record - webidl.recordConverter = function (keyConverter, valueConverter) { - return (O) => { - // 1. If Type(O) is not Object, throw a TypeError. - if (webidl.util.Type(O) !== "Object") { - throw webidl.errors.exception({ - header: "Record", - message: `Value of type ${webidl.util.Type(O)} is not an Object.`, - }); - } - - // 2. Let result be a new empty instance of record. - const result = {}; - - if (!types.isProxy(O)) { - // Object.keys only returns enumerable properties - const keys = Object.keys(O); - - for (const key of keys) { - // 1. Let typedKey be key converted to an IDL value of type K. - const typedKey = keyConverter(key); - - // 2. Let value be ? Get(O, key). - // 3. Let typedValue be value converted to an IDL value of type V. - const typedValue = valueConverter(O[key]); - - // 4. Set result[typedKey] to typedValue. - result[typedKey] = typedValue; - } - - // 5. Return result. - return result; - } - - // 3. Let keys be ? O.[[OwnPropertyKeys]](). - const keys = Reflect.ownKeys(O); - - // 4. For each key of keys. - for (const key of keys) { - // 1. Let desc be ? O.[[GetOwnProperty]](key). - const desc = Reflect.getOwnPropertyDescriptor(O, key); - - // 2. If desc is not undefined and desc.[[Enumerable]] is true: - if (desc?.enumerable) { - // 1. Let typedKey be key converted to an IDL value of type K. - const typedKey = keyConverter(key); - - // 2. Let value be ? Get(O, key). - // 3. Let typedValue be value converted to an IDL value of type V. - const typedValue = valueConverter(O[key]); - - // 4. Set result[typedKey] to typedValue. - result[typedKey] = typedValue; - } - } - - // 5. Return result. - return result; - }; - }; - - webidl.interfaceConverter = function (i) { - return (V, opts = {}) => { - if (opts.strict !== false && !(V instanceof i)) { - throw webidl.errors.exception({ - header: i.name, - message: `Expected ${V} to be an instance of ${i.name}.`, - }); - } - - return V; - }; - }; - - webidl.dictionaryConverter = function (converters) { - return (dictionary) => { - const type = webidl.util.Type(dictionary); - const dict = {}; - - if (type === "Null" || type === "Undefined") { - return dict; - } else if (type !== "Object") { - throw webidl.errors.exception({ - header: "Dictionary", - message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`, - }); - } - - for (const options of converters) { - const { key, defaultValue, required, converter } = options; - - if (required === true) { - if (!hasOwn(dictionary, key)) { - throw webidl.errors.exception({ - header: "Dictionary", - message: `Missing required key "${key}".`, - }); - } - } - - let value = dictionary[key]; - const hasDefault = hasOwn(options, "defaultValue"); - - // Only use defaultValue if value is undefined and - // a defaultValue options was provided. - if (hasDefault && value !== null) { - value = value ?? defaultValue; - } - - // A key can be optional and have no default value. - // When this happens, do not perform a conversion, - // and do not assign the key a value. - if (required || hasDefault || value !== undefined) { - value = converter(value); - - if (options.allowedValues && !options.allowedValues.includes(value)) { - throw webidl.errors.exception({ - header: "Dictionary", - message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join( - ", ", - )}.`, - }); - } - - dict[key] = value; - } - } - - return dict; - }; - }; - - webidl.nullableConverter = function (converter) { - return (V) => { - if (V === null) { - return V; - } - - return converter(V); - }; - }; - - // https://webidl.spec.whatwg.org/#es-DOMString - webidl.converters.DOMString = function (V, opts = {}) { - // 1. If V is null and the conversion is to an IDL type - // associated with the [LegacyNullToEmptyString] - // extended attribute, then return the DOMString value - // that represents the empty string. - if (V === null && opts.legacyNullToEmptyString) { - return ""; - } - - // 2. Let x be ? ToString(V). - if (typeof V === "symbol") { - throw new TypeError("Could not convert argument of type symbol to string."); - } - - // 3. Return the IDL DOMString value that represents the - // same sequence of code units as the one the - // ECMAScript String value x represents. - return String(V); - }; - - // https://webidl.spec.whatwg.org/#es-ByteString - webidl.converters.ByteString = function (V) { - // 1. Let x be ? ToString(V). - // Note: DOMString converter perform ? ToString(V) - const x = webidl.converters.DOMString(V); - - // 2. If the value of any element of x is greater than - // 255, then throw a TypeError. - for (let index = 0; index < x.length; index++) { - if (x.charCodeAt(index) > 255) { - throw new TypeError( - "Cannot convert argument to a ByteString because the character at " + - `index ${index} has a value of ${x.charCodeAt( - index, - )} which is greater than 255.`, - ); - } - } - - // 3. Return an IDL ByteString value whose length is the - // length of x, and where the value of each element is - // the value of the corresponding element of x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-USVString - webidl.converters.USVString = toUSVString; - - // https://webidl.spec.whatwg.org/#es-boolean - webidl.converters.boolean = function (V) { - // 1. Let x be the result of computing ToBoolean(V). - const x = Boolean(V); - - // 2. Return the IDL boolean value that is the one that represents - // the same truth value as the ECMAScript Boolean value x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-any - webidl.converters.any = function (V) { - return V; - }; - - // https://webidl.spec.whatwg.org/#es-long-long - webidl.converters["long long"] = function (V) { - // 1. Let x be ? ConvertToInt(V, 64, "signed"). - const x = webidl.util.ConvertToInt(V, 64, "signed"); - - // 2. Return the IDL long long value that represents - // the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-long-long - webidl.converters["unsigned long long"] = function (V) { - // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). - const x = webidl.util.ConvertToInt(V, 64, "unsigned"); - - // 2. Return the IDL unsigned long long value that - // represents the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-long - webidl.converters["unsigned long"] = function (V) { - // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). - const x = webidl.util.ConvertToInt(V, 32, "unsigned"); - - // 2. Return the IDL unsigned long value that - // represents the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#es-unsigned-short - webidl.converters["unsigned short"] = function (V, opts) { - // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). - const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts); - - // 2. Return the IDL unsigned short value that represents - // the same numeric value as x. - return x; - }; - - // https://webidl.spec.whatwg.org/#idl-ArrayBuffer - webidl.converters.ArrayBuffer = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have an - // [[ArrayBufferData]] internal slot, then throw a - // TypeError. - // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances - // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances - if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) { - throw webidl.errors.conversionFailed({ - prefix: `${V}`, - argument: `${V}`, - types: ["ArrayBuffer"], - }); - } - - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V) is true, then throw a - // TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { - throw webidl.errors.exception({ - header: "ArrayBuffer", - message: "SharedArrayBuffer is not allowed.", - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V) is true, then throw a - // TypeError. - // Note: resizable ArrayBuffers are currently a proposal. - - // 4. Return the IDL ArrayBuffer value that is a - // reference to the same object as V. - return V; - }; - - webidl.converters.TypedArray = function (V, T, opts = {}) { - // 1. Let T be the IDL type V is being converted to. - - // 2. If Type(V) is not Object, or V does not have a - // [[TypedArrayName]] internal slot with a value - // equal to T’s name, then throw a TypeError. - if ( - webidl.util.Type(V) !== "Object" || - !types.isTypedArray(V) || - V.constructor.name !== T.name - ) { - throw webidl.errors.conversionFailed({ - prefix: `${T.name}`, - argument: `${V}`, - types: [T.name], - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: "ArrayBuffer", - message: "SharedArrayBuffer is not allowed.", - }); - } - - // 4. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable array buffers are currently a proposal - - // 5. Return the IDL value of type T that is a reference - // to the same object as V. - return V; - }; - - webidl.converters.DataView = function (V, opts = {}) { - // 1. If Type(V) is not Object, or V does not have a - // [[DataView]] internal slot, then throw a TypeError. - if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) { - throw webidl.errors.exception({ - header: "DataView", - message: "Object is not a DataView.", - }); - } - - // 2. If the conversion is not to an IDL type associated - // with the [AllowShared] extended attribute, and - // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, - // then throw a TypeError. - if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { - throw webidl.errors.exception({ - header: "ArrayBuffer", - message: "SharedArrayBuffer is not allowed.", - }); - } - - // 3. If the conversion is not to an IDL type associated - // with the [AllowResizable] extended attribute, and - // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is - // true, then throw a TypeError. - // Note: resizable ArrayBuffers are currently a proposal - - // 4. Return the IDL DataView value that is a reference - // to the same object as V. - return V; - }; - - // https://webidl.spec.whatwg.org/#BufferSource - webidl.converters.BufferSource = function (V, opts = {}) { - if (types.isAnyArrayBuffer(V)) { - return webidl.converters.ArrayBuffer(V, opts); - } - - if (types.isTypedArray(V)) { - return webidl.converters.TypedArray(V, V.constructor); - } - - if (types.isDataView(V)) { - return webidl.converters.DataView(V, opts); - } - - throw new TypeError(`Could not convert ${V} to a BufferSource.`); - }; - - webidl.converters["sequence"] = webidl.sequenceConverter( - webidl.converters.ByteString, - ); - - webidl.converters["sequence>"] = webidl.sequenceConverter( - webidl.converters["sequence"], - ); - - webidl.converters["record"] = webidl.recordConverter( - webidl.converters.ByteString, - webidl.converters.ByteString, - ); - - module.exports = { - webidl, - }; - - /***/ - }, - - /***/ 4854: /***/ (module) => { - "use strict"; - - /** - * @see https://encoding.spec.whatwg.org/#concept-encoding-get - * @param {string|undefined} label - */ - function getEncoding(label) { - if (!label) { - return "failure"; - } - - // 1. Remove any leading and trailing ASCII whitespace from label. - // 2. If label is an ASCII case-insensitive match for any of the - // labels listed in the table below, then return the - // corresponding encoding; otherwise return failure. - switch (label.trim().toLowerCase()) { - case "unicode-1-1-utf-8": - case "unicode11utf8": - case "unicode20utf8": - case "utf-8": - case "utf8": - case "x-unicode20utf8": - return "UTF-8"; - case "866": - case "cp866": - case "csibm866": - case "ibm866": - return "IBM866"; - case "csisolatin2": - case "iso-8859-2": - case "iso-ir-101": - case "iso8859-2": - case "iso88592": - case "iso_8859-2": - case "iso_8859-2:1987": - case "l2": - case "latin2": - return "ISO-8859-2"; - case "csisolatin3": - case "iso-8859-3": - case "iso-ir-109": - case "iso8859-3": - case "iso88593": - case "iso_8859-3": - case "iso_8859-3:1988": - case "l3": - case "latin3": - return "ISO-8859-3"; - case "csisolatin4": - case "iso-8859-4": - case "iso-ir-110": - case "iso8859-4": - case "iso88594": - case "iso_8859-4": - case "iso_8859-4:1988": - case "l4": - case "latin4": - return "ISO-8859-4"; - case "csisolatincyrillic": - case "cyrillic": - case "iso-8859-5": - case "iso-ir-144": - case "iso8859-5": - case "iso88595": - case "iso_8859-5": - case "iso_8859-5:1988": - return "ISO-8859-5"; - case "arabic": - case "asmo-708": - case "csiso88596e": - case "csiso88596i": - case "csisolatinarabic": - case "ecma-114": - case "iso-8859-6": - case "iso-8859-6-e": - case "iso-8859-6-i": - case "iso-ir-127": - case "iso8859-6": - case "iso88596": - case "iso_8859-6": - case "iso_8859-6:1987": - return "ISO-8859-6"; - case "csisolatingreek": - case "ecma-118": - case "elot_928": - case "greek": - case "greek8": - case "iso-8859-7": - case "iso-ir-126": - case "iso8859-7": - case "iso88597": - case "iso_8859-7": - case "iso_8859-7:1987": - case "sun_eu_greek": - return "ISO-8859-7"; - case "csiso88598e": - case "csisolatinhebrew": - case "hebrew": - case "iso-8859-8": - case "iso-8859-8-e": - case "iso-ir-138": - case "iso8859-8": - case "iso88598": - case "iso_8859-8": - case "iso_8859-8:1988": - case "visual": - return "ISO-8859-8"; - case "csiso88598i": - case "iso-8859-8-i": - case "logical": - return "ISO-8859-8-I"; - case "csisolatin6": - case "iso-8859-10": - case "iso-ir-157": - case "iso8859-10": - case "iso885910": - case "l6": - case "latin6": - return "ISO-8859-10"; - case "iso-8859-13": - case "iso8859-13": - case "iso885913": - return "ISO-8859-13"; - case "iso-8859-14": - case "iso8859-14": - case "iso885914": - return "ISO-8859-14"; - case "csisolatin9": - case "iso-8859-15": - case "iso8859-15": - case "iso885915": - case "iso_8859-15": - case "l9": - return "ISO-8859-15"; - case "iso-8859-16": - return "ISO-8859-16"; - case "cskoi8r": - case "koi": - case "koi8": - case "koi8-r": - case "koi8_r": - return "KOI8-R"; - case "koi8-ru": - case "koi8-u": - return "KOI8-U"; - case "csmacintosh": - case "mac": - case "macintosh": - case "x-mac-roman": - return "macintosh"; - case "iso-8859-11": - case "iso8859-11": - case "iso885911": - case "tis-620": - case "windows-874": - return "windows-874"; - case "cp1250": - case "windows-1250": - case "x-cp1250": - return "windows-1250"; - case "cp1251": - case "windows-1251": - case "x-cp1251": - return "windows-1251"; - case "ansi_x3.4-1968": - case "ascii": - case "cp1252": - case "cp819": - case "csisolatin1": - case "ibm819": - case "iso-8859-1": - case "iso-ir-100": - case "iso8859-1": - case "iso88591": - case "iso_8859-1": - case "iso_8859-1:1987": - case "l1": - case "latin1": - case "us-ascii": - case "windows-1252": - case "x-cp1252": - return "windows-1252"; - case "cp1253": - case "windows-1253": - case "x-cp1253": - return "windows-1253"; - case "cp1254": - case "csisolatin5": - case "iso-8859-9": - case "iso-ir-148": - case "iso8859-9": - case "iso88599": - case "iso_8859-9": - case "iso_8859-9:1989": - case "l5": - case "latin5": - case "windows-1254": - case "x-cp1254": - return "windows-1254"; - case "cp1255": - case "windows-1255": - case "x-cp1255": - return "windows-1255"; - case "cp1256": - case "windows-1256": - case "x-cp1256": - return "windows-1256"; - case "cp1257": - case "windows-1257": - case "x-cp1257": - return "windows-1257"; - case "cp1258": - case "windows-1258": - case "x-cp1258": - return "windows-1258"; - case "x-mac-cyrillic": - case "x-mac-ukrainian": - return "x-mac-cyrillic"; - case "chinese": - case "csgb2312": - case "csiso58gb231280": - case "gb2312": - case "gb_2312": - case "gb_2312-80": - case "gbk": - case "iso-ir-58": - case "x-gbk": - return "GBK"; - case "gb18030": - return "gb18030"; - case "big5": - case "big5-hkscs": - case "cn-big5": - case "csbig5": - case "x-x-big5": - return "Big5"; - case "cseucpkdfmtjapanese": - case "euc-jp": - case "x-euc-jp": - return "EUC-JP"; - case "csiso2022jp": - case "iso-2022-jp": - return "ISO-2022-JP"; - case "csshiftjis": - case "ms932": - case "ms_kanji": - case "shift-jis": - case "shift_jis": - case "sjis": - case "windows-31j": - case "x-sjis": - return "Shift_JIS"; - case "cseuckr": - case "csksc56011987": - case "euc-kr": - case "iso-ir-149": - case "korean": - case "ks_c_5601-1987": - case "ks_c_5601-1989": - case "ksc5601": - case "ksc_5601": - case "windows-949": - return "EUC-KR"; - case "csiso2022kr": - case "hz-gb-2312": - case "iso-2022-cn": - case "iso-2022-cn-ext": - case "iso-2022-kr": - case "replacement": - return "replacement"; - case "unicodefffe": - case "utf-16be": - return "UTF-16BE"; - case "csunicode": - case "iso-10646-ucs-2": - case "ucs-2": - case "unicode": - case "unicodefeff": - case "utf-16": - case "utf-16le": - return "UTF-16LE"; - case "x-user-defined": - return "x-user-defined"; - default: - return "failure"; - } - } - - module.exports = { - getEncoding, - }; - - /***/ - }, - - /***/ 1446: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { staticPropertyDescriptors, readOperation, fireAProgressEvent } = - __nccwpck_require__(7530); - const { kState, kError, kResult, kEvents, kAborted } = __nccwpck_require__(9054); - const { webidl } = __nccwpck_require__(1744); - const { kEnumerableProperty } = __nccwpck_require__(3983); - - class FileReader extends EventTarget { - constructor() { - super(); - - this[kState] = "empty"; - this[kResult] = null; - this[kError] = null; - this[kEvents] = { - loadend: null, - error: null, - abort: null, - load: null, - progress: null, - loadstart: null, - }; - } - - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer - * @param {import('buffer').Blob} blob - */ - readAsArrayBuffer(blob) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsArrayBuffer" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - // The readAsArrayBuffer(blob) method, when invoked, - // must initiate a read operation for blob with ArrayBuffer. - readOperation(this, blob, "ArrayBuffer"); - } - - /** - * @see https://w3c.github.io/FileAPI/#readAsBinaryString - * @param {import('buffer').Blob} blob - */ - readAsBinaryString(blob) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsBinaryString" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - // The readAsBinaryString(blob) method, when invoked, - // must initiate a read operation for blob with BinaryString. - readOperation(this, blob, "BinaryString"); - } - - /** - * @see https://w3c.github.io/FileAPI/#readAsDataText - * @param {import('buffer').Blob} blob - * @param {string?} encoding - */ - readAsText(blob, encoding = undefined) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsText" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - if (encoding !== undefined) { - encoding = webidl.converters.DOMString(encoding); - } - - // The readAsText(blob, encoding) method, when invoked, - // must initiate a read operation for blob with Text and encoding. - readOperation(this, blob, "Text", encoding); - } - - /** - * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL - * @param {import('buffer').Blob} blob - */ - readAsDataURL(blob) { - webidl.brandCheck(this, FileReader); - - webidl.argumentLengthCheck(arguments, 1, { header: "FileReader.readAsDataURL" }); - - blob = webidl.converters.Blob(blob, { strict: false }); - - // The readAsDataURL(blob) method, when invoked, must - // initiate a read operation for blob with DataURL. - readOperation(this, blob, "DataURL"); - } - - /** - * @see https://w3c.github.io/FileAPI/#dfn-abort - */ - abort() { - // 1. If this's state is "empty" or if this's state is - // "done" set this's result to null and terminate - // this algorithm. - if (this[kState] === "empty" || this[kState] === "done") { - this[kResult] = null; - return; - } - - // 2. If this's state is "loading" set this's state to - // "done" and set this's result to null. - if (this[kState] === "loading") { - this[kState] = "done"; - this[kResult] = null; - } - - // 3. If there are any tasks from this on the file reading - // task source in an affiliated task queue, then remove - // those tasks from that task queue. - this[kAborted] = true; - - // 4. Terminate the algorithm for the read method being processed. - // TODO - - // 5. Fire a progress event called abort at this. - fireAProgressEvent("abort", this); - - // 6. If this's state is not "loading", fire a progress - // event called loadend at this. - if (this[kState] !== "loading") { - fireAProgressEvent("loadend", this); - } - } - - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate - */ - get readyState() { - webidl.brandCheck(this, FileReader); - - switch (this[kState]) { - case "empty": - return this.EMPTY; - case "loading": - return this.LOADING; - case "done": - return this.DONE; - } - } - - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-result - */ - get result() { - webidl.brandCheck(this, FileReader); - - // The result attribute’s getter, when invoked, must return - // this's result. - return this[kResult]; - } - - /** - * @see https://w3c.github.io/FileAPI/#dom-filereader-error - */ - get error() { - webidl.brandCheck(this, FileReader); - - // The error attribute’s getter, when invoked, must return - // this's error. - return this[kError]; - } - - get onloadend() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].loadend; - } - - set onloadend(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].loadend) { - this.removeEventListener("loadend", this[kEvents].loadend); - } - - if (typeof fn === "function") { - this[kEvents].loadend = fn; - this.addEventListener("loadend", fn); - } else { - this[kEvents].loadend = null; - } - } - - get onerror() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].error; - } - - set onerror(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].error) { - this.removeEventListener("error", this[kEvents].error); - } - - if (typeof fn === "function") { - this[kEvents].error = fn; - this.addEventListener("error", fn); - } else { - this[kEvents].error = null; - } - } - - get onloadstart() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].loadstart; - } - - set onloadstart(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].loadstart) { - this.removeEventListener("loadstart", this[kEvents].loadstart); - } - - if (typeof fn === "function") { - this[kEvents].loadstart = fn; - this.addEventListener("loadstart", fn); - } else { - this[kEvents].loadstart = null; - } - } - - get onprogress() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].progress; - } - - set onprogress(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].progress) { - this.removeEventListener("progress", this[kEvents].progress); - } - - if (typeof fn === "function") { - this[kEvents].progress = fn; - this.addEventListener("progress", fn); - } else { - this[kEvents].progress = null; - } - } - - get onload() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].load; - } - - set onload(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].load) { - this.removeEventListener("load", this[kEvents].load); - } - - if (typeof fn === "function") { - this[kEvents].load = fn; - this.addEventListener("load", fn); - } else { - this[kEvents].load = null; - } - } - - get onabort() { - webidl.brandCheck(this, FileReader); - - return this[kEvents].abort; - } - - set onabort(fn) { - webidl.brandCheck(this, FileReader); - - if (this[kEvents].abort) { - this.removeEventListener("abort", this[kEvents].abort); - } - - if (typeof fn === "function") { - this[kEvents].abort = fn; - this.addEventListener("abort", fn); - } else { - this[kEvents].abort = null; - } - } - } - - // https://w3c.github.io/FileAPI/#dom-filereader-empty - FileReader.EMPTY = FileReader.prototype.EMPTY = 0; - // https://w3c.github.io/FileAPI/#dom-filereader-loading - FileReader.LOADING = FileReader.prototype.LOADING = 1; - // https://w3c.github.io/FileAPI/#dom-filereader-done - FileReader.DONE = FileReader.prototype.DONE = 2; - - Object.defineProperties(FileReader.prototype, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors, - readAsArrayBuffer: kEnumerableProperty, - readAsBinaryString: kEnumerableProperty, - readAsText: kEnumerableProperty, - readAsDataURL: kEnumerableProperty, - abort: kEnumerableProperty, - readyState: kEnumerableProperty, - result: kEnumerableProperty, - error: kEnumerableProperty, - onloadstart: kEnumerableProperty, - onprogress: kEnumerableProperty, - onload: kEnumerableProperty, - onabort: kEnumerableProperty, - onerror: kEnumerableProperty, - onloadend: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "FileReader", - writable: false, - enumerable: false, - configurable: true, - }, - }); - - Object.defineProperties(FileReader, { - EMPTY: staticPropertyDescriptors, - LOADING: staticPropertyDescriptors, - DONE: staticPropertyDescriptors, - }); - - module.exports = { - FileReader, - }; - - /***/ - }, - - /***/ 5504: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { webidl } = __nccwpck_require__(1744); - - const kState = Symbol("ProgressEvent state"); - - /** - * @see https://xhr.spec.whatwg.org/#progressevent - */ - class ProgressEvent extends Event { - constructor(type, eventInitDict = {}) { - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}); - - super(type, eventInitDict); - - this[kState] = { - lengthComputable: eventInitDict.lengthComputable, - loaded: eventInitDict.loaded, - total: eventInitDict.total, - }; - } - - get lengthComputable() { - webidl.brandCheck(this, ProgressEvent); - - return this[kState].lengthComputable; - } - - get loaded() { - webidl.brandCheck(this, ProgressEvent); - - return this[kState].loaded; - } - - get total() { - webidl.brandCheck(this, ProgressEvent); - - return this[kState].total; - } - } - - webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ - { - key: "lengthComputable", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "loaded", - converter: webidl.converters["unsigned long long"], - defaultValue: 0, - }, - { - key: "total", - converter: webidl.converters["unsigned long long"], - defaultValue: 0, - }, - { - key: "bubbles", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "cancelable", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "composed", - converter: webidl.converters.boolean, - defaultValue: false, - }, - ]); - - module.exports = { - ProgressEvent, - }; - - /***/ - }, - - /***/ 9054: /***/ (module) => { - "use strict"; - - module.exports = { - kState: Symbol("FileReader state"), - kResult: Symbol("FileReader result"), - kError: Symbol("FileReader error"), - kLastProgressEventFired: Symbol("FileReader last progress event fired timestamp"), - kEvents: Symbol("FileReader events"), - kAborted: Symbol("FileReader aborted"), - }; - - /***/ - }, - - /***/ 7530: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kState, kError, kResult, kAborted, kLastProgressEventFired } = __nccwpck_require__(9054); - const { ProgressEvent } = __nccwpck_require__(5504); - const { getEncoding } = __nccwpck_require__(4854); - const { DOMException } = __nccwpck_require__(1037); - const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(685); - const { types } = __nccwpck_require__(3837); - const { StringDecoder } = __nccwpck_require__(1576); - const { btoa } = __nccwpck_require__(4300); - - /** @type {PropertyDescriptor} */ - const staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false, - }; - - /** - * @see https://w3c.github.io/FileAPI/#readOperation - * @param {import('./filereader').FileReader} fr - * @param {import('buffer').Blob} blob - * @param {string} type - * @param {string?} encodingName - */ - function readOperation(fr, blob, type, encodingName) { - // 1. If fr’s state is "loading", throw an InvalidStateError - // DOMException. - if (fr[kState] === "loading") { - throw new DOMException("Invalid state", "InvalidStateError"); - } - - // 2. Set fr’s state to "loading". - fr[kState] = "loading"; - - // 3. Set fr’s result to null. - fr[kResult] = null; - - // 4. Set fr’s error to null. - fr[kError] = null; - - // 5. Let stream be the result of calling get stream on blob. - /** @type {import('stream/web').ReadableStream} */ - const stream = blob.stream(); - - // 6. Let reader be the result of getting a reader from stream. - const reader = stream.getReader(); - - // 7. Let bytes be an empty byte sequence. - /** @type {Uint8Array[]} */ - const bytes = []; - - // 8. Let chunkPromise be the result of reading a chunk from - // stream with reader. - let chunkPromise = reader.read(); - - // 9. Let isFirstChunk be true. - let isFirstChunk = true; - - // 10. In parallel, while true: - // Note: "In parallel" just means non-blocking - // Note 2: readOperation itself cannot be async as double - // reading the body would then reject the promise, instead - // of throwing an error. - (async () => { - while (!fr[kAborted]) { - // 1. Wait for chunkPromise to be fulfilled or rejected. - try { - const { done, value } = await chunkPromise; - - // 2. If chunkPromise is fulfilled, and isFirstChunk is - // true, queue a task to fire a progress event called - // loadstart at fr. - if (isFirstChunk && !fr[kAborted]) { - queueMicrotask(() => { - fireAProgressEvent("loadstart", fr); - }); - } - - // 3. Set isFirstChunk to false. - isFirstChunk = false; - - // 4. If chunkPromise is fulfilled with an object whose - // done property is false and whose value property is - // a Uint8Array object, run these steps: - if (!done && types.isUint8Array(value)) { - // 1. Let bs be the byte sequence represented by the - // Uint8Array object. - - // 2. Append bs to bytes. - bytes.push(value); - - // 3. If roughly 50ms have passed since these steps - // were last invoked, queue a task to fire a - // progress event called progress at fr. - if ( - (fr[kLastProgressEventFired] === undefined || - Date.now() - fr[kLastProgressEventFired] >= 50) && - !fr[kAborted] - ) { - fr[kLastProgressEventFired] = Date.now(); - queueMicrotask(() => { - fireAProgressEvent("progress", fr); - }); - } - - // 4. Set chunkPromise to the result of reading a - // chunk from stream with reader. - chunkPromise = reader.read(); - } else if (done) { - // 5. Otherwise, if chunkPromise is fulfilled with an - // object whose done property is true, queue a task - // to run the following steps and abort this algorithm: - queueMicrotask(() => { - // 1. Set fr’s state to "done". - fr[kState] = "done"; - - // 2. Let result be the result of package data given - // bytes, type, blob’s type, and encodingName. - try { - const result = packageData(bytes, type, blob.type, encodingName); - - // 4. Else: - - if (fr[kAborted]) { - return; - } - - // 1. Set fr’s result to result. - fr[kResult] = result; - - // 2. Fire a progress event called load at the fr. - fireAProgressEvent("load", fr); - } catch (error) { - // 3. If package data threw an exception error: - - // 1. Set fr’s error to error. - fr[kError] = error; - - // 2. Fire a progress event called error at fr. - fireAProgressEvent("error", fr); - } - - // 5. If fr’s state is not "loading", fire a progress - // event called loadend at the fr. - if (fr[kState] !== "loading") { - fireAProgressEvent("loadend", fr); - } - }); - - break; - } - } catch (error) { - if (fr[kAborted]) { - return; - } - - // 6. Otherwise, if chunkPromise is rejected with an - // error error, queue a task to run the following - // steps and abort this algorithm: - queueMicrotask(() => { - // 1. Set fr’s state to "done". - fr[kState] = "done"; - - // 2. Set fr’s error to error. - fr[kError] = error; - - // 3. Fire a progress event called error at fr. - fireAProgressEvent("error", fr); - - // 4. If fr’s state is not "loading", fire a progress - // event called loadend at fr. - if (fr[kState] !== "loading") { - fireAProgressEvent("loadend", fr); - } - }); - - break; - } - } - })(); - } - - /** - * @see https://w3c.github.io/FileAPI/#fire-a-progress-event - * @see https://dom.spec.whatwg.org/#concept-event-fire - * @param {string} e The name of the event - * @param {import('./filereader').FileReader} reader - */ - function fireAProgressEvent(e, reader) { - // The progress event e does not bubble. e.bubbles must be false - // The progress event e is NOT cancelable. e.cancelable must be false - const event = new ProgressEvent(e, { - bubbles: false, - cancelable: false, - }); - - reader.dispatchEvent(event); - } - - /** - * @see https://w3c.github.io/FileAPI/#blob-package-data - * @param {Uint8Array[]} bytes - * @param {string} type - * @param {string?} mimeType - * @param {string?} encodingName - */ - function packageData(bytes, type, mimeType, encodingName) { - // 1. A Blob has an associated package data algorithm, given - // bytes, a type, a optional mimeType, and a optional - // encodingName, which switches on type and runs the - // associated steps: - - switch (type) { - case "DataURL": { - // 1. Return bytes as a DataURL [RFC2397] subject to - // the considerations below: - // * Use mimeType as part of the Data URL if it is - // available in keeping with the Data URL - // specification [RFC2397]. - // * If mimeType is not available return a Data URL - // without a media-type. [RFC2397]. - - // https://datatracker.ietf.org/doc/html/rfc2397#section-3 - // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data - // mediatype := [ type "/" subtype ] *( ";" parameter ) - // data := *urlchar - // parameter := attribute "=" value - let dataURL = "data:"; - - const parsed = parseMIMEType(mimeType || "application/octet-stream"); - - if (parsed !== "failure") { - dataURL += serializeAMimeType(parsed); - } - - dataURL += ";base64,"; - - const decoder = new StringDecoder("latin1"); - - for (const chunk of bytes) { - dataURL += btoa(decoder.write(chunk)); - } - - dataURL += btoa(decoder.end()); - - return dataURL; - } - case "Text": { - // 1. Let encoding be failure - let encoding = "failure"; - - // 2. If the encodingName is present, set encoding to the - // result of getting an encoding from encodingName. - if (encodingName) { - encoding = getEncoding(encodingName); - } - - // 3. If encoding is failure, and mimeType is present: - if (encoding === "failure" && mimeType) { - // 1. Let type be the result of parse a MIME type - // given mimeType. - const type = parseMIMEType(mimeType); - - // 2. If type is not failure, set encoding to the result - // of getting an encoding from type’s parameters["charset"]. - if (type !== "failure") { - encoding = getEncoding(type.parameters.get("charset")); - } - } - - // 4. If encoding is failure, then set encoding to UTF-8. - if (encoding === "failure") { - encoding = "UTF-8"; - } - - // 5. Decode bytes using fallback encoding encoding, and - // return the result. - return decode(bytes, encoding); - } - case "ArrayBuffer": { - // Return a new ArrayBuffer whose contents are bytes. - const sequence = combineByteSequences(bytes); - - return sequence.buffer; - } - case "BinaryString": { - // Return bytes as a binary string, in which every byte - // is represented by a code unit of equal value [0..255]. - let binaryString = ""; - - const decoder = new StringDecoder("latin1"); - - for (const chunk of bytes) { - binaryString += decoder.write(chunk); - } - - binaryString += decoder.end(); - - return binaryString; - } - } - } - - /** - * @see https://encoding.spec.whatwg.org/#decode - * @param {Uint8Array[]} ioQueue - * @param {string} encoding - */ - function decode(ioQueue, encoding) { - const bytes = combineByteSequences(ioQueue); - - // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. - const BOMEncoding = BOMSniffing(bytes); - - let slice = 0; - - // 2. If BOMEncoding is non-null: - if (BOMEncoding !== null) { - // 1. Set encoding to BOMEncoding. - encoding = BOMEncoding; - - // 2. Read three bytes from ioQueue, if BOMEncoding is - // UTF-8; otherwise read two bytes. - // (Do nothing with those bytes.) - slice = BOMEncoding === "UTF-8" ? 3 : 2; - } - - // 3. Process a queue with an instance of encoding’s - // decoder, ioQueue, output, and "replacement". - - // 4. Return output. - - const sliced = bytes.slice(slice); - return new TextDecoder(encoding).decode(sliced); - } - - /** - * @see https://encoding.spec.whatwg.org/#bom-sniff - * @param {Uint8Array} ioQueue - */ - function BOMSniffing(ioQueue) { - // 1. Let BOM be the result of peeking 3 bytes from ioQueue, - // converted to a byte sequence. - const [a, b, c] = ioQueue; - - // 2. For each of the rows in the table below, starting with - // the first one and going down, if BOM starts with the - // bytes given in the first column, then return the - // encoding given in the cell in the second column of that - // row. Otherwise, return null. - if (a === 0xef && b === 0xbb && c === 0xbf) { - return "UTF-8"; - } else if (a === 0xfe && b === 0xff) { - return "UTF-16BE"; - } else if (a === 0xff && b === 0xfe) { - return "UTF-16LE"; - } - - return null; - } - - /** - * @param {Uint8Array[]} sequences - */ - function combineByteSequences(sequences) { - const size = sequences.reduce((a, b) => { - return a + b.byteLength; - }, 0); - - let offset = 0; - - return sequences.reduce((a, b) => { - a.set(b, offset); - offset += b.byteLength; - return a; - }, new Uint8Array(size)); - } - - module.exports = { - staticPropertyDescriptors, - readOperation, - fireAProgressEvent, - }; - - /***/ - }, - - /***/ 1892: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - // We include a version number for the Dispatcher API. In case of breaking changes, - // this version number must be increased to avoid conflicts. - const globalDispatcher = Symbol.for("undici.globalDispatcher.1"); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const Agent = __nccwpck_require__(7890); - - if (getGlobalDispatcher() === undefined) { - setGlobalDispatcher(new Agent()); - } - - function setGlobalDispatcher(agent) { - if (!agent || typeof agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument agent must implement Agent"); - } - Object.defineProperty(globalThis, globalDispatcher, { - value: agent, - writable: true, - enumerable: false, - configurable: false, - }); - } - - function getGlobalDispatcher() { - return globalThis[globalDispatcher]; - } - - module.exports = { - setGlobalDispatcher, - getGlobalDispatcher, - }; - - /***/ - }, - - /***/ 6930: /***/ (module) => { - "use strict"; - - module.exports = class DecoratorHandler { - constructor(handler) { - this.handler = handler; - } - - onConnect(...args) { - return this.handler.onConnect(...args); - } - - onError(...args) { - return this.handler.onError(...args); - } - - onUpgrade(...args) { - return this.handler.onUpgrade(...args); - } - - onHeaders(...args) { - return this.handler.onHeaders(...args); - } - - onData(...args) { - return this.handler.onData(...args); - } - - onComplete(...args) { - return this.handler.onComplete(...args); - } - - onBodySent(...args) { - return this.handler.onBodySent(...args); - } - }; - - /***/ - }, - - /***/ 2860: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const util = __nccwpck_require__(3983); - const { kBodyUsed } = __nccwpck_require__(2785); - const assert = __nccwpck_require__(9491); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const EE = __nccwpck_require__(2361); - - const redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; - - const kBody = Symbol("body"); - - class BodyAsyncIterable { - constructor(body) { - this[kBody] = body; - this[kBodyUsed] = false; - } - - async *[Symbol.asyncIterator]() { - assert(!this[kBodyUsed], "disturbed"); - this[kBodyUsed] = true; - yield* this[kBody]; - } - } - - class RedirectHandler { - constructor(dispatch, maxRedirections, opts, handler) { - if ( - maxRedirections != null && - (!Number.isInteger(maxRedirections) || maxRedirections < 0) - ) { - throw new InvalidArgumentError("maxRedirections must be a positive number"); - } - - util.validateHandler(handler, opts.method, opts.upgrade); - - this.dispatch = dispatch; - this.location = null; - this.abort = null; - this.opts = { ...opts, maxRedirections: 0 }; // opts must be a copy - this.maxRedirections = maxRedirections; - this.handler = handler; - this.history = []; - - if (util.isStream(this.opts.body)) { - // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp - // so that it can be dispatched again? - // TODO (fix): Do we need 100-expect support to provide a way to do this properly? - if (util.bodyLength(this.opts.body) === 0) { - this.opts.body.on("data", function () { - assert(false); - }); - } - - if (typeof this.opts.body.readableDidRead !== "boolean") { - this.opts.body[kBodyUsed] = false; - EE.prototype.on.call(this.opts.body, "data", function () { - this[kBodyUsed] = true; - }); - } - } else if (this.opts.body && typeof this.opts.body.pipeTo === "function") { - // TODO (fix): We can't access ReadableStream internal state - // to determine whether or not it has been disturbed. This is just - // a workaround. - this.opts.body = new BodyAsyncIterable(this.opts.body); - } else if ( - this.opts.body && - typeof this.opts.body !== "string" && - !ArrayBuffer.isView(this.opts.body) && - util.isIterable(this.opts.body) - ) { - // TODO: Should we allow re-using iterable if !this.opts.idempotent - // or through some other flag? - this.opts.body = new BodyAsyncIterable(this.opts.body); - } - } - - onConnect(abort) { - this.abort = abort; - this.handler.onConnect(abort, { history: this.history }); - } - - onUpgrade(statusCode, headers, socket) { - this.handler.onUpgrade(statusCode, headers, socket); - } - - onError(error) { - this.handler.onError(error); - } - - onHeaders(statusCode, headers, resume, statusText) { - this.location = - this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) - ? null - : parseLocation(statusCode, headers); - - if (this.opts.origin) { - this.history.push(new URL(this.opts.path, this.opts.origin)); - } - - if (!this.location) { - return this.handler.onHeaders(statusCode, headers, resume, statusText); - } - - const { origin, pathname, search } = util.parseURL( - new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)), - ); - const path = search ? `${pathname}${search}` : pathname; - - // Remove headers referring to the original URL. - // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. - // https://tools.ietf.org/html/rfc7231#section-6.4 - this.opts.headers = cleanRequestHeaders( - this.opts.headers, - statusCode === 303, - this.opts.origin !== origin, - ); - this.opts.path = path; - this.opts.origin = origin; - this.opts.maxRedirections = 0; - this.opts.query = null; - - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - // In case of HTTP 303, always replace method to be either HEAD or GET - if (statusCode === 303 && this.opts.method !== "HEAD") { - this.opts.method = "GET"; - this.opts.body = null; - } - } - - onData(chunk) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 - - TLDR: undici always ignores 3xx response bodies. - - Redirection is used to serve the requested resource from another URL, so it is assumes that - no body is generated (and thus can be ignored). Even though generating a body is not prohibited. - - For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually - (which means it's optional and not mandated) contain just an hyperlink to the value of - the Location response header, so the body can be ignored safely. - - For status 300, which is "Multiple Choices", the spec mentions both generating a Location - response header AND a response body with the other possible location to follow. - Since the spec explicitily chooses not to specify a format for such body and leave it to - servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. - */ - } else { - return this.handler.onData(chunk); - } - } - - onComplete(trailers) { - if (this.location) { - /* - https://tools.ietf.org/html/rfc7231#section-6.4 - - TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections - and neither are useful if present. - - See comment on onData method above for more detailed informations. - */ - - this.location = null; - this.abort = null; - - this.dispatch(this.opts, this); - } else { - this.handler.onComplete(trailers); - } - } - - onBodySent(chunk) { - if (this.handler.onBodySent) { - this.handler.onBodySent(chunk); - } - } - } - - function parseLocation(statusCode, headers) { - if (redirectableStatusCodes.indexOf(statusCode) === -1) { - return null; - } - - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toString().toLowerCase() === "location") { - return headers[i + 1]; - } - } - } - - // https://tools.ietf.org/html/rfc7231#section-6.4.4 - function shouldRemoveHeader(header, removeContent, unknownOrigin) { - return ( - (header.length === 4 && header.toString().toLowerCase() === "host") || - (removeContent && header.toString().toLowerCase().indexOf("content-") === 0) || - (unknownOrigin && - header.length === 13 && - header.toString().toLowerCase() === "authorization") || - (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === "cookie") - ); - } - - // https://tools.ietf.org/html/rfc7231#section-6.4 - function cleanRequestHeaders(headers, removeContent, unknownOrigin) { - const ret = []; - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { - ret.push(headers[i], headers[i + 1]); - } - } - } else if (headers && typeof headers === "object") { - for (const key of Object.keys(headers)) { - if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { - ret.push(key, headers[key]); - } - } - } else { - assert(headers == null, "headers must be an object or an array"); - } - return ret; - } - - module.exports = RedirectHandler; - - /***/ - }, - - /***/ 2286: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const assert = __nccwpck_require__(9491); - - const { kRetryHandlerDefaultRetry } = __nccwpck_require__(2785); - const { RequestRetryError } = __nccwpck_require__(8045); - const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3983); - - function calculateRetryAfterHeader(retryAfter) { - const current = Date.now(); - const diff = new Date(retryAfter).getTime() - current; - - return diff; - } - - class RetryHandler { - constructor(opts, handlers) { - const { retryOptions, ...dispatchOpts } = opts; - const { - // Retry scoped - retry: retryFn, - maxRetries, - maxTimeout, - minTimeout, - timeoutFactor, - // Response scoped - methods, - errorCodes, - retryAfter, - statusCodes, - } = retryOptions ?? {}; - - this.dispatch = handlers.dispatch; - this.handler = handlers.handler; - this.opts = dispatchOpts; - this.abort = null; - this.aborted = false; - this.retryOpts = { - retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], - retryAfter: retryAfter ?? true, - maxTimeout: maxTimeout ?? 30 * 1000, // 30s, - timeout: minTimeout ?? 500, // .5s - timeoutFactor: timeoutFactor ?? 2, - maxRetries: maxRetries ?? 5, - // What errors we should retry - methods: methods ?? ["GET", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE"], - // Indicates which errors to retry - statusCodes: statusCodes ?? [500, 502, 503, 504, 429], - // List of errors to retry - errorCodes: errorCodes ?? [ - "ECONNRESET", - "ECONNREFUSED", - "ENOTFOUND", - "ENETDOWN", - "ENETUNREACH", - "EHOSTDOWN", - "EHOSTUNREACH", - "EPIPE", - ], - }; - - this.retryCount = 0; - this.start = 0; - this.end = null; - this.etag = null; - this.resume = null; - - // Handle possible onConnect duplication - this.handler.onConnect((reason) => { - this.aborted = true; - if (this.abort) { - this.abort(reason); - } else { - this.reason = reason; - } - }); - } - - onRequestSent() { - if (this.handler.onRequestSent) { - this.handler.onRequestSent(); - } - } - - onUpgrade(statusCode, headers, socket) { - if (this.handler.onUpgrade) { - this.handler.onUpgrade(statusCode, headers, socket); - } - } - - onConnect(abort) { - if (this.aborted) { - abort(this.reason); - } else { - this.abort = abort; - } - } - - onBodySent(chunk) { - if (this.handler.onBodySent) return this.handler.onBodySent(chunk); - } - - static [kRetryHandlerDefaultRetry](err, { state, opts }, cb) { - const { statusCode, code, headers } = err; - const { method, retryOptions } = opts; - const { - maxRetries, - timeout, - maxTimeout, - timeoutFactor, - statusCodes, - errorCodes, - methods, - } = retryOptions; - let { counter, currentTimeout } = state; - - currentTimeout = currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout; - - // Any code that is not a Undici's originated and allowed to retry - if ( - code && - code !== "UND_ERR_REQ_RETRY" && - code !== "UND_ERR_SOCKET" && - !errorCodes.includes(code) - ) { - cb(err); - return; - } - - // If a set of method are provided and the current method is not in the list - if (Array.isArray(methods) && !methods.includes(method)) { - cb(err); - return; - } - - // If a set of status code are provided and the current status code is not in the list - if ( - statusCode != null && - Array.isArray(statusCodes) && - !statusCodes.includes(statusCode) - ) { - cb(err); - return; - } - - // If we reached the max number of retries - if (counter > maxRetries) { - cb(err); - return; - } - - let retryAfterHeader = headers != null && headers["retry-after"]; - if (retryAfterHeader) { - retryAfterHeader = Number(retryAfterHeader); - retryAfterHeader = isNaN(retryAfterHeader) - ? calculateRetryAfterHeader(retryAfterHeader) - : retryAfterHeader * 1e3; // Retry-After is in seconds - } - - const retryTimeout = - retryAfterHeader > 0 - ? Math.min(retryAfterHeader, maxTimeout) - : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout); - - state.currentTimeout = retryTimeout; - - setTimeout(() => cb(null), retryTimeout); - } - - onHeaders(statusCode, rawHeaders, resume, statusMessage) { - const headers = parseHeaders(rawHeaders); - - this.retryCount += 1; - - if (statusCode >= 300) { - this.abort( - new RequestRetryError("Request failed", statusCode, { - headers, - count: this.retryCount, - }), - ); - return false; - } - - // Checkpoint for resume from where we left it - if (this.resume != null) { - this.resume = null; - - if (statusCode !== 206) { - return true; - } - - const contentRange = parseRangeHeader(headers["content-range"]); - // If no content range - if (!contentRange) { - this.abort( - new RequestRetryError("Content-Range mismatch", statusCode, { - headers, - count: this.retryCount, - }), - ); - return false; - } - - // Let's start with a weak etag check - if (this.etag != null && this.etag !== headers.etag) { - this.abort( - new RequestRetryError("ETag mismatch", statusCode, { - headers, - count: this.retryCount, - }), - ); - return false; - } - - const { start, size, end = size } = contentRange; - - assert(this.start === start, "content-range mismatch"); - assert(this.end == null || this.end === end, "content-range mismatch"); - - this.resume = resume; - return true; - } - - if (this.end == null) { - if (statusCode === 206) { - // First time we receive 206 - const range = parseRangeHeader(headers["content-range"]); - - if (range == null) { - return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); - } - - const { start, size, end = size } = range; - - assert( - start != null && Number.isFinite(start) && this.start !== start, - "content-range mismatch", - ); - assert(Number.isFinite(start)); - assert( - end != null && Number.isFinite(end) && this.end !== end, - "invalid content-length", - ); - - this.start = start; - this.end = end; - } - - // We make our best to checkpoint the body for further range headers - if (this.end == null) { - const contentLength = headers["content-length"]; - this.end = contentLength != null ? Number(contentLength) : null; - } - - assert(Number.isFinite(this.start)); - assert(this.end == null || Number.isFinite(this.end), "invalid content-length"); - - this.resume = resume; - this.etag = headers.etag != null ? headers.etag : null; - - return this.handler.onHeaders(statusCode, rawHeaders, resume, statusMessage); - } - - const err = new RequestRetryError("Request failed", statusCode, { - headers, - count: this.retryCount, - }); - - this.abort(err); - - return false; - } - - onData(chunk) { - this.start += chunk.length; - - return this.handler.onData(chunk); - } - - onComplete(rawTrailers) { - this.retryCount = 0; - return this.handler.onComplete(rawTrailers); - } - - onError(err) { - if (this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err); - } - - this.retryOpts.retry( - err, - { - state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, - opts: { retryOptions: this.retryOpts, ...this.opts }, - }, - onRetry.bind(this), - ); - - function onRetry(err) { - if (err != null || this.aborted || isDisturbed(this.opts.body)) { - return this.handler.onError(err); - } - - if (this.start !== 0) { - this.opts = { - ...this.opts, - headers: { - ...this.opts.headers, - range: `bytes=${this.start}-${this.end ?? ""}`, - }, - }; - } - - try { - this.dispatch(this.opts, this); - } catch (err) { - this.handler.onError(err); - } - } - } - } - - module.exports = RetryHandler; - - /***/ - }, - - /***/ 8861: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const RedirectHandler = __nccwpck_require__(2860); - - function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) { - return (dispatch) => { - return function Intercept(opts, handler) { - const { maxRedirections = defaultMaxRedirections } = opts; - - if (!maxRedirections) { - return dispatch(opts, handler); - } - - const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler); - opts = { ...opts, maxRedirections: 0 }; // Stop sub dispatcher from also redirecting. - return dispatch(opts, redirectHandler); - }; - }; - } - - module.exports = createRedirectInterceptor; - - /***/ - }, - - /***/ 953: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.SPECIAL_HEADERS = - exports.HEADER_STATE = - exports.MINOR = - exports.MAJOR = - exports.CONNECTION_TOKEN_CHARS = - exports.HEADER_CHARS = - exports.TOKEN = - exports.STRICT_TOKEN = - exports.HEX = - exports.URL_CHAR = - exports.STRICT_URL_CHAR = - exports.USERINFO_CHARS = - exports.MARK = - exports.ALPHANUM = - exports.NUM = - exports.HEX_MAP = - exports.NUM_MAP = - exports.ALPHA = - exports.FINISH = - exports.H_METHOD_MAP = - exports.METHOD_MAP = - exports.METHODS_RTSP = - exports.METHODS_ICE = - exports.METHODS_HTTP = - exports.METHODS = - exports.LENIENT_FLAGS = - exports.FLAGS = - exports.TYPE = - exports.ERROR = - void 0; - const utils_1 = __nccwpck_require__(1891); - // C headers - var ERROR; - (function (ERROR) { - ERROR[(ERROR["OK"] = 0)] = "OK"; - ERROR[(ERROR["INTERNAL"] = 1)] = "INTERNAL"; - ERROR[(ERROR["STRICT"] = 2)] = "STRICT"; - ERROR[(ERROR["LF_EXPECTED"] = 3)] = "LF_EXPECTED"; - ERROR[(ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4)] = "UNEXPECTED_CONTENT_LENGTH"; - ERROR[(ERROR["CLOSED_CONNECTION"] = 5)] = "CLOSED_CONNECTION"; - ERROR[(ERROR["INVALID_METHOD"] = 6)] = "INVALID_METHOD"; - ERROR[(ERROR["INVALID_URL"] = 7)] = "INVALID_URL"; - ERROR[(ERROR["INVALID_CONSTANT"] = 8)] = "INVALID_CONSTANT"; - ERROR[(ERROR["INVALID_VERSION"] = 9)] = "INVALID_VERSION"; - ERROR[(ERROR["INVALID_HEADER_TOKEN"] = 10)] = "INVALID_HEADER_TOKEN"; - ERROR[(ERROR["INVALID_CONTENT_LENGTH"] = 11)] = "INVALID_CONTENT_LENGTH"; - ERROR[(ERROR["INVALID_CHUNK_SIZE"] = 12)] = "INVALID_CHUNK_SIZE"; - ERROR[(ERROR["INVALID_STATUS"] = 13)] = "INVALID_STATUS"; - ERROR[(ERROR["INVALID_EOF_STATE"] = 14)] = "INVALID_EOF_STATE"; - ERROR[(ERROR["INVALID_TRANSFER_ENCODING"] = 15)] = "INVALID_TRANSFER_ENCODING"; - ERROR[(ERROR["CB_MESSAGE_BEGIN"] = 16)] = "CB_MESSAGE_BEGIN"; - ERROR[(ERROR["CB_HEADERS_COMPLETE"] = 17)] = "CB_HEADERS_COMPLETE"; - ERROR[(ERROR["CB_MESSAGE_COMPLETE"] = 18)] = "CB_MESSAGE_COMPLETE"; - ERROR[(ERROR["CB_CHUNK_HEADER"] = 19)] = "CB_CHUNK_HEADER"; - ERROR[(ERROR["CB_CHUNK_COMPLETE"] = 20)] = "CB_CHUNK_COMPLETE"; - ERROR[(ERROR["PAUSED"] = 21)] = "PAUSED"; - ERROR[(ERROR["PAUSED_UPGRADE"] = 22)] = "PAUSED_UPGRADE"; - ERROR[(ERROR["PAUSED_H2_UPGRADE"] = 23)] = "PAUSED_H2_UPGRADE"; - ERROR[(ERROR["USER"] = 24)] = "USER"; - })((ERROR = exports.ERROR || (exports.ERROR = {}))); - var TYPE; - (function (TYPE) { - TYPE[(TYPE["BOTH"] = 0)] = "BOTH"; - TYPE[(TYPE["REQUEST"] = 1)] = "REQUEST"; - TYPE[(TYPE["RESPONSE"] = 2)] = "RESPONSE"; - })((TYPE = exports.TYPE || (exports.TYPE = {}))); - var FLAGS; - (function (FLAGS) { - FLAGS[(FLAGS["CONNECTION_KEEP_ALIVE"] = 1)] = "CONNECTION_KEEP_ALIVE"; - FLAGS[(FLAGS["CONNECTION_CLOSE"] = 2)] = "CONNECTION_CLOSE"; - FLAGS[(FLAGS["CONNECTION_UPGRADE"] = 4)] = "CONNECTION_UPGRADE"; - FLAGS[(FLAGS["CHUNKED"] = 8)] = "CHUNKED"; - FLAGS[(FLAGS["UPGRADE"] = 16)] = "UPGRADE"; - FLAGS[(FLAGS["CONTENT_LENGTH"] = 32)] = "CONTENT_LENGTH"; - FLAGS[(FLAGS["SKIPBODY"] = 64)] = "SKIPBODY"; - FLAGS[(FLAGS["TRAILING"] = 128)] = "TRAILING"; - // 1 << 8 is unused - FLAGS[(FLAGS["TRANSFER_ENCODING"] = 512)] = "TRANSFER_ENCODING"; - })((FLAGS = exports.FLAGS || (exports.FLAGS = {}))); - var LENIENT_FLAGS; - (function (LENIENT_FLAGS) { - LENIENT_FLAGS[(LENIENT_FLAGS["HEADERS"] = 1)] = "HEADERS"; - LENIENT_FLAGS[(LENIENT_FLAGS["CHUNKED_LENGTH"] = 2)] = "CHUNKED_LENGTH"; - LENIENT_FLAGS[(LENIENT_FLAGS["KEEP_ALIVE"] = 4)] = "KEEP_ALIVE"; - })((LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}))); - var METHODS; - (function (METHODS) { - METHODS[(METHODS["DELETE"] = 0)] = "DELETE"; - METHODS[(METHODS["GET"] = 1)] = "GET"; - METHODS[(METHODS["HEAD"] = 2)] = "HEAD"; - METHODS[(METHODS["POST"] = 3)] = "POST"; - METHODS[(METHODS["PUT"] = 4)] = "PUT"; - /* pathological */ - METHODS[(METHODS["CONNECT"] = 5)] = "CONNECT"; - METHODS[(METHODS["OPTIONS"] = 6)] = "OPTIONS"; - METHODS[(METHODS["TRACE"] = 7)] = "TRACE"; - /* WebDAV */ - METHODS[(METHODS["COPY"] = 8)] = "COPY"; - METHODS[(METHODS["LOCK"] = 9)] = "LOCK"; - METHODS[(METHODS["MKCOL"] = 10)] = "MKCOL"; - METHODS[(METHODS["MOVE"] = 11)] = "MOVE"; - METHODS[(METHODS["PROPFIND"] = 12)] = "PROPFIND"; - METHODS[(METHODS["PROPPATCH"] = 13)] = "PROPPATCH"; - METHODS[(METHODS["SEARCH"] = 14)] = "SEARCH"; - METHODS[(METHODS["UNLOCK"] = 15)] = "UNLOCK"; - METHODS[(METHODS["BIND"] = 16)] = "BIND"; - METHODS[(METHODS["REBIND"] = 17)] = "REBIND"; - METHODS[(METHODS["UNBIND"] = 18)] = "UNBIND"; - METHODS[(METHODS["ACL"] = 19)] = "ACL"; - /* subversion */ - METHODS[(METHODS["REPORT"] = 20)] = "REPORT"; - METHODS[(METHODS["MKACTIVITY"] = 21)] = "MKACTIVITY"; - METHODS[(METHODS["CHECKOUT"] = 22)] = "CHECKOUT"; - METHODS[(METHODS["MERGE"] = 23)] = "MERGE"; - /* upnp */ - METHODS[(METHODS["M-SEARCH"] = 24)] = "M-SEARCH"; - METHODS[(METHODS["NOTIFY"] = 25)] = "NOTIFY"; - METHODS[(METHODS["SUBSCRIBE"] = 26)] = "SUBSCRIBE"; - METHODS[(METHODS["UNSUBSCRIBE"] = 27)] = "UNSUBSCRIBE"; - /* RFC-5789 */ - METHODS[(METHODS["PATCH"] = 28)] = "PATCH"; - METHODS[(METHODS["PURGE"] = 29)] = "PURGE"; - /* CalDAV */ - METHODS[(METHODS["MKCALENDAR"] = 30)] = "MKCALENDAR"; - /* RFC-2068, section 19.6.1.2 */ - METHODS[(METHODS["LINK"] = 31)] = "LINK"; - METHODS[(METHODS["UNLINK"] = 32)] = "UNLINK"; - /* icecast */ - METHODS[(METHODS["SOURCE"] = 33)] = "SOURCE"; - /* RFC-7540, section 11.6 */ - METHODS[(METHODS["PRI"] = 34)] = "PRI"; - /* RFC-2326 RTSP */ - METHODS[(METHODS["DESCRIBE"] = 35)] = "DESCRIBE"; - METHODS[(METHODS["ANNOUNCE"] = 36)] = "ANNOUNCE"; - METHODS[(METHODS["SETUP"] = 37)] = "SETUP"; - METHODS[(METHODS["PLAY"] = 38)] = "PLAY"; - METHODS[(METHODS["PAUSE"] = 39)] = "PAUSE"; - METHODS[(METHODS["TEARDOWN"] = 40)] = "TEARDOWN"; - METHODS[(METHODS["GET_PARAMETER"] = 41)] = "GET_PARAMETER"; - METHODS[(METHODS["SET_PARAMETER"] = 42)] = "SET_PARAMETER"; - METHODS[(METHODS["REDIRECT"] = 43)] = "REDIRECT"; - METHODS[(METHODS["RECORD"] = 44)] = "RECORD"; - /* RAOP */ - METHODS[(METHODS["FLUSH"] = 45)] = "FLUSH"; - })((METHODS = exports.METHODS || (exports.METHODS = {}))); - exports.METHODS_HTTP = [ - METHODS.DELETE, - METHODS.GET, - METHODS.HEAD, - METHODS.POST, - METHODS.PUT, - METHODS.CONNECT, - METHODS.OPTIONS, - METHODS.TRACE, - METHODS.COPY, - METHODS.LOCK, - METHODS.MKCOL, - METHODS.MOVE, - METHODS.PROPFIND, - METHODS.PROPPATCH, - METHODS.SEARCH, - METHODS.UNLOCK, - METHODS.BIND, - METHODS.REBIND, - METHODS.UNBIND, - METHODS.ACL, - METHODS.REPORT, - METHODS.MKACTIVITY, - METHODS.CHECKOUT, - METHODS.MERGE, - METHODS["M-SEARCH"], - METHODS.NOTIFY, - METHODS.SUBSCRIBE, - METHODS.UNSUBSCRIBE, - METHODS.PATCH, - METHODS.PURGE, - METHODS.MKCALENDAR, - METHODS.LINK, - METHODS.UNLINK, - METHODS.PRI, - // TODO(indutny): should we allow it with HTTP? - METHODS.SOURCE, - ]; - exports.METHODS_ICE = [METHODS.SOURCE]; - exports.METHODS_RTSP = [ - METHODS.OPTIONS, - METHODS.DESCRIBE, - METHODS.ANNOUNCE, - METHODS.SETUP, - METHODS.PLAY, - METHODS.PAUSE, - METHODS.TEARDOWN, - METHODS.GET_PARAMETER, - METHODS.SET_PARAMETER, - METHODS.REDIRECT, - METHODS.RECORD, - METHODS.FLUSH, - // For AirPlay - METHODS.GET, - METHODS.POST, - ]; - exports.METHOD_MAP = utils_1.enumToMap(METHODS); - exports.H_METHOD_MAP = {}; - Object.keys(exports.METHOD_MAP).forEach((key) => { - if (/^H/.test(key)) { - exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; - } - }); - var FINISH; - (function (FINISH) { - FINISH[(FINISH["SAFE"] = 0)] = "SAFE"; - FINISH[(FINISH["SAFE_WITH_CB"] = 1)] = "SAFE_WITH_CB"; - FINISH[(FINISH["UNSAFE"] = 2)] = "UNSAFE"; - })((FINISH = exports.FINISH || (exports.FINISH = {}))); - exports.ALPHA = []; - for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) { - // Upper case - exports.ALPHA.push(String.fromCharCode(i)); - // Lower case - exports.ALPHA.push(String.fromCharCode(i + 0x20)); - } - exports.NUM_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9, - }; - exports.HEX_MAP = { - 0: 0, - 1: 1, - 2: 2, - 3: 3, - 4: 4, - 5: 5, - 6: 6, - 7: 7, - 8: 8, - 9: 9, - A: 0xa, - B: 0xb, - C: 0xc, - D: 0xd, - E: 0xe, - F: 0xf, - a: 0xa, - b: 0xb, - c: 0xc, - d: 0xd, - e: 0xe, - f: 0xf, - }; - exports.NUM = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; - exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); - exports.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"]; - exports.USERINFO_CHARS = exports.ALPHANUM.concat(exports.MARK).concat([ - "%", - ";", - ":", - "&", - "=", - "+", - "$", - ",", - ]); - // TODO(indutny): use RFC - exports.STRICT_URL_CHAR = [ - "!", - '"', - "$", - "%", - "&", - "'", - "(", - ")", - "*", - "+", - ",", - "-", - ".", - "/", - ":", - ";", - "<", - "=", - ">", - "@", - "[", - "\\", - "]", - "^", - "_", - "`", - "{", - "|", - "}", - "~", - ].concat(exports.ALPHANUM); - exports.URL_CHAR = exports.STRICT_URL_CHAR.concat(["\t", "\f"]); - // All characters with 0x80 bit set to 1 - for (let i = 0x80; i <= 0xff; i++) { - exports.URL_CHAR.push(i); - } - exports.HEX = exports.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]); - /* Tokens as defined by rfc 2616. Also lowercases them. - * token = 1* - * separators = "(" | ")" | "<" | ">" | "@" - * | "," | ";" | ":" | "\" | <"> - * | "/" | "[" | "]" | "?" | "=" - * | "{" | "}" | SP | HT - */ - exports.STRICT_TOKEN = [ - "!", - "#", - "$", - "%", - "&", - "'", - "*", - "+", - "-", - ".", - "^", - "_", - "`", - "|", - "~", - ].concat(exports.ALPHANUM); - exports.TOKEN = exports.STRICT_TOKEN.concat([" "]); - /* - * Verify that a char is a valid visible (printable) US-ASCII - * character or %x80-FF - */ - exports.HEADER_CHARS = ["\t"]; - for (let i = 32; i <= 255; i++) { - if (i !== 127) { - exports.HEADER_CHARS.push(i); - } - } - // ',' = \x44 - exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); - exports.MAJOR = exports.NUM_MAP; - exports.MINOR = exports.MAJOR; - var HEADER_STATE; - (function (HEADER_STATE) { - HEADER_STATE[(HEADER_STATE["GENERAL"] = 0)] = "GENERAL"; - HEADER_STATE[(HEADER_STATE["CONNECTION"] = 1)] = "CONNECTION"; - HEADER_STATE[(HEADER_STATE["CONTENT_LENGTH"] = 2)] = "CONTENT_LENGTH"; - HEADER_STATE[(HEADER_STATE["TRANSFER_ENCODING"] = 3)] = "TRANSFER_ENCODING"; - HEADER_STATE[(HEADER_STATE["UPGRADE"] = 4)] = "UPGRADE"; - HEADER_STATE[(HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5)] = "CONNECTION_KEEP_ALIVE"; - HEADER_STATE[(HEADER_STATE["CONNECTION_CLOSE"] = 6)] = "CONNECTION_CLOSE"; - HEADER_STATE[(HEADER_STATE["CONNECTION_UPGRADE"] = 7)] = "CONNECTION_UPGRADE"; - HEADER_STATE[(HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8)] = "TRANSFER_ENCODING_CHUNKED"; - })((HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}))); - exports.SPECIAL_HEADERS = { - connection: HEADER_STATE.CONNECTION, - "content-length": HEADER_STATE.CONTENT_LENGTH, - "proxy-connection": HEADER_STATE.CONNECTION, - "transfer-encoding": HEADER_STATE.TRANSFER_ENCODING, - upgrade: HEADER_STATE.UPGRADE, - }; - //# sourceMappingURL=constants.js.map - - /***/ - }, - - /***/ 1145: /***/ (module) => { - module.exports = - "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwHLAcoBuAHJAbkByAG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAQDcAQtBACEQDMYBC0EOIRAMxQELQQ0hEAzEAQtBDyEQDMMBC0EQIRAMwgELQRMhEAzBAQtBFCEQDMABC0EVIRAMvwELQRYhEAy+AQtBFyEQDL0BC0EYIRAMvAELQRkhEAy7AQtBGiEQDLoBC0EbIRAMuQELQRwhEAy4AQtBCCEQDLcBC0EdIRAMtgELQSAhEAy1AQtBHyEQDLQBC0EHIRAMswELQSEhEAyyAQtBIiEQDLEBC0EeIRAMsAELQSMhEAyvAQtBEiEQDK4BC0ERIRAMrQELQSQhEAysAQtBJSEQDKsBC0EmIRAMqgELQSchEAypAQtBwwEhEAyoAQtBKSEQDKcBC0ErIRAMpgELQSwhEAylAQtBLSEQDKQBC0EuIRAMowELQS8hEAyiAQtBxAEhEAyhAQtBMCEQDKABC0E0IRAMnwELQQwhEAyeAQtBMSEQDJ0BC0EyIRAMnAELQTMhEAybAQtBOSEQDJoBC0E1IRAMmQELQcUBIRAMmAELQQshEAyXAQtBOiEQDJYBC0E2IRAMlQELQQohEAyUAQtBNyEQDJMBC0E4IRAMkgELQTwhEAyRAQtBOyEQDJABC0E9IRAMjwELQQkhEAyOAQtBKCEQDI0BC0E+IRAMjAELQT8hEAyLAQtBwAAhEAyKAQtBwQAhEAyJAQtBwgAhEAyIAQtBwwAhEAyHAQtBxAAhEAyGAQtBxQAhEAyFAQtBxgAhEAyEAQtBKiEQDIMBC0HHACEQDIIBC0HIACEQDIEBC0HJACEQDIABC0HKACEQDH8LQcsAIRAMfgtBzQAhEAx9C0HMACEQDHwLQc4AIRAMewtBzwAhEAx6C0HQACEQDHkLQdEAIRAMeAtB0gAhEAx3C0HTACEQDHYLQdQAIRAMdQtB1gAhEAx0C0HVACEQDHMLQQYhEAxyC0HXACEQDHELQQUhEAxwC0HYACEQDG8LQQQhEAxuC0HZACEQDG0LQdoAIRAMbAtB2wAhEAxrC0HcACEQDGoLQQMhEAxpC0HdACEQDGgLQd4AIRAMZwtB3wAhEAxmC0HhACEQDGULQeAAIRAMZAtB4gAhEAxjC0HjACEQDGILQQIhEAxhC0HkACEQDGALQeUAIRAMXwtB5gAhEAxeC0HnACEQDF0LQegAIRAMXAtB6QAhEAxbC0HqACEQDFoLQesAIRAMWQtB7AAhEAxYC0HtACEQDFcLQe4AIRAMVgtB7wAhEAxVC0HwACEQDFQLQfEAIRAMUwtB8gAhEAxSC0HzACEQDFELQfQAIRAMUAtB9QAhEAxPC0H2ACEQDE4LQfcAIRAMTQtB+AAhEAxMC0H5ACEQDEsLQfoAIRAMSgtB+wAhEAxJC0H8ACEQDEgLQf0AIRAMRwtB/gAhEAxGC0H/ACEQDEULQYABIRAMRAtBgQEhEAxDC0GCASEQDEILQYMBIRAMQQtBhAEhEAxAC0GFASEQDD8LQYYBIRAMPgtBhwEhEAw9C0GIASEQDDwLQYkBIRAMOwtBigEhEAw6C0GLASEQDDkLQYwBIRAMOAtBjQEhEAw3C0GOASEQDDYLQY8BIRAMNQtBkAEhEAw0C0GRASEQDDMLQZIBIRAMMgtBkwEhEAwxC0GUASEQDDALQZUBIRAMLwtBlgEhEAwuC0GXASEQDC0LQZgBIRAMLAtBmQEhEAwrC0GaASEQDCoLQZsBIRAMKQtBnAEhEAwoC0GdASEQDCcLQZ4BIRAMJgtBnwEhEAwlC0GgASEQDCQLQaEBIRAMIwtBogEhEAwiC0GjASEQDCELQaQBIRAMIAtBpQEhEAwfC0GmASEQDB4LQacBIRAMHQtBqAEhEAwcC0GpASEQDBsLQaoBIRAMGgtBqwEhEAwZC0GsASEQDBgLQa0BIRAMFwtBrgEhEAwWC0EBIRAMFQtBrwEhEAwUC0GwASEQDBMLQbEBIRAMEgtBswEhEAwRC0GyASEQDBALQbQBIRAMDwtBtQEhEAwOC0G2ASEQDA0LQbcBIRAMDAtBuAEhEAwLC0G5ASEQDAoLQboBIRAMCQtBuwEhEAwIC0HGASEQDAcLQbwBIRAMBgtBvQEhEAwFC0G+ASEQDAQLQb8BIRAMAwtBwAEhEAwCC0HCASEQDAELQcEBIRALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="; - - /***/ - }, - - /***/ 5627: /***/ (module) => { - module.exports = - "AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="; - - /***/ - }, - - /***/ 1891: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - exports.enumToMap = void 0; - function enumToMap(obj) { - const res = {}; - Object.keys(obj).forEach((key) => { - const value = obj[key]; - if (typeof value === "number") { - res[key] = value; - } - }); - return res; - } - exports.enumToMap = enumToMap; - //# sourceMappingURL=utils.js.map - - /***/ - }, - - /***/ 6771: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kClients } = __nccwpck_require__(2785); - const Agent = __nccwpck_require__(7890); - const { - kAgent, - kMockAgentSet, - kMockAgentGet, - kDispatches, - kIsMockActive, - kNetConnect, - kGetNetConnect, - kOptions, - kFactory, - } = __nccwpck_require__(4347); - const MockClient = __nccwpck_require__(8687); - const MockPool = __nccwpck_require__(6193); - const { matchValue, buildMockOptions } = __nccwpck_require__(9323); - const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8045); - const Dispatcher = __nccwpck_require__(412); - const Pluralizer = __nccwpck_require__(8891); - const PendingInterceptorsFormatter = __nccwpck_require__(6823); - - class FakeWeakRef { - constructor(value) { - this.value = value; - } - - deref() { - return this.value; - } - } - - class MockAgent extends Dispatcher { - constructor(opts) { - super(opts); - - this[kNetConnect] = true; - this[kIsMockActive] = true; - - // Instantiate Agent and encapsulate - if (opts && opts.agent && typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument opts.agent must implement Agent"); - } - const agent = opts && opts.agent ? opts.agent : new Agent(opts); - this[kAgent] = agent; - - this[kClients] = agent[kClients]; - this[kOptions] = buildMockOptions(opts); - } - - get(origin) { - let dispatcher = this[kMockAgentGet](origin); - - if (!dispatcher) { - dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - } - return dispatcher; - } - - dispatch(opts, handler) { - // Call MockAgent.get to perform additional setup before dispatching as normal - this.get(opts.origin); - return this[kAgent].dispatch(opts, handler); - } - - async close() { - await this[kAgent].close(); - this[kClients].clear(); - } - - deactivate() { - this[kIsMockActive] = false; - } - - activate() { - this[kIsMockActive] = true; - } - - enableNetConnect(matcher) { - if ( - typeof matcher === "string" || - typeof matcher === "function" || - matcher instanceof RegExp - ) { - if (Array.isArray(this[kNetConnect])) { - this[kNetConnect].push(matcher); - } else { - this[kNetConnect] = [matcher]; - } - } else if (typeof matcher === "undefined") { - this[kNetConnect] = true; - } else { - throw new InvalidArgumentError( - "Unsupported matcher. Must be one of String|Function|RegExp.", - ); - } - } - - disableNetConnect() { - this[kNetConnect] = false; - } - - // This is required to bypass issues caused by using global symbols - see: - // https://github.com/nodejs/undici/issues/1447 - get isMockActive() { - return this[kIsMockActive]; - } - - [kMockAgentSet](origin, dispatcher) { - this[kClients].set(origin, new FakeWeakRef(dispatcher)); - } - - [kFactory](origin) { - const mockOptions = Object.assign({ agent: this }, this[kOptions]); - return this[kOptions] && this[kOptions].connections === 1 - ? new MockClient(origin, mockOptions) - : new MockPool(origin, mockOptions); - } - - [kMockAgentGet](origin) { - // First check if we can immediately find it - const ref = this[kClients].get(origin); - if (ref) { - return ref.deref(); - } - - // If the origin is not a string create a dummy parent pool and return to user - if (typeof origin !== "string") { - const dispatcher = this[kFactory]("http://localhost:9999"); - this[kMockAgentSet](origin, dispatcher); - return dispatcher; - } - - // If we match, create a pool and assign the same dispatches - for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { - const nonExplicitDispatcher = nonExplicitRef.deref(); - if ( - nonExplicitDispatcher && - typeof keyMatcher !== "string" && - matchValue(keyMatcher, origin) - ) { - const dispatcher = this[kFactory](origin); - this[kMockAgentSet](origin, dispatcher); - dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]; - return dispatcher; - } - } - } - - [kGetNetConnect]() { - return this[kNetConnect]; - } - - pendingInterceptors() { - const mockAgentClients = this[kClients]; - - return Array.from(mockAgentClients.entries()) - .flatMap(([origin, scope]) => - scope.deref()[kDispatches].map((dispatch) => ({ ...dispatch, origin })), - ) - .filter(({ pending }) => pending); - } - - assertNoPendingInterceptors({ - pendingInterceptorsFormatter = new PendingInterceptorsFormatter(), - } = {}) { - const pending = this.pendingInterceptors(); - - if (pending.length === 0) { - return; - } - - const pluralizer = new Pluralizer("interceptor", "interceptors").pluralize( - pending.length, - ); - - throw new UndiciError( - ` -${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: - -${pendingInterceptorsFormatter.format(pending)} -`.trim(), - ); - } - } - - module.exports = MockAgent; - - /***/ - }, - - /***/ 8687: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { promisify } = __nccwpck_require__(3837); - const Client = __nccwpck_require__(3598); - const { buildMockDispatch } = __nccwpck_require__(9323); - const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected, - } = __nccwpck_require__(4347); - const { MockInterceptor } = __nccwpck_require__(410); - const Symbols = __nccwpck_require__(2785); - const { InvalidArgumentError } = __nccwpck_require__(8045); - - /** - * MockClient provides an API that extends the Client to influence the mockDispatches. - */ - class MockClient extends Client { - constructor(origin, opts) { - super(origin, opts); - - if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument opts.agent must implement Agent"); - } - - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } - - get [Symbols.kConnected]() { - return this[kConnected]; - } - - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); - } - - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - } - - module.exports = MockClient; - - /***/ - }, - - /***/ 888: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { UndiciError } = __nccwpck_require__(8045); - - class MockNotMatchedError extends UndiciError { - constructor(message) { - super(message); - Error.captureStackTrace(this, MockNotMatchedError); - this.name = "MockNotMatchedError"; - this.message = message || "The request does not match any registered mock dispatches"; - this.code = "UND_MOCK_ERR_MOCK_NOT_MATCHED"; - } - } - - module.exports = { - MockNotMatchedError, - }; - - /***/ - }, - - /***/ 410: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(9323); - const { - kDispatches, - kDispatchKey, - kDefaultHeaders, - kDefaultTrailers, - kContentLength, - kMockDispatch, - } = __nccwpck_require__(4347); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const { buildURL } = __nccwpck_require__(3983); - - /** - * Defines the scope API for an interceptor reply - */ - class MockScope { - constructor(mockDispatch) { - this[kMockDispatch] = mockDispatch; - } - - /** - * Delay a reply by a set amount in ms. - */ - delay(waitInMs) { - if (typeof waitInMs !== "number" || !Number.isInteger(waitInMs) || waitInMs <= 0) { - throw new InvalidArgumentError("waitInMs must be a valid integer > 0"); - } - - this[kMockDispatch].delay = waitInMs; - return this; - } - - /** - * For a defined reply, never mark as consumed. - */ - persist() { - this[kMockDispatch].persist = true; - return this; - } - - /** - * Allow one to define a reply for a set amount of matching requests. - */ - times(repeatTimes) { - if ( - typeof repeatTimes !== "number" || - !Number.isInteger(repeatTimes) || - repeatTimes <= 0 - ) { - throw new InvalidArgumentError("repeatTimes must be a valid integer > 0"); - } - - this[kMockDispatch].times = repeatTimes; - return this; - } - } - - /** - * Defines an interceptor for a Mock - */ - class MockInterceptor { - constructor(opts, mockDispatches) { - if (typeof opts !== "object") { - throw new InvalidArgumentError("opts must be an object"); - } - if (typeof opts.path === "undefined") { - throw new InvalidArgumentError("opts.path must be defined"); - } - if (typeof opts.method === "undefined") { - opts.method = "GET"; - } - // See https://github.com/nodejs/undici/issues/1245 - // As per RFC 3986, clients are not supposed to send URI - // fragments to servers when they retrieve a document, - if (typeof opts.path === "string") { - if (opts.query) { - opts.path = buildURL(opts.path, opts.query); - } else { - // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 - const parsedURL = new URL(opts.path, "data://"); - opts.path = parsedURL.pathname + parsedURL.search; - } - } - if (typeof opts.method === "string") { - opts.method = opts.method.toUpperCase(); - } - - this[kDispatchKey] = buildKey(opts); - this[kDispatches] = mockDispatches; - this[kDefaultHeaders] = {}; - this[kDefaultTrailers] = {}; - this[kContentLength] = false; - } - - createMockScopeDispatchData(statusCode, data, responseOptions = {}) { - const responseData = getResponseData(data); - const contentLength = this[kContentLength] - ? { "content-length": responseData.length } - : {}; - const headers = { - ...this[kDefaultHeaders], - ...contentLength, - ...responseOptions.headers, - }; - const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }; - - return { statusCode, data, headers, trailers }; - } - - validateReplyParameters(statusCode, data, responseOptions) { - if (typeof statusCode === "undefined") { - throw new InvalidArgumentError("statusCode must be defined"); - } - if (typeof data === "undefined") { - throw new InvalidArgumentError("data must be defined"); - } - if (typeof responseOptions !== "object") { - throw new InvalidArgumentError("responseOptions must be an object"); - } - } - - /** - * Mock an undici request with a defined reply. - */ - reply(replyData) { - // Values of reply aren't available right now as they - // can only be available when the reply callback is invoked. - if (typeof replyData === "function") { - // We'll first wrap the provided callback in another function, - // this function will properly resolve the data from the callback - // when invoked. - const wrappedDefaultsCallback = (opts) => { - // Our reply options callback contains the parameter for statusCode, data and options. - const resolvedData = replyData(opts); - - // Check if it is in the right format - if (typeof resolvedData !== "object") { - throw new InvalidArgumentError( - "reply options callback must return an object", - ); - } - - const { statusCode, data = "", responseOptions = {} } = resolvedData; - this.validateReplyParameters(statusCode, data, responseOptions); - // Since the values can be obtained immediately we return them - // from this higher order function that will be resolved later. - return { - ...this.createMockScopeDispatchData(statusCode, data, responseOptions), - }; - }; - - // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. - const newMockDispatch = addMockDispatch( - this[kDispatches], - this[kDispatchKey], - wrappedDefaultsCallback, - ); - return new MockScope(newMockDispatch); - } - - // We can have either one or three parameters, if we get here, - // we should have 1-3 parameters. So we spread the arguments of - // this function to obtain the parameters, since replyData will always - // just be the statusCode. - const [statusCode, data = "", responseOptions = {}] = [...arguments]; - this.validateReplyParameters(statusCode, data, responseOptions); - - // Send in-already provided data like usual - const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions); - const newMockDispatch = addMockDispatch( - this[kDispatches], - this[kDispatchKey], - dispatchData, - ); - return new MockScope(newMockDispatch); - } - - /** - * Mock an undici request with a defined error. - */ - replyWithError(error) { - if (typeof error === "undefined") { - throw new InvalidArgumentError("error must be defined"); - } - - const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }); - return new MockScope(newMockDispatch); - } - - /** - * Set default reply headers on the interceptor for subsequent replies - */ - defaultReplyHeaders(headers) { - if (typeof headers === "undefined") { - throw new InvalidArgumentError("headers must be defined"); - } - - this[kDefaultHeaders] = headers; - return this; - } - - /** - * Set default reply trailers on the interceptor for subsequent replies - */ - defaultReplyTrailers(trailers) { - if (typeof trailers === "undefined") { - throw new InvalidArgumentError("trailers must be defined"); - } - - this[kDefaultTrailers] = trailers; - return this; - } - - /** - * Set reply content length header for replies on the interceptor - */ - replyContentLength() { - this[kContentLength] = true; - return this; - } - } - - module.exports.MockInterceptor = MockInterceptor; - module.exports.MockScope = MockScope; - - /***/ - }, - - /***/ 6193: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { promisify } = __nccwpck_require__(3837); - const Pool = __nccwpck_require__(4634); - const { buildMockDispatch } = __nccwpck_require__(9323); - const { - kDispatches, - kMockAgent, - kClose, - kOriginalClose, - kOrigin, - kOriginalDispatch, - kConnected, - } = __nccwpck_require__(4347); - const { MockInterceptor } = __nccwpck_require__(410); - const Symbols = __nccwpck_require__(2785); - const { InvalidArgumentError } = __nccwpck_require__(8045); - - /** - * MockPool provides an API that extends the Pool to influence the mockDispatches. - */ - class MockPool extends Pool { - constructor(origin, opts) { - super(origin, opts); - - if (!opts || !opts.agent || typeof opts.agent.dispatch !== "function") { - throw new InvalidArgumentError("Argument opts.agent must implement Agent"); - } - - this[kMockAgent] = opts.agent; - this[kOrigin] = origin; - this[kDispatches] = []; - this[kConnected] = 1; - this[kOriginalDispatch] = this.dispatch; - this[kOriginalClose] = this.close.bind(this); - - this.dispatch = buildMockDispatch.call(this); - this.close = this[kClose]; - } - - get [Symbols.kConnected]() { - return this[kConnected]; - } - - /** - * Sets up the base interceptor for mocking replies from undici. - */ - intercept(opts) { - return new MockInterceptor(opts, this[kDispatches]); - } - - async [kClose]() { - await promisify(this[kOriginalClose])(); - this[kConnected] = 0; - this[kMockAgent][Symbols.kClients].delete(this[kOrigin]); - } - } - - module.exports = MockPool; - - /***/ - }, - - /***/ 4347: /***/ (module) => { - "use strict"; - - module.exports = { - kAgent: Symbol("agent"), - kOptions: Symbol("options"), - kFactory: Symbol("factory"), - kDispatches: Symbol("dispatches"), - kDispatchKey: Symbol("dispatch key"), - kDefaultHeaders: Symbol("default headers"), - kDefaultTrailers: Symbol("default trailers"), - kContentLength: Symbol("content length"), - kMockAgent: Symbol("mock agent"), - kMockAgentSet: Symbol("mock agent set"), - kMockAgentGet: Symbol("mock agent get"), - kMockDispatch: Symbol("mock dispatch"), - kClose: Symbol("close"), - kOriginalClose: Symbol("original agent close"), - kOrigin: Symbol("origin"), - kIsMockActive: Symbol("is mock active"), - kNetConnect: Symbol("net connect"), - kGetNetConnect: Symbol("get net connect"), - kConnected: Symbol("connected"), - }; - - /***/ - }, - - /***/ 9323: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { MockNotMatchedError } = __nccwpck_require__(888); - const { kDispatches, kMockAgent, kOriginalDispatch, kOrigin, kGetNetConnect } = - __nccwpck_require__(4347); - const { buildURL, nop } = __nccwpck_require__(3983); - const { STATUS_CODES } = __nccwpck_require__(3685); - const { - types: { isPromise }, - } = __nccwpck_require__(3837); - - function matchValue(match, value) { - if (typeof match === "string") { - return match === value; - } - if (match instanceof RegExp) { - return match.test(value); - } - if (typeof match === "function") { - return match(value) === true; - } - return false; - } - - function lowerCaseEntries(headers) { - return Object.fromEntries( - Object.entries(headers).map(([headerName, headerValue]) => { - return [headerName.toLocaleLowerCase(), headerValue]; - }), - ); - } - - /** - * @param {import('../../index').Headers|string[]|Record} headers - * @param {string} key - */ - function getHeaderByName(headers, key) { - if (Array.isArray(headers)) { - for (let i = 0; i < headers.length; i += 2) { - if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { - return headers[i + 1]; - } - } - - return undefined; - } else if (typeof headers.get === "function") { - return headers.get(key); - } else { - return lowerCaseEntries(headers)[key.toLocaleLowerCase()]; - } - } - - /** @param {string[]} headers */ - function buildHeadersFromArray(headers) { - // fetch HeadersList - const clone = headers.slice(); - const entries = []; - for (let index = 0; index < clone.length; index += 2) { - entries.push([clone[index], clone[index + 1]]); - } - return Object.fromEntries(entries); - } - - function matchHeaders(mockDispatch, headers) { - if (typeof mockDispatch.headers === "function") { - if (Array.isArray(headers)) { - // fetch HeadersList - headers = buildHeadersFromArray(headers); - } - return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}); - } - if (typeof mockDispatch.headers === "undefined") { - return true; - } - if (typeof headers !== "object" || typeof mockDispatch.headers !== "object") { - return false; - } - - for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { - const headerValue = getHeaderByName(headers, matchHeaderName); - - if (!matchValue(matchHeaderValue, headerValue)) { - return false; - } - } - return true; - } - - function safeUrl(path) { - if (typeof path !== "string") { - return path; - } - - const pathSegments = path.split("?"); - - if (pathSegments.length !== 2) { - return path; - } - - const qp = new URLSearchParams(pathSegments.pop()); - qp.sort(); - return [...pathSegments, qp.toString()].join("?"); - } - - function matchKey(mockDispatch, { path, method, body, headers }) { - const pathMatch = matchValue(mockDispatch.path, path); - const methodMatch = matchValue(mockDispatch.method, method); - const bodyMatch = - typeof mockDispatch.body !== "undefined" ? matchValue(mockDispatch.body, body) : true; - const headersMatch = matchHeaders(mockDispatch, headers); - return pathMatch && methodMatch && bodyMatch && headersMatch; - } - - function getResponseData(data) { - if (Buffer.isBuffer(data)) { - return data; - } else if (typeof data === "object") { - return JSON.stringify(data); - } else { - return data.toString(); - } - } - - function getMockDispatch(mockDispatches, key) { - const basePath = key.query ? buildURL(key.path, key.query) : key.path; - const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath; - - // Match path - let matchedMockDispatches = mockDispatches - .filter(({ consumed }) => !consumed) - .filter(({ path }) => matchValue(safeUrl(path), resolvedPath)); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`); - } - - // Match method - matchedMockDispatches = matchedMockDispatches.filter(({ method }) => - matchValue(method, key.method), - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`); - } - - // Match body - matchedMockDispatches = matchedMockDispatches.filter(({ body }) => - typeof body !== "undefined" ? matchValue(body, key.body) : true, - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`); - } - - // Match headers - matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => - matchHeaders(mockDispatch, key.headers), - ); - if (matchedMockDispatches.length === 0) { - throw new MockNotMatchedError( - `Mock dispatch not matched for headers '${ - typeof key.headers === "object" ? JSON.stringify(key.headers) : key.headers - }'`, - ); - } - - return matchedMockDispatches[0]; - } - - function addMockDispatch(mockDispatches, key, data) { - const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }; - const replyData = typeof data === "function" ? { callback: data } : { ...data }; - const newMockDispatch = { - ...baseData, - ...key, - pending: true, - data: { error: null, ...replyData }, - }; - mockDispatches.push(newMockDispatch); - return newMockDispatch; - } - - function deleteMockDispatch(mockDispatches, key) { - const index = mockDispatches.findIndex((dispatch) => { - if (!dispatch.consumed) { - return false; - } - return matchKey(dispatch, key); - }); - if (index !== -1) { - mockDispatches.splice(index, 1); - } - } - - function buildKey(opts) { - const { path, method, body, headers, query } = opts; - return { - path, - method, - body, - headers, - query, - }; - } - - function generateKeyValues(data) { - return Object.entries(data).reduce( - (keyValuePairs, [key, value]) => [ - ...keyValuePairs, - Buffer.from(`${key}`), - Array.isArray(value) - ? value.map((x) => Buffer.from(`${x}`)) - : Buffer.from(`${value}`), - ], - [], - ); - } - - /** - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status - * @param {number} statusCode - */ - function getStatusText(statusCode) { - return STATUS_CODES[statusCode] || "unknown"; - } - - async function getResponse(body) { - const buffers = []; - for await (const data of body) { - buffers.push(data); - } - return Buffer.concat(buffers).toString("utf8"); - } - - /** - * Mock dispatch function used to simulate undici dispatches - */ - function mockDispatch(opts, handler) { - // Get mock dispatch from built key - const key = buildKey(opts); - const mockDispatch = getMockDispatch(this[kDispatches], key); - - mockDispatch.timesInvoked++; - - // Here's where we resolve a callback if a callback is present for the dispatch data. - if (mockDispatch.data.callback) { - mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }; - } - - // Parse mockDispatch data - const { - data: { statusCode, data, headers, trailers, error }, - delay, - persist, - } = mockDispatch; - const { timesInvoked, times } = mockDispatch; - - // If it's used up and not persistent, mark as consumed - mockDispatch.consumed = !persist && timesInvoked >= times; - mockDispatch.pending = timesInvoked < times; - - // If specified, trigger dispatch error - if (error !== null) { - deleteMockDispatch(this[kDispatches], key); - handler.onError(error); - return true; - } - - // Handle the request with a delay if necessary - if (typeof delay === "number" && delay > 0) { - setTimeout(() => { - handleReply(this[kDispatches]); - }, delay); - } else { - handleReply(this[kDispatches]); - } - - function handleReply(mockDispatches, _data = data) { - // fetch's HeadersList is a 1D string array - const optsHeaders = Array.isArray(opts.headers) - ? buildHeadersFromArray(opts.headers) - : opts.headers; - const body = - typeof _data === "function" ? _data({ ...opts, headers: optsHeaders }) : _data; - - // util.types.isPromise is likely needed for jest. - if (isPromise(body)) { - // If handleReply is asynchronous, throwing an error - // in the callback will reject the promise, rather than - // synchronously throw the error, which breaks some tests. - // Rather, we wait for the callback to resolve if it is a - // promise, and then re-run handleReply with the new body. - body.then((newData) => handleReply(mockDispatches, newData)); - return; - } - - const responseData = getResponseData(body); - const responseHeaders = generateKeyValues(headers); - const responseTrailers = generateKeyValues(trailers); - - handler.abort = nop; - handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)); - handler.onData(Buffer.from(responseData)); - handler.onComplete(responseTrailers); - deleteMockDispatch(mockDispatches, key); - } - - function resume() {} - - return true; - } - - function buildMockDispatch() { - const agent = this[kMockAgent]; - const origin = this[kOrigin]; - const originalDispatch = this[kOriginalDispatch]; - - return function dispatch(opts, handler) { - if (agent.isMockActive) { - try { - mockDispatch.call(this, opts, handler); - } catch (error) { - if (error instanceof MockNotMatchedError) { - const netConnect = agent[kGetNetConnect](); - if (netConnect === false) { - throw new MockNotMatchedError( - `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`, - ); - } - if (checkNetConnect(netConnect, origin)) { - originalDispatch.call(this, opts, handler); - } else { - throw new MockNotMatchedError( - `${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`, - ); - } - } else { - throw error; - } - } - } else { - originalDispatch.call(this, opts, handler); - } - }; - } - - function checkNetConnect(netConnect, origin) { - const url = new URL(origin); - if (netConnect === true) { - return true; - } else if ( - Array.isArray(netConnect) && - netConnect.some((matcher) => matchValue(matcher, url.host)) - ) { - return true; - } - return false; - } - - function buildMockOptions(opts) { - if (opts) { - const { agent, ...mockOptions } = opts; - return mockOptions; - } - } - - module.exports = { - getResponseData, - getMockDispatch, - addMockDispatch, - deleteMockDispatch, - buildKey, - generateKeyValues, - matchValue, - getResponse, - getStatusText, - mockDispatch, - buildMockDispatch, - checkNetConnect, - buildMockOptions, - getHeaderByName, - }; - - /***/ - }, - - /***/ 6823: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Transform } = __nccwpck_require__(2781); - const { Console } = __nccwpck_require__(6206); - - /** - * Gets the output of `console.table(…)` as a string. - */ - module.exports = class PendingInterceptorsFormatter { - constructor({ disableColors } = {}) { - this.transform = new Transform({ - transform(chunk, _enc, cb) { - cb(null, chunk); - }, - }); - - this.logger = new Console({ - stdout: this.transform, - inspectOptions: { - colors: !disableColors && !process.env.CI, - }, - }); - } - - format(pendingInterceptors) { - const withPrettyHeaders = pendingInterceptors.map( - ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ - Method: method, - Origin: origin, - Path: path, - "Status code": statusCode, - Persistent: persist ? "✅" : "❌", - Invocations: timesInvoked, - Remaining: persist ? Infinity : times - timesInvoked, - }), - ); - - this.logger.table(withPrettyHeaders); - return this.transform.read().toString(); - } - }; - - /***/ - }, - - /***/ 8891: /***/ (module) => { - "use strict"; - - const singulars = { - pronoun: "it", - is: "is", - was: "was", - this: "this", - }; - - const plurals = { - pronoun: "they", - is: "are", - was: "were", - this: "these", - }; - - module.exports = class Pluralizer { - constructor(singular, plural) { - this.singular = singular; - this.plural = plural; - } - - pluralize(count) { - const one = count === 1; - const keys = one ? singulars : plurals; - const noun = one ? this.singular : this.plural; - return { ...keys, count, noun }; - } - }; - - /***/ - }, - - /***/ 8266: /***/ (module) => { - "use strict"; - /* eslint-disable */ - - // Extracted from node/lib/internal/fixed_queue.js - - // Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. - const kSize = 2048; - const kMask = kSize - 1; - - // The FixedQueue is implemented as a singly-linked list of fixed-size - // circular buffers. It looks something like this: - // - // head tail - // | | - // v v - // +-----------+ <-----\ +-----------+ <------\ +-----------+ - // | [null] | \----- | next | \------- | next | - // +-----------+ +-----------+ +-----------+ - // | item | <-- bottom | item | <-- bottom | [empty] | - // | item | | item | | [empty] | - // | item | | item | | [empty] | - // | item | | item | | [empty] | - // | item | | item | bottom --> | item | - // | item | | item | | item | - // | ... | | ... | | ... | - // | item | | item | | item | - // | item | | item | | item | - // | [empty] | <-- top | item | | item | - // | [empty] | | item | | item | - // | [empty] | | [empty] | <-- top top --> | [empty] | - // +-----------+ +-----------+ +-----------+ - // - // Or, if there is only one circular buffer, it looks something - // like either of these: - // - // head tail head tail - // | | | | - // v v v v - // +-----------+ +-----------+ - // | [null] | | [null] | - // +-----------+ +-----------+ - // | [empty] | | item | - // | [empty] | | item | - // | item | <-- bottom top --> | [empty] | - // | item | | [empty] | - // | [empty] | <-- top bottom --> | item | - // | [empty] | | item | - // +-----------+ +-----------+ - // - // Adding a value means moving `top` forward by one, removing means - // moving `bottom` forward by one. After reaching the end, the queue - // wraps around. - // - // When `top === bottom` the current queue is empty and when - // `top + 1 === bottom` it's full. This wastes a single space of storage - // but allows much quicker checks. - - class FixedCircularBuffer { - constructor() { - this.bottom = 0; - this.top = 0; - this.list = new Array(kSize); - this.next = null; - } - - isEmpty() { - return this.top === this.bottom; - } - - isFull() { - return ((this.top + 1) & kMask) === this.bottom; - } - - push(data) { - this.list[this.top] = data; - this.top = (this.top + 1) & kMask; - } - - shift() { - const nextItem = this.list[this.bottom]; - if (nextItem === undefined) return null; - this.list[this.bottom] = undefined; - this.bottom = (this.bottom + 1) & kMask; - return nextItem; - } - } - - module.exports = class FixedQueue { - constructor() { - this.head = this.tail = new FixedCircularBuffer(); - } - - isEmpty() { - return this.head.isEmpty(); - } - - push(data) { - if (this.head.isFull()) { - // Head is full: Creates a new queue, sets the old queue's `.next` to it, - // and sets it as the new main queue. - this.head = this.head.next = new FixedCircularBuffer(); - } - this.head.push(data); - } - - shift() { - const tail = this.tail; - const next = tail.shift(); - if (tail.isEmpty() && tail.next !== null) { - // If there is another queue, it forms the new tail. - this.tail = tail.next; - } - return next; - } - }; - - /***/ - }, - - /***/ 3198: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const DispatcherBase = __nccwpck_require__(4839); - const FixedQueue = __nccwpck_require__(8266); - const { - kConnected, - kSize, - kRunning, - kPending, - kQueued, - kBusy, - kFree, - kUrl, - kClose, - kDestroy, - kDispatch, - } = __nccwpck_require__(2785); - const PoolStats = __nccwpck_require__(9689); - - const kClients = Symbol("clients"); - const kNeedDrain = Symbol("needDrain"); - const kQueue = Symbol("queue"); - const kClosedResolve = Symbol("closed resolve"); - const kOnDrain = Symbol("onDrain"); - const kOnConnect = Symbol("onConnect"); - const kOnDisconnect = Symbol("onDisconnect"); - const kOnConnectionError = Symbol("onConnectionError"); - const kGetDispatcher = Symbol("get dispatcher"); - const kAddClient = Symbol("add client"); - const kRemoveClient = Symbol("remove client"); - const kStats = Symbol("stats"); - - class PoolBase extends DispatcherBase { - constructor() { - super(); - - this[kQueue] = new FixedQueue(); - this[kClients] = []; - this[kQueued] = 0; - - const pool = this; - - this[kOnDrain] = function onDrain(origin, targets) { - const queue = pool[kQueue]; - - let needDrain = false; - - while (!needDrain) { - const item = queue.shift(); - if (!item) { - break; - } - pool[kQueued]--; - needDrain = !this.dispatch(item.opts, item.handler); - } - - this[kNeedDrain] = needDrain; - - if (!this[kNeedDrain] && pool[kNeedDrain]) { - pool[kNeedDrain] = false; - pool.emit("drain", origin, [pool, ...targets]); - } - - if (pool[kClosedResolve] && queue.isEmpty()) { - Promise.all(pool[kClients].map((c) => c.close())).then(pool[kClosedResolve]); - } - }; - - this[kOnConnect] = (origin, targets) => { - pool.emit("connect", origin, [pool, ...targets]); - }; - - this[kOnDisconnect] = (origin, targets, err) => { - pool.emit("disconnect", origin, [pool, ...targets], err); - }; - - this[kOnConnectionError] = (origin, targets, err) => { - pool.emit("connectionError", origin, [pool, ...targets], err); - }; - - this[kStats] = new PoolStats(this); - } - - get [kBusy]() { - return this[kNeedDrain]; - } - - get [kConnected]() { - return this[kClients].filter((client) => client[kConnected]).length; - } - - get [kFree]() { - return this[kClients].filter((client) => client[kConnected] && !client[kNeedDrain]) - .length; - } - - get [kPending]() { - let ret = this[kQueued]; - for (const { [kPending]: pending } of this[kClients]) { - ret += pending; - } - return ret; - } - - get [kRunning]() { - let ret = 0; - for (const { [kRunning]: running } of this[kClients]) { - ret += running; - } - return ret; - } - - get [kSize]() { - let ret = this[kQueued]; - for (const { [kSize]: size } of this[kClients]) { - ret += size; - } - return ret; - } - - get stats() { - return this[kStats]; - } - - async [kClose]() { - if (this[kQueue].isEmpty()) { - return Promise.all(this[kClients].map((c) => c.close())); - } else { - return new Promise((resolve) => { - this[kClosedResolve] = resolve; - }); - } - } - - async [kDestroy](err) { - while (true) { - const item = this[kQueue].shift(); - if (!item) { - break; - } - item.handler.onError(err); - } - - return Promise.all(this[kClients].map((c) => c.destroy(err))); - } - - [kDispatch](opts, handler) { - const dispatcher = this[kGetDispatcher](); - - if (!dispatcher) { - this[kNeedDrain] = true; - this[kQueue].push({ opts, handler }); - this[kQueued]++; - } else if (!dispatcher.dispatch(opts, handler)) { - dispatcher[kNeedDrain] = true; - this[kNeedDrain] = !this[kGetDispatcher](); - } - - return !this[kNeedDrain]; - } - - [kAddClient](client) { - client - .on("drain", this[kOnDrain]) - .on("connect", this[kOnConnect]) - .on("disconnect", this[kOnDisconnect]) - .on("connectionError", this[kOnConnectionError]); - - this[kClients].push(client); - - if (this[kNeedDrain]) { - process.nextTick(() => { - if (this[kNeedDrain]) { - this[kOnDrain](client[kUrl], [this, client]); - } - }); - } - - return this; - } - - [kRemoveClient](client) { - client.close(() => { - const idx = this[kClients].indexOf(client); - if (idx !== -1) { - this[kClients].splice(idx, 1); - } - }); - - this[kNeedDrain] = this[kClients].some( - (dispatcher) => - !dispatcher[kNeedDrain] && - dispatcher.closed !== true && - dispatcher.destroyed !== true, - ); - } - } - - module.exports = { - PoolBase, - kClients, - kNeedDrain, - kAddClient, - kRemoveClient, - kGetDispatcher, - }; - - /***/ - }, - - /***/ 9689: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(2785); - const kPool = Symbol("pool"); - - class PoolStats { - constructor(pool) { - this[kPool] = pool; - } - - get connected() { - return this[kPool][kConnected]; - } - - get free() { - return this[kPool][kFree]; - } - - get pending() { - return this[kPool][kPending]; - } - - get queued() { - return this[kPool][kQueued]; - } - - get running() { - return this[kPool][kRunning]; - } - - get size() { - return this[kPool][kSize]; - } - } - - module.exports = PoolStats; - - /***/ - }, - - /***/ 4634: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { PoolBase, kClients, kNeedDrain, kAddClient, kGetDispatcher } = __nccwpck_require__(3198); - const Client = __nccwpck_require__(3598); - const { InvalidArgumentError } = __nccwpck_require__(8045); - const util = __nccwpck_require__(3983); - const { kUrl, kInterceptors } = __nccwpck_require__(2785); - const buildConnector = __nccwpck_require__(2067); - - const kOptions = Symbol("options"); - const kConnections = Symbol("connections"); - const kFactory = Symbol("factory"); - - function defaultFactory(origin, opts) { - return new Client(origin, opts); - } - - class Pool extends PoolBase { - constructor( - origin, - { - connections, - factory = defaultFactory, - connect, - connectTimeout, - tls, - maxCachedSessions, - socketPath, - autoSelectFamily, - autoSelectFamilyAttemptTimeout, - allowH2, - ...options - } = {}, - ) { - super(); - - if (connections != null && (!Number.isFinite(connections) || connections < 0)) { - throw new InvalidArgumentError("invalid connections"); - } - - if (typeof factory !== "function") { - throw new InvalidArgumentError("factory must be a function."); - } - - if (connect != null && typeof connect !== "function" && typeof connect !== "object") { - throw new InvalidArgumentError("connect must be a function or an object"); - } - - if (typeof connect !== "function") { - connect = buildConnector({ - ...tls, - maxCachedSessions, - allowH2, - socketPath, - timeout: connectTimeout, - ...(util.nodeHasAutoSelectFamily && autoSelectFamily - ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } - : undefined), - ...connect, - }); - } - - this[kInterceptors] = - options.interceptors && - options.interceptors.Pool && - Array.isArray(options.interceptors.Pool) - ? options.interceptors.Pool - : []; - this[kConnections] = connections || null; - this[kUrl] = util.parseOrigin(origin); - this[kOptions] = { ...util.deepClone(options), connect, allowH2 }; - this[kOptions].interceptors = options.interceptors - ? { ...options.interceptors } - : undefined; - this[kFactory] = factory; - } - - [kGetDispatcher]() { - let dispatcher = this[kClients].find((dispatcher) => !dispatcher[kNeedDrain]); - - if (dispatcher) { - return dispatcher; - } - - if (!this[kConnections] || this[kClients].length < this[kConnections]) { - dispatcher = this[kFactory](this[kUrl], this[kOptions]); - this[kAddClient](dispatcher); - } - - return dispatcher; - } - } - - module.exports = Pool; - - /***/ - }, - - /***/ 7858: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(2785); - const { URL } = __nccwpck_require__(7310); - const Agent = __nccwpck_require__(7890); - const Pool = __nccwpck_require__(4634); - const DispatcherBase = __nccwpck_require__(4839); - const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8045); - const buildConnector = __nccwpck_require__(2067); - - const kAgent = Symbol("proxy agent"); - const kClient = Symbol("proxy client"); - const kProxyHeaders = Symbol("proxy headers"); - const kRequestTls = Symbol("request tls settings"); - const kProxyTls = Symbol("proxy tls settings"); - const kConnectEndpoint = Symbol("connect endpoint function"); - - function defaultProtocolPort(protocol) { - return protocol === "https:" ? 443 : 80; - } - - function buildProxyOptions(opts) { - if (typeof opts === "string") { - opts = { uri: opts }; - } - - if (!opts || !opts.uri) { - throw new InvalidArgumentError("Proxy opts.uri is mandatory"); - } - - return { - uri: opts.uri, - protocol: opts.protocol || "https", - }; - } - - function defaultFactory(origin, opts) { - return new Pool(origin, opts); - } - - class ProxyAgent extends DispatcherBase { - constructor(opts) { - super(opts); - this[kProxy] = buildProxyOptions(opts); - this[kAgent] = new Agent(opts); - this[kInterceptors] = - opts.interceptors && - opts.interceptors.ProxyAgent && - Array.isArray(opts.interceptors.ProxyAgent) - ? opts.interceptors.ProxyAgent - : []; - - if (typeof opts === "string") { - opts = { uri: opts }; - } - - if (!opts || !opts.uri) { - throw new InvalidArgumentError("Proxy opts.uri is mandatory"); - } - - const { clientFactory = defaultFactory } = opts; - - if (typeof clientFactory !== "function") { - throw new InvalidArgumentError("Proxy opts.clientFactory must be a function."); - } - - this[kRequestTls] = opts.requestTls; - this[kProxyTls] = opts.proxyTls; - this[kProxyHeaders] = opts.headers || {}; - - const resolvedUrl = new URL(opts.uri); - const { origin, port, host, username, password } = resolvedUrl; - - if (opts.auth && opts.token) { - throw new InvalidArgumentError( - "opts.auth cannot be used in combination with opts.token", - ); - } else if (opts.auth) { - /* @deprecated in favour of opts.token */ - this[kProxyHeaders]["proxy-authorization"] = `Basic ${opts.auth}`; - } else if (opts.token) { - this[kProxyHeaders]["proxy-authorization"] = opts.token; - } else if (username && password) { - this[kProxyHeaders]["proxy-authorization"] = `Basic ${Buffer.from( - `${decodeURIComponent(username)}:${decodeURIComponent(password)}`, - ).toString("base64")}`; - } - - const connect = buildConnector({ ...opts.proxyTls }); - this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }); - this[kClient] = clientFactory(resolvedUrl, { connect }); - this[kAgent] = new Agent({ - ...opts, - connect: async (opts, callback) => { - let requestedHost = opts.host; - if (!opts.port) { - requestedHost += `:${defaultProtocolPort(opts.protocol)}`; - } - try { - const { socket, statusCode } = await this[kClient].connect({ - origin, - port, - path: requestedHost, - signal: opts.signal, - headers: { - ...this[kProxyHeaders], - host, - }, - }); - if (statusCode !== 200) { - socket.on("error", () => {}).destroy(); - callback( - new RequestAbortedError( - `Proxy response (${statusCode}) !== 200 when HTTP Tunneling`, - ), - ); - } - if (opts.protocol !== "https:") { - callback(null, socket); - return; - } - let servername; - if (this[kRequestTls]) { - servername = this[kRequestTls].servername; - } else { - servername = opts.servername; - } - this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback); - } catch (err) { - callback(err); - } - }, - }); - } - - dispatch(opts, handler) { - const { host } = new URL(opts.origin); - const headers = buildHeaders(opts.headers); - throwIfProxyAuthIsSent(headers); - return this[kAgent].dispatch( - { - ...opts, - headers: { - ...headers, - host, - }, - }, - handler, - ); - } - - async [kClose]() { - await this[kAgent].close(); - await this[kClient].close(); - } - - async [kDestroy]() { - await this[kAgent].destroy(); - await this[kClient].destroy(); - } - } - - /** - * @param {string[] | Record} headers - * @returns {Record} - */ - function buildHeaders(headers) { - // When using undici.fetch, the headers list is stored - // as an array. - if (Array.isArray(headers)) { - /** @type {Record} */ - const headersPair = {}; - - for (let i = 0; i < headers.length; i += 2) { - headersPair[headers[i]] = headers[i + 1]; - } - - return headersPair; - } - - return headers; - } - - /** - * @param {Record} headers - * - * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers - * Nevertheless, it was changed and to avoid a security vulnerability by end users - * this check was created. - * It should be removed in the next major version for performance reasons - */ - function throwIfProxyAuthIsSent(headers) { - const existProxyAuth = - headers && - Object.keys(headers).find((key) => key.toLowerCase() === "proxy-authorization"); - if (existProxyAuth) { - throw new InvalidArgumentError( - "Proxy-Authorization should be sent in ProxyAgent constructor", - ); - } - } - - module.exports = ProxyAgent; - - /***/ - }, - - /***/ 9459: /***/ (module) => { - "use strict"; - - let fastNow = Date.now(); - let fastNowTimeout; - - const fastTimers = []; - - function onTimeout() { - fastNow = Date.now(); - - let len = fastTimers.length; - let idx = 0; - while (idx < len) { - const timer = fastTimers[idx]; - - if (timer.state === 0) { - timer.state = fastNow + timer.delay; - } else if (timer.state > 0 && fastNow >= timer.state) { - timer.state = -1; - timer.callback(timer.opaque); - } - - if (timer.state === -1) { - timer.state = -2; - if (idx !== len - 1) { - fastTimers[idx] = fastTimers.pop(); - } else { - fastTimers.pop(); - } - len -= 1; - } else { - idx += 1; - } - } - - if (fastTimers.length > 0) { - refreshTimeout(); - } - } - - function refreshTimeout() { - if (fastNowTimeout && fastNowTimeout.refresh) { - fastNowTimeout.refresh(); - } else { - clearTimeout(fastNowTimeout); - fastNowTimeout = setTimeout(onTimeout, 1e3); - if (fastNowTimeout.unref) { - fastNowTimeout.unref(); - } - } - } - - class Timeout { - constructor(callback, delay, opaque) { - this.callback = callback; - this.delay = delay; - this.opaque = opaque; - - // -2 not in timer list - // -1 in timer list but inactive - // 0 in timer list waiting for time - // > 0 in timer list waiting for time to expire - this.state = -2; - - this.refresh(); - } - - refresh() { - if (this.state === -2) { - fastTimers.push(this); - if (!fastNowTimeout || fastTimers.length === 1) { - refreshTimeout(); - } - } - - this.state = 0; - } - - clear() { - this.state = -1; - } - } - - module.exports = { - setTimeout(callback, delay, opaque) { - return delay < 1e3 - ? setTimeout(callback, delay, opaque) - : new Timeout(callback, delay, opaque); - }, - clearTimeout(timeout) { - if (timeout instanceof Timeout) { - timeout.clear(); - } else { - clearTimeout(timeout); - } - }, - }; - - /***/ - }, - - /***/ 5354: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const diagnosticsChannel = __nccwpck_require__(7643); - const { uid, states } = __nccwpck_require__(9188); - const { kReadyState, kSentClose, kByteParser, kReceivedClose } = __nccwpck_require__(7578); - const { fireEvent, failWebsocketConnection } = __nccwpck_require__(5515); - const { CloseEvent } = __nccwpck_require__(2611); - const { makeRequest } = __nccwpck_require__(8359); - const { fetching } = __nccwpck_require__(4881); - const { Headers } = __nccwpck_require__(554); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - const { kHeadersList } = __nccwpck_require__(2785); - - const channels = {}; - channels.open = diagnosticsChannel.channel("undici:websocket:open"); - channels.close = diagnosticsChannel.channel("undici:websocket:close"); - channels.socketError = diagnosticsChannel.channel("undici:websocket:socket_error"); - - /** @type {import('crypto')} */ - let crypto; - try { - crypto = __nccwpck_require__(6113); - } catch {} - - /** - * @see https://websockets.spec.whatwg.org/#concept-websocket-establish - * @param {URL} url - * @param {string|string[]} protocols - * @param {import('./websocket').WebSocket} ws - * @param {(response: any) => void} onEstablish - * @param {Partial} options - */ - function establishWebSocketConnection(url, protocols, ws, onEstablish, options) { - // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s - // scheme is "ws", and to "https" otherwise. - const requestURL = url; - - requestURL.protocol = url.protocol === "ws:" ? "http:" : "https:"; - - // 2. Let request be a new request, whose URL is requestURL, client is client, - // service-workers mode is "none", referrer is "no-referrer", mode is - // "websocket", credentials mode is "include", cache mode is "no-store" , - // and redirect mode is "error". - const request = makeRequest({ - urlList: [requestURL], - serviceWorkers: "none", - referrer: "no-referrer", - mode: "websocket", - credentials: "include", - cache: "no-store", - redirect: "error", - }); - - // Note: undici extension, allow setting custom headers. - if (options.headers) { - const headersList = new Headers(options.headers)[kHeadersList]; - - request.headersList = headersList; - } - - // 3. Append (`Upgrade`, `websocket`) to request’s header list. - // 4. Append (`Connection`, `Upgrade`) to request’s header list. - // Note: both of these are handled by undici currently. - // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 - - // 5. Let keyValue be a nonce consisting of a randomly selected - // 16-byte value that has been forgiving-base64-encoded and - // isomorphic encoded. - const keyValue = crypto.randomBytes(16).toString("base64"); - - // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s - // header list. - request.headersList.append("sec-websocket-key", keyValue); - - // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s - // header list. - request.headersList.append("sec-websocket-version", "13"); - - // 8. For each protocol in protocols, combine - // (`Sec-WebSocket-Protocol`, protocol) in request’s header - // list. - for (const protocol of protocols) { - request.headersList.append("sec-websocket-protocol", protocol); - } - - // 9. Let permessageDeflate be a user-agent defined - // "permessage-deflate" extension header value. - // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 - // TODO: enable once permessage-deflate is supported - const permessageDeflate = ""; // 'permessage-deflate; 15' - - // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to - // request’s header list. - // request.headersList.append('sec-websocket-extensions', permessageDeflate) - - // 11. Fetch request with useParallelQueue set to true, and - // processResponse given response being these steps: - const controller = fetching({ - request, - useParallelQueue: true, - dispatcher: options.dispatcher ?? getGlobalDispatcher(), - processResponse(response) { - // 1. If response is a network error or its status is not 101, - // fail the WebSocket connection. - if (response.type === "error" || response.status !== 101) { - failWebsocketConnection(ws, "Received network error or non-101 status code."); - return; - } - - // 2. If protocols is not the empty list and extracting header - // list values given `Sec-WebSocket-Protocol` and response’s - // header list results in null, failure, or the empty byte - // sequence, then fail the WebSocket connection. - if (protocols.length !== 0 && !response.headersList.get("Sec-WebSocket-Protocol")) { - failWebsocketConnection(ws, "Server did not respond with sent protocols."); - return; - } - - // 3. Follow the requirements stated step 2 to step 6, inclusive, - // of the last set of steps in section 4.1 of The WebSocket - // Protocol to validate response. This either results in fail - // the WebSocket connection or the WebSocket connection is - // established. - - // 2. If the response lacks an |Upgrade| header field or the |Upgrade| - // header field contains a value that is not an ASCII case- - // insensitive match for the value "websocket", the client MUST - // _Fail the WebSocket Connection_. - if (response.headersList.get("Upgrade")?.toLowerCase() !== "websocket") { - failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".'); - return; - } - - // 3. If the response lacks a |Connection| header field or the - // |Connection| header field doesn't contain a token that is an - // ASCII case-insensitive match for the value "Upgrade", the client - // MUST _Fail the WebSocket Connection_. - if (response.headersList.get("Connection")?.toLowerCase() !== "upgrade") { - failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".'); - return; - } - - // 4. If the response lacks a |Sec-WebSocket-Accept| header field or - // the |Sec-WebSocket-Accept| contains a value other than the - // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- - // Key| (as a string, not base64-decoded) with the string "258EAFA5- - // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and - // trailing whitespace, the client MUST _Fail the WebSocket - // Connection_. - const secWSAccept = response.headersList.get("Sec-WebSocket-Accept"); - const digest = crypto - .createHash("sha1") - .update(keyValue + uid) - .digest("base64"); - if (secWSAccept !== digest) { - failWebsocketConnection( - ws, - "Incorrect hash received in Sec-WebSocket-Accept header.", - ); - return; - } - - // 5. If the response includes a |Sec-WebSocket-Extensions| header - // field and this header field indicates the use of an extension - // that was not present in the client's handshake (the server has - // indicated an extension not requested by the client), the client - // MUST _Fail the WebSocket Connection_. (The parsing of this - // header field to determine which extensions are requested is - // discussed in Section 9.1.) - const secExtension = response.headersList.get("Sec-WebSocket-Extensions"); - - if (secExtension !== null && secExtension !== permessageDeflate) { - failWebsocketConnection( - ws, - "Received different permessage-deflate than the one set.", - ); - return; - } - - // 6. If the response includes a |Sec-WebSocket-Protocol| header field - // and this header field indicates the use of a subprotocol that was - // not present in the client's handshake (the server has indicated a - // subprotocol not requested by the client), the client MUST _Fail - // the WebSocket Connection_. - const secProtocol = response.headersList.get("Sec-WebSocket-Protocol"); - - if ( - secProtocol !== null && - secProtocol !== request.headersList.get("Sec-WebSocket-Protocol") - ) { - failWebsocketConnection(ws, "Protocol was not set in the opening handshake."); - return; - } - - response.socket.on("data", onSocketData); - response.socket.on("close", onSocketClose); - response.socket.on("error", onSocketError); - - if (channels.open.hasSubscribers) { - channels.open.publish({ - address: response.socket.address(), - protocol: secProtocol, - extensions: secExtension, - }); - } - - onEstablish(response); - }, - }); - - return controller; - } - - /** - * @param {Buffer} chunk - */ - function onSocketData(chunk) { - if (!this.ws[kByteParser].write(chunk)) { - this.pause(); - } - } - - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 - */ - function onSocketClose() { - const { ws } = this; - - // If the TCP connection was closed after the - // WebSocket closing handshake was completed, the WebSocket connection - // is said to have been closed _cleanly_. - const wasClean = ws[kSentClose] && ws[kReceivedClose]; - - let code = 1005; - let reason = ""; - - const result = ws[kByteParser].closingInfo; - - if (result) { - code = result.code ?? 1005; - reason = result.reason; - } else if (!ws[kSentClose]) { - // If _The WebSocket - // Connection is Closed_ and no Close control frame was received by the - // endpoint (such as could occur if the underlying transport connection - // is lost), _The WebSocket Connection Close Code_ is considered to be - // 1006. - code = 1006; - } - - // 1. Change the ready state to CLOSED (3). - ws[kReadyState] = states.CLOSED; - - // 2. If the user agent was required to fail the WebSocket - // connection, or if the WebSocket connection was closed - // after being flagged as full, fire an event named error - // at the WebSocket object. - // TODO - - // 3. Fire an event named close at the WebSocket object, - // using CloseEvent, with the wasClean attribute - // initialized to true if the connection closed cleanly - // and false otherwise, the code attribute initialized to - // the WebSocket connection close code, and the reason - // attribute initialized to the result of applying UTF-8 - // decode without BOM to the WebSocket connection close - // reason. - fireEvent("close", ws, CloseEvent, { - wasClean, - code, - reason, - }); - - if (channels.close.hasSubscribers) { - channels.close.publish({ - websocket: ws, - code, - reason, - }); - } - } - - function onSocketError(error) { - const { ws } = this; - - ws[kReadyState] = states.CLOSING; - - if (channels.socketError.hasSubscribers) { - channels.socketError.publish(error); - } - - this.destroy(); - } - - module.exports = { - establishWebSocketConnection, - }; - - /***/ - }, - - /***/ 9188: /***/ (module) => { - "use strict"; - - // This is a Globally Unique Identifier unique used - // to validate that the endpoint accepts websocket - // connections. - // See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 - const uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; - - /** @type {PropertyDescriptor} */ - const staticPropertyDescriptors = { - enumerable: true, - writable: false, - configurable: false, - }; - - const states = { - CONNECTING: 0, - OPEN: 1, - CLOSING: 2, - CLOSED: 3, - }; - - const opcodes = { - CONTINUATION: 0x0, - TEXT: 0x1, - BINARY: 0x2, - CLOSE: 0x8, - PING: 0x9, - PONG: 0xa, - }; - - const maxUnsigned16Bit = 2 ** 16 - 1; // 65535 - - const parserStates = { - INFO: 0, - PAYLOADLENGTH_16: 2, - PAYLOADLENGTH_64: 3, - READ_DATA: 4, - }; - - const emptyBuffer = Buffer.allocUnsafe(0); - - module.exports = { - uid, - staticPropertyDescriptors, - states, - opcodes, - maxUnsigned16Bit, - parserStates, - emptyBuffer, - }; - - /***/ - }, - - /***/ 2611: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { webidl } = __nccwpck_require__(1744); - const { kEnumerableProperty } = __nccwpck_require__(3983); - const { MessagePort } = __nccwpck_require__(1267); - - /** - * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent - */ - class MessageEvent extends Event { - #eventInit; - - constructor(type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent constructor" }); - - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.MessageEventInit(eventInitDict); - - super(type, eventInitDict); - - this.#eventInit = eventInitDict; - } - - get data() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.data; - } - - get origin() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.origin; - } - - get lastEventId() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.lastEventId; - } - - get source() { - webidl.brandCheck(this, MessageEvent); - - return this.#eventInit.source; - } - - get ports() { - webidl.brandCheck(this, MessageEvent); - - if (!Object.isFrozen(this.#eventInit.ports)) { - Object.freeze(this.#eventInit.ports); - } - - return this.#eventInit.ports; - } - - initMessageEvent( - type, - bubbles = false, - cancelable = false, - data = null, - origin = "", - lastEventId = "", - source = null, - ports = [], - ) { - webidl.brandCheck(this, MessageEvent); - - webidl.argumentLengthCheck(arguments, 1, { header: "MessageEvent.initMessageEvent" }); - - return new MessageEvent(type, { - bubbles, - cancelable, - data, - origin, - lastEventId, - source, - ports, - }); - } - } - - /** - * @see https://websockets.spec.whatwg.org/#the-closeevent-interface - */ - class CloseEvent extends Event { - #eventInit; - - constructor(type, eventInitDict = {}) { - webidl.argumentLengthCheck(arguments, 1, { header: "CloseEvent constructor" }); - - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.CloseEventInit(eventInitDict); - - super(type, eventInitDict); - - this.#eventInit = eventInitDict; - } - - get wasClean() { - webidl.brandCheck(this, CloseEvent); - - return this.#eventInit.wasClean; - } - - get code() { - webidl.brandCheck(this, CloseEvent); - - return this.#eventInit.code; - } - - get reason() { - webidl.brandCheck(this, CloseEvent); - - return this.#eventInit.reason; - } - } - - // https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface - class ErrorEvent extends Event { - #eventInit; - - constructor(type, eventInitDict) { - webidl.argumentLengthCheck(arguments, 1, { header: "ErrorEvent constructor" }); - - super(type, eventInitDict); - - type = webidl.converters.DOMString(type); - eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}); - - this.#eventInit = eventInitDict; - } - - get message() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.message; - } - - get filename() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.filename; - } - - get lineno() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.lineno; - } - - get colno() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.colno; - } - - get error() { - webidl.brandCheck(this, ErrorEvent); - - return this.#eventInit.error; - } - } - - Object.defineProperties(MessageEvent.prototype, { - [Symbol.toStringTag]: { - value: "MessageEvent", - configurable: true, - }, - data: kEnumerableProperty, - origin: kEnumerableProperty, - lastEventId: kEnumerableProperty, - source: kEnumerableProperty, - ports: kEnumerableProperty, - initMessageEvent: kEnumerableProperty, - }); - - Object.defineProperties(CloseEvent.prototype, { - [Symbol.toStringTag]: { - value: "CloseEvent", - configurable: true, - }, - reason: kEnumerableProperty, - code: kEnumerableProperty, - wasClean: kEnumerableProperty, - }); - - Object.defineProperties(ErrorEvent.prototype, { - [Symbol.toStringTag]: { - value: "ErrorEvent", - configurable: true, - }, - message: kEnumerableProperty, - filename: kEnumerableProperty, - lineno: kEnumerableProperty, - colno: kEnumerableProperty, - error: kEnumerableProperty, - }); - - webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort); - - webidl.converters["sequence"] = webidl.sequenceConverter( - webidl.converters.MessagePort, - ); - - const eventInit = [ - { - key: "bubbles", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "cancelable", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "composed", - converter: webidl.converters.boolean, - defaultValue: false, - }, - ]; - - webidl.converters.MessageEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: "data", - converter: webidl.converters.any, - defaultValue: null, - }, - { - key: "origin", - converter: webidl.converters.USVString, - defaultValue: "", - }, - { - key: "lastEventId", - converter: webidl.converters.DOMString, - defaultValue: "", - }, - { - key: "source", - // Node doesn't implement WindowProxy or ServiceWorker, so the only - // valid value for source is a MessagePort. - converter: webidl.nullableConverter(webidl.converters.MessagePort), - defaultValue: null, - }, - { - key: "ports", - converter: webidl.converters["sequence"], - get defaultValue() { - return []; - }, - }, - ]); - - webidl.converters.CloseEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: "wasClean", - converter: webidl.converters.boolean, - defaultValue: false, - }, - { - key: "code", - converter: webidl.converters["unsigned short"], - defaultValue: 0, - }, - { - key: "reason", - converter: webidl.converters.USVString, - defaultValue: "", - }, - ]); - - webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ - ...eventInit, - { - key: "message", - converter: webidl.converters.DOMString, - defaultValue: "", - }, - { - key: "filename", - converter: webidl.converters.USVString, - defaultValue: "", - }, - { - key: "lineno", - converter: webidl.converters["unsigned long"], - defaultValue: 0, - }, - { - key: "colno", - converter: webidl.converters["unsigned long"], - defaultValue: 0, - }, - { - key: "error", - converter: webidl.converters.any, - }, - ]); - - module.exports = { - MessageEvent, - CloseEvent, - ErrorEvent, - }; - - /***/ - }, - - /***/ 5444: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { maxUnsigned16Bit } = __nccwpck_require__(9188); - - /** @type {import('crypto')} */ - let crypto; - try { - crypto = __nccwpck_require__(6113); - } catch {} - - class WebsocketFrameSend { - /** - * @param {Buffer|undefined} data - */ - constructor(data) { - this.frameData = data; - this.maskKey = crypto.randomBytes(4); - } - - createFrame(opcode) { - const bodyLength = this.frameData?.byteLength ?? 0; - - /** @type {number} */ - let payloadLength = bodyLength; // 0-125 - let offset = 6; - - if (bodyLength > maxUnsigned16Bit) { - offset += 8; // payload length is next 8 bytes - payloadLength = 127; - } else if (bodyLength > 125) { - offset += 2; // payload length is next 2 bytes - payloadLength = 126; - } - - const buffer = Buffer.allocUnsafe(bodyLength + offset); - - // Clear first 2 bytes, everything else is overwritten - buffer[0] = buffer[1] = 0; - buffer[0] |= 0x80; // FIN - buffer[0] = (buffer[0] & 0xf0) + opcode; // opcode - - /*! ws. MIT License. Einar Otto Stangvik */ - buffer[offset - 4] = this.maskKey[0]; - buffer[offset - 3] = this.maskKey[1]; - buffer[offset - 2] = this.maskKey[2]; - buffer[offset - 1] = this.maskKey[3]; - - buffer[1] = payloadLength; - - if (payloadLength === 126) { - buffer.writeUInt16BE(bodyLength, 2); - } else if (payloadLength === 127) { - // Clear extended payload length - buffer[2] = buffer[3] = 0; - buffer.writeUIntBE(bodyLength, 4, 6); - } - - buffer[1] |= 0x80; // MASK - - // mask body - for (let i = 0; i < bodyLength; i++) { - buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]; - } - - return buffer; - } - } - - module.exports = { - WebsocketFrameSend, - }; - - /***/ - }, - - /***/ 1688: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { Writable } = __nccwpck_require__(2781); - const diagnosticsChannel = __nccwpck_require__(7643); - const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(9188); - const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(7578); - const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = - __nccwpck_require__(5515); - const { WebsocketFrameSend } = __nccwpck_require__(5444); - - // This code was influenced by ws released under the MIT license. - // Copyright (c) 2011 Einar Otto Stangvik - // Copyright (c) 2013 Arnout Kazemier and contributors - // Copyright (c) 2016 Luigi Pinca and contributors - - const channels = {}; - channels.ping = diagnosticsChannel.channel("undici:websocket:ping"); - channels.pong = diagnosticsChannel.channel("undici:websocket:pong"); - - class ByteParser extends Writable { - #buffers = []; - #byteOffset = 0; - - #state = parserStates.INFO; - - #info = {}; - #fragments = []; - - constructor(ws) { - super(); - - this.ws = ws; - } - - /** - * @param {Buffer} chunk - * @param {() => void} callback - */ - _write(chunk, _, callback) { - this.#buffers.push(chunk); - this.#byteOffset += chunk.length; - - this.run(callback); - } - - /** - * Runs whenever a new chunk is received. - * Callback is called whenever there are no more chunks buffering, - * or not enough bytes are buffered to parse. - */ - run(callback) { - while (true) { - if (this.#state === parserStates.INFO) { - // If there aren't enough bytes to parse the payload length, etc. - if (this.#byteOffset < 2) { - return callback(); - } - - const buffer = this.consume(2); - - this.#info.fin = (buffer[0] & 0x80) !== 0; - this.#info.opcode = buffer[0] & 0x0f; - - // If we receive a fragmented message, we use the type of the first - // frame to parse the full message as binary/text, when it's terminated - this.#info.originalOpcode ??= this.#info.opcode; - - this.#info.fragmented = - !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION; - - if ( - this.#info.fragmented && - this.#info.opcode !== opcodes.BINARY && - this.#info.opcode !== opcodes.TEXT - ) { - // Only text and binary frames can be fragmented - failWebsocketConnection(this.ws, "Invalid frame type was fragmented."); - return; - } - - const payloadLength = buffer[1] & 0x7f; - - if (payloadLength <= 125) { - this.#info.payloadLength = payloadLength; - this.#state = parserStates.READ_DATA; - } else if (payloadLength === 126) { - this.#state = parserStates.PAYLOADLENGTH_16; - } else if (payloadLength === 127) { - this.#state = parserStates.PAYLOADLENGTH_64; - } - - if (this.#info.fragmented && payloadLength > 125) { - // A fragmented frame can't be fragmented itself - failWebsocketConnection(this.ws, "Fragmented frame exceeded 125 bytes."); - return; - } else if ( - (this.#info.opcode === opcodes.PING || - this.#info.opcode === opcodes.PONG || - this.#info.opcode === opcodes.CLOSE) && - payloadLength > 125 - ) { - // Control frames can have a payload length of 125 bytes MAX - failWebsocketConnection( - this.ws, - "Payload length for control frame exceeded 125 bytes.", - ); - return; - } else if (this.#info.opcode === opcodes.CLOSE) { - if (payloadLength === 1) { - failWebsocketConnection( - this.ws, - "Received close frame with a 1-byte body.", - ); - return; - } - - const body = this.consume(payloadLength); - - this.#info.closeInfo = this.parseCloseBody(false, body); - - if (!this.ws[kSentClose]) { - // If an endpoint receives a Close frame and did not previously send a - // Close frame, the endpoint MUST send a Close frame in response. (When - // sending a Close frame in response, the endpoint typically echos the - // status code it received.) - const body = Buffer.allocUnsafe(2); - body.writeUInt16BE(this.#info.closeInfo.code, 0); - const closeFrame = new WebsocketFrameSend(body); - - this.ws[kResponse].socket.write( - closeFrame.createFrame(opcodes.CLOSE), - (err) => { - if (!err) { - this.ws[kSentClose] = true; - } - }, - ); - } - - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - this.ws[kReadyState] = states.CLOSING; - this.ws[kReceivedClose] = true; - - this.end(); - - return; - } else if (this.#info.opcode === opcodes.PING) { - // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in - // response, unless it already received a Close frame. - // A Pong frame sent in response to a Ping frame must have identical - // "Application data" - - const body = this.consume(payloadLength); - - if (!this.ws[kReceivedClose]) { - const frame = new WebsocketFrameSend(body); - - this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)); - - if (channels.ping.hasSubscribers) { - channels.ping.publish({ - payload: body, - }); - } - } - - this.#state = parserStates.INFO; - - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - return; - } - } else if (this.#info.opcode === opcodes.PONG) { - // A Pong frame MAY be sent unsolicited. This serves as a - // unidirectional heartbeat. A response to an unsolicited Pong frame is - // not expected. - - const body = this.consume(payloadLength); - - if (channels.pong.hasSubscribers) { - channels.pong.publish({ - payload: body, - }); - } - - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - return; - } - } - } else if (this.#state === parserStates.PAYLOADLENGTH_16) { - if (this.#byteOffset < 2) { - return callback(); - } - - const buffer = this.consume(2); - - this.#info.payloadLength = buffer.readUInt16BE(0); - this.#state = parserStates.READ_DATA; - } else if (this.#state === parserStates.PAYLOADLENGTH_64) { - if (this.#byteOffset < 8) { - return callback(); - } - - const buffer = this.consume(8); - const upper = buffer.readUInt32BE(0); - - // 2^31 is the maxinimum bytes an arraybuffer can contain - // on 32-bit systems. Although, on 64-bit systems, this is - // 2^53-1 bytes. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length - // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 - // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e - if (upper > 2 ** 31 - 1) { - failWebsocketConnection(this.ws, "Received payload length > 2^31 bytes."); - return; - } - - const lower = buffer.readUInt32BE(4); - - this.#info.payloadLength = (upper << 8) + lower; - this.#state = parserStates.READ_DATA; - } else if (this.#state === parserStates.READ_DATA) { - if (this.#byteOffset < this.#info.payloadLength) { - // If there is still more data in this chunk that needs to be read - return callback(); - } else if (this.#byteOffset >= this.#info.payloadLength) { - // If the server sent multiple frames in a single chunk - - const body = this.consume(this.#info.payloadLength); - - this.#fragments.push(body); - - // If the frame is unfragmented, or a fragmented frame was terminated, - // a message was received - if ( - !this.#info.fragmented || - (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION) - ) { - const fullMessage = Buffer.concat(this.#fragments); - - websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage); - - this.#info = {}; - this.#fragments.length = 0; - } - - this.#state = parserStates.INFO; - } - } - - if (this.#byteOffset > 0) { - continue; - } else { - callback(); - break; - } - } - } - - /** - * Take n bytes from the buffered Buffers - * @param {number} n - * @returns {Buffer|null} - */ - consume(n) { - if (n > this.#byteOffset) { - return null; - } else if (n === 0) { - return emptyBuffer; - } - - if (this.#buffers[0].length === n) { - this.#byteOffset -= this.#buffers[0].length; - return this.#buffers.shift(); - } - - const buffer = Buffer.allocUnsafe(n); - let offset = 0; - - while (offset !== n) { - const next = this.#buffers[0]; - const { length } = next; - - if (length + offset === n) { - buffer.set(this.#buffers.shift(), offset); - break; - } else if (length + offset > n) { - buffer.set(next.subarray(0, n - offset), offset); - this.#buffers[0] = next.subarray(n - offset); - break; - } else { - buffer.set(this.#buffers.shift(), offset); - offset += next.length; - } - } - - this.#byteOffset -= n; - - return buffer; - } - - parseCloseBody(onlyCode, data) { - // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 - /** @type {number|undefined} */ - let code; - - if (data.length >= 2) { - // _The WebSocket Connection Close Code_ is - // defined as the status code (Section 7.4) contained in the first Close - // control frame received by the application - code = data.readUInt16BE(0); - } - - if (onlyCode) { - if (!isValidStatusCode(code)) { - return null; - } - - return { code }; - } - - // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 - /** @type {Buffer} */ - let reason = data.subarray(2); - - // Remove BOM - if (reason[0] === 0xef && reason[1] === 0xbb && reason[2] === 0xbf) { - reason = reason.subarray(3); - } - - if (code !== undefined && !isValidStatusCode(code)) { - return null; - } - - try { - // TODO: optimize this - reason = new TextDecoder("utf-8", { fatal: true }).decode(reason); - } catch { - return null; - } - - return { code, reason }; - } - - get closingInfo() { - return this.#info.closeInfo; - } - } - - module.exports = { - ByteParser, - }; - - /***/ - }, - - /***/ 7578: /***/ (module) => { - "use strict"; - - module.exports = { - kWebSocketURL: Symbol("url"), - kReadyState: Symbol("ready state"), - kController: Symbol("controller"), - kResponse: Symbol("response"), - kBinaryType: Symbol("binary type"), - kSentClose: Symbol("sent close"), - kReceivedClose: Symbol("received close"), - kByteParser: Symbol("byte parser"), - }; - - /***/ - }, - - /***/ 5515: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = - __nccwpck_require__(7578); - const { states, opcodes } = __nccwpck_require__(9188); - const { MessageEvent, ErrorEvent } = __nccwpck_require__(2611); - - /* globals Blob */ - - /** - * @param {import('./websocket').WebSocket} ws - */ - function isEstablished(ws) { - // If the server's response is validated as provided for above, it is - // said that _The WebSocket Connection is Established_ and that the - // WebSocket Connection is in the OPEN state. - return ws[kReadyState] === states.OPEN; - } - - /** - * @param {import('./websocket').WebSocket} ws - */ - function isClosing(ws) { - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - return ws[kReadyState] === states.CLOSING; - } - - /** - * @param {import('./websocket').WebSocket} ws - */ - function isClosed(ws) { - return ws[kReadyState] === states.CLOSED; - } - - /** - * @see https://dom.spec.whatwg.org/#concept-event-fire - * @param {string} e - * @param {EventTarget} target - * @param {EventInit | undefined} eventInitDict - */ - function fireEvent(e, target, eventConstructor = Event, eventInitDict) { - // 1. If eventConstructor is not given, then let eventConstructor be Event. - - // 2. Let event be the result of creating an event given eventConstructor, - // in the relevant realm of target. - // 3. Initialize event’s type attribute to e. - const event = new eventConstructor(e, eventInitDict); // eslint-disable-line new-cap - - // 4. Initialize any other IDL attributes of event as described in the - // invocation of this algorithm. - - // 5. Return the result of dispatching event at target, with legacy target - // override flag set if set. - target.dispatchEvent(event); - } - - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - * @param {import('./websocket').WebSocket} ws - * @param {number} type Opcode - * @param {Buffer} data application data - */ - function websocketMessageReceived(ws, type, data) { - // 1. If ready state is not OPEN (1), then return. - if (ws[kReadyState] !== states.OPEN) { - return; - } - - // 2. Let dataForEvent be determined by switching on type and binary type: - let dataForEvent; - - if (type === opcodes.TEXT) { - // -> type indicates that the data is Text - // a new DOMString containing data - try { - dataForEvent = new TextDecoder("utf-8", { fatal: true }).decode(data); - } catch { - failWebsocketConnection(ws, "Received invalid UTF-8 in text frame."); - return; - } - } else if (type === opcodes.BINARY) { - if (ws[kBinaryType] === "blob") { - // -> type indicates that the data is Binary and binary type is "blob" - // a new Blob object, created in the relevant Realm of the WebSocket - // object, that represents data as its raw data - dataForEvent = new Blob([data]); - } else { - // -> type indicates that the data is Binary and binary type is "arraybuffer" - // a new ArrayBuffer object, created in the relevant Realm of the - // WebSocket object, whose contents are data - dataForEvent = new Uint8Array(data).buffer; - } - } - - // 3. Fire an event named message at the WebSocket object, using MessageEvent, - // with the origin attribute initialized to the serialization of the WebSocket - // object’s url's origin, and the data attribute initialized to dataForEvent. - fireEvent("message", ws, MessageEvent, { - origin: ws[kWebSocketURL].origin, - data: dataForEvent, - }); - } - - /** - * @see https://datatracker.ietf.org/doc/html/rfc6455 - * @see https://datatracker.ietf.org/doc/html/rfc2616 - * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 - * @param {string} protocol - */ - function isValidSubprotocol(protocol) { - // If present, this value indicates one - // or more comma-separated subprotocol the client wishes to speak, - // ordered by preference. The elements that comprise this value - // MUST be non-empty strings with characters in the range U+0021 to - // U+007E not including separator characters as defined in - // [RFC2616] and MUST all be unique strings. - if (protocol.length === 0) { - return false; - } - - for (const char of protocol) { - const code = char.charCodeAt(0); - - if ( - code < 0x21 || - code > 0x7e || - char === "(" || - char === ")" || - char === "<" || - char === ">" || - char === "@" || - char === "," || - char === ";" || - char === ":" || - char === "\\" || - char === '"' || - char === "/" || - char === "[" || - char === "]" || - char === "?" || - char === "=" || - char === "{" || - char === "}" || - code === 32 || // SP - code === 9 // HT - ) { - return false; - } - } - - return true; - } - - /** - * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 - * @param {number} code - */ - function isValidStatusCode(code) { - if (code >= 1000 && code < 1015) { - return ( - code !== 1004 && // reserved - code !== 1005 && // "MUST NOT be set as a status code" - code !== 1006 // "MUST NOT be set as a status code" - ); - } - - return code >= 3000 && code <= 4999; - } - - /** - * @param {import('./websocket').WebSocket} ws - * @param {string|undefined} reason - */ - function failWebsocketConnection(ws, reason) { - const { [kController]: controller, [kResponse]: response } = ws; - - controller.abort(); - - if (response?.socket && !response.socket.destroyed) { - response.socket.destroy(); - } - - if (reason) { - fireEvent("error", ws, ErrorEvent, { - error: new Error(reason), - }); - } - } - - module.exports = { - isEstablished, - isClosing, - isClosed, - fireEvent, - isValidSubprotocol, - isValidStatusCode, - failWebsocketConnection, - websocketMessageReceived, - }; - - /***/ - }, - - /***/ 4284: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const { webidl } = __nccwpck_require__(1744); - const { DOMException } = __nccwpck_require__(1037); - const { URLSerializer } = __nccwpck_require__(685); - const { getGlobalOrigin } = __nccwpck_require__(1246); - const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(9188); - const { - kWebSocketURL, - kReadyState, - kController, - kBinaryType, - kResponse, - kSentClose, - kByteParser, - } = __nccwpck_require__(7578); - const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = - __nccwpck_require__(5515); - const { establishWebSocketConnection } = __nccwpck_require__(5354); - const { WebsocketFrameSend } = __nccwpck_require__(5444); - const { ByteParser } = __nccwpck_require__(1688); - const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3983); - const { getGlobalDispatcher } = __nccwpck_require__(1892); - const { types } = __nccwpck_require__(3837); - - let experimentalWarned = false; - - // https://websockets.spec.whatwg.org/#interface-definition - class WebSocket extends EventTarget { - #events = { - open: null, - error: null, - close: null, - message: null, - }; - - #bufferedAmount = 0; - #protocol = ""; - #extensions = ""; - - /** - * @param {string} url - * @param {string|string[]} protocols - */ - constructor(url, protocols = []) { - super(); - - webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket constructor" }); - - if (!experimentalWarned) { - experimentalWarned = true; - process.emitWarning( - "WebSockets are experimental, expect them to change at any time.", - { - code: "UNDICI-WS", - }, - ); - } - - const options = - webidl.converters["DOMString or sequence or WebSocketInit"](protocols); - - url = webidl.converters.USVString(url); - protocols = options.protocols; - - // 1. Let baseURL be this's relevant settings object's API base URL. - const baseURL = getGlobalOrigin(); - - // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. - let urlRecord; - - try { - urlRecord = new URL(url, baseURL); - } catch (e) { - // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. - throw new DOMException(e, "SyntaxError"); - } - - // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". - if (urlRecord.protocol === "http:") { - urlRecord.protocol = "ws:"; - } else if (urlRecord.protocol === "https:") { - // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". - urlRecord.protocol = "wss:"; - } - - // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. - if (urlRecord.protocol !== "ws:" && urlRecord.protocol !== "wss:") { - throw new DOMException( - `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, - "SyntaxError", - ); - } - - // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" - // DOMException. - if (urlRecord.hash || urlRecord.href.endsWith("#")) { - throw new DOMException("Got fragment", "SyntaxError"); - } - - // 8. If protocols is a string, set protocols to a sequence consisting - // of just that string. - if (typeof protocols === "string") { - protocols = [protocols]; - } - - // 9. If any of the values in protocols occur more than once or otherwise - // fail to match the requirements for elements that comprise the value - // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket - // protocol, then throw a "SyntaxError" DOMException. - if (protocols.length !== new Set(protocols.map((p) => p.toLowerCase())).size) { - throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); - } - - if (protocols.length > 0 && !protocols.every((p) => isValidSubprotocol(p))) { - throw new DOMException("Invalid Sec-WebSocket-Protocol value", "SyntaxError"); - } - - // 10. Set this's url to urlRecord. - this[kWebSocketURL] = new URL(urlRecord.href); - - // 11. Let client be this's relevant settings object. - - // 12. Run this step in parallel: - - // 1. Establish a WebSocket connection given urlRecord, protocols, - // and client. - this[kController] = establishWebSocketConnection( - urlRecord, - protocols, - this, - (response) => this.#onConnectionEstablished(response), - options, - ); - - // Each WebSocket object has an associated ready state, which is a - // number representing the state of the connection. Initially it must - // be CONNECTING (0). - this[kReadyState] = WebSocket.CONNECTING; - - // The extensions attribute must initially return the empty string. - - // The protocol attribute must initially return the empty string. - - // Each WebSocket object has an associated binary type, which is a - // BinaryType. Initially it must be "blob". - this[kBinaryType] = "blob"; - } - - /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-close - * @param {number|undefined} code - * @param {string|undefined} reason - */ - close(code = undefined, reason = undefined) { - webidl.brandCheck(this, WebSocket); - - if (code !== undefined) { - code = webidl.converters["unsigned short"](code, { clamp: true }); - } - - if (reason !== undefined) { - reason = webidl.converters.USVString(reason); - } - - // 1. If code is present, but is neither an integer equal to 1000 nor an - // integer in the range 3000 to 4999, inclusive, throw an - // "InvalidAccessError" DOMException. - if (code !== undefined) { - if (code !== 1000 && (code < 3000 || code > 4999)) { - throw new DOMException("invalid code", "InvalidAccessError"); - } - } - - let reasonByteLength = 0; - - // 2. If reason is present, then run these substeps: - if (reason !== undefined) { - // 1. Let reasonBytes be the result of encoding reason. - // 2. If reasonBytes is longer than 123 bytes, then throw a - // "SyntaxError" DOMException. - reasonByteLength = Buffer.byteLength(reason); - - if (reasonByteLength > 123) { - throw new DOMException( - `Reason must be less than 123 bytes; received ${reasonByteLength}`, - "SyntaxError", - ); - } - } - - // 3. Run the first matching steps from the following list: - if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { - // If this's ready state is CLOSING (2) or CLOSED (3) - // Do nothing. - } else if (!isEstablished(this)) { - // If the WebSocket connection is not yet established - // Fail the WebSocket connection and set this's ready state - // to CLOSING (2). - failWebsocketConnection(this, "Connection was closed before it was established."); - this[kReadyState] = WebSocket.CLOSING; - } else if (!isClosing(this)) { - // If the WebSocket closing handshake has not yet been started - // Start the WebSocket closing handshake and set this's ready - // state to CLOSING (2). - // - If neither code nor reason is present, the WebSocket Close - // message must not have a body. - // - If code is present, then the status code to use in the - // WebSocket Close message must be the integer given by code. - // - If reason is also present, then reasonBytes must be - // provided in the Close message after the status code. - - const frame = new WebsocketFrameSend(); - - // If neither code nor reason is present, the WebSocket Close - // message must not have a body. - - // If code is present, then the status code to use in the - // WebSocket Close message must be the integer given by code. - if (code !== undefined && reason === undefined) { - frame.frameData = Buffer.allocUnsafe(2); - frame.frameData.writeUInt16BE(code, 0); - } else if (code !== undefined && reason !== undefined) { - // If reason is also present, then reasonBytes must be - // provided in the Close message after the status code. - frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength); - frame.frameData.writeUInt16BE(code, 0); - // the body MAY contain UTF-8-encoded data with value /reason/ - frame.frameData.write(reason, 2, "utf-8"); - } else { - frame.frameData = emptyBuffer; - } - - /** @type {import('stream').Duplex} */ - const socket = this[kResponse].socket; - - socket.write(frame.createFrame(opcodes.CLOSE), (err) => { - if (!err) { - this[kSentClose] = true; - } - }); - - // Upon either sending or receiving a Close control frame, it is said - // that _The WebSocket Closing Handshake is Started_ and that the - // WebSocket connection is in the CLOSING state. - this[kReadyState] = states.CLOSING; - } else { - // Otherwise - // Set this's ready state to CLOSING (2). - this[kReadyState] = WebSocket.CLOSING; - } - } - - /** - * @see https://websockets.spec.whatwg.org/#dom-websocket-send - * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data - */ - send(data) { - webidl.brandCheck(this, WebSocket); - - webidl.argumentLengthCheck(arguments, 1, { header: "WebSocket.send" }); - - data = webidl.converters.WebSocketSendData(data); - - // 1. If this's ready state is CONNECTING, then throw an - // "InvalidStateError" DOMException. - if (this[kReadyState] === WebSocket.CONNECTING) { - throw new DOMException("Sent before connected.", "InvalidStateError"); - } - - // 2. Run the appropriate set of steps from the following list: - // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 - // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 - - if (!isEstablished(this) || isClosing(this)) { - return; - } - - /** @type {import('stream').Duplex} */ - const socket = this[kResponse].socket; - - // If data is a string - if (typeof data === "string") { - // If the WebSocket connection is established and the WebSocket - // closing handshake has not yet started, then the user agent - // must send a WebSocket Message comprised of the data argument - // using a text frame opcode; if the data cannot be sent, e.g. - // because it would need to be buffered but the buffer is full, - // the user agent must flag the WebSocket as full and then close - // the WebSocket connection. Any invocation of this method with a - // string argument that does not throw an exception must increase - // the bufferedAmount attribute by the number of bytes needed to - // express the argument as UTF-8. - - const value = Buffer.from(data); - const frame = new WebsocketFrameSend(value); - const buffer = frame.createFrame(opcodes.TEXT); - - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - } else if (types.isArrayBuffer(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need - // to be buffered but the buffer is full, the user agent must flag - // the WebSocket as full and then close the WebSocket connection. - // The data to be sent is the data stored in the buffer described - // by the ArrayBuffer object. Any invocation of this method with an - // ArrayBuffer argument that does not throw an exception must - // increase the bufferedAmount attribute by the length of the - // ArrayBuffer in bytes. - - const value = Buffer.from(data); - const frame = new WebsocketFrameSend(value); - const buffer = frame.createFrame(opcodes.BINARY); - - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - } else if (ArrayBuffer.isView(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need to - // be buffered but the buffer is full, the user agent must flag the - // WebSocket as full and then close the WebSocket connection. The - // data to be sent is the data stored in the section of the buffer - // described by the ArrayBuffer object that data references. Any - // invocation of this method with this kind of argument that does - // not throw an exception must increase the bufferedAmount attribute - // by the length of data’s buffer in bytes. - - const ab = Buffer.from(data, data.byteOffset, data.byteLength); - - const frame = new WebsocketFrameSend(ab); - const buffer = frame.createFrame(opcodes.BINARY); - - this.#bufferedAmount += ab.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= ab.byteLength; - }); - } else if (isBlobLike(data)) { - // If the WebSocket connection is established, and the WebSocket - // closing handshake has not yet started, then the user agent must - // send a WebSocket Message comprised of data using a binary frame - // opcode; if the data cannot be sent, e.g. because it would need to - // be buffered but the buffer is full, the user agent must flag the - // WebSocket as full and then close the WebSocket connection. The data - // to be sent is the raw data represented by the Blob object. Any - // invocation of this method with a Blob argument that does not throw - // an exception must increase the bufferedAmount attribute by the size - // of the Blob object’s raw data, in bytes. - - const frame = new WebsocketFrameSend(); - - data.arrayBuffer().then((ab) => { - const value = Buffer.from(ab); - frame.frameData = value; - const buffer = frame.createFrame(opcodes.BINARY); - - this.#bufferedAmount += value.byteLength; - socket.write(buffer, () => { - this.#bufferedAmount -= value.byteLength; - }); - }); - } - } - - get readyState() { - webidl.brandCheck(this, WebSocket); - - // The readyState getter steps are to return this's ready state. - return this[kReadyState]; - } - - get bufferedAmount() { - webidl.brandCheck(this, WebSocket); - - return this.#bufferedAmount; - } - - get url() { - webidl.brandCheck(this, WebSocket); - - // The url getter steps are to return this's url, serialized. - return URLSerializer(this[kWebSocketURL]); - } - - get extensions() { - webidl.brandCheck(this, WebSocket); - - return this.#extensions; - } - - get protocol() { - webidl.brandCheck(this, WebSocket); - - return this.#protocol; - } - - get onopen() { - webidl.brandCheck(this, WebSocket); - - return this.#events.open; - } - - set onopen(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.open) { - this.removeEventListener("open", this.#events.open); - } - - if (typeof fn === "function") { - this.#events.open = fn; - this.addEventListener("open", fn); - } else { - this.#events.open = null; - } - } - - get onerror() { - webidl.brandCheck(this, WebSocket); - - return this.#events.error; - } - - set onerror(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.error) { - this.removeEventListener("error", this.#events.error); - } - - if (typeof fn === "function") { - this.#events.error = fn; - this.addEventListener("error", fn); - } else { - this.#events.error = null; - } - } - - get onclose() { - webidl.brandCheck(this, WebSocket); - - return this.#events.close; - } - - set onclose(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.close) { - this.removeEventListener("close", this.#events.close); - } - - if (typeof fn === "function") { - this.#events.close = fn; - this.addEventListener("close", fn); - } else { - this.#events.close = null; - } - } - - get onmessage() { - webidl.brandCheck(this, WebSocket); - - return this.#events.message; - } - - set onmessage(fn) { - webidl.brandCheck(this, WebSocket); - - if (this.#events.message) { - this.removeEventListener("message", this.#events.message); - } - - if (typeof fn === "function") { - this.#events.message = fn; - this.addEventListener("message", fn); - } else { - this.#events.message = null; - } - } - - get binaryType() { - webidl.brandCheck(this, WebSocket); - - return this[kBinaryType]; - } - - set binaryType(type) { - webidl.brandCheck(this, WebSocket); - - if (type !== "blob" && type !== "arraybuffer") { - this[kBinaryType] = "blob"; - } else { - this[kBinaryType] = type; - } - } - - /** - * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol - */ - #onConnectionEstablished(response) { - // processResponse is called when the "response’s header list has been received and initialized." - // once this happens, the connection is open - this[kResponse] = response; - - const parser = new ByteParser(this); - parser.on("drain", function onParserDrain() { - this.ws[kResponse].socket.resume(); - }); - - response.socket.ws = this; - this[kByteParser] = parser; - - // 1. Change the ready state to OPEN (1). - this[kReadyState] = states.OPEN; - - // 2. Change the extensions attribute’s value to the extensions in use, if - // it is not the null value. - // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 - const extensions = response.headersList.get("sec-websocket-extensions"); - - if (extensions !== null) { - this.#extensions = extensions; - } - - // 3. Change the protocol attribute’s value to the subprotocol in use, if - // it is not the null value. - // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 - const protocol = response.headersList.get("sec-websocket-protocol"); - - if (protocol !== null) { - this.#protocol = protocol; - } - - // 4. Fire an event named open at the WebSocket object. - fireEvent("open", this); - } - } - - // https://websockets.spec.whatwg.org/#dom-websocket-connecting - WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING; - // https://websockets.spec.whatwg.org/#dom-websocket-open - WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN; - // https://websockets.spec.whatwg.org/#dom-websocket-closing - WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING; - // https://websockets.spec.whatwg.org/#dom-websocket-closed - WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED; - - Object.defineProperties(WebSocket.prototype, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors, - url: kEnumerableProperty, - readyState: kEnumerableProperty, - bufferedAmount: kEnumerableProperty, - onopen: kEnumerableProperty, - onerror: kEnumerableProperty, - onclose: kEnumerableProperty, - close: kEnumerableProperty, - onmessage: kEnumerableProperty, - binaryType: kEnumerableProperty, - send: kEnumerableProperty, - extensions: kEnumerableProperty, - protocol: kEnumerableProperty, - [Symbol.toStringTag]: { - value: "WebSocket", - writable: false, - enumerable: false, - configurable: true, - }, - }); - - Object.defineProperties(WebSocket, { - CONNECTING: staticPropertyDescriptors, - OPEN: staticPropertyDescriptors, - CLOSING: staticPropertyDescriptors, - CLOSED: staticPropertyDescriptors, - }); - - webidl.converters["sequence"] = webidl.sequenceConverter(webidl.converters.DOMString); - - webidl.converters["DOMString or sequence"] = function (V) { - if (webidl.util.Type(V) === "Object" && Symbol.iterator in V) { - return webidl.converters["sequence"](V); - } - - return webidl.converters.DOMString(V); - }; - - // This implements the propsal made in https://github.com/whatwg/websockets/issues/42 - webidl.converters.WebSocketInit = webidl.dictionaryConverter([ - { - key: "protocols", - converter: webidl.converters["DOMString or sequence"], - get defaultValue() { - return []; - }, - }, - { - key: "dispatcher", - converter: (V) => V, - get defaultValue() { - return getGlobalDispatcher(); - }, - }, - { - key: "headers", - converter: webidl.nullableConverter(webidl.converters.HeadersInit), - }, - ]); - - webidl.converters["DOMString or sequence or WebSocketInit"] = function (V) { - if (webidl.util.Type(V) === "Object" && !(Symbol.iterator in V)) { - return webidl.converters.WebSocketInit(V); - } - - return { protocols: webidl.converters["DOMString or sequence"](V) }; - }; - - webidl.converters.WebSocketSendData = function (V) { - if (webidl.util.Type(V) === "Object") { - if (isBlobLike(V)) { - return webidl.converters.Blob(V, { strict: false }); - } - - if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { - return webidl.converters.BufferSource(V); - } - } - - return webidl.converters.USVString(V); - }; - - module.exports = { - WebSocket, - }; - - /***/ - }, - - /***/ 5030: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); - - function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } - - if (typeof process === "object" && process.version !== undefined) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } - - return ""; - } - - exports.getUserAgent = getUserAgent; - //# sourceMappingURL=index.js.map - - /***/ - }, - - /***/ 5840: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - Object.defineProperty(exports, "v1", { - enumerable: true, - get: function () { - return _v.default; - }, - }); - Object.defineProperty(exports, "v3", { - enumerable: true, - get: function () { - return _v2.default; - }, - }); - Object.defineProperty(exports, "v4", { - enumerable: true, - get: function () { - return _v3.default; - }, - }); - Object.defineProperty(exports, "v5", { - enumerable: true, - get: function () { - return _v4.default; - }, - }); - Object.defineProperty(exports, "NIL", { - enumerable: true, - get: function () { - return _nil.default; - }, - }); - Object.defineProperty(exports, "version", { - enumerable: true, - get: function () { - return _version.default; - }, - }); - Object.defineProperty(exports, "validate", { - enumerable: true, - get: function () { - return _validate.default; - }, - }); - Object.defineProperty(exports, "stringify", { - enumerable: true, - get: function () { - return _stringify.default; - }, - }); - Object.defineProperty(exports, "parse", { - enumerable: true, - get: function () { - return _parse.default; - }, - }); - - var _v = _interopRequireDefault(__nccwpck_require__(8628)); - - var _v2 = _interopRequireDefault(__nccwpck_require__(6409)); - - var _v3 = _interopRequireDefault(__nccwpck_require__(5122)); - - var _v4 = _interopRequireDefault(__nccwpck_require__(9120)); - - var _nil = _interopRequireDefault(__nccwpck_require__(5332)); - - var _version = _interopRequireDefault(__nccwpck_require__(1595)); - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - var _parse = _interopRequireDefault(__nccwpck_require__(2746)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - /***/ - }, - - /***/ 4569: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === "string") { - bytes = Buffer.from(bytes, "utf8"); - } - - return _crypto.default.createHash("md5").update(bytes).digest(); - } - - var _default = md5; - exports["default"] = _default; - - /***/ - }, - - /***/ 5332: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - var _default = "00000000-0000-0000-0000-000000000000"; - exports["default"] = _default; - - /***/ - }, - - /***/ 2746: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError("Invalid UUID"); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = (v >>> 16) & 0xff; - arr[2] = (v >>> 8) & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) - - arr[10] = ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff; - arr[11] = (v / 0x100000000) & 0xff; - arr[12] = (v >>> 24) & 0xff; - arr[13] = (v >>> 16) & 0xff; - arr[14] = (v >>> 8) & 0xff; - arr[15] = v & 0xff; - return arr; - } - - var _default = parse; - exports["default"] = _default; - - /***/ - }, - - /***/ 814: /***/ (__unused_webpack_module, exports) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - var _default = - /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; - exports["default"] = _default; - - /***/ - }, - - /***/ 807: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = rng; - - var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate - - let poolPtr = rnds8Pool.length; - - function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); - - poolPtr = 0; - } - - return rnds8Pool.slice(poolPtr, (poolPtr += 16)); - } - - /***/ - }, - - /***/ 5274: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === "string") { - bytes = Buffer.from(bytes, "utf8"); - } - - return _crypto.default.createHash("sha1").update(bytes).digest(); - } - - var _default = sha1; - exports["default"] = _default; - - /***/ - }, - - /***/ 8950: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - /** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ - const byteToHex = []; - - for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); - } - - function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = ( - byteToHex[arr[offset + 0]] + - byteToHex[arr[offset + 1]] + - byteToHex[arr[offset + 2]] + - byteToHex[arr[offset + 3]] + - "-" + - byteToHex[arr[offset + 4]] + - byteToHex[arr[offset + 5]] + - "-" + - byteToHex[arr[offset + 6]] + - byteToHex[arr[offset + 7]] + - "-" + - byteToHex[arr[offset + 8]] + - byteToHex[arr[offset + 9]] + - "-" + - byteToHex[arr[offset + 10]] + - byteToHex[arr[offset + 11]] + - byteToHex[arr[offset + 12]] + - byteToHex[arr[offset + 13]] + - byteToHex[arr[offset + 14]] + - byteToHex[arr[offset + 15]] - ).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields - - if (!(0, _validate.default)(uuid)) { - throw TypeError("Stringified UUID is invalid"); - } - - return uuid; - } - - var _default = stringify; - exports["default"] = _default; - - /***/ - }, - - /***/ 8628: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _rng = _interopRequireDefault(__nccwpck_require__(807)); - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - let _nodeId; - - let _clockseq; // Previous uuid creation time - - let _lastMSecs = 0; - let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details - - function v1(options, buf, offset) { - let i = (buf && offset) || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 - - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); - - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [ - seedBytes[0] | 0x01, - seedBytes[1], - seedBytes[2], - seedBytes[3], - seedBytes[4], - seedBytes[5], - ]; - } - - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = ((seedBytes[6] << 8) | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = (clockseq + 1) & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested - - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - - msecs += 12219292800000; // `time_low` - - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = (tl >>> 24) & 0xff; - b[i++] = (tl >>> 16) & 0xff; - b[i++] = (tl >>> 8) & 0xff; - b[i++] = tl & 0xff; // `time_mid` - - const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff; - b[i++] = (tmh >>> 8) & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` - - b[i++] = ((tmh >>> 24) & 0xf) | 0x10; // include version - - b[i++] = (tmh >>> 16) & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - - b[i++] = (clockseq >>> 8) | 0x80; // `clock_seq_low` - - b[i++] = clockseq & 0xff; // `node` - - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } - - return buf || (0, _stringify.default)(b); - } - - var _default = v1; - exports["default"] = _default; - - /***/ - }, - - /***/ 6409: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _v = _interopRequireDefault(__nccwpck_require__(5998)); - - var _md = _interopRequireDefault(__nccwpck_require__(4569)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - const v3 = (0, _v.default)("v3", 0x30, _md.default); - var _default = v3; - exports["default"] = _default; - - /***/ - }, - - /***/ 5998: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = _default; - exports.URL = exports.DNS = void 0; - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - var _parse = _interopRequireDefault(__nccwpck_require__(2746)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - - const bytes = []; - - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - - return bytes; - } - - const DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; - exports.DNS = DNS; - const URL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; - exports.URL = URL; - - function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === "string") { - value = stringToBytes(value); - } - - if (typeof namespace === "string") { - namespace = (0, _parse.default)(namespace); - } - - if (namespace.length !== 16) { - throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = (bytes[6] & 0x0f) | version; - bytes[8] = (bytes[8] & 0x3f) | 0x80; - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } - - return buf; - } - - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) - - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; - } - - /***/ - }, - - /***/ 5122: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _rng = _interopRequireDefault(__nccwpck_require__(807)); - - var _stringify = _interopRequireDefault(__nccwpck_require__(8950)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function v4(options, buf, offset) { - options = options || {}; - - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; // Copy bytes to buffer, if provided - - if (buf) { - offset = offset || 0; - - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - - return buf; - } - - return (0, _stringify.default)(rnds); - } - - var _default = v4; - exports["default"] = _default; - - /***/ - }, - - /***/ 9120: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _v = _interopRequireDefault(__nccwpck_require__(5998)); - - var _sha = _interopRequireDefault(__nccwpck_require__(5274)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - const v5 = (0, _v.default)("v5", 0x50, _sha.default); - var _default = v5; - exports["default"] = _default; - - /***/ - }, - - /***/ 6900: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _regex = _interopRequireDefault(__nccwpck_require__(814)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function validate(uuid) { - return typeof uuid === "string" && _regex.default.test(uuid); - } - - var _default = validate; - exports["default"] = _default; - - /***/ - }, - - /***/ 1595: /***/ (__unused_webpack_module, exports, __nccwpck_require__) => { - "use strict"; - - Object.defineProperty(exports, "__esModule", { - value: true, - }); - exports["default"] = void 0; - - var _validate = _interopRequireDefault(__nccwpck_require__(6900)); - - function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { default: obj }; - } - - function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError("Invalid UUID"); - } - - return parseInt(uuid.substr(14, 1), 16); - } - - var _default = version; - exports["default"] = _default; - - /***/ - }, - - /***/ 2940: /***/ (module) => { - // Returns a wrapper function that returns a wrapped callback - // The wrapper function should do some stuff, and return a - // presumably different callback function. - // This makes sure that own properties are retained, so that - // decorations and such are not lost along the way. - module.exports = wrappy; - function wrappy(fn, cb) { - if (fn && cb) return wrappy(fn)(cb); - - if (typeof fn !== "function") throw new TypeError("need wrapper function"); - - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k]; - }); - - return wrapper; - - function wrapper() { - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - var ret = fn.apply(this, args); - var cb = args[args.length - 1]; - if (typeof ret === "function" && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k]; - }); - } - return ret; - } - } - - /***/ - }, - - /***/ 4091: /***/ (module) => { - "use strict"; - - module.exports = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value; - } - }; - }; - - /***/ - }, - - /***/ 665: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - module.exports = Yallist; - - Yallist.Node = Node; - Yallist.create = Yallist; - - function Yallist(list) { - var self = this; - if (!(self instanceof Yallist)) { - self = new Yallist(); - } - - self.tail = null; - self.head = null; - self.length = 0; - - if (list && typeof list.forEach === "function") { - list.forEach(function (item) { - self.push(item); - }); - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]); - } - } - - return self; - } - - Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error("removing node which does not belong to this list"); - } - - var next = node.next; - var prev = node.prev; - - if (next) { - next.prev = prev; - } - - if (prev) { - prev.next = next; - } - - if (node === this.head) { - this.head = next; - } - if (node === this.tail) { - this.tail = prev; - } - - node.list.length--; - node.next = null; - node.prev = null; - node.list = null; - - return next; - }; - - Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return; - } - - if (node.list) { - node.list.removeNode(node); - } - - var head = this.head; - node.list = this; - node.next = head; - if (head) { - head.prev = node; - } - - this.head = node; - if (!this.tail) { - this.tail = node; - } - this.length++; - }; - - Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return; - } - - if (node.list) { - node.list.removeNode(node); - } - - var tail = this.tail; - node.list = this; - node.prev = tail; - if (tail) { - tail.next = node; - } - - this.tail = node; - if (!this.head) { - this.head = node; - } - this.length++; - }; - - Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]); - } - return this.length; - }; - - Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]); - } - return this.length; - }; - - Yallist.prototype.pop = function () { - if (!this.tail) { - return undefined; - } - - var res = this.tail.value; - this.tail = this.tail.prev; - if (this.tail) { - this.tail.next = null; - } else { - this.head = null; - } - this.length--; - return res; - }; - - Yallist.prototype.shift = function () { - if (!this.head) { - return undefined; - } - - var res = this.head.value; - this.head = this.head.next; - if (this.head) { - this.head.prev = null; - } else { - this.tail = null; - } - this.length--; - return res; - }; - - Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this; - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this); - walker = walker.next; - } - }; - - Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this; - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this); - walker = walker.prev; - } - }; - - Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next; - } - if (i === n && walker !== null) { - return walker.value; - } - }; - - Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev; - } - if (i === n && walker !== null) { - return walker.value; - } - }; - - Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); - for (var walker = this.head; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.next; - } - return res; - }; - - Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this; - var res = new Yallist(); - for (var walker = this.tail; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)); - walker = walker.prev; - } - return res; - }; - - Yallist.prototype.reduce = function (fn, initial) { - var acc; - var walker = this.head; - if (arguments.length > 1) { - acc = initial; - } else if (this.head) { - walker = this.head.next; - acc = this.head.value; - } else { - throw new TypeError("Reduce of empty list with no initial value"); - } - - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i); - walker = walker.next; - } - - return acc; - }; - - Yallist.prototype.reduceReverse = function (fn, initial) { - var acc; - var walker = this.tail; - if (arguments.length > 1) { - acc = initial; - } else if (this.tail) { - walker = this.tail.prev; - acc = this.tail.value; - } else { - throw new TypeError("Reduce of empty list with no initial value"); - } - - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i); - walker = walker.prev; - } - - return acc; - }; - - Yallist.prototype.toArray = function () { - var arr = new Array(this.length); - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.next; - } - return arr; - }; - - Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length); - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value; - walker = walker.prev; - } - return arr; - }; - - Yallist.prototype.slice = function (from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist(); - if (to < from || to < 0) { - return ret; - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next; - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value); - } - return ret; - }; - - Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length; - if (to < 0) { - to += this.length; - } - from = from || 0; - if (from < 0) { - from += this.length; - } - var ret = new Yallist(); - if (to < from || to < 0) { - return ret; - } - if (from < 0) { - from = 0; - } - if (to > this.length) { - to = this.length; - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev; - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value); - } - return ret; - }; - - Yallist.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1; - } - if (start < 0) { - start = this.length + start; - } - - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next; - } - - var ret = []; - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value); - walker = this.removeNode(walker); - } - if (walker === null) { - walker = this.tail; - } - - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev; - } - - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]); - } - return ret; - }; - - Yallist.prototype.reverse = function () { - var head = this.head; - var tail = this.tail; - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev; - walker.prev = walker.next; - walker.next = p; - } - this.head = tail; - this.tail = head; - return this; - }; - - function insert(self, node, value) { - var inserted = - node === self.head - ? new Node(value, null, node, self) - : new Node(value, node, node.next, self); - - if (inserted.next === null) { - self.tail = inserted; - } - if (inserted.prev === null) { - self.head = inserted; - } - - self.length++; - - return inserted; - } - - function push(self, item) { - self.tail = new Node(item, self.tail, null, self); - if (!self.head) { - self.head = self.tail; - } - self.length++; - } - - function unshift(self, item) { - self.head = new Node(item, null, self.head, self); - if (!self.tail) { - self.tail = self.head; - } - self.length++; - } - - function Node(value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list); - } - - this.list = list; - this.value = value; - - if (prev) { - prev.next = this; - this.prev = prev; - } else { - this.prev = null; - } - - if (next) { - next.prev = this; - this.next = next; - } else { - this.next = null; - } - } - - try { - // add if support for Symbol.iterator is present - __nccwpck_require__(4091)(Yallist); - } catch (er) {} - - /***/ - }, - - /***/ 9491: /***/ (module) => { - "use strict"; - module.exports = require("assert"); - - /***/ - }, - - /***/ 852: /***/ (module) => { - "use strict"; - module.exports = require("async_hooks"); - - /***/ - }, - - /***/ 4300: /***/ (module) => { - "use strict"; - module.exports = require("buffer"); - - /***/ - }, - - /***/ 6206: /***/ (module) => { - "use strict"; - module.exports = require("console"); - - /***/ - }, - - /***/ 6113: /***/ (module) => { - "use strict"; - module.exports = require("crypto"); - - /***/ - }, - - /***/ 7643: /***/ (module) => { - "use strict"; - module.exports = require("diagnostics_channel"); - - /***/ - }, - - /***/ 2361: /***/ (module) => { - "use strict"; - module.exports = require("events"); - - /***/ - }, - - /***/ 7147: /***/ (module) => { - "use strict"; - module.exports = require("fs"); - - /***/ - }, - - /***/ 3685: /***/ (module) => { - "use strict"; - module.exports = require("http"); - - /***/ - }, - - /***/ 5158: /***/ (module) => { - "use strict"; - module.exports = require("http2"); - - /***/ - }, - - /***/ 5687: /***/ (module) => { - "use strict"; - module.exports = require("https"); - - /***/ - }, - - /***/ 1808: /***/ (module) => { - "use strict"; - module.exports = require("net"); - - /***/ - }, - - /***/ 5673: /***/ (module) => { - "use strict"; - module.exports = require("node:events"); - - /***/ - }, - - /***/ 4492: /***/ (module) => { - "use strict"; - module.exports = require("node:stream"); - - /***/ - }, - - /***/ 7261: /***/ (module) => { - "use strict"; - module.exports = require("node:util"); - - /***/ - }, - - /***/ 2037: /***/ (module) => { - "use strict"; - module.exports = require("os"); - - /***/ - }, - - /***/ 1017: /***/ (module) => { - "use strict"; - module.exports = require("path"); - - /***/ - }, - - /***/ 4074: /***/ (module) => { - "use strict"; - module.exports = require("perf_hooks"); - - /***/ - }, - - /***/ 3477: /***/ (module) => { - "use strict"; - module.exports = require("querystring"); - - /***/ - }, - - /***/ 2781: /***/ (module) => { - "use strict"; - module.exports = require("stream"); - - /***/ - }, - - /***/ 5356: /***/ (module) => { - "use strict"; - module.exports = require("stream/web"); - - /***/ - }, - - /***/ 1576: /***/ (module) => { - "use strict"; - module.exports = require("string_decoder"); - - /***/ - }, - - /***/ 4404: /***/ (module) => { - "use strict"; - module.exports = require("tls"); - - /***/ - }, - - /***/ 7310: /***/ (module) => { - "use strict"; - module.exports = require("url"); - - /***/ - }, - - /***/ 3837: /***/ (module) => { - "use strict"; - module.exports = require("util"); - - /***/ - }, - - /***/ 9830: /***/ (module) => { - "use strict"; - module.exports = require("util/types"); - - /***/ - }, - - /***/ 1267: /***/ (module) => { - "use strict"; - module.exports = require("worker_threads"); - - /***/ - }, - - /***/ 9796: /***/ (module) => { - "use strict"; - module.exports = require("zlib"); - - /***/ - }, - - /***/ 2960: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const WritableStream = __nccwpck_require__(4492).Writable; - const inherits = __nccwpck_require__(7261).inherits; - - const StreamSearch = __nccwpck_require__(1142); - - const PartStream = __nccwpck_require__(1620); - const HeaderParser = __nccwpck_require__(2032); - - const DASH = 45; - const B_ONEDASH = Buffer.from("-"); - const B_CRLF = Buffer.from("\r\n"); - const EMPTY_FN = function () {}; - - function Dicer(cfg) { - if (!(this instanceof Dicer)) { - return new Dicer(cfg); - } - WritableStream.call(this, cfg); - - if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== "string")) { - throw new TypeError("Boundary required"); - } - - if (typeof cfg.boundary === "string") { - this.setBoundary(cfg.boundary); - } else { - this._bparser = undefined; - } - - this._headerFirst = cfg.headerFirst; - - this._dashes = 0; - this._parts = 0; - this._finished = false; - this._realFinish = false; - this._isPreamble = true; - this._justMatched = false; - this._firstWrite = true; - this._inHeader = true; - this._part = undefined; - this._cb = undefined; - this._ignoreData = false; - this._partOpts = { highWaterMark: cfg.partHwm }; - this._pause = false; - - const self = this; - this._hparser = new HeaderParser(cfg); - this._hparser.on("header", function (header) { - self._inHeader = false; - self._part.emit("header", header); - }); - } - inherits(Dicer, WritableStream); - - Dicer.prototype.emit = function (ev) { - if (ev === "finish" && !this._realFinish) { - if (!this._finished) { - const self = this; - process.nextTick(function () { - self.emit("error", new Error("Unexpected end of multipart data")); - if (self._part && !self._ignoreData) { - const type = self._isPreamble ? "Preamble" : "Part"; - self._part.emit( - "error", - new Error( - type + " terminated early due to unexpected end of multipart data", - ), - ); - self._part.push(null); - process.nextTick(function () { - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - }); - return; - } - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - }); - } - } else { - WritableStream.prototype.emit.apply(this, arguments); - } - }; - - Dicer.prototype._write = function (data, encoding, cb) { - // ignore unexpected data (e.g. extra trailer data after finished) - if (!this._hparser && !this._bparser) { - return cb(); - } - - if (this._headerFirst && this._isPreamble) { - if (!this._part) { - this._part = new PartStream(this._partOpts); - if (this._events.preamble) { - this.emit("preamble", this._part); - } else { - this._ignore(); - } - } - const r = this._hparser.push(data); - if (!this._inHeader && r !== undefined && r < data.length) { - data = data.slice(r); - } else { - return cb(); - } - } - - // allows for "easier" testing - if (this._firstWrite) { - this._bparser.push(B_CRLF); - this._firstWrite = false; - } - - this._bparser.push(data); - - if (this._pause) { - this._cb = cb; - } else { - cb(); - } - }; - - Dicer.prototype.reset = function () { - this._part = undefined; - this._bparser = undefined; - this._hparser = undefined; - }; - - Dicer.prototype.setBoundary = function (boundary) { - const self = this; - this._bparser = new StreamSearch("\r\n--" + boundary); - this._bparser.on("info", function (isMatch, data, start, end) { - self._oninfo(isMatch, data, start, end); - }); - }; - - Dicer.prototype._ignore = function () { - if (this._part && !this._ignoreData) { - this._ignoreData = true; - this._part.on("error", EMPTY_FN); - // we must perform some kind of read on the stream even though we are - // ignoring the data, otherwise node's Readable stream will not emit 'end' - // after pushing null to the stream - this._part.resume(); - } - }; - - Dicer.prototype._oninfo = function (isMatch, data, start, end) { - let buf; - const self = this; - let i = 0; - let r; - let shouldWriteMore = true; - - if (!this._part && this._justMatched && data) { - while (this._dashes < 2 && start + i < end) { - if (data[start + i] === DASH) { - ++i; - ++this._dashes; - } else { - if (this._dashes) { - buf = B_ONEDASH; - } - this._dashes = 0; - break; - } - } - if (this._dashes === 2) { - if (start + i < end && this._events.trailer) { - this.emit("trailer", data.slice(start + i, end)); - } - this.reset(); - this._finished = true; - // no more parts will be added - if (self._parts === 0) { - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - } - } - if (this._dashes) { - return; - } - } - if (this._justMatched) { - this._justMatched = false; - } - if (!this._part) { - this._part = new PartStream(this._partOpts); - this._part._read = function (n) { - self._unpause(); - }; - if (this._isPreamble && this._events.preamble) { - this.emit("preamble", this._part); - } else if (this._isPreamble !== true && this._events.part) { - this.emit("part", this._part); - } else { - this._ignore(); - } - if (!this._isPreamble) { - this._inHeader = true; - } - } - if (data && start < end && !this._ignoreData) { - if (this._isPreamble || !this._inHeader) { - if (buf) { - shouldWriteMore = this._part.push(buf); - } - shouldWriteMore = this._part.push(data.slice(start, end)); - if (!shouldWriteMore) { - this._pause = true; - } - } else if (!this._isPreamble && this._inHeader) { - if (buf) { - this._hparser.push(buf); - } - r = this._hparser.push(data.slice(start, end)); - if (!this._inHeader && r !== undefined && r < end) { - this._oninfo(false, data, start + r, end); - } - } - } - if (isMatch) { - this._hparser.reset(); - if (this._isPreamble) { - this._isPreamble = false; - } else { - if (start !== end) { - ++this._parts; - this._part.on("end", function () { - if (--self._parts === 0) { - if (self._finished) { - self._realFinish = true; - self.emit("finish"); - self._realFinish = false; - } else { - self._unpause(); - } - } - }); - } - } - this._part.push(null); - this._part = undefined; - this._ignoreData = false; - this._justMatched = true; - this._dashes = 0; - } - }; - - Dicer.prototype._unpause = function () { - if (!this._pause) { - return; - } - - this._pause = false; - if (this._cb) { - const cb = this._cb; - this._cb = undefined; - cb(); - } - }; - - module.exports = Dicer; - - /***/ - }, - - /***/ 2032: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const EventEmitter = __nccwpck_require__(5673).EventEmitter; - const inherits = __nccwpck_require__(7261).inherits; - const getLimit = __nccwpck_require__(1467); - - const StreamSearch = __nccwpck_require__(1142); - - const B_DCRLF = Buffer.from("\r\n\r\n"); - const RE_CRLF = /\r\n/g; - const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/; // eslint-disable-line no-control-regex - - function HeaderParser(cfg) { - EventEmitter.call(this); - - cfg = cfg || {}; - const self = this; - this.nread = 0; - this.maxed = false; - this.npairs = 0; - this.maxHeaderPairs = getLimit(cfg, "maxHeaderPairs", 2000); - this.maxHeaderSize = getLimit(cfg, "maxHeaderSize", 80 * 1024); - this.buffer = ""; - this.header = {}; - this.finished = false; - this.ss = new StreamSearch(B_DCRLF); - this.ss.on("info", function (isMatch, data, start, end) { - if (data && !self.maxed) { - if (self.nread + end - start >= self.maxHeaderSize) { - end = self.maxHeaderSize - self.nread + start; - self.nread = self.maxHeaderSize; - self.maxed = true; - } else { - self.nread += end - start; - } - - self.buffer += data.toString("binary", start, end); - } - if (isMatch) { - self._finish(); - } - }); - } - inherits(HeaderParser, EventEmitter); - - HeaderParser.prototype.push = function (data) { - const r = this.ss.push(data); - if (this.finished) { - return r; - } - }; - - HeaderParser.prototype.reset = function () { - this.finished = false; - this.buffer = ""; - this.header = {}; - this.ss.reset(); - }; - - HeaderParser.prototype._finish = function () { - if (this.buffer) { - this._parseHeader(); - } - this.ss.matches = this.ss.maxMatches; - const header = this.header; - this.header = {}; - this.buffer = ""; - this.finished = true; - this.nread = this.npairs = 0; - this.maxed = false; - this.emit("header", header); - }; - - HeaderParser.prototype._parseHeader = function () { - if (this.npairs === this.maxHeaderPairs) { - return; - } - - const lines = this.buffer.split(RE_CRLF); - const len = lines.length; - let m, h; - - for (var i = 0; i < len; ++i) { - // eslint-disable-line no-var - if (lines[i].length === 0) { - continue; - } - if (lines[i][0] === "\t" || lines[i][0] === " ") { - // folded header content - // RFC2822 says to just remove the CRLF and not the whitespace following - // it, so we follow the RFC and include the leading whitespace ... - if (h) { - this.header[h][this.header[h].length - 1] += lines[i]; - continue; - } - } - - const posColon = lines[i].indexOf(":"); - if (posColon === -1 || posColon === 0) { - return; - } - m = RE_HDR.exec(lines[i]); - h = m[1].toLowerCase(); - this.header[h] = this.header[h] || []; - this.header[h].push(m[2] || ""); - if (++this.npairs === this.maxHeaderPairs) { - break; - } - } - }; - - module.exports = HeaderParser; - - /***/ - }, - - /***/ 1620: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const inherits = __nccwpck_require__(7261).inherits; - const ReadableStream = __nccwpck_require__(4492).Readable; - - function PartStream(opts) { - ReadableStream.call(this, opts); - } - inherits(PartStream, ReadableStream); - - PartStream.prototype._read = function (n) {}; - - module.exports = PartStream; - - /***/ - }, - - /***/ 1142: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - /** - * Copyright Brian White. All rights reserved. - * - * @see https://github.com/mscdex/streamsearch - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation - * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool - */ - const EventEmitter = __nccwpck_require__(5673).EventEmitter; - const inherits = __nccwpck_require__(7261).inherits; - - function SBMH(needle) { - if (typeof needle === "string") { - needle = Buffer.from(needle); - } - - if (!Buffer.isBuffer(needle)) { - throw new TypeError("The needle has to be a String or a Buffer."); - } - - const needleLength = needle.length; - - if (needleLength === 0) { - throw new Error("The needle cannot be an empty String/Buffer."); - } - - if (needleLength > 256) { - throw new Error("The needle cannot have a length bigger than 256."); - } - - this.maxMatches = Infinity; - this.matches = 0; - - this._occ = new Array(256).fill(needleLength); // Initialize occurrence table. - this._lookbehind_size = 0; - this._needle = needle; - this._bufpos = 0; - - this._lookbehind = Buffer.alloc(needleLength); - - // Populate occurrence table with analysis of the needle, - // ignoring last letter. - for (var i = 0; i < needleLength - 1; ++i) { - // eslint-disable-line no-var - this._occ[needle[i]] = needleLength - 1 - i; - } - } - inherits(SBMH, EventEmitter); - - SBMH.prototype.reset = function () { - this._lookbehind_size = 0; - this.matches = 0; - this._bufpos = 0; - }; - - SBMH.prototype.push = function (chunk, pos) { - if (!Buffer.isBuffer(chunk)) { - chunk = Buffer.from(chunk, "binary"); - } - const chlen = chunk.length; - this._bufpos = pos || 0; - let r; - while (r !== chlen && this.matches < this.maxMatches) { - r = this._sbmh_feed(chunk); - } - return r; - }; - - SBMH.prototype._sbmh_feed = function (data) { - const len = data.length; - const needle = this._needle; - const needleLength = needle.length; - const lastNeedleChar = needle[needleLength - 1]; - - // Positive: points to a position in `data` - // pos == 3 points to data[3] - // Negative: points to a position in the lookbehind buffer - // pos == -2 points to lookbehind[lookbehind_size - 2] - let pos = -this._lookbehind_size; - let ch; - - if (pos < 0) { - // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool - // search with character lookup code that considers both the - // lookbehind buffer and the current round's haystack data. - // - // Loop until - // there is a match. - // or until - // we've moved past the position that requires the - // lookbehind buffer. In this case we switch to the - // optimized loop. - // or until - // the character to look at lies outside the haystack. - while (pos < 0 && pos <= len - needleLength) { - ch = this._sbmh_lookup_char(data, pos + needleLength - 1); - - if (ch === lastNeedleChar && this._sbmh_memcmp(data, pos, needleLength - 1)) { - this._lookbehind_size = 0; - ++this.matches; - this.emit("info", true); - - return (this._bufpos = pos + needleLength); - } - pos += this._occ[ch]; - } - - // No match. - - if (pos < 0) { - // There's too few data for Boyer-Moore-Horspool to run, - // so let's use a different algorithm to skip as much as - // we can. - // Forward pos until - // the trailing part of lookbehind + data - // looks like the beginning of the needle - // or until - // pos == 0 - while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { - ++pos; - } - } - - if (pos >= 0) { - // Discard lookbehind buffer. - this.emit("info", false, this._lookbehind, 0, this._lookbehind_size); - this._lookbehind_size = 0; - } else { - // Cut off part of the lookbehind buffer that has - // been processed and append the entire haystack - // into it. - const bytesToCutOff = this._lookbehind_size + pos; - if (bytesToCutOff > 0) { - // The cut off data is guaranteed not to contain the needle. - this.emit("info", false, this._lookbehind, 0, bytesToCutOff); - } - - this._lookbehind.copy( - this._lookbehind, - 0, - bytesToCutOff, - this._lookbehind_size - bytesToCutOff, - ); - this._lookbehind_size -= bytesToCutOff; - - data.copy(this._lookbehind, this._lookbehind_size); - this._lookbehind_size += len; - - this._bufpos = len; - return len; - } - } - - pos += (pos >= 0) * this._bufpos; - - // Lookbehind buffer is now empty. We only need to check if the - // needle is in the haystack. - if (data.indexOf(needle, pos) !== -1) { - pos = data.indexOf(needle, pos); - ++this.matches; - if (pos > 0) { - this.emit("info", true, data, this._bufpos, pos); - } else { - this.emit("info", true); - } - - return (this._bufpos = pos + needleLength); - } else { - pos = len - needleLength; - } - - // There was no match. If there's trailing haystack data that we cannot - // match yet using the Boyer-Moore-Horspool algorithm (because the trailing - // data is less than the needle size) then match using a modified - // algorithm that starts matching from the beginning instead of the end. - // Whatever trailing data is left after running this algorithm is added to - // the lookbehind buffer. - while ( - pos < len && - (data[pos] !== needle[0] || - Buffer.compare(data.subarray(pos, pos + len - pos), needle.subarray(0, len - pos)) !== - 0) - ) { - ++pos; - } - if (pos < len) { - data.copy(this._lookbehind, 0, pos, pos + (len - pos)); - this._lookbehind_size = len - pos; - } - - // Everything until pos is guaranteed not to contain needle data. - if (pos > 0) { - this.emit("info", false, data, this._bufpos, pos < len ? pos : len); - } - - this._bufpos = len; - return len; - }; - - SBMH.prototype._sbmh_lookup_char = function (data, pos) { - return pos < 0 ? this._lookbehind[this._lookbehind_size + pos] : data[pos]; - }; - - SBMH.prototype._sbmh_memcmp = function (data, pos, len) { - for (var i = 0; i < len; ++i) { - // eslint-disable-line no-var - if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { - return false; - } - } - return true; - }; - - module.exports = SBMH; - - /***/ - }, - - /***/ 727: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const WritableStream = __nccwpck_require__(4492).Writable; - const { inherits } = __nccwpck_require__(7261); - const Dicer = __nccwpck_require__(2960); - - const MultipartParser = __nccwpck_require__(2183); - const UrlencodedParser = __nccwpck_require__(8306); - const parseParams = __nccwpck_require__(1854); - - function Busboy(opts) { - if (!(this instanceof Busboy)) { - return new Busboy(opts); - } - - if (typeof opts !== "object") { - throw new TypeError("Busboy expected an options-Object."); - } - if (typeof opts.headers !== "object") { - throw new TypeError("Busboy expected an options-Object with headers-attribute."); - } - if (typeof opts.headers["content-type"] !== "string") { - throw new TypeError("Missing Content-Type-header."); - } - - const { headers, ...streamOptions } = opts; - - this.opts = { - autoDestroy: false, - ...streamOptions, - }; - WritableStream.call(this, this.opts); - - this._done = false; - this._parser = this.getParserByHeaders(headers); - this._finished = false; - } - inherits(Busboy, WritableStream); - - Busboy.prototype.emit = function (ev) { - if (ev === "finish") { - if (!this._done) { - this._parser?.end(); - return; - } else if (this._finished) { - return; - } - this._finished = true; - } - WritableStream.prototype.emit.apply(this, arguments); - }; - - Busboy.prototype.getParserByHeaders = function (headers) { - const parsed = parseParams(headers["content-type"]); - - const cfg = { - defCharset: this.opts.defCharset, - fileHwm: this.opts.fileHwm, - headers, - highWaterMark: this.opts.highWaterMark, - isPartAFile: this.opts.isPartAFile, - limits: this.opts.limits, - parsedConType: parsed, - preservePath: this.opts.preservePath, - }; - - if (MultipartParser.detect.test(parsed[0])) { - return new MultipartParser(this, cfg); - } - if (UrlencodedParser.detect.test(parsed[0])) { - return new UrlencodedParser(this, cfg); - } - throw new Error("Unsupported Content-Type."); - }; - - Busboy.prototype._write = function (chunk, encoding, cb) { - this._parser.write(chunk, cb); - }; - - module.exports = Busboy; - module.exports["default"] = Busboy; - module.exports.Busboy = Busboy; - - module.exports.Dicer = Dicer; - - /***/ - }, - - /***/ 2183: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - // TODO: - // * support 1 nested multipart level - // (see second multipart example here: - // http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) - // * support limits.fieldNameSize - // -- this will require modifications to utils.parseParams - - const { Readable } = __nccwpck_require__(4492); - const { inherits } = __nccwpck_require__(7261); - - const Dicer = __nccwpck_require__(2960); - - const parseParams = __nccwpck_require__(1854); - const decodeText = __nccwpck_require__(4619); - const basename = __nccwpck_require__(8647); - const getLimit = __nccwpck_require__(1467); - - const RE_BOUNDARY = /^boundary$/i; - const RE_FIELD = /^form-data$/i; - const RE_CHARSET = /^charset$/i; - const RE_FILENAME = /^filename$/i; - const RE_NAME = /^name$/i; - - Multipart.detect = /^multipart\/form-data/i; - function Multipart(boy, cfg) { - let i; - let len; - const self = this; - let boundary; - const limits = cfg.limits; - const isPartAFile = - cfg.isPartAFile || - ((fieldName, contentType, fileName) => - contentType === "application/octet-stream" || fileName !== undefined); - const parsedConType = cfg.parsedConType || []; - const defCharset = cfg.defCharset || "utf8"; - const preservePath = cfg.preservePath; - const fileOpts = { highWaterMark: cfg.fileHwm }; - - for (i = 0, len = parsedConType.length; i < len; ++i) { - if (Array.isArray(parsedConType[i]) && RE_BOUNDARY.test(parsedConType[i][0])) { - boundary = parsedConType[i][1]; - break; - } - } - - function checkFinished() { - if (nends === 0 && finished && !boy._done) { - finished = false; - self.end(); - } - } - - if (typeof boundary !== "string") { - throw new Error("Multipart: Boundary not found"); - } - - const fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); - const fileSizeLimit = getLimit(limits, "fileSize", Infinity); - const filesLimit = getLimit(limits, "files", Infinity); - const fieldsLimit = getLimit(limits, "fields", Infinity); - const partsLimit = getLimit(limits, "parts", Infinity); - const headerPairsLimit = getLimit(limits, "headerPairs", 2000); - const headerSizeLimit = getLimit(limits, "headerSize", 80 * 1024); - - let nfiles = 0; - let nfields = 0; - let nends = 0; - let curFile; - let curField; - let finished = false; - - this._needDrain = false; - this._pause = false; - this._cb = undefined; - this._nparts = 0; - this._boy = boy; - - const parserCfg = { - boundary, - maxHeaderPairs: headerPairsLimit, - maxHeaderSize: headerSizeLimit, - partHwm: fileOpts.highWaterMark, - highWaterMark: cfg.highWaterMark, - }; - - this.parser = new Dicer(parserCfg); - this.parser - .on("drain", function () { - self._needDrain = false; - if (self._cb && !self._pause) { - const cb = self._cb; - self._cb = undefined; - cb(); - } - }) - .on("part", function onPart(part) { - if (++self._nparts > partsLimit) { - self.parser.removeListener("part", onPart); - self.parser.on("part", skipPart); - boy.hitPartsLimit = true; - boy.emit("partsLimit"); - return skipPart(part); - } - - // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let - // us emit 'end' early since we know the part has ended if we are already - // seeing the next part - if (curField) { - const field = curField; - field.emit("end"); - field.removeAllListeners("end"); - } - - part.on("header", function (header) { - let contype; - let fieldname; - let parsed; - let charset; - let encoding; - let filename; - let nsize = 0; - - if (header["content-type"]) { - parsed = parseParams(header["content-type"][0]); - if (parsed[0]) { - contype = parsed[0].toLowerCase(); - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_CHARSET.test(parsed[i][0])) { - charset = parsed[i][1].toLowerCase(); - break; - } - } - } - } - - if (contype === undefined) { - contype = "text/plain"; - } - if (charset === undefined) { - charset = defCharset; - } - - if (header["content-disposition"]) { - parsed = parseParams(header["content-disposition"][0]); - if (!RE_FIELD.test(parsed[0])) { - return skipPart(part); - } - for (i = 0, len = parsed.length; i < len; ++i) { - if (RE_NAME.test(parsed[i][0])) { - fieldname = parsed[i][1]; - } else if (RE_FILENAME.test(parsed[i][0])) { - filename = parsed[i][1]; - if (!preservePath) { - filename = basename(filename); - } - } - } - } else { - return skipPart(part); - } - - if (header["content-transfer-encoding"]) { - encoding = header["content-transfer-encoding"][0].toLowerCase(); - } else { - encoding = "7bit"; - } - - let onData, onEnd; - - if (isPartAFile(fieldname, contype, filename)) { - // file/binary field - if (nfiles === filesLimit) { - if (!boy.hitFilesLimit) { - boy.hitFilesLimit = true; - boy.emit("filesLimit"); - } - return skipPart(part); - } - - ++nfiles; - - if (!boy._events.file) { - self.parser._ignore(); - return; - } - - ++nends; - const file = new FileStream(fileOpts); - curFile = file; - file.on("end", function () { - --nends; - self._pause = false; - checkFinished(); - if (self._cb && !self._needDrain) { - const cb = self._cb; - self._cb = undefined; - cb(); - } - }); - file._read = function (n) { - if (!self._pause) { - return; - } - self._pause = false; - if (self._cb && !self._needDrain) { - const cb = self._cb; - self._cb = undefined; - cb(); - } - }; - boy.emit("file", fieldname, file, filename, encoding, contype); - - onData = function (data) { - if ((nsize += data.length) > fileSizeLimit) { - const extralen = fileSizeLimit - nsize + data.length; - if (extralen > 0) { - file.push(data.slice(0, extralen)); - } - file.truncated = true; - file.bytesRead = fileSizeLimit; - part.removeAllListeners("data"); - file.emit("limit"); - return; - } else if (!file.push(data)) { - self._pause = true; - } - - file.bytesRead = nsize; - }; - - onEnd = function () { - curFile = undefined; - file.push(null); - }; - } else { - // non-file field - if (nfields === fieldsLimit) { - if (!boy.hitFieldsLimit) { - boy.hitFieldsLimit = true; - boy.emit("fieldsLimit"); - } - return skipPart(part); - } - - ++nfields; - ++nends; - let buffer = ""; - let truncated = false; - curField = part; - - onData = function (data) { - if ((nsize += data.length) > fieldSizeLimit) { - const extralen = fieldSizeLimit - (nsize - data.length); - buffer += data.toString("binary", 0, extralen); - truncated = true; - part.removeAllListeners("data"); - } else { - buffer += data.toString("binary"); - } - }; - - onEnd = function () { - curField = undefined; - if (buffer.length) { - buffer = decodeText(buffer, "binary", charset); - } - boy.emit("field", fieldname, buffer, false, truncated, encoding, contype); - --nends; - checkFinished(); - }; - } - - /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become - broken. Streams2/streams3 is a huge black box of confusion, but - somehow overriding the sync state seems to fix things again (and still - seems to work for previous node versions). - */ - part._readableState.sync = false; - - part.on("data", onData); - part.on("end", onEnd); - }).on("error", function (err) { - if (curFile) { - curFile.emit("error", err); - } - }); - }) - .on("error", function (err) { - boy.emit("error", err); - }) - .on("finish", function () { - finished = true; - checkFinished(); - }); - } - - Multipart.prototype.write = function (chunk, cb) { - const r = this.parser.write(chunk); - if (r && !this._pause) { - cb(); - } else { - this._needDrain = !r; - this._cb = cb; - } - }; - - Multipart.prototype.end = function () { - const self = this; - - if (self.parser.writable) { - self.parser.end(); - } else if (!self._boy._done) { - process.nextTick(function () { - self._boy._done = true; - self._boy.emit("finish"); - }); - } - }; - - function skipPart(part) { - part.resume(); - } - - function FileStream(opts) { - Readable.call(this, opts); - - this.bytesRead = 0; - - this.truncated = false; - } - - inherits(FileStream, Readable); - - FileStream.prototype._read = function (n) {}; - - module.exports = Multipart; - - /***/ - }, - - /***/ 8306: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - - const Decoder = __nccwpck_require__(7100); - const decodeText = __nccwpck_require__(4619); - const getLimit = __nccwpck_require__(1467); - - const RE_CHARSET = /^charset$/i; - - UrlEncoded.detect = /^application\/x-www-form-urlencoded/i; - function UrlEncoded(boy, cfg) { - const limits = cfg.limits; - const parsedConType = cfg.parsedConType; - this.boy = boy; - - this.fieldSizeLimit = getLimit(limits, "fieldSize", 1 * 1024 * 1024); - this.fieldNameSizeLimit = getLimit(limits, "fieldNameSize", 100); - this.fieldsLimit = getLimit(limits, "fields", Infinity); - - let charset; - for (var i = 0, len = parsedConType.length; i < len; ++i) { - // eslint-disable-line no-var - if (Array.isArray(parsedConType[i]) && RE_CHARSET.test(parsedConType[i][0])) { - charset = parsedConType[i][1].toLowerCase(); - break; - } - } - - if (charset === undefined) { - charset = cfg.defCharset || "utf8"; - } - - this.decoder = new Decoder(); - this.charset = charset; - this._fields = 0; - this._state = "key"; - this._checkingBytes = true; - this._bytesKey = 0; - this._bytesVal = 0; - this._key = ""; - this._val = ""; - this._keyTrunc = false; - this._valTrunc = false; - this._hitLimit = false; - } - - UrlEncoded.prototype.write = function (data, cb) { - if (this._fields === this.fieldsLimit) { - if (!this.boy.hitFieldsLimit) { - this.boy.hitFieldsLimit = true; - this.boy.emit("fieldsLimit"); - } - return cb(); - } - - let idxeq; - let idxamp; - let i; - let p = 0; - const len = data.length; - - while (p < len) { - if (this._state === "key") { - idxeq = idxamp = undefined; - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { - ++p; - } - if (data[i] === 0x3d /* = */) { - idxeq = i; - break; - } else if (data[i] === 0x26 /* & */) { - idxamp = i; - break; - } - if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { - this._hitLimit = true; - break; - } else if (this._checkingBytes) { - ++this._bytesKey; - } - } - - if (idxeq !== undefined) { - // key with assignment - if (idxeq > p) { - this._key += this.decoder.write(data.toString("binary", p, idxeq)); - } - this._state = "val"; - - this._hitLimit = false; - this._checkingBytes = true; - this._val = ""; - this._bytesVal = 0; - this._valTrunc = false; - this.decoder.reset(); - - p = idxeq + 1; - } else if (idxamp !== undefined) { - // key with no assignment - ++this._fields; - let key; - const keyTrunc = this._keyTrunc; - if (idxamp > p) { - key = this._key += this.decoder.write(data.toString("binary", p, idxamp)); - } else { - key = this._key; - } - - this._hitLimit = false; - this._checkingBytes = true; - this._key = ""; - this._bytesKey = 0; - this._keyTrunc = false; - this.decoder.reset(); - - if (key.length) { - this.boy.emit( - "field", - decodeText(key, "binary", this.charset), - "", - keyTrunc, - false, - ); - } - - p = idxamp + 1; - if (this._fields === this.fieldsLimit) { - return cb(); - } - } else if (this._hitLimit) { - // we may not have hit the actual limit if there are encoded bytes... - if (i > p) { - this._key += this.decoder.write(data.toString("binary", p, i)); - } - p = i; - if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { - // yep, we actually did hit the limit - this._checkingBytes = false; - this._keyTrunc = true; - } - } else { - if (p < len) { - this._key += this.decoder.write(data.toString("binary", p)); - } - p = len; - } - } else { - idxamp = undefined; - for (i = p; i < len; ++i) { - if (!this._checkingBytes) { - ++p; - } - if (data[i] === 0x26 /* & */) { - idxamp = i; - break; - } - if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { - this._hitLimit = true; - break; - } else if (this._checkingBytes) { - ++this._bytesVal; - } - } - - if (idxamp !== undefined) { - ++this._fields; - if (idxamp > p) { - this._val += this.decoder.write(data.toString("binary", p, idxamp)); - } - this.boy.emit( - "field", - decodeText(this._key, "binary", this.charset), - decodeText(this._val, "binary", this.charset), - this._keyTrunc, - this._valTrunc, - ); - this._state = "key"; - - this._hitLimit = false; - this._checkingBytes = true; - this._key = ""; - this._bytesKey = 0; - this._keyTrunc = false; - this.decoder.reset(); - - p = idxamp + 1; - if (this._fields === this.fieldsLimit) { - return cb(); - } - } else if (this._hitLimit) { - // we may not have hit the actual limit if there are encoded bytes... - if (i > p) { - this._val += this.decoder.write(data.toString("binary", p, i)); - } - p = i; - if ( - (this._val === "" && this.fieldSizeLimit === 0) || - (this._bytesVal = this._val.length) === this.fieldSizeLimit - ) { - // yep, we actually did hit the limit - this._checkingBytes = false; - this._valTrunc = true; - } - } else { - if (p < len) { - this._val += this.decoder.write(data.toString("binary", p)); - } - p = len; - } - } - } - cb(); - }; - - UrlEncoded.prototype.end = function () { - if (this.boy._done) { - return; - } - - if (this._state === "key" && this._key.length > 0) { - this.boy.emit( - "field", - decodeText(this._key, "binary", this.charset), - "", - this._keyTrunc, - false, - ); - } else if (this._state === "val") { - this.boy.emit( - "field", - decodeText(this._key, "binary", this.charset), - decodeText(this._val, "binary", this.charset), - this._keyTrunc, - this._valTrunc, - ); - } - this.boy._done = true; - this.boy.emit("finish"); - }; - - module.exports = UrlEncoded; - - /***/ - }, - - /***/ 7100: /***/ (module) => { - "use strict"; - - const RE_PLUS = /\+/g; - - const HEX = [ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - ]; - - function Decoder() { - this.buffer = undefined; - } - Decoder.prototype.write = function (str) { - // Replace '+' with ' ' before decoding - str = str.replace(RE_PLUS, " "); - let res = ""; - let i = 0; - let p = 0; - const len = str.length; - for (; i < len; ++i) { - if (this.buffer !== undefined) { - if (!HEX[str.charCodeAt(i)]) { - res += "%" + this.buffer; - this.buffer = undefined; - --i; // retry character - } else { - this.buffer += str[i]; - ++p; - if (this.buffer.length === 2) { - res += String.fromCharCode(parseInt(this.buffer, 16)); - this.buffer = undefined; - } - } - } else if (str[i] === "%") { - if (i > p) { - res += str.substring(p, i); - p = i; - } - this.buffer = ""; - ++p; - } - } - if (p < len && this.buffer === undefined) { - res += str.substring(p); - } - return res; - }; - Decoder.prototype.reset = function () { - this.buffer = undefined; - }; - - module.exports = Decoder; - - /***/ - }, - - /***/ 8647: /***/ (module) => { - "use strict"; - - module.exports = function basename(path) { - if (typeof path !== "string") { - return ""; - } - for (var i = path.length - 1; i >= 0; --i) { - // eslint-disable-line no-var - switch (path.charCodeAt(i)) { - case 0x2f: // '/' - case 0x5c: // '\' - path = path.slice(i + 1); - return path === ".." || path === "." ? "" : path; - } - } - return path === ".." || path === "." ? "" : path; - }; - - /***/ - }, - - /***/ 4619: /***/ function (module) { - "use strict"; - - // Node has always utf-8 - const utf8Decoder = new TextDecoder("utf-8"); - const textDecoders = new Map([ - ["utf-8", utf8Decoder], - ["utf8", utf8Decoder], - ]); - - function getDecoder(charset) { - let lc; - while (true) { - switch (charset) { - case "utf-8": - case "utf8": - return decoders.utf8; - case "latin1": - case "ascii": // TODO: Make these a separate, strict decoder? - case "us-ascii": - case "iso-8859-1": - case "iso8859-1": - case "iso88591": - case "iso_8859-1": - case "windows-1252": - case "iso_8859-1:1987": - case "cp1252": - case "x-cp1252": - return decoders.latin1; - case "utf16le": - case "utf-16le": - case "ucs2": - case "ucs-2": - return decoders.utf16le; - case "base64": - return decoders.base64; - default: - if (lc === undefined) { - lc = true; - charset = charset.toLowerCase(); - continue; - } - return decoders.other.bind(charset); - } - } - } - - const decoders = { - utf8: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - return data.utf8Slice(0, data.length); - }, - - latin1: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - return data; - } - return data.latin1Slice(0, data.length); - }, - - utf16le: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - return data.ucs2Slice(0, data.length); - }, - - base64: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - return data.base64Slice(0, data.length); - }, - - other: (data, sourceEncoding) => { - if (data.length === 0) { - return ""; - } - if (typeof data === "string") { - data = Buffer.from(data, sourceEncoding); - } - - if (textDecoders.has(this.toString())) { - try { - return textDecoders.get(this).decode(data); - } catch (e) {} - } - return typeof data === "string" ? data : data.toString(); - }, - }; - - function decodeText(text, sourceEncoding, destEncoding) { - if (text) { - return getDecoder(destEncoding)(text, sourceEncoding); - } - return text; - } - - module.exports = decodeText; - - /***/ - }, - - /***/ 1467: /***/ (module) => { - "use strict"; - - module.exports = function getLimit(limits, name, defaultLimit) { - if (!limits || limits[name] === undefined || limits[name] === null) { - return defaultLimit; - } - - if (typeof limits[name] !== "number" || isNaN(limits[name])) { - throw new TypeError("Limit " + name + " is not a valid number"); - } - - return limits[name]; - }; - - /***/ - }, - - /***/ 1854: /***/ (module, __unused_webpack_exports, __nccwpck_require__) => { - "use strict"; - /* eslint-disable object-property-newline */ - - const decodeText = __nccwpck_require__(4619); - - const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g; - - const EncodedLookup = { - "%00": "\x00", - "%01": "\x01", - "%02": "\x02", - "%03": "\x03", - "%04": "\x04", - "%05": "\x05", - "%06": "\x06", - "%07": "\x07", - "%08": "\x08", - "%09": "\x09", - "%0a": "\x0a", - "%0A": "\x0a", - "%0b": "\x0b", - "%0B": "\x0b", - "%0c": "\x0c", - "%0C": "\x0c", - "%0d": "\x0d", - "%0D": "\x0d", - "%0e": "\x0e", - "%0E": "\x0e", - "%0f": "\x0f", - "%0F": "\x0f", - "%10": "\x10", - "%11": "\x11", - "%12": "\x12", - "%13": "\x13", - "%14": "\x14", - "%15": "\x15", - "%16": "\x16", - "%17": "\x17", - "%18": "\x18", - "%19": "\x19", - "%1a": "\x1a", - "%1A": "\x1a", - "%1b": "\x1b", - "%1B": "\x1b", - "%1c": "\x1c", - "%1C": "\x1c", - "%1d": "\x1d", - "%1D": "\x1d", - "%1e": "\x1e", - "%1E": "\x1e", - "%1f": "\x1f", - "%1F": "\x1f", - "%20": "\x20", - "%21": "\x21", - "%22": "\x22", - "%23": "\x23", - "%24": "\x24", - "%25": "\x25", - "%26": "\x26", - "%27": "\x27", - "%28": "\x28", - "%29": "\x29", - "%2a": "\x2a", - "%2A": "\x2a", - "%2b": "\x2b", - "%2B": "\x2b", - "%2c": "\x2c", - "%2C": "\x2c", - "%2d": "\x2d", - "%2D": "\x2d", - "%2e": "\x2e", - "%2E": "\x2e", - "%2f": "\x2f", - "%2F": "\x2f", - "%30": "\x30", - "%31": "\x31", - "%32": "\x32", - "%33": "\x33", - "%34": "\x34", - "%35": "\x35", - "%36": "\x36", - "%37": "\x37", - "%38": "\x38", - "%39": "\x39", - "%3a": "\x3a", - "%3A": "\x3a", - "%3b": "\x3b", - "%3B": "\x3b", - "%3c": "\x3c", - "%3C": "\x3c", - "%3d": "\x3d", - "%3D": "\x3d", - "%3e": "\x3e", - "%3E": "\x3e", - "%3f": "\x3f", - "%3F": "\x3f", - "%40": "\x40", - "%41": "\x41", - "%42": "\x42", - "%43": "\x43", - "%44": "\x44", - "%45": "\x45", - "%46": "\x46", - "%47": "\x47", - "%48": "\x48", - "%49": "\x49", - "%4a": "\x4a", - "%4A": "\x4a", - "%4b": "\x4b", - "%4B": "\x4b", - "%4c": "\x4c", - "%4C": "\x4c", - "%4d": "\x4d", - "%4D": "\x4d", - "%4e": "\x4e", - "%4E": "\x4e", - "%4f": "\x4f", - "%4F": "\x4f", - "%50": "\x50", - "%51": "\x51", - "%52": "\x52", - "%53": "\x53", - "%54": "\x54", - "%55": "\x55", - "%56": "\x56", - "%57": "\x57", - "%58": "\x58", - "%59": "\x59", - "%5a": "\x5a", - "%5A": "\x5a", - "%5b": "\x5b", - "%5B": "\x5b", - "%5c": "\x5c", - "%5C": "\x5c", - "%5d": "\x5d", - "%5D": "\x5d", - "%5e": "\x5e", - "%5E": "\x5e", - "%5f": "\x5f", - "%5F": "\x5f", - "%60": "\x60", - "%61": "\x61", - "%62": "\x62", - "%63": "\x63", - "%64": "\x64", - "%65": "\x65", - "%66": "\x66", - "%67": "\x67", - "%68": "\x68", - "%69": "\x69", - "%6a": "\x6a", - "%6A": "\x6a", - "%6b": "\x6b", - "%6B": "\x6b", - "%6c": "\x6c", - "%6C": "\x6c", - "%6d": "\x6d", - "%6D": "\x6d", - "%6e": "\x6e", - "%6E": "\x6e", - "%6f": "\x6f", - "%6F": "\x6f", - "%70": "\x70", - "%71": "\x71", - "%72": "\x72", - "%73": "\x73", - "%74": "\x74", - "%75": "\x75", - "%76": "\x76", - "%77": "\x77", - "%78": "\x78", - "%79": "\x79", - "%7a": "\x7a", - "%7A": "\x7a", - "%7b": "\x7b", - "%7B": "\x7b", - "%7c": "\x7c", - "%7C": "\x7c", - "%7d": "\x7d", - "%7D": "\x7d", - "%7e": "\x7e", - "%7E": "\x7e", - "%7f": "\x7f", - "%7F": "\x7f", - "%80": "\x80", - "%81": "\x81", - "%82": "\x82", - "%83": "\x83", - "%84": "\x84", - "%85": "\x85", - "%86": "\x86", - "%87": "\x87", - "%88": "\x88", - "%89": "\x89", - "%8a": "\x8a", - "%8A": "\x8a", - "%8b": "\x8b", - "%8B": "\x8b", - "%8c": "\x8c", - "%8C": "\x8c", - "%8d": "\x8d", - "%8D": "\x8d", - "%8e": "\x8e", - "%8E": "\x8e", - "%8f": "\x8f", - "%8F": "\x8f", - "%90": "\x90", - "%91": "\x91", - "%92": "\x92", - "%93": "\x93", - "%94": "\x94", - "%95": "\x95", - "%96": "\x96", - "%97": "\x97", - "%98": "\x98", - "%99": "\x99", - "%9a": "\x9a", - "%9A": "\x9a", - "%9b": "\x9b", - "%9B": "\x9b", - "%9c": "\x9c", - "%9C": "\x9c", - "%9d": "\x9d", - "%9D": "\x9d", - "%9e": "\x9e", - "%9E": "\x9e", - "%9f": "\x9f", - "%9F": "\x9f", - "%a0": "\xa0", - "%A0": "\xa0", - "%a1": "\xa1", - "%A1": "\xa1", - "%a2": "\xa2", - "%A2": "\xa2", - "%a3": "\xa3", - "%A3": "\xa3", - "%a4": "\xa4", - "%A4": "\xa4", - "%a5": "\xa5", - "%A5": "\xa5", - "%a6": "\xa6", - "%A6": "\xa6", - "%a7": "\xa7", - "%A7": "\xa7", - "%a8": "\xa8", - "%A8": "\xa8", - "%a9": "\xa9", - "%A9": "\xa9", - "%aa": "\xaa", - "%Aa": "\xaa", - "%aA": "\xaa", - "%AA": "\xaa", - "%ab": "\xab", - "%Ab": "\xab", - "%aB": "\xab", - "%AB": "\xab", - "%ac": "\xac", - "%Ac": "\xac", - "%aC": "\xac", - "%AC": "\xac", - "%ad": "\xad", - "%Ad": "\xad", - "%aD": "\xad", - "%AD": "\xad", - "%ae": "\xae", - "%Ae": "\xae", - "%aE": "\xae", - "%AE": "\xae", - "%af": "\xaf", - "%Af": "\xaf", - "%aF": "\xaf", - "%AF": "\xaf", - "%b0": "\xb0", - "%B0": "\xb0", - "%b1": "\xb1", - "%B1": "\xb1", - "%b2": "\xb2", - "%B2": "\xb2", - "%b3": "\xb3", - "%B3": "\xb3", - "%b4": "\xb4", - "%B4": "\xb4", - "%b5": "\xb5", - "%B5": "\xb5", - "%b6": "\xb6", - "%B6": "\xb6", - "%b7": "\xb7", - "%B7": "\xb7", - "%b8": "\xb8", - "%B8": "\xb8", - "%b9": "\xb9", - "%B9": "\xb9", - "%ba": "\xba", - "%Ba": "\xba", - "%bA": "\xba", - "%BA": "\xba", - "%bb": "\xbb", - "%Bb": "\xbb", - "%bB": "\xbb", - "%BB": "\xbb", - "%bc": "\xbc", - "%Bc": "\xbc", - "%bC": "\xbc", - "%BC": "\xbc", - "%bd": "\xbd", - "%Bd": "\xbd", - "%bD": "\xbd", - "%BD": "\xbd", - "%be": "\xbe", - "%Be": "\xbe", - "%bE": "\xbe", - "%BE": "\xbe", - "%bf": "\xbf", - "%Bf": "\xbf", - "%bF": "\xbf", - "%BF": "\xbf", - "%c0": "\xc0", - "%C0": "\xc0", - "%c1": "\xc1", - "%C1": "\xc1", - "%c2": "\xc2", - "%C2": "\xc2", - "%c3": "\xc3", - "%C3": "\xc3", - "%c4": "\xc4", - "%C4": "\xc4", - "%c5": "\xc5", - "%C5": "\xc5", - "%c6": "\xc6", - "%C6": "\xc6", - "%c7": "\xc7", - "%C7": "\xc7", - "%c8": "\xc8", - "%C8": "\xc8", - "%c9": "\xc9", - "%C9": "\xc9", - "%ca": "\xca", - "%Ca": "\xca", - "%cA": "\xca", - "%CA": "\xca", - "%cb": "\xcb", - "%Cb": "\xcb", - "%cB": "\xcb", - "%CB": "\xcb", - "%cc": "\xcc", - "%Cc": "\xcc", - "%cC": "\xcc", - "%CC": "\xcc", - "%cd": "\xcd", - "%Cd": "\xcd", - "%cD": "\xcd", - "%CD": "\xcd", - "%ce": "\xce", - "%Ce": "\xce", - "%cE": "\xce", - "%CE": "\xce", - "%cf": "\xcf", - "%Cf": "\xcf", - "%cF": "\xcf", - "%CF": "\xcf", - "%d0": "\xd0", - "%D0": "\xd0", - "%d1": "\xd1", - "%D1": "\xd1", - "%d2": "\xd2", - "%D2": "\xd2", - "%d3": "\xd3", - "%D3": "\xd3", - "%d4": "\xd4", - "%D4": "\xd4", - "%d5": "\xd5", - "%D5": "\xd5", - "%d6": "\xd6", - "%D6": "\xd6", - "%d7": "\xd7", - "%D7": "\xd7", - "%d8": "\xd8", - "%D8": "\xd8", - "%d9": "\xd9", - "%D9": "\xd9", - "%da": "\xda", - "%Da": "\xda", - "%dA": "\xda", - "%DA": "\xda", - "%db": "\xdb", - "%Db": "\xdb", - "%dB": "\xdb", - "%DB": "\xdb", - "%dc": "\xdc", - "%Dc": "\xdc", - "%dC": "\xdc", - "%DC": "\xdc", - "%dd": "\xdd", - "%Dd": "\xdd", - "%dD": "\xdd", - "%DD": "\xdd", - "%de": "\xde", - "%De": "\xde", - "%dE": "\xde", - "%DE": "\xde", - "%df": "\xdf", - "%Df": "\xdf", - "%dF": "\xdf", - "%DF": "\xdf", - "%e0": "\xe0", - "%E0": "\xe0", - "%e1": "\xe1", - "%E1": "\xe1", - "%e2": "\xe2", - "%E2": "\xe2", - "%e3": "\xe3", - "%E3": "\xe3", - "%e4": "\xe4", - "%E4": "\xe4", - "%e5": "\xe5", - "%E5": "\xe5", - "%e6": "\xe6", - "%E6": "\xe6", - "%e7": "\xe7", - "%E7": "\xe7", - "%e8": "\xe8", - "%E8": "\xe8", - "%e9": "\xe9", - "%E9": "\xe9", - "%ea": "\xea", - "%Ea": "\xea", - "%eA": "\xea", - "%EA": "\xea", - "%eb": "\xeb", - "%Eb": "\xeb", - "%eB": "\xeb", - "%EB": "\xeb", - "%ec": "\xec", - "%Ec": "\xec", - "%eC": "\xec", - "%EC": "\xec", - "%ed": "\xed", - "%Ed": "\xed", - "%eD": "\xed", - "%ED": "\xed", - "%ee": "\xee", - "%Ee": "\xee", - "%eE": "\xee", - "%EE": "\xee", - "%ef": "\xef", - "%Ef": "\xef", - "%eF": "\xef", - "%EF": "\xef", - "%f0": "\xf0", - "%F0": "\xf0", - "%f1": "\xf1", - "%F1": "\xf1", - "%f2": "\xf2", - "%F2": "\xf2", - "%f3": "\xf3", - "%F3": "\xf3", - "%f4": "\xf4", - "%F4": "\xf4", - "%f5": "\xf5", - "%F5": "\xf5", - "%f6": "\xf6", - "%F6": "\xf6", - "%f7": "\xf7", - "%F7": "\xf7", - "%f8": "\xf8", - "%F8": "\xf8", - "%f9": "\xf9", - "%F9": "\xf9", - "%fa": "\xfa", - "%Fa": "\xfa", - "%fA": "\xfa", - "%FA": "\xfa", - "%fb": "\xfb", - "%Fb": "\xfb", - "%fB": "\xfb", - "%FB": "\xfb", - "%fc": "\xfc", - "%Fc": "\xfc", - "%fC": "\xfc", - "%FC": "\xfc", - "%fd": "\xfd", - "%Fd": "\xfd", - "%fD": "\xfd", - "%FD": "\xfd", - "%fe": "\xfe", - "%Fe": "\xfe", - "%fE": "\xfe", - "%FE": "\xfe", - "%ff": "\xff", - "%Ff": "\xff", - "%fF": "\xff", - "%FF": "\xff", - }; - - function encodedReplacer(match) { - return EncodedLookup[match]; - } - - const STATE_KEY = 0; - const STATE_VALUE = 1; - const STATE_CHARSET = 2; - const STATE_LANG = 3; - - function parseParams(str) { - const res = []; - let state = STATE_KEY; - let charset = ""; - let inquote = false; - let escaping = false; - let p = 0; - let tmp = ""; - const len = str.length; - - for (var i = 0; i < len; ++i) { - // eslint-disable-line no-var - const char = str[i]; - if (char === "\\" && inquote) { - if (escaping) { - escaping = false; - } else { - escaping = true; - continue; - } - } else if (char === '"') { - if (!escaping) { - if (inquote) { - inquote = false; - state = STATE_KEY; - } else { - inquote = true; - } - continue; - } else { - escaping = false; - } - } else { - if (escaping && inquote) { - tmp += "\\"; - } - escaping = false; - if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { - if (state === STATE_CHARSET) { - state = STATE_LANG; - charset = tmp.substring(1); - } else { - state = STATE_VALUE; - } - tmp = ""; - continue; - } else if (state === STATE_KEY && (char === "*" || char === "=") && res.length) { - state = char === "*" ? STATE_CHARSET : STATE_VALUE; - res[p] = [tmp, undefined]; - tmp = ""; - continue; - } else if (!inquote && char === ";") { - state = STATE_KEY; - if (charset) { - if (tmp.length) { - tmp = decodeText( - tmp.replace(RE_ENCODED, encodedReplacer), - "binary", - charset, - ); - } - charset = ""; - } else if (tmp.length) { - tmp = decodeText(tmp, "binary", "utf8"); - } - if (res[p] === undefined) { - res[p] = tmp; - } else { - res[p][1] = tmp; - } - tmp = ""; - ++p; - continue; - } else if (!inquote && (char === " " || char === "\t")) { - continue; - } - } - tmp += char; - } - if (charset && tmp.length) { - tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), "binary", charset); - } else if (tmp) { - tmp = decodeText(tmp, "binary", "utf8"); - } - - if (res[p] === undefined) { - if (tmp) { - res[p] = tmp; - } - } else { - res[p][1] = tmp; - } - - return res; - } - - module.exports = parseParams; - - /***/ - }, - - /******/ - }; - /************************************************************************/ - /******/ // The module cache - /******/ var __webpack_module_cache__ = {}; - /******/ - /******/ // The require function - /******/ function __nccwpck_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 - /******/ var threw = true; - /******/ try { - /******/ __webpack_modules__[moduleId].call( - module.exports, - module, - module.exports, - __nccwpck_require__, - ); - /******/ threw = false; - /******/ - } finally { - /******/ if (threw) delete __webpack_module_cache__[moduleId]; - /******/ - } - /******/ - /******/ // Return the exports of the module - /******/ return module.exports; - /******/ - } - /******/ - /************************************************************************/ - /******/ /* webpack/runtime/compat */ - /******/ - /******/ if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = __dirname + "/"; - /******/ - /************************************************************************/ - var __webpack_exports__ = {}; - // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. - (() => { - // (C) 2024-2026 GoodData Corporation - -const core = __nccwpck_require__(2186); - const github = __nccwpck_require__(5438); - const semver = __nccwpck_require__(1383); - - async function run() { - try { - const newVersion = core.getInput("version", { required: true }); - // Access the GitHub token from the environment variables - const token = process.env.GITHUB_TOKEN; - const octokit = github.getOctokit(token); - const { owner, repo } = github.context.repo; - - // Fetch the latest release from the GitHub repository - const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({ - owner, - repo, - }); - - // Extract version from the latest release tag - const latestVersion = latestRelease.tag_name.startsWith("v") - ? latestRelease.tag_name.substring(1) - : latestRelease.tag_name; - - console.log(`latest release: ${latestVersion}`); - - // Determine if the new version is greater than the latest version - const isLatest = semver.gt(newVersion, latestVersion); - - console.log(`New version: ${newVersion}`); - console.log(`is-latest: ${isLatest}`); - // Set output - core.setOutput("is-latest", isLatest.toString()); - } catch (error) { - core.setFailed(error.message); - } - } - - run(); - })(); - - module.exports = __webpack_exports__; - /******/ -})(); diff --git a/.github/actions/git-check-release/action.yml b/.github/actions/git-check-release/action.yml index 5c433bc456a..758ed8434cd 100644 --- a/.github/actions/git-check-release/action.yml +++ b/.github/actions/git-check-release/action.yml @@ -1,18 +1,41 @@ -# (C) 2022 GoodData Corporation +# (C) 2022-2026 GoodData Corporation -name: "Action to update hugo version param in parmas.toml" -description: "Action add new version to hugo version config set it latest and remove old one" +name: "Check release version is latest" +description: "Checks whether the given version is greater than the current latest GitHub release" inputs: - version: - description: "New version to be set" - required: true + version: + description: "New version to compare against the latest release" + required: true outputs: is-latest: - description: true if version could be set as latest - + description: "true if version is greater than the latest release (or no latest release exists)" + value: ${{ steps.check.outputs.is-latest }} runs: - using: "node20" - main: "action-build/index.js" + using: composite + steps: + - id: check + shell: bash + env: + VERSION: ${{ inputs.version }} + run: | + set -euo pipefail + latest_tag=$(gh release view --json tagName -q .tagName 2>/dev/null || true) + if [[ -z "$latest_tag" ]]; then + echo "No latest release found, setting is-latest to true" + echo "is-latest=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + latest=${latest_tag#v} + echo "latest release: $latest" + echo "New version: $VERSION" + sorted_top=$(npx -y semver@7.7.4 "$VERSION" "$latest" | tail -1) + if [[ "$sorted_top" == "$VERSION" && "$VERSION" != "$latest" ]]; then + is_latest=true + else + is_latest=false + fi + echo "is-latest: $is_latest" + echo "is-latest=$is_latest" >> "$GITHUB_OUTPUT" diff --git a/.github/actions/git-check-release/package-lock.json b/.github/actions/git-check-release/package-lock.json deleted file mode 100644 index f94eba5312e..00000000000 --- a/.github/actions/git-check-release/package-lock.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "name": "update-hugo-param-action", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "update-hugo-param-action", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^6.0.0", - "semver": "^7.3.5" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.1" - } - }, - "node_modules/@actions/core": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", - "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", - "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^11.1.0" - } - }, - "node_modules/@actions/github": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", - "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", - "dependencies": { - "@actions/http-client": "^2.2.0", - "@octokit/core": "^5.0.1", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-rest-endpoint-methods": "^10.0.0" - } - }, - "node_modules/@actions/http-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.0.tgz", - "integrity": "sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.25.4" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz", - "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/endpoint": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", - "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", - "dependencies": { - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/graphql": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", - "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", - "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", - "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", - "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", - "dependencies": { - "@octokit/types": "^12.4.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.3.0.tgz", - "integrity": "sha512-c/fjpoHispRvBZuRoTVt/uALg7pXa9RQbXWJiDMk6NDkGNomuAZG7YuYYpZoxeoXv+kVRjIDTsO0e1z0pei+PQ==", - "dependencies": { - "@octokit/types": "^12.4.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/request": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.2.0.tgz", - "integrity": "sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==", - "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", - "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", - "dependencies": { - "@octokit/types": "^12.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/types": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.5.0.tgz", - "integrity": "sha512-YJEKcb0KkJlIUNU/zjnZwHEP8AoVh/OoIcP/1IyR4UHxExz7fzpe/a8IG4wBtQi7QDEqiomVLX88S6FpxxAJtg==", - "dependencies": { - "@octokit/openapi-types": "^19.1.0" - } - }, - "node_modules/@vercel/ncc": { - "version": "0.38.1", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", - "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", - "dev": true, - "bin": { - "ncc": "dist/ncc/cli.js" - } - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/undici": { - "version": "5.28.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", - "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/.github/actions/git-check-release/package.json b/.github/actions/git-check-release/package.json deleted file mode 100644 index 8c36eb77fb8..00000000000 --- a/.github/actions/git-check-release/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "update-hugo-param-action", - "version": "1.0.0", - "description": "Github action to update Hugo parameter in toml file", - "main": "action-build/index.js", - "author": "GoodData", - "license": "MIT", - "scripts": { - "build": "ncc build src/index.js -o action-build" - }, - "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^6.0.0", - "semver": "^7.3.5" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.1" - } -} diff --git a/.github/actions/git-check-release/src/index.js b/.github/actions/git-check-release/src/index.js deleted file mode 100644 index 02c33a9e727..00000000000 --- a/.github/actions/git-check-release/src/index.js +++ /dev/null @@ -1,40 +0,0 @@ -// (C) 2024 GoodData Corporation - -const core = require("@actions/core"); -const github = require("@actions/github"); -const semver = require("semver"); - -async function run() { - try { - const newVersion = core.getInput("version", { required: true }); - // Access the GitHub token from the environment variables - const token = process.env.GITHUB_TOKEN; - const octokit = github.getOctokit(token); - const { owner, repo } = github.context.repo; - - // Fetch the latest release from the GitHub repository - const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({ - owner, - repo, - }); - - // Extract version from the latest release tag - const latestVersion = latestRelease.tag_name.startsWith("v") - ? latestRelease.tag_name.substring(1) - : latestRelease.tag_name; - - console.log(`latest release: ${latestVersion}`); - - // Determine if the new version is greater than the latest version - const isLatest = semver.gt(newVersion, latestVersion); - - console.log(`New version: ${newVersion}`); - console.log(`is-latest: ${isLatest}`); - // Set output - core.setOutput("is-latest", isLatest.toString()); - } catch (error) { - core.setFailed(error.message); - } -} - -run(); diff --git a/.github/actions/rush/set-up-rush/action.yml b/.github/actions/rush/set-up-rush/action.yml index 1cedfca917f..85c18994477 100644 --- a/.github/actions/rush/set-up-rush/action.yml +++ b/.github/actions/rush/set-up-rush/action.yml @@ -13,11 +13,16 @@ runs: uses: ./.github/actions/node/set-up-node id: node-init - # This is temporary solution to disable zstd before cached operation on runners see readme in zstd action directory + # This is temporary solution to disable zstd before cached operation on runners - name: detect zstd + id: detect-zstd uses: ./.github/actions/zstd/detect-zstd - - name: disbale zstd + + - name: disable zstd + if: ${{ steps.detect-zstd.outputs.exists == 'true' }} uses: ./.github/actions/zstd/disable-zstd + with: + zstd-dir: ${{ steps.detect-zstd.outputs.zstd-dir }} # The runner is set up to assume a role using a web identity token, which is only possible for runners in the infra1-runners-arc group. # Region and role ARN and token file are passed as environment variables from the runner. @@ -79,11 +84,12 @@ runs: common/temp/pnpm-store key: pnpm-cache-${{ hashFiles('common/config/rush/pnpm-lock.yaml') }}-${{ hashFiles('rush.json') }} - - # All cached operation done enable zstd back - # This is temporary solution to disable zstd before cached operation on runners see readme in zstd action directory + # This is temporary solution to disable zstd before cached operation on runners - name: enable zstd + if: ${{ steps.detect-zstd.outputs.exists == 'true' }} uses: ./.github/actions/zstd/enable-zstd + with: + zstd-dir: ${{ steps.detect-zstd.outputs.zstd-dir }} # Install rush - name: Install rush diff --git a/.github/actions/zstd/detect-zstd/action.yml b/.github/actions/zstd/detect-zstd/action.yml index fd49ba8789a..78532ddcb33 100644 --- a/.github/actions/zstd/detect-zstd/action.yml +++ b/.github/actions/zstd/detect-zstd/action.yml @@ -1,5 +1,14 @@ name: "Detect zstd" description: "Checks if zstd is installed and saves its directory to env" + +outputs: + exists: + description: "Indicates whether zstd is installed (true/false)" + value: ${{ steps.check-zstd.outputs.exists }} + zstd-dir: + description: "The directory where zstd is installed" + value: ${{ steps.check-zstd.outputs.zstd_dir }} + runs: using: "composite" steps: @@ -12,5 +21,6 @@ runs: echo "exists=false" >> $GITHUB_OUTPUT else echo "Found zstd at: $ZSTD_PATH" - echo "ZSTD_DIR=$ZSTD_PATH" >> $GITHUB_ENV + echo "exists=true" >> $GITHUB_OUTPUT + echo "zstd-dir=$ZSTD_PATH" >> $GITHUB_OUTPUT fi diff --git a/.github/actions/zstd/disable-zstd/action.yml b/.github/actions/zstd/disable-zstd/action.yml index 80e39969b1b..3912184ef1a 100644 --- a/.github/actions/zstd/disable-zstd/action.yml +++ b/.github/actions/zstd/disable-zstd/action.yml @@ -1,15 +1,19 @@ name: "Disable zstd" description: "Disables zstd by renaming its installation directory" + +inputs: + zstd-dir: + description: "Path to zstd installation" + required: true + runs: using: "composite" steps: - name: Rename zstd directory to disable it shell: bash + env: + ZSTD_DIR: ${{ inputs.zstd-dir }} run: | - if [ -z "$ZSTD_DIR" ]; then - echo "Environment variable ZSTD_DIR is not set." - exit 0 - fi BACKUP_DIR="${ZSTD_DIR}_backup" echo "Renaming directory $ZSTD_DIR to $BACKUP_DIR" mv "$ZSTD_DIR" "$BACKUP_DIR" diff --git a/.github/actions/zstd/enable-zstd/action.yml b/.github/actions/zstd/enable-zstd/action.yml index e4250ec96fc..38c7f28f4a5 100644 --- a/.github/actions/zstd/enable-zstd/action.yml +++ b/.github/actions/zstd/enable-zstd/action.yml @@ -1,15 +1,19 @@ name: "Enable zstd" description: "Enables zstd by renaming its directory back to the original name" + +inputs: + zstd-dir: + description: "Path to zstd installation" + required: true + runs: using: "composite" steps: - name: Restore zstd directory shell: bash + env: + ZSTD_DIR: ${{ inputs.zstd-dir }} run: | - if [ -z "$ZSTD_DIR" ]; then - echo "Environment variable ZSTD_DIR is not set." - exit 0 - fi BACKUP_DIR="${ZSTD_DIR}_backup" echo "Restoring directory: renaming $BACKUP_DIR back to $ZSTD_DIR" mv "$BACKUP_DIR" "$ZSTD_DIR" diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 656b0ebaf19..5280439242c 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -14,7 +14,8 @@ "external", "gooddata-group", "internal", - ["parent", "sibling", "index"], + "parent", + ["sibling", "index"], "unknown" ], "customGroups": [ diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index 1b5483ed840..14c4dd5da82 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -1,1434 +1,1218 @@ -// DO NOT ADD COMMENTS IN THIS FILE. They will be lost when the Rush tool resaves it. -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json", - "packages": [ - { - "name": "@aaronhayes/react-use-hubspot-form", - "allowedCategories": [ "production" ] - }, - { - "name": "@babel/cli", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@babel/core", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@babel/plugin-proposal-export-default-from", - "allowedCategories": [ "production" ] - }, - { - "name": "@babel/plugin-transform-async-to-generator", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@babel/plugin-transform-class-properties", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@babel/plugin-transform-object-rest-spread", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@babel/plugin-transform-typescript", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@babel/preset-env", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@babel/preset-react", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@babel/preset-typescript", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@babel/runtime", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@braintree/sanitize-url", - "allowedCategories": [ "production" ] - }, - { - "name": "@codemirror/autocomplete", - "allowedCategories": [ "production" ] - }, - { - "name": "@codemirror/commands", - "allowedCategories": [ "production" ] - }, - { - "name": "@codemirror/lang-yaml", - "allowedCategories": [ "production" ] - }, - { - "name": "@codemirror/language", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@codemirror/lint", - "allowedCategories": [ "production" ] - }, - { - "name": "@codemirror/state", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@codemirror/view", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@componentdriven/csf", - "allowedCategories": [ "production" ] - }, - { - "name": "@eslint/js", - "allowedCategories": [ "tools" ] - }, - { - "name": "@evil-internetmann/react-dnd", - "allowedCategories": [ "production" ] - }, - { - "name": "@floating-ui/dom", - "allowedCategories": [ "production" ] - }, - { - "name": "@floating-ui/react", - "allowedCategories": [ "production" ] - }, - { - "name": "@floating-ui/react-dom", - "allowedCategories": [ "production" ] - }, - { - "name": "@formatjs/cli-lib", - "allowedCategories": [ "tools" ] - }, - { - "name": "@formatjs/icu-messageformat-parser", - "allowedCategories": [ "tools" ] - }, - { - "name": "@gooddata/api-client-tiger", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@gooddata/catalog-export", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/emailjs-mime-codec-new", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/eslint-config", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/fixtures", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@gooddata/i18n-toolkit", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/lint-config", - "allowedCategories": [ "tools" ] - }, - { - "name": "@gooddata/mock-handling", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@gooddata/number-formatter", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/oxlint-config", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/plugin-toolkit", - "allowedCategories": [ "tools" ] - }, - { - "name": "@gooddata/reference-workspace", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-backend-base", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-backend-mockingbird", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-backend-spi", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-backend-tiger", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-code-convertors", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-code-schemas", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-e2e-utils", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-embedding", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-model", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-pluggable-application-model", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-ui", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-catalog", - "allowedCategories": [ "examples" ] - }, - { - "name": "@gooddata/sdk-ui-charts", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-dashboard", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-ext", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-filters", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-gen-ai", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-geo", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-kit", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-loaders", - "allowedCategories": [ "examples", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-pivot", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@gooddata/sdk-ui-semantic-search", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@gooddata/sdk-ui-tests-app", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-ui-tests-reference-workspace", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-ui-tests-scenarios", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-ui-theme-provider", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@gooddata/sdk-ui-vis-commons", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/sdk-ui-web-components", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/stylelint-config", - "allowedCategories": [ "production" ] - }, - { - "name": "@gooddata/util", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@joint/core", - "allowedCategories": [ "production" ] - }, - { - "name": "@joint/layout-directed-graph", - "allowedCategories": [ "production" ] - }, - { - "name": "@lezer/highlight", - "allowedCategories": [ "production" ] - }, - { - "name": "@microsoft/api-documenter", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@microsoft/api-extractor", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@openapitools/openapi-generator-cli", - "allowedCategories": [ "production" ] - }, - { - "name": "@playwright/test", - "allowedCategories": [ "production" ] - }, - { - "name": "@react-aria/interactions", - "allowedCategories": [ "production" ] - }, - { - "name": "@reduxjs/toolkit", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/addon-a11y", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/builder-vite", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/builder-webpack5", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/cli", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/manager-webpack5", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/preset-scss", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/react", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/react-vite", - "allowedCategories": [ "production" ] - }, - { - "name": "@storybook/react-webpack5", - "allowedCategories": [ "production" ] - }, - { - "name": "@tanstack/react-virtual", - "allowedCategories": [ "production" ] - }, - { - "name": "@testing-library/dom", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@testing-library/react", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@testing-library/user-event", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/babel__core", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/blessed", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/columnify", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/cross-spawn", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/debounce-promise", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/fast-levenshtein", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/fs-extra", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/geojson", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/history", - "allowedCategories": [ "examples" ] - }, - { - "name": "@types/hoist-non-react-statics", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/inquirer", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/isomorphic-fetch", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@types/js-yaml", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/json5", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/kefir", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/lodash-es", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@types/mapbox-gl", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/maplibre-gl", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/mdast", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/node", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@types/node-fetch", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/pdf-parse", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/qs", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/raf", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@types/react", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@types/react-datepicker", - "allowedCategories": [ "examples" ] - }, - { - "name": "@types/react-dom", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@types/react-google-recaptcha", - "allowedCategories": [ "examples" ] - }, - { - "name": "@types/react-helmet", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@types/react-lines-ellipsis", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/react-measure", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@types/react-native-listener", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/react-portal", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/react-redux", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/react-router-dom", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@types/react-syntax-highlighter", - "allowedCategories": [ "examples" ] - }, - { - "name": "@types/react-textarea-autosize", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/react-transition-group", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/rimraf", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/semver", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/spark-md5", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/stringify-object", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/tar", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/tinycolor2", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/tough-cookie", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/unist", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/uuid", - "allowedCategories": [ "production" ] - }, - { - "name": "@types/validate-npm-package-name", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/watchpack", - "allowedCategories": [ "tools" ] - }, - { - "name": "@types/webpack-env", - "allowedCategories": [ "examples" ] - }, - { - "name": "@typescript-eslint/eslint-plugin", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@typescript-eslint/parser", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@typescript/native-preview", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "@vitejs/plugin-react", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "@vitejs/plugin-react-swc", - "allowedCategories": [ "examples" ] - }, - { - "name": "@vitest/eslint-plugin", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "@welldone-software/why-did-you-render", - "allowedCategories": [ "examples" ] - }, - { - "name": "ag-grid-community", - "allowedCategories": [ "production" ] - }, - { - "name": "ag-grid-enterprise", - "allowedCategories": [ "production" ] - }, - { - "name": "ag-grid-react", - "allowedCategories": [ "production" ] - }, - { - "name": "async", - "allowedCategories": [ "production" ] - }, - { - "name": "axios", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "axios-cache-interceptor", - "allowedCategories": [ "production" ] - }, - { - "name": "babel-loader", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "babel-plugin-lodash", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "babel-plugin-require-context-hook", - "allowedCategories": [ "production" ] - }, - { - "name": "blessed", - "allowedCategories": [ "tools" ] - }, - { - "name": "blob-polyfill", - "allowedCategories": [ "production" ] - }, - { - "name": "case-sensitive-paths-webpack-plugin", - "allowedCategories": [ "examples", "tools" ] - }, - { - "name": "chalk", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "chokidar", - "allowedCategories": [ "tools" ] - }, - { - "name": "circular-dependency-plugin", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "classnames", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "clean-webpack-plugin", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "codemirror", - "allowedCategories": [ "production" ] - }, - { - "name": "columnify", - "allowedCategories": [ "tools" ] - }, - { - "name": "commander", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "compression-webpack-plugin", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "concurrently", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "copy-to-clipboard", - "allowedCategories": [ "production" ] - }, - { - "name": "copy-webpack-plugin", - "allowedCategories": [ "production" ] - }, - { - "name": "core-js", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "cron-parser", - "allowedCategories": [ "production" ] - }, - { - "name": "cross-spawn", - "allowedCategories": [ "tools" ] - }, - { - "name": "css-loader", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "date-fns", - "allowedCategories": [ "production" ] - }, - { - "name": "date-fns-tz", - "allowedCategories": [ "production" ] - }, - { - "name": "debounce-promise", - "allowedCategories": [ "production" ] - }, - { - "name": "default-import", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "dependency-cruiser", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "dotenv", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "dotenv-webpack", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "downshift", - "allowedCategories": [ "production" ] - }, - { - "name": "esbuild-loader", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-import-resolver-typescript", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-chai-friendly", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "eslint-plugin-header", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-headers", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-import", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-import-esm", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-import-x", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-jsdoc", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-no-barrel-files", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-no-only-tests", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-playwright", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "eslint-plugin-react", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-react-hooks", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-regexp", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-sonarjs", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eslint-plugin-storybook", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "eslint-plugin-tsdoc", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "eventsource-parser", - "allowedCategories": [ "production" ] - }, - { - "name": "exponential-backoff", - "allowedCategories": [ "production" ] - }, - { - "name": "fast-equals", - "allowedCategories": [ "production" ] - }, - { - "name": "fast-glob", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "fast-levenshtein", - "allowedCategories": [ "production" ] - }, - { - "name": "fetch-cookie", - "allowedCategories": [ "production" ] - }, - { - "name": "fetch-mock", - "allowedCategories": [ "production" ] - }, - { - "name": "find-up", - "allowedCategories": [ "tools" ] - }, - { - "name": "fix-esm-import-path", - "allowedCategories": [ "production" ] - }, - { - "name": "fixed-data-table-2", - "allowedCategories": [ "production" ] - }, - { - "name": "fork-ts-checker-webpack-plugin", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "fs-extra", - "allowedCategories": [ "tools" ] - }, - { - "name": "full-icu", - "allowedCategories": [ "production" ] - }, - { - "name": "glob", - "allowedCategories": [ "production" ] - }, - { - "name": "globals", - "allowedCategories": [ "tools" ] - }, - { - "name": "happy-dom", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "highcharts", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "highcharts-react-official", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "history", - "allowedCategories": [ "examples" ] - }, - { - "name": "hoist-non-react-statics", - "allowedCategories": [ "production" ] - }, - { - "name": "html-validate", - "allowedCategories": [ "tools" ] - }, - { - "name": "html-webpack-plugin", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "http-status-codes", - "allowedCategories": [ "production" ] - }, - { - "name": "immer", - "allowedCategories": [ "production" ] - }, - { - "name": "inquirer", - "allowedCategories": [ "tools" ] - }, - { - "name": "isomorphic-fetch", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "jiti", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "js-object-pretty-print", - "allowedCategories": [ "production" ] - }, - { - "name": "js-yaml", - "allowedCategories": [ "production" ] - }, - { - "name": "jsdom", - "allowedCategories": [ "production" ] - }, - { - "name": "json-loader", - "allowedCategories": [ "production" ] - }, - { - "name": "json-schema-to-typescript", - "allowedCategories": [ "production" ] - }, - { - "name": "json-stable-stringify", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "json5", - "allowedCategories": [ "tools" ] - }, - { - "name": "jsonschema", - "allowedCategories": [ "tools" ] - }, - { - "name": "kefir", - "allowedCategories": [ "production" ] - }, - { - "name": "lodash-es", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "lru-cache", - "allowedCategories": [ "production" ] - }, - { - "name": "lz-string", - "allowedCategories": [ "production" ] - }, - { - "name": "mapbox-gl", - "allowedCategories": [ "production" ] - }, - { - "name": "maplibre-gl", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "mdast", - "allowedCategories": [ "production" ] - }, - { - "name": "mini-css-extract-plugin", - "allowedCategories": [ "production" ] - }, - { - "name": "mkdirp", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "mocha", - "allowedCategories": [ "production" ] - }, - { - "name": "mocha-junit-reporter", - "allowedCategories": [ "production" ] - }, - { - "name": "moment", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "moment-timezone", - "allowedCategories": [ "production" ] - }, - { - "name": "node-fetch", - "allowedCategories": [ "production" ] - }, - { - "name": "node-xlsx", - "allowedCategories": [ "production" ] - }, - { - "name": "npm-run-all", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "open", - "allowedCategories": [ "tools" ] - }, - { - "name": "ora", - "allowedCategories": [ "tools" ] - }, - { - "name": "oxfmt", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "oxlint", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "oxlint-tsgolint", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "p-map", - "allowedCategories": [ "tools" ] - }, - { - "name": "pdf-parse", - "allowedCategories": [ "production" ] - }, - { - "name": "polished", - "allowedCategories": [ "production" ] - }, - { - "name": "postcss", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "postcss-scss", - "allowedCategories": [ "tools" ] - }, - { - "name": "postcss-value-parser", - "allowedCategories": [ "production" ] - }, - { - "name": "prettier", - "allowedCategories": [ "production" ] - }, - { - "name": "process", - "allowedCategories": [ "examples", "tools" ] - }, - { - "name": "qs", - "allowedCategories": [ "production" ] - }, - { - "name": "raf", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "react", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "react-content-loader", - "allowedCategories": [ "production" ] - }, - { - "name": "react-datepicker", - "allowedCategories": [ "examples" ] - }, - { - "name": "react-day-picker", - "allowedCategories": [ "production" ] - }, - { - "name": "react-dnd", - "allowedCategories": [ "production" ] - }, - { - "name": "react-dnd-html5-backend", - "allowedCategories": [ "production" ] - }, - { - "name": "react-dom", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "react-fast-compare", - "allowedCategories": [ "production" ] - }, - { - "name": "react-ga", - "allowedCategories": [ "examples" ] - }, - { - "name": "react-google-recaptcha", - "allowedCategories": [ "examples" ] - }, - { - "name": "react-grid-system", - "allowedCategories": [ "production" ] - }, - { - "name": "react-helmet", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "react-intl", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "react-lines-ellipsis", - "allowedCategories": [ "production" ] - }, - { - "name": "react-loading-skeleton", - "allowedCategories": [ "production" ] - }, - { - "name": "react-markdown", - "allowedCategories": [ "production" ] - }, - { - "name": "react-measure", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "react-native-listener", - "allowedCategories": [ "production" ] - }, - { - "name": "react-portal", - "allowedCategories": [ "production" ] - }, - { - "name": "react-redux", - "allowedCategories": [ "production" ] - }, - { - "name": "react-responsive", - "allowedCategories": [ "production" ] - }, - { - "name": "react-router-dom", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "react-select", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "react-select-async-paginate", - "allowedCategories": [ "production" ] - }, - { - "name": "react-syntax-highlighter", - "allowedCategories": [ "examples" ] - }, - { - "name": "react-textarea-autosize", - "allowedCategories": [ "production" ] - }, - { - "name": "react-transition-group", - "allowedCategories": [ "production" ] - }, - { - "name": "react-window", - "allowedCategories": [ "production" ] - }, - { - "name": "readdirp", - "allowedCategories": [ "production" ] - }, - { - "name": "recharts", - "allowedCategories": [ "examples" ] - }, - { - "name": "redux", - "allowedCategories": [ "production" ] - }, - { - "name": "redux-batched-actions", - "allowedCategories": [ "production" ] - }, - { - "name": "redux-saga", - "allowedCategories": [ "production" ] - }, - { - "name": "remark", - "allowedCategories": [ "production" ] - }, - { - "name": "remark-emoji", - "allowedCategories": [ "production" ] - }, - { - "name": "remark-gfm", - "allowedCategories": [ "production" ] - }, - { - "name": "require-from-string", - "allowedCategories": [ "production" ] - }, - { - "name": "reselect", - "allowedCategories": [ "production" ] - }, - { - "name": "rolldown", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "rollup", - "allowedCategories": [ "production" ] - }, - { - "name": "sass", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "sass-loader", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "semver", - "allowedCategories": [ "production" ] - }, - { - "name": "source-map-loader", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "spark-md5", - "allowedCategories": [ "production" ] - }, - { - "name": "speed-measure-webpack-plugin", - "allowedCategories": [ "examples" ] - }, - { - "name": "storybook", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "stringify-object", - "allowedCategories": [ "production" ] - }, - { - "name": "strip-ansi", - "allowedCategories": [ "tools" ] - }, - { - "name": "style-loader", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "styled-jsx", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "stylelint", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "stylelint-config-standard", - "allowedCategories": [ "tools" ] - }, - { - "name": "stylelint-order", - "allowedCategories": [ "tools" ] - }, - { - "name": "stylelint-plugin-defensive-css", - "allowedCategories": [ "tools" ] - }, - { - "name": "stylelint-scss", - "allowedCategories": [ "tools" ] - }, - { - "name": "svgo", - "allowedCategories": [ "production" ] - }, - { - "name": "tar", - "allowedCategories": [ "tools" ] - }, - { - "name": "tinycolor2", - "allowedCategories": [ "production" ] - }, - { - "name": "ts-invariant", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "ts-loader", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "ts-morph", - "allowedCategories": [ "tools" ] - }, - { - "name": "tsd", - "allowedCategories": [ "production" ] - }, - { - "name": "tslib", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "typescript", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "unified", - "allowedCategories": [ "production" ] - }, - { - "name": "util", - "allowedCategories": [ "examples", "tools" ] - }, - { - "name": "uuid", - "allowedCategories": [ "production" ] - }, - { - "name": "validate-npm-package-name", - "allowedCategories": [ "examples", "tools" ] - }, - { - "name": "vite", - "allowedCategories": [ "examples", "production" ] - }, - { - "name": "vite-node", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "vite-plugin-css-injected-by-js", - "allowedCategories": [ "production" ] - }, - { - "name": "vite-plugin-environment", - "allowedCategories": [ "production" ] - }, - { - "name": "vite-plugin-html", - "allowedCategories": [ "examples" ] - }, - { - "name": "vite-plugin-mkcert", - "allowedCategories": [ "examples" ] - }, - { - "name": "vite-plugin-static-copy", - "allowedCategories": [ "production" ] - }, - { - "name": "vitest", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "vitest-dom", - "allowedCategories": [ "production" ] - }, - { - "name": "wait-on", - "allowedCategories": [ "production" ] - }, - { - "name": "watchpack", - "allowedCategories": [ "tools" ] - }, - { - "name": "webpack", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "webpack-bundle-analyzer", - "allowedCategories": [ "production", "tools" ] - }, - { - "name": "webpack-cli", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "webpack-dev-server", - "allowedCategories": [ "examples", "production", "tools" ] - }, - { - "name": "xml2js", - "allowedCategories": [ "production" ] - }, - { - "name": "yaml", - "allowedCategories": [ "production" ] - }, - { - "name": "zod", - "allowedCategories": [ "production" ] - } - ] -} +// DO NOT ADD COMMENTS IN THIS FILE. They will be lost when the Rush tool resaves it. +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json", + "packages": [ + { + "name": "@aaronhayes/react-use-hubspot-form", + "allowedCategories": ["production"] + }, + { + "name": "@babel/cli", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@babel/core", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@babel/plugin-proposal-export-default-from", + "allowedCategories": ["production"] + }, + { + "name": "@babel/plugin-transform-async-to-generator", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@babel/plugin-transform-class-properties", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@babel/plugin-transform-object-rest-spread", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@babel/plugin-transform-typescript", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@babel/preset-env", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@babel/preset-react", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@babel/preset-typescript", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@babel/runtime", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@braintree/sanitize-url", + "allowedCategories": ["production"] + }, + { + "name": "@codemirror/autocomplete", + "allowedCategories": ["production"] + }, + { + "name": "@codemirror/commands", + "allowedCategories": ["production"] + }, + { + "name": "@codemirror/lang-yaml", + "allowedCategories": ["production"] + }, + { + "name": "@codemirror/language", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@codemirror/lint", + "allowedCategories": ["production"] + }, + { + "name": "@codemirror/state", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@codemirror/view", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@componentdriven/csf", + "allowedCategories": ["production"] + }, + { + "name": "@floating-ui/dom", + "allowedCategories": ["production"] + }, + { + "name": "@floating-ui/react", + "allowedCategories": ["production"] + }, + { + "name": "@floating-ui/react-dom", + "allowedCategories": ["production"] + }, + { + "name": "@formatjs/cli-lib", + "allowedCategories": ["tools"] + }, + { + "name": "@formatjs/icu-messageformat-parser", + "allowedCategories": ["tools"] + }, + { + "name": "@gooddata/api-client-tiger", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@gooddata/catalog-export", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/eslint-config", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/fixtures", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@gooddata/i18n-toolkit", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/mock-handling", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@gooddata/number-formatter", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/plugin-toolkit", + "allowedCategories": ["tools"] + }, + { + "name": "@gooddata/reference-workspace", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/sdk-backend-base", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-backend-mockingbird", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/sdk-backend-spi", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-backend-tiger", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-embedding", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/sdk-model", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-dashboard", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-ext", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-filters", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-gen-ai", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-geo", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-charts", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-kit", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-loaders", + "allowedCategories": ["examples", "tools"] + }, + { + "name": "@gooddata/sdk-ui-pivot", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@gooddata/sdk-ui-semantic-search", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@gooddata/sdk-ui-theme-provider", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@gooddata/sdk-ui-vis-commons", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/sdk-ui-web-components", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/stylelint-config", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/util", + "allowedCategories": ["production"] + }, + { + "name": "@lezer/highlight", + "allowedCategories": ["production"] + }, + { + "name": "@microsoft/api-documenter", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@microsoft/api-extractor", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@openapitools/openapi-generator-cli", + "allowedCategories": ["production"] + }, + { + "name": "@react-aria/interactions", + "allowedCategories": ["production"] + }, + { + "name": "@reduxjs/toolkit", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/builder-vite", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/builder-webpack5", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/cli", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/manager-webpack5", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/preset-scss", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/react", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/react-vite", + "allowedCategories": ["production"] + }, + { + "name": "@storybook/react-webpack5", + "allowedCategories": ["production"] + }, + { + "name": "@tanstack/react-virtual", + "allowedCategories": ["production"] + }, + { + "name": "@testing-library/dom", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@testing-library/react", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@testing-library/user-event", + "allowedCategories": ["production"] + }, + { + "name": "@types/babel__core", + "allowedCategories": ["tools"] + }, + { + "name": "@types/blessed", + "allowedCategories": ["tools"] + }, + { + "name": "@types/columnify", + "allowedCategories": ["tools"] + }, + { + "name": "@types/cross-spawn", + "allowedCategories": ["tools"] + }, + { + "name": "@types/debounce-promise", + "allowedCategories": ["production"] + }, + { + "name": "@types/fast-levenshtein", + "allowedCategories": ["production"] + }, + { + "name": "@types/fs-extra", + "allowedCategories": ["tools"] + }, + { + "name": "@types/history", + "allowedCategories": ["examples"] + }, + { + "name": "@types/hoist-non-react-statics", + "allowedCategories": ["production"] + }, + { + "name": "@types/inquirer", + "allowedCategories": ["tools"] + }, + { + "name": "@types/isomorphic-fetch", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@types/js-yaml", + "allowedCategories": ["production"] + }, + { + "name": "@types/json5", + "allowedCategories": ["tools"] + }, + { + "name": "@types/kefir", + "allowedCategories": ["production"] + }, + { + "name": "@types/mapbox-gl", + "allowedCategories": ["production"] + }, + { + "name": "@types/mdast", + "allowedCategories": ["production"] + }, + { + "name": "@types/node", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@types/node-fetch", + "allowedCategories": ["production"] + }, + { + "name": "@types/pdf-parse", + "allowedCategories": ["production"] + }, + { + "name": "@types/qs", + "allowedCategories": ["production"] + }, + { + "name": "@types/raf", + "allowedCategories": ["production", "tools"] + }, + { + "name": "@types/react", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@types/react-datepicker", + "allowedCategories": ["examples"] + }, + { + "name": "@types/react-dom", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@types/react-google-recaptcha", + "allowedCategories": ["examples"] + }, + { + "name": "@types/react-helmet", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@types/react-lines-ellipsis", + "allowedCategories": ["production"] + }, + { + "name": "@types/react-measure", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@types/react-native-listener", + "allowedCategories": ["production"] + }, + { + "name": "@types/react-portal", + "allowedCategories": ["production"] + }, + { + "name": "@types/react-redux", + "allowedCategories": ["production"] + }, + { + "name": "@types/react-router-dom", + "allowedCategories": ["examples", "production"] + }, + { + "name": "@types/react-syntax-highlighter", + "allowedCategories": ["examples"] + }, + { + "name": "@types/react-textarea-autosize", + "allowedCategories": ["production"] + }, + { + "name": "@types/react-transition-group", + "allowedCategories": ["production"] + }, + { + "name": "@types/rimraf", + "allowedCategories": ["tools"] + }, + { + "name": "@types/semver", + "allowedCategories": ["production"] + }, + { + "name": "@types/spark-md5", + "allowedCategories": ["production"] + }, + { + "name": "@types/stringify-object", + "allowedCategories": ["production"] + }, + { + "name": "@types/tar", + "allowedCategories": ["tools"] + }, + { + "name": "@types/tinycolor2", + "allowedCategories": ["production"] + }, + { + "name": "@types/tough-cookie", + "allowedCategories": ["production"] + }, + { + "name": "@types/unist", + "allowedCategories": ["production"] + }, + { + "name": "@types/uuid", + "allowedCategories": ["production"] + }, + { + "name": "@types/validate-npm-package-name", + "allowedCategories": ["tools"] + }, + { + "name": "@types/watchpack", + "allowedCategories": ["tools"] + }, + { + "name": "@types/webpack-env", + "allowedCategories": ["examples"] + }, + { + "name": "@typescript-eslint/eslint-plugin", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@typescript-eslint/parser", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "@vitejs/plugin-react", + "allowedCategories": ["examples"] + }, + { + "name": "@vitejs/plugin-react-swc", + "allowedCategories": ["examples"] + }, + { + "name": "@welldone-software/why-did-you-render", + "allowedCategories": ["examples"] + }, + { + "name": "ag-grid-community", + "allowedCategories": ["production"] + }, + { + "name": "ag-grid-enterprise", + "allowedCategories": ["production"] + }, + { + "name": "ag-grid-react", + "allowedCategories": ["production"] + }, + { + "name": "async", + "allowedCategories": ["production"] + }, + { + "name": "axios", + "allowedCategories": ["production", "tools"] + }, + { + "name": "axios-cache-interceptor", + "allowedCategories": ["production"] + }, + { + "name": "babel-loader", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "babel-plugin-lodash", + "allowedCategories": ["examples", "production"] + }, + { + "name": "babel-plugin-require-context-hook", + "allowedCategories": ["production"] + }, + { + "name": "blessed", + "allowedCategories": ["tools"] + }, + { + "name": "blob-polyfill", + "allowedCategories": ["production"] + }, + { + "name": "case-sensitive-paths-webpack-plugin", + "allowedCategories": ["examples", "tools"] + }, + { + "name": "circular-dependency-plugin", + "allowedCategories": ["examples", "production"] + }, + { + "name": "classnames", + "allowedCategories": ["examples", "production"] + }, + { + "name": "clean-webpack-plugin", + "allowedCategories": ["examples", "production"] + }, + { + "name": "codemirror", + "allowedCategories": ["production"] + }, + { + "name": "columnify", + "allowedCategories": ["tools"] + }, + { + "name": "commander", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "compression-webpack-plugin", + "allowedCategories": ["examples", "production"] + }, + { + "name": "concurrently", + "allowedCategories": ["production", "tools"] + }, + { + "name": "copy-to-clipboard", + "allowedCategories": ["production"] + }, + { + "name": "copy-webpack-plugin", + "allowedCategories": ["production"] + }, + { + "name": "core-js", + "allowedCategories": ["examples", "production"] + }, + { + "name": "cron-parser", + "allowedCategories": ["production"] + }, + { + "name": "cross-spawn", + "allowedCategories": ["tools"] + }, + { + "name": "css-loader", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "date-fns", + "allowedCategories": ["production"] + }, + { + "name": "date-fns-tz", + "allowedCategories": ["production"] + }, + { + "name": "debounce-promise", + "allowedCategories": ["production"] + }, + { + "name": "default-import", + "allowedCategories": ["examples", "production"] + }, + { + "name": "dependency-cruiser", + "allowedCategories": ["production", "tools"] + }, + { + "name": "dotenv", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "dotenv-webpack", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "downshift", + "allowedCategories": ["production"] + }, + { + "name": "@gooddata/emailjs-mime-codec-new", + "allowedCategories": ["production"] + }, + { + "name": "esbuild-loader", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-import-resolver-typescript", + "allowedCategories": ["examples", "production"] + }, + { + "name": "eslint-plugin-header", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-import", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-import-esm", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-no-only-tests", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-react", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-react-hooks", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-regexp", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-sonarjs", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eslint-plugin-tsdoc", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "eventsource-parser", + "allowedCategories": ["production"] + }, + { + "name": "exponential-backoff", + "allowedCategories": ["production"] + }, + { + "name": "fast-glob", + "allowedCategories": ["production", "tools"] + }, + { + "name": "fast-levenshtein", + "allowedCategories": ["production"] + }, + { + "name": "fetch-cookie", + "allowedCategories": ["production"] + }, + { + "name": "fetch-mock", + "allowedCategories": ["production"] + }, + { + "name": "find-up", + "allowedCategories": ["tools"] + }, + { + "name": "fix-esm-import-path", + "allowedCategories": ["production"] + }, + { + "name": "fixed-data-table-2", + "allowedCategories": ["production"] + }, + { + "name": "fork-ts-checker-webpack-plugin", + "allowedCategories": ["examples", "production"] + }, + { + "name": "fs-extra", + "allowedCategories": ["tools"] + }, + { + "name": "full-icu", + "allowedCategories": ["production"] + }, + { + "name": "glob", + "allowedCategories": ["production"] + }, + { + "name": "happy-dom", + "allowedCategories": ["production", "tools"] + }, + { + "name": "highcharts", + "allowedCategories": ["examples", "production"] + }, + { + "name": "highcharts-react-official", + "allowedCategories": ["examples", "production"] + }, + { + "name": "history", + "allowedCategories": ["examples"] + }, + { + "name": "hoist-non-react-statics", + "allowedCategories": ["production"] + }, + { + "name": "html-validate", + "allowedCategories": ["tools"] + }, + { + "name": "html-webpack-plugin", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "http-status-codes", + "allowedCategories": ["production"] + }, + { + "name": "chalk", + "allowedCategories": ["production", "tools"] + }, + { + "name": "chokidar", + "allowedCategories": ["tools"] + }, + { + "name": "immer", + "allowedCategories": ["production"] + }, + { + "name": "inquirer", + "allowedCategories": ["tools"] + }, + { + "name": "isomorphic-fetch", + "allowedCategories": ["examples", "production"] + }, + { + "name": "js-object-pretty-print", + "allowedCategories": ["production"] + }, + { + "name": "js-yaml", + "allowedCategories": ["production"] + }, + { + "name": "jsdom", + "allowedCategories": ["production"] + }, + { + "name": "json-loader", + "allowedCategories": ["production"] + }, + { + "name": "json-stable-stringify", + "allowedCategories": ["production", "tools"] + }, + { + "name": "json5", + "allowedCategories": ["tools"] + }, + { + "name": "jsonschema", + "allowedCategories": ["tools"] + }, + { + "name": "kefir", + "allowedCategories": ["production"] + }, + { + "name": "lru-cache", + "allowedCategories": ["production"] + }, + { + "name": "lz-string", + "allowedCategories": ["production"] + }, + { + "name": "mapbox-gl", + "allowedCategories": ["production"] + }, + { + "name": "mdast", + "allowedCategories": ["production"] + }, + { + "name": "mini-css-extract-plugin", + "allowedCategories": ["production"] + }, + { + "name": "mkdirp", + "allowedCategories": ["production", "tools"] + }, + { + "name": "mocha", + "allowedCategories": ["production"] + }, + { + "name": "mocha-junit-reporter", + "allowedCategories": ["production"] + }, + { + "name": "moment", + "allowedCategories": ["examples", "production"] + }, + { + "name": "node-fetch", + "allowedCategories": ["production"] + }, + { + "name": "node-xlsx", + "allowedCategories": ["production"] + }, + { + "name": "npm-run-all", + "allowedCategories": ["examples", "production"] + }, + { + "name": "open", + "allowedCategories": ["tools"] + }, + { + "name": "ora", + "allowedCategories": ["tools"] + }, + { + "name": "p-map", + "allowedCategories": ["tools"] + }, + { + "name": "pdf-parse", + "allowedCategories": ["production"] + }, + { + "name": "polished", + "allowedCategories": ["production"] + }, + { + "name": "postcss", + "allowedCategories": ["production"] + }, + { + "name": "postcss-value-parser", + "allowedCategories": ["production"] + }, + { + "name": "process", + "allowedCategories": ["examples", "tools"] + }, + { + "name": "qs", + "allowedCategories": ["production"] + }, + { + "name": "raf", + "allowedCategories": ["production", "tools"] + }, + { + "name": "react", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "react-content-loader", + "allowedCategories": ["production"] + }, + { + "name": "react-datepicker", + "allowedCategories": ["examples"] + }, + { + "name": "react-day-picker", + "allowedCategories": ["production"] + }, + { + "name": "react-dnd", + "allowedCategories": ["production"] + }, + { + "name": "react-dnd-html5-backend", + "allowedCategories": ["production"] + }, + { + "name": "react-dom", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "react-fast-compare", + "allowedCategories": ["production"] + }, + { + "name": "react-ga", + "allowedCategories": ["examples"] + }, + { + "name": "react-google-recaptcha", + "allowedCategories": ["examples"] + }, + { + "name": "react-grid-system", + "allowedCategories": ["production"] + }, + { + "name": "react-helmet", + "allowedCategories": ["examples", "production"] + }, + { + "name": "react-intl", + "allowedCategories": ["production", "tools"] + }, + { + "name": "react-lines-ellipsis", + "allowedCategories": ["production"] + }, + { + "name": "react-loading-skeleton", + "allowedCategories": ["production"] + }, + { + "name": "react-markdown", + "allowedCategories": ["production"] + }, + { + "name": "react-measure", + "allowedCategories": ["examples", "production"] + }, + { + "name": "react-native-listener", + "allowedCategories": ["production"] + }, + { + "name": "react-portal", + "allowedCategories": ["production"] + }, + { + "name": "react-redux", + "allowedCategories": ["production"] + }, + { + "name": "react-responsive", + "allowedCategories": ["production"] + }, + { + "name": "react-router-dom", + "allowedCategories": ["examples", "production"] + }, + { + "name": "react-select", + "allowedCategories": ["examples", "production"] + }, + { + "name": "react-select-async-paginate", + "allowedCategories": ["production"] + }, + { + "name": "react-syntax-highlighter", + "allowedCategories": ["examples"] + }, + { + "name": "react-textarea-autosize", + "allowedCategories": ["production"] + }, + { + "name": "react-transition-group", + "allowedCategories": ["production"] + }, + { + "name": "react-window", + "allowedCategories": ["production"] + }, + { + "name": "redux-batched-actions", + "allowedCategories": ["production"] + }, + { + "name": "redux-saga", + "allowedCategories": ["production"] + }, + { + "name": "recharts", + "allowedCategories": ["examples"] + }, + { + "name": "remark", + "allowedCategories": ["production"] + }, + { + "name": "remark-emoji", + "allowedCategories": ["production"] + }, + { + "name": "require-from-string", + "allowedCategories": ["production"] + }, + { + "name": "reselect", + "allowedCategories": ["production"] + }, + { + "name": "sass", + "allowedCategories": ["examples", "production"] + }, + { + "name": "sass-loader", + "allowedCategories": ["examples", "production"] + }, + { + "name": "semver", + "allowedCategories": ["production"] + }, + { + "name": "source-map-loader", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "spark-md5", + "allowedCategories": ["production"] + }, + { + "name": "speed-measure-webpack-plugin", + "allowedCategories": ["examples"] + }, + { + "name": "storybook", + "allowedCategories": ["production"] + }, + { + "name": "stringify-object", + "allowedCategories": ["production"] + }, + { + "name": "strip-ansi", + "allowedCategories": ["tools"] + }, + { + "name": "style-loader", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "styled-jsx", + "allowedCategories": ["examples", "production"] + }, + { + "name": "stylelint", + "allowedCategories": ["production"] + }, + { + "name": "svgo", + "allowedCategories": ["production"] + }, + { + "name": "tar", + "allowedCategories": ["tools"] + }, + { + "name": "tinycolor2", + "allowedCategories": ["production"] + }, + { + "name": "ts-invariant", + "allowedCategories": ["examples", "production"] + }, + { + "name": "ts-loader", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "ts-morph", + "allowedCategories": ["tools"] + }, + { + "name": "tsd", + "allowedCategories": ["production"] + }, + { + "name": "tslib", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "typescript", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "unified", + "allowedCategories": ["production"] + }, + { + "name": "util", + "allowedCategories": ["examples", "tools"] + }, + { + "name": "uuid", + "allowedCategories": ["production"] + }, + { + "name": "validate-npm-package-name", + "allowedCategories": ["examples", "tools"] + }, + { + "name": "vite", + "allowedCategories": ["examples", "production"] + }, + { + "name": "vite-plugin-html", + "allowedCategories": ["examples"] + }, + { + "name": "vite-plugin-mkcert", + "allowedCategories": ["examples"] + }, + { + "name": "vite-plugin-static-copy", + "allowedCategories": ["production"] + }, + { + "name": "vitest", + "allowedCategories": ["production", "tools"] + }, + { + "name": "vitest-dom", + "allowedCategories": ["production"] + }, + { + "name": "wait-on", + "allowedCategories": ["production"] + }, + { + "name": "watchpack", + "allowedCategories": ["tools"] + }, + { + "name": "webpack", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "webpack-bundle-analyzer", + "allowedCategories": ["production", "tools"] + }, + { + "name": "webpack-cli", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "webpack-dev-server", + "allowedCategories": ["examples", "production", "tools"] + }, + { + "name": "xml2js", + "allowedCategories": ["production"] + } + ] +} diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 6b799da641a..0674b4108e5 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -8,7 +8,7 @@ importers: .: {} - ../../examples/playground: + ../../../sdk/examples/playground: devDependencies: '@codemirror/state': specifier: 6.5.3 @@ -167,13 +167,13 @@ importers: specifier: 8.0.0 version: 8.0.0(@types/node@24.12.0)(sass@1.70.0) - ../../examples/sdk-interactive-examples: + ../../../sdk/examples/sdk-interactive-examples: devDependencies: validate-npm-package-name: specifier: ^5.0.0 version: 5.0.1 - ../../examples/sdk-interactive-examples/examples-template: + ../../../sdk/examples/sdk-interactive-examples/examples-template: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -309,7 +309,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-attributefilter: + ../../../sdk/examples/sdk-interactive-examples/examples/example-attributefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -445,7 +445,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-chartconfig: + ../../../sdk/examples/sdk-interactive-examples/examples/example-chartconfig: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -581,7 +581,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-columnchart: + ../../../sdk/examples/sdk-interactive-examples/examples/example-columnchart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -717,7 +717,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-combochart: + ../../../sdk/examples/sdk-interactive-examples/examples/example-combochart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -853,7 +853,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-dashboard: + ../../../sdk/examples/sdk-interactive-examples/examples/example-dashboard: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -989,7 +989,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-datefilter: + ../../../sdk/examples/sdk-interactive-examples/examples/example-datefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1125,7 +1125,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-dependentfilters: + ../../../sdk/examples/sdk-interactive-examples/examples/example-dependentfilters: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1261,7 +1261,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-execute: + ../../../sdk/examples/sdk-interactive-examples/examples/example-execute: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1406,7 +1406,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-granularity: + ../../../sdk/examples/sdk-interactive-examples/examples/example-granularity: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1542,7 +1542,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-headline: + ../../../sdk/examples/sdk-interactive-examples/examples/example-headline: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1678,7 +1678,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-pivottable: + ../../../sdk/examples/sdk-interactive-examples/examples/example-pivottable: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1814,7 +1814,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-relativedatefilter: + ../../../sdk/examples/sdk-interactive-examples/examples/example-relativedatefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1950,7 +1950,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../examples/sdk-interactive-examples/examples/example-repeater: + ../../../sdk/examples/sdk-interactive-examples/examples/example-repeater: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -2086,7 +2086,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../libs/api-client-tiger: + ../../../sdk/libs/api-client-tiger: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2189,7 +2189,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-backend-base: + ../../../sdk/libs/sdk-backend-base: dependencies: '@braintree/sanitize-url': specifier: ^6.0.0 @@ -2301,7 +2301,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-backend-mockingbird: + ../../../sdk/libs/sdk-backend-mockingbird: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -2401,7 +2401,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-backend-spi: + ../../../sdk/libs/sdk-backend-spi: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2486,7 +2486,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-backend-tiger: + ../../../sdk/libs/sdk-backend-tiger: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2628,7 +2628,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-code-convertors: + ../../../sdk/libs/sdk-code-convertors: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2710,7 +2710,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0)(yaml@2.8.3) - ../../libs/sdk-code-schemas: + ../../../sdk/libs/sdk-code-schemas: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -2788,7 +2788,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-e2e-utils: + ../../../sdk/libs/sdk-e2e-utils: dependencies: '@playwright/test': specifier: 1.59.1 @@ -2876,7 +2876,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../libs/sdk-embedding: + ../../../sdk/libs/sdk-embedding: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2961,7 +2961,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-model: + ../../../sdk/libs/sdk-model: dependencies: '@types/geojson': specifier: ^7946.0.16 @@ -3061,7 +3061,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../libs/sdk-pluggable-application-model: + ../../../sdk/libs/sdk-pluggable-application-model: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3146,7 +3146,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../libs/sdk-ui: + ../../../sdk/libs/sdk-ui: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -3333,7 +3333,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-all: + ../../../sdk/libs/sdk-ui-all: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3430,7 +3430,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../libs/sdk-ui-catalog: + ../../../sdk/libs/sdk-ui-catalog: dependencies: '@babel/core': specifier: 7.28.4 @@ -3626,7 +3626,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-charts: + ../../../sdk/libs/sdk-ui-charts: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -3849,7 +3849,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-dashboard: + ../../../sdk/libs/sdk-ui-dashboard: dependencies: '@codemirror/language': specifier: 6.12.1 @@ -4117,7 +4117,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-ext: + ../../../sdk/libs/sdk-ui-ext: dependencies: '@codemirror/commands': specifier: 6.10.1 @@ -4400,7 +4400,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-filters: + ../../../sdk/libs/sdk-ui-filters: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -4602,7 +4602,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-gen-ai: + ../../../sdk/libs/sdk-ui-gen-ai: dependencies: '@codemirror/autocomplete': specifier: 6.20.0 @@ -4849,7 +4849,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-geo: + ../../../sdk/libs/sdk-ui-geo: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -5036,7 +5036,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-kit: + ../../../sdk/libs/sdk-ui-kit: dependencies: '@aaronhayes/react-use-hubspot-form': specifier: 2.1.2 @@ -5328,7 +5328,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-loaders: + ../../../sdk/libs/sdk-ui-loaders: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -5461,7 +5461,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../libs/sdk-ui-pivot: + ../../../sdk/libs/sdk-ui-pivot: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -5651,7 +5651,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-pluggable-application: + ../../../sdk/libs/sdk-ui-pluggable-application: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -5775,7 +5775,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../libs/sdk-ui-semantic-search: + ../../../sdk/libs/sdk-ui-semantic-search: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -5935,7 +5935,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-tests-app: + ../../../sdk/libs/sdk-ui-tests-app: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6070,7 +6070,7 @@ importers: specifier: 8.0.0 version: 8.0.0(@types/node@24.12.0)(sass@1.70.0) - ../../libs/sdk-ui-tests-e2e: + ../../../sdk/libs/sdk-ui-tests-e2e: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6169,7 +6169,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../libs/sdk-ui-tests-reference-workspace: + ../../../sdk/libs/sdk-ui-tests-reference-workspace: devDependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -6235,7 +6235,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../libs/sdk-ui-tests-scenarios: + ../../../sdk/libs/sdk-ui-tests-scenarios: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6397,7 +6397,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../libs/sdk-ui-tests-storybook: + ../../../sdk/libs/sdk-ui-tests-storybook: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6625,7 +6625,7 @@ importers: specifier: 3.1.2 version: 3.1.2(vite@8.0.0) - ../../libs/sdk-ui-theme-provider: + ../../../sdk/libs/sdk-ui-theme-provider: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -6782,7 +6782,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../libs/sdk-ui-vis-commons: + ../../../sdk/libs/sdk-ui-vis-commons: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -6951,7 +6951,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../libs/sdk-ui-web-components: + ../../../sdk/libs/sdk-ui-web-components: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -7120,7 +7120,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../libs/util: + ../../../sdk/libs/util: dependencies: lodash-es: specifier: ^4.17.23 @@ -7202,7 +7202,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../tools/app-toolkit: + ../../../sdk/tools/app-toolkit: dependencies: '@babel/cli': specifier: ^7.23.4 @@ -7359,7 +7359,7 @@ importers: specifier: 5.93.0 version: 5.93.0(webpack-cli@6.0.1) - ../../tools/applink: + ../../../sdk/tools/applink: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -7464,7 +7464,7 @@ importers: specifier: ^2.4.4 version: 2.4.4 - ../../tools/catalog-export: + ../../../sdk/tools/catalog-export: dependencies: '@babel/core': specifier: 7.28.4 @@ -7588,7 +7588,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../tools/dashboard-plugin-template: + ../../../sdk/tools/dashboard-plugin-template: dependencies: json-stable-stringify: specifier: 1.3.0 @@ -7784,7 +7784,7 @@ importers: specifier: 5.2.2 version: 5.2.2(webpack-cli@6.0.1)(webpack@5.93.0) - ../../tools/eslint-config: + ../../../sdk/tools/eslint-config: devDependencies: '@eslint/js': specifier: 9.28.0 @@ -7877,7 +7877,7 @@ importers: specifier: ^5.2.0 version: 5.2.0(@types/node@24.12.0)(jiti@2.6.1) - ../../tools/i18n-toolkit: + ../../../sdk/tools/i18n-toolkit: dependencies: '@formatjs/cli-lib': specifier: ^6.1.1 @@ -7986,7 +7986,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../tools/lint-config: + ../../../sdk/tools/lint-config: devDependencies: '@typescript/native-preview': specifier: 7.0.0-dev.20260202.1 @@ -8001,7 +8001,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../tools/mock-handling: + ../../../sdk/tools/mock-handling: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -8110,7 +8110,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../tools/oxlint-config: + ../../../sdk/tools/oxlint-config: devDependencies: '@eslint/js': specifier: 9.28.0 @@ -8188,7 +8188,7 @@ importers: specifier: ^5.2.0 version: 5.2.0(@types/node@24.12.0)(jiti@2.6.1) - ../../tools/plugin-toolkit: + ../../../sdk/tools/plugin-toolkit: dependencies: '@babel/cli': specifier: ^7.23.4 @@ -8336,7 +8336,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../tools/react-app-template: + ../../../sdk/tools/react-app-template: dependencies: '@codemirror/state': specifier: 6.5.3 @@ -8499,7 +8499,7 @@ importers: specifier: 5.2.2 version: 5.2.2(webpack-cli@6.0.1)(webpack@5.93.0) - ../../tools/reference-workspace: + ../../../sdk/tools/reference-workspace: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -8575,7 +8575,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../tools/reference-workspace-mgmt: + ../../../sdk/tools/reference-workspace-mgmt: dependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -8657,7 +8657,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../tools/stylelint-config: + ../../../sdk/tools/stylelint-config: dependencies: postcss: specifier: 8.5.6 @@ -8789,7 +8789,7 @@ packages: resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.29.0 + '@babel/types': 7.28.4 /@babel/helper-compilation-targets@7.28.6: resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} @@ -8813,7 +8813,7 @@ packages: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.28.4 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8856,6 +8856,15 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-imports@7.27.1: + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + /@babel/helper-module-imports@7.28.6: resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -8865,6 +8874,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4): + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + /@babel/helper-module-transforms@7.28.6(@babel/core@7.28.4): resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} @@ -8924,7 +8946,7 @@ packages: '@babel/core': 7.28.4 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -8932,8 +8954,8 @@ packages: resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -8941,6 +8963,10 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.27.1: + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.28.5: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -9458,7 +9484,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.4) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9667,10 +9693,10 @@ packages: dependencies: '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.28.6 + '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/types': 7.29.0 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color dev: true @@ -9977,6 +10003,20 @@ packages: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 + /@babel/traverse@7.28.4: + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.0 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + /@babel/traverse@7.29.0: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} @@ -9991,6 +10031,13 @@ packages: transitivePeerDependencies: - supports-color + /@babel/types@7.28.4: + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + /@babel/types@7.29.0: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -10117,13 +10164,13 @@ packages: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - /@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1): + /@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0): resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} engines: {node: '>=18'} peerDependencies: postcss-selector-parser: ^7.0.0 dependencies: - postcss-selector-parser: 7.1.1 + postcss-selector-parser: 7.1.0 /@dagrejs/dagre@1.1.8: resolution: {integrity: sha512-5SEDlndt4W/LaVzPYJW+bSmSEZc9EzTf8rJ20WCKvjS5EAZAN0b+x0Yww7VMT4R3Wootkg+X9bUfUxazYw6Blw==} @@ -11544,7 +11591,7 @@ packages: /@nestjs/axios@4.0.1(@nestjs/common@11.1.6)(axios@1.12.2)(rxjs@7.8.2): resolution: {integrity: sha512-68pFJgu+/AZbWkGu65Z3r55bTsCPlgyKaV4BSG8yUAD72q1PPuyVRgUwFv6BxdnibTUHlyxm06FmYWNC+bjN7A==} peerDependencies: - '@nestjs/common': ^10.0.0 || ^11.0.0 || 9.3.11 + '@nestjs/common': ^10.0.0 || ^11.0.0 axios: ^1.3.1 rxjs: ^7.0.0 dependencies: @@ -11582,7 +11629,7 @@ packages: engines: {node: '>= 20'} requiresBuild: true peerDependencies: - '@nestjs/common': ^11.0.0 || 9.3.11 + '@nestjs/common': ^11.0.0 '@nestjs/microservices': ^11.0.0 '@nestjs/platform-express': ^11.0.0 '@nestjs/websockets': ^11.0.0 @@ -12099,7 +12146,7 @@ packages: react-redux: optional: true dependencies: - '@standard-schema/spec': 1.1.0 + '@standard-schema/spec': 1.0.0 '@standard-schema/utils': 0.3.0 immer: 10.1.1 react: 19.1.1 @@ -12256,7 +12303,7 @@ packages: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.3 dev: true /@rollup/rollup-android-arm-eabi@4.54.0: @@ -12568,6 +12615,10 @@ packages: engines: {node: '>=10'} dev: false + /@standard-schema/spec@1.0.0: + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + dev: false + /@standard-schema/spec@1.1.0: resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -12609,7 +12660,7 @@ packages: dependencies: '@storybook/codemod': 10.1.11(@testing-library/dom@10.4.1)(react-dom@19.1.1)(react@19.1.1) '@types/semver': 7.3.13 - commander: 14.0.3 + commander: 14.0.2 create-storybook: 10.1.11(@testing-library/dom@10.4.1)(react-dom@19.1.1)(react@19.1.1) jscodeshift: 0.15.2 storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.1.1)(react@19.1.1) @@ -13378,6 +13429,20 @@ packages: - supports-color dev: true + /@typescript-eslint/project-service@8.52.0(typescript@5.9.3): + resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + dependencies: + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.53.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/project-service@8.58.0(typescript@5.9.3): resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13392,6 +13457,14 @@ packages: - supports-color dev: true + /@typescript-eslint/scope-manager@8.52.0: + resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 + dev: true + /@typescript-eslint/scope-manager@8.58.0: resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13400,6 +13473,15 @@ packages: '@typescript-eslint/visitor-keys': 8.58.0 dev: true + /@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3): + resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + dependencies: + typescript: 5.9.3 + dev: true + /@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3): resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13427,11 +13509,41 @@ packages: - supports-color dev: true + /@typescript-eslint/types@8.52.0: + resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + + /@typescript-eslint/types@8.53.0: + resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true + /@typescript-eslint/types@8.58.0: resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true + /@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3): + resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + dependencies: + '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 + debug: 4.4.3 + minimatch: 10.1.2 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3): resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13452,6 +13564,23 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3): + resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) + eslint: 9.39.2(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@8.58.0(eslint@9.39.2)(typescript@5.9.3): resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13469,6 +13598,14 @@ packages: - supports-color dev: true + /@typescript-eslint/visitor-keys@8.52.0: + resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@typescript-eslint/types': 8.52.0 + eslint-visitor-keys: 4.2.1 + dev: true + /@typescript-eslint/visitor-keys@8.58.0: resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13548,7 +13685,6 @@ packages: /@ungap/structured-clone@1.3.0: resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - deprecated: Potential CWE-502 - Update to 1.3.1 or higher dev: false /@unrs/resolver-binding-android-arm-eabi@1.11.1: @@ -13735,8 +13871,8 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/scope-manager': 8.58.0 - '@typescript-eslint/utils': 8.58.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 vitest: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) @@ -13951,9 +14087,6 @@ packages: peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x - peerDependenciesMeta: - webpack: - optional: true dependencies: webpack: 5.93.0(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.93.0) @@ -13964,9 +14097,6 @@ packages: peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x - peerDependenciesMeta: - webpack: - optional: true dependencies: webpack: 5.93.0(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.93.0) @@ -13979,8 +14109,6 @@ packages: webpack-cli: 6.x.x webpack-dev-server: '*' peerDependenciesMeta: - webpack: - optional: true webpack-dev-server: optional: true dependencies: @@ -14001,17 +14129,25 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-import-attributes@1.9.5(acorn@8.16.0): + /acorn-import-attributes@1.9.5(acorn@8.15.0): resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.16.0 + acorn: 8.15.0 /acorn-jsx-walk@2.0.0: resolution: {integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==} dev: true + /acorn-jsx@5.3.2(acorn@8.15.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.15.0 + dev: true + /acorn-jsx@5.3.2(acorn@8.16.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -14027,16 +14163,29 @@ packages: acorn: 8.16.0 dev: true + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + dependencies: + acorn: 8.15.0 + /acorn-walk@8.3.5: resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} dependencies: acorn: 8.16.0 + dev: true + + /acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true /acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true + dev: true /ag-charts-community@13.1.0: resolution: {integrity: sha512-w+uFTjxlAoTq1+8tgUORtB/zr9jm38ibXzbbWnkBP9Dep9yahi5a1jZL7yExAX35uq3g9QtjTh0Oj/QPDBQ9Ew==} @@ -14481,9 +14630,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' - peerDependenciesMeta: - webpack: - optional: true dependencies: '@babel/core': 7.28.4 find-cache-dir: 3.3.2 @@ -14553,7 +14699,6 @@ packages: /basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - deprecated: Security vulnerability fixed in 5.2.1, please upgrade dev: true /batch@0.6.1: @@ -14962,6 +15107,11 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} + /commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + dev: true + /commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -15628,14 +15778,16 @@ packages: engines: {node: '>=10'} peerDependencies: webpack: ^4 || ^5 - peerDependenciesMeta: - webpack: - optional: true dependencies: dotenv-defaults: 2.0.2 webpack: 5.93.0(webpack-cli@6.0.1) dev: true + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: true + /dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -15748,12 +15900,20 @@ packages: tapable: 1.1.3 dev: true + /enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + /enhanced-resolve@5.20.1: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.3.2 + dev: true /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -15955,9 +16115,6 @@ packages: resolution: {integrity: sha512-D7HeJNdkDKKMarPQO/3dlJT6RwN2YJO7ENU6RPlpOz5YxSHnUNi2yvW41Bckvi1EVwctIaLzlb0ni5ag2GINYA==} peerDependencies: webpack: ^4.40.0 || ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: esbuild: 0.25.9 get-tsconfig: 4.10.1 @@ -16301,7 +16458,7 @@ packages: eslint: '>=8' storybook: ^10.1.11 dependencies: - '@typescript-eslint/utils': 8.58.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.1.1)(react@19.1.1) transitivePeerDependencies: @@ -16413,8 +16570,8 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 dev: true @@ -16604,7 +16761,7 @@ packages: pend: 1.2.0 dev: true - /fdir@6.5.0(picomatch@4.0.4): + /fdir@6.5.0(picomatch@4.0.3): resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -16613,7 +16770,7 @@ packages: picomatch: optional: true dependencies: - picomatch: 4.0.4 + picomatch: 4.0.3 /fetch-cookie@0.7.3: resolution: {integrity: sha512-rZPkLnI8x5V+zYAiz8QonAHsTb4BY+iFowFBI1RFn0zrO343AVp9X7/yUj/9wL6Ef/8fLls8b/vGtzUvmyAUGA==} @@ -17023,7 +17180,6 @@ packages: /glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true dependencies: foreground-child: 3.3.1 @@ -17366,7 +17522,7 @@ packages: html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.3.2 + tapable: 2.2.3 webpack: 5.93.0(webpack-cli@6.0.1) dev: true @@ -19863,9 +20019,14 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + /picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} + dev: true /pidtree@0.3.1: resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} @@ -19997,6 +20158,13 @@ packages: postcss: 8.5.6 dev: false + /postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + /postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} @@ -20576,9 +20744,6 @@ packages: resolution: {integrity: sha512-6orZWyCnIQXMGY4DUGM0oj0L7oYnwTACsfsru/J7r94RM3P9eS7SORGpr3LCeRCMoIMQcpfKZ7X4NdyFHBS8Eg==} peerDependencies: redux: '>=1.0.0' - peerDependenciesMeta: - redux: - optional: true dependencies: redux: 5.0.1 dev: false @@ -20593,9 +20758,6 @@ packages: resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} peerDependencies: redux: ^5.0.0 - peerDependenciesMeta: - redux: - optional: true dependencies: redux: 5.0.1 dev: false @@ -21330,9 +21492,6 @@ packages: engines: {node: '>= 14.15.0'} peerDependencies: webpack: ^5.72.1 - peerDependenciesMeta: - webpack: - optional: true dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 @@ -21465,7 +21624,7 @@ packages: '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 - esbuild: 0.27.2 + esbuild: 0.25.9 open: 10.2.0 prettier: 3.6.2 recast: 0.23.11 @@ -21640,9 +21799,6 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true dependencies: webpack: 5.93.0(webpack-cli@6.0.1) dev: true @@ -21725,7 +21881,7 @@ packages: '@csstools/css-syntax-patches-for-csstree': 1.0.26 '@csstools/css-tokenizer': 3.0.4 '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 @@ -21752,7 +21908,7 @@ packages: postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.1 + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 @@ -21847,9 +22003,14 @@ packages: engines: {node: '>=6'} dev: true + /tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + /tapable@2.3.2: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} + dev: true /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} @@ -21867,7 +22028,6 @@ packages: /tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -21899,8 +22059,6 @@ packages: optional: true uglify-js: optional: true - webpack: - optional: true dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 @@ -21915,7 +22073,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -21978,8 +22136,8 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 /tinypool@2.1.0: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} @@ -22094,6 +22252,15 @@ packages: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false + /ts-api-utils@2.4.0(typescript@5.9.3): + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + dependencies: + typescript: 5.9.3 + dev: true + /ts-api-utils@2.5.0(typescript@5.9.3): resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} @@ -22126,9 +22293,6 @@ packages: peerDependencies: typescript: '*' webpack: '*' - peerDependenciesMeta: - webpack: - optional: true dependencies: chalk: 4.1.2 enhanced-resolve: 4.5.0 @@ -22152,7 +22316,7 @@ packages: dependencies: chalk: 4.1.2 enhanced-resolve: 5.20.1 - tapable: 2.3.2 + tapable: 2.2.3 tsconfig-paths: 4.2.0 dev: true @@ -22405,8 +22569,8 @@ packages: engines: {node: '>=18.12.0'} dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.16.0 - picomatch: 4.0.4 + acorn: 8.15.0 + picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 dev: true @@ -22533,7 +22697,6 @@ packages: /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true /validate-npm-package-license@3.0.4: @@ -22614,7 +22777,7 @@ packages: colorette: 2.0.20 connect-history-api-fallback: 1.6.0 consola: 2.15.3 - dotenv: 16.4.5 + dotenv: 16.0.3 dotenv-expand: 8.0.3 ejs: 3.1.10 fast-glob: 3.3.3 @@ -22681,9 +22844,9 @@ packages: dependencies: '@types/node': 24.12.0 esbuild: 0.27.2 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.3) jiti: 2.6.1 - picomatch: 4.0.4 + picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.54.0 tinyglobby: 0.2.15 @@ -22737,7 +22900,7 @@ packages: '@oxc-project/runtime': 0.115.0 '@types/node': 24.12.0 lightningcss: 1.32.0 - picomatch: 4.0.4 + picomatch: 4.0.3 postcss: 8.5.8 rolldown: 1.0.0-rc.9 sass: 1.70.0 @@ -22790,7 +22953,7 @@ packages: dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 - picomatch: 4.0.4 + picomatch: 4.0.3 postcss: 8.5.8 rolldown: 1.0.0-rc.9 sass: 1.70.0 @@ -22862,7 +23025,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.3 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -22932,7 +23095,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.3 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23002,7 +23165,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.3 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23072,7 +23235,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.3 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23143,8 +23306,8 @@ packages: hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.16.0 - acorn-walk: 8.3.5 + acorn: 8.15.0 + acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 @@ -23167,8 +23330,6 @@ packages: webpack-bundle-analyzer: '*' webpack-dev-server: '*' peerDependenciesMeta: - webpack: - optional: true webpack-bundle-analyzer: optional: true webpack-dev-server: @@ -23295,11 +23456,11 @@ packages: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - acorn-import-attributes: 1.9.5(acorn@8.16.0) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 + enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -23310,7 +23471,7 @@ packages: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 3.3.0 - tapable: 2.3.2 + tapable: 2.2.3 terser-webpack-plugin: 5.3.14(webpack@5.93.0) watchpack: 2.4.4 webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.93.0) diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 55920088973..df32d16e3bb 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -12,14 +12,14 @@ { "definitionName": "lockStepVersion", "policyName": "sdk", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" }, { "definitionName": "lockStepVersion", "policyName": "sdk-examples", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" } diff --git a/examples/sdk-interactive-examples/examples-template/package.json b/examples/sdk-interactive-examples/examples-template/package.json index aa6d2263fdc..01200b09f11 100644 --- a/examples/sdk-interactive-examples/examples-template/package.json +++ b/examples/sdk-interactive-examples/examples-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples-template", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "GoodData interactive example template", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json index bc4f2b1bbad..cdad2adfaee 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-attributefilter", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates how to use the AttributeFilter component to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json index 07c483feaa9..e74d6f017eb 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-chartconfig", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This interactive example demonstrates how to manipulate the chart config.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/package.json b/examples/sdk-interactive-examples/examples/example-columnchart/package.json index 8951eb44726..c27064e330b 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/package.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-columnchart", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates the usage of the ColumnChart component with the viewBy and stackBy properties.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/package.json b/examples/sdk-interactive-examples/examples/example-combochart/package.json index a9b63fafcea..7df93ff4259 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/package.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-combochart", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Example demonstrates ComboChart secondaryMeasures definition. ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/package.json b/examples/sdk-interactive-examples/examples/example-dashboard/package.json index b74f9eea5ee..fdd83f44329 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/package.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dashboard", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example shows how to use the Dashboard component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/package.json b/examples/sdk-interactive-examples/examples/example-datefilter/package.json index f95e23bb86e..cb8735efe49 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-datefilter", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Example demonstrates usage of Date Filter component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx b/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx index cd69326ea9a..79acbaceeea 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx +++ b/examples/sdk-interactive-examples/examples/example-datefilter/src/example/Example.tsx @@ -11,6 +11,7 @@ import { import { DateDatasets, GrossProfit, NrOfOrders } from "../catalog.js"; import { Hint } from "../Hint.js"; + import { Filter } from "./DateFilter.js"; export interface IDateFilterComponentExampleState { diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json index 8de5c24b7f4..5fb6cf8332a 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dependentfilters", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates how to use multiple attribute filters linked together to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/package.json b/examples/sdk-interactive-examples/examples/example-execute/package.json index ffd7b5ca2cf..ab522976a68 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/package.json +++ b/examples/sdk-interactive-examples/examples/example-execute/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-execute", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates using Execute component and build custom visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx b/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx index 25d09105715..0923af8e4a3 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx +++ b/examples/sdk-interactive-examples/examples/example-execute/src/example/Example.tsx @@ -4,6 +4,7 @@ import { Execute } from "@gooddata/sdk-ui"; import { CustomerCountry, GrossProfit, ProductCategory } from "../catalog.js"; import { Hint } from "../Hint.js"; + import { CustomVisualization } from "./CustomVisualization.js"; export function Example() { diff --git a/examples/sdk-interactive-examples/examples/example-granularity/package.json b/examples/sdk-interactive-examples/examples/example-granularity/package.json index 155b61f2dcc..31730f796a1 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/package.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-granularity", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example exmplains DateFilter granularity ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx b/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx index 6cf27f292d5..27c1b62d879 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx +++ b/examples/sdk-interactive-examples/examples/example-granularity/src/example/Example.tsx @@ -7,6 +7,7 @@ import { ComboChart } from "@gooddata/sdk-ui-charts"; import { DateDatasets, GrossProfit, NrOfOrders } from "../catalog.js"; import { Hint } from "../Hint.js"; + import { GranularitySelector } from "./GranularitySelector.js"; // Try changing default granularity to DateDatasets.CustomerCreatedDate.CustomerCreatedDateMonthYear.Default 👇 diff --git a/examples/sdk-interactive-examples/examples/example-headline/package.json b/examples/sdk-interactive-examples/examples/example-headline/package.json index ab8b16b8129..9d0916d0bad 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/package.json +++ b/examples/sdk-interactive-examples/examples/example-headline/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-headline", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example shows how to use the Headline component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/package.json b/examples/sdk-interactive-examples/examples/example-pivottable/package.json index 3b2c58af932..6915938a2a2 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/package.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-pivottable", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Basic PivotTable manipulation.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json index 25ca7ef998a..c9df886264a 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-relativedatefilter", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "Example demonstrates how to set relative DateFilter for visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/package.json b/examples/sdk-interactive-examples/examples/example-repeater/package.json index d3d0dbb597e..5535975e742 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/package.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-repeater", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "This example demonstrates how to use Repeater component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/package.json b/examples/sdk-interactive-examples/package.json index 2cff2de1833..353cb28a40d 100644 --- a/examples/sdk-interactive-examples/package.json +++ b/examples/sdk-interactive-examples/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "private": false, "description": "GoodData React interactive examples", "license": "LicenseRef-LICENSE", diff --git a/libs/api-client-tiger/package.json b/libs/api-client-tiger/package.json index 616654212fe..46dbf979a63 100644 --- a/libs/api-client-tiger/package.json +++ b/libs/api-client-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/api-client-tiger", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "API Client for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts b/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts index f42defe8094..f49fc94f856 100644 --- a/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts +++ b/libs/api-client-tiger/src/gd-tiger-model/VisualizationObjectModelV1.ts @@ -9,6 +9,7 @@ import { type SortKeyAttribute, type SortKeyValue, } from "../generated/afm-rest-api/index.js"; + import { type ITigerBucket, type ITigerFilter, diff --git a/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts b/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts index d28079e9d01..e38c4e83160 100644 --- a/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts +++ b/libs/api-client-tiger/src/gd-tiger-model/typeGuards.ts @@ -22,6 +22,7 @@ import { type JsonApiMetricOutWithLinks, type JsonApiVisualizationObjectOutWithLinks, } from "../generated/metadata-json-api/index.js"; + import { type ITigerAbsoluteDateFilter, type ITigerDashboardArbitraryAttributeFilter, diff --git a/libs/sdk-backend-base/package.json b/libs/sdk-backend-base/package.json index 0a4929fb0ea..6bac4a75b1e 100644 --- a/libs/sdk-backend-base/package.json +++ b/libs/sdk-backend-base/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-base", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Base for backend implementations", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts b/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts index bf620c16aef..e78b15d3b9c 100644 --- a/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts +++ b/libs/sdk-backend-base/src/convertors/fromBackend/tests/AfmResultConverter.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type IResultHeader, isResultAttributeHeader } from "@gooddata/sdk-model"; import { transformResultHeaders } from "../afm/result.js"; + import { resultHeaders, transformedResultHeaders } from "./AfmResultConverter.fixtures.js"; const transformResultHeader = (resultHeader: IResultHeader): IResultHeader => { diff --git a/libs/sdk-backend-base/src/customBackend/execution.ts b/libs/sdk-backend-base/src/customBackend/execution.ts index 9d0e6f313b2..803016ea1c2 100644 --- a/libs/sdk-backend-base/src/customBackend/execution.ts +++ b/libs/sdk-backend-base/src/customBackend/execution.ts @@ -35,6 +35,7 @@ import { } from "@gooddata/sdk-model"; import { AbstractExecutionFactory } from "../toolkit/execution.js"; + import { type CustomBackendConfig, type CustomBackendState, diff --git a/libs/sdk-backend-base/src/customBackend/index.ts b/libs/sdk-backend-base/src/customBackend/index.ts index 982de273879..99d812b2443 100644 --- a/libs/sdk-backend-base/src/customBackend/index.ts +++ b/libs/sdk-backend-base/src/customBackend/index.ts @@ -27,6 +27,7 @@ import { type IAuthenticatedAsyncCallContext, } from "../toolkit/auth.js"; import { type TelemetryData } from "../toolkit/backend.js"; + import { type CustomBackendConfig } from "./config.js"; import { CustomWorkspace } from "./workspace.js"; diff --git a/libs/sdk-backend-base/src/dummyBackend/index.ts b/libs/sdk-backend-base/src/dummyBackend/index.ts index 69b2c3a4940..ea158ea75be 100644 --- a/libs/sdk-backend-base/src/dummyBackend/index.ts +++ b/libs/sdk-backend-base/src/dummyBackend/index.ts @@ -227,6 +227,7 @@ import { } from "@gooddata/sdk-model"; import { AbstractExecutionFactory } from "../toolkit/execution.js"; + import { DummyAnalyticsCatalogService } from "./DummyAnalyticsCatalogService.js"; import { DummyChatConversations, DummyGenAIChatThread } from "./DummyGenAIChatThread.js"; import { DummySemanticQualityService } from "./DummySemanticQualityService.js"; diff --git a/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts b/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts index fb59f6ae809..a1ea4d13022 100644 --- a/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/catalog/attributeFactory.ts @@ -22,6 +22,7 @@ import { type AttributeDisplayFormMetadataObjectBuilder, newAttributeDisplayFormMetadataObject, } from "../metadata/displayFormFactory.js"; + import { GroupableCatalogItemBuilder } from "./groupFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts b/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts index fcf2d62d56b..f4c83917097 100644 --- a/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/catalog/factFactory.ts @@ -9,6 +9,7 @@ import { import { type BuilderModifications, builderFactory } from "../builder.js"; import { type FactMetadataObjectBuilder, newFactMetadataObject } from "../metadata/factFactory.js"; + import { GroupableCatalogItemBuilder } from "./groupFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts b/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts index accf2b388a5..31b4c440d4f 100644 --- a/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/catalog/measureFactory.ts @@ -13,6 +13,7 @@ import { import { type BuilderModifications, builderFactory } from "../builder.js"; import { type MeasureMetadataObjectBuilder, newMeasureMetadataObject } from "../metadata/measureFactory.js"; + import { GroupableCatalogItemBuilder } from "./groupFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts b/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts index aa9d3b70a88..a5bc9a878e6 100644 --- a/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/dashboard/insightWidgetFactory.ts @@ -13,6 +13,7 @@ import { } from "@gooddata/sdk-model"; import { type ValueOrUpdateCallback } from "../builder.js"; + import { type IWidgetBaseBuilder, WidgetBaseBuilder } from "./widgetFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts b/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts index 5c4437e1076..f88614f9716 100644 --- a/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/dashboard/kpiWidgetFactory.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-model"; import { type ValueOrUpdateCallback, resolveValueOrUpdateCallback } from "../builder.js"; + import { type IWidgetBaseBuilder, WidgetBaseBuilder } from "./widgetFactory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts index 3ccf74c9556..c89ffdb016a 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/attributeFactory.ts @@ -8,6 +8,7 @@ import { } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts index 561b9aa5ff6..e01d8530191 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/dashboardFactory.ts @@ -3,6 +3,7 @@ import { type IDashboardMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts index 1fd5e220ce0..d2195d8215d 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/dataSetFactory.ts @@ -3,6 +3,7 @@ import { type IDataSetMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts index 8b1e5aa2bfa..afac47af7cf 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/displayFormFactory.ts @@ -7,6 +7,7 @@ import { } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts index 88b5c4577a9..229088b2492 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/factFactory.ts @@ -3,6 +3,7 @@ import { type IDataSetMetadataObject, type IFactMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts index ab6b44f8b14..41b41152926 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/measureFactory.ts @@ -3,6 +3,7 @@ import { type IMeasureMetadataObject, type IUser, type MetricType, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts b/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts index 2ec05f4d501..ebf79e28ba4 100644 --- a/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts +++ b/libs/sdk-backend-base/src/ldmFactories/metadata/variableFactory.ts @@ -3,6 +3,7 @@ import { type IVariableMetadataObject, type ObjRef } from "@gooddata/sdk-model"; import { type BuilderModifications, builderFactory } from "../builder.js"; + import { MetadataObjectBuilder } from "./factory.js"; /** diff --git a/libs/sdk-backend-base/src/normalizingBackend/index.ts b/libs/sdk-backend-base/src/normalizingBackend/index.ts index 8e68879d3ff..875e7a39954 100644 --- a/libs/sdk-backend-base/src/normalizingBackend/index.ts +++ b/libs/sdk-backend-base/src/normalizingBackend/index.ts @@ -42,6 +42,7 @@ import { DecoratedPreparedExecution, } from "../decoratedBackend/execution.js"; import { decoratedBackend } from "../decoratedBackend/index.js"; + import { Denormalizer, type NormalizationState, Normalizer } from "./normalizer.js"; class WithNormalizationExecutionFactory extends DecoratedExecutionFactory { diff --git a/libs/sdk-backend-mockingbird/package.json b/libs/sdk-backend-mockingbird/package.json index 97d95a4c7ff..ebddc783dac 100644 --- a/libs/sdk-backend-mockingbird/package.json +++ b/libs/sdk-backend-mockingbird/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-mockingbird", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "Mock GoodData Backend SPI implementation", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts b/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts index cd7dd6600aa..670a284927b 100644 --- a/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts +++ b/libs/sdk-backend-mockingbird/src/legacyRecordedBackend/index.ts @@ -82,6 +82,7 @@ import { } from "@gooddata/sdk-model"; import { createMockGeoService } from "../geoService.js"; + import { type IExecutionResponse, type IExecutionResult as ILegacyExecutionResult, diff --git a/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts b/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts index 64e784216a3..49dcb859533 100644 --- a/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts +++ b/libs/sdk-backend-mockingbird/src/recordedBackend/index.ts @@ -86,6 +86,7 @@ import { } from "@gooddata/sdk-model"; import { createMockGeoService } from "../geoService.js"; + import { RecordedAttributeHierarchiesService } from "./attributeHierarchies.js"; import { RecordedAttributes } from "./attributes.js"; import { RecordedCatalogFactory } from "./catalog.js"; diff --git a/libs/sdk-backend-spi/package.json b/libs/sdk-backend-spi/package.json index 5fa6d0a309a..fe0e5c0be0d 100644 --- a/libs/sdk-backend-spi/package.json +++ b/libs/sdk-backend-spi/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-spi", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Backend SPI abstraction interfaces", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-spi/src/backend/index.ts b/libs/sdk-backend-spi/src/backend/index.ts index 920718691a7..e1fd5cf75b3 100644 --- a/libs/sdk-backend-spi/src/backend/index.ts +++ b/libs/sdk-backend-spi/src/backend/index.ts @@ -10,6 +10,7 @@ import { type IOrganization, type IOrganizations } from "../organization/index.j import { type IUserService } from "../user/index.js"; import { type IPreparedExecution, type IPreparedExecutionOptions } from "../workspace/execution/index.js"; import { type IAnalyticalWorkspace, type IWorkspacesQueryFactory } from "../workspace/index.js"; + import { type IBackendCapabilities } from "./capabilities.js"; /** diff --git a/libs/sdk-backend-spi/src/workspace/attributes/index.ts b/libs/sdk-backend-spi/src/workspace/attributes/index.ts index cd5b3b6025b..8afe57170cf 100644 --- a/libs/sdk-backend-spi/src/workspace/attributes/index.ts +++ b/libs/sdk-backend-spi/src/workspace/attributes/index.ts @@ -14,6 +14,7 @@ import { import type { IFilterBaseOptions } from "../../common/filtering.js"; import type { IPagedResource } from "../../common/paging.js"; import type { QueryMethod } from "../../common/query.js"; + import type { IElementsQueryFactory } from "./elements/index.js"; /** diff --git a/libs/sdk-backend-spi/src/workspace/execution/index.ts b/libs/sdk-backend-spi/src/workspace/execution/index.ts index 33a52b2a8e7..149e4651ca0 100644 --- a/libs/sdk-backend-spi/src/workspace/execution/index.ts +++ b/libs/sdk-backend-spi/src/workspace/execution/index.ts @@ -21,6 +21,7 @@ import { } from "@gooddata/sdk-model"; import { type ICancelable } from "../../cancelation/index.js"; + import { type IExportConfig, type IExportResult } from "./export.js"; /** diff --git a/libs/sdk-backend-spi/src/workspace/index.ts b/libs/sdk-backend-spi/src/workspace/index.ts index a44ed045263..ebecd94a1f9 100644 --- a/libs/sdk-backend-spi/src/workspace/index.ts +++ b/libs/sdk-backend-spi/src/workspace/index.ts @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { type IPagedResource } from "../common/paging.js"; + import { type IWorkspaceAccessControlService } from "./accessControl/index.js"; import { type IAttributeHierarchiesService } from "./attributeHierarchies/index.js"; import { type IWorkspaceAttributesService } from "./attributes/index.js"; diff --git a/libs/sdk-backend-spi/src/workspace/measures/index.ts b/libs/sdk-backend-spi/src/workspace/measures/index.ts index d07d19387bf..1ec57609b52 100644 --- a/libs/sdk-backend-spi/src/workspace/measures/index.ts +++ b/libs/sdk-backend-spi/src/workspace/measures/index.ts @@ -16,6 +16,7 @@ import type { import type { IFilterBaseOptions } from "../../common/filtering.js"; import type { IPagedResource } from "../../common/paging.js"; import type { QueryMethod } from "../../common/query.js"; + import type { IMeasureExpressionToken } from "./measure.js"; /** diff --git a/libs/sdk-backend-tiger/package.json b/libs/sdk-backend-tiger/package.json index 8c3429b1b08..46019177efe 100644 --- a/libs/sdk-backend-tiger/package.json +++ b/libs/sdk-backend-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-tiger", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-backend-tiger/src/backend/features/feature.ts b/libs/sdk-backend-tiger/src/backend/features/feature.ts index 18dff2b59cd..280d8f6c8cf 100644 --- a/libs/sdk-backend-tiger/src/backend/features/feature.ts +++ b/libs/sdk-backend-tiger/src/backend/features/feature.ts @@ -1,6 +1,7 @@ // (C) 2020-2026 GoodData Corporation import { FeatureFlagsValues, type ITigerFeatureFlags, TigerFeaturesNames } from "../uiFeatures.js"; + import { convertState } from "./state.js"; export type FeatureDef = { diff --git a/libs/sdk-backend-tiger/src/backend/features/hub.ts b/libs/sdk-backend-tiger/src/backend/features/hub.ts index 887cc9e75df..7de48a93389 100644 --- a/libs/sdk-backend-tiger/src/backend/features/hub.ts +++ b/libs/sdk-backend-tiger/src/backend/features/hub.ts @@ -5,6 +5,7 @@ import axios, { type AxiosResponse } from "axios"; import { type FeatureContext, type ILiveFeatures } from "@gooddata/api-client-tiger"; import { DefaultFeatureFlags, type ITigerFeatureFlags } from "../uiFeatures.js"; + import { type FeatureDef, type FeaturesMap, mapFeatures } from "./feature.js"; type HubServiceState = Record< diff --git a/libs/sdk-backend-tiger/src/backend/features/index.ts b/libs/sdk-backend-tiger/src/backend/features/index.ts index 0a6ffbbd053..1f5b70878bb 100644 --- a/libs/sdk-backend-tiger/src/backend/features/index.ts +++ b/libs/sdk-backend-tiger/src/backend/features/index.ts @@ -15,6 +15,7 @@ import { ProfileApi_GetCurrent } from "@gooddata/api-client-tiger/endpoints/prof import { LIB_VERSION } from "../../__version.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; import { DefaultFeatureFlags, type ITigerFeatureFlags } from "../uiFeatures.js"; + import { getFeatureHubFeatures } from "./hub.js"; import { getStaticFeatures } from "./static.js"; diff --git a/libs/sdk-backend-tiger/src/backend/features/static.ts b/libs/sdk-backend-tiger/src/backend/features/static.ts index f3fe6b16e67..6d8565ff820 100644 --- a/libs/sdk-backend-tiger/src/backend/features/static.ts +++ b/libs/sdk-backend-tiger/src/backend/features/static.ts @@ -3,6 +3,7 @@ import { type IStaticFeatures } from "@gooddata/api-client-tiger"; import { type ITigerFeatureFlags } from "../uiFeatures.js"; + import { type FeatureDef, type FeaturesMap, mapFeatures } from "./feature.js"; export function getStaticFeatures({ items }: IStaticFeatures["static"]): Partial { diff --git a/libs/sdk-backend-tiger/src/backend/index.ts b/libs/sdk-backend-tiger/src/backend/index.ts index 3ea8f9174ed..b9d7b7f97c0 100644 --- a/libs/sdk-backend-tiger/src/backend/index.ts +++ b/libs/sdk-backend-tiger/src/backend/index.ts @@ -44,6 +44,7 @@ import { type DateStringifier, } from "../convertors/fromBackend/dateFormatting/types.js"; import { convertApiError } from "../utils/errorHandling.js"; + import { TigerDataSourcesService } from "./dataSources/index.js"; import { TigerEntitlements } from "./entitlements/index.js"; import { TigerGeoService } from "./geo/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/agents.ts b/libs/sdk-backend-tiger/src/backend/organization/agents.ts index 4bc449b4f4b..332c01a9669 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/agents.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/agents.ts @@ -25,6 +25,7 @@ import { convertAgentToBackend, } from "../../convertors/toBackend/AgentConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { AgentsQuery } from "./agentsQuery.js"; const AGENT_INCLUDE: Array<"createdBy" | "modifiedBy" | "userGroups"> = [ diff --git a/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts b/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts index 3a8aae0be3d..7a345b4315b 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/automations/index.ts @@ -13,6 +13,7 @@ import { } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { OrganizationAutomationsQuery } from "./automationsQuery.js"; /** diff --git a/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts b/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts index afd3695885f..46209687021 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/genAI/index.ts @@ -3,6 +3,7 @@ import type { IKnowledgeDocumentsService, IOrganizationGenAIService } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { OrganizationKnowledgeDocumentsService } from "./KnowledgeDocumentsService.js"; /** diff --git a/libs/sdk-backend-tiger/src/backend/organization/index.ts b/libs/sdk-backend-tiger/src/backend/organization/index.ts index 4e666a70b5c..bed8ffd969d 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/index.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/index.ts @@ -26,6 +26,7 @@ import { import { type IOrganizationDescriptor, type IOrganizationDescriptorUpdate, idRef } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { OrganizationAgentsService } from "./agents.js"; import { TigerOrganizationAutomationService } from "./automations/index.js"; import { OrganizationExportTemplatesService } from "./exportTemplates.js"; diff --git a/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts b/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts index 77cd4d89542..b3f182dceb6 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/llmEndpoints.ts @@ -22,6 +22,7 @@ import { import { convertLlmEndpoint } from "../../convertors/fromBackend/llmEndpointConvertor.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { LlmEndpointsQuery } from "./llmEndpointsQuery.js"; export class OrganizationLlmEndpointsService implements IOrganizationLlmEndpointsService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts b/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts index 86f56cd76ed..018be2e30ff 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/llmProviders.ts @@ -29,6 +29,7 @@ import { convertLlmProviderToBackend, } from "../../convertors/fromBackend/llmProviderConvertor.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { LlmProvidersQuery } from "./llmProvidersQuery.js"; export class OrganizationLlmProvidersService implements IOrganizationLlmProvidersService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts b/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts index 56d1017a4ca..b4596199c24 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notificationChannels.ts @@ -31,6 +31,7 @@ import { import { convertNotificationChannelFromBackend } from "../../convertors/fromBackend/NotificationChannelsConvertor.js"; import { convertNotificationChannelToBackend } from "../../convertors/toBackend/NotificationChannelsConvertor.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { NotificationChannelsQuery } from "./notificationChannelsQuery.js"; export class OrganizationNotificationChannelService implements IOrganizationNotificationChannelService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/notifications.ts b/libs/sdk-backend-tiger/src/backend/organization/notifications.ts index 921cfdd695c..1a868543ea6 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/notifications.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/notifications.ts @@ -8,6 +8,7 @@ import { import { type INotificationsQuery, type IOrganizationNotificationService } from "@gooddata/sdk-backend-spi"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { NotificationsQuery } from "./notificationsQuery.js"; export class OrganizationNotificationService implements IOrganizationNotificationService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/permissions.ts b/libs/sdk-backend-tiger/src/backend/organization/permissions.ts index 4af28c869e7..5e5012393a1 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/permissions.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/permissions.ts @@ -18,6 +18,7 @@ import { } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { convertDataSourcePermissionsAssignment, convertWorkspacePermissionsAssignment, diff --git a/libs/sdk-backend-tiger/src/backend/organization/styling.ts b/libs/sdk-backend-tiger/src/backend/organization/styling.ts index 31b42fa2271..90873d80ee3 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/styling.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/styling.ts @@ -45,6 +45,7 @@ import { convertTheme as convertThemeToBackend } from "../../convertors/toBacken import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; import { objRefToIdentifier } from "../../utils/api.js"; import { DefaultTheme } from "../workspace/styling/mocks/theme.js"; + import { OrganizationSettingsService } from "./settings.js"; export class OrganizationStylingService implements IOrganizationStylingService { diff --git a/libs/sdk-backend-tiger/src/backend/organization/users.ts b/libs/sdk-backend-tiger/src/backend/organization/users.ts index 42b1e7cdf4e..6acbdf877aa 100644 --- a/libs/sdk-backend-tiger/src/backend/organization/users.ts +++ b/libs/sdk-backend-tiger/src/backend/organization/users.ts @@ -33,6 +33,7 @@ import { } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { convertEntityUserToOrganizationUser, convertIncludedUser, diff --git a/libs/sdk-backend-tiger/src/backend/user/index.ts b/libs/sdk-backend-tiger/src/backend/user/index.ts index c736d563f93..6d92781f700 100644 --- a/libs/sdk-backend-tiger/src/backend/user/index.ts +++ b/libs/sdk-backend-tiger/src/backend/user/index.ts @@ -9,6 +9,7 @@ import { type IUser } from "@gooddata/sdk-model"; import { convertUser } from "../../convertors/fromBackend/UsersConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { TigerUserSettingsService } from "./settings.js"; export class TigerUserService implements IUserService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts index 9f282c8fec3..96ba93c9dd5 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/elements/index.ts @@ -54,6 +54,7 @@ import { type DateFormatter } from "../../../../convertors/fromBackend/dateForma import { toSdkGranularity } from "../../../../convertors/fromBackend/dateGranularityConversions.js"; import { toLabelQualifier, toObjQualifier } from "../../../../convertors/toBackend/ObjRefConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../../types/index.js"; + import { getRelativeDateFilterShiftedValues } from "./date.js"; import { mapDashboardDateFilterToDependentDateFilter } from "./dependentDateFilters.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts index 2b39ec1ce40..8b6f97496c3 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/attributes/index.ts @@ -51,6 +51,7 @@ import { getIdOrigin, isInheritedObject } from "../../../convertors/fromBackend/ import { jsonApiIdToObjRef } from "../../../convertors/fromBackend/ObjRefConverter.js"; import { toLabelQualifier } from "../../../convertors/toBackend/ObjRefConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { AttributesQuery } from "./attributesQuery.js"; import { TigerWorkspaceElements } from "./elements/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts index e299dfd0987..a56e795cae5 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/automationsQuery.ts @@ -19,6 +19,7 @@ import { convertAutomationListToAutomations } from "../../../convertors/fromBack import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { DEFAULT_PAGE, DEFAULT_PAGE_SIZE } from "../../common/automations.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { buildFieldFilter, buildStatusFilter } from "./filterBuilders.js"; export class AutomationsQuery implements IAutomationsQuery { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts index cb57980e560..2a58e9a2280 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/automations/index.ts @@ -34,6 +34,7 @@ import { convertAutomation as convertAutomationFromBackend } from "../../../conv import { convertAutomation as convertAutomationToBackend } from "../../../convertors/toBackend/AutomationConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { AutomationsQuery } from "./automationsQuery.js"; export class TigerWorkspaceAutomationService implements IWorkspaceAutomationService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts index 19f78c7e5ea..e9654ca2e46 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/availableItemsFactory.ts @@ -42,6 +42,7 @@ import { convertAfmFilters } from "../../../convertors/toBackend/afm/AfmFiltersC import { convertAttribute } from "../../../convertors/toBackend/afm/AttributeConverter.js"; import { convertMeasure } from "../../../convertors/toBackend/afm/MeasureConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { TigerWorkspaceCatalogWithAvailableItems } from "./catalogWithAvailableItems.js"; //ivec investigate diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts index 9ca413eb2e9..16cd404bb46 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/catalog.ts @@ -23,6 +23,7 @@ import { } from "@gooddata/sdk-model"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { TigerWorkspaceCatalogAvailableItemsFactory } from "./availableItemsFactory.js"; export class TigerWorkspaceCatalog implements IWorkspaceCatalog { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts index c94b1fa3f5c..0fb38bd0fad 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/datasetLoader.ts @@ -25,6 +25,7 @@ import { convertDateDataset, } from "../../../convertors/fromBackend/CatalogConverter.js"; import { convertAttributeHierarchy } from "../../../convertors/fromBackend/HierarchyConverter.js"; + import { addRsqlFilterToParams } from "./rsqlFilter.js"; function lookupRelatedObject(included: JsonApiAttributeOutIncludes[] | undefined, id: string, type: string) { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts b/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts index b740989cf8b..02dc3feb547 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/catalog/factory.ts @@ -28,6 +28,7 @@ import { import { convertFact, convertMeasure } from "../../../convertors/fromBackend/CatalogConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { TigerWorkspaceCatalog } from "./catalog.js"; import { loadAttributesAndDateDatasetsAndHierarchies } from "./datasetLoader.js"; import { addRsqlFilterToParams, rsqlAnd, searchToRsqlFilter, tagsToRsqlFilter } from "./rsqlFilter.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts index b1b2d716c62..4076fa9bacd 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/dashboards/index.ts @@ -136,6 +136,7 @@ import { handleExportResultPolling } from "../../../utils/exportPolling.js"; import { addFilterLocalIdentifier } from "../../../utils/filterLocalidentifier.js"; import { GET_OPTIMIZED_WORKSPACE_PARAMS } from "../constants.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { type TigerDashboardPermissionType, buildDashboardPermissions } from "./dashboardPermissions.js"; import { DashboardsQuery } from "./dashboardsQuery.js"; import { resolveWidgetFilters, resolveWidgetFiltersWithMultipleDateFilters } from "./widgetFilters.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts index a96b2525625..b4b8750afe7 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/datasets/index.ts @@ -19,6 +19,7 @@ import { import { convertDataSetItem } from "../../../convertors/fromBackend/DataSetConverter.js"; import type { TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { DatasetsQuery } from "./datasetsQuery.js"; export class TigerWorkspaceDataSets implements IWorkspaceDatasetsService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts index c207e75074c..56cd14763f8 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionFactory.ts @@ -5,6 +5,7 @@ import { type IPreparedExecution, type IPreparedExecutionOptions } from "@goodda import { type IExecutionDefinition } from "@gooddata/sdk-model"; import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatting/types.js"; + import { TigerPreparedExecution } from "./preparedExecution.js"; /* diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts index f98fe3f9587..a3fe4119470 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/executionResult.ts @@ -81,6 +81,7 @@ import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatti import { toAfmExecution } from "../../../convertors/toBackend/afm/toAfmResultSpec.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { handleExportResultPolling } from "../../../utils/exportPolling.js"; + import { augmentCustomOverrideWithNormalizedKeys, resolveCustomOverride } from "./utils.js"; const TIGER_PAGE_SIZE_LIMIT = 1000; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts b/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts index 0cbb6f0e93c..ac08ac2b2b2 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/execution/preparedExecution.ts @@ -38,6 +38,7 @@ import { type DateFormatter } from "../../../convertors/fromBackend/dateFormatti import { toAfmExecution } from "../../../convertors/toBackend/afm/toAfmResultSpec.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { downloadFile, parseNameFromContentDisposition } from "../../../utils/downloadFile.js"; + import { TigerExecutionResult } from "./executionResult.js"; export class TigerPreparedExecution implements IPreparedExecution { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts index c7b80434573..bc5fa154b1c 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/exportDefinitions/index.ts @@ -36,6 +36,7 @@ import { import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; import { getSettingsForCurrentUser } from "../settings/index.js"; + import { exportDefinitionsListComparator } from "./comparator.js"; import { ExportDefinitionsQuery } from "./exportDefinitionsQuery.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts index 70f3355b564..9c1fbefba9b 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/facts/index.ts @@ -20,6 +20,7 @@ import { import { convertDatasetWithLinks, convertFact } from "../../../convertors/fromBackend/MetadataConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { FactsQuery } from "./factsQuery.js"; export class TigerWorkspaceFacts implements IWorkspaceFactsService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts index a36194dfeb1..84a7796bcbc 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/ChatConversations.test.ts @@ -7,6 +7,7 @@ import { GenAiApi_PostMessages } from "@gooddata/api-client-tiger/endpoints/genA import type { DateNormalizer } from "../../../convertors/fromBackend/dateFormatting/types.js"; import type { TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { ChatConversationThreadQuery } from "./ChatConversations.js"; vi.mock("@gooddata/api-client-tiger/endpoints/genAI", () => ({ diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts index 96ec1db60df..d246e7d58aa 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/MemoryItemsService.ts @@ -22,6 +22,7 @@ import { convertMemoryItemCreatedByUsers, } from "../../../convertors/fromBackend/MemoryItemConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { MemoryItemsQuery } from "./MemoryItemsQuery.js"; export class MemoryItemsService implements IMemoryItemsService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts index b95885cca57..7ec8fd602f6 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/genAI/index.ts @@ -17,6 +17,7 @@ import type { import { type DateNormalizer } from "../../../convertors/fromBackend/dateFormatting/types.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; + import { AnalyticsCatalogService } from "./AnalyticsCatalogService.js"; import { ChatConversationsService } from "./ChatConversations.js"; import { ChatThreadService } from "./ChatThread.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/index.ts index 9f0478c771c..0011f47b90d 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/index.ts @@ -44,6 +44,7 @@ import { import { workspaceConverter } from "../../convertors/fromBackend/WorkspaceConverter.js"; import { convertWorkspaceUpdate } from "../../convertors/toBackend/WorkspaceConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../types/index.js"; + import { TigerWorkspaceAccessControlService } from "./accessControl/index.js"; import { TigerAttributeHierarchiesService } from "./attributeHierarchies/index.js"; import { TigerWorkspaceAttributes } from "./attributes/index.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts index 75077af5f9b..72612a74a42 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/insights/index.ts @@ -79,6 +79,7 @@ import { convertVisualizationObject } from "../../../convertors/fromBackend/visu import { convertInsight } from "../../../convertors/toBackend/InsightConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier, objRefToUri } from "../../../utils/api.js"; + import { InsightsQuery } from "./insightsQuery.js"; import { visualizationClasses as visualizationClassesMocks } from "./mocks/visualizationClasses.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts index be559ff2912..b447970ef9e 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/measures/index.ts @@ -53,6 +53,7 @@ import { convertMeasure } from "../../../convertors/toBackend/afm/MeasureConvert import { convertMetricToBackend } from "../../../convertors/toBackend/MetricConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { type IExpressionToken, tokenizeExpression } from "./measureExpressionTokens.js"; import { MeasuresQuery } from "./measuresQuery.js"; diff --git a/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts index e895beb6070..70eb05d3c1a 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/parameters/index.ts @@ -24,6 +24,7 @@ import { } from "../../../convertors/toBackend/ParameterConverter.js"; import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; + import { ParametersQuery } from "./parametersQuery.js"; export class TigerWorkspaceParameters implements IWorkspaceParametersService { diff --git a/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts b/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts index 9aca0a5a562..1f6deb1e02e 100644 --- a/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts +++ b/libs/sdk-backend-tiger/src/backend/workspace/styling/index.ts @@ -19,6 +19,7 @@ import { type JsonApiId } from "../../../convertors/fromBackend/ObjRefConverter. import { type TigerAuthenticatedCallGuard } from "../../../types/index.js"; import { objRefToIdentifier } from "../../../utils/api.js"; import { TigerWorkspaceSettings, getSettingsForCurrentUser } from "../settings/index.js"; + import { DefaultColorPalette } from "./mocks/colorPalette.js"; import { DefaultTheme } from "./mocks/theme.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts index 3a564c5088e..ac609015510 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/AutomationConverter.ts @@ -57,6 +57,7 @@ import { } from "@gooddata/sdk-model"; import { fixNumber } from "../../utils/fixNumber.js"; + import { convertFilter } from "./afm/FilterConverter.js"; import { convertMeasure } from "./afm/MeasureConverter.js"; import { convertAttribute } from "./AttributeConvertor.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts index 10fb5c785ba..2a4d7b9d660 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/ExportDefinitionsConverter.ts @@ -31,6 +31,7 @@ import { } from "@gooddata/sdk-model"; import { convertTigerToSdkFilters } from "../shared/storedFilterConverter.js"; + import { convertFilter } from "./afm/FilterConverter.js"; import { type IIncludedWithUserIdentifier, convertUserIdentifier } from "./UsersConverter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts index 85675d25932..260341d1f49 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/MeasureConverter.ts @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-model"; import { toObjRef } from "../ObjRefConverter.js"; + import { convertFilter } from "./FilterConverter.js"; const isArithmeticMeasureDefinition = (definition: unknown): definition is ArithmeticMeasureDefinition => { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts index a26a73cd547..865bc9810c7 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/GrandTotalsConverter.test.ts @@ -8,6 +8,7 @@ import { type IDimensionDescriptor, type IExecutionDefinition } from "@gooddata/ import { defaultDateFormatter } from "../../dateFormatting/defaultDateFormatter.js"; import { getTransformDimensionHeaders } from "../DimensionHeaderConverter.js"; import { transformGrandTotalData } from "../GrandTotalsConverter.js"; + import { mockDefinition1, mockDefinition2, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts index f4f0e607273..17d5eb26211 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/dimensions.test.ts @@ -14,6 +14,7 @@ import { } from "@gooddata/sdk-model"; import { transformResultDimensions } from "../dimensions.js"; + import { mockDimensions, mockGeoAreaDimensions, mockMultipleDimensions } from "./dimensions.fixture.js"; describe("transformResultDimensions", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts index ce95c4fb591..cda04a69f22 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/afm/tests/result.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { defaultDateFormatter } from "../../dateFormatting/defaultDateFormatter.js"; import { getTransformDimensionHeaders } from "../DimensionHeaderConverter.js"; import { transformExecutionResult } from "../result.js"; + import { mockDimensions, mockDimensionsWithDateFormat, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts index 00ab1dae1d3..b05f764fb8a 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/AnalyticalDashboardConverter.ts @@ -29,6 +29,7 @@ import { cloneWithSanitizedIdsTyped } from "../IdSanitization.js"; import { isInheritedObject } from "../ObjectInheritance.js"; import { convertUserIdentifier } from "../UsersConverter.js"; import { getShareStatus } from "../utils.js"; + import { convertDashboard as convertDashboardV1, convertFilterContextFromBackend as convertFilterContextFromBackendV1, diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts index ec54806a001..19f2e21ae3d 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/AnalyticalDashboardConverter.ts @@ -55,6 +55,7 @@ import { convertUserIdentifier } from "../../UsersConverter.js"; import { getShareStatus, stripQueryParams } from "../../utils.js"; import { getFilterContextsFromIncluded } from "../common/filterContextUtils.js"; import { sanitizeSelectionMode } from "../common/singleSelectionFilter.js"; + import { convertFilterContextFilters } from "./FilterContextFiltersConverter.js"; function setWidgetRefsInLayout(layout: IDashboardLayout | undefined) { diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts index a67248d2f95..c4f298e7fd7 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/analyticalDashboards/v2/tests/AnalyticalDashboardConverter.test.ts @@ -4,6 +4,7 @@ import { v4 as uuidv4 } from "uuid"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { prepareDrillLocalIdentifierIfMissing } from "../AnalyticalDashboardConverter.js"; + import { dashboardLayout } from "./AnalyticalDashboardConverter.fixture.js"; vi.mock("uuid", () => ({ diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts index 6e8be1fded7..e40c592d8fc 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/genAIConvertor.ts @@ -38,6 +38,7 @@ import { } from "@gooddata/sdk-model"; import { getFormatByGranularity } from "../../utils/dateUtils.js"; + import { convertMeasure } from "./afm/MeasureConverter.js"; import { convertAttribute } from "./AttributeConvertor.js"; import type { FormattingLocale } from "./dateFormatting/defaultDateFormatter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts b/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts index 2517a49a8a6..df26862d371 100644 --- a/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/fromBackend/visualizationObjects/tests/fixLegacyElementUris.test.ts @@ -9,6 +9,7 @@ import { fixInsightLegacyElementUris, fixWidgetLegacyElementUris, } from "../../fixLegacyElementUris.js"; + import { mockInsight, mockWidget } from "./fixLegacyElementUris.fixtures.js"; describe("fixInsightLegacyElementUris", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts b/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts index 6d5b974e706..7b3cc3fd7c1 100644 --- a/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/shared/storedFilterConverter.ts @@ -10,6 +10,7 @@ import { type FilterContextItem, type IFilter } from "@gooddata/sdk-model"; import { cloneWithSanitizedIdsTyped as cloneWithSanitizedIdsTypedFromBackend } from "../fromBackend/IdSanitization.js"; import { cloneWithSanitizedIdsTyped as cloneWithSanitizedIdsTypedToBackend } from "../toBackend/IdSanitization.js"; + import { convertMeasureValueFilterSdkToTiger, convertMeasureValueFilterTigerToSdk, diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts index 187789fbe81..d5054f82451 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/AnalyticalDashboardConverter.ts @@ -37,6 +37,7 @@ import { addFilterLocalIdentifier } from "../../utils/filterLocalidentifier.js"; import { generateWidgetLocalIdentifier } from "../../utils/widgetLocalIdentifier.js"; import { convertLayout } from "../shared/layoutConverter.js"; import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js"; + import { cloneWithSanitizedIds, cloneWithSanitizedIdsTyped } from "./IdSanitization.js"; function removeIdentifiers(widget: IDashboardWidget, useWidgetLocalIdentifiers?: boolean): IDashboardWidget { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts index 77e987c45d2..d961960d6e0 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/AutomationConverter.ts @@ -24,6 +24,7 @@ import { } from "@gooddata/sdk-model"; import { fixNumber } from "../../utils/fixNumber.js"; + import { convertAfmFilters } from "./afm/AfmFiltersConverter.js"; import { convertAttribute } from "./afm/AttributeConverter.js"; import { convertMeasure } from "./afm/MeasureConverter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts index dcb41aa4382..606a635536d 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/ExportDefinitionsConverter.ts @@ -26,6 +26,7 @@ import { } from "@gooddata/sdk-model"; import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js"; + import { convertAfmFilters } from "./afm/AfmFiltersConverter.js"; import { convertAttribute } from "./afm/AttributeConverter.js"; import { convertMeasure } from "./afm/MeasureConverter.js"; diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts index 8224ae56f32..090132b4932 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/InsightConverter.ts @@ -25,6 +25,7 @@ import { } from "@gooddata/sdk-model"; import { convertSdkFiltersToTiger } from "../shared/storedFilterConverter.js"; + import { cloneWithSanitizedIdsTyped } from "./IdSanitization.js"; function removeIdentifiers(insight: IInsight): IInsightDefinition { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts index 423eb1ef53a..fc660b7339b 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/MeasureConverter.ts @@ -38,6 +38,7 @@ import { toFactQualifier, toLocalIdentifier, } from "../ObjRefConverter.js"; + import { convertFilter } from "./FilterConverter.js"; export function convertMeasure(measure: IMeasure): MeasureItem { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts index d294f9c8351..0d499aac352 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/FilterConverter.test.ts @@ -27,6 +27,7 @@ import { convertFilter, newFilterWithApplyOnResult, } from "../FilterConverter.js"; + import { absoluteFilter, relativeFilter } from "./InvalidInputs.fixture.js"; describe("tiger filter converter from model to AFM", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts index 0a4b1db7c6f..a6924449f49 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/MeasureConverter.test.ts @@ -14,6 +14,7 @@ import { } from "@gooddata/sdk-model"; import { convertMeasure } from "../MeasureConverter.js"; + import { invalidMeasureDefinition, invalidObjQualifier } from "./InvalidInputs.fixture.js"; describe("measure converter", () => { diff --git a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts index a20648bd9ed..70ac02ce407 100644 --- a/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts +++ b/libs/sdk-backend-tiger/src/convertors/toBackend/afm/tests/toAfmResultSpec.test.ts @@ -18,6 +18,7 @@ import { } from "@gooddata/sdk-model"; import { toAfmExecution } from "../toAfmResultSpec.js"; + import { defWithAlias, defWithoutFilters } from "./InvalidInputs.fixture.js"; const workspace = "test workspace"; diff --git a/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts b/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts index 48536fbca98..77bc2024f77 100644 --- a/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts +++ b/libs/sdk-backend-tiger/tests/integrated/catalog.test.ts @@ -5,6 +5,7 @@ import { beforeAll, describe, expect, it } from "vitest"; import { measureLocalId, newArithmeticMeasure, newPopMeasure } from "@gooddata/sdk-model"; import { WinRate } from "../../src/fixtures/full.js"; + import { sanitizeWorkspace, sortToOrder, testBackend, testWorkspace } from "./backend.js"; const backend = testBackend(); diff --git a/libs/sdk-backend-tiger/tests/integrated/elements.test.ts b/libs/sdk-backend-tiger/tests/integrated/elements.test.ts index 6cc135931ca..857622405dd 100644 --- a/libs/sdk-backend-tiger/tests/integrated/elements.test.ts +++ b/libs/sdk-backend-tiger/tests/integrated/elements.test.ts @@ -12,6 +12,7 @@ import { import { Account, AccountId, Product } from "../../src/fixtures/full.js"; import { productName } from "../../src/fixtures/referenceObjects.js"; + import { testBackend, testWorkspace } from "./backend.js"; const backend = testBackend(); diff --git a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md index 9dd7e016935..689784d581b 100644 --- a/libs/sdk-code-convertors/api/sdk-code-convertors.api.md +++ b/libs/sdk-code-convertors/api/sdk-code-convertors.api.md @@ -1179,74 +1179,74 @@ export function yamlWidgetToDeclarative(entities: ExportEntities, input: Visuali // Warnings were encountered during analysis: // -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "load_5" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "save_5" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "ConfigDefaults" needs to be exported by the entry point index.d.ts -// src/configs/areaChart.ts:316:23 - (ae-forgotten-export) The symbol "DefaultProperties_5" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:281:22 - (ae-forgotten-export) The symbol "load_2" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:281:22 - (ae-forgotten-export) The symbol "save_2" needs to be exported by the entry point index.d.ts -// src/configs/barChart.ts:281:22 - (ae-forgotten-export) The symbol "DefaultProperties_2" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:245:25 - (ae-forgotten-export) The symbol "load_7" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:245:25 - (ae-forgotten-export) The symbol "save_7" needs to be exported by the entry point index.d.ts -// src/configs/bubbleChart.ts:245:25 - (ae-forgotten-export) The symbol "DefaultProperties_7" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:230:25 - (ae-forgotten-export) The symbol "load_14" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:230:25 - (ae-forgotten-export) The symbol "save_14" needs to be exported by the entry point index.d.ts -// src/configs/bulletChart.ts:230:25 - (ae-forgotten-export) The symbol "DefaultProperties_14" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:281:25 - (ae-forgotten-export) The symbol "load_3" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:281:25 - (ae-forgotten-export) The symbol "save_3" needs to be exported by the entry point index.d.ts -// src/configs/columnChart.ts:281:25 - (ae-forgotten-export) The symbol "DefaultProperties_3" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:506:24 - (ae-forgotten-export) The symbol "load_19" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:506:24 - (ae-forgotten-export) The symbol "save_19" needs to be exported by the entry point index.d.ts -// src/configs/comboChart.ts:506:24 - (ae-forgotten-export) The symbol "DefaultProperties_19" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:112:34 - (ae-forgotten-export) The symbol "load_16" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:112:34 - (ae-forgotten-export) The symbol "save_16" needs to be exported by the entry point index.d.ts -// src/configs/dependencyWheelChart.ts:112:34 - (ae-forgotten-export) The symbol "DefaultProperties_16" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:132:24 - (ae-forgotten-export) The symbol "load_9" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:132:24 - (ae-forgotten-export) The symbol "save_9" needs to be exported by the entry point index.d.ts -// src/configs/donutChart.ts:132:24 - (ae-forgotten-export) The symbol "DefaultProperties_9" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:132:25 - (ae-forgotten-export) The symbol "load_12" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:132:25 - (ae-forgotten-export) The symbol "save_12" needs to be exported by the entry point index.d.ts -// src/configs/funnelChart.ts:132:25 - (ae-forgotten-export) The symbol "DefaultProperties_12" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:286:26 - (ae-forgotten-export) The symbol "load_21" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:286:26 - (ae-forgotten-export) The symbol "save_21" needs to be exported by the entry point index.d.ts -// src/configs/geoAreaChart.ts:286:26 - (ae-forgotten-export) The symbol "DefaultProperties_21" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:351:22 - (ae-forgotten-export) The symbol "load_20" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:351:22 - (ae-forgotten-export) The symbol "save_20" needs to be exported by the entry point index.d.ts -// src/configs/geoChart.ts:351:22 - (ae-forgotten-export) The symbol "DefaultProperties_20" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:189:27 - (ae-forgotten-export) The symbol "load_18" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:189:27 - (ae-forgotten-export) The symbol "save_18" needs to be exported by the entry point index.d.ts -// src/configs/headlineChart.ts:189:27 - (ae-forgotten-export) The symbol "DefaultProperties_18" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:208:26 - (ae-forgotten-export) The symbol "load_13" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:208:26 - (ae-forgotten-export) The symbol "save_13" needs to be exported by the entry point index.d.ts -// src/configs/heatmapChart.ts:208:26 - (ae-forgotten-export) The symbol "DefaultProperties_13" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:391:23 - (ae-forgotten-export) The symbol "load_4" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:391:23 - (ae-forgotten-export) The symbol "save_4" needs to be exported by the entry point index.d.ts -// src/configs/lineChart.ts:391:23 - (ae-forgotten-export) The symbol "DefaultProperties_4" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:132:22 - (ae-forgotten-export) The symbol "load_8" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:132:22 - (ae-forgotten-export) The symbol "save_8" needs to be exported by the entry point index.d.ts -// src/configs/pieChart.ts:132:22 - (ae-forgotten-export) The symbol "DefaultProperties_8" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:132:26 - (ae-forgotten-export) The symbol "load_11" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:132:26 - (ae-forgotten-export) The symbol "save_11" needs to be exported by the entry point index.d.ts -// src/configs/pyramidChart.ts:132:26 - (ae-forgotten-export) The symbol "DefaultProperties_11" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "load_22" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "save_22" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "saveInlineVisualizations" needs to be exported by the entry point index.d.ts -// src/configs/repeaterChart.ts:153:27 - (ae-forgotten-export) The symbol "DefaultProperties_22" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:116:25 - (ae-forgotten-export) The symbol "load_17" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:116:25 - (ae-forgotten-export) The symbol "save_17" needs to be exported by the entry point index.d.ts -// src/configs/sankeyChart.ts:116:25 - (ae-forgotten-export) The symbol "DefaultProperties_17" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:270:26 - (ae-forgotten-export) The symbol "load_6" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:270:26 - (ae-forgotten-export) The symbol "save_6" needs to be exported by the entry point index.d.ts -// src/configs/scatterChart.ts:270:26 - (ae-forgotten-export) The symbol "DefaultProperties_6" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:246:19 - (ae-forgotten-export) The symbol "load" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:246:19 - (ae-forgotten-export) The symbol "save" needs to be exported by the entry point index.d.ts -// src/configs/table.ts:246:19 - (ae-forgotten-export) The symbol "DefaultProperties" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:132:26 - (ae-forgotten-export) The symbol "load_10" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:132:26 - (ae-forgotten-export) The symbol "save_10" needs to be exported by the entry point index.d.ts -// src/configs/treemapChart.ts:132:26 - (ae-forgotten-export) The symbol "DefaultProperties_10" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:286:28 - (ae-forgotten-export) The symbol "load_15" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:286:28 - (ae-forgotten-export) The symbol "save_15" needs to be exported by the entry point index.d.ts -// src/configs/waterfallChart.ts:286:28 - (ae-forgotten-export) The symbol "DefaultProperties_15" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "load_5" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "save_5" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "ConfigDefaults" needs to be exported by the entry point index.d.ts +// src/configs/areaChart.ts:317:23 - (ae-forgotten-export) The symbol "DefaultProperties_5" needs to be exported by the entry point index.d.ts +// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "load_2" needs to be exported by the entry point index.d.ts +// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "save_2" needs to be exported by the entry point index.d.ts +// src/configs/barChart.ts:282:22 - (ae-forgotten-export) The symbol "DefaultProperties_2" needs to be exported by the entry point index.d.ts +// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "load_7" needs to be exported by the entry point index.d.ts +// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "save_7" needs to be exported by the entry point index.d.ts +// src/configs/bubbleChart.ts:246:25 - (ae-forgotten-export) The symbol "DefaultProperties_7" needs to be exported by the entry point index.d.ts +// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "load_14" needs to be exported by the entry point index.d.ts +// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "save_14" needs to be exported by the entry point index.d.ts +// src/configs/bulletChart.ts:231:25 - (ae-forgotten-export) The symbol "DefaultProperties_14" needs to be exported by the entry point index.d.ts +// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "load_3" needs to be exported by the entry point index.d.ts +// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "save_3" needs to be exported by the entry point index.d.ts +// src/configs/columnChart.ts:282:25 - (ae-forgotten-export) The symbol "DefaultProperties_3" needs to be exported by the entry point index.d.ts +// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "load_19" needs to be exported by the entry point index.d.ts +// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "save_19" needs to be exported by the entry point index.d.ts +// src/configs/comboChart.ts:507:24 - (ae-forgotten-export) The symbol "DefaultProperties_19" needs to be exported by the entry point index.d.ts +// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "load_16" needs to be exported by the entry point index.d.ts +// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "save_16" needs to be exported by the entry point index.d.ts +// src/configs/dependencyWheelChart.ts:113:34 - (ae-forgotten-export) The symbol "DefaultProperties_16" needs to be exported by the entry point index.d.ts +// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "load_9" needs to be exported by the entry point index.d.ts +// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "save_9" needs to be exported by the entry point index.d.ts +// src/configs/donutChart.ts:133:24 - (ae-forgotten-export) The symbol "DefaultProperties_9" needs to be exported by the entry point index.d.ts +// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "load_12" needs to be exported by the entry point index.d.ts +// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "save_12" needs to be exported by the entry point index.d.ts +// src/configs/funnelChart.ts:133:25 - (ae-forgotten-export) The symbol "DefaultProperties_12" needs to be exported by the entry point index.d.ts +// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "load_21" needs to be exported by the entry point index.d.ts +// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "save_21" needs to be exported by the entry point index.d.ts +// src/configs/geoAreaChart.ts:287:26 - (ae-forgotten-export) The symbol "DefaultProperties_21" needs to be exported by the entry point index.d.ts +// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "load_20" needs to be exported by the entry point index.d.ts +// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "save_20" needs to be exported by the entry point index.d.ts +// src/configs/geoChart.ts:352:22 - (ae-forgotten-export) The symbol "DefaultProperties_20" needs to be exported by the entry point index.d.ts +// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "load_18" needs to be exported by the entry point index.d.ts +// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "save_18" needs to be exported by the entry point index.d.ts +// src/configs/headlineChart.ts:190:27 - (ae-forgotten-export) The symbol "DefaultProperties_18" needs to be exported by the entry point index.d.ts +// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "load_13" needs to be exported by the entry point index.d.ts +// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "save_13" needs to be exported by the entry point index.d.ts +// src/configs/heatmapChart.ts:209:26 - (ae-forgotten-export) The symbol "DefaultProperties_13" needs to be exported by the entry point index.d.ts +// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "load_4" needs to be exported by the entry point index.d.ts +// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "save_4" needs to be exported by the entry point index.d.ts +// src/configs/lineChart.ts:392:23 - (ae-forgotten-export) The symbol "DefaultProperties_4" needs to be exported by the entry point index.d.ts +// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "load_8" needs to be exported by the entry point index.d.ts +// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "save_8" needs to be exported by the entry point index.d.ts +// src/configs/pieChart.ts:133:22 - (ae-forgotten-export) The symbol "DefaultProperties_8" needs to be exported by the entry point index.d.ts +// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "load_11" needs to be exported by the entry point index.d.ts +// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "save_11" needs to be exported by the entry point index.d.ts +// src/configs/pyramidChart.ts:133:26 - (ae-forgotten-export) The symbol "DefaultProperties_11" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "load_22" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "save_22" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "saveInlineVisualizations" needs to be exported by the entry point index.d.ts +// src/configs/repeaterChart.ts:154:27 - (ae-forgotten-export) The symbol "DefaultProperties_22" needs to be exported by the entry point index.d.ts +// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "load_17" needs to be exported by the entry point index.d.ts +// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "save_17" needs to be exported by the entry point index.d.ts +// src/configs/sankeyChart.ts:117:25 - (ae-forgotten-export) The symbol "DefaultProperties_17" needs to be exported by the entry point index.d.ts +// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "load_6" needs to be exported by the entry point index.d.ts +// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "save_6" needs to be exported by the entry point index.d.ts +// src/configs/scatterChart.ts:271:26 - (ae-forgotten-export) The symbol "DefaultProperties_6" needs to be exported by the entry point index.d.ts +// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "load" needs to be exported by the entry point index.d.ts +// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "save" needs to be exported by the entry point index.d.ts +// src/configs/table.ts:247:19 - (ae-forgotten-export) The symbol "DefaultProperties" needs to be exported by the entry point index.d.ts +// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "load_10" needs to be exported by the entry point index.d.ts +// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "save_10" needs to be exported by the entry point index.d.ts +// src/configs/treemapChart.ts:133:26 - (ae-forgotten-export) The symbol "DefaultProperties_10" needs to be exported by the entry point index.d.ts +// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "load_15" needs to be exported by the entry point index.d.ts +// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "save_15" needs to be exported by the entry point index.d.ts +// src/configs/waterfallChart.ts:287:28 - (ae-forgotten-export) The symbol "DefaultProperties_15" needs to be exported by the entry point index.d.ts // src/to/yamlVisualisationToDeclarative.ts:1170:5 - (ae-forgotten-export) The symbol "VisualisationDefinition" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/libs/sdk-code-convertors/package.json b/libs/sdk-code-convertors/package.json index e90d3e347ae..ed46c5d3e2f 100644 --- a/libs/sdk-code-convertors/package.json +++ b/libs/sdk-code-convertors/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-convertors", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData AAC declarative converters", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-code-convertors/python/pyproject.toml b/libs/sdk-code-convertors/python/pyproject.toml index 2b386ddc385..3ebc47c0905 100644 --- a/libs/sdk-code-convertors/python/pyproject.toml +++ b/libs/sdk-code-convertors/python/pyproject.toml @@ -2,7 +2,7 @@ [project] name = "gooddata-code-convertors" -version = "11.35.0a3" +version = "11.35.0a4" description = "GoodData AAC YAML / Declarative API code converters (WASM-powered)" readme = "README.md" license = { file = "LICENSE" } diff --git a/libs/sdk-code-convertors/src/configs/areaChart.ts b/libs/sdk-code-convertors/src/configs/areaChart.ts index b4035819ea8..3c99888932b 100644 --- a/libs/sdk-code-convertors/src/configs/areaChart.ts +++ b/libs/sdk-code-convertors/src/configs/areaChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, diff --git a/libs/sdk-code-convertors/src/configs/barChart.ts b/libs/sdk-code-convertors/src/configs/barChart.ts index 5736990cbb8..c19f8d80f07 100644 --- a/libs/sdk-code-convertors/src/configs/barChart.ts +++ b/libs/sdk-code-convertors/src/configs/barChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/bubbleChart.ts b/libs/sdk-code-convertors/src/configs/bubbleChart.ts index 74ad30ef4c7..0bfd123a060 100644 --- a/libs/sdk-code-convertors/src/configs/bubbleChart.ts +++ b/libs/sdk-code-convertors/src/configs/bubbleChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/bulletChart.ts b/libs/sdk-code-convertors/src/configs/bulletChart.ts index f8fc93da7c1..58b9d3b8623 100644 --- a/libs/sdk-code-convertors/src/configs/bulletChart.ts +++ b/libs/sdk-code-convertors/src/configs/bulletChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/columnChart.ts b/libs/sdk-code-convertors/src/configs/columnChart.ts index 78281d61fe9..9c457f360d7 100644 --- a/libs/sdk-code-convertors/src/configs/columnChart.ts +++ b/libs/sdk-code-convertors/src/configs/columnChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/comboChart.ts b/libs/sdk-code-convertors/src/configs/comboChart.ts index fc134e4f2a7..be98f0819ab 100644 --- a/libs/sdk-code-convertors/src/configs/comboChart.ts +++ b/libs/sdk-code-convertors/src/configs/comboChart.ts @@ -4,6 +4,7 @@ import type { Bucket, Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; import { getFullBucket } from "../utils/sharedUtils.js"; + import { type ChartFillType, type ColorMapping, diff --git a/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts b/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts index 03ecce31884..570c5fd142b 100644 --- a/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts +++ b/libs/sdk-code-convertors/src/configs/dependencyWheelChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/donutChart.ts b/libs/sdk-code-convertors/src/configs/donutChart.ts index a497af3a67e..50414601ea9 100644 --- a/libs/sdk-code-convertors/src/configs/donutChart.ts +++ b/libs/sdk-code-convertors/src/configs/donutChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/funnelChart.ts b/libs/sdk-code-convertors/src/configs/funnelChart.ts index 0a9c5a96d35..b7aa44f4a5d 100644 --- a/libs/sdk-code-convertors/src/configs/funnelChart.ts +++ b/libs/sdk-code-convertors/src/configs/funnelChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/geoAreaChart.ts b/libs/sdk-code-convertors/src/configs/geoAreaChart.ts index 2f394482813..416e66b5d77 100644 --- a/libs/sdk-code-convertors/src/configs/geoAreaChart.ts +++ b/libs/sdk-code-convertors/src/configs/geoAreaChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/geoChart.ts b/libs/sdk-code-convertors/src/configs/geoChart.ts index 4c73bfe87d3..f4541bd70e1 100644 --- a/libs/sdk-code-convertors/src/configs/geoChart.ts +++ b/libs/sdk-code-convertors/src/configs/geoChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/headlineChart.ts b/libs/sdk-code-convertors/src/configs/headlineChart.ts index 7e449bcc475..829f05e41d3 100644 --- a/libs/sdk-code-convertors/src/configs/headlineChart.ts +++ b/libs/sdk-code-convertors/src/configs/headlineChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColor, saveColor } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/heatmapChart.ts b/libs/sdk-code-convertors/src/configs/heatmapChart.ts index 9b814581fd4..ae0bb86cc9b 100644 --- a/libs/sdk-code-convertors/src/configs/heatmapChart.ts +++ b/libs/sdk-code-convertors/src/configs/heatmapChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/lineChart.ts b/libs/sdk-code-convertors/src/configs/lineChart.ts index 9eee989e5eb..9b7864579b0 100644 --- a/libs/sdk-code-convertors/src/configs/lineChart.ts +++ b/libs/sdk-code-convertors/src/configs/lineChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping, type PointShapeSymbol } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/pieChart.ts b/libs/sdk-code-convertors/src/configs/pieChart.ts index 5d5251d2e66..aab9c143e19 100644 --- a/libs/sdk-code-convertors/src/configs/pieChart.ts +++ b/libs/sdk-code-convertors/src/configs/pieChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/pyramidChart.ts b/libs/sdk-code-convertors/src/configs/pyramidChart.ts index b08f53f777f..3ced301ced1 100644 --- a/libs/sdk-code-convertors/src/configs/pyramidChart.ts +++ b/libs/sdk-code-convertors/src/configs/pyramidChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/repeaterChart.ts b/libs/sdk-code-convertors/src/configs/repeaterChart.ts index fd744d4c45f..0a77802eeb1 100644 --- a/libs/sdk-code-convertors/src/configs/repeaterChart.ts +++ b/libs/sdk-code-convertors/src/configs/repeaterChart.ts @@ -9,6 +9,7 @@ import { saveColumnWidths, } from "../utils/configUtils.js"; import { getFullBucket } from "../utils/sharedUtils.js"; + import { type ColorMapping, type ColumnWidthItem } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/sankeyChart.ts b/libs/sdk-code-convertors/src/configs/sankeyChart.ts index 595a7155c86..db190729270 100644 --- a/libs/sdk-code-convertors/src/configs/sankeyChart.ts +++ b/libs/sdk-code-convertors/src/configs/sankeyChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/scatterChart.ts b/libs/sdk-code-convertors/src/configs/scatterChart.ts index c904092f41f..f4d741311cb 100644 --- a/libs/sdk-code-convertors/src/configs/scatterChart.ts +++ b/libs/sdk-code-convertors/src/configs/scatterChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColorMapping, saveColorMapping } from "../utils/configUtils.js"; + import { type ColorMapping } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/table.ts b/libs/sdk-code-convertors/src/configs/table.ts index e5539498d98..c139cd8efa1 100644 --- a/libs/sdk-code-convertors/src/configs/table.ts +++ b/libs/sdk-code-convertors/src/configs/table.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadColumnsWidth, saveColumnWidths } from "../utils/configUtils.js"; + import { type ColumnLocator, type ColumnWidthItem } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/treemapChart.ts b/libs/sdk-code-convertors/src/configs/treemapChart.ts index e93644cd7cc..de5055892cc 100644 --- a/libs/sdk-code-convertors/src/configs/treemapChart.ts +++ b/libs/sdk-code-convertors/src/configs/treemapChart.ts @@ -3,6 +3,7 @@ import type { Visualisation } from "@gooddata/sdk-code-schemas/v1"; import { loadChartFill, loadColorMapping, saveChartFill, saveColorMapping } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/configs/waterfallChart.ts b/libs/sdk-code-convertors/src/configs/waterfallChart.ts index b6ec8bcf0a4..ad7fc58b97e 100644 --- a/libs/sdk-code-convertors/src/configs/waterfallChart.ts +++ b/libs/sdk-code-convertors/src/configs/waterfallChart.ts @@ -8,6 +8,7 @@ import { saveChartFill, saveColorDefinitions, } from "../utils/configUtils.js"; + import { type ChartFillType, type ColorMapping, type PatternFillName } from "./types.js"; import { type ConfigDefaults, diff --git a/libs/sdk-code-convertors/src/utils/configUtils.ts b/libs/sdk-code-convertors/src/utils/configUtils.ts index 77c700fcfc4..390a3cbe338 100644 --- a/libs/sdk-code-convertors/src/utils/configUtils.ts +++ b/libs/sdk-code-convertors/src/utils/configUtils.ts @@ -18,6 +18,7 @@ import { type IChartFill, } from "../configs/types.js"; import { getValueOrDefault } from "../configs/utils.js"; + import { type FullFields, getFullField } from "./sharedUtils.js"; import { isAttributeField, isMetricField } from "./typeGuards.js"; diff --git a/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts b/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts index 8da56500c0a..2e3d3e9d9b0 100644 --- a/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts +++ b/libs/sdk-code-convertors/src/utils/convertBucketToTitle.ts @@ -14,6 +14,7 @@ import type { } from "@gooddata/sdk-code-schemas/v1"; import { type ExportEntities } from "../types.js"; + import { mapDateAttribute, mapDateDataset } from "./dateUtils.js"; import { convertGranularity, convertGranularityToId } from "./granularityUtils.js"; import { mapLocationLabel } from "./locationUtils.js"; diff --git a/libs/sdk-code-convertors/src/utils/filterUtils.ts b/libs/sdk-code-convertors/src/utils/filterUtils.ts index 95854ed4e96..851a886005f 100644 --- a/libs/sdk-code-convertors/src/utils/filterUtils.ts +++ b/libs/sdk-code-convertors/src/utils/filterUtils.ts @@ -4,6 +4,7 @@ import type { DateDataset } from "@gooddata/sdk-code-schemas/v1"; import type { MatchFilterOperator } from "@gooddata/sdk-model"; import { type ExportEntities, type FromEntities } from "../types.js"; + import { convertGranularityToId, parseGranularityValue } from "./granularityUtils.js"; import type { TextFilterCondition } from "./typeGuards.js"; diff --git a/libs/sdk-code-convertors/src/utils/locationUtils.ts b/libs/sdk-code-convertors/src/utils/locationUtils.ts index 4274ddff582..2b5b2c13a12 100644 --- a/libs/sdk-code-convertors/src/utils/locationUtils.ts +++ b/libs/sdk-code-convertors/src/utils/locationUtils.ts @@ -5,6 +5,7 @@ import type { AttributeField, Dataset } from "@gooddata/sdk-code-schemas/v1"; import { type IAttribute } from "@gooddata/sdk-model"; import { type ExportEntities, type FromEntities } from "../types.js"; + import { isAttribute, parseReferenceObject } from "./typeGuards.js"; import { createIdentifier, getIdentifier } from "./yamlUtils.js"; diff --git a/libs/sdk-code-convertors/src/utils/yamlUtils.ts b/libs/sdk-code-convertors/src/utils/yamlUtils.ts index 07c3e6b3d50..2c7caddad9a 100644 --- a/libs/sdk-code-convertors/src/utils/yamlUtils.ts +++ b/libs/sdk-code-convertors/src/utils/yamlUtils.ts @@ -33,6 +33,7 @@ import { } from "@gooddata/sdk-model"; import { type Profile } from "../types.js"; + import { CoreErrorCode, type IErrorContext, newError, updateErrorContext } from "./errors.js"; import { parseGranularity } from "./granularityUtils.js"; import { TABLE_PATH_DELIMITER, getTableRootId } from "./sharedUtils.js"; diff --git a/libs/sdk-code-schemas/package.json b/libs/sdk-code-schemas/package.json index cc966669e24..f84fb517900 100644 --- a/libs/sdk-code-schemas/package.json +++ b/libs/sdk-code-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-code-schemas", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData AAC JSON Schema types and compiled schemas", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-e2e-utils/package.json b/libs/sdk-e2e-utils/package.json index 9041af830d8..b2bb59af696 100644 --- a/libs/sdk-e2e-utils/package.json +++ b/libs/sdk-e2e-utils/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-e2e-utils", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData utility functions for Playwright E2E tests", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-embedding/package.json b/libs/sdk-embedding/package.json index fe555026323..51803eb43b0 100644 --- a/libs/sdk-embedding/package.json +++ b/libs/sdk-embedding/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-embedding", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Embedding APIs", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/package.json b/libs/sdk-model/package.json index 2df24d0afbe..74ba85f1d8e 100644 --- a/libs/sdk-model/package.json +++ b/libs/sdk-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-model", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Model definitions used by UI components and Backend SPI", "license": "MIT", "author": "GoodData", diff --git a/libs/sdk-model/src/dashboard/alert.ts b/libs/sdk-model/src/dashboard/alert.ts index d80adc69801..3e967c5c4cc 100644 --- a/libs/sdk-model/src/dashboard/alert.ts +++ b/libs/sdk-model/src/dashboard/alert.ts @@ -3,6 +3,7 @@ import { isEmpty } from "lodash-es"; import { type ObjRef, isObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; import { type IFilterContext, diff --git a/libs/sdk-model/src/dashboard/analyticalWidgets.ts b/libs/sdk-model/src/dashboard/analyticalWidgets.ts index 36ce54d08ea..9b2fe818b1b 100644 --- a/libs/sdk-model/src/dashboard/analyticalWidgets.ts +++ b/libs/sdk-model/src/dashboard/analyticalWidgets.ts @@ -2,6 +2,7 @@ import { type VisualizationProperties } from "../insight/index.js"; import { type ObjRef } from "../objRef/index.js"; + import { type IBaseWidget, type IDrillableWidget, diff --git a/libs/sdk-model/src/dashboard/baseWidget.ts b/libs/sdk-model/src/dashboard/baseWidget.ts index eb39ccec0f5..1be4966e617 100644 --- a/libs/sdk-model/src/dashboard/baseWidget.ts +++ b/libs/sdk-model/src/dashboard/baseWidget.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ObjRef } from "../objRef/index.js"; + import { type DrillDefinition, type IDrillDownReference } from "./drill.js"; import { type IDashboardFilterReference } from "./filterContext.js"; diff --git a/libs/sdk-model/src/dashboard/dashboard.ts b/libs/sdk-model/src/dashboard/dashboard.ts index 7ccda272f74..f44d3243391 100644 --- a/libs/sdk-model/src/dashboard/dashboard.ts +++ b/libs/sdk-model/src/dashboard/dashboard.ts @@ -15,6 +15,7 @@ import { } from "../dateFilterConfig/index.js"; import { type IDataSetMetadataObject } from "../ldm/metadata/dataSet/index.js"; import { type Identifier, type ObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; import { type IFilterContext, diff --git a/libs/sdk-model/src/dashboard/filterContext.ts b/libs/sdk-model/src/dashboard/filterContext.ts index 50527ffd55c..612a276beaa 100644 --- a/libs/sdk-model/src/dashboard/filterContext.ts +++ b/libs/sdk-model/src/dashboard/filterContext.ts @@ -13,6 +13,7 @@ import { isAttributeElementsByRef, } from "../execution/filter/index.js"; import { type ObjRef, isObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; /** diff --git a/libs/sdk-model/src/dashboard/scheduledMail.ts b/libs/sdk-model/src/dashboard/scheduledMail.ts index b21bd535b04..f78abc84818 100644 --- a/libs/sdk-model/src/dashboard/scheduledMail.ts +++ b/libs/sdk-model/src/dashboard/scheduledMail.ts @@ -4,6 +4,7 @@ import { isEmpty } from "lodash-es"; import { type IAuditableUsers } from "../base/metadata.js"; import { type ObjRef } from "../objRef/index.js"; + import { type IDashboardObjectIdentity } from "./common.js"; /** diff --git a/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts b/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts index 7bd245869aa..661833dbf9a 100644 --- a/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts +++ b/libs/sdk-model/src/dashboard/test/alerts.fixtures.ts @@ -2,6 +2,7 @@ import { uriRef } from "../../objRef/factory.js"; import { type IWidgetAlert, type IWidgetAlertDefinition } from "../alert.js"; + import { filterContextDefinition } from "./filterContext.fixtures.js"; export const widgetAlert: IWidgetAlert = { diff --git a/libs/sdk-model/src/dashboard/test/alerts.test.ts b/libs/sdk-model/src/dashboard/test/alerts.test.ts index 506e15b2aba..658bd5d0c29 100644 --- a/libs/sdk-model/src/dashboard/test/alerts.test.ts +++ b/libs/sdk-model/src/dashboard/test/alerts.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isWidgetAlert, isWidgetAlertDefinition } from "../alert.js"; + import { widgetAlert, widgetAlertDefinitionToCreate, diff --git a/libs/sdk-model/src/dashboard/test/drills.test.ts b/libs/sdk-model/src/dashboard/test/drills.test.ts index 8bd6d0aa5a3..940e3e3a3c1 100644 --- a/libs/sdk-model/src/dashboard/test/drills.test.ts +++ b/libs/sdk-model/src/dashboard/test/drills.test.ts @@ -10,6 +10,7 @@ import { isDrillToInsight, isDrillToLegacyDashboard, } from "../drill.js"; + import { drillFromAttribute, drillFromMeasure, diff --git a/libs/sdk-model/src/dashboard/test/filterContext.test.ts b/libs/sdk-model/src/dashboard/test/filterContext.test.ts index 5f6126afeff..1720b9addf4 100644 --- a/libs/sdk-model/src/dashboard/test/filterContext.test.ts +++ b/libs/sdk-model/src/dashboard/test/filterContext.test.ts @@ -15,6 +15,7 @@ import { isFilterContextDefinition, isTempFilterContext, } from "../filterContext.js"; + import { dashboardAttributeFilter, dashboardAttributeFilterReference, diff --git a/libs/sdk-model/src/dashboard/test/kpi.test.ts b/libs/sdk-model/src/dashboard/test/kpi.test.ts index 8645afee762..52830a5e2d4 100644 --- a/libs/sdk-model/src/dashboard/test/kpi.test.ts +++ b/libs/sdk-model/src/dashboard/test/kpi.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isKpiWithComparison, isKpiWithoutComparison } from "../kpi.js"; + import { kpiWithComparison, kpiWithoutComparison } from "./kpi.fixtures.js"; describe("kpi type guards", () => { diff --git a/libs/sdk-model/src/dashboard/test/parameter.test.ts b/libs/sdk-model/src/dashboard/test/parameter.test.ts index efb5d8eae63..a16fb831187 100644 --- a/libs/sdk-model/src/dashboard/test/parameter.test.ts +++ b/libs/sdk-model/src/dashboard/test/parameter.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isDashboardParameter } from "../parameter.js"; + import { dashboardParameterFull, dashboardParameterMinimal } from "./parameter.fixtures.js"; describe("dashboard parameter type guards", () => { diff --git a/libs/sdk-model/src/dashboard/test/widgets.test.ts b/libs/sdk-model/src/dashboard/test/widgets.test.ts index fbbc6365b43..cb9a0206db6 100644 --- a/libs/sdk-model/src/dashboard/test/widgets.test.ts +++ b/libs/sdk-model/src/dashboard/test/widgets.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { InvalidInputTestCases } from "../../../__mocks__/typeGuards.js"; import { isWidget, isWidgetDefinition } from "../widget.js"; + import { widget, widgetDefinition } from "./widgets.fixtures.js"; describe("widget type guards", () => { diff --git a/libs/sdk-model/src/dashboard/widget.ts b/libs/sdk-model/src/dashboard/widget.ts index 18716c67d05..ae4faf18f5f 100644 --- a/libs/sdk-model/src/dashboard/widget.ts +++ b/libs/sdk-model/src/dashboard/widget.ts @@ -4,6 +4,7 @@ import { isEmpty } from "lodash-es"; import { invariant } from "ts-invariant"; import { type ObjRef, isObjRef } from "../objRef/index.js"; + import { type AnalyticalWidgetType, type IAnalyticalWidget, diff --git a/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts b/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts index 7ac79671589..7f75fe48a74 100644 --- a/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts +++ b/libs/sdk-model/src/dateFilterConfig/tests/typeGuards.test.ts @@ -11,6 +11,7 @@ import { isRelativeDateFilterForm, isRelativeDateFilterPreset, } from "../index.js"; + import { absoluteDateFilterForm, absoluteDateFilterPreset, diff --git a/libs/sdk-model/src/execution/attribute/factory.ts b/libs/sdk-model/src/execution/attribute/factory.ts index 54695611dc9..ce6e3f46bea 100644 --- a/libs/sdk-model/src/execution/attribute/factory.ts +++ b/libs/sdk-model/src/execution/attribute/factory.ts @@ -6,6 +6,7 @@ import SparkMD5 from "spark-md5"; import { idRef } from "../../objRef/factory.js"; import { type Identifier, type ObjRef, isObjRef, objRefToString } from "../../objRef/index.js"; import { sanitizeLocalId } from "../../sanitizeLocalId.js"; + import { type IAttribute, isAttribute } from "./index.js"; /** diff --git a/libs/sdk-model/src/execution/base/dimension.ts b/libs/sdk-model/src/execution/base/dimension.ts index 2713418677e..40be49d6d2c 100644 --- a/libs/sdk-model/src/execution/base/dimension.ts +++ b/libs/sdk-model/src/execution/base/dimension.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { type Identifier } from "../../objRef/index.js"; import { type IAttribute, attributeLocalId, isAttribute } from "../attribute/index.js"; + import { type ITotal, isTotal } from "./totals.js"; /** diff --git a/libs/sdk-model/src/execution/buckets/bucketArray.ts b/libs/sdk-model/src/execution/buckets/bucketArray.ts index abc441805ad..7b743deeddb 100644 --- a/libs/sdk-model/src/execution/buckets/bucketArray.ts +++ b/libs/sdk-model/src/execution/buckets/bucketArray.ts @@ -17,6 +17,7 @@ import { idMatchMeasure, isMeasure, } from "../measure/index.js"; + import { type AttributeInBucket, type BucketItemModifications, diff --git a/libs/sdk-model/src/execution/buckets/bucketItem.ts b/libs/sdk-model/src/execution/buckets/bucketItem.ts index 18414167cbd..d6d6d88a089 100644 --- a/libs/sdk-model/src/execution/buckets/bucketItem.ts +++ b/libs/sdk-model/src/execution/buckets/bucketItem.ts @@ -4,6 +4,7 @@ import { InvariantError, invariant } from "ts-invariant"; import { attributeLocalId, isAttribute } from "../attribute/index.js"; import { isMeasure, measureLocalId } from "../measure/index.js"; + import { type IAttributeOrMeasure } from "./index.js"; /** diff --git a/libs/sdk-model/src/execution/executionDefinition/factory.ts b/libs/sdk-model/src/execution/executionDefinition/factory.ts index b314b44093d..c19f4a8b787 100644 --- a/libs/sdk-model/src/execution/executionDefinition/factory.ts +++ b/libs/sdk-model/src/execution/executionDefinition/factory.ts @@ -27,6 +27,7 @@ import { } from "../buckets/index.js"; import { type INullableFilter } from "../filter/index.js"; import { isMeasure } from "../measure/index.js"; + import { type DimensionGenerator, type IExecutionConfig, diff --git a/libs/sdk-model/src/execution/executionDefinition/index.ts b/libs/sdk-model/src/execution/executionDefinition/index.ts index 412b3e0f81e..ada4faf9ff2 100644 --- a/libs/sdk-model/src/execution/executionDefinition/index.ts +++ b/libs/sdk-model/src/execution/executionDefinition/index.ts @@ -16,6 +16,7 @@ import { type IFilter, type INullableFilter } from "../filter/index.js"; import { measureFingerprint } from "../measure/fingerprint.js"; import { type IMeasure } from "../measure/index.js"; import { type IInsightParameterValue } from "../parameter/index.js"; + import { attributeFingerprint, dataSamplingFingerprint, sortFingerprint } from "./fingerprints.js"; /** diff --git a/libs/sdk-model/src/execution/executionDefinition/validation.ts b/libs/sdk-model/src/execution/executionDefinition/validation.ts index 1051157a11a..f43d1ee5f09 100644 --- a/libs/sdk-model/src/execution/executionDefinition/validation.ts +++ b/libs/sdk-model/src/execution/executionDefinition/validation.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { attributeLocalId, isAttribute } from "../attribute/index.js"; import { measureLocalId } from "../measure/index.js"; + import { type IExecutionDefinition } from "./index.js"; /** diff --git a/libs/sdk-model/src/execution/filter/factory.ts b/libs/sdk-model/src/execution/filter/factory.ts index f63ee2e2188..766e63c4ea5 100644 --- a/libs/sdk-model/src/execution/filter/factory.ts +++ b/libs/sdk-model/src/execution/filter/factory.ts @@ -21,6 +21,7 @@ import { isAttribute, } from "../attribute/index.js"; import { type IMeasure, isMeasure, measureLocalId } from "../measure/index.js"; + import { type ComparisonConditionOperator, type EmptyValues, diff --git a/libs/sdk-model/src/execution/filter/filterMerge.ts b/libs/sdk-model/src/execution/filter/filterMerge.ts index 55d33a5334b..d3b8c54c52c 100644 --- a/libs/sdk-model/src/execution/filter/filterMerge.ts +++ b/libs/sdk-model/src/execution/filter/filterMerge.ts @@ -4,6 +4,7 @@ import { compact, groupBy } from "lodash-es"; import { invariant } from "ts-invariant"; import { objRefToString } from "../../objRef/index.js"; + import { type IAttributeFilter, type IDateFilter, diff --git a/libs/sdk-model/src/execution/measure/factory.ts b/libs/sdk-model/src/execution/measure/factory.ts index 111ce9f3752..ff6bf8e7b6b 100644 --- a/libs/sdk-model/src/execution/measure/factory.ts +++ b/libs/sdk-model/src/execution/measure/factory.ts @@ -8,6 +8,7 @@ import { idRef } from "../../objRef/factory.js"; import { type Identifier, type ObjRef, isObjRef, objRefToString } from "../../objRef/index.js"; import { sanitizeLocalId } from "../../sanitizeLocalId.js"; import { type IMeasureFilter } from "../filter/index.js"; + import { type ArithmeticMeasureOperator, type IArithmeticMeasureDefinition, diff --git a/libs/sdk-model/src/execution/measure/fingerprint.ts b/libs/sdk-model/src/execution/measure/fingerprint.ts index 0ad13bc1458..81b7bd78dc1 100644 --- a/libs/sdk-model/src/execution/measure/fingerprint.ts +++ b/libs/sdk-model/src/execution/measure/fingerprint.ts @@ -5,6 +5,7 @@ import { merge } from "lodash-es"; import { isFilterRelevantForFingerprinting } from "../filter/fingerprint.js"; import { type IMeasureFilter } from "../filter/index.js"; + import { type IMeasure, type IMeasureDefinition, isSimpleMeasure } from "./index.js"; type MeasureDefinitionPropsToDefault = Pick< diff --git a/libs/sdk-model/src/genAI/chat.ts b/libs/sdk-model/src/genAI/chat.ts index cf5f1906a3b..244c1e19a32 100644 --- a/libs/sdk-model/src/genAI/chat.ts +++ b/libs/sdk-model/src/genAI/chat.ts @@ -5,6 +5,7 @@ import type { IAttribute } from "../execution/attribute/index.js"; import type { IFilter } from "../execution/filter/index.js"; import type { IMeasure } from "../execution/measure/index.js"; import type { ObjRef } from "../objRef/index.js"; + import type { GenAIObjectType } from "./common.js"; import type { ISemanticSearchResult, ISemanticSearchResultItem } from "./semanticSearch.js"; diff --git a/libs/sdk-model/src/genAI/quality.ts b/libs/sdk-model/src/genAI/quality.ts index 245d994f4fa..72c7cd26153 100644 --- a/libs/sdk-model/src/genAI/quality.ts +++ b/libs/sdk-model/src/genAI/quality.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import type { Identifier } from "../objRef/index.js"; + import type { GenAIObjectType } from "./common.js"; /** diff --git a/libs/sdk-model/src/insight/comparators.ts b/libs/sdk-model/src/insight/comparators.ts index 06a96d0c5fd..46bafd4658b 100644 --- a/libs/sdk-model/src/insight/comparators.ts +++ b/libs/sdk-model/src/insight/comparators.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { stringComparatorFactory } from "../base/comparators.js"; + import { type IInsight, insightCreated, diff --git a/libs/sdk-model/src/insight/factory.ts b/libs/sdk-model/src/insight/factory.ts index 9218dd94dd3..bf88d95d6d2 100644 --- a/libs/sdk-model/src/insight/factory.ts +++ b/libs/sdk-model/src/insight/factory.ts @@ -3,6 +3,7 @@ import { type ISortItem } from "../execution/base/sort.js"; import { type IBucket } from "../execution/buckets/index.js"; import { type IFilter } from "../execution/filter/index.js"; + import { type IAttributeFilterConfigs, type IInsightDefinition, diff --git a/libs/sdk-model/src/insight/sanitization.ts b/libs/sdk-model/src/insight/sanitization.ts index 5bf7624ae97..bdba8ff7899 100644 --- a/libs/sdk-model/src/insight/sanitization.ts +++ b/libs/sdk-model/src/insight/sanitization.ts @@ -11,6 +11,7 @@ import { bucketSetTotals, bucketTotals, } from "../execution/buckets/index.js"; + import { type IInsightDefinition, insightAttributes, diff --git a/libs/sdk-model/src/ldm/catalog/index.ts b/libs/sdk-model/src/ldm/catalog/index.ts index 85f19e2bfbe..551d3d0a955 100644 --- a/libs/sdk-model/src/ldm/catalog/index.ts +++ b/libs/sdk-model/src/ldm/catalog/index.ts @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { type MetadataObject } from "../metadata/index.js"; + import { type ICatalogAttribute, isCatalogAttribute } from "./attribute/index.js"; import { type ICatalogAttributeHierarchy, isCatalogAttributeHierarchy } from "./attributeHierarchy/index.js"; import { type ICatalogDateDataset } from "./dateDataset/index.js"; diff --git a/libs/sdk-model/src/settings/index.ts b/libs/sdk-model/src/settings/index.ts index c227cc557b2..976aa615f0d 100644 --- a/libs/sdk-model/src/settings/index.ts +++ b/libs/sdk-model/src/settings/index.ts @@ -1,6 +1,7 @@ // (C) 2020-2026 GoodData Corporation import { type RemotePluggableApplicationsRegistry } from "../pluggableApplication/index.js"; + import { type IFeatureFlags, type IPermanentSettings } from "./settings.js"; /** diff --git a/libs/sdk-pluggable-application-model/package.json b/libs/sdk-pluggable-application-model/package.json index b46b7a5c11f..1407543ebd2 100644 --- a/libs/sdk-pluggable-application-model/package.json +++ b/libs/sdk-pluggable-application-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-pluggable-application-model", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK model contracts for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-all/package.json b/libs/sdk-ui-all/package.json index 1aa3824ca99..f208ce2561e 100644 --- a/libs/sdk-ui-all/package.json +++ b/libs/sdk-ui-all/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-all", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - All-In-One", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/libs/sdk-ui-catalog/package.json b/libs/sdk-ui-catalog/package.json index 505fe7d8eb8..6a20581d053 100644 --- a/libs/sdk-ui-catalog/package.json +++ b/libs/sdk-ui-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-catalog", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Analytics Catalog", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-catalog/src/catalog/Catalog.tsx b/libs/sdk-ui-catalog/src/catalog/Catalog.tsx index 1e300073e64..41d2e1e84d2 100644 --- a/libs/sdk-ui-catalog/src/catalog/Catalog.tsx +++ b/libs/sdk-ui-catalog/src/catalog/Catalog.tsx @@ -24,6 +24,7 @@ import { QualityScoreCard } from "../quality/QualityScoreCard.js"; import { FullTextSearchInput } from "../search/FullTextSearchInput.js"; import { CatalogTabs } from "../tabs/CatalogTabs.js"; import { useIsCatalogTrendingObjectsEnabled } from "../tabs/gate.js"; + import { Layout } from "./Layout.js"; type Props = { diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx index 56f091dcde3..522e2e3a2aa 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActionBar.tsx @@ -8,6 +8,7 @@ import { Dropdown, type IUiMenuItem, UiButton, UiIconButton, UiMenu } from "@goo import { catalogDetailActionsTrigger } from "../automation/testIds.js"; import type { ICatalogItem } from "../catalogItem/types.js"; + import type { EditHandlerEvent, ICatalogDetailAction } from "./types.js"; const messages = defineMessages({ diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx index e3c0ebfb91f..d298bcc3b35 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailActions.tsx @@ -14,6 +14,7 @@ import type { ICatalogItem, ICatalogItemParameter, ICatalogItemRef } from "../ca import { ParameterCreateDialog } from "../parameter/ParameterCreateDialog.js"; import { ParameterDeleteDialog } from "../parameter/ParameterDeleteDialog.js"; import { ParameterEditDialog } from "../parameter/ParameterEditDialog.js"; + import { CatalogDetailActionBar } from "./CatalogDetailActionBar.js"; import type { ICatalogDetailAction, OpenHandlerEvent } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx index 1f316c4b023..2ee9c7afe62 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailContent.tsx @@ -17,6 +17,7 @@ import { type ObjectType } from "../objectType/types.js"; import { usePermissionsState } from "../permission/PermissionsContext.js"; import { useIsCatalogDescriptionGenerationEnabled, useIsCatalogQualityEnabled } from "../quality/gate.js"; import { useQualityIssuesById, useQualityReportState } from "../quality/QualityContext.js"; + import { CatalogDetailActions } from "./CatalogDetailActions.js"; import { CatalogDetailHeader, type ICatalogDetailHeaderRef } from "./CatalogDetailHeader.js"; import { CatalogDetailStatus } from "./CatalogDetailStatus.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx index 13260961fab..4fc7e89be4d 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailHeader.tsx @@ -12,6 +12,7 @@ import { type ICatalogItem } from "../catalogItem/types.js"; import { CertificationIconMemo } from "../certification/CertificationIcon.js"; import { ObjectTypeIconMemo } from "../objectType/ObjectTypeIcon.js"; import { ObjectTypeTooltip } from "../objectType/ObjectTypeTooltip.js"; + import { CatalogDetailGenerateDescription } from "./CatalogDetailGenerateDescription.js"; import { CatalogDetailGenerateTitle } from "./CatalogDetailGenerateTitle.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx index 347db35b58a..981616bdc73 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabCertification.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { Dropdown, DropdownButton, EditableLabel, UiDate, UiListbox } from "@gooddata/sdk-ui-kit"; import { type ICatalogItem } from "../catalogItem/types.js"; + import { CatalogDetailContentRow } from "./CatalogDetailContentRow.js"; const CERTIFICATION_STATUS = { diff --git a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx index 80c40e6d828..991eaa2e631 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx +++ b/libs/sdk-ui-catalog/src/catalogDetail/CatalogDetailTabMetadata.tsx @@ -14,6 +14,7 @@ import { isCatalogItemMeasure, } from "../catalogItem/guards.js"; import { type ICatalogItem } from "../catalogItem/types.js"; + import { CatalogDetailContentRow } from "./CatalogDetailContentRow.js"; import { CatalogDetailGranularities } from "./CatalogDetailGranularities.js"; import { CatalogDetailMetricSettings } from "./CatalogDetailMetricSettings.js"; diff --git a/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts b/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts index 8713ffadfdc..456b24f6c95 100644 --- a/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts +++ b/libs/sdk-ui-catalog/src/catalogDetail/hooks/useCatalogItemUpdate.ts @@ -18,6 +18,7 @@ import { } from "../../catalogItem/types.js"; import { useMounted } from "../../hooks/useMounted.js"; import { type ObjectType } from "../../objectType/types.js"; + import { useCatalogItemLoad } from "./useCatalogItemLoad.js"; export interface IUseCatalogItemUpdate { diff --git a/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx b/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx index 783e23364c2..100f374b034 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx +++ b/libs/sdk-ui-catalog/src/catalogItem/CatalogFeedContext.tsx @@ -6,6 +6,7 @@ import type { IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { type AsyncStatus } from "../async/types.js"; import type { ObjectType } from "../objectType/types.js"; + import type { ICatalogItem, ICatalogItemRef } from "./types.js"; import { useCatalogItemFeed } from "./useCatalogItemFeed.js"; diff --git a/libs/sdk-ui-catalog/src/catalogItem/converter.ts b/libs/sdk-ui-catalog/src/catalogItem/converter.ts index 64e62ee521b..3940420aab4 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/converter.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/converter.ts @@ -25,6 +25,7 @@ import { import { mapObjectType } from "../objectType/mapping.js"; import { parseBackendDate } from "../utils/date.js"; + import type { ICatalogItem, ICatalogItemAttribute, diff --git a/libs/sdk-ui-catalog/src/catalogItem/query.ts b/libs/sdk-ui-catalog/src/catalogItem/query.ts index 1df73062b3f..48584c21574 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/query.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/query.ts @@ -7,6 +7,7 @@ import type { import { type IParameterMetadataObjectDefinition, type ObjRef, idRef } from "@gooddata/sdk-model"; import type { ObjectType } from "../objectType/types.js"; + import type { ICatalogItem, ICatalogItemAttribute, diff --git a/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts b/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts index 0c345677580..3058ae3d285 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/useCatalogEndpoints.ts @@ -15,6 +15,7 @@ import type { IFeatureFlags, Identifier, ObjectOrigin } from "@gooddata/sdk-mode import { ObjectTypes } from "../objectType/constants.js"; import { type ObjectType } from "../objectType/types.js"; + import { getAttributesQuery, getDashboardsQuery, diff --git a/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts b/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts index 06235e3b55e..d56f48e8972 100644 --- a/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts +++ b/libs/sdk-ui-catalog/src/catalogItem/useCatalogItemFeed.ts @@ -9,6 +9,7 @@ import { ObjectTypes } from "../objectType/constants.js"; import { type ObjectType } from "../objectType/types.js"; import { useFeatureFlags } from "../permission/PermissionsContext.js"; import { useFullTextSearchState } from "../search/FullTextSearchContext.js"; + import { convertEntityToCatalogItem } from "./converter.js"; import type { ICatalogItem, ICatalogItemFeedOptions, ICatalogItemRef } from "./types.js"; import { type FeedEndpoint, useCatalogEndpoints, useCatalogQueryOptions } from "./useCatalogEndpoints.js"; diff --git a/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx b/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx index 4dc4f0795f2..801d831bb82 100644 --- a/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx +++ b/libs/sdk-ui-catalog/src/certification/CertificationIcon.tsx @@ -7,6 +7,7 @@ import type { IntlShape } from "react-intl"; import { UiDate, UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type ICatalogItem } from "../catalogItem/types.js"; + import { useIsCatalogCertificationEnabled } from "./gate.js"; type CertificationIconProps = ComponentProps<"div"> & { diff --git a/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx b/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx index 03f301c42d6..aa7ad3e5c8d 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterCertification.tsx @@ -5,6 +5,7 @@ import { memo, useCallback, useMemo } from "react"; import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { filterCertification } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx b/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx index 2b10442b7c5..622049a1ead 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterCreatedBy.tsx @@ -10,6 +10,7 @@ import { useCancelablePromise } from "@gooddata/sdk-ui"; import { UiButton, UiSkeleton } from "@gooddata/sdk-ui-kit"; import { filterCreatedBy } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx b/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx index 58a1a636c53..bf1ddcf250a 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterObjectType.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { useCatalogFeedCounter } from "../catalogItem/CatalogFeedContext.js"; import { ObjectTypeSelectMemo } from "../objectType/ObjectTypeSelect.js"; import { useIsParametersEnabled } from "../parameter/gate.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { FilterGroupLayout } from "./FilterGroupLayout.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx b/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx index 5f3e087636a..ab4b2e70207 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterOrigin.tsx @@ -9,6 +9,7 @@ import type { ObjectOrigin } from "@gooddata/sdk-model"; import { useCancelablePromise } from "@gooddata/sdk-ui"; import { filterOrigin } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx b/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx index 57bde0ad7c0..6df3061fb26 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterQuality.tsx @@ -10,6 +10,7 @@ import { UiSkeleton } from "@gooddata/sdk-ui-kit"; import { filterQuality } from "../automation/testIds.js"; import { useQualityReportState } from "../quality/QualityContext.js"; import { getQualityIssueCodes } from "../quality/utils.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx b/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx index 2dfd895dc4e..cef5c158231 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterResetButton.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { filterReset } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; export function FilterResetButton() { diff --git a/libs/sdk-ui-catalog/src/filter/FilterTags.tsx b/libs/sdk-ui-catalog/src/filter/FilterTags.tsx index 75e78bc2e69..bc455fe2045 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterTags.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterTags.tsx @@ -8,6 +8,7 @@ import { UiSkeleton } from "@gooddata/sdk-ui-kit"; import { filterTags } from "../automation/testIds.js"; import { useCatalogTags } from "../catalogResource/CatalogTagsContext.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx b/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx index a7397095a75..c09a12f4a0c 100644 --- a/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx +++ b/libs/sdk-ui-catalog/src/filter/FilterVisibility.tsx @@ -5,6 +5,7 @@ import { memo, useCallback, useMemo } from "react"; import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { filterVisibility } from "../automation/testIds.js"; + import { useFilterActions, useFilterState } from "./FilterContext.js"; import { StaticFilter } from "./StaticFilter.js"; diff --git a/libs/sdk-ui-catalog/src/lineage/Lineage.tsx b/libs/sdk-ui-catalog/src/lineage/Lineage.tsx index 65bfd2ce97d..74be671325e 100644 --- a/libs/sdk-ui-catalog/src/lineage/Lineage.tsx +++ b/libs/sdk-ui-catalog/src/lineage/Lineage.tsx @@ -15,6 +15,7 @@ import { import { UiIconButton, UiTooltip, useElementSize } from "@gooddata/sdk-ui-kit"; import { type ICatalogItem, type ICatalogItemRef } from "../catalogItem/types.js"; + import { HIDDEN_ITEMS, LEAF_TYPES } from "./const.js"; import { useLineageGraph } from "./useLineageGraph.js"; diff --git a/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts b/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts index 4cb6546e560..b7aee77a74c 100644 --- a/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts +++ b/libs/sdk-ui-catalog/src/lineage/graph/createNode.ts @@ -5,6 +5,7 @@ import * as joint from "@joint/core"; import { type IReferencesResult } from "@gooddata/sdk-backend-spi"; import { objRefToId, objRefToType } from "../utils.js"; + import { getIconData } from "./createIcon.js"; const BASE_HEIGHT = 24; diff --git a/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts b/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts index ca67c3cf273..2ccecaf90f8 100644 --- a/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts +++ b/libs/sdk-ui-catalog/src/lineage/useLineageGraph.ts @@ -8,6 +8,7 @@ import { type IReferencesResult } from "@gooddata/sdk-backend-spi"; import { type ObjectType } from "@gooddata/sdk-model"; import type { ICatalogItemRef } from "../catalogItem/types.js"; + import { applyLayout } from "./graph/applyLayout.js"; import { createEdge } from "./graph/createEdge.js"; import { createGraph } from "./graph/createGraph.js"; diff --git a/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts b/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts index c58adbff1a6..42f3d067897 100644 --- a/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts +++ b/libs/sdk-ui-catalog/src/main/hooks/useCatalogItemOpen.test.ts @@ -4,6 +4,7 @@ import { act, renderHook } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import type { ICatalogItemParameter, ICatalogItemRef } from "../../catalogItem/types.js"; + import { useCatalogItemOpen } from "./useCatalogItemOpen.js"; const parameterRefA: ICatalogItemRef = { diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx index 6ed0a67657f..b66defdc436 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeIcon.tsx @@ -8,6 +8,7 @@ import type { IntlShape } from "react-intl"; import { type IconType, UiIcon } from "@gooddata/sdk-ui-kit"; import type { VisualizationType } from "../catalogItem/types.js"; + import { getObjectTypeLabel } from "./labels.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx index 0660d18cf69..a46693bc924 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeSelect.tsx @@ -7,6 +7,7 @@ import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { type IconType, UiButtonSegmentedControl, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { objectType } from "../automation/testIds.js"; + import { OBJECT_TYPE_ORDER, ObjectTypes } from "./constants.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx b/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx index d0d838509d9..4037732505f 100644 --- a/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx +++ b/libs/sdk-ui-catalog/src/objectType/ObjectTypeTooltip.tsx @@ -6,6 +6,7 @@ import { type IntlShape } from "react-intl"; import { UiTooltip } from "@gooddata/sdk-ui-kit"; import type { VisualizationType } from "../catalogItem/types.js"; + import { getObjectTypeLabel } from "./labels.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/objectType/labels.ts b/libs/sdk-ui-catalog/src/objectType/labels.ts index c8ccc127725..a2aeb509944 100644 --- a/libs/sdk-ui-catalog/src/objectType/labels.ts +++ b/libs/sdk-ui-catalog/src/objectType/labels.ts @@ -3,6 +3,7 @@ import { type IntlShape, type MessageDescriptor, defineMessages } from "react-intl"; import type { VisualizationType } from "../catalogItem/types.js"; + import { ObjectTypes } from "./constants.js"; import type { ObjectType } from "./types.js"; diff --git a/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx b/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx index e4b4bf34b2c..bca0a508bcb 100644 --- a/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx +++ b/libs/sdk-ui-catalog/src/parameter/ParameterCreateDialog.tsx @@ -8,6 +8,7 @@ import type { IParameterMetadataObjectDefinition } from "@gooddata/sdk-model"; import { useToastMessage } from "@gooddata/sdk-ui-kit"; import type { ICatalogItemParameter } from "../catalogItem/types.js"; + import { createCopiedParameter, isDuplicateIdError } from "./parameterCopy.js"; import type { ParameterDialogInitialParameter } from "./ParameterDialog.js"; import { useParameterMutation } from "./ParameterMutationContext.js"; diff --git a/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx b/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx index fb1b9e9c33e..2ee9b467e60 100644 --- a/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx +++ b/libs/sdk-ui-catalog/src/parameter/ParameterDeleteDialog.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, defineMessages, useIntl } from "react-intl"; import { ConfirmDialog, useToastMessage } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemParameter } from "../catalogItem/types.js"; + import { useParameterMutation } from "./ParameterMutationContext.js"; const messages = defineMessages({ diff --git a/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx b/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx index f025b129888..a63ec6f65ef 100644 --- a/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx +++ b/libs/sdk-ui-catalog/src/parameter/ParameterEditDialog.tsx @@ -8,6 +8,7 @@ import type { IParameterMetadataObjectDefinition } from "@gooddata/sdk-model"; import { useToastMessage } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemParameter } from "../catalogItem/types.js"; + import { useParameterMutation } from "./ParameterMutationContext.js"; const ParameterDialog = lazy(() => diff --git a/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx b/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx index c5ec56e6c1f..c012cc1c6f7 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx +++ b/libs/sdk-ui-catalog/src/parameter/tests/ParameterDeleteConfirmDialog.test.tsx @@ -11,6 +11,7 @@ import { TestIntlProvider } from "../../localization/TestIntlProvider.js"; import { ParameterDeleteDialog } from "../ParameterDeleteDialog.js"; import { ParameterMutationProvider } from "../ParameterMutationContext.js"; import type { IParameterMutationPort } from "../parameterMutationPort.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; const parameterItem: ICatalogItemParameter = { diff --git a/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx b/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx index 7b937d6e4e8..f98e52e05bc 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx +++ b/libs/sdk-ui-catalog/src/parameter/tests/ParameterEditDialog.test.tsx @@ -12,6 +12,7 @@ import { TestIntlProvider } from "../../localization/TestIntlProvider.js"; import { ParameterEditDialog } from "../ParameterEditDialog.js"; import { ParameterMutationProvider } from "../ParameterMutationContext.js"; import type { IParameterMutationPort } from "../parameterMutationPort.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; // Mock SyntaxHighlightingInput (CodeMirror doesn't work in happy-dom) diff --git a/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx b/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx index 17d85654d3d..90184cf44e3 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx +++ b/libs/sdk-ui-catalog/src/parameter/tests/ParameterMutationContext.test.tsx @@ -8,6 +8,7 @@ import type { IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { BackendProvider, WorkspaceProvider } from "@gooddata/sdk-ui"; import { ParameterMutationProvider, useParameterMutation } from "../ParameterMutationContext.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; const fakeBackend = { diff --git a/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts b/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts index 7615658153c..e77e25ba66b 100644 --- a/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts +++ b/libs/sdk-ui-catalog/src/parameter/tests/parameterMutationPort.test.ts @@ -7,6 +7,7 @@ import type { IParameterMetadataObject } from "@gooddata/sdk-model"; import type { ICatalogItemParameter } from "../../catalogItem/types.js"; import { createParameterMutationAdapter } from "../parameterMutationPort.js"; + import { createTestParameterMutationPort } from "./parameterMutationPort.test.utils.js"; const savedParameter: IParameterMetadataObject = { diff --git a/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx b/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx index 912dc776453..2e401a21e61 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityIssue.tsx @@ -14,6 +14,7 @@ import { import { UiButton } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemRef } from "../catalogItem/types.js"; + import { QualityIssueObjects } from "./QualityIssueObjects.js"; import { QualitySeverityIcon } from "./QualitySeverityIcon.js"; diff --git a/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx b/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx index 079f50b4bce..db2cfd3602d 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityIssueObjects.tsx @@ -11,6 +11,7 @@ import { UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type ICatalogItemRef } from "../catalogItem/types.js"; import { mapObjectType } from "../objectType/mapping.js"; import { ObjectTypeIconMemo } from "../objectType/ObjectTypeIcon.js"; + import { QualityIssueObjectDetail } from "./QualityIssueObjectDetail.js"; type Props = { diff --git a/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx b/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx index 7fd4cd25342..9f4681a6a0b 100644 --- a/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx +++ b/libs/sdk-ui-catalog/src/quality/QualityScoreCard.tsx @@ -5,6 +5,7 @@ import { useId } from "react"; import { useIntl } from "react-intl"; import { useFilterActions } from "../filter/FilterContext.js"; + import { useQualityActions, useQualityState } from "./QualityContext.js"; import { QualityScoreCardAction } from "./QualityScoreCardAction.js"; import { QualityScoreCardAnnouncements } from "./QualityScoreCardAnnouncements.js"; diff --git a/libs/sdk-ui-catalog/src/table/Table.tsx b/libs/sdk-ui-catalog/src/table/Table.tsx index 083873e6025..bc828db9227 100644 --- a/libs/sdk-ui-catalog/src/table/Table.tsx +++ b/libs/sdk-ui-catalog/src/table/Table.tsx @@ -18,6 +18,7 @@ import { import { type AsyncStatus } from "../async/types.js"; import type { ICatalogItem } from "../catalogItem/types.js"; import { useFullTextSearchState } from "../search/FullTextSearchContext.js"; + import { createdByColumn } from "./columns/CreatedByColumn.js"; import { updatedAtColumn } from "./columns/ModifiedColumn.js"; import { tagsColumn } from "./columns/TagsColumn.js"; diff --git a/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx b/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx index 47738a946f2..9cf60792d25 100644 --- a/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx +++ b/libs/sdk-ui-catalog/src/tabs/CatalogItemCardGrid.tsx @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import type { ICatalogItem } from "../catalogItem/types.js"; + import { CatalogItemCard } from "./CatalogItemCard.js"; type Props = { diff --git a/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx b/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx index 26e5aa786e2..f0ae38e5376 100644 --- a/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx +++ b/libs/sdk-ui-catalog/src/tabs/CatalogTabPanel.tsx @@ -7,6 +7,7 @@ import { LoadingSpinner } from "@gooddata/sdk-ui-kit"; import type { ICatalogItem } from "../catalogItem/types.js"; import { QualityScoreCard } from "../quality/QualityScoreCard.js"; + import { CatalogItemCardGrid } from "./CatalogItemCardGrid.js"; import { useRecommendedItems } from "./useRecommendedItems.js"; import { useTrendingItems } from "./useTrendingItems.js"; diff --git a/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx b/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx index be77d1e8e66..44c7365cb06 100644 --- a/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx +++ b/libs/sdk-ui-catalog/src/tabs/CatalogTabs.tsx @@ -8,6 +8,7 @@ import { type IUiTab, UiTabs } from "@gooddata/sdk-ui-kit"; import type { ICatalogItem } from "../catalogItem/types.js"; import { useIsCatalogQualityEnabled } from "../quality/gate.js"; + import { CatalogTabPanel } from "./CatalogTabPanel.js"; const DEFAULT_TAB_ID = "recommended"; diff --git a/libs/sdk-ui-charts/package.json b/libs/sdk-ui-charts/package.json index e78aedcbc0e..1c533509df6 100644 --- a/libs/sdk-ui-charts/package.json +++ b/libs/sdk-ui-charts/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-charts", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Charts", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx b/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx index 7b2367bac04..2939db5135b 100644 --- a/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx +++ b/libs/sdk-ui-charts/src/charts/_base/BaseChart.tsx @@ -16,6 +16,7 @@ import { import { type ICoreChartProps, type OnLegendReady } from "../../interfaces/chartProps.js"; import { withDefaultCoreChartProps } from "../_commons/defaultProps.js"; + import { type IRawChartProps, RawChart } from "./RawChart.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx b/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx index a33d6270c81..307b70acde8 100644 --- a/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx +++ b/libs/sdk-ui-charts/src/charts/areaChart/AreaChart.tsx @@ -26,6 +26,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreAreaChart } from "./CoreAreaChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx b/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx index 16760477187..05aef61566b 100644 --- a/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx +++ b/libs/sdk-ui-charts/src/charts/barChart/BarChart.tsx @@ -25,6 +25,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreBarChart } from "./CoreBarChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx b/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx index d700f1c19fe..b1b4d0d4406 100644 --- a/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx +++ b/libs/sdk-ui-charts/src/charts/bubbleChart/BubbleChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { pointyChartDimensions } from "../_commons/dimensions.js"; + import { CoreBubbleChart } from "./CoreBubbleChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx b/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx index 544407ef541..d00fe2c4b44 100644 --- a/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx +++ b/libs/sdk-ui-charts/src/charts/bulletChart/BulletChart.tsx @@ -25,6 +25,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreBulletChart } from "./CoreBulletChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx b/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx index 544859e0a13..2aa62d7f52b 100644 --- a/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx +++ b/libs/sdk-ui-charts/src/charts/columnChart/ColumnChart.tsx @@ -25,6 +25,7 @@ import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; import { truncate } from "../_commons/truncate.js"; + import { CoreColumnChart } from "./CoreColumnChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx b/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx index e06160bb842..a3e49dc1d77 100644 --- a/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx +++ b/libs/sdk-ui-charts/src/charts/comboChart/ComboChart.tsx @@ -25,6 +25,7 @@ import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { defaultDimensions } from "../_commons/dimensions.js"; import { sanitizeConfig } from "../_commons/sanitizeStacking.js"; + import { CoreComboChart } from "./CoreComboChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx b/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx index 429bbb33135..a340784250c 100644 --- a/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx +++ b/libs/sdk-ui-charts/src/charts/dependencyWheelChart/DependencyWheelChart.tsx @@ -18,6 +18,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { dependencyWheelDimensions } from "../_commons/dimensions.js"; + import { CoreDependencyWheelChart } from "./CoreDependencyWheelChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx b/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx index f2d5d2beb5c..6c48f8a7991 100644 --- a/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx +++ b/libs/sdk-ui-charts/src/charts/donutChart/DonutChart.tsx @@ -21,6 +21,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CoreDonutChart } from "./CoreDonutChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx b/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx index cb4f4086f0c..b1e7487591e 100644 --- a/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx +++ b/libs/sdk-ui-charts/src/charts/funnelChart/FunnelChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CoreFunnelChart } from "./CoreFunnelChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx b/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx index ea9303879a3..7169cf2f290 100644 --- a/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/CoreHeadline.tsx @@ -13,6 +13,7 @@ import { import { type ICoreChartProps } from "../../interfaces/chartProps.js"; import { withDefaultCoreChartProps } from "../_commons/defaultProps.js"; + import { type IHeadlineTransformationProps } from "./HeadlineProvider.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/headline/Headline.tsx b/libs/sdk-ui-charts/src/charts/headline/Headline.tsx index 2fc374807b4..f1dc3cb6a77 100644 --- a/libs/sdk-ui-charts/src/charts/headline/Headline.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/Headline.tsx @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-ui"; import { type IBucketChartProps, type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { CoreHeadline, type ICoreHeadlineExtendedProps } from "./CoreHeadline.js"; import { type IHeadlineProvider } from "./HeadlineProvider.js"; import { createHeadlineProvider } from "./HeadlineProviderFactory.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts b/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts index 614b2a8246a..41456dfc16c 100644 --- a/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts +++ b/libs/sdk-ui-charts/src/charts/headline/HeadlineProviderFactory.ts @@ -7,6 +7,7 @@ import { BucketNames } from "@gooddata/sdk-ui"; import { type IChartConfig } from "../../interfaces/chartConfig.js"; import { type IComparison } from "../../interfaces/comparison.js"; + import { type IHeadlineProvider } from "./HeadlineProvider.js"; import { ComparisonProvider } from "./internal/providers/ComparisonProvider.js"; import { MultiMeasuresProvider } from "./internal/providers/MultiMeasuresProvider.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx index de42a266422..7dd316c3b7a 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/BaseHeadline.tsx @@ -11,6 +11,7 @@ import { type IChartConfig } from "../../../../../interfaces/chartConfig.js"; import { type IBaseHeadlineData } from "../../interfaces/BaseHeadlines.js"; import { type HeadlineFiredDrillEvent } from "../../interfaces/DrillEvents.js"; import { type IHeadlineDataItem } from "../../interfaces/Headlines.js"; + import { BaseHeadlineContext } from "./BaseHeadlineContext.js"; import { CompareSection } from "./CompareSection.js"; import { PrimarySection } from "./PrimarySection.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx index 16247f36c20..b2f3d721d38 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/CompareSection.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { HeadlinePagination } from "@gooddata/sdk-ui-vis-commons"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../interfaces/BaseHeadlines.js"; + import { usePagination } from "./baseHeadlineDataItems/useOutOfBoundsDetection.js"; import { CompareSectionItem } from "./CompareSectionItem.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx index 82d502725dc..05be3106986 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySection.tsx @@ -1,6 +1,7 @@ // (C) 2023-2026 GoodData Corporation import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../interfaces/BaseHeadlines.js"; + import { useBaseHeadline } from "./BaseHeadlineContext.js"; import { PrimarySectionCompactContent } from "./PrimarySectionCompactContent.js"; import { PrimarySectionContent } from "./PrimarySectionContent.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx index 71c348c9f2d..f87bacec908 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/PrimarySectionCompactContent.tsx @@ -5,6 +5,7 @@ import { type CSSProperties, useMemo } from "react"; import { calculateHeadlineHeightFontSize } from "@gooddata/sdk-ui-vis-commons"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../interfaces/BaseHeadlines.js"; + import { useBaseHeadline } from "./BaseHeadlineContext.js"; import { PrimarySectionContent } from "./PrimarySectionContent.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx index 42c7dc23e45..42a8eda677a 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/BaseHeadlineDataItem.tsx @@ -7,6 +7,7 @@ import { ResponsiveText } from "@gooddata/sdk-ui-kit"; import { type IBaseHeadlineDataItemProps } from "../../../interfaces/BaseHeadlines.js"; import { type IHeadlineDataItem } from "../../../interfaces/Headlines.js"; import { useBaseHeadline } from "../BaseHeadlineContext.js"; + import { useBaseHeadlineDataItem } from "./useBaseHeadlineDataItem.js"; import { useOutOfBoundsDetection } from "./useOutOfBoundsDetection.js"; import { withDrillable } from "./withDrillable.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx index f5a40437e41..56d85f045ff 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataItem.tsx @@ -10,6 +10,7 @@ import { } from "../../../../interfaces/BaseHeadlines.js"; import { useOutOfBoundsDetection } from "../useOutOfBoundsDetection.js"; import { withTitle } from "../withTitle.js"; + import { ComparisonValue } from "./ComparisonValue.js"; import { useComparisonDataItem } from "./useComparisonDataItem.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx index cef1bfb2f14..1222ddc99d9 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/ComparisonDataWithSubItem.tsx @@ -10,6 +10,7 @@ import { } from "../../../../interfaces/BaseHeadlines.js"; import { useOutOfBoundsDetection } from "../useOutOfBoundsDetection.js"; import { withTitle } from "../withTitle.js"; + import { ComparisonValue } from "./ComparisonValue.js"; import { useComparisonDataItem } from "./useComparisonDataItem.js"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts index 20b0d4b623c..2e60e89abf8 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/baseHeadlineDataItems/comparisonItems/useComparisonDataItem.ts @@ -14,6 +14,7 @@ import { import { getComparisonColor } from "../../../../utils/ComparisonDataItemUtils.js"; import { formatItemValue } from "../../../../utils/HeadlineDataItemUtils.js"; import { useBaseHeadline } from "../../BaseHeadlineContext.js"; + import { ComparisonIndicators, getComparisonAriaLabelMessage } from "./ComparisonIndicator.js"; function createComparisonAriaLabelFactory( diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx index 16f04fb4556..b2522e72157 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSection.test.tsx @@ -13,6 +13,7 @@ import { } from "../../../tests/TestData.fixtures.js"; import { CompareSection } from "../CompareSection.js"; import { CompareSectionItem } from "../CompareSectionItem.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx index 9f04e5901cd..408d58eff57 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/CompareSectionItem.test.tsx @@ -8,6 +8,7 @@ import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../../interfaces/BaseHeadlines.js"; import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { CompareSectionItem } from "../CompareSectionItem.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx index 9c96da444b7..4f091c69a2a 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySection.test.tsx @@ -7,6 +7,7 @@ import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { PrimarySection } from "../PrimarySection.js"; import { PrimarySectionCompactContent } from "../PrimarySectionCompactContent.js"; import { PrimarySectionContent } from "../PrimarySectionContent.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx index dcf846c591b..45a88e0573c 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionCompactContent.test.tsx @@ -6,6 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { PrimarySectionCompactContent } from "../PrimarySectionCompactContent.js"; import { PrimarySectionContent } from "../PrimarySectionContent.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx index af8578964fa..7e2fe33ed62 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/headlines/baseHeadline/tests/PrimarySectionContent.test.tsx @@ -6,6 +6,7 @@ import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { type BaseHeadlineItemAccepted, type IBaseHeadlineItem } from "../../../interfaces/BaseHeadlines.js"; import { TEST_BASE_HEADLINE_ITEM } from "../../../tests/TestData.fixtures.js"; import { PrimarySectionContent } from "../PrimarySectionContent.js"; + import { createMockUseBaseHeadline } from "./BaseHeadline.test.helpers.js"; const useBaseHeadlineMock = vi.hoisted(() => vi.fn()); diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts b/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts index 29c1f0c8214..e4aae9f0577 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/interfaces/BaseHeadlines.ts @@ -7,6 +7,7 @@ import { isEmpty } from "lodash-es"; import { type HeadlineElementType } from "@gooddata/sdk-ui"; import { type IComparison } from "../../../../interfaces/comparison.js"; + import { type IHeadlineDataItem } from "./Headlines.js"; export const COMPARISON_DEFAULT_OBJECT: IComparison = { diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts b/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts index d61000b7c59..b6fd81a25d4 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/providers/ComparisonProvider.ts @@ -20,6 +20,7 @@ import { CalculateAs, type IComparison } from "../../../../interfaces/comparison import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { COMPARISON_DEFAULT_OBJECT } from "../interfaces/BaseHeadlines.js"; import { ComparisonTransformation } from "../transformations/ComparisonTransformation.js"; + import { AbstractProvider } from "./AbstractProvider.js"; const ARITHMETIC_BUCKET_IDENTIFIER = "comparison_virtual_arithmetic_bucket"; diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts b/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts index fca49aed9a6..47f05b6cdff 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/providers/MultiMeasuresProvider.ts @@ -4,6 +4,7 @@ import { type ComponentType } from "react"; import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { MultiMeasuresTransformation } from "../transformations/MultiMeasuresTransformation.js"; + import { AbstractProvider } from "./AbstractProvider.js"; export class MultiMeasuresProvider extends AbstractProvider { diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts b/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts index ae3ee975417..1e9a6682c3e 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/providers/tests/ComparisonProvider.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { CalculateAs, type CalculationType, type IComparison } from "../../../../../interfaces/comparison.js"; import { ComparisonProvider } from "../ComparisonProvider.js"; + import { TEST_BUCKETS, TEST_DATE_FORMAT, diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx index b09b4c0d4b7..0bfcbb3c125 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/ComparisonTransformation.tsx @@ -9,6 +9,7 @@ import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { BaseHeadline } from "../headlines/baseHeadline/BaseHeadline.js"; import { COMPARISON_DEFAULT_OBJECT } from "../interfaces/BaseHeadlines.js"; import { getComparisonBaseHeadlineData } from "../utils/ComparisonTransformationUtils.js"; + import { useFireDrillEvent } from "./useFiredDrillEvent.js"; export function ComparisonTransformation({ diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx index 3d3db61b746..6928d25b339 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx +++ b/libs/sdk-ui-charts/src/charts/headline/internal/transformations/MultiMeasuresTransformation.tsx @@ -5,6 +5,7 @@ import { useMemo } from "react"; import { type IHeadlineTransformationProps } from "../../HeadlineProvider.js"; import { BaseHeadline } from "../headlines/baseHeadline/BaseHeadline.js"; import { getBaseHeadlineData } from "../utils/BaseHeadlineTransformationUtils.js"; + import { useFireDrillEvent } from "./useFiredDrillEvent.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts b/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts index 3a9d6a25165..c0c81871f38 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/utils/BaseHeadlineTransformationUtils.ts @@ -17,6 +17,7 @@ import { type IBaseHeadlineItem, } from "../interfaces/BaseHeadlines.js"; import { type IHeadlineDataItem } from "../interfaces/Headlines.js"; + import { type IHeadlineExecutionData, createHeadlineDataItem, diff --git a/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts b/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts index fc8fc26d9c9..8bd868d2303 100644 --- a/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts +++ b/libs/sdk-ui-charts/src/charts/headline/internal/utils/ComparisonTransformationUtils.ts @@ -35,6 +35,7 @@ import { type ComparisonDataItem as IComparisonDataItemType, type IComparisonDataWithSubItem, } from "../interfaces/BaseHeadlines.js"; + import { createBaseHeadlineItem } from "./BaseHeadlineTransformationUtils.js"; import { type IHeadlineExecutionData, getExecutionData } from "./HeadlineTransformationUtils.js"; diff --git a/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx b/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx index d6db276e33a..517bb4f5508 100644 --- a/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx +++ b/libs/sdk-ui-charts/src/charts/heatmap/Heatmap.tsx @@ -24,6 +24,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { heatmapDimensions } from "../_commons/dimensions.js"; + import { CoreHeatmap } from "./CoreHeatmap.js"; // diff --git a/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx b/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx index e44d902e5ab..8d3af0477c8 100644 --- a/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx +++ b/libs/sdk-ui-charts/src/charts/lineChart/LineChart.tsx @@ -22,6 +22,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { stackedChartDimensions } from "../_commons/dimensions.js"; + import { CoreLineChart } from "./CoreLineChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx b/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx index d13f966b2d7..f65fe79737c 100644 --- a/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx +++ b/libs/sdk-ui-charts/src/charts/pieChart/PieChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CorePieChart } from "./CorePieChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx b/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx index d4ad94182c3..f90bdad83d5 100644 --- a/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx +++ b/libs/sdk-ui-charts/src/charts/pyramidChart/PyramidChart.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { roundChartDimensions } from "../_commons/dimensions.js"; + import { CorePyramidChart } from "./CorePyramidChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx b/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx index 6cb1fea9ea9..394f1fcf5f2 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/CoreRepeater.tsx @@ -22,6 +22,7 @@ import { ColorFactory } from "../../highcharts/chartTypes/_chartOptions/colorFac import { getValidColorPalette } from "../../highcharts/chartTypes/_util/color.js"; import { type IChartConfig } from "../../interfaces/chartConfig.js"; import { type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { getWindowSize } from "./internal/repeaterAgGridDataSource.js"; import { RepeaterChart } from "./internal/RepeaterChart.js"; import type { RepeaterColumnResizedCallback } from "./publicTypes.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx b/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx index 47281c49524..e7ea5e876ac 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/Repeater.tsx @@ -23,6 +23,7 @@ import { } from "@gooddata/sdk-ui"; import { type IBucketChartProps, type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { CoreRepeater } from "./CoreRepeater.js"; import { constructRepeaterBuckets, constructRepeaterDimensions } from "./internal/repeaterExecution.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx index 3202547eac3..9d0ab39c7b9 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineColumnChart.tsx @@ -6,6 +6,7 @@ import Highcharts from "highcharts/esm/highcharts.js"; import { type IResultAttributeHeaderItem } from "@gooddata/sdk-model"; import { type HighchartsOptions } from "../../../highcharts/lib/index.js"; + import { type RepeaterInlineVisualizationDataPoint } from "./dataViewToRepeaterData.js"; import { getTooltipHtml } from "./highcharts.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx index 8ec913e5753..25664fe6f65 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/InlineLineChart.tsx @@ -6,6 +6,7 @@ import Highcharts from "highcharts/esm/highcharts.js"; import { type IResultAttributeHeaderItem } from "@gooddata/sdk-model"; import { type HighchartsOptions } from "../../../highcharts/lib/index.js"; + import { type RepeaterInlineVisualizationDataPoint } from "./dataViewToRepeaterData.js"; import { getTooltipHtml } from "./highcharts.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx index e55613234fc..995c0840b9e 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/RepeaterChart.tsx @@ -43,6 +43,7 @@ import { useFocusMng } from "../hooks/useFocusMng.js"; import { useRenderWatcher } from "../hooks/useRenderWatcher.js"; import { MANUALLY_SIZED_MIN_WIDTH, useResizing } from "../hooks/useResizing.js"; import { type IRepeaterChartProps } from "../publicTypes.js"; + import { type RepeaterInlineVisualizationDataPoint } from "./dataViewToRepeaterData.js"; import { InlineColumnChart } from "./InlineColumnChart.js"; import { InlineLineChart } from "./InlineLineChart.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts b/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts index 8983318625a..aa72cefc9cd 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/columnSizing.ts @@ -17,6 +17,7 @@ import { type RepeaterColumnWidth, type RepeaterColumnWidthItem, } from "../columnWidths.js"; + import { type ResizingState } from "./privateTypes.js"; export function getColumnWidths(resizingState: ResizingState): RepeaterColumnWidthItem[] { diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx b/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx index 33fe1fdd3cd..5c07be98180 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/repeaterAgGridDataSource.tsx @@ -5,6 +5,7 @@ import { type GridApi, type IDatasource, type IGetRowsParams } from "ag-grid-com import { DataViewFacade, type GoodDataSdkError, convertDataWindowError } from "@gooddata/sdk-ui"; import { type IRepeaterChartConfig } from "../publicTypes.js"; + import { dataViewToRepeaterData } from "./dataViewToRepeaterData.js"; const MAX_COLUMNS = 1000; diff --git a/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts b/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts index 744f16c956d..e29323d79c0 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/internal/tableSizing.ts @@ -3,6 +3,7 @@ import { type RefObject } from "react"; import { scheduleAnimationFrame } from "../../_base/animationFrameScheduler.js"; + import { getManualResizedColumn } from "./columnSizing.js"; import { type ColumnResizingConfig, type ResizingState } from "./privateTypes.js"; diff --git a/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts b/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts index 0b8e2d0d271..bcf4f383df2 100644 --- a/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts +++ b/libs/sdk-ui-charts/src/charts/repeater/publicTypes.ts @@ -3,6 +3,7 @@ import { type DataViewFacade, type ExplicitDrill, type OnFiredDrillEvent } from "@gooddata/sdk-ui"; import { type IChartConfig } from "../../interfaces/chartConfig.js"; + import { type RepeaterColumnWidthItem } from "./columnWidths.js"; /** diff --git a/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx b/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx index b40ee97a6b6..f05daa55b43 100644 --- a/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx +++ b/libs/sdk-ui-charts/src/charts/sankeyChart/SankeyChart.tsx @@ -18,6 +18,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { sankeyDimensions } from "../_commons/dimensions.js"; + import { CoreSankeyChart } from "./CoreSankeyChart.js"; // diff --git a/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx b/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx index 1c762b0969e..61c3cf483fc 100644 --- a/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx +++ b/libs/sdk-ui-charts/src/charts/scatterPlot/ScatterPlot.tsx @@ -20,6 +20,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { pointyChartDimensions } from "../_commons/dimensions.js"; + import { CoreScatterPlot } from "./CoreScatterPlot.js"; // diff --git a/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx b/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx index ca087e28f12..8036a51d223 100644 --- a/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx +++ b/libs/sdk-ui-charts/src/charts/treemap/Treemap.tsx @@ -25,6 +25,7 @@ import { type IBucketChartProps } from "../../interfaces/chartProps.js"; import { withChart } from "../_base/withChart.js"; import { type IChartDefinition } from "../_commons/chartDefinition.js"; import { treemapDimensions } from "../_commons/dimensions.js"; + import { CoreTreemap } from "./CoreTreemap.js"; // diff --git a/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx b/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx index 63808f42ca6..e015fca0dc5 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx +++ b/libs/sdk-ui-charts/src/charts/xirr/CoreXirr.tsx @@ -13,6 +13,7 @@ import { import { type ICoreChartProps } from "../../interfaces/chartProps.js"; import { withDefaultCoreChartProps } from "../_commons/defaultProps.js"; + import { XirrTransformation } from "./internal/XirrTransformation.js"; type Props = ICoreChartProps & ILoadingInjectedProps; diff --git a/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx b/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx index 5c55213b944..c46d885b445 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx +++ b/libs/sdk-ui-charts/src/charts/xirr/Xirr.tsx @@ -26,6 +26,7 @@ import { } from "@gooddata/sdk-ui"; import { type IBucketChartProps, type ICoreChartProps } from "../../interfaces/chartProps.js"; + import { CoreXirr } from "./CoreXirr.js"; // diff --git a/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx b/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx index d5b1f78374b..6351705101a 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx +++ b/libs/sdk-ui-charts/src/charts/xirr/internal/XirrTransformation.tsx @@ -16,6 +16,7 @@ import { type HeadlineFiredDrillEvent, type IHeadlineFiredDrillEventItemContext, } from "../../headline/internal/interfaces/DrillEvents.js"; + import { applyDrillableItems, buildDrillEventData, diff --git a/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts b/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts index 470936932d8..3d82d3b7adf 100644 --- a/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts +++ b/libs/sdk-ui-charts/src/charts/xirr/internal/utils/XirrTransformationUtils.ts @@ -18,6 +18,7 @@ import { } from "@gooddata/sdk-ui"; import { type IHeadlineData } from "../../../headline/internal/interfaces/Headlines.js"; + import { calculateXirr } from "./calculateXirr.js"; export interface IXirrExecutionData { diff --git a/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx b/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx index 56a99282f54..100cc5953b1 100644 --- a/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx +++ b/libs/sdk-ui-charts/src/highcharts/ChartTransformation.tsx @@ -24,6 +24,7 @@ import { type ILegendOptions } from "@gooddata/sdk-ui-vis-commons"; import { type IChartConfig } from "../interfaces/chartConfig.js"; import { type OnLegendReady } from "../interfaces/chartProps.js"; + import { initChartPlugins } from "./adapter/chartPlugins.js"; import { HighChartsMeasuredRenderer } from "./adapter/HighChartsMeasuredRenderer.js"; import { diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx b/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx index f4f6ee3ec12..256d17c7f04 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx +++ b/libs/sdk-ui-charts/src/highcharts/adapter/Chart.tsx @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-ui"; import { type HChart, type HighchartsOptions } from "../lib/index.js"; + import { initChartPlugins } from "./chartPlugins.js"; import "highcharts/esm/highcharts-more.js"; import "highcharts/esm/modules/drilldown.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx b/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx index 54b1605cc00..1265cc5910a 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx +++ b/libs/sdk-ui-charts/src/highcharts/adapter/HighChartsRenderer.tsx @@ -44,6 +44,7 @@ import { import { type HChart, type HighchartsOptions, type XAxisOptions, type YAxisOptions } from "../lib/index.js"; import { BOTTOM, LEFT, RIGHT, TOP } from "../typings/mess.js"; import { type IChartOptions, type ISeriesDataItem, type ISeriesItem } from "../typings/unsafe.js"; + import { Chart, type IChartProps } from "./Chart.js"; import { coalesceNulls, skipLeadingZeros } from "./dataSanitizers.js"; import { mergePropertiesWithOverride } from "./propertyMerger.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts b/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts index 1e8a8f91f56..662120f2c89 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts +++ b/libs/sdk-ui-charts/src/highcharts/adapter/legendBuilder.ts @@ -28,6 +28,7 @@ import { } from "../chartTypes/_util/common.js"; import { type ChartType } from "../typings/chartType.js"; import { type IChartOptions, type ISeriesItem, type ISeriesNodeItem } from "../typings/unsafe.js"; + import { createDualAxesSeriesMapper, createWaterfallLegendItems, diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts index b266a6f8cee..bf36104397a 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts +++ b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideBarLabels.ts @@ -28,6 +28,7 @@ import { toNeighbors, } from "../../../chartTypes/_chartCreators/helpers.js"; import { type Axis } from "../../../lib/index.js"; + import { areLabelsOverlappingColumns, getStackItems, getStackTotalGroups } from "./autohideColumnLabels.js"; const toggleStackedChartLabels = ( diff --git a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts index eba3a128649..10415c21ad1 100644 --- a/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts +++ b/libs/sdk-ui-charts/src/highcharts/adapter/plugins/autohideLabels/autohideLabels.ts @@ -9,6 +9,7 @@ import { minimizeDataLabel, } from "../../../chartTypes/_chartCreators/dataLabelsHelpers.js"; import { getChartType } from "../../../chartTypes/_chartCreators/helpers.js"; + import { autohideBarLabels, autohideBarTotalLabels, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts index 71da6b0eb47..12e65f47425 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartColoring/test/measure.test.ts @@ -12,6 +12,7 @@ import { recordedDataFacade } from "../../../../../testUtils/recordings.js"; import { ColorFactory } from "../../_chartOptions/colorFactory.js"; import { getMVS } from "../../_util/test/helper.js"; import { MeasureColorStrategy } from "../measure.js"; + import { TwoColorPalette } from "./color.fixture.js"; import { getColorsFromStrategy } from "./helper.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts index 76e672377b1..5376eff67cb 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/commonConfiguration.ts @@ -20,6 +20,7 @@ import { type IChartOptions } from "../../typings/unsafe.js"; import { isHighContrastMode } from "../../utils/highContrastMode.js"; import { supportedDualAxesChartTypes } from "../_chartOptions/chartCapabilities.js"; import { isOneOfTypes } from "../_util/common.js"; + import { chartClick } from "./drilldownEventing.js"; import { setupDrilldown } from "./setupDrilldownToParentAttribute.js"; import { styleVariables } from "./styles/variables.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts index 3914c279fe4..bea0f00d00a 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customConfiguration.ts @@ -53,6 +53,7 @@ import { percentFormatter, } from "../_util/common.js"; import { canComboChartBeStackedInPercent } from "../comboChart/comboChartOptions.js"; + import { HOVER_BRIGHTNESS, MINIMUM_HC_SAFE_BRIGHTNESS } from "./commonConfiguration.js"; import { type IIdentifierMapping } from "./customTooltip/identifierMapping.js"; import { resolveReferencesFromPoint } from "./customTooltip/referenceResolver.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts index dae95c7766e..b00218401ed 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/customTooltip/referenceResolver.ts @@ -14,6 +14,7 @@ import { type IDrillEventIntersectionElement, isDrillIntersectionAttributeItem } import { type IResolvedReferenceValues } from "@gooddata/sdk-ui-vis-commons"; import { type IUnsafeHighchartsTooltipPoint } from "../../../typings/unsafe.js"; + import { type IIdentifierMapping } from "./identifierMapping.js"; /** diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts index c1646f2634c..17ab57c62da 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/dataLabelsHelpers.ts @@ -14,6 +14,7 @@ import { import { type StackingType } from "../../constants/stacking.js"; import { type DataLabelsOptions } from "../../lib/index.js"; import { isAreaChart, isBarChart, isColumnChart, isDependencyWheel, isOneOfTypes } from "../_util/common.js"; + import { type IAxisRange, type IAxisRangeForAxes, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts index 243743a35d4..168f7f236e5 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/drilldownEventing.ts @@ -20,6 +20,7 @@ import { import { type DrilldownEventObject } from "../../lib/index.js"; import { isBulletChart, isComboChart, isHeatmap, isTreemap } from "../_util/common.js"; + import { type IHighchartsPointObject, isGroupHighchartsDrillEvent } from "./isGroupHighchartsDrillEvent.js"; export function getClickableElementNameByChartType(type: VisType): ChartElementType { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts index 0f99be88c9d..842874238dd 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/getOptionalStackingConfiguration.ts @@ -24,6 +24,7 @@ import { isLineChart, } from "../_util/common.js"; import { canComboChartBeStackedInPercent } from "../comboChart/comboChartOptions.js"; + import { formatAsPercent, getLabelStyle, getTotalsVisibilityConfig } from "./dataLabelsHelpers.js"; import { isPrimaryYAxis } from "./isPrimaryYAxis.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts index 86820da2d14..481a52cf2ac 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartCreators/highChartsCreators.ts @@ -28,6 +28,7 @@ import { getSankeyConfiguration } from "../sankeyChart/sankeyConfiguration.js"; import { getScatterConfiguration } from "../scatterPlot/scatterConfiguration.js"; import { getTreemapConfiguration } from "../treemap/treemapConfiguration.js"; import { getWaterfallConfiguration } from "../waterfallChart/waterfallConfiguration.js"; + import { getCommonConfiguration } from "./commonConfiguration.js"; import { getCustomizedConfiguration } from "./customConfiguration.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts index f6c1c9b6e54..669a91699c5 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartAxes.ts @@ -17,6 +17,7 @@ import { isSupportingJoinedAttributeAxisName, unwrap, } from "../_util/common.js"; + import { supportedDualAxesChartTypes } from "./chartCapabilities.js"; function preprocessMeasureGroupItems( diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts index 898c820fe43..dfb96dae2bf 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartDrilling.ts @@ -16,6 +16,7 @@ import { type IUnwrappedAttributeHeadersWithItems } from "../../typings/mess.js" import { type IPointData, type ISeriesDataItem } from "../../typings/unsafe.js"; import { isBubbleChart, isHeatmap, isOneOfTypes, isScatterPlot, isTreemap, unwrap } from "../_util/common.js"; import { findMeasureGroupInDimensions } from "../_util/executionResultHelper.js"; + import { multiMeasuresAlternatingTypes } from "./chartCapabilities.js"; function getViewBy( diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts index 95683e7fb7e..79b0ba3f923 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartLimits.ts @@ -24,6 +24,7 @@ import { type ChartType } from "../../typings/chartType.js"; import { type IChartOptions, type ISeriesDataItem, type ISeriesItem } from "../../typings/unsafe.js"; import { isDataOfReasonableSize } from "../_chartCreators/highChartsCreators.js"; import { isOneOfTypes, isTreemap } from "../_util/common.js"; + import { unsupportedNegativeValuesTypes } from "./chartCapabilities.js"; export interface IValidationResult { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts index cdd2f21c072..605ba236959 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartOptionsBuilder.ts @@ -53,6 +53,7 @@ import { getColorAssignment, getWaterfallChartCategories, } from "../waterfallChart/waterfallChartOptions.js"; + import { assignYAxes, getXAxes, getYAxes } from "./chartAxes.js"; import { multiMeasuresAlternatingTypes, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts index 73e5fe610d5..70138552688 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartSeries.ts @@ -31,6 +31,7 @@ import { buildSankeyChartSeries } from "../sankeyChart/sankeyChartOptions.js"; import { getScatterPlotSeries } from "../scatterPlot/scatterPlotSeries.js"; import { getTreemapStackedSeries } from "../treemap/treemapChartSeries.js"; import { getWaterfallChartSeries } from "../waterfallChart/waterfallChartsSeries.js"; + import { multiMeasuresAlternatingTypes } from "./chartCapabilities.js"; import { getChartFillProperties, getColorOrPatternFillIndex, isSolidFill } from "./patternFillOptions.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts index 85ded9019ce..e53d2a0326e 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/_chartOptions/chartTooltips.ts @@ -21,6 +21,7 @@ import { isTreemap, unwrap, } from "../_util/common.js"; + import { multiMeasuresAlternatingTypes } from "./chartCapabilities.js"; import { formatValueForTooltip, getFormattedValueForTooltip } from "./tooltip.js"; diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts index 05e10114e55..0f49fa9b969 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/bulletChart/bulletChartColoring.ts @@ -26,6 +26,7 @@ import { import { DEFAULT_BULLET_GRAY_COLOR } from "../_util/color.js"; import { findMeasureGroupInDimensions } from "../_util/executionResultHelper.js"; + import { getOccupiedMeasureBucketsLocalIdentifiers, isComparativeSeries, diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts index 0cca0a47516..4d30c68c84f 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartColoring.test.ts @@ -9,6 +9,7 @@ import { ColorFactory } from "../../_chartOptions/colorFactory.js"; import { CUSTOM_COLOR_PALETTE } from "../../_util/test/colorPalette.fixture.js"; import { getMVSForViewByTwoAttributes } from "../../_util/test/helper.js"; import { SankeyChartColorStrategy } from "../sankeyChartColoring.js"; + import { CHART_TYPE, COLOR_MAPPINGS, RECORDS_WITHOUT_EMPTY_ATTRIBUTE } from "./sankeyChart.fixture.js"; describe("SankeyChartColorStrategy", () => { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts index 8572f8f1115..2924615729b 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartOptions.test.ts @@ -9,6 +9,7 @@ import { ColorFactory } from "../../_chartOptions/colorFactory.js"; import { CUSTOM_COLOR_PALETTE } from "../../_util/test/colorPalette.fixture.js"; import { getMVSForViewByTwoAttributes } from "../../_util/test/helper.js"; import { buildSankeyChartSeries } from "../sankeyChartOptions.js"; + import { CHART_TYPE, COLOR_MAPPINGS, EMPTY_HEADER_TITLE_VALUE, RECORDS } from "./sankeyChart.fixture.js"; describe("SankeyChart buildSankeyChartSeries", () => { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts index 6abe757233b..acc31a7a7f0 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/sankeyChart/tests/sankeyChartTooltip.test.ts @@ -9,6 +9,7 @@ import { type ScenarioRecording } from "@gooddata/sdk-backend-mockingbird"; import { recordedDataFacade } from "../../../../../testUtils/recordings.js"; import { generateTooltipSankeyChartFn } from "../../_chartOptions/chartTooltips.js"; import { getMVSForViewByTwoAttributes } from "../../_util/test/helper.js"; + import { DEFAULT_TOOLTIP_CONTENT_WIDTH } from "./sankeyChart.fixture.js"; describe("SankeyChart tooltip", () => { diff --git a/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts b/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts index f414006efa1..569011be9ef 100644 --- a/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts +++ b/libs/sdk-ui-charts/src/highcharts/chartTypes/waterfallChart/waterfallChartOptions.ts @@ -17,6 +17,7 @@ import { type IChartConfig, type ITotalConfig } from "../../../interfaces/chartC import { type ISeriesDataItem, type ISeriesItem } from "../../typings/unsafe.js"; import { getChartFillProperties } from "../_chartOptions/patternFillOptions.js"; import { unwrap } from "../_util/common.js"; + import { getColorOrLegendIndex } from "./waterfallChartsSeries.js"; function isTotalColumnEnabled(chartConfig: IChartConfig): boolean { diff --git a/libs/sdk-ui-dashboard/package.json b/libs/sdk-ui-dashboard/package.json index bce579c0ecd..d5864ea0d63 100644 --- a/libs/sdk-ui-dashboard/package.json +++ b/libs/sdk-ui-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-dashboard", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Dashboard Component", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts index 90f2b3d9eec..e8b32b4dae5 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/dashboardFilterContext.ts @@ -31,6 +31,7 @@ import { } from "@gooddata/sdk-model"; import { type IDashboardFilter } from "../../types.js"; + import { createDefaultFilterContext } from "./defaultFilterContext.js"; /** diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts index 460a9b4d3d1..e9b42f59a1f 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/item.ts @@ -24,6 +24,7 @@ import { import { type ILayoutItemPath } from "../../../../types.js"; import { type IDashboardLayoutItemFacade } from "../facade/interfaces.js"; + import { type DashboardLayoutItemModifications, type IDashboardLayoutBuilder, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts index 7c26a60bb4d..2158a4355e8 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/layout.ts @@ -15,6 +15,7 @@ import { type ILayoutItemPath, type ILayoutSectionPath } from "../../../../types import { getSectionIndex } from "../../../layout/coordinates.js"; import { type IDashboardLayoutFacade } from "../facade/interfaces.js"; import { DashboardLayoutFacade } from "../facade/layout.js"; + import { type DashboardLayoutModifications, type DashboardLayoutSectionModifications, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts index 1f6e42d8d8d..2d751485705 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/section.ts @@ -15,6 +15,7 @@ import { import { getItemIndex } from "../../../layout/coordinates.js"; import { type IDashboardLayoutSectionFacade } from "../facade/interfaces.js"; + import { type DashboardLayoutItemModifications, type DashboardLayoutItemsSelector, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts index cf066e3b1a1..7e15b330542 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/item.test.ts @@ -13,6 +13,7 @@ import { import { DashboardLayoutItemBuilder } from "../item.js"; import { DashboardLayoutBuilder } from "../layout.js"; import { DashboardLayoutSectionBuilder } from "../section.js"; + import { createEmptyDashboardLayoutItemBuilder, createValueOrUpdateCallbackTestCases, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts index 0aef5bbcafd..8fbfa74862e 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/layout.test.ts @@ -8,6 +8,7 @@ import { type IDashboardLayout, type IDashboardLayoutSection, idRef } from "@goo import { serializeLayoutSectionPath } from "../../../../layout/coordinates.js"; import { type IDashboardLayoutItemBuilder, type IDashboardLayoutSectionBuilder } from "../interfaces.js"; import { DashboardLayoutBuilder } from "../layout.js"; + import { createEmptyDashboardLayoutBuilder, createEmptyDashboardLayoutSectionBuilder, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts index 3c52f16f299..fade85fa5d1 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/builder/tests/section.test.ts @@ -12,6 +12,7 @@ import { import { serializeLayoutItemPath } from "../../../../layout/coordinates.js"; import { DashboardLayoutBuilder } from "../layout.js"; import { DashboardLayoutSectionBuilder } from "../section.js"; + import { createEmptyDashboardLayoutBuilder, createEmptyDashboardLayoutSectionBuilder, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts index f4b6e501fac..4ef2f5212e8 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/item.ts @@ -31,6 +31,7 @@ import { import { type ILayoutItemPath } from "../../../../types.js"; import { areLayoutPathsEqual, updateItemIndex } from "../../../layout/coordinates.js"; import { determineWidthForScreen } from "../../../layout/sizing.js"; + import { type IDashboardLayoutItemFacade, type IDashboardLayoutSectionFacade } from "./interfaces.js"; /** diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts index 862ffa359e4..d1514d12cba 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/items.ts @@ -6,6 +6,7 @@ import { type IDashboardLayoutItem, type ScreenSize } from "@gooddata/sdk-model" import { asLayoutItemPath } from "../../../layout/coordinates.js"; import { DASHBOARD_LAYOUT_GRID_COLUMNS_COUNT } from "../config.js"; + import { type IDashboardLayoutItemFacade, type IDashboardLayoutItemsFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts index d20c83c64be..23c420b8d93 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/layout.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { type IDashboardLayout, type IDashboardLayoutSize, isDashboardLayout } from "@gooddata/sdk-model"; import { type ILayoutItemPath } from "../../../../types.js"; + import { type IDashboardLayoutFacade, type IDashboardLayoutSectionFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts index 4c2f2f77371..61e32e15971 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/section.ts @@ -10,6 +10,7 @@ import { asLayoutItemPath, updateSectionIndex, } from "../../../layout/coordinates.js"; + import { type IDashboardLayoutFacade, type IDashboardLayoutItemFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts index e9818f0c2d0..822715d4c77 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/facade/sections.ts @@ -3,6 +3,7 @@ import { type IDashboardLayoutSection } from "@gooddata/sdk-model"; import { type ILayoutItemPath } from "../../../../types.js"; + import { type IDashboardLayoutFacade, type IDashboardLayoutSectionFacade, diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts index 73617951220..7688ba48ce4 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/flexibleLayout/layoutConfiguration.ts @@ -9,6 +9,7 @@ import { import { type ExtendedDashboardWidget } from "../../../model/types/layoutTypes.js"; import { type ILayoutItemPath } from "../../../types.js"; import { findItem } from "../../layout/coordinates.js"; + import { type IDashboardLayoutItemFacade } from "./facade/interfaces.js"; /** diff --git a/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts b/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts index 84fe803f70d..17ee10acb71 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dashboard/tests/dashboardFilterContext.test.ts @@ -11,6 +11,7 @@ import { dashboardFilterContextDefinition, dashboardFilterContextSanitize, } from "../dashboardFilterContext.js"; + import { TestFilterContext, TestFilterContextWithInvalidParents } from "./dashboardFilterContext.fixture.js"; // TODO RAIL-3383 move the fixtures? diff --git a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts index 046a0c20e09..80e760660c1 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/dateFilterOptionMapping.test.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui-filters"; import { matchDateFilterToDateFilterOption } from "../dateFilterOptionMapping.js"; + import { allTime, last30days } from "./fixtures.js"; describe("matchDateFilterToDateFilterOption", () => { diff --git a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts index 0b3f649b45e..ffed80cd99f 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/merge.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type IDashboardDateFilterConfig, type IDateFilterConfig, idRef } from "@gooddata/sdk-model"; import { mergeDateFilterConfigs } from "../merge.js"; + import { absoluteForm, allTime, diff --git a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts index f1e53ccb23c..f27cf5ae405 100644 --- a/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/dateFilterConfig/tests/validation.test.ts @@ -6,6 +6,7 @@ import { type IDateFilterConfig, idRef } from "@gooddata/sdk-model"; import { suppressConsole } from "@gooddata/util"; import { validateDateFilterConfig } from "../validation.js"; + import { absoluteForm, allTime, lastMonth, relativeForm, year2019 } from "./fixtures.js"; describe("validateDateFilterConfig", () => { diff --git a/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts b/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts index c79a6cb2225..66cc52318d9 100644 --- a/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts +++ b/libs/sdk-ui-dashboard/src/_staging/layout/sizing.ts @@ -43,6 +43,7 @@ import { type ILayoutItemPath } from "../../types.js"; import { DASHBOARD_LAYOUT_GRID_COLUMNS_COUNT } from "../dashboard/flexibleLayout/config.js"; import { getLayoutConfiguration } from "../dashboard/flexibleLayout/layoutConfiguration.js"; import { type ObjRefMap } from "../metadata/objRefMap.js"; + import { GRID_ROW_HEIGHT_IN_PX, KPI_WITHOUT_COMPARISON_SIZE_INFO, diff --git a/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts b/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts index df40db169db..865c7148f9b 100644 --- a/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts +++ b/libs/sdk-ui-dashboard/src/_staging/layout/test/coordinates.test.ts @@ -27,6 +27,7 @@ import { updateItemIndex, updateSectionIndex, } from "../coordinates.js"; + import { NESTED_LAYOUT } from "./coordinates.mock.js"; describe("coordinates", () => { diff --git a/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts b/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts index 881e5f6984d..3eec7df3be6 100644 --- a/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts +++ b/libs/sdk-ui-dashboard/src/_staging/sharedHooks/useFiltersNamings.ts @@ -36,6 +36,7 @@ import { convertDateFilterConfigToDateFilterOptions } from "../dateFilterConfig/ import { matchDateFilterToDateFilterOptionWithPreference } from "../dateFilterConfig/dateFilterOptionMapping.js"; import { defaultDateFilterConfig } from "../dateFilterConfig/defaultConfig.js"; import { ensureAllTimeFilterForExport } from "../exportUtils/filterUtils.js"; + import { useAttributeFilterDisplayFormFromMap } from "./useAttributeFilterDisplayFormFromMap.js"; import { useCommonDateFilterTitle } from "./useCommonDateFilterTitle.js"; import { useDateFiltersTitles } from "./useDateFiltersTitles.js"; diff --git a/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts b/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts index 9aa5955aaef..e06bbe48e4b 100644 --- a/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts +++ b/libs/sdk-ui-dashboard/src/_staging/slideshow/containerSwitcherSlideTransformer.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-model"; import { objRef } from "../../model/utils/objRef.js"; + import { containerSlideTransformer } from "./containerSlideTransformer.js"; import { containsVisualizationSwitcher } from "./utils/index.js"; diff --git a/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts b/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts index 9bb02b68eff..4dc9c5a0a2f 100644 --- a/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts +++ b/libs/sdk-ui-dashboard/src/_staging/slideshow/layoutTransformer.ts @@ -3,6 +3,7 @@ import { type IDashboardLayout, type IDashboardLayoutSection } from "@gooddata/sdk-model"; import { type IDashboardFocusObject } from "../../model/types/commonTypes.js"; + import { sectionLayoutSection } from "./sectionSlideTransformer.js"; import { singleWidgetTransformer } from "./singleWidgetTransformer.js"; import { findFocusedWidget } from "./utils/index.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx index b61fd932922..34bcbb424ea 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/KdaDialog.tsx @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { IntlWrapper } from "../presentation/localization/IntlWrapper.js"; + import { KdaDialog as KdaDialogComponent } from "./dialog/KdaDialog.js"; import { KdaStateProvider } from "./providers/KdaState.js"; import { type IKdaDialogProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx index e3fb51b22ec..787b535ba8e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryDrivers.tsx @@ -16,6 +16,7 @@ import { useSummaryDrivers } from "../hooks/useSummaryDrivers.js"; import { type IKdaItem, type IKdaItemGroup } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; import { getSortedSignificantDriver } from "../tools/sortedKeyDrivers.js"; + import { driverColumn } from "./columns/driverColumn.js"; import { driversCountColumn } from "./columns/driversCount.js"; import { titleColumn } from "./columns/titleColumn.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx index cefd67cb61c..045d6d3af90 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/components/KdaSummaryHeadline.tsx @@ -8,6 +8,7 @@ import { useDateAttribute } from "../hooks/useDateAttribute.js"; import { type IKdaDateOptions } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; import { formatKeyDriverAnalysisDateRange, formatValue } from "../utils.js"; + import { DateHeadline } from "./headlines/DateHeadline.js"; import { DiffHeadline } from "./headlines/DiffHeadline.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx index 1b31d42169a..10c2112703e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/AddFilterButton.tsx @@ -9,6 +9,7 @@ import { Typography, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type IAddAttributeFilterButtonProps } from "../../presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterButton.js"; import { AttributesDropdown } from "../../presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useAddNewAttributeHandler } from "./hooks/useAddNewAttributeHandler.js"; import { useUnusedAttributes } from "./hooks/useUnusedAttributes.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx index d0a0012df00..1894e79f736 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/FiltersBar.tsx @@ -7,6 +7,7 @@ import { selectAttributeFilterConfigsOverrides } from "../../model/store/tabs/at import { AttributeBar } from "../components/bars/AttributeBar.js"; import { DateBar } from "../components/bars/DateBar.js"; import { KdaBar } from "../components/KdaBar.js"; + import { AddFilterButton } from "./AddFilterButton.js"; import { useAttributeFiltersChangeHandler } from "./hooks/useAttributeFiltersChangeHandler.js"; import { usePeriodChangeHandler } from "./hooks/usePeriodChangeHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx index 3f9434b4561..16d79847b8e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/composition/KeyDriversOverview.tsx @@ -18,6 +18,7 @@ import { KdaSummaryDrivers } from "../components/KdaSummaryDrivers.js"; import { KdaSummaryHeadline } from "../components/KdaSummaryHeadline.js"; import { type IKdaItem, type IKdaState } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useDataViewWithConfig } from "./hooks/useDataViewWithConfig.js"; import { useGroupAndItem } from "./hooks/useGroupAndItem.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx index 43c4d186358..15ea33096f8 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialog.tsx @@ -18,6 +18,7 @@ import { MetricsBar } from "../composition/MetricsBar.js"; import { KDA_DIALOG_OVERS_Z_INDEX } from "../const.js"; import { useKdaState } from "../providers/KdaState.js"; import { type IKdaDialogProps } from "../types.js"; + import { useChangeAnalysis } from "./hooks/useChangeAnalysis.js"; import { useKdaDialogAccessibility } from "./hooks/useKdaDialogAccessibility.js"; import { useKdaDialogTooltipsOverride } from "./hooks/useKdaDialogTooltipsOverride.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx index d0458727ed3..005d49a38da 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogController.tsx @@ -8,6 +8,7 @@ import type { ISeparators } from "@gooddata/sdk-model"; import { KdaProvider } from "../providers/Kda.js"; import type { IKdaDefinition, IKdaDialogProps } from "../types.js"; + import { KdaDialog } from "./KdaDialog.js"; import { KdaDialogArbiter } from "./KdaDialogArbiter.js"; import { KdaReplaceConfirmationDialog } from "./KdaReplaceConfirmationDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx index 8fed375cb27..c7f0e01c268 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/KdaDialogFloatingStatusBar.tsx @@ -5,6 +5,7 @@ import { type MessageDescriptor, defineMessages, useIntl } from "react-intl"; import { LoadingSpinner, UiIcon } from "@gooddata/sdk-ui-kit"; import type { KdaAsyncStatus } from "../internalTypes.js"; + import { KdaDialogActionButtons } from "./KdaDialogActionButtons.js"; type KdaFloatingStatus = "step01" | "step02" | "done" | "error"; diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts index 0497143c9d9..89153c8e38c 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/dialog/hooks/useChangeAnalysis.ts @@ -26,6 +26,7 @@ import { useRelevantFilters } from "../../hooks/useRelevantFilters.js"; import { type IKdaItem, type IKdaState } from "../../internalTypes.js"; import { useKdaState } from "../../providers/KdaState.js"; import { type DeepReadonly, type IKdaDefinition } from "../../types.js"; + import { useTags } from "./useTags.js"; export function useChangeAnalysis() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts index 6fab9b418fe..b8fbcdbe2ba 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useDriversList.ts @@ -8,6 +8,7 @@ import { type IUiListboxInteractiveItem } from "@gooddata/sdk-ui-kit"; import { type IKdaItem, type IKdaTrend } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useTrendDrivers } from "./useTrendDrivers.js"; export function useSignificantDrives() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts index d32c8e48e1e..1c3b319026a 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useRelevantFilters.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useMemo } from "react"; @@ -6,6 +6,7 @@ import { type ICatalogAttribute } from "@gooddata/sdk-model"; import { useKdaState } from "../providers/KdaState.js"; import { getOnlyRelevantFilters } from "../utils.js"; + import { useAttribute } from "./useAttribute.js"; export function useRelevantFilters() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts index 1aaae66aad1..f7835366901 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts +++ b/libs/sdk-ui-dashboard/src/kdaDialog/hooks/useSummaryDrivers.ts @@ -6,6 +6,7 @@ import { type ObjRef, objRefToString } from "@gooddata/sdk-model"; import { type IKdaItemGroup } from "../internalTypes.js"; import { useKdaState } from "../providers/KdaState.js"; + import { useAttribute } from "./useAttribute.js"; export function useSummaryDrivers() { diff --git a/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx b/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx index c2ff3fd6ddf..6e056a5481e 100644 --- a/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx +++ b/libs/sdk-ui-dashboard/src/kdaDialog/providers/Kda.tsx @@ -6,6 +6,7 @@ import { type ISeparators, isAllValuesDashboardAttributeFilter } from "@gooddata import { type IKdaState } from "../internalTypes.js"; import { type IKdaDefinition } from "../types.js"; + import { KdaStateProvider } from "./KdaState.js"; export interface IKdaProps { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts index fa77e559f97..a3b791ee4df 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/common/validateDrillToCustomUrlParams.ts @@ -34,6 +34,7 @@ import { extractDisplayFormIdentifiers, extractInsightFilterDisplayFormIdentifiers, } from "../widgets/validation/insightDrillDefinitionUtils.js"; + import { isDisplayFormRelevantToDrill } from "./isDisplayFormRelevantToDrill.js"; interface IInvalidParamsInfo { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts index 7fb0366c851..559a6462b01 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/changeSharingHandler.ts @@ -21,6 +21,7 @@ import { dashboardPermissionsActions } from "../../store/dashboardPermissions/in import { metaActions } from "../../store/meta/index.js"; import { selectDashboardRef, selectPersistedDashboard } from "../../store/meta/metaSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { loadDashboardPermissions } from "./initializeDashboardHandler/loadDashboardPermissions.js"; type DashboardSaveSharingContext = { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts index eb57ff0df20..f2da7b617da 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/loadAutomationsData.ts @@ -3,6 +3,7 @@ import { type ISettings } from "@gooddata/sdk-model"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { loadNotificationChannelsCount } from "./loadNotificationChannelsCount.js"; import { loadWorkspaceAutomationsCount } from "./loadWorkspaceAutomationsCount.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts index 958213a59f7..f94224a57e8 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/common/stateInitializers.ts @@ -69,6 +69,7 @@ import { } from "../../../types/commonTypes.js"; import { type ExtendedDashboardWidget } from "../../../types/layoutTypes.js"; import { resolveFilterDisplayForms } from "../../../utils/filterResolver.js"; + import { EmptyDashboardLayout, dashboardInitialize } from "./dashboardInitialize.js"; import { loadAvailableDisplayFormRefs } from "./loadAvailableDisplayFormRefs.js"; import { mergedMigratedAttributeFilters } from "./migratedAttributeFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts index df1369bd18c..80c0e678191 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/dashboardSummaryWorkflowWorker.ts @@ -16,6 +16,7 @@ import { listedDashboardsActions } from "../../store/listedDashboards/index.js"; import { selectBasicLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { selectTabs } from "../../store/tabs/tabsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { hasMacroInLayout, isDashboardSummaryWorkflowStatus } from "./dashboardSummaryWorkflowUtils.js"; export function newDashboardSummaryWorkflowWorker() { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts index 124bae04a3b..2f468c2c357 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/deleteDashboardHandler.ts @@ -15,6 +15,7 @@ import { selectDateFilterConfig, selectSettings } from "../../store/config/confi import { executionResultsActions } from "../../store/executionResults/index.js"; import { selectPersistedDashboard } from "../../store/meta/metaSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { actionsToInitializeNewDashboard } from "./common/stateInitializers.js"; function deleteDashboard(ctx: DashboardContext, dashboardRef: ObjRef): Promise { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts index d3a4b620f09..509f004c873 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/index.ts @@ -59,6 +59,7 @@ import { actionsToInitializeExistingDashboard, actionsToInitializeNewDashboard, } from "../common/stateInitializers.js"; + import { loadCatalog } from "./loadCatalog.js"; import { loadDashboardList } from "./loadDashboardList.js"; import { loadDashboardParameters } from "./loadDashboardParameters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts index 3b79aed169d..77fe13f300e 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/mergeDateFilterConfigs.ts @@ -9,6 +9,7 @@ import { mergeDateFilterConfigs } from "../../../../_staging/dateFilterConfig/me import { validateDateFilterConfig } from "../../../../_staging/dateFilterConfig/validation.js"; import { type InitializeDashboard } from "../../../commands/dashboard.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { onDateFilterConfigValidationError } from "./onDateFilterConfigValidationError.js"; export interface IDateFilterMergeResult { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts index 45d3e679b5b..c5b8dd90a84 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/initializeDashboardHandler/resolveDashboardConfig.ts @@ -29,6 +29,7 @@ import { } from "../../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../../types/sagas.js"; import { loadAutomationsData } from "../common/loadAutomationsData.js"; + import { onDateFilterConfigValidationError } from "./onDateFilterConfigValidationError.js"; import { sanitizeUnfinishedFeatureSettings } from "./sanitizeUnfinishedFeatureSettings.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts index cadadbc2752..dd5c362e71b 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/resetDashboardHandler.ts @@ -34,6 +34,7 @@ import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tab import { DEFAULT_TAB_ID, type ITabState } from "../../store/tabs/tabsState.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveInsights } from "../../utils/insightResolver.js"; + import { applyDefaultFilterView } from "./common/filterViews.js"; import { insightReferencesFromDashboard } from "./common/insightReferences.js"; import { getMigratedAttributeFilters } from "./common/migratedAttributeFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts index 61cb5e770a9..5e948fadf99 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/dashboard/saveAsDashboardHandler.ts @@ -55,6 +55,7 @@ import { selectCurrentUser } from "../../store/user/userSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; import { changeRenderModeHandler } from "../renderMode/changeRenderModeHandler.js"; + import { getMigratedAttributeFilters, mergedMigratedAttributeFilters, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts index 0af8e36141c..fa02bf1b460 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/crossFilteringHandler.ts @@ -40,6 +40,7 @@ import { type DashboardContext } from "../../types/commonTypes.js"; import { addAttributeFilterHandler } from "../filterContext/attributeFilter/addAttributeFilterHandler.js"; import { changeAttributeFilterSelectionHandler } from "../filterContext/attributeFilter/changeAttributeFilterSelectionHandler.js"; import { removeAttributeFiltersHandler } from "../filterContext/attributeFilter/removeAttributeFiltersHandler.js"; + import { convertIntersectionToAttributeFilters } from "./common/intersectionUtils.js"; function findMatchingVirtualFilter( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts index b81d378022b..5114944a97f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillDownHandler.ts @@ -16,6 +16,7 @@ import { import { selectSettings } from "../../store/config/configSelectors.js"; import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { removeIgnoredValuesFromDrillIntersection } from "./common/intersectionUtils.js"; export function* drillDownHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts index 65a3a8a0e28..93ff5d34c1d 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToAttributeUrlHandler.ts @@ -12,6 +12,7 @@ import { } from "../../events/drill.js"; import { selectWidgetDrills } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDrillToUrlFiltersWithResolvedValues } from "./getDrillToUrlFilters.js"; import { resolveDrillToAttributeUrl } from "./resolveDrillToAttributeUrl.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts index 838cc7082a9..65c871edda2 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToCustomUrlHandler.ts @@ -10,6 +10,7 @@ import { drillToCustomUrlResolved, } from "../../events/drill.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDrillToUrlFiltersWithResolvedValues } from "./getDrillToUrlFilters.js"; import { resolveDrillToCustomUrl } from "./resolveDrillToCustomUrl.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts index 70b1d1c017f..91ad9f8477f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToDashboardHandler.ts @@ -57,6 +57,7 @@ import { import { selectAnalyticalWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardState } from "../../store/types.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type IConversionResult, convertIntersectionToAttributeFilters, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts index da3e5d70e04..847689d53c6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightHandler.ts @@ -11,6 +11,7 @@ import { } from "../../events/drill.js"; import { selectInsightByRef, selectInsightByWidgetRef } from "../../store/insights/insightsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { addDrillFiltersToInsight } from "./drillToInsightUtils.js"; export function* drillToInsightHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts index 24d9e114531..8431491e440 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/drillToInsightUtils.ts @@ -23,6 +23,7 @@ import { import { addIntersectionFiltersToInsight } from "@gooddata/sdk-ui-ext"; import { type IDashboardDrillEvent } from "../../../types.js"; + import { removeIgnoredValuesFromDrillIntersection } from "./common/intersectionUtils.js"; import { getIncludedSourceInsightFilters, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts index 83a442a7a1a..6fc980c4b87 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/getDrillToUrlFilters.ts @@ -16,6 +16,7 @@ import { queryWidgetFilters } from "../../queries/widgets.js"; import { query } from "../../store/_infra/queryCall.js"; import { selectEnableFilterValuesResolutionInDrillEvents } from "../../store/config/configSelectors.js"; import { type DashboardContext, type FiltersInfo, type ResolvableFilter } from "../../types/commonTypes.js"; + import { resolveFilterValues } from "./common/filterValuesResolver.js"; export function* getDrillToUrlFiltersWithResolvedValues( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts index 2add190c792..3475e0aa99e 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/keyDriverAnalysisHandler.ts @@ -25,6 +25,7 @@ import { selectCatalogDateAttributes } from "../../store/catalog/catalogSelector import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { removeDateFilters, removeIgnoredWidgetFilters } from "../../utils/widgetFilters.js"; + import { convertIntersectionToAttributeFilters } from "./common/intersectionUtils.js"; export function* keyDriverAnalysisHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts index 27867bc82e6..7d819cd691a 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToAttributeUrl.ts @@ -12,6 +12,7 @@ import { import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { getElementTitle } from "./getElementTitle.js"; function getDrillToAttributeUrlIntersectionAttributeItemHeader( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts index 97a571d2db2..005f925d8ef 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts @@ -58,6 +58,7 @@ import { selectAnalyticalWidgetByRef } from "../../store/tabs/layout/layoutSelec import { type DashboardContext } from "../../types/commonTypes.js"; import { DRILL_TO_URL_PLACEHOLDER } from "../../types/drillTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { getElementTitle, getElementsSecondaryTitles } from "./getElementTitle.js"; interface IDrillToUrlPlaceholderReplacement { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts index 32b4af93260..58d4533abbe 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addAttributeFilterHandler.ts @@ -36,6 +36,7 @@ import { type PromiseFnReturnType, type PromiseReturnType } from "../../../types import { resolveDisplayFormMetadata } from "../../../utils/displayFormResolver.js"; import { validateDrillToCustomUrlParams } from "../../common/validateDrillToCustomUrlParams.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { canFilterBeAdded } from "./validation/uniqueFiltersValidation.js"; export function* addAttributeFilterHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts index 11f14c3e991..26c31d07b93 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/addTextAttributeFilterHandler.ts @@ -29,6 +29,7 @@ import { type DashboardContext } from "../../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../../types/sagas.js"; import { validateDrillToCustomUrlParams } from "../../common/validateDrillToCustomUrlParams.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./resolveDisplayFormMetadata.js"; import { canFilterBeAdded } from "./validation/uniqueFiltersValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts index 32090c9c79b..e94c8817bb4 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/changeAttributeDisplayFormHandler.ts @@ -17,6 +17,7 @@ import { selectFilterContextAttributeFilterItemByLocalId } from "../../../store/ import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./resolveDisplayFormMetadata.js"; import { validateFilterDisplayForm } from "./validation/filterDisplayFormValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts index dfcbbbf8467..4df7a10a6c3 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/replaceAttributeFilterItemSelectionHandler.ts @@ -18,6 +18,7 @@ import { selectFilterContextAttributeFilterItemByLocalId } from "../../../store/ import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged, resetCrossFiltering } from "../common.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./resolveDisplayFormMetadata.js"; export function* replaceAttributeFilterItemSelectionHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts index 80eb10081c5..b859effe209 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/attributeFilter/setAttributeFilterParentHandler.ts @@ -16,6 +16,7 @@ import { import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; + import { validateAttributeFilterParents } from "./validation/parentFiltersValidation.js"; export function* setAttributeFilterParentsHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts index 780760ca7c0..a7eed63cc80 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts @@ -84,6 +84,7 @@ import { resolveDisplayFormMetadata, } from "../../utils/displayFormResolver.js"; import { canApplyFilterTypeToTarget } from "../dashboard/common/attributeFilterSelectionTypeCompatibility.js"; + import { resolveAndRegisterDisplayFormMetadata } from "./attributeFilter/resolveDisplayFormMetadata.js"; import { canApplyDateFilter, dispatchFilterContextChanged } from "./common.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts index f37482bc08f..7f6240bc8e7 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/dateFilter/addDateFilterHandler.ts @@ -19,6 +19,7 @@ import { import { tabsActions } from "../../../store/tabs/index.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; import { dispatchFilterContextChanged } from "../common.js"; + // import { dispatchDashboardEvent } from "../../../store/_infra/eventDispatcher.js"; import { canFilterBeAdded } from "./validation/uniqueFiltersValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts index 323a7f4f3d6..77540e1f68b 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/filterContext/filterViewHandler.ts @@ -46,6 +46,7 @@ import { selectActiveTabLocalIdentifier } from "../../store/tabs/tabsSelectors.j import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; import { loadFilterViews } from "../dashboard/initializeDashboardHandler/loadFilterViews.js"; + import { resetCrossFiltering } from "./common.js"; function createFilterView( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts index b0faf8360c5..4a4e31f5fb6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/index.ts @@ -7,6 +7,7 @@ import { type DashboardCommands } from "../commands/index.js"; import { commandRejected } from "../events/general.js"; import { dispatchDashboardEvent } from "../store/_infra/eventDispatcher.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { createAlertHandler } from "./alerts/createAlertHandler.js"; import { saveAlertHandler } from "./alerts/saveAlertHandler.js"; import { changeAttributeFilterDisplayAsLabelHandler } from "./dashboard/changeAttributeFilterDisplayAsLabelHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts index 33d601b9dac..d452d2da2b0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addLayoutSectionHandler.ts @@ -27,6 +27,7 @@ import { } from "../../types/layoutTypes.js"; import { resolveIndexOfNewItem } from "../../utils/arrayOps.js"; import { addTemporaryIdentityToWidgets } from "../../utils/dashboardItemUtils.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { sanitizeHeader } from "./utils.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts index 505705cf33f..23921bc0c14 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/addSectionItemsHandler.ts @@ -29,6 +29,7 @@ import { } from "../../types/layoutTypes.js"; import { resolveIndexOfNewItem } from "../../utils/arrayOps.js"; import { addTemporaryIdentityToWidgets } from "../../utils/dashboardItemUtils.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateAndNormalizeWidgetItems, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts index f8c24e176ab..ed5b1b2d29c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/changeLayoutSectionHeaderHandler.ts @@ -16,6 +16,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { sanitizeHeader } from "./utils.js"; import { validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts index f42db45f997..4e21ecd01db 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveLayoutSectionHandler.ts @@ -19,6 +19,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveRelativeIndex } from "../../utils/arrayOps.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateSectionExists, validateSectionPlacement } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts index 2aa4c040c5d..48e1e690cfe 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemHandler.ts @@ -29,6 +29,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveIndexOfNewItem, resolveRelativeIndex } from "../../utils/arrayOps.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { buildRowContainerSanitizationActions } from "./rowContainerSanitization.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts index 2faf1e94aea..e432ee120d3 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/moveSectionItemToNewSectionHandler.ts @@ -30,6 +30,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardLayoutSection } from "../../types/layoutTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { buildRowContainerSanitizationActions } from "./rowContainerSanitization.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts index 6f4491470a5..496282203e0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeLayoutSectionHandler.ts @@ -17,6 +17,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { resolveRelativeIndex } from "../../utils/arrayOps.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts index 32297b59576..2ca691b131f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemByWidgetRefHandler.ts @@ -9,6 +9,7 @@ import { type IRemoveSectionItemByWidgetRef } from "../../commands/layout.js"; import { invalidArgumentsProvided } from "../../events/general.js"; import { selectWidgetPathByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { removeSectionItemSaga } from "./removeSectionItemHandler.js"; export function* removeSectionItemByWidgetRefHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts index 4a89661acb3..719178aa7f9 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/removeSectionItemHandler.ts @@ -21,6 +21,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardLayoutSection } from "../../types/layoutTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateItemExists, validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts index ddfe302ac1f..0da218bae63 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/replaceSectionItemHandler.ts @@ -24,6 +24,7 @@ import { selectLayout, selectScreen, selectStash } from "../../store/tabs/layout import { type DashboardContext } from "../../types/commonTypes.js"; import { type InternalDashboardItemDefinition } from "../../types/layoutTypes.js"; import { addTemporaryIdentityToWidgets } from "../../utils/dashboardItemUtils.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateAndNormalizeWidgetItems, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts index 9c64904b7cc..5331b4b8d34 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeHeightHandler.ts @@ -22,6 +22,7 @@ import { selectInsightsMap } from "../../store/insights/insightsSelectors.js"; import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { validateItemExists, validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts index 7bb6dd4b78f..4949347f1a3 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/resizeWidthHandler.ts @@ -38,6 +38,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardWidget, type IItemWithWidth } from "../../types/layoutTypes.js"; + import { resizeParentContainers } from "./containerHeightSanitization.js"; import { getUpdatedSizesOnly } from "./containerWidthSanitization.js"; import { validateItemExists, validateSectionExists } from "./validation/layoutValidation.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts index e9bcc20ea6e..a2dee794b3f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/rowContainerSanitization.ts @@ -18,6 +18,7 @@ import { type ILayoutItemPath } from "../../../types.js"; import { type IDashboardCommand } from "../../commands/base.js"; import { tabsActions } from "../../store/tabs/index.js"; import { type ExtendedDashboardWidget } from "../../types/layoutTypes.js"; + import { getChildWidgetLayoutPaths, getUpdatedSizesOnly } from "./containerWidthSanitization.js"; function findNestedRowContainers( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts index 32e50c3c22b..b657cd8aabf 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/toggleLayoutDirectionHandler.ts @@ -22,6 +22,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectLayout, selectScreen } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardWidget, type IItemWithWidth } from "../../types/layoutTypes.js"; + import { getChildWidgetLayoutPaths, getChildWidgetLayoutPathsWithMinWidths, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts index c18976d841a..7909b77bbb0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/layout/validation/itemValidation.ts @@ -46,6 +46,7 @@ import { validateDatasetForKpiWidgetDateFilter, validateDatasetForRichTextWidgetDateFilter, } from "../../widgets/validation/filterValidation.js"; + import { type IItemResolutionResult } from "./stashValidation.js"; function normalizeItems( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts index c5d67175609..4e2e674e904 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/render/renderingWorker.ts @@ -9,6 +9,7 @@ import { newDashboardEventPredicate } from "../../events/index.js"; import { renderRequested, renderResolvedWithDetails } from "../../events/render.js"; import { executedActions } from "../../store/executed/index.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type IRenderingWorkerConfiguration } from "./types.js"; function* wait(ms: number): SagaIterator { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts index 3aa2caa4485..5c6a5c71920 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/createScheduledEmailHandler.ts @@ -41,6 +41,7 @@ import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; import { prepareGeoRawExportDefinition } from "../common/prepareGeoRawExportDefinition.js"; + import { prepareCsvRawExecutionDefinition } from "./csvRawExecutionDefinition.js"; function createScheduledEmail( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts index d4c95c25d44..3e8227ac5a4 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.ts @@ -86,6 +86,7 @@ import { type PromiseFnReturnType } from "../../types/sagas.js"; import { isFilterTypeCompatibleWithSelectionType } from "../dashboard/common/attributeFilterSelectionTypeCompatibility.js"; import { changeFilterContextSelectionHandler } from "../filterContext/changeFilterContextSelectionHandler.js"; import { switchDashboardTabHandler } from "../tabs/switchDashboardTabHandler.js"; + import { loadDashboardUserAutomations, loadWorkspaceAutomationsCount } from "./loadAutomations.js"; import { loadNotificationChannels } from "./loadNotificationChannels.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts index 1c0df13fb27..215ad4356ec 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/refreshAutomationsHandlers.ts @@ -20,6 +20,7 @@ import { selectCanManageWorkspace } from "../../store/permissions/permissionsSel import { selectCurrentUser } from "../../store/user/userSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { loadDashboardUserAutomations, loadWorkspaceAutomationsCount } from "./loadAutomations.js"; export function* refreshAutomationsHandlers(ctx: DashboardContext, cmd: IRefreshAutomations): SagaIterator { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts index ce847e90a56..01b597bdb5e 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/scheduledEmail/saveScheduledEmailHandler.ts @@ -40,6 +40,7 @@ import { selectPreloadedAttributesWithReferences } from "../../store/tabs/filter import { selectWidgetByRef } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { prepareGeoRawExportDefinition } from "../common/prepareGeoRawExportDefinition.js"; + import { prepareCsvRawExecutionDefinition } from "./csvRawExecutionDefinition.js"; function saveScheduledEmail( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts index c73dfa20e83..2265584aa5c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/convertDashboardTabFromDefaultHandler.ts @@ -12,6 +12,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js"; import { DEFAULT_TAB_ID } from "../../store/tabs/tabsState.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; export function* convertDashboardTabFromDefaultHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts index ed5b05aa70f..62e6df05db2 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/createDashboardTabHandler.ts @@ -28,6 +28,7 @@ import { type ITabState } from "../../store/tabs/tabsState.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type ExtendedDashboardWidget } from "../../types/layoutTypes.js"; import { EmptyDashboardLayout } from "../dashboard/common/dashboardInitialize.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; const getTabState = ({ diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts index 73193a31848..b8d4e40acf0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/deleteDashboardTabHandler.ts @@ -16,6 +16,7 @@ import { selectAllAnalyticalWidgets } from "../../store/tabs/layout/layoutSelect import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { validateDrills } from "../common/validateDrills.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts index 6cd53a8bcd4..2ec0ca1269f 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/tabs/startRenamingDashboardTabHandler.ts @@ -10,6 +10,7 @@ import { dispatchDashboardEvent } from "../../store/_infra/eventDispatcher.js"; import { tabsActions } from "../../store/tabs/index.js"; import { selectActiveTabLocalIdentifier, selectTabs } from "../../store/tabs/tabsSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { switchDashboardTabHandler } from "./switchDashboardTabHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts index 9f9d08f7410..fa990634b49 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/users/loadAllUsersHandler.ts @@ -10,6 +10,7 @@ import { type ILoadAllWorkspaceUsers } from "../../commands/users.js"; import { usersActions } from "../../store/users/index.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type PromiseFnReturnType } from "../../types/sagas.js"; + import { loadWorkspaceUsers } from "./loadWorkspaceUsers.js"; export function* loadAllWorkspaceUsersHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts index ef5f4ca9f56..859104d133a 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addDrillDownForInsightWidgetHandler.ts @@ -16,6 +16,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { existBlacklistHierarchyPredicate } from "../../utils/attributeHierarchyUtils.js"; + import { hierarchyToDrillDownReference } from "./common/drillDown.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts index 538d76519be..be58cd275bc 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/addVisualizationToSwitcherWidgetHandler.ts @@ -15,6 +15,7 @@ import { insightsActions } from "../../store/insights/index.js"; import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingVisualizationSwitcherWidget } from "./validation/widgetValidations.js"; export function* addVisualizationToSwticherWidgetContentHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts index 722a549cf73..c6b97f42110 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetDescriptionHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetDescriptionHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts index 272cbdb0ae9..2b3e3b00c1c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetFilterSettingsHandler.ts @@ -18,6 +18,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type FilterValidators, processFilterOp } from "./common/filterOperations.js"; import { toDashboardFilterReferences } from "./common/filterReferences.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts index 2d70267db91..cc023fdc17c 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetHeaderHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetHeaderHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts index 8ed9076d09a..b817ea69f68 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetIgnoreCrossFilteringHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetIgnoreCrossFilteringHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts index c574623325a..b697272d023 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetInsightHandler.ts @@ -34,6 +34,7 @@ import { uiActions } from "../../store/ui/index.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { shouldRevalidateDrillsAfterInsightChange } from "../common/drillRevalidationUtils.js"; import { validateDrills } from "../common/validateDrills.js"; + import { loadInsight } from "./common/loadInsight.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts index 3dc6fcc8bfc..89546ae8acf 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisConfigurationHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetVisConfigurationHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts index f01931f457d..80d67764e45 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeInsightWidgetVisPropertiesHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* changeInsightWidgetVisPropertiesHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts index 4cb66f4235e..3c714027e83 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetComparisonHandler.ts @@ -10,6 +10,7 @@ import { type IDashboardKpiWidgetComparisonChanged, kpiWidgetComparisonChanged } import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetComparisonHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts index bad90ec18fe..ee1ba0fde33 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetConfigurationHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetConfigurationHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts index 861cc14a562..6940d01b7f6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetDescriptionHandler.ts @@ -8,6 +8,7 @@ import { type IDashboardKpiWidgetDescriptionChanged, kpiWidgetDescriptionChanged import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetDescriptionHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts index 8aa8afe9042..12701fc2574 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetFilterSettingsHandler.ts @@ -18,6 +18,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type FilterValidators, processFilterOp } from "./common/filterOperations.js"; import { validateAttributeFiltersToIgnore, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts index 605ed8d89b4..05774f8d5f7 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetHeaderHandler.ts @@ -8,6 +8,7 @@ import { type IDashboardKpiWidgetHeaderChanged, kpiWidgetHeaderChanged } from ". import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* changeKpiWidgetHeaderHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts index c8299cf6046..b96f080e0a5 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeKpiWidgetMeasureHandler.ts @@ -24,6 +24,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { type IWidgetHeader, isWidgetHeader } from "../../types/widgetTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; function* validateMeasure( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts index 3c596358749..c996aa91e37 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetContentHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingRichTextWidget } from "./validation/widgetValidations.js"; export function* changeRichTextWidgetContentHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts index 038dc3ae984..fe0ab847b81 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/changeRichTextWidgetFilterSettingsHandler.ts @@ -18,6 +18,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { type FilterValidators, processFilterOp } from "./common/filterOperations.js"; import { toDashboardFilterReferences } from "./common/filterReferences.js"; import { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts index e965aecc03c..b763953c8a6 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillDownForInsightWidgetHandler.ts @@ -16,6 +16,7 @@ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; import { existBlacklistHierarchyPredicate } from "../../utils/attributeHierarchyUtils.js"; + import { hierarchyToDrillDownReference } from "./common/drillDown.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts index e2936bd18b9..bf74f4e72e4 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/modifyDrillsForInsightWidgetHandler.ts @@ -15,6 +15,7 @@ import { selectWidgetByRef, selectWidgetsMap } from "../../store/tabs/layout/lay import { type DashboardContext } from "../../types/commonTypes.js"; import { validateDrills } from "../common/validateDrills.js"; import { validateDrillToCustomUrlParams } from "../common/validateDrillToCustomUrlParams.js"; + import { existsDrillDefinitionInArray, getDrillDefinitionFromArray, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts index 33065cc2d00..a678608d33a 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/refreshInsightWidgetHandler.ts @@ -12,6 +12,7 @@ import { insightsActions } from "../../store/insights/index.js"; import { selectInsightByRef } from "../../store/insights/insightsSelectors.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { loadInsight } from "./common/loadInsight.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts index 2bd7ddecd33..0759c9d6e79 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillDownForInsightWidgetHandler.ts @@ -12,6 +12,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* removeDrillDownForInsightWidgetHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts index c2db081080c..9e8d3e2f7f0 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillForKpiWidgetHandler.ts @@ -8,6 +8,7 @@ import { type IDashboardKpiWidgetDrillRemoved, kpiWidgetDrillRemoved } from "../ import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; export function* removeDrillForKpiWidgetHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts index 99d0ae2aeef..9ccd32e7680 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillToUrlForInsightWidgetHandler.ts @@ -6,6 +6,7 @@ import { type IRemoveDrillToUrlForInsightWidget } from "../../commands/insight.j import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; export function* removeDrillToUrlForInsightWidgetHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts index 92e52d392b0..20cd787a562 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/removeDrillsForInsightWidgetHandler.ts @@ -13,6 +13,7 @@ import { selectWidgetByRef, selectWidgetsMap } from "../../store/tabs/layout/lay import { type DashboardContext } from "../../types/commonTypes.js"; import { validateDrills } from "../common/validateDrills.js"; import { validateDrillToCustomUrlParams } from "../common/validateDrillToCustomUrlParams.js"; + import { existsDrillDefinitionInArray } from "./validation/insightDrillDefinitionUtils.js"; import { validateRemoveDrillsByLocalIdentifier } from "./validation/removeDrillsSelectorValidation.js"; import { validateExistingInsightWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts index 28741b03cbf..d55a54ee7db 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/setDrillForKpiWidgetHandler.ts @@ -10,6 +10,7 @@ import { type IDashboardKpiWidgetDrillSet, kpiWidgetDrillSet } from "../../event import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateKpiDrill } from "./validation/kpiDrillValidation.js"; import { validateExistingKpiWidget } from "./validation/widgetValidations.js"; diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts index 3b5dfe86111..9741b480c21 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/updateVisualizationsFromSwitcherWidgetHandler.ts @@ -11,6 +11,7 @@ import { import { tabsActions } from "../../store/tabs/index.js"; import { selectWidgetsMap } from "../../store/tabs/layout/layoutSelectors.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { validateExistingVisualizationSwitcherWidget } from "./validation/widgetValidations.js"; export function* updateVisualizationsFromSwticherWidgetContentHandler( diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts index 03f0e2ad5df..3c35c367ad1 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/insightDrillDefinitionValidation.ts @@ -36,6 +36,7 @@ import { resolveDisplayFormMetadata, } from "../../../utils/displayFormResolver.js"; import { type IInsightResolutionResult, resolveInsights } from "../../../utils/insightResolver.js"; + import { type IInsightDrillDefinitionValidationData, extractDisplayFormIdentifiers, diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts index 55a77c6c43f..a8b3f5ca4fc 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/kpiDrillValidation.ts @@ -5,6 +5,7 @@ import { type KpiDrillDefinition } from "@gooddata/sdk-model"; import { type IDashboardCommand } from "../../../commands/base.js"; import { invalidArgumentsProvided } from "../../../events/general.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { validateKpiDrillTarget } from "./kpiDrillValidationUtils.js"; export function validateKpiDrill(drill: KpiDrillDefinition, ctx: DashboardContext, cmd: IDashboardCommand) { diff --git a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts index 44b91a974f2..43087b6478d 100644 --- a/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts +++ b/libs/sdk-ui-dashboard/src/model/commandHandlers/widgets/validation/removeDrillsSelectorValidation.ts @@ -6,6 +6,7 @@ import { type IDashboardCommand } from "../../../commands/base.js"; import { type RemoveDrillsSelector, isAllDrillSelector } from "../../../commands/insight.js"; import { invalidArgumentsProvided } from "../../../events/general.js"; import { type DashboardContext } from "../../../types/commonTypes.js"; + import { validateDrillDefinitionByLocalIdentifier } from "./insightDrillDefinitionUtils.js"; export function validateRemoveDrillsByLocalIdentifier( diff --git a/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts b/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts index e3fd93ab5db..e47e40845d2 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/dashboard.ts @@ -13,6 +13,7 @@ import { import { type ISharingApplyPayload } from "@gooddata/sdk-ui-kit"; import { type DashboardConfig } from "../types/commonTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/density.ts b/libs/sdk-ui-dashboard/src/model/commands/density.ts index d874776855b..27da1f77bf5 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/density.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/density.ts @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { type DashboardDensity } from "../../types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/drill.ts b/libs/sdk-ui-dashboard/src/model/commands/drill.ts index a30c76ae135..d1d5eff21e8 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/drill.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/drill.ts @@ -19,6 +19,7 @@ import { type IDrillDownDefinition, } from "../../types.js"; import { type IDashboardKeyDriverCombinationItem } from "../events/drill.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/events.ts b/libs/sdk-ui-dashboard/src/model/commands/events.ts index a89120a9f4d..2601cd29a39 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/events.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/events.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type DashboardEventBody, type ICustomDashboardEvent, type IDashboardEvent } from "../events/base.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts b/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts index b4186b4db4f..4b42e4a09ff 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/executionResults.ts @@ -5,6 +5,7 @@ import { type IResultWarning, type ObjRef, serializeObjRef } from "@gooddata/sdk import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { type IExecutionResultEnvelope } from "../store/executionResults/types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/filters.ts b/libs/sdk-ui-dashboard/src/model/commands/filters.ts index 73c6e36a500..ed4f29633ca 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/filters.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/filters.ts @@ -35,6 +35,7 @@ import { } from "@gooddata/sdk-model"; import { type IDashboardFilter } from "../../types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/insight.ts b/libs/sdk-ui-dashboard/src/model/commands/insight.ts index 221407f85db..49beb6e9f53 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/insight.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/insight.ts @@ -20,6 +20,7 @@ import { type IWidgetFilterOperation, type IWidgetHeader, } from "../types/widgetTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/kpi.ts b/libs/sdk-ui-dashboard/src/model/commands/kpi.ts index bcce1367eb0..e7b915569a3 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/kpi.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/kpi.ts @@ -14,6 +14,7 @@ import { type IWidgetFilterOperation, type IWidgetHeader, } from "../types/widgetTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/layout.ts b/libs/sdk-ui-dashboard/src/model/commands/layout.ts index b74fe49d415..1b50df429c8 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/layout.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/layout.ts @@ -13,6 +13,7 @@ import { type RelativeIndex, type StashedDashboardItemsId, } from "../types/layoutTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts b/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts index bd01c0d8cd0..e02f7e62a3d 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/renderMode.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type RenderMode } from "../../types.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/commands/richText.ts b/libs/sdk-ui-dashboard/src/model/commands/richText.ts index 30bb7ab61f8..14c07d5aec7 100644 --- a/libs/sdk-ui-dashboard/src/model/commands/richText.ts +++ b/libs/sdk-ui-dashboard/src/model/commands/richText.ts @@ -3,6 +3,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IWidgetFilterOperation } from "../types/widgetTypes.js"; + import { type IDashboardCommand } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts b/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts index 15726d89082..070a27092d5 100644 --- a/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts +++ b/libs/sdk-ui-dashboard/src/model/eventHandlers/drillToSameDashboardHandlerFactory.ts @@ -5,6 +5,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { changeFilterContextSelectionByParams } from "../commands/filters.js"; import { type IDashboardDrillToDashboardResolved } from "../events/drill.js"; import { newDashboardEventPredicate } from "../events/index.js"; + import { type DashboardEventHandler } from "./eventHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/events/alerts.ts b/libs/sdk-ui-dashboard/src/model/events/alerts.ts index 4a0b15c3421..2ae75f852f2 100644 --- a/libs/sdk-ui-dashboard/src/model/events/alerts.ts +++ b/libs/sdk-ui-dashboard/src/model/events/alerts.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/dashboard.ts b/libs/sdk-ui-dashboard/src/model/events/dashboard.ts index 8f269963190..928fb0753f2 100644 --- a/libs/sdk-ui-dashboard/src/model/events/dashboard.ts +++ b/libs/sdk-ui-dashboard/src/model/events/dashboard.ts @@ -5,6 +5,7 @@ import { type IDashboard, type IInsight, type IWorkspacePermissions, type ObjRef import { type DateFilterValidationResult, type ISharingProperties } from "../../types.js"; import { type DashboardConfig, type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/drill.ts b/libs/sdk-ui-dashboard/src/model/events/drill.ts index 04c4f203586..eae2ef25fe7 100644 --- a/libs/sdk-ui-dashboard/src/model/events/drill.ts +++ b/libs/sdk-ui-dashboard/src/model/events/drill.ts @@ -25,6 +25,7 @@ import { type IDrillDownDefinition, } from "../../types.js"; import { type DashboardContext, type FiltersInfo } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts b/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts index 1aeb566d755..65ccdbcf2d7 100644 --- a/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts +++ b/libs/sdk-ui-dashboard/src/model/events/drillTargets.ts @@ -4,6 +4,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IAvailableDrillTargets } from "@gooddata/sdk-ui"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/filters.ts b/libs/sdk-ui-dashboard/src/model/events/filters.ts index fa74b3d80c1..6179a7c147d 100644 --- a/libs/sdk-ui-dashboard/src/model/events/filters.ts +++ b/libs/sdk-ui-dashboard/src/model/events/filters.ts @@ -14,6 +14,7 @@ import { } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type DashboardEventBody, type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/general.ts b/libs/sdk-ui-dashboard/src/model/events/general.ts index 8d2f160181f..b75a54d16a6 100644 --- a/libs/sdk-ui-dashboard/src/model/events/general.ts +++ b/libs/sdk-ui-dashboard/src/model/events/general.ts @@ -3,6 +3,7 @@ import { type IDashboardCommand } from "../commands/base.js"; import { type IDashboardQuery } from "../queries/base.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/insight.ts b/libs/sdk-ui-dashboard/src/model/events/insight.ts index 7076005b8e0..151338eb72c 100644 --- a/libs/sdk-ui-dashboard/src/model/events/insight.ts +++ b/libs/sdk-ui-dashboard/src/model/events/insight.ts @@ -18,6 +18,7 @@ import { import { type DashboardContext } from "../types/commonTypes.js"; import { type IExportConfig } from "../types/exportTypes.js"; import { type IWidgetDescription, type IWidgetHeader } from "../types/widgetTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/kpi.ts b/libs/sdk-ui-dashboard/src/model/events/kpi.ts index 4f490475775..cf27320b459 100644 --- a/libs/sdk-ui-dashboard/src/model/events/kpi.ts +++ b/libs/sdk-ui-dashboard/src/model/events/kpi.ts @@ -14,6 +14,7 @@ import { import { type DashboardContext } from "../types/commonTypes.js"; import { type IWidgetDescription, type IWidgetHeader } from "../types/widgetTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/layout.ts b/libs/sdk-ui-dashboard/src/model/events/layout.ts index add957ba398..10ffadaf33c 100644 --- a/libs/sdk-ui-dashboard/src/model/events/layout.ts +++ b/libs/sdk-ui-dashboard/src/model/events/layout.ts @@ -15,6 +15,7 @@ import { type ExtendedDashboardWidget, type StashedDashboardItemsId, } from "../types/layoutTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/render.ts b/libs/sdk-ui-dashboard/src/model/events/render.ts index 492d70a57a6..8141652620e 100644 --- a/libs/sdk-ui-dashboard/src/model/events/render.ts +++ b/libs/sdk-ui-dashboard/src/model/events/render.ts @@ -2,6 +2,7 @@ import { type IRenderingWorkerConfiguration } from "../commandHandlers/render/types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/renderMode.ts b/libs/sdk-ui-dashboard/src/model/events/renderMode.ts index f444b72e373..d780132529c 100644 --- a/libs/sdk-ui-dashboard/src/model/events/renderMode.ts +++ b/libs/sdk-ui-dashboard/src/model/events/renderMode.ts @@ -2,6 +2,7 @@ import { type RenderMode } from "../../types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/richText.ts b/libs/sdk-ui-dashboard/src/model/events/richText.ts index 8873eb7bf11..33c9543bb68 100644 --- a/libs/sdk-ui-dashboard/src/model/events/richText.ts +++ b/libs/sdk-ui-dashboard/src/model/events/richText.ts @@ -8,6 +8,7 @@ import { } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts b/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts index b1ba07014ce..76dece97909 100644 --- a/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts +++ b/libs/sdk-ui-dashboard/src/model/events/scheduledEmail.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts b/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts index 85cda39625d..b5550f9c528 100644 --- a/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts +++ b/libs/sdk-ui-dashboard/src/model/events/showWidgetAsTable.ts @@ -3,6 +3,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/events/tabs.ts b/libs/sdk-ui-dashboard/src/model/events/tabs.ts index 788ae5a59b3..d30c49a7a96 100644 --- a/libs/sdk-ui-dashboard/src/model/events/tabs.ts +++ b/libs/sdk-ui-dashboard/src/model/events/tabs.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts b/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts index 2859cd5f2cc..2bf7b19dcf3 100644 --- a/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts +++ b/libs/sdk-ui-dashboard/src/model/events/visualizationSwitcher.ts @@ -3,6 +3,7 @@ import { type IInsightWidget, type ObjRef } from "@gooddata/sdk-model"; import { type DashboardContext } from "../types/commonTypes.js"; + import { type IDashboardEvent } from "./base.js"; import { eventGuard } from "./util.js"; diff --git a/libs/sdk-ui-dashboard/src/model/queries/insights.ts b/libs/sdk-ui-dashboard/src/model/queries/insights.ts index 0216476b94a..0f4f6e79712 100644 --- a/libs/sdk-ui-dashboard/src/model/queries/insights.ts +++ b/libs/sdk-ui-dashboard/src/model/queries/insights.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-model"; import { newInsight } from "../../_staging/insight/insightBuilder.js"; + import { type IDashboardQuery } from "./base.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts b/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts index b9ee73ab0d6..5aa7a916086 100644 --- a/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts +++ b/libs/sdk-ui-dashboard/src/model/queryServices/queryInsightDateDatasets.ts @@ -43,6 +43,7 @@ import { import { selectInsightByRef } from "../store/insights/insightsSelectors.js"; import { type DashboardState } from "../store/types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { loadDateDatasetsForInsight } from "./loadAvailableDateDatasets.js"; export const QueryDateDatasetsForInsightService = createCachedQueryService( diff --git a/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts b/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts index 6819181e80a..0573ee94798 100644 --- a/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts +++ b/libs/sdk-ui-dashboard/src/model/queryServices/queryMeasureDateDatasets.ts @@ -21,6 +21,7 @@ import { type QueryCacheEntryResult, createCachedQueryService } from "../store/_ import { selectAllCatalogMeasuresMap } from "../store/catalog/catalogSelectors.js"; import { type DashboardState } from "../store/types.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { loadDateDatasetsForInsight } from "./loadAvailableDateDatasets.js"; export const QueryDateDatasetsForMeasureService = createCachedQueryService( diff --git a/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx b/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx index 1a17c5468ad..0a7ceb442b8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx +++ b/libs/sdk-ui-dashboard/src/model/react/DashboardStoreProvider.tsx @@ -12,6 +12,7 @@ import { } from "react-redux"; import { type DashboardState } from "../store/types.js"; + import { DashboardEventsProvider } from "./DashboardEventsContext.js"; import { type IDashboardStoreProviderProps } from "./types.js"; import { useInitializeDashboardStore } from "./useInitializeDashboardStore.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts index 40df5504336..86dcf7d22bb 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useDashboardScheduledExportFilters.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject } from "@gooddata/sdk-model"; import { getAutomationDashboardFilters } from "../../../_staging/automation/index.js"; + import { useAutomationAvailableDashboardFilters } from "./useAutomationAvailableDashboardFilters.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts index 1bcf58ef03c..a1505cbe09a 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useScheduledExportFilters.ts @@ -3,6 +3,7 @@ import { type IAutomationMetadataObject, type IInsight } from "@gooddata/sdk-model"; import { type FilterableDashboardWidget } from "../../types/layoutTypes.js"; + import { useDashboardScheduledExportFilters } from "./useDashboardScheduledExportFilters.js"; import { useWidgetScheduledExportFilters } from "./useWidgetScheduledExportFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts index 3533c19ea07..43abfe60ebc 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetAlertFilters.ts @@ -11,6 +11,7 @@ import { type FilterableDashboardWidget } from "../../types/layoutTypes.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { type QueryProcessingState } from "../useDashboardQueryProcessing.js"; import { useWidgetFilters } from "../useWidgetFilters.js"; + import { sanitizeWidgetFilters } from "./shared.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts index 284ed782f98..c1439f353dd 100644 --- a/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/filtering/useWidgetScheduledExportFilters.ts @@ -12,6 +12,7 @@ import { type FilterableDashboardWidget } from "../../types/layoutTypes.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { type QueryProcessingState } from "../useDashboardQueryProcessing.js"; import { useWidgetFilters } from "../useWidgetFilters.js"; + import { sanitizeWidgetFilters } from "./shared.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts index ee1c59349e7..cc0cdfb27e5 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmails.ts @@ -2,6 +2,7 @@ import { selectIsScheduleEmailDialogContext } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; + import { useDashboardScheduledEmailsData } from "./useDashboardScheduledEmailsData.js"; import { useDashboardScheduledEmailsDialog } from "./useDashboardScheduledEmailsDialog.js"; import { useDashboardScheduledEmailsManagementDialog } from "./useDashboardScheduledEmailsManagementDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts index 4f0dd0b504f..be74dca3318 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsDialog.ts @@ -22,6 +22,7 @@ import { selectWidgets } from "../../store/tabs/layout/layoutSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; import { useDashboardUserInteraction } from "../useDashboardUserInteraction.js"; + import { useDashboardScheduledEmailsCommands } from "./useDashboardScheduledEmailsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts index debcf57a427..82fbd672416 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDasboardScheduledEmails/useDashboardScheduledEmailsManagementDialog.ts @@ -11,6 +11,7 @@ import { selectDashboardRef } from "../../store/meta/metaSelectors.js"; import { selectIsScheduleEmailManagementDialogContext } from "../../store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; + import { useDashboardScheduledEmailsCommands } from "./useDashboardScheduledEmailsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx index 14d6754e759..f65b8dc83c8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlerts.tsx @@ -2,6 +2,7 @@ import { selectAlertingDialogContext } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; + import { useDashboardAlertsData } from "./useDashboardAlertsData.js"; import { useDashboardAlertsDialog } from "./useDashboardAlertsDialog.js"; import { useDashboardAlertsManagementDialog } from "./useDashboardAlertsManagementDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts index 81413a2da0f..617f637bb76 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsDialog.ts @@ -19,6 +19,7 @@ import { selectWidgets } from "../../store/tabs/layout/layoutSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; import { useDashboardUserInteraction } from "../useDashboardUserInteraction.js"; + import { useDashboardAlertsCommands } from "./useDashboardAlertsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts index e71246e33f9..9a41546fb81 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlerting/useDashboardAlertsManagementDialog.ts @@ -12,6 +12,7 @@ import { selectDashboardRef } from "../../store/meta/metaSelectors.js"; import { selectIsAlertingManagementDialogContext } from "../../store/ui/uiSelectors.js"; import { useDashboardSelector } from "../DashboardStoreProvider.js"; import { useDashboardAutomations } from "../useDashboardAutomations/useDashboardAutomations.js"; + import { useDashboardAlertsCommands } from "./useDashboardAlertsCommands.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts index 6c05415f662..024c73686f8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAlertsOld.ts @@ -25,6 +25,7 @@ import { selectIsAlertsManagementDialogOpen, selectMenuButtonItemsVisibility, } from "../store/ui/uiSelectors.js"; + import { useDashboardDispatch, useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts index 8a8ec5581bb..5a230fa7ae7 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardAsyncRender.ts @@ -3,6 +3,7 @@ import { useCallback } from "react"; import { requestAsyncRender, resolveAsyncRender } from "../commands/render.js"; + import { useDispatchDashboardCommand } from "./useDispatchDashboardCommand.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts index 7ecf081df8a..f30696d17e2 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommand.ts @@ -8,6 +8,7 @@ import { type DashboardCommands } from "../commands/index.js"; import { type DashboardEventHandler } from "../eventHandlers/eventHandler.js"; import { type DashboardEventType } from "../events/base.js"; import { type DashboardEvents } from "../events/index.js"; + import { useDashboardEventsContext } from "./DashboardEventsContext.js"; import { useDashboardDispatch } from "./DashboardStoreProvider.js"; diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts index 62c8253df90..a81238a71a8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardCommandProcessing.ts @@ -5,6 +5,7 @@ import { useState } from "react"; import { type DashboardCommands } from "../commands/index.js"; import { type DashboardEventType } from "../events/base.js"; import { type DashboardEvents } from "../events/index.js"; + import { useDashboardCommand } from "./useDashboardCommand.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts index 0920ef4e9d3..73c77913223 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardEventDispatch.ts @@ -11,6 +11,7 @@ import { isDashboardEventOrCustomDashboardEvent, } from "../events/base.js"; import { type DashboardEvents } from "../events/index.js"; + import { useDashboardDispatch } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts index 348e3d5bf4d..be97f9ac080 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardQueryProcessing.ts @@ -14,6 +14,7 @@ import { } from "../events/general.js"; import { type DashboardQueries } from "../queries/index.js"; import { queryAndWaitFor } from "../store/_infra/queryAndWaitFor.js"; + import { useDashboardDispatch } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts b/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts index a328785bf88..1093bf14e65 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDashboardUserInteraction.ts @@ -14,6 +14,7 @@ import { type VisualizationSwitcherInteractionType, userInteractionTriggered, } from "../events/userInteraction.js"; + import { useDashboardEventDispatch } from "./useDashboardEventDispatch.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts b/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts index cff95b8d74f..8e009f859f8 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useDispatchDashboardCommand.ts @@ -3,6 +3,7 @@ import { useCallback } from "react"; import { type DashboardCommands } from "../commands/index.js"; + import { useDashboardDispatch } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts b/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts index e031b586e04..ae78a74a03c 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useExportTemplates.ts @@ -4,6 +4,7 @@ import { type IExportTemplate } from "@gooddata/sdk-model"; import { useBackendStrict, useCancelablePromise } from "@gooddata/sdk-ui"; import { selectEnableExportTemplateSelection } from "../store/config/configSelectors.js"; + import { useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts b/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts index dcec050971c..7ef5334ea1f 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useInitializeDashboardStore.ts @@ -22,6 +22,7 @@ import { dashboardDeinitialized } from "../events/dashboard.js"; import { type IReduxedDashboardStore, createDashboardStore } from "../store/dashboardStore.js"; import { getWidgetsOfType } from "../store/tabs/layout/layoutUtils.js"; import type { DashboardConfig } from "../types/commonTypes.js"; + import { type IDashboardStoreProviderProps } from "./types.js"; type InitProps = { diff --git a/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts b/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts index 30b13a0e003..9895ad6dccf 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useWidgetExecutionsHandler.ts @@ -11,6 +11,7 @@ import { setExecutionResultError, setExecutionResultLoading, } from "../commands/executionResults.js"; + import { useDispatchDashboardCommand } from "./useDispatchDashboardCommand.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts b/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts index b1c9839d194..f0adc7c12d9 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useWidgetFilters.ts @@ -28,6 +28,7 @@ import { selectCrossFilteringFiltersLocalIdentifiersByWidgetRef } from "../store import { selectIsInEditMode } from "../store/renderMode/renderModeSelectors.js"; import { selectFilterContextFilters } from "../store/tabs/filterContext/filterContextSelectors.js"; import { type FilterableDashboardWidget } from "../types/layoutTypes.js"; + import { useDashboardSelector } from "./DashboardStoreProvider.js"; import { type QueryProcessingState, diff --git a/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx b/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx index 8c7bc76590e..8baa38c5ac4 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx +++ b/libs/sdk-ui-dashboard/src/model/react/useWidgetSelection.tsx @@ -7,6 +7,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { selectIsInEditMode } from "../store/renderMode/renderModeSelectors.js"; import { uiActions } from "../store/ui/index.js"; import { selectConfigurationPanelOpened, selectSelectedWidgetRef } from "../store/ui/uiSelectors.js"; + import { useDashboardDispatch, useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts b/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts index cbf1807e1c7..580afae1627 100644 --- a/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts +++ b/libs/sdk-ui-dashboard/src/model/react/useWorkspaceUsers.ts @@ -4,6 +4,7 @@ import { useEffect } from "react"; import { loadAllWorkspaceUsers } from "../commands/users.js"; import { selectErrorUsers, selectUsers, selectUsersLoadingStatus } from "../store/users/usersSelectors.js"; + import { useDashboardDispatch, useDashboardSelector } from "./DashboardStoreProvider.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts index 3d927254ca3..496ca571f63 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/dispatchAndWaitFor.ts @@ -2,6 +2,7 @@ import { type DashboardCommands } from "../../commands/index.js"; import { type DashboardDispatch } from "../types.js"; + import { commandEnvelopeWithPromise } from "./rootCommandHandler.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts index c2d612ad349..3918ca82e12 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/queryAndWaitFor.ts @@ -2,6 +2,7 @@ import { type DashboardQueries } from "../../queries/index.js"; import { type DashboardDispatch } from "../types.js"; + import { queryEnvelopeWithPromise } from "./queryProcessing.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts index e5df3124ee8..1056dfc2ff5 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/queryCall.ts @@ -4,6 +4,7 @@ import { type SagaIterator } from "redux-saga"; import { call, put } from "redux-saga/effects"; import { type IDashboardQuery } from "../../queries/base.js"; + import { queryEnvelopeWithPromise } from "./queryProcessing.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts index 7b4f4770a1f..d16bbb53576 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/queryProcessing.ts @@ -14,6 +14,7 @@ import { } from "../../events/general.js"; import { type IDashboardQuery } from "../../queries/base.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDashboardContext } from "./contexts.js"; import { dispatchDashboardEvent } from "./eventDispatcher.js"; import { type IDashboardQueryService } from "./queryService.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts b/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts index 553ae6ae54d..50e03d4e112 100644 --- a/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts +++ b/libs/sdk-ui-dashboard/src/model/store/_infra/rootCommandHandler.ts @@ -14,6 +14,7 @@ import { isDashboardCommandFailed, } from "../../events/general.js"; import { type DashboardContext } from "../../types/commonTypes.js"; + import { getDashboardContext } from "./contexts.js"; import { dispatchDashboardEvent } from "./eventDispatcher.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts index ff3e735da09..490ed1511dc 100644 --- a/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/accessibleDashboards/accessibleDashboardsSelectors.ts @@ -6,6 +6,7 @@ import { type IListedDashboard } from "@gooddata/sdk-model"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { accessibleDashboardsEntityAdapter } from "./accessibleDashboardsEntityAdapter.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts index dd85f87653e..eb61281b097 100644 --- a/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/catalog/catalogSelectors.ts @@ -39,6 +39,7 @@ import { selectSupportsAttributeHierarchies, } from "../backendCapabilities/backendCapabilitiesSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type CatalogParametersStatus } from "./catalogState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts index 31405938930..2233a4ad460 100644 --- a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts +++ b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogReducers.test.ts @@ -8,6 +8,7 @@ import { type ICatalogAttributeHierarchy, type IParameterMetadataObject, idRef } import { catalogReducers } from "../catalogReducers.js"; import { type CatalogState } from "../catalogState.js"; import { catalogActions } from "../index.js"; + import { catalogAttributeHierarchies } from "./catalog.fixture.js"; describe("catalogReducers", () => { diff --git a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts index 604746af1e9..c4dcf93ba73 100644 --- a/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts +++ b/libs/sdk-ui-dashboard/src/model/store/catalog/tests/catalogSelectors.test.ts @@ -11,6 +11,7 @@ import { selectCatalogParametersStatus, } from "../catalogSelectors.js"; import { type ICatalogParametersState } from "../catalogState.js"; + import { catalogDateDatasets, defaultDateHierarchyTemplates } from "./catalogSelectors.fixture.js"; describe("catalogSelectors", () => { diff --git a/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts b/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts index 191a7ac2b2d..1ade00aadb3 100644 --- a/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/config/configReducers.ts @@ -3,6 +3,7 @@ import { type Action, type CaseReducer, type PayloadAction } from "@reduxjs/toolkit"; import { type ResolvedDashboardConfig } from "../../types/commonTypes.js"; + import { type ConfigState } from "./configState.js"; type ConfigReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts b/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts index 4efe40c5b2e..4bada4e3271 100644 --- a/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts +++ b/libs/sdk-ui-dashboard/src/model/store/dashboardStore.ts @@ -22,6 +22,7 @@ import { type DashboardEventHandler } from "../eventHandlers/eventHandler.js"; import { type DashboardEventType } from "../events/base.js"; import { AllQueryServices } from "../queryServices/index.js"; import { type DashboardContext, type PrivateDashboardContext } from "../types/commonTypes.js"; + import { getDashboardContext } from "./_infra/contexts.js"; import { createQueryProcessingModule } from "./_infra/queryProcessing.js"; import { type IDashboardQueryService } from "./_infra/queryService.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts index 00a2f793164..3e8d5480056 100644 --- a/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/dashboardSummaryWorkflow/dashboardSummaryWorkflowSelectors.ts @@ -4,6 +4,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { selectDashboardId } from "../meta/metaSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type DashboardSummaryWorkflowInfo } from "./dashboardSummaryWorkflowState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts index 487f9d62153..ff364d788de 100644 --- a/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/drill/drillSelectors.ts @@ -8,6 +8,7 @@ import { type ExplicitDrill, type IDrillEventIntersectionElement } from "@goodda import { createMemoizedSelector } from "../_infra/selectors.js"; import { selectActiveOrDefaultTabLocalIdentifier } from "../tabs/tabsSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type ICrossFilteringItem } from "./types.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts index 5cf427b5f37..d513ed78f86 100644 --- a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts +++ b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsEntityAdapter.ts @@ -5,6 +5,7 @@ import { type EntityId, createEntityAdapter } from "@reduxjs/toolkit"; import { type ObjRef, serializeObjRef } from "@gooddata/sdk-model"; import { objRef } from "../../utils/objRef.js"; + import { type IDrillTargets } from "./drillTargetsTypes.js"; export const drillTargetsAdapter = createEntityAdapter({ diff --git a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts index d6a6341c66b..12df93748b9 100644 --- a/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/drillTargets/drillTargetsSelectors.ts @@ -7,6 +7,7 @@ import { type ObjRef, serializeObjRef } from "@gooddata/sdk-model"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { drillTargetsAdapter } from "./drillTargetsEntityAdapter.js"; import { type IDrillTargets } from "./drillTargetsTypes.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts b/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts index c0aef9ac0b2..19cce7c9bce 100644 --- a/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/entitlements/entitlementsReducers.ts @@ -3,6 +3,7 @@ import { type Action, type CaseReducer, type PayloadAction } from "@reduxjs/toolkit"; import { type ResolvedEntitlements } from "../../types/commonTypes.js"; + import { type IEntitlementsState } from "./entitlementsState.js"; type EntitlementsReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts index 016d08a32cf..318079c07be 100644 --- a/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/executed/executedSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type IExecutedState } from "./executedState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts index 34cfa15fd52..18481b79f1a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/executionResults/executionResultsSelectors.ts @@ -17,6 +17,7 @@ import { selectSettings } from "../config/configSelectors.js"; import { selectCanExecuteRaw, selectCanExportTabular } from "../permissions/permissionsSelectors.js"; import { selectAnalyticalWidgetByRef } from "../tabs/layout/layoutSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { executionResultsAdapter } from "./executionResultsEntityAdapter.js"; import { type IExecutionResultEnvelope } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts index 6326d780da4..2ac424b45e2 100644 --- a/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/inaccessibleDashboards/inaccessibleDashboardsSelectors.ts @@ -5,6 +5,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type IInaccessibleDashboard } from "../../types/inaccessibleDashboardTypes.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { inaccessibleDashboardsEntityAdapter } from "./inaccessibleDashboardsEntityAdapter.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts index 6df60f1dbae..20b1fb63db7 100644 --- a/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/insights/insightsSelectors.ts @@ -34,6 +34,7 @@ import { import { selectLocale } from "../config/configSelectors.js"; import { selectWidgetByRef } from "../tabs/layout/layoutSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { insightsAdapter } from "./insightsEntityAdapter.js"; const entitySelectors = insightsAdapter.getSelectors((state: DashboardState) => state.insights); diff --git a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts index 91f547207ac..af0b93cc2a9 100644 --- a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSelectors.ts @@ -6,6 +6,7 @@ import { type IListedDashboard } from "@gooddata/sdk-model"; import { type ObjRefMap, newMapForObjectWithIdentity } from "../../../_staging/metadata/objRefMap.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { listedDashboardsEntityAdapter } from "./listedDashboardsEntityAdapter.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts index d0f64bdcc97..75b5c767c2a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/listedDashboards/listedDashboardsSummarySelectors.ts @@ -4,6 +4,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { selectDashboardId } from "../meta/metaSelectors.js"; import { type DashboardSelector } from "../types.js"; + import { selectListedDashboards } from "./listedDashboardsSelectors.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts index 5f22a67f5ad..7c2241699eb 100644 --- a/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/loading/loadingSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type ILoadingState } from "./loadingState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts index de0cb5eba2a..df6c42da14e 100644 --- a/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/meta/metaSelectors.ts @@ -60,6 +60,7 @@ import { selectMeasureValueFilterConfigsOverridesByTab } from "../tabs/measureVa import { selectActiveTabLocalIdentifier, selectTabs } from "../tabs/tabsSelectors.js"; import { DEFAULT_TAB_ID, type ITabState } from "../tabs/tabsState.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type DashboardDescriptor } from "./metaState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts index 7e620f76ced..49c5eefed0f 100644 --- a/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/parameters/parametersSelectors.ts @@ -19,6 +19,7 @@ import { selectCatalogParameters, selectCatalogParametersIsLoaded } from "../cat import { selectEnableParameters } from "../config/configSelectors.js"; import { selectInsightByWidgetRef } from "../insights/insightsSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type IDashboardParameterEntry } from "./parametersState.js"; const selectSelf = (state: DashboardState) => state.parameters; diff --git a/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts b/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts index 7457d0482d9..a8f09f5fd9a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/renderMode/renderModeReducers.ts @@ -3,6 +3,7 @@ import { type Action, type AnyAction, type CaseReducer, type PayloadAction } from "@reduxjs/toolkit"; import { type RenderMode } from "../../../types.js"; + import { type IRenderModeState } from "./renderModeState.js"; type RenderModeReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts index 42bfad3c3d2..c6b529fc0ec 100644 --- a/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/saving/savingSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type SavingState } from "./savingState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts index 4fef00a7350..d7c90af1578 100644 --- a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts +++ b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/DashboardStoreAccessorRepository.ts @@ -5,6 +5,7 @@ import { invariant } from "ts-invariant"; import { type ObjRef, idRef, serializeObjRef } from "@gooddata/sdk-model"; import { type DashboardDispatch, type DashboardSelectorEvaluator, type DashboardState } from "../types.js"; + import { DashboardStoreAccessor } from "./DashboardStoreAccessor.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts index 7692697fda1..8463cad32ec 100644 --- a/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts +++ b/libs/sdk-ui-dashboard/src/model/store/storeAccessors/SingleDashboardStoreAccessor.ts @@ -3,6 +3,7 @@ import { idRef, serializeObjRef } from "@gooddata/sdk-model"; import { type DashboardDispatch, type DashboardSelectorEvaluator, type DashboardState } from "../types.js"; + import { DashboardStoreAccessorRepository } from "./DashboardStoreAccessorRepository.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts index 8ddf7387276..87fc12d1206 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/dateFilterConfig/dateFilterConfigReducers.ts @@ -11,6 +11,7 @@ import { import { type DateFilterValidationResult } from "../../../../types.js"; import { type ITabsState, getActiveTab } from "../tabsState.js"; + import { type IDateFilterConfigState } from "./dateFilterConfigState.js"; type DateFilterConfigReducer = CaseReducer; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts index e26c1b8667f..6958ce4897a 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextReducers.ts @@ -47,6 +47,7 @@ import { import { type IAddDateFilterPayload, type IAddMeasureValueFilterPayload } from "../../../commands/filters.js"; import { generateFilterLocalIdentifier } from "../../_infra/generators.js"; import { type ITabsState, getActiveTab, getTabOrActive } from "../tabsState.js"; + import { type WorkingDashboardMeasureValueFilter, filterContextInitialState } from "./filterContextState.js"; import { applyFilterContext, initializeFilterContext } from "./filterContextUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts index d3e41658167..dafa64a7e84 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextSelectors.ts @@ -42,6 +42,7 @@ import { selectCrossFilteringFiltersLocalIdentifiers } from "../../drill/drillSe import { type DashboardSelector, type DashboardState } from "../../types.js"; import { selectActiveTabLocalIdentifier, selectTabs, selectTabsState } from "../tabsSelectors.js"; import { DEFAULT_TAB_ID } from "../tabsState.js"; + import { type FilterContextState, filterContextInitialState } from "./filterContextState.js"; import { applyFilterContext, getFilterIdentifier } from "./filterContextUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts index 0a19f0d33a4..04f3e9b5550 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/filterContext/filterContextUtils.ts @@ -25,6 +25,7 @@ import { } from "@gooddata/sdk-model"; import { generateFilterLocalIdentifier } from "../../_infra/generators.js"; + import type { FilterContextState, IWorkingFilterContextDefinition } from "./filterContextState.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts index 707ea6561fd..3ab73e94bd6 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutReducers.ts @@ -58,6 +58,7 @@ import { type IWidgetDescription, type IWidgetHeader } from "../../../types/widg import { addArrayElements, removeArrayElement } from "../../../utils/arrayOps.js"; import { resetUndoReducer, undoReducer, withUndo } from "../../_infra/undoEnhancer.js"; import { type ITabsState } from "../tabsState.js"; + import { type ILayoutState, layoutInitialState } from "./layoutState.js"; import { getWidgetCoordinatesAndItem, resizeInsightWidget } from "./layoutUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts index 450b5111691..075bccac8ec 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/layout/layoutSelectors.ts @@ -52,6 +52,7 @@ import { type DashboardSelector } from "../../types.js"; import { selectFilterContextFilters } from "../filterContext/filterContextSelectors.js"; import { selectActiveTabLocalIdentifier, selectTabs } from "../tabsSelectors.js"; import { DEFAULT_TAB_ID } from "../tabsState.js"; + import { type ILayoutState, type LayoutStash, layoutInitialState } from "./layoutState.js"; const selectSelf = createSelector(selectTabs, selectActiveTabLocalIdentifier, (tabs, activeTabId) => { diff --git a/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts index b5209ac1844..37a56d45b5b 100644 --- a/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/tabs/tabsSelectors.ts @@ -3,6 +3,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { DEFAULT_TAB_ID, type ITabState } from "./tabsState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/types.ts b/libs/sdk-ui-dashboard/src/model/store/types.ts index 53a0314e23f..01810b8a9a4 100644 --- a/libs/sdk-ui-dashboard/src/model/store/types.ts +++ b/libs/sdk-ui-dashboard/src/model/store/types.ts @@ -5,6 +5,7 @@ import { type AnyAction, type Dispatch, type EntityId, type EntityState } from " import { type IInsight, type IListedDashboard } from "@gooddata/sdk-model"; import { type IInaccessibleDashboard } from "../types/inaccessibleDashboardTypes.js"; + import { type IAccessibleDashboardsState } from "./accessibleDashboards/index.js"; import { type IAutomationsState } from "./automations/automationsState.js"; import { type BackendCapabilitiesState } from "./backendCapabilities/backendCapabilitiesState.js"; diff --git a/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts b/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts index d45a093c281..e841b2fbd8b 100644 --- a/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts +++ b/libs/sdk-ui-dashboard/src/model/store/ui/uiReducers.ts @@ -26,6 +26,7 @@ import { type IScheduleEmailContext, } from "../../../types.js"; import { type IDashboardWidgetOverlay } from "../../types/commonTypes.js"; + import { type FilterViewDialogMode, type IInvalidCustomUrlDrillParameterInfo, diff --git a/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts index 2057b6606b4..16bb55c3fa9 100644 --- a/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/ui/uiSelectors.ts @@ -23,6 +23,7 @@ import { selectConfig, selectEnableDashboardDensitySetting } from "../config/con import { selectIsInEditMode } from "../renderMode/renderModeSelectors.js"; import { selectWidgetsMap } from "../tabs/layout/layoutSelectors.js"; import { type DashboardSelector, type DashboardState } from "../types.js"; + import { type FilterViewDialogMode, type IInvalidCustomUrlDrillParameterInfo } from "./uiState.js"; const selectSelf = createSelector( diff --git a/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts b/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts index abca087a886..51c3387fe55 100644 --- a/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts +++ b/libs/sdk-ui-dashboard/src/model/store/widgetDrills/tests/widgetDrillSelectors.test.ts @@ -8,6 +8,7 @@ import { type Matcher, suppressConsole } from "@gooddata/util"; import { selectDrillTargetsByWidgetRef } from "../../drillTargets/drillTargetsSelectors.js"; import { selectIgnoredDrillDownHierarchiesByWidgetRef } from "../../tabs/layout/layoutSelectors.js"; import { selectGlobalDrillsDownAttributeHierarchyByWidgetRef } from "../widgetDrillSelectors.js"; + import { availableDrillTargets, catalogAttributeHierarchies, diff --git a/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts b/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts index 46af6c91277..4f5ffb0e788 100644 --- a/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts +++ b/libs/sdk-ui-dashboard/src/model/tests/fixtures/Layout.fixtures.ts @@ -23,6 +23,7 @@ import { newInsightPlaceholderWidget, newKpiPlaceholderWidget, } from "../../../widgets/placeholders/types.js"; + import { PivotTableWithRowAndColumnAttributes } from "./Insights.fixtures.js"; export const TestSectionHeader: IDashboardLayoutSectionHeader = { diff --git a/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts b/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts index e6bb86faf73..9c1d4df92d2 100644 --- a/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts +++ b/libs/sdk-ui-dashboard/src/model/tests/fixtures/SimpleDashboard.fixtures.ts @@ -16,6 +16,7 @@ import { import { type IAvailableDrillTargets } from "@gooddata/sdk-ui"; import { type IInaccessibleDashboard } from "../../types/inaccessibleDashboardTypes.js"; + import { ComplexDashboardIdentifier } from "./ComplexDashboard.fixtures.js"; export const SimpleDashboardIdentifier = "adb4fefa-c5ad-410e-bb2c-d6933e0ec7a0"; diff --git a/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts b/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts index 91b35c7f41d..8dff416d956 100644 --- a/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts +++ b/libs/sdk-ui-dashboard/src/model/types/commonTypes.ts @@ -18,6 +18,7 @@ import { import { type ILocale } from "@gooddata/sdk-ui"; import { type IDashboardFilter, type IMenuButtonItemsVisibility, type RenderMode } from "../../types.js"; + import { type ExtendedDashboardWidget } from "./layoutTypes.js"; /** diff --git a/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts b/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts index a99be0bd579..3245f616005 100644 --- a/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts +++ b/libs/sdk-ui-dashboard/src/model/utils/filterResolver.ts @@ -16,6 +16,7 @@ import { import { type ObjRefMap } from "../../_staging/metadata/objRefMap.js"; import { type DashboardContext } from "../types/commonTypes.js"; + import { resolveDisplayFormMetadata } from "./displayFormResolver.js"; /** diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts index b8034f2261e..b26c820f484 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/attributeFiltersCustomizer.ts @@ -9,6 +9,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardAttributeFilter } from "../../presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.js"; import { type IAttributeFiltersCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts index 20202ab62f9..e2593924e0b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationBuilder.ts @@ -28,6 +28,7 @@ import { type IVisualizationSwitcherCustomizer, } from "../customizer.js"; import { type IDashboardPluginContract_V1 } from "../plugin.js"; + import { DashboardCustomizationLogger } from "./customizationLogging.js"; import { DefaultDashboardContentCustomizer } from "./dashboardContentCustomizer.js"; import { DefaultFilterBarCustomizer } from "./filterBarCustomizer.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts index c73ae6aee27..f5bda9e02bf 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/customizationLogging.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type IDashboardPluginContract_V1 } from "../plugin.js"; + import { pluginDebugStr } from "./pluginUtils.js"; function addPluginInfoToMessage(plugin: IDashboardPluginContract_V1 | undefined, message: string) { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts index 0e3ed7fdd09..614d4016e03 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dashboardContentCustomizer.ts @@ -9,6 +9,7 @@ import { type OptionalDashboardContentComponentProvider, } from "../../presentation/dashboardContexts/types.js"; import { type IDashboardContentCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts index a732c8a09f9..69c1ae4dfbf 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/dateFiltersCustomizer.ts @@ -8,6 +8,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardDateFilter } from "../../presentation/filterBar/dateFilter/DefaultDashboardDateFilter.js"; import { type IDateFiltersCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; const DefaultDateFilterRendererProvider: DateFilterComponentProvider = () => { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx index 91eb953bb02..56e2b45941b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/exportLayoutCustomizer.tsx @@ -14,6 +14,7 @@ import { switcherSlideTransformer } from "../../_staging/slideshow/switcherSlide import { containsVisualizationSwitcher } from "../../_staging/slideshow/utils/index.js"; import { widgetSlideTransformer } from "../../_staging/slideshow/widgetSlideTransformer.js"; import { type IExportLayoutCustomizer, type SectionSlidesTransformer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx index 01d62d06ca6..684bf63eea9 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterBarCustomizer.tsx @@ -11,6 +11,7 @@ import { HiddenFilterBar } from "../../presentation/filterBar/filterBar/HiddenFi import { RenderModeAwareFilterBar } from "../../presentation/filterBar/filterBar/RenderModeAwareFilterBar.js"; import { type CustomFilterBarComponent } from "../../presentation/filterBar/filterBar/types.js"; import { type FilterBarRenderingMode, type IFilterBarCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts index 35e56ea090d..769551a5c4b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filterGroupsCustomizer.ts @@ -8,6 +8,7 @@ import type { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardFilterGroup } from "../../presentation/filterBar/filterBar/DefaultDashboardFilterGroup.js"; import { type IFilterGroupsCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; const DefaultFilterGroupRendererProvider: FilterGroupComponentProvider = () => { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts index e15ce95379f..3328b38022b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/filtersCustomizer.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type IFiltersCustomizer } from "../customizer.js"; + import { DefaultAttributeFiltersCustomizer } from "./attributeFiltersCustomizer.js"; import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { DefaultDateFiltersCustomizer } from "./dateFiltersCustomizer.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts index baf92f47ea5..6b38f3d7741 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/fluidLayoutCustomizer.ts @@ -13,6 +13,7 @@ import { DashboardLayoutBuilder } from "../../_staging/dashboard/flexibleLayout/ import { type ExtendedDashboardWidget, type ICustomWidget } from "../../model/types/layoutTypes.js"; import { type ILayoutItemPath, type ILayoutSectionPath } from "../../types.js"; import { type IFluidLayoutCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx index 2b3cd32c392..acf3cbad527 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/insightCustomizer.tsx @@ -15,6 +15,7 @@ import { DefaultDashboardInsight } from "../../presentation/widget/insight/Defau import { DefaultInsightBody } from "../../presentation/widget/insight/DefaultInsightBody/DefaultInsightBody.js"; import { type CustomDashboardInsightComponent } from "../../presentation/widget/insight/types.js"; import { type IDashboardInsightCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx index 9c51a9fe598..190df9285fa 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/layoutCustomizer.tsx @@ -22,6 +22,7 @@ import { type FluidLayoutCustomizationFn, type IDashboardLayoutCustomizer, } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { ExportLayoutCustomizer } from "./exportLayoutCustomizer.js"; import { FluidLayoutCustomizer } from "./fluidLayoutCustomizer.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx index cc1544a839e..287a763ca7f 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/loadingCustomizer.tsx @@ -12,6 +12,7 @@ import { type OptionalLoadingComponentProvider, } from "../../presentation/dashboardContexts/types.js"; import { type ILoadingCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts index 075b92d410f..0470b8a67db 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/measureValueFiltersCustomizer.ts @@ -8,6 +8,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardMeasureValueFilter } from "../../presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.js"; import { type IMeasureValueFiltersCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; const DefaultMeasureValueFilterRendererProvider: MeasureValueFilterComponentProvider = () => { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx index ce2f18cd7b2..f361ccfb27b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/richTextCustomizer.tsx @@ -9,6 +9,7 @@ import { } from "../../presentation/dashboardContexts/types.js"; import { DefaultDashboardRichText } from "../../presentation/widget/richText/DefaultDashboardRichText.js"; import { type IRichTextCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx index 65c8717979d..295da35e477 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/attributeFilterCustomizer.test.tsx @@ -20,6 +20,7 @@ import { type IDashboardAttributeFilterProps } from "../../../presentation/filte import { DefaultAttributeFiltersCustomizer } from "../attributeFiltersCustomizer.js"; import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; // diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx index 5ecde91133d..65d9e1de39e 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/dashboardContentCustomizer.test.tsx @@ -16,6 +16,7 @@ import { import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultDashboardContentCustomizer } from "../dashboardContentCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; // diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx index d3ec2d1b596..af450d4b176 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/filterBarCustomizer.test.tsx @@ -8,6 +8,7 @@ import { HiddenFilterBar } from "../../../presentation/filterBar/filterBar/Hidde import { type IFilterBarProps } from "../../../presentation/filterBar/filterBar/types.js"; import { DefaultFilterBarCustomizer } from "../filterBarCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts index 5ca60d27c95..bc963d111a4 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/fluidLayoutCustomizer.test.ts @@ -17,6 +17,7 @@ import { import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { FluidLayoutCustomizer } from "../fluidLayoutCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; const EmptyLayout: IDashboardLayout = { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx index eaa8eeab126..fca2eba65f9 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/insightCustomizer.test.tsx @@ -19,6 +19,7 @@ import { type IDashboardInsightProps } from "../../../presentation/widget/insigh import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultInsightCustomizer } from "../insightCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; // diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx index 4b0d6b80009..50bb04c5256 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/layoutCustomizer.test.tsx @@ -11,6 +11,7 @@ import { type IDashboardLayoutProps } from "../../../presentation/widget/dashboa import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultLayoutCustomizer } from "../layoutCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx index 221db82c1ad..a9719fc7d49 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/loadingCustomizer.test.tsx @@ -7,6 +7,7 @@ import { type ILoadingProps } from "@gooddata/sdk-ui"; import { DefaultLoadingCustomizer } from "../loadingCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx index 85894e44d47..37d369b6b4b 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/measureValueFilterCustomizer.test.tsx @@ -16,6 +16,7 @@ import { type IDashboardMeasureValueFilterProps } from "../../../presentation/fi import { DashboardCustomizationLogger } from "../customizationLogging.js"; import { DefaultMeasureValueFiltersCustomizer } from "../measureValueFiltersCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { EMPTY_MUTATIONS } from "./utils.js"; const TestMeasureValueFilter: IDashboardMeasureValueFilter = { diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx index 437903fde36..d73b2c8cdfd 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/richTextCustommizer.test.tsx @@ -8,6 +8,7 @@ import { type IRichTextWidget, idRef } from "@gooddata/sdk-model"; import { DefaultRichTextCustomizer } from "../richTextCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx index ca478884baa..a9cd446cce3 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/titleCustomizer.test.tsx @@ -6,6 +6,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { type ITitleProps } from "../../../presentation/topBar/title/types.js"; import { DefaultTitleCustomizer } from "../titleCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx index a3e6e4b0e07..cd08037059d 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/topBarCustomizer.test.tsx @@ -7,6 +7,7 @@ import { type IButtonBarProps } from "../../../presentation/topBar/buttonBar/typ import { type ITopBarProps } from "../../../presentation/topBar/topBar/types.js"; import { DefaultTopBarCustomizer } from "../topBarCustomizer.js"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx index 08db0777df2..b284f1c6d58 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/tests/vidualisationSwitcherCustomizer.test.tsx @@ -8,6 +8,7 @@ import { type IVisualizationSwitcherWidget, idRef } from "@gooddata/sdk-model"; import { type CustomizerMutationsContext, createCustomizerMutationsContext } from "../types.js"; import { DefaultVisualizationSwitcherCustomizer } from "../visualizationSwitcherCustomizer.js"; + import { TestingDashboardCustomizationLogger } from "./fixtures/TestingDashboardCustomizationLogger.js"; import { EMPTY_MUTATIONS } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx index d32924ef668..8a6d261a841 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/titleCustomizer.tsx @@ -10,6 +10,7 @@ import { import { RenderModeAwareTitle } from "../../presentation/topBar/title/RenderModeAwareTitle.js"; import { type CustomTitleComponent } from "../../presentation/topBar/title/types.js"; import { type ITitleCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx index 0628ee2a004..5cb8df1b549 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/topBarCustomizer.tsx @@ -10,6 +10,7 @@ import { import { RenderModeAwareTopBar } from "../../presentation/topBar/topBar/RenderModeAwareTopBar.js"; import { type CustomTopBarComponent } from "../../presentation/topBar/topBar/types.js"; import { type ITopBarCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx index 520f861853a..4f2c82f1145 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/visualizationSwitcherCustomizer.tsx @@ -12,6 +12,7 @@ import type { import { DefaultVisualizationSwitcherToolbar } from "../../presentation/widget/visualizationSwitcher/configuration/DefaultVisualizationSwitcherToolbar.js"; import { DefaultDashboardVisualizationSwitcher } from "../../presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.js"; import { type IVisualizationSwitcherCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; import { type CustomizerMutationsContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx b/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx index e88900f802f..46d8ce5105c 100644 --- a/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx +++ b/libs/sdk-ui-dashboard/src/plugins/customizationApis/widgetCustomizer.tsx @@ -4,6 +4,7 @@ import { isCustomWidget } from "../../model/types/layoutTypes.js"; import type { OptionalWidgetComponentProvider } from "../../presentation/dashboardContexts/types.js"; import type { CustomDashboardWidgetComponent } from "../../presentation/widget/widget/types.js"; import { type IDashboardWidgetCustomizer } from "../customizer.js"; + import { type IDashboardCustomizationLogger } from "./customizationLogging.js"; /* diff --git a/libs/sdk-ui-dashboard/src/plugins/engine.ts b/libs/sdk-ui-dashboard/src/plugins/engine.ts index 03e99229eae..ce6cb70e8c7 100644 --- a/libs/sdk-ui-dashboard/src/plugins/engine.ts +++ b/libs/sdk-ui-dashboard/src/plugins/engine.ts @@ -6,6 +6,7 @@ import { LIB_VERSION } from "../__version.js"; import type { DashboardContext } from "../model/types/commonTypes.js"; import { Dashboard } from "../presentation/dashboard/Dashboard.js"; import type { IDashboardExtensionProps, IDashboardProps } from "../presentation/dashboard/types.js"; + import { DashboardCustomizationBuilder } from "./customizationApis/customizationBuilder.js"; import { DefaultDashboardEventHandling } from "./customizationApis/dashboardEventHandling.js"; import { pluginDebugStr } from "./customizationApis/pluginUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/plugins/plugin.ts b/libs/sdk-ui-dashboard/src/plugins/plugin.ts index 4ec217133ec..d2c93478a8f 100644 --- a/libs/sdk-ui-dashboard/src/plugins/plugin.ts +++ b/libs/sdk-ui-dashboard/src/plugins/plugin.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import type { DashboardContext } from "../model/types/commonTypes.js"; + import { type IDashboardCustomizer, type IDashboardEventHandling } from "./customizer.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx index f0b174a489a..d1d64ba5e9e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IAlertingDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx index 1d0615df79c..42102ad41f5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/AlertingManagementDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IAlertingManagementDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx index c29301b8001..d318495d817 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.tsx @@ -56,6 +56,7 @@ import { IntlWrapper } from "../../localization/IntlWrapper.js"; import { RecipientsSelect } from "../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js"; import { DeleteAlertConfirmDialog } from "../DefaultAlertingManagementDialog/components/DeleteAlertConfirmDialog.js"; import { type IAlertingDialogProps } from "../types.js"; + import { AlertingDialogHeader } from "./AlertingDialogHeader.js"; import { AlertAttributeSelect } from "./components/AlertAttributeSelect.js"; import { AlertComparisonOperatorSelect } from "./components/AlertComparisonOperatorSelect.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts index 3fbdc644bf1..4460b9573eb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useEditAlert.ts @@ -95,6 +95,7 @@ import { transformAlertBySensitivity, transformAlertByValue, } from "../utils/transformation.js"; + import { useAlertValidation } from "./useAlertValidation.js"; import { useAttributeValuesFromExecResults } from "./useAttributeValuesFromExecResults.js"; import { useThresholdValue } from "./useThresholdValue.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts index 710e15d1f7b..6adf1506112 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/hooks/useSaveAlertToBackend.ts @@ -14,6 +14,7 @@ import { import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js"; + import { useCreateAlert } from "./useCreateAlert.js"; import { useUpdateAlert } from "./useUpdateAlert.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts index 4d0732c854c..1e3d86076eb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/convertors.ts @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-model"; import { type AlertMetric } from "../../types.js"; + import { type IMeasureFormatMap, getMeasureFormat, getMeasureTitle } from "./getters.js"; import { transformAlertExecutionByMetric } from "./transformation.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts index 2d039c6b15d..5ab3880b948 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/getters.ts @@ -44,6 +44,7 @@ import { import { type AlertAttribute, type AlertMetric, type AlertMetricComparator } from "../../types.js"; import { DEFAULT_MEASURE_FORMAT } from "../constants.js"; + import { isChangeOperator, isDifferenceOperator } from "./guards.js"; export type IMeasureFormatMap = { [key: string]: string }; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts index d1a73818680..2a825bd91d4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/items.ts @@ -31,6 +31,7 @@ import { import { BucketNames } from "@gooddata/sdk-ui"; import { type AlertAttribute, type AlertMetric, AlertMetricComparatorType } from "../../types.js"; + import { getCatalogAttribute, getFiltersAttribute } from "./getters.js"; type InsightType = diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts index 8e1cd66d257..230a15707ac 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingDialog/utils/transformation.ts @@ -37,6 +37,7 @@ import { type AlertMetricComparator, AlertMetricComparatorType, } from "../../types.js"; + import { createCronFromGranularity } from "./cron.js"; import { type IMeasureFormatMap, diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx index 412ab533776..24a3c017af7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogContentBasic.tsx @@ -21,6 +21,7 @@ import { selectIsAlertingDialogOpen } from "../../../model/store/ui/uiSelectors. import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../constants/zIndex.js"; import { isMobileView } from "../DefaultAlertingDialog/utils/responsive.js"; import { useAlertingDialogAccessibility } from "../hooks/useAlertingDialogAccessibility.js"; + import { Alerts } from "./components/AlertsList.js"; const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx index a51c10d7219..776e08c81a8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogNew.tsx @@ -16,6 +16,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectDashboardId } from "../../../model/store/meta/metaSelectors.js"; import { type IAlertingManagementDialogProps } from "../types.js"; + import { DeleteAlertConfirmDialog } from "./components/DeleteAlertConfirmDialog.js"; import { PauseAlertRunner } from "./components/PauseAlertRunner.js"; import { DefaultAlertingManagementDialogContentBasic } from "./DefaultAlertingManagementDialogContentBasic.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx index f587f67287d..33bf2515b9e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/DefaultAlertingManagementDialogOld.tsx @@ -17,6 +17,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { selectIsWhiteLabeled } from "../../../model/store/config/configSelectors.js"; import { isMobileView } from "../DefaultAlertingDialog/utils/responsive.js"; import { type IAlertingManagementDialogOldProps } from "../types.js"; + import { AlertsOld } from "./components/AlertsListOld.js"; import { DeleteAlertConfirmDialog } from "./components/DeleteAlertConfirmDialog.js"; import { PauseAlertRunner } from "./components/PauseAlertRunner.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx index 29698fbfa6b..d33426115fd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/alerting/DefaultAlertingManagementDialog/components/AlertOld.tsx @@ -17,6 +17,7 @@ import { selectCurrentUser } from "../../../../model/store/user/userSelectors.js import { gdColorNegative, gdColorStateBlank } from "../../../constants/colors.js"; import { useAlertValidation } from "../../DefaultAlertingDialog/hooks/useAlertValidation.js"; import { getSubtitle } from "../../DefaultAlertingDialog/utils/getters.js"; + import { AlertDropdown } from "./AlertDropdown.js"; interface IAlertProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx index 2e79423ff67..c412328812c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationAttributeFilter.tsx @@ -20,6 +20,7 @@ import { } from "@gooddata/sdk-ui-kit"; import { DefaultDashboardAttributeFilter } from "../../filterBar/attributeFilter/DefaultDashboardAttributeFilter.js"; + import { AutomationAttributeFilterProvider, useAutomationAttributeFilterContext, diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx index 0079e91079d..e98efeb1f13 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationDateFilter.tsx @@ -18,6 +18,7 @@ import { } from "../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js"; import { DefaultDashboardDateFilter } from "../../filterBar/dateFilter/DefaultDashboardDateFilter.js"; import type { IDashboardDateFilterConfig } from "../../filterBar/dateFilter/types.js"; + import { AutomationDateFilterProvider, useAutomationDateFilterContext, diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx index 83b0e373893..c953e853e78 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/components/AutomationFiltersSelect.tsx @@ -46,6 +46,7 @@ import { } from "../../constants/automations.js"; import { AttributesDropdown } from "../../filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js"; import { useAutomationFilters, useAutomationFiltersByTab } from "../useAutomationFilters.js"; + import { AutomationAttributeFilter } from "./AutomationAttributeFilter.js"; import { AutomationDateFilter } from "./AutomationDateFilter.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts index 28acfbee419..8ded2d7e3f9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFilters.ts @@ -38,6 +38,7 @@ import { selectDateFilterConfigsOverrides, selectDateFilterConfigsOverridesByTab, } from "../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js"; + import { areFiltersMatchedByIdentifier, getCatalogAttributesByFilters, diff --git a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts index cbf70ef8393..ab30f1af040 100644 --- a/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts +++ b/libs/sdk-ui-dashboard/src/presentation/automationFilters/useAutomationFiltersSelect.ts @@ -18,6 +18,7 @@ import { } from "../../model/store/filtering/dashboardFilterSelectors.js"; import type { ExtendedDashboardWidget } from "../../model/types/layoutTypes.js"; import { removeIgnoredWidgetFilters } from "../../model/utils/widgetFilters.js"; + import { useAutomationVisibleFilters, useAutomationVisibleFiltersByTab, diff --git a/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx index 8a48de08592..a62b320e530 100644 --- a/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/cancelEditDialog/DefaultCancelEditDialog.tsx @@ -10,6 +10,7 @@ import { cancelEditRenderMode } from "../../model/commands/renderMode.js"; import { useDashboardDispatch, useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { uiActions } from "../../model/store/ui/index.js"; import { selectIsCancelEditModeDialogOpen } from "../../model/store/ui/uiSelectors.js"; + import { type ICancelEditDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx index 312625a4c8f..43fc29beaba 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardContent.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx index a4ff788ad0f..592ff0e6fff 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/AlertingDialogProvider.tsx @@ -2,6 +2,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../model/store/config/configSelectors.js"; + import { AlertingDialogProviderNew } from "./AlertingDialogProviderNew.js"; import { AlertingDialogProviderOld } from "./AlertingDialogProviderOld.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx index 6afe60ae0b7..6f42d110e6e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardHeader/DashboardHeader.tsx @@ -21,6 +21,7 @@ import { TopBar } from "../../topBar/topBar/TopBar.js"; import { useWidgetDeleteDialogProps } from "../../widgetDeleteDialog/DefaultWidgetDeleteDialog.js"; import { WidgetDeleteDialog } from "../../widgetDeleteDialog/WidgetDeleteDialog.js"; import { ToastMessages } from "../components/ToastMessages.js"; + import { AlertingDialogProvider } from "./AlertingDialogProvider.js"; import { DashboardTabs, useDashboardTabsProps } from "./DashboardTabs.js"; import { DensityDialogProvider } from "./DensityDialogProvider.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx index 25e17ab91c2..aca98fff74a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx @@ -27,6 +27,7 @@ import { type IWrapCreatePanelItemWithDragComponent, type IWrapInsightListItemWithDragComponent, } from "../../dragAndDrop/types.js"; + import { DraggableInsightList } from "./DraggableInsightList/DraggableInsightList.js"; interface ICreationPanelProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx index 74fb28d3611..9ae2b2d4c89 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DashboardSidebar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type ISidebarProps } from "./types.js"; export function DashboardSidebar(props: ISidebarProps): ReactElement { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx index 526450d27da..e73a535c356 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightList.tsx @@ -5,6 +5,7 @@ import { useEffect, useRef } from "react"; import { FlexDimensions } from "@gooddata/sdk-ui-kit"; import { type IWrapInsightListItemWithDragComponent } from "../../../dragAndDrop/types.js"; + import { DraggableInsightListCore } from "./DraggableInsightListCore.js"; interface IDraggableInsightListProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx index 88679e1d36c..43613e7f816 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/DraggableInsightList/DraggableInsightListCore.tsx @@ -24,6 +24,7 @@ import { import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js"; import { InsightList } from "../../../insightList/InsightList.js"; import { type IInsightListProps } from "../../../insightList/types.js"; + import { DraggableInsightListItemWrapper } from "./DraggableInsightListItemWrapper.js"; export function DraggableInsightListCore({ diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx index b454bbd3ab9..9172ebe0ff6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx @@ -58,6 +58,7 @@ import { gdColorStateBlank } from "../../constants/colors.js"; import { useWidgetDragEndHandler } from "../../dragAndDrop/draggableWidget/useWidgetDragEndHandler.js"; import { type DraggableItem } from "../../dragAndDrop/types.js"; import { useDashboardDrag } from "../../dragAndDrop/useDashboardDrag.js"; + import { InsightPickerPanel } from "./InsightPickerPanel.js"; const ICON_SIZE = 28; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx index c3dded30798..65f57c65d0f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/InsightPickerPanel.tsx @@ -21,6 +21,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectCurrentUser } from "../../../model/store/user/userSelectors.js"; import { getAuthor } from "../../../model/utils/author.js"; + import { InsightPickerListItem } from "./InsightPickerListItem.js"; import { useInsertInsightToLayout } from "./useInsertInsightToLayout.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx index 1377c8c1f07..b862876d67a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/RenderModeAwareDashboardSidebar.tsx @@ -3,6 +3,7 @@ import { type ComponentType } from "react"; import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { SidebarConfigurationPanel } from "./SidebarConfigurationPanel.js"; import { type ISidebarProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx index 7f3767398f0..1bc9441b641 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/DashboardSidebar/SidebarConfigurationPanel.tsx @@ -5,6 +5,7 @@ import { type ReactElement } from "react"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { useWidgetSelection } from "../../../model/react/useWidgetSelection.js"; import { selectSettings } from "../../../model/store/config/configSelectors.js"; + import { CreationPanel } from "./CreationPanel.js"; import { FloatingToolbar } from "./FloatingToolbar.js"; import { type ISidebarProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx index 42b4a6ea7d7..2e2de280989 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardInner.tsx @@ -35,6 +35,7 @@ import { DashboardHeader } from "../DashboardHeader/DashboardHeader.js"; import { DashboardSidebar } from "../DashboardSidebar/DashboardSidebar.js"; import { RenderModeAwareDashboardSidebar } from "../DashboardSidebar/RenderModeAwareDashboardSidebar.js"; import { type IDashboardProps } from "../types.js"; + import { DashboardScreenSizeProvider } from "./DashboardScreenSizeContext.js"; const overlayController = OverlayController.getInstance(DASHBOARD_HEADER_OVERLAYS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx index 80e9ed0c05b..5adcc1f7332 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardLoading.tsx @@ -4,6 +4,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { selectDashboardLoading } from "../../../model/store/loading/loadingSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; import { type IDashboardProps } from "../types.js"; + import { DashboardInner } from "./DashboardInner.js"; export function DashboardLoading(props: IDashboardProps) { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx index 1b397a22c14..bb814f57c6a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardMainContent.tsx @@ -11,6 +11,7 @@ import { useDashboardDrop } from "../../dragAndDrop/useDashboardDrop.js"; import { useWidgetDragHoverHandlers as useFlexibleWidgetDragHoverHandlers } from "../../flexibleLayout/dragAndDrop/draggableWidget/useWidgetDragHoverHandlers.js"; import { DashboardLayout } from "../../widget/dashboardLayout/DashboardLayout.js"; import { type IDashboardProps } from "../types.js"; + import { DateFilterConfigWarnings } from "./DateFilterConfigWarnings.js"; export const DashboardMainContent = forwardRef(function DashboardMainContent(_: IDashboardProps, ref) { diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx index 9d10ba2dbf6..7351fed660a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/components/DashboardRenderer.tsx @@ -44,6 +44,7 @@ import { RenderModeAwareDashboardSidebar } from "../DashboardSidebar/RenderModeA import { defaultDashboardThemeModifier } from "../defaultDashboardThemeModifier.js"; import { useDashboard } from "../hooks/useDashboard.js"; import { type IDashboardProps } from "../types.js"; + import { DashboardItemPathAndSizeProvider } from "./DashboardItemPathAndSizeContext.js"; import { DashboardLoading } from "./DashboardLoading.js"; import { DensityInitializer } from "./DensityInitializer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts b/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts index 85ed77504fd..55f723cbc87 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dashboard/types.ts @@ -60,6 +60,7 @@ import { type CustomMenuButtonComponent, type IMenuButtonConfiguration } from ". import { type CustomTitleComponent } from "../topBar/title/types.js"; import { type CustomTopBarComponent } from "../topBar/topBar/types.js"; import { type CustomDashboardLayoutComponent } from "../widget/dashboardLayout/types.js"; + import { type CustomSidebarComponent } from "./DashboardSidebar/types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx index 405b5626ac3..1833a7b3015 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardComponentsContext.tsx @@ -40,6 +40,7 @@ import { type CustomMenuButtonComponent } from "../topBar/menuButton/types.js"; import { type CustomTitleComponent } from "../topBar/title/types.js"; import { type CustomTopBarComponent } from "../topBar/topBar/types.js"; import { type CustomDashboardLayoutComponent } from "../widget/dashboardLayout/types.js"; + import { type AttributeFilterComponentProvider, type DashboardContentComponentProvider, diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx index 9b54c7fb382..e3e542b7f28 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/DashboardCustomizationsContext.tsx @@ -6,6 +6,7 @@ import { type DashboardLayoutExportTransformFn, type IDashboardExportSlideConfig, } from "../../model/types/commonTypes.js"; + import { type InsightMenuItemsProvider, type RichTextMenuItemsProvider } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts index 367fd5d83cc..b2124376d0b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardContexts/useSlideData.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type ILayoutItemPath, type RenderMode } from "../../types.js"; + import { useDashboardCustomizationsContext } from "./DashboardCustomizationsContext.js"; type LayoutElementType = "root" | "nested" | "section" | "item" | "leaf-item"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx index afa3a74627e..65da06af487 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardList/DashboardList.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { Dropdown, DropdownList } from "@gooddata/sdk-ui-kit"; import { dashboardMatch } from "../drill/utils/dashboardPredicate.js"; + import { DashboardListButton } from "./DashboardListButton.js"; import { DashboardListItem } from "./DashboardListItem.js"; import { type IDashboardListProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx index 2fc88b339a2..3c9cbcf00ba 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DashboardSettingsDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardSettingsDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx index 527155f1c41..bd2b02c7903 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/DefaultDashboardSettingsDialog.tsx @@ -37,6 +37,7 @@ import { selectWeekStart, } from "../../model/store/config/configSelectors.js"; import { selectCrossFilteringEnabledAndSupported } from "../../model/store/topBar/topBarSelectors.js"; + import { type IDashboardSettingsDialogProps } from "./types.js"; import { useDialogData } from "./useDialogData.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts index a3162d718e2..11836c02259 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dashboardSettingsDialog/useDialogData.ts @@ -13,6 +13,7 @@ import { selectEvaluationFrequency, selectSectionHeadersDateDataSet, } from "../../model/store/meta/metaSelectors.js"; + import { type IDashboardSettingsApplyPayload } from "./types.js"; export function useDialogData() { diff --git a/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx index d7d0cb232d7..8f077988435 100644 --- a/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/deleteDialog/DefaultDeleteDialog.tsx @@ -18,6 +18,7 @@ import { selectEnableAlerting, selectEnableScheduling } from "../../model/store/ import { selectDashboardTitle } from "../../model/store/meta/metaSelectors.js"; import { uiActions } from "../../model/store/ui/index.js"; import { selectIsDeleteDialogOpen } from "../../model/store/ui/uiSelectors.js"; + import { type IDeleteDialogProps } from "./types.js"; const deleteMessages = defineMessages({ diff --git a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx index a9d8eb02881..b7542f7d604 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportCsvDialogProvider.tsx @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { useExportCsvDialogContext } from "../dashboardContexts/ExportCsvDialogContext.js"; + import { ExportCsvDialog } from "./ExportCsvDialog.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx index 9774dfeb7da..b829861c01d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dialogs/ExportTemplateDialogProvider.tsx @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { useExportTemplateDialogContext } from "../dashboardContexts/ExportTemplateDialogContext.js"; + import { ExportTemplateSelectionDialog } from "./ExportTemplateSelectionDialog/ExportTemplateSelectionDialog.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx index 569eb9e4a30..d4c52a8d48b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/DraggableCreatePanelItem.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type CustomCreatePanelItemComponent } from "../componentDefinition/types.js"; + import { type DraggableItem, type IWrapCreatePanelItemWithDragComponent } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx index 5c3f8df3f7a..7f93809acaf 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/LayoutResizeContext.tsx @@ -1,10 +1,11 @@ -// (C) 2022-2025 GoodData Corporation +// (C) 2022-2026 GoodData Corporation import { type ReactNode, createContext, useCallback, useContext, useRef, useState } from "react"; import { type XYCoord } from "@evil-internetmann/react-dnd"; import { emptyDOMRect } from "../constants.js"; + import { type ReachedResizingLimit } from "./DragLayerPreview/types.js"; type ResizeDirection = "height" | "width" | "none"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx index 3fb1eaf7be8..35e17bfd444 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapCreatePanelItemWithDrag.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { selectIsInEditMode } from "../../model/store/renderMode/renderModeSelectors.js"; + import { useWidgetDragEndHandler } from "./draggableWidget/useWidgetDragEndHandler.js"; import { type IWrapCreatePanelItemWithDragInnerProps, diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx index ab398974d5e..9dac200f736 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/WrapInsightListItemWithDrag.tsx @@ -10,6 +10,7 @@ import { getSizeInfo } from "../../_staging/layout/sizing.js"; import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { selectSettings } from "../../model/store/config/configSelectors.js"; import { selectIsInEditMode } from "../../model/store/renderMode/renderModeSelectors.js"; + import { useWidgetDragEndHandler } from "./draggableWidget/useWidgetDragEndHandler.js"; import { type IWrapInsightListItemWithDragProps } from "./types.js"; import { useDashboardDrag } from "./useDashboardDrag.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx index 99cf33b2a18..5a3028121af 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.tsx @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { type IDashboardLayoutDraggingComponentProps } from "../../componentDefinition/types.js"; + import { AddDashboardLayoutWidgetButton } from "./AddDashboardLayoutWidgetButton.js"; /* diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx index ea3900c003a..8b15df07eb5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/RichTextDraggingComponent.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { type IRichTextDraggingComponentProps } from "../../componentDefinition/types.js"; + import { AddRichTextWidgetButton } from "./AddRichTextWidgetButton.js"; /* diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx index 1f699c92a3a..f04674b4232 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.tsx @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { type IVisualizationSwitcherDraggingComponentProps } from "../../componentDefinition/types.js"; + import { AddVisualizationSwitcherWidgetButton } from "./AddVisualizationSwitcherWidgetButton.js"; /* diff --git a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts index 1370f159aa2..7895f3ada86 100644 --- a/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts +++ b/libs/sdk-ui-dashboard/src/presentation/dragAndDrop/useFilterDeleteDrop.ts @@ -12,6 +12,7 @@ import { } from "../../model/commands/filters.js"; import { useDashboardDispatch } from "../../model/react/DashboardStoreProvider.js"; import { parametersActions } from "../../model/store/parameters/index.js"; + import { isAttributeFilterDraggableItem, isDateFilterDraggableItem, diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx index a1c26d5a207..00b82088d28 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditor.tsx @@ -43,6 +43,7 @@ import { selectFilterableWidgetByRef } from "../../../../model/store/tabs/layout import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { useInvalidFilteringParametersIdentifiers } from "../../../widget/insight/configuration/DrillTargets/useInvalidFilteringParametersIdentifiers.js"; import { type UrlDrillTarget, isDrillToCustomUrlConfig } from "../../types.js"; + import { ParametersPanel } from "./CustomUrlEditorParameters.js"; import { type IAttributeWithDisplayForm } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx index f0206c2aa22..dc9cb774e89 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DashboardParametersSection.tsx @@ -15,6 +15,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { selectAllCatalogDisplayFormsMap } from "../../../../../model/store/catalog/catalogSelectors.js"; import { DropdownSectionHeader } from "../DropdownSectionHeader.js"; import { type IParametersPanelSectionsCommonProps } from "../types.js"; + import { DisplayFormParam } from "./DisplayFormParam.js"; export interface IDashboardParametersSectionProps extends IParametersPanelSectionsCommonProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx index 1330e6e21f0..64bf54f83d3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/DisplayFormParam.tsx @@ -13,6 +13,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { selectAllCatalogAttributesMap } from "../../../../../model/store/catalog/catalogSelectors.js"; import { selectFilterContextAttributeFilterItemByDisplayForm } from "../../../../../model/store/tabs/filterContext/filterContextSelectors.js"; import { AttributeDisplayFormParameterDetail } from "../ParameterDetails/AttributeDisplayFormParameterDetail.js"; + import { Parameter } from "./Parameter.js"; interface IXProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx index c7101a8bbcd..7b4b3349509 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/IdentifierParametersSection.tsx @@ -15,6 +15,7 @@ import { InsightIdParameterDetail } from "../ParameterDetails/InsightIdParameter import { ProjectIdParameterDetail } from "../ParameterDetails/ProjectIdParameterDetail.js"; import { WidgetIdParameterDetail } from "../ParameterDetails/WidgetIdParameterDetail.js"; import { type IIdentifierParametersSectionProps } from "../types.js"; + import { Parameter } from "./Parameter.js"; interface IIdentifierParameter { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx index 2314ecb7ac4..bcbf9467154 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlEditorParametersSections/InsightParametersSection.tsx @@ -8,6 +8,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { selectAllCatalogDisplayFormsMap } from "../../../../../model/store/catalog/catalogSelectors.js"; import { DropdownSectionHeader } from "../DropdownSectionHeader.js"; import { type IAttributeWithDisplayForm, type IParametersPanelSectionsCommonProps } from "../types.js"; + import { DisplayFormParam } from "./DisplayFormParam.js"; export interface IInsightParametersSectionProps extends IParametersPanelSectionsCommonProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx index 8b8270675c1..ce248ca0167 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/CustomUrlSection.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { Button } from "@gooddata/sdk-ui-kit"; import { type UrlDrillTarget, isDrillToCustomUrlConfig } from "../../types.js"; + import { DropdownSectionHeader } from "./DropdownSectionHeader.js"; type ToggleModalCallback = () => void; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx index 1f7c2d000f3..a177b42b84b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/AttributeDisplayFormParameterDetail.tsx @@ -18,6 +18,7 @@ import { newDisplayFormMap } from "../../../../../_staging/metadata/objRefMap.js import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectBackendCapabilities } from "../../../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js"; import { selectCatalogDateDatasets } from "../../../../../model/store/catalog/catalogSelectors.js"; + import { ParameterDetail } from "./ParameterDetail.js"; const MAX_CACHED_REQUESTS = 50; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx index c6fead0cb2d..d1369eca768 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/DashboardIdParameterDetail.tsx @@ -4,6 +4,7 @@ import { useIntl } from "react-intl"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectDashboardId } from "../../../../../model/store/meta/metaSelectors.js"; + import { ParameterDetail } from "./ParameterDetail.js"; interface IIdentifierDetailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx index bf2fb408b23..a9241d1bcab 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/InsightIdParameterDetail.tsx @@ -8,6 +8,7 @@ import { type ObjRef, isInsightWidget } from "@gooddata/sdk-model"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectInsightByRef } from "../../../../../model/store/insights/insightsSelectors.js"; import { selectWidgetByRef } from "../../../../../model/store/tabs/layout/layoutSelectors.js"; + import { ParameterDetail } from "./ParameterDetail.js"; interface IIdentifierDetailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx index a10fee99227..5c856c4d550 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillConfigPanel/DrillToUrl/ParameterDetails/WidgetIdParameterDetail.tsx @@ -7,6 +7,7 @@ import { type ObjRef, isInsightWidget } from "@gooddata/sdk-model"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectWidgetByRef } from "../../../../../model/store/tabs/layout/layoutSelectors.js"; import { isTemporaryIdentity } from "../../../../../model/utils/dashboardItemUtils.js"; + import { ParameterDetail } from "./ParameterDetail.js"; interface IIdentifierDetailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx index 1effe314367..982ff2529b8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdown.tsx @@ -49,6 +49,7 @@ import { } from "../utils/drillDownUtils.js"; import { getDrillToCustomUrlMissingAttributes } from "../utils/drillToCustomUrlUtils.js"; import { getKdaKeyDriverCombinations, getKeyDriverCombinationItemTitle } from "../utils/kdaUtils.js"; + import { DrillSelectDropdownMenuItem } from "./DrillSelectDropdownMenuItem.js"; import { DrillType, type IDrillSelectContext, type IDrillSelectItem } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx index f00214604b3..c71a65305ef 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/DrillSelectDropdownMenuItem.tsx @@ -6,6 +6,7 @@ import { compact } from "lodash-es"; import { type IUiMenuInteractiveItemProps, type IconType, UiIcon, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type IDrillSelectDropdownMenuItemData } from "../hooks/useDrillSelectDropdownMenuItems.js"; + import { DrillType } from "./types.js"; const DRILL_ICON_NAME: Record = { diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx index dfea73e1cd6..81c14b1c0c6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/drill/DrillSelect/WithDrillSelect.tsx @@ -46,6 +46,7 @@ import { type OnWidgetDrill, } from "../types.js"; import { filterDrillFromAttributeByPriority } from "../utils/drillDownUtils.js"; + import { DrillSelectDropdown } from "./DrillSelectDropdown.js"; import { type IDrillSelectContext } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts b/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts index ad762df767c..6e0ed15fcc8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts +++ b/libs/sdk-ui-dashboard/src/presentation/drill/hooks/useDrills.ts @@ -23,6 +23,7 @@ import { type OnKeyDriverAnalysisError, type OnKeyDriverAnalysisSuccess, } from "../types.js"; + import { useCrossFiltering } from "./useCrossFiltering.js"; import { useDrill } from "./useDrill.js"; import { useDrillDown } from "./useDrillDown.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx b/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx index 2ca9ade5aeb..431fc82e3d0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/export/DefaultDashboardExportVariables.tsx @@ -10,6 +10,7 @@ import { selectConfig } from "../../model/store/config/configSelectors.js"; import { selectDashboardDescriptor, selectDashboardId } from "../../model/store/meta/metaSelectors.js"; import { selectCurrentUser } from "../../model/store/user/userSelectors.js"; import { type RenderMode } from "../../types.js"; + import { useDashboardRelatedFilters } from "./hooks/useDashboardRelatedFilters.js"; import { type MetaExportDataAttributes } from "./types.js"; import { useMetaExportData, useMetaExportImageData, useMetaPaletteData } from "./useExportData.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts b/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts index 6f452377367..cfc57ef380b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts +++ b/libs/sdk-ui-dashboard/src/presentation/export/useExportData.ts @@ -23,6 +23,7 @@ import { selectInsightByWidgetRef } from "../../model/store/insights/insightsSel import { selectIsInExportMode } from "../../model/store/renderMode/renderModeSelectors.js"; import type { ExtendedDashboardWidget } from "../../model/types/layoutTypes.js"; import { type RenderMode } from "../../types.js"; + import { type CommonExportDataAttributes, type MetaExportData, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx index 53613dc89f2..9b2401d6952 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/AttributeFilterParentFilteringContext.tsx @@ -34,6 +34,7 @@ import { selectFilterContextDateFiltersWithDimension, selectOtherContextAttributeFilterItems, } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { useDependentDateFiltersConfiguration } from "./dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.js"; import { useDisplayFormConfiguration } from "./dashboardDropdownBody/configuration/hooks/useDisplayFormConfiguration.js"; import { useLimitingItemsConfiguration } from "./dashboardDropdownBody/configuration/hooks/useLimitingItemsConfiguration.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx index eae72988f0e..35841c3fa25 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/CreatableAttributeFilter.tsx @@ -14,6 +14,7 @@ import { selectIsWhiteLabeled } from "../../../model/store/config/configSelector import { selectCanAddMoreFilters } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; import type { ICreatePanelItemComponentProps } from "../../componentDefinition/types.js"; import { DraggableAttributeFilterCreatePanelItem } from "../../dragAndDrop/draggableAttributeFilter/DraggableAttributeFilterCreatePanelItem.js"; + import { AddAttributeFilterPlaceholder } from "./addAttributeFilter/AddAttributeFilterPlaceholder.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx index d76cb12022b..0c19b837204 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilter.tsx @@ -60,6 +60,7 @@ import { selectPreloadedAttributesWithReferences, } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; import { getVisibilityIcon } from "../utils.js"; + import { AttributeFilterParentFilteringProvider, useAttributeFilterParentFiltering, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts index e9866019516..9d2bd63cebf 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/DefaultDashboardAttributeFilterComponentSetFactory.ts @@ -3,6 +3,7 @@ import { type AttributeFilterComponentSet } from "../../componentDefinition/types.js"; import { type AttributeFilterComponentProvider } from "../../dashboardContexts/types.js"; import { DefaultAttributeFilterDraggingComponent } from "../../dragAndDrop/draggableAttributeFilter/DefaultAttributeFilterDraggingComponent.js"; + import { AttributesDropdown } from "./addAttributeFilter/AttributesDropdown.js"; import { CreatableAttributeFilter } from "./CreatableAttributeFilter.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx index 70d014703f5..1087cc6ed0c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx @@ -30,6 +30,7 @@ import { import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; import { selectAllInsightWidgets } from "../../../../model/store/tabs/layout/layoutSelectors.js"; import { type IDashboardAttributeFilterPlaceholderProps } from "../types.js"; + import { AddAttributeFilterButton } from "./AddAttributeFilterButton.js"; import { isLocationIconEnabled } from "./addAttributeFilterUtils.js"; import { AttributeListItem, getAttributeListItemTitle } from "./AttributeListItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx index d0350505eb6..e9ce90a8f5f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/addAttributeFilter/attributeListItemTooltip/AttributeListItemTooltip.tsx @@ -7,6 +7,7 @@ import { Bubble, BubbleHoverTrigger, type IAlignPoint } from "@gooddata/sdk-ui-k import { useAttributeDataSet } from "../../dashboardDropdownBody/configuration/hooks/useAttributeDataSet.js"; import { useAttributeElements } from "../../dashboardDropdownBody/configuration/hooks/useAttributeElements.js"; + import { AttributeListItemTooltipContent } from "./AttributeListItemTooltipContent.js"; const ATTR_ELEMENTS_LIMIT: number = 5; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx index fcde23426ef..a2f6f5b4774 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/AttributeFilterConfiguration.tsx @@ -31,6 +31,7 @@ import { import { ConfigModeSelect } from "../../../configuration/ConfigurationModeSelect.js"; import { AttributeTitleRenaming } from "../../../configuration/title/AttributeTitleRenaming.js"; import { useAttributeFilterParentFiltering } from "../../AttributeFilterParentFilteringContext.js"; + import { ConfigurationCategory } from "./ConfigurationCategory.js"; import { ConfigurationPanelHeader } from "./ConfigurationPanelHeader.js"; import { AttributeDisplayFormsDropdown } from "./displayForms/AttributeDisplayFormsDropdown.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx index 7eb79926f1b..752700f541e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/connectingAttribute/ConnectingAttributeDropdown.tsx @@ -6,6 +6,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { Dropdown, DropdownButton, DropdownList } from "@gooddata/sdk-ui-kit"; import { type IConnectingAttribute } from "../../../../../../model/types/attributeFilterTypes.js"; + import { ConnectingAttributeItem } from "./ConnectingAttributeItem.js"; interface IConnectingAttributeDropdownProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts index ac89e5dca4d..e847aca82a1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useDependentDateFiltersConfiguration.ts @@ -10,6 +10,7 @@ import { type IDashboardAttributeFilter, type IDashboardDateFilter, isUriRef } f import { setAttributeFilterDependentDateFilters } from "../../../../../../model/commands/filters.js"; import { useDispatchDashboardCommand } from "../../../../../../model/react/useDispatchDashboardCommand.js"; import { type IDashboardDependentDateFilter } from "../../../../../../model/types/dateFilterTypes.js"; + import { useDependentCommonDateFilterConfigurationState, useDependentDateFilterConfigurationState, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts index b3aa8f4d62a..cbceeb4b21b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useParentsConfiguration.ts @@ -16,6 +16,7 @@ import { useBackend } from "@gooddata/sdk-ui"; import { setAttributeFilterParents } from "../../../../../../model/commands/filters.js"; import { useDispatchDashboardCommand } from "../../../../../../model/react/useDispatchDashboardCommand.js"; import { type IDashboardAttributeFilterParentItem } from "../../../../../../model/types/attributeFilterTypes.js"; + import { useOriginalConfigurationState } from "./useOriginalConfigurationState.js"; export function useParentsConfiguration( diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx index b12119286ba..a6f325ab243 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.tsx @@ -28,6 +28,7 @@ import { } from "../../../../../../model/types/dateFilterTypes.js"; import { IntlWrapper } from "../../../../../localization/IntlWrapper.js"; import { type ValuesLimitingItem } from "../../../types.js"; + import { AddLimitingItemDialog } from "./dialog/AddLimitingItemDialog.js"; import { LimitingItem } from "./shared/LimitingItem.js"; import { useLimitingItems } from "./shared/limitingItemsHook.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx index 8813daec0a0..0be3c6338ec 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ActionSelectionPage.tsx @@ -12,6 +12,7 @@ import { messages } from "../../../../../../../locales.js"; import { useDashboardSelector } from "../../../../../../../model/react/DashboardStoreProvider.js"; import { useDashboardUserInteraction } from "../../../../../../../model/react/useDashboardUserInteraction.js"; import { selectIsWhiteLabeled } from "../../../../../../../model/store/config/configSelectors.js"; + import { PopupHeader } from "./PopupHeader.js"; interface IActionProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx index 2eeb036d34f..ff124fc583a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/AddLimitingItemDialog.tsx @@ -9,6 +9,7 @@ import { type IDashboardAttributeFilterParentItem } from "../../../../../../../m import { type IDashboardDependentDateFilter } from "../../../../../../../model/types/dateFilterTypes.js"; import { ConfigurationBubble } from "../../../../../../widget/common/configuration/ConfigurationBubble.js"; import { type ValuesLimitingItem } from "../../../../types.js"; + import { ActionSelectionPage } from "./ActionSelectionPage.js"; import { DateFiltersPage } from "./DateFiltersPage.js"; import { LimitingItemsPage } from "./LimitingItemsPage.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx index 8de1716456f..afed42b8590 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/DateFiltersPage.tsx @@ -22,6 +22,7 @@ import { useCommonDateItems, useDependentDateFilterTitle, } from "../shared/limitingItemsHook.js"; + import { PopupHeader } from "./PopupHeader.js"; import { WithDisabledParentFilterTooltip } from "./WithDisabledParentFilterTooltip.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx index bded3548a46..d01407a45eb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/LimitingItemsPage.tsx @@ -17,6 +17,7 @@ import { type IValuesLimitingItemWithTitle, useSearchableLimitingItems, } from "../shared/limitingItemsHook.js"; + import { PopupHeader } from "./PopupHeader.js"; import { getTelemetryEventForLimitingItem } from "./telemetryUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx index 5c7c732b658..c99bc94cd1c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.tsx @@ -26,6 +26,7 @@ import { import { type ValuesLimitingItem } from "../../../../types.js"; import { LimitingItemTitle, UnknownItemTitle } from "../shared/LimitingItem.js"; import { type IValuesLimitingItemWithTitle, useFilterItems } from "../shared/limitingItemsHook.js"; + import { PopupHeader } from "./PopupHeader.js"; import { WithDisabledParentFilterTooltip } from "./WithDisabledParentFilterTooltip.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx index 76600d583ba..9aaf3e6a382 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersList.tsx @@ -9,6 +9,7 @@ import { type IConnectingAttribute, type IDashboardAttributeFilterParentItem, } from "../../../../../../model/types/attributeFilterTypes.js"; + import { ParentFiltersListItem } from "./ParentFiltersListItem.js"; import { ParentFiltersListItemWithoutConnectingAttributes } from "./ParentFiltersListItemWithoutConnectingAttributes.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx index 55086edab86..460aff02296 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItem.tsx @@ -15,6 +15,7 @@ import { type IDashboardAttributeFilterParentItem, } from "../../../../../../model/types/attributeFilterTypes.js"; import { ConnectingAttributeDropdown } from "../connectingAttribute/ConnectingAttributeDropdown.js"; + import { ParentFiltersDisabledItem } from "./ParentFiltersDisabledItem.js"; export interface IConfigurationParentItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx index a02e5d1828f..fb7384bacf9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/parentFilters/ParentFiltersListItemWithoutConnectingAttributes.tsx @@ -8,6 +8,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { simplifyText } from "@gooddata/util"; import { type IDashboardAttributeFilterParentItem } from "../../../../../../model/types/attributeFilterTypes.js"; + import { ParentFiltersDisabledItem } from "./ParentFiltersDisabledItem.js"; interface IConfigurationParentItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx index c7ecc926d2a..a240b0d3d17 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/selectionMode/SelectionMode.tsx @@ -4,6 +4,7 @@ import { type DashboardAttributeFilterSelectionMode } from "@gooddata/sdk-model" import { Dropdown, DropdownList, type IAlignPoint } from "@gooddata/sdk-ui-kit"; import { ConfigurationCategory } from "../ConfigurationCategory.js"; + import { SelectionModeButton } from "./SelectionModeButton.js"; import { SelectionModeItem } from "./SelectionModeItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts index 1c69d543b55..77770cc40e4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/attributeFilter/types.ts @@ -16,6 +16,7 @@ import { type IDashboardAttributeFilterParentItem } from "../../../model/types/a import { type IDashboardDependentDateFilter } from "../../../model/types/dateFilterTypes.js"; import type { IFilterBarFilterGroupItem } from "../filterBar/useFiltersWithAddedPlaceholder.js"; import { type DashboardFilterSelectionType } from "../filterSelectionTypes.js"; + import { type IAddAttributeFilterButtonProps } from "./addAttributeFilter/AddAttributeFilterButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx index 35cf98d486c..5ee8bf49974 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/configuration/ConfigurationModeSelect.tsx @@ -5,6 +5,7 @@ import { type ChangeEvent, useCallback } from "react"; import { type IntlShape } from "react-intl/src/types.js"; import { messages } from "../../../locales.js"; + import { ModeSelectItem } from "./ConfigurationModeSelectItem.js"; export interface IConfigModeSelectProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx index f78d922d47d..37722bf132a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx @@ -32,6 +32,7 @@ import { import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js"; import { useCurrentDateFilterConfig } from "../../dragAndDrop/useCurrentDateFilterConfig.js"; import { getVisibilityIcon } from "../utils.js"; + import { DateFilterConfigurationBody } from "./configuration/DateFilterConfigurationBody.js"; import { type IDashboardDateFilterProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx index f4ec21f5d6b..0a7d0acad40 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/configuration/DateFilterConfigurationBody.tsx @@ -15,6 +15,7 @@ import { ConfigModeSelect } from "../../configuration/ConfigurationModeSelect.js import { ConfigurationPanelHeader } from "../../configuration/ConfigurationPanelHeader.js"; import { AttributeTitleRenaming } from "../../configuration/title/AttributeTitleRenaming.js"; import { useDateFilterConfig } from "../useDateFilterConfig.js"; + import { DateFilterConfigurationActions } from "./DateFilterConfigurationActions.js"; interface IDateFilterConfigurationProps extends IFilterConfigurationProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts index 92d33b6ab11..748d4824e76 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/useDateFilterConfig.ts @@ -10,6 +10,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { useDispatchDashboardCommand } from "../../../model/react/useDispatchDashboardCommand.js"; import { selectDateFilterConfigOverrides } from "../../../model/store/tabs/dateFilterConfig/dateFilterConfigSelectors.js"; import { selectDateFilterConfigsOverrides } from "../../../model/store/tabs/dateFilterConfigs/dateFilterConfigsSelectors.js"; + import { useDateFilterTitleConfiguration } from "./configuration/hooks/useDateFilterTitleConfiguration.js"; export const useDateFilterConfig = (dateDataSet: ObjRef | undefined, defaultDateFilterTitle: string) => { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx index 5029ae19520..1d710aaa13a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultDashboardFilterGroup.tsx @@ -40,6 +40,7 @@ import { } from "../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js"; import { DefaultDashboardAttributeFilter } from "../attributeFilter/DefaultDashboardAttributeFilter.js"; import type { IDashboardFilterGroupProps } from "../attributeFilter/types.js"; + import { type FilterBarAttributeFilterIndexed, isFilterBarAttributeFilter, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx index 8630949aaf0..430e807a357 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBar.tsx @@ -74,6 +74,7 @@ import { type IDashboardDateFilterConfig } from "../dateFilter/types.js"; import { AddFilterMenu } from "../parameterFilter/AddFilterMenu.js"; import { DashboardParameterFilter } from "../parameterFilter/DashboardParameterFilter.js"; import { areAllFiltersHidden } from "../utils.js"; + import { DefaultFilterBarContainer } from "./DefaultFilterBarContainer.js"; import { DefaultFilterBarItem } from "./DefaultFilterBarItem.js"; import { groupFilterItems } from "./filterGroupUtils.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx index 54c898817b4..5389a48bb7e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarContainer.tsx @@ -45,6 +45,7 @@ import { } from "../../../model/store/tabs/filterContext/filterContextSelectors.js"; import { BulletsBar as FlexibleBulletsBar } from "../../flexibleLayout/dragAndDrop/Resize/BulletsBar.js"; import { IntlWrapper } from "../../localization/IntlWrapper.js"; + import { FilterViews } from "./filterViews/FilterViews.js"; import { useFilterBarState } from "./hooks/useFilterBarState.js"; import { useFilterExpansionByDragAndDrop } from "./hooks/useFilterExpansionByDragAndDrop.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx index 57d1cf5db84..fde3e30a8f7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/DefaultFilterBarItem.tsx @@ -49,6 +49,7 @@ import { DraggableDateFilter } from "../../dragAndDrop/draggableDateFilter/Dragg import { DraggableMeasureValueFilter } from "../../dragAndDrop/draggableMeasureValueFilter/DraggableMeasureValueFilter.js"; import { type IDashboardDateFilterConfig } from "../dateFilter/types.js"; import { type DashboardFilterSelectionType } from "../filterSelectionTypes.js"; + import { DefaultDashboardFilterGroup } from "./DefaultDashboardFilterGroup.js"; import { type IFilterBarProps } from "./types.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx index bcae7d0ade4..bb7f2476ee6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/FilterBar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IFilterBarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx index 2a541e3f985..1421cb361fd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/RenderModeAwareFilterBar.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DefaultFilterBar } from "./DefaultFilterBar.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx index b25f1f2d9bd..0eea3c4a89e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/ResetFiltersButton.tsx @@ -9,6 +9,7 @@ import { IconReset, UiTooltip } from "@gooddata/sdk-ui-kit"; import { useEventToastMessage } from "../../../_staging/sharedHooks/useEventToastMessage.js"; import { messages } from "../../../locales.js"; import { isDashboardFilterContextSelectionReset } from "../../../model/events/filters.js"; + import { useResetFiltersButton } from "./hooks/useResetFiltersButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx index a60320efdc9..afcbb81bc3d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViews.tsx @@ -38,6 +38,7 @@ import { selectIsFilterViewsDialogOpen, } from "../../../../model/store/ui/uiSelectors.js"; import { ConfigurationBubble } from "../../../widget/common/configuration/ConfigurationBubble.js"; + import { AddFilterView } from "./AddFilterView.js"; import { FilterViewsList } from "./FilterViewsList.js"; import { useFilterViewsToastMessages } from "./useFilterViewsToastMessages.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx index 763543de0aa..04b3e207b35 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/filterViews/FilterViewsList.tsx @@ -35,6 +35,7 @@ import { } from "../../../../model/react/DashboardStoreProvider.js"; import { selectFilterViewsAreLoading } from "../../../../model/store/filterViews/filterViewsReducersSelectors.js"; import { selectCanCreateFilterView } from "../../../../model/store/permissions/permissionsSelectors.js"; + import { FilterViewDeleteConfirm } from "./FilterViewDeleteConfirm.js"; type IAction = "setDefault" | "delete" | typeof SELECT_ITEM_ACTION; diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts index efbb343280a..17c194a3d52 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/filterBar/hooks/useFilterBarState.ts @@ -8,6 +8,7 @@ import { } from "../../../../model/react/DashboardStoreProvider.js"; import { uiActions } from "../../../../model/store/ui/index.js"; import { selectFilterBarExpanded } from "../../../../model/store/ui/uiSelectors.js"; + import { type CalculatedRows, CalculatedRowsDefault } from "./useRowsCalculator.js"; //NOTE: This 1px is size of border bottom on filter bar diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx index 0f3392ce0f9..e064af6f59d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/measureValueFilter/DefaultDashboardMeasureValueFilter.tsx @@ -40,6 +40,7 @@ import { selectWorkingFilterContextMeasureValueFilterByLocalId } from "../../../ import { selectMeasureValueFilterConfigsModeMap } from "../../../model/store/tabs/measureValueFilterConfigs/measureValueFilterConfigsSelectors.js"; import { useAttributeFilterConfigTexts } from "../attributeFilter/useAttributeFilterConfigTexts.js"; import { getVisibilityIcon } from "../utils.js"; + import { CustomConfigureMeasureValueFilterDropdownActions, CustomMeasureValueFilterDropdownActions, diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts index 52c5574b789..2de05b11bd1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/tests/utils.test.ts @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-model"; import { areAllFiltersHidden, getVisibilityIcon } from "../utils.js"; + import { filterBarAttributeFilterIndexes } from "./filterBar.fixture.js"; describe("utils", () => { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts b/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts index f8ff399a3b4..2ae1ddb8e58 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/utils.ts @@ -14,6 +14,7 @@ import { import { type IFilterButtonCustomIcon, type VisibilityMode } from "@gooddata/sdk-ui-filters"; import { messages } from "../../locales.js"; + import { type FilterBarDraggableItems, type FilterBarItem, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx index 7d1f7b266f7..fbb9bdb3516 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardItemOverlay/DashboardItemOverlayController.tsx @@ -5,6 +5,7 @@ import { useDashboardDispatch, useDashboardSelector } from "../../../model/react import { uiActions } from "../../../model/store/ui/index.js"; import { selectSectionModification, selectWidgetsOverlayState } from "../../../model/store/ui/uiSelectors.js"; import { getRefsForSection } from "../refs.js"; + import { DashboardItemOverlay } from "./DashboardItemOverlay.js"; interface IDashboardLayoutSectionOverlayControllerProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx index 2327a2aef73..c3a60453d69 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DashboardLayoutWidget.tsx @@ -61,6 +61,7 @@ import { useDashboardDrag } from "../dragAndDrop/useDashboardDrag.js"; import { useWidgetExportData } from "../export/useExportData.js"; import { DashboardWidget } from "../widget/widget/DashboardWidget.js"; import { type IDashboardWidgetProps } from "../widget/widget/types.js"; + import { DEFAULT_COLUMN_CLIENT_WIDTH, DEFAULT_WIDTH_RESIZER_HEIGHT } from "./constants.js"; import { DashboardItemOverlay } from "./DashboardItemOverlay/DashboardItemOverlay.js"; import { type IDashboardLayoutWidgetRenderProps } from "./DefaultDashboardLayoutRenderer/interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx index 0d4981456aa..d4f9a6e37e4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayout.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IDashboardLayoutProps } from "../widget/dashboardLayout/types.js"; + import { DefaultFlexibleDashboardLayout } from "./DefaultFlexibleDashboardLayout.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx index ac3e39a0e86..671474ba210 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayout.tsx @@ -16,6 +16,7 @@ import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeCon import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js"; import { useDashboardExportData } from "../../export/useExportData.js"; import { SectionHotspot } from "../dragAndDrop/draggableWidget/SectionHotspot.js"; + import { DashboardLayoutSection } from "./DashboardLayoutSection.js"; import { GridLayoutElement } from "./GridLayoutElement.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx index 86f542e53c2..8830e47d700 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeader.tsx @@ -10,6 +10,7 @@ import { useDashboardSelector } from "../../../model/react/DashboardStoreProvide import { selectIsSectionInsertedByPlugin } from "../../../model/store/ui/uiSelectors.js"; import { SectionHotspot } from "../dragAndDrop/draggableWidget/SectionHotspot.js"; import { getRefsForSection } from "../refs.js"; + import { SectionHeaderEditable } from "./EditableHeader/SectionHeaderEditable.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx index 3452fe9bc58..17ea857beef 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutEditSectionHeaderRenderer.tsx @@ -6,6 +6,7 @@ import { type IDashboardLayoutSectionFacade } from "../../../_staging/dashboard/ import { determineWidthForScreen } from "../../../_staging/layout/sizing.js"; import { isInitialPlaceholderWidget } from "../../../widgets/placeholders/types.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { DashboardLayoutEditSectionHeader } from "./DashboardLayoutEditSectionHeader.js"; import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx index d3be2513578..f4919925b07 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutExportSectionHeaderRenderer.tsx @@ -7,6 +7,7 @@ import { isEmpty } from "lodash-es"; import { determineWidthForScreen } from "../../../_staging/layout/sizing.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; import { useSectionDescriptionExportData } from "../../export/useExportData.js"; + import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { DashboardLayoutViewSectionHeader } from "./DashboardLayoutViewSectionHeaderRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx index 3798ba8bc98..dd878fa49cb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRow.tsx @@ -9,6 +9,7 @@ import { import { serializeLayoutItemPath } from "../../../_staging/layout/coordinates.js"; import { type RenderMode } from "../../../types.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { DashboardLayoutItem } from "./DashboardLayoutItem.js"; import { type IDashboardLayoutGridRowRenderer, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx index b2baf0a7258..5f3b410117e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutGridRowEdit.tsx @@ -11,6 +11,7 @@ import { type ExtendedDashboardWidget } from "../../../model/types/layoutTypes.j import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; import { useIsDraggingWidget } from "../../dragAndDrop/draggableWidget/useIsDraggingWidget.js"; import { HeightResizerHotspot } from "../dragAndDrop/Resize/HeightResizerHotspot.js"; + import { type IDashboardLayoutGridRowProps } from "./DashboardLayoutGridRow.js"; import { DashboardLayoutItem } from "./DashboardLayoutItem.js"; import { type IDashboardLayoutItemKeyGetter } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx index 7e3c43345d2..bf58a9e4c45 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItem.tsx @@ -4,6 +4,7 @@ import { type ReactElement } from "react"; import { type IDashboardLayoutItemFacade } from "../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; import { type RenderMode } from "../../../types.js"; + import { DashboardLayoutItemRenderer } from "./DashboardLayoutItemRenderer.js"; import { DashboardLayoutWidgetRenderer } from "./DashboardLayoutWidgetRenderer.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx index e390e5835f9..ba19d59db26 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemRenderer.tsx @@ -6,6 +6,7 @@ import { isCustomWidgetBase } from "../../../model/types/layoutTypes.js"; import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; import { RowEndHotspot } from "../dragAndDrop/draggableWidget/RowEndHotspot.js"; import { useIsDraggingCurrentItem } from "../dragAndDrop/draggableWidget/useIsDraggingCurrentItem.js"; + import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutItemRenderProps, type IDashboardLayoutItemRenderer } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx index 7714237c522..33f363f763d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.tsx @@ -8,6 +8,7 @@ import { type ScreenSize } from "@gooddata/sdk-model"; import { type IDashboardLayoutItemFacade } from "../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { GridLayoutElement } from "./GridLayoutElement.js"; import { type IDashboardLayoutItemRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx index 84328c10b35..2a609a3320c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSection.tsx @@ -14,6 +14,7 @@ import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeCon import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js"; import { useSectionExportData } from "../../export/useExportData.js"; import { DashboardLayoutSectionOverlayController } from "../DashboardItemOverlay/DashboardItemOverlayController.js"; + import { DashboardLayoutGridRow } from "./DashboardLayoutGridRow.js"; import { DashboardLayoutGridRowEdit } from "./DashboardLayoutGridRowEdit.js"; import { DashboardLayoutSectionHeaderRenderer } from "./DashboardLayoutSectionHeaderRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx index f4b3c7117cc..6fd11d5b20b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutSectionHeaderRenderer.tsx @@ -4,6 +4,7 @@ import { type ReactElement, useMemo } from "react"; import { determineWidthForScreen } from "../../../_staging/layout/sizing.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { DashboardLayoutItemViewRenderer } from "./DashboardLayoutItemViewRenderer.js"; import { DashboardLayoutViewSectionHeader } from "./DashboardLayoutViewSectionHeaderRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx index fcbcc8e6f95..e1e309a4a50 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutViewSectionHeaderRenderer.tsx @@ -15,6 +15,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; import { type HeaderExportData } from "../../export/types.js"; + import { DashboardLayoutSectionHeaderDescription } from "./DashboardLayoutSectionHeaderDescription.js"; export interface IDashboardLayoutSectionHeaderProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx index 76b4b2a855b..916c7892d0d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/DashboardLayoutWidgetRenderer.tsx @@ -10,6 +10,7 @@ import { selectIsExport, } from "../../../model/store/config/configSelectors.js"; import { useScreenSize } from "../../dashboard/components/DashboardScreenSizeContext.js"; + import { type IDashboardLayoutWidgetRenderProps } from "./interfaces.js"; export function DashboardLayoutWidgetRenderer({ diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx index 84667984f68..029191a4943 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableDashboardLayoutSectionRenderer.tsx @@ -7,6 +7,7 @@ import { selectActiveSection } from "../../../model/store/ui/uiSelectors.js"; import { useIsDraggingWidget } from "../../dragAndDrop/draggableWidget/useIsDraggingWidget.js"; import { DashboardLayoutSectionBorder } from "../dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorder.js"; import { type DashboardLayoutSectionBorderStatus } from "../dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/types.js"; + import { GridLayoutElement } from "./GridLayoutElement.js"; import { type IDashboardLayoutSectionRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx index f9bb0226fd7..bc50643e076 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/EditableHeader/SectionHeaderEditable.tsx @@ -23,6 +23,7 @@ import { import { uiActions } from "../../../../model/store/ui/index.js"; import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js"; + import { EditableLabelWithBubble } from "./EditableLabelWithBubble.js"; import { DESCRIPTION_LENGTH_WARNING_LIMIT, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx index 3b8acd68f97..b5d25bda602 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/ExportableDashboardLayoutSectionRenderer.tsx @@ -1,6 +1,7 @@ // (C) 2007-2026 GoodData Corporation import { useSlideSizeStyle } from "../../dashboardContexts/useSlideData.js"; + import { GridLayoutElement } from "./GridLayoutElement.js"; import { type IDashboardLayoutSectionRenderProps } from "./interfaces.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx index bb590d182d9..1fdd5d84c2c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/GridLayoutElement.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { type IDashboardLayoutSizeByScreenSize } from "@gooddata/sdk-model"; import { type CommonExportDataAttributes } from "../../export/types.js"; + import { useWidthValidation } from "./useItemWidthValidation.js"; export type LayoutElementType = "root" | "nested" | "section" | "item" | "leaf-item"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx index ece212bd07c..69bc5d7c29e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionHeaderRenderer.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DashboardLayoutEditSectionHeaderRenderer } from "./DashboardLayoutEditSectionHeaderRenderer.js"; import { DashboardLayoutExportSectionHeaderRenderer } from "./DashboardLayoutExportSectionHeaderRenderer.js"; import { DashboardLayoutSectionHeaderRenderer } from "./DashboardLayoutSectionHeaderRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx index 9b0a542e0f0..6795b1d4c63 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutRenderer/RenderModeAwareDashboardLayoutSectionRenderer.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DashboardLayoutSectionRenderer } from "./DashboardLayoutSectionRenderer.js"; import { EditableDashboardLayoutSectionRenderer } from "./EditableDashboardLayoutSectionRenderer.js"; import { ExportableDashboardLayoutSectionRenderer } from "./ExportableDashboardLayoutSectionRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts index 486b31d1220..7d2183a24b9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultDashboardLayoutUtils.ts @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-model"; import { type DashboardLayoutItemModifications } from "../../_staging/dashboard/flexibleLayout/builder/interfaces.js"; + import { validateDashboardLayoutWidgetSize } from "./DefaultDashboardLayoutRenderer/utils/sizing.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx index ff1e1e71cc8..91c84da7fca 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/DefaultFlexibleDashboardLayout.tsx @@ -28,6 +28,7 @@ import { useScreenSize } from "../dashboard/components/DashboardScreenSizeContex import { useDashboardCustomizationsContext } from "../dashboardContexts/DashboardCustomizationsContext.js"; import { DefaultDashboardExportVariables } from "../export/DefaultDashboardExportVariables.js"; import { type IDashboardLayoutProps } from "../widget/dashboardLayout/types.js"; + import { DashboardLayoutWidget } from "./DashboardLayoutWidget.js"; import { DashboardLayout } from "./DefaultDashboardLayoutRenderer/DashboardLayout.js"; import { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts index f15232fdbb7..cef09d2335a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardLayout.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../componentDefinition/renderModeAware.js"; + import { EmptyDashboardDropZone } from "./dragAndDrop/draggableWidget/EmptyDashboardDropZone.js"; import { EmptyDashboardError } from "./EmptyDashboardError.js"; import { ExportEmptyDashboardError } from "./ExportEmptyDashboardError.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts index 0046b253b56..aae83d78982 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/EmptyDashboardNestedLayout.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../componentDefinition/renderModeAware.js"; + import { EmptyNestedLayoutDropZone } from "./dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.js"; import { ViewModeEmptyNestedLayout } from "./ViewModeEmptyNestedLayout.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx index 8e53971895e..5cf8b9a9893 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/ExportEmptyDashboardError.tsx @@ -1,6 +1,7 @@ // (C) 2020-2026 GoodData Corporation import { useDashboardExportData } from "../export/useExportData.js"; + import { EmptyDashboardError } from "./EmptyDashboardError.js"; export function ExportEmptyDashboardError() { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx index 4342b60a6c8..01d14b9a7c3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayer.tsx @@ -13,6 +13,7 @@ import { type DraggableItemType, isDraggableInternalItemType, } from "../../dragAndDrop/types.js"; + import { ContentDragPreview } from "./DragLayerPreview/ContentDragPreview.js"; import { HeightResizerDragPreview } from "./DragLayerPreview/HeightResizerDragPreview.js"; import { WidthResizerDragPreview } from "./DragLayerPreview/WidthResizerDragPreview.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx index 576816aef80..b9a44bc1d72 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/HeightResizerDragPreview.tsx @@ -11,6 +11,7 @@ import { import { useResizeHandlers } from "../../../dragAndDrop/LayoutResizeContext.js"; import { type IHeightResizerDragItem } from "../../../dragAndDrop/types.js"; import { HeightResizer } from "../Resize/HeightResizer.js"; + import { getLimitedSize } from "./sizeLimiting.js"; export type HeightResizerDragPreviewProps = DragResizeProps; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx index d2bf183003e..7a0ccf8866e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/DragLayerPreview/WidthResizerDragPreview.tsx @@ -9,6 +9,7 @@ import { type DragResizeProps } from "../../../dragAndDrop/DragLayerPreview/type import { useResizeHandlers } from "../../../dragAndDrop/LayoutResizeContext.js"; import { type IWidthResizerDragItem } from "../../../dragAndDrop/types.js"; import { WidthResizer } from "../Resize/WidthResizer.js"; + import { applySizeLimitation } from "./sizeLimiting.js"; export type WidthResizerDragPreviewProps = DragResizeProps; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx index 50bef69967d..d4fb28fb95c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/HeightResizerHotspot.tsx @@ -34,6 +34,7 @@ import { HoveredWidgetContext } from "../../../dragAndDrop/HoveredWidgetContext. import { useResizeContext } from "../../../dragAndDrop/LayoutResizeContext.js"; import { useDashboardDrag } from "../../../dragAndDrop/useDashboardDrag.js"; import { DEFAULT_WIDTH_RESIZER_HEIGHT } from "../../constants.js"; + import { HeightResizer } from "./HeightResizer.js"; export type HeightResizerHotspotProps = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx index e4c8d44552c..91764027b5d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/Resize/WidthResizerHotspot.tsx @@ -27,6 +27,7 @@ import { useResizeHandlers, useResizeWidthItemStatus } from "../../../dragAndDro import { useDashboardDrag } from "../../../dragAndDrop/useDashboardDrag.js"; import { getDashboardLayoutItemMaxGridWidth } from "../../DefaultDashboardLayoutRenderer/utils/sizing.js"; import { getSizeAndXCoords } from "../DragLayerPreview/WidthResizerDragPreview.js"; + import { WidthResizer } from "./WidthResizer.js"; export type WidthResizerHotspotProps = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx index 2101c94282f..2c86b397c3c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/DashboardLayoutSectionBorder/DashboardLayoutSectionBorderLine.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { type IDashboardLayoutSizeByScreenSize } from "@gooddata/sdk-model"; import { GridLayoutElement } from "../../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; + import { DashboardLayoutSectionBorderMarker } from "./DashboardLayoutSectionBorderMarker.js"; import { type DashboardLayoutSectionBorderStatus } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx index 7c140c10ef2..67341c86683 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.tsx @@ -10,6 +10,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { useDashboardComponentsContext } from "../../../dashboardContexts/DashboardComponentsContext.js"; import { type BaseDraggableLayoutItem, type DraggableItemType } from "../../../dragAndDrop/types.js"; import { GridLayoutElement } from "../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; + import { useEmptyContentHandlers } from "./useEmptyContentHandlers.js"; const widgetCategoryMapping: Partial<{ [D in DraggableItemType]: string }> = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx index d5b3d44153d..e831d4a1352 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/EmptyNestedLayoutDropZone.tsx @@ -9,6 +9,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { useDashboardItemPathAndSize } from "../../../dashboard/components/DashboardItemPathAndSizeContext.js"; import { type DraggableItemType } from "../../../dragAndDrop/types.js"; + import { useEmptyContentHandlers } from "./useEmptyContentHandlers.js"; import { useWidgetDragHoverHandlers } from "./useWidgetDragHoverHandlers.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx index c867468c5c7..07656d83805 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/Hotspot.tsx @@ -24,6 +24,7 @@ import { isVisualizationSwitcherDraggableItem, } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; + import { useDashboardLayoutPlaceholderDropHandler } from "./useDashboardLayoutPlaceholderDropHandler.js"; import { useInsightListItemDropHandler } from "./useInsightListItemDropHandler.js"; import { useInsightPlaceholderDropHandler } from "./useInsightPlaceholderDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx index 070a03ab176..6325bfb5523 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/RowEndHotspot.tsx @@ -20,6 +20,7 @@ import { useScreenSize } from "../../../dashboard/components/DashboardScreenSize import { useIsDraggingWidget } from "../../../dragAndDrop/draggableWidget/useIsDraggingWidget.js"; import { GridLayoutElement } from "../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; import { getRemainingHeightInColumn, getRemainingWidthInRow } from "../../rowEndHotspotHelper.js"; + import { Hotspot } from "./Hotspot.js"; import { WidgetDropZoneColumn } from "./WidgetDropZoneColumn.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx index 8774c5b898b..7942e7ba9af 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/SectionHotspot.tsx @@ -13,6 +13,7 @@ import { getDropZoneDebugStyle } from "../../../dragAndDrop/debug.js"; import { draggableWidgetDropHandler } from "../../../dragAndDrop/draggableWidget/draggableWidgetDropHandler.js"; import { isBaseDraggableMovingItem } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; + import { SectionDropZoneBox } from "./SectionDropZoneBox.js"; import { useMoveWidgetToNewSectionDropHandler } from "./useMoveWidgetToNewSectionDropHandler.js"; import { useNewSectionDashboardLayoutPlaceholderDropHandler } from "./useNewSectionDashboardLayoutPlaceholderDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx index 264e66e043e..57a797215ed 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZone.tsx @@ -2,6 +2,7 @@ import { hasParent } from "../../../../_staging/layout/coordinates.js"; import { type ILayoutItemPath } from "../../../../types.js"; + import { WidgetDropZoneBox } from "./WidgetDropZoneBox.js"; export type WidgetDropZoneProps = { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx index 4c0640c37ea..3ee573eedce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/WidgetDropZoneColumn.tsx @@ -21,6 +21,7 @@ import { draggableWidgetDropHandler } from "../../../dragAndDrop/draggableWidget import { type BaseDraggableLayoutItem } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; import { GridLayoutElement } from "../../DefaultDashboardLayoutRenderer/GridLayoutElement.js"; + import { useDashboardLayoutPlaceholderDropHandler } from "./useDashboardLayoutPlaceholderDropHandler.js"; import { useInsightListItemDropHandler } from "./useInsightListItemDropHandler.js"; import { useInsightPlaceholderDropHandler } from "./useInsightPlaceholderDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts index 7a4c68baeaa..73a384a665c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useDashboardLayoutPlaceholderDropHandler.ts @@ -12,6 +12,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useDashboardLayoutPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts index 8dfe025bdbe..40b73d97da3 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useEmptyContentHandlers.ts @@ -14,6 +14,7 @@ import { isVisualizationSwitcherDraggableListItem, } from "../../../dragAndDrop/types.js"; import { useDashboardDrop } from "../../../dragAndDrop/useDashboardDrop.js"; + import { useMoveWidgetToNewSectionDropHandler } from "./useMoveWidgetToNewSectionDropHandler.js"; import { useNewSectionDashboardLayoutPlaceholderDropHandler } from "./useNewSectionDashboardLayoutPlaceholderDropHandler.js"; import { useNewSectionInsightListItemDropHandler } from "./useNewSectionInsightListItemDropHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts index 51f8ad03aaf..8d6e8fff1ce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightListItemDropHandler.ts @@ -25,6 +25,7 @@ import { selectSettings } from "../../../../model/store/config/configSelectors.j import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { newLoadingPlaceholderWidget } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useInsightListItemDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts index c608f590d39..b25681acd46 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useInsightPlaceholderDropHandler.ts @@ -18,6 +18,7 @@ import { INSIGHT_PLACEHOLDER_WIDGET_ID, newInsightPlaceholderWidget, } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useInsightPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts index 7fa84cff38d..64befdbed0f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionDashboardLayoutPlaceholderDropHandler.ts @@ -13,6 +13,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionDashboardLayoutPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts index f9729b4e797..e4650845215 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightListItemDropHandler.ts @@ -22,6 +22,7 @@ import { selectSettings } from "../../../../model/store/config/configSelectors.j import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { newLoadingPlaceholderWidget } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionInsightListItemDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts index 1f3704376a8..257ece57a42 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionInsightPlaceholderDropHandler.ts @@ -19,6 +19,7 @@ import { INSIGHT_PLACEHOLDER_WIDGET_ID, newInsightPlaceholderWidget, } from "../../../../widgets/placeholders/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionInsightPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts index 1ac49356cb3..7466bd6ecf5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionRichTextPlaceholderDropHandler.ts @@ -16,6 +16,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionRichTextPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts index 7d71d36a593..b8f3cfa6a03 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useNewSectionVisualizationSwitcherPlaceholderDropHandler.ts @@ -13,6 +13,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutSectionPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useNewSectionVisualizationSwitcherPlaceholderDropHandler(sectionIndex: ILayoutSectionPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts index 74f4de67e6a..b7f61307338 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useRichTextPlaceholderDropHandler.ts @@ -15,6 +15,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useRichTextPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts index 0dfcdca8704..847aa564e06 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/dragAndDrop/draggableWidget/useVisualizationSwitcherPlaceholderDropHandler.ts @@ -12,6 +12,7 @@ import { useDashboardCommandProcessing } from "../../../../model/react/useDashbo import { uiActions } from "../../../../model/store/ui/index.js"; import { type ILayoutItemPath } from "../../../../types.js"; import { type BaseDraggableLayoutItemSize } from "../../../dragAndDrop/types.js"; + import { useUpdateWidgetDefaultSizeByParent } from "./useUpdateWidgetDefaultSizeByParent.js"; export function useVisualizationSwitcherPlaceholderDropHandler(layoutPath: ILayoutItemPath) { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx index 2215c4d1f44..afe44862d94 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayout.tsx @@ -5,6 +5,7 @@ import { Fragment } from "react"; import { objRefToString } from "@gooddata/sdk-model"; import { DashboardLayout } from "../../../DefaultDashboardLayoutRenderer/DashboardLayout.js"; + import { DashboardEditLayoutItemRenderer } from "./DashboardEditLayoutItemRenderer.js"; import { DashboardEditLayoutRowRenderer } from "./DashboardEditLayoutRowRenderer.js"; import { DashboardEditLayoutSectionHeaderRenderer } from "./DashboardEditLayoutSectionHeaderRenderer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx index 5a9834d6f47..3e3a901f38c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutItemRenderer.tsx @@ -6,6 +6,7 @@ import { type ObjRef, areObjRefsEqual, idRef } from "@gooddata/sdk-model"; import { DashboardLayoutItemViewRenderer } from "../../../DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutItemRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; export interface IDashboardEditLayoutItemRendererStateProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts index 89d1d109832..6560046ca68 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutMocks.ts @@ -4,6 +4,7 @@ import { type ObjRef, idRef } from "@gooddata/sdk-model"; import { type VisType } from "@gooddata/sdk-ui"; import { newInsight } from "../../../../../_staging/insight/insightBuilder.js"; + import { type IDashboardEditLayout, type IDashboardEditLayoutContent, diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx index 6b3b9b2702d..dae423f1e09 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutRowRenderer.tsx @@ -8,6 +8,7 @@ import { type IDashboardLayoutItemFacade, type IDashboardLayoutSectionFacade, } from "../../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; export interface IDashboardEditLayoutRowRendererOwnProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx index 755145fcc8e..9cac479bada 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionHeaderRenderer.tsx @@ -5,6 +5,7 @@ import { type ScreenSize } from "@gooddata/sdk-model"; import { type IDashboardLayoutItemFacade } from "../../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; import { DashboardLayoutItemViewRenderer } from "../../../DefaultDashboardLayoutRenderer/DashboardLayoutItemViewRenderer.js"; import { type IDashboardLayoutSectionHeaderRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; + import { DashboardEditLayoutSectionHeader } from "./DashboardEditLayoutSectionHeader.js"; import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx index 1a339243b1c..8d402d9e92b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutSectionRenderer.tsx @@ -5,6 +5,7 @@ import { useCallback, useState } from "react"; import cx from "classnames"; import { type IDashboardLayoutSectionRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; + import { DashboardEditLayoutSectionBorder } from "./DashboardEditLayoutSectionBorder.js"; import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx index 8d888aad1a1..f8f5b4ba815 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidget.tsx @@ -5,6 +5,7 @@ import { type RefObject } from "react"; import { type ScreenSize } from "@gooddata/sdk-model"; import { type IDashboardLayoutItemFacade } from "../../../../../_staging/dashboard/flexibleLayout/facade/interfaces.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; export interface IDashboardEditLayoutWidgetProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx index 0b058ff866d..f8de293b685 100644 --- a/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/flexibleLayout/test/useInKD/DashboardEditLayout/DashboardEditLayoutWidgetRenderer.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { type IDashboardLayoutWidgetRenderProps } from "../../../DefaultDashboardLayoutRenderer/interfaces.js"; import { getDashboardLayoutItemHeightForRatioAndScreen } from "../../../DefaultDashboardLayoutRenderer/utils/sizing.js"; + import { type IDashboardEditLayoutContent } from "./DashboardEditLayoutTypes.js"; import { DashboardEditLayoutWidget } from "./DashboardEditLayoutWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx b/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx index f831810c998..5742e296c18 100644 --- a/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/insightList/InsightList.tsx @@ -39,6 +39,7 @@ import { import { selectCurrentUser } from "../../model/store/user/userSelectors.js"; import { getAuthor } from "../../model/utils/author.js"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { InsightListNoData } from "./InsightListNoData.js"; import { type IInsightListProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx index cffeb71fa41..10b0db03f5a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/kpiDeleteDialog/DefaultKpiDeleteDialog.tsx @@ -14,6 +14,7 @@ import { selectIsKpiDeleteDialogOpen, selectKpiDeleteDialogWidgetLayoutPath, } from "../../model/store/ui/uiSelectors.js"; + import { type IKpiDeleteDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx b/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx index 90c7d661460..e559a7a1cba 100644 --- a/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/presentationComponents/DashboardItems/DashboardItemHeadline.tsx @@ -6,6 +6,7 @@ import OriginalLinesEllipsis from "react-lines-ellipsis"; import responsiveHOC from "react-lines-ellipsis/lib/responsiveHOC.js"; import { type CommonExportDataAttributes } from "../../export/types.js"; + import { DashboardItemHeadlineContainer } from "./DashboardItemHeadlineContainer.js"; // This fixes the infinite render loop with 0.15.x version, diff --git a/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx b/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx index 5e13148f5dc..e3c5719c247 100644 --- a/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/saveAs/DefaultSaveAsDialog/index.tsx @@ -9,6 +9,7 @@ import { useDashboardDispatch, useDashboardSelector } from "../../../model/react import { uiActions } from "../../../model/store/ui/index.js"; import { selectIsSaveAsDialogOpen } from "../../../model/store/ui/uiSelectors.js"; import { type ISaveAsDialogProps } from "../types.js"; + import { SaveAsDialogRenderer } from "./SaveAsDialogRenderer.js"; import { useSaveAs } from "./useSaveAs.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx index ac6a48ede4f..7e2a59e1ea4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/saveAs/SaveAsDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type ISaveAsDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx index 351d481f8d4..ba78a25905b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/DefaultScheduledEmailDialog.tsx @@ -71,6 +71,7 @@ import { getDefaultCronExpression } from "../utils/cron.js"; import { getDefaultPdfPageSize } from "../utils/pdfPageSize.js"; import { isMobileView } from "../utils/responsive.js"; import { TIMEZONE_DEFAULT } from "../utils/timezone.js"; + import { DashboardAttachments } from "./components/Attachments/DashboardAttachments.js"; import { WidgetAttachments } from "./components/Attachments/WidgetAttachments.js"; import { DashboardAttachments as DashboardAttachmentsOld } from "./components/AttachmentsOld/DashboardAttachments.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx index 1b9ff33dbab..e558b51a6f1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/DashboardAttachments.tsx @@ -13,6 +13,7 @@ import { import { Message } from "@gooddata/sdk-ui-kit"; import { AUTOMATION_ATTACHMENTS_GROUP_LABEL_ID } from "../../../../constants/automations.js"; + import { AttachmentsList } from "./AttachmentsList.js"; import { AttachmentsSelect } from "./AttachmentsSelect.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx index 441d8d7e9d9..a646cf1a851 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/WidgetAttachments.tsx @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-model"; import { AUTOMATION_ATTACHMENTS_GROUP_LABEL_ID } from "../../../../constants/automations.js"; + import { AttachmentsList } from "./AttachmentsList.js"; import { AttachmentsSelect } from "./AttachmentsSelect.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx index dc792fdcc06..26d65bb9f70 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/AttachmentFilters.tsx @@ -16,6 +16,7 @@ import { import { DEFAULT_DROPDOWN_ALIGN_POINTS } from "../../constants.js"; import { type IAttachmentFilterInfo } from "../../hooks/useFiltersForDashboardScheduledExportInfo.js"; + import { AttachmentFiltersList } from "./AttachmentFiltersList.js"; const TOOLTIP_ALIGN_POINTS: IAlignPoint[] = [ diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx index 34f8fb9d1dc..651270f7548 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/DashboardAttachments.tsx @@ -9,6 +9,7 @@ import { Message, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { getAutomationDashboardFilters } from "../../../../../_staging/automation/index.js"; import { type IAttachmentFilterInfo } from "../../hooks/useFiltersForDashboardScheduledExportInfo.js"; + import { type AttachmentFilterType, AttachmentFilters } from "./AttachmentFilters.js"; import { AttachmentDashboard } from "./AttachmentItems.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx index cdb3c093f5b..84b7ba99ed8 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/AttachmentsOld/WidgetAttachments.tsx @@ -12,6 +12,7 @@ import { import { Message, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { type OldWidgetAttachmentType } from "../../types.js"; + import { AttachmentWidgets } from "./AttachmentItems.js"; import { AttachmentsWrapper } from "./AttachmentsWrapper.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx index 2636bd1338e..e56df40e512 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.tsx @@ -16,6 +16,7 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { convertUserToAutomationRecipient } from "../../../../../_staging/automation/index.js"; import { createUser, matchUser } from "../../../utils/users.js"; import { isEmail } from "../../../utils/validate.js"; + import { RecipientsSelectRenderer } from "./RecipientsSelectRenderer.js"; interface IRecipientsSelectProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts index cea440fbfa3..c647c90ceee 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts @@ -75,6 +75,7 @@ import { import { getUserTimezone } from "../../utils/timezone.js"; import { isEmail } from "../../utils/validate.js"; import { type OldWidgetAttachmentType } from "../types.js"; + import { useScheduleValidation } from "./useScheduleValidation.js"; export interface IUseEditScheduledEmailProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts index e35e1149bb2..6193d6183db 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailDialog/hooks/useSaveScheduledEmailToBackend.ts @@ -22,6 +22,7 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js"; import { type IScheduledEmailDialogProps } from "../../types.js"; + import { useCreateScheduledEmail } from "./useCreateScheduledEmail.js"; import { useUpdateScheduledEmail } from "./useUpdateScheduledEmail.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx index 6c8c3941b9c..335ab5ae8a7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx @@ -13,6 +13,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectDashboardId } from "../../../model/store/meta/metaSelectors.js"; import { type IScheduledEmailManagementDialogProps } from "../types.js"; + import { DeleteScheduleConfirmDialog } from "./components/DeleteScheduleConfirmDialog.js"; import { DefaultScheduledEmailManagementDialogContentBasic } from "./DefaultScheduledEmailManagementDialogContentBasic.js"; import { DefaultScheduledEmailManagementDialogContentEnhanced } from "./DefaultScheduledEmailManagementDialogContentEnhanced.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx index f4912446513..6c4b82b2033 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx @@ -34,6 +34,7 @@ import { selectCurrentUser } from "../../../model/store/user/userSelectors.js"; import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../constants/zIndex.js"; import { useScheduleEmailDialogAccessibility } from "../hooks/useScheduleEmailDialogAccessibility.js"; import { isMobileView } from "../utils/responsive.js"; + import { ScheduledEmails } from "./components/ScheduledEmailsList.js"; const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx index a50b66eb452..c99e29452a6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IScheduledEmailDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx index 7fd06a43ed7..8213afdd851 100644 --- a/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/scheduledEmail/ScheduledEmailManagementDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IScheduledEmailManagementDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx index 3ac568d9f92..c36e386356b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/shareDialog/DefaultShareDialog.tsx @@ -8,6 +8,7 @@ import { type IShareDialogLabels, ShareDialog } from "@gooddata/sdk-ui-kit"; import { useDashboardSelector } from "../../model/react/DashboardStoreProvider.js"; import { selectLocale } from "../../model/store/config/configSelectors.js"; + import { type IShareDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx index 64e2aa48943..371facc26c4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/shareDialog/ShareDialog.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IShareDialogProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx index 8391b2f7a04..31f210964a0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/toolbar/Toolbar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../dashboardContexts/DashboardComponentsContext.js"; + import { type IToolbarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx index 060bbacb490..620b3c69239 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/ButtonBar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IButtonBarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx index 524bdb914ff..74b5d708807 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/cancelButton/DefaultCancelButton.tsx @@ -15,6 +15,7 @@ import { selectIsDashboardDirty } from "../../../../../model/store/meta/metaSele import { selectIsInEditMode } from "../../../../../model/store/renderMode/renderModeSelectors.js"; import { selectIsDashboardSaving } from "../../../../../model/store/saving/savingSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; + import { type ICancelButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx index 61c4513e963..64f5ccdce48 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/editButton/DefaultEditButton.tsx @@ -21,6 +21,7 @@ import { selectDashboardDensity, selectExecutionTimestamp, } from "../../../../../model/store/ui/uiSelectors.js"; + import { type IEditButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx index f1a906859ad..1563e773164 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveAsButton/DefaultSaveAsNewButton.tsx @@ -12,6 +12,7 @@ import { } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectIsSaveAsNewButtonVisible } from "../../../../../model/store/topBar/topBarSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; + import { type ISaveAsNewButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx index 5d198bec3d8..021f1eecc34 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/DefaultSaveButton.tsx @@ -21,6 +21,7 @@ import { selectCanSaveDashboard, selectIsPrivateDashboard, } from "../../../../../model/store/topBar/topBarSelectors.js"; + import { type ISaveButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx index 5673cf876e1..859ee431cb9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/saveButton/SaveButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { type ISaveButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx index eaf779e8802..4a578022365 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/DefaultSettingButton.tsx @@ -14,6 +14,7 @@ import { import { selectIsInEditMode } from "../../../../../model/store/renderMode/renderModeSelectors.js"; import { selectIsDashboardSaving } from "../../../../../model/store/saving/savingSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; + import { type ISettingButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx index 8358e93341f..05c42aec16c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/settingButton/SettingButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { type ISettingButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx index 698b2b3a6e4..f4bb7eb36d4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/buttonBar/button/shareButton/DefaultShareButton.tsx @@ -14,6 +14,7 @@ import { import { selectIsShareButtonVisible } from "../../../../../model/store/topBar/topBarSelectors.js"; import { uiActions } from "../../../../../model/store/ui/index.js"; import { selectDashboardDensity } from "../../../../../model/store/ui/uiSelectors.js"; + import { HiddenShareButton } from "./HiddenShareButton.js"; import { type IShareButtonProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx index 92a740b4e1d..ff8d3ca3b84 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/DefaultMenuButton.tsx @@ -31,6 +31,7 @@ import { import { DEFAULT_MENU_BUTTON_ID } from "../../../_staging/accessibility/elementId.js"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectDashboardDensity } from "../../../model/store/ui/uiSelectors.js"; + import { DefaultSubmenuHeader } from "./DefaultSubmenuHeader.js"; import { type IMenuButtonItem, diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx index 4a629674068..7871c367204 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/MenuButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IMenuButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx index 388c28d1a20..a01e77da1ee 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/menuButton/useDefaultMenuItems.tsx @@ -37,6 +37,7 @@ import { import { uiActions } from "../../../model/store/ui/index.js"; import { selectMenuButtonItemsVisibility } from "../../../model/store/ui/uiSelectors.js"; import { useExportXlsxDialogContext } from "../../dashboardContexts/ExportXlsxDialogContext.js"; + import { type IMenuButtonItem } from "./types.js"; import { useExportDashboardToPdf } from "./useExportDashboardToPdf.js"; import { useExportDashboardToPdfPresentation } from "./useExportDashboardToPdfPresentation.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx index 6b5dacb5dfd..6cb172415c0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/DefaultLockedStatus.tsx @@ -5,6 +5,7 @@ import { type ReactElement } from "react"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectSettings } from "../../../../model/store/config/configSelectors.js"; import { selectCanManageAnalyticalDashboard } from "../../../../model/store/permissions/permissionsSelectors.js"; + import { LockedStatusIndicator } from "./LockedStatusIndicator.js"; import { type ILockedStatusProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx index 971fcd9f4d7..967d5e97c77 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/lockedStatus/LockedStatusIndicator.tsx @@ -8,6 +8,7 @@ import { Bubble, BubbleHoverTrigger, IconLock } from "@gooddata/sdk-ui-kit"; import { useTheme } from "@gooddata/sdk-ui-theme-provider"; import { gdColorStateBlank } from "../../../constants/colors.js"; + import { type ILockedStatusProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx index 22ba1d6b472..b59068a08ad 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/shareIndicators/shareStatus/DefaultShareStatus.tsx @@ -5,6 +5,7 @@ import { type ReactElement } from "react"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectSupportsAccessControlCapability } from "../../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js"; import { selectCanManageAnalyticalDashboard } from "../../../../model/store/permissions/permissionsSelectors.js"; + import { ShareStatusIndicator } from "./ShareStatusIndicator.js"; import { type IShareStatusProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx index 315598f4d97..d9f07784abd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/title/EditableTitle.tsx @@ -7,6 +7,7 @@ import { EditableLabel } from "@gooddata/sdk-ui-kit"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectDashboardTitle } from "../../../model/store/meta/metaSelectors.js"; import { DASHBOARD_TITLE_MAX_LENGTH } from "../../constants/dashboard.js"; + import { TitleWrapper } from "./TitleWrapper.js"; import { type ITitleProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx index 50db0e1a0ee..9e22f34da48 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/title/RenderModeAwareTitle.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DefaultTitle } from "./DefaultTitle.js"; import { EditableTitle } from "./EditableTitle.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx index b981f0a895d..618b1218c31 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/title/Title.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type ITitleProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx index a1639cd0177..879ca4bc99e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/DefaultTopBar.tsx @@ -28,6 +28,7 @@ import { useDefaultMenuItems } from "../menuButton/useDefaultMenuItems.js"; import { DefaultLockedStatus } from "../shareIndicators/lockedStatus/DefaultLockedStatus.js"; import { DefaultShareStatus } from "../shareIndicators/shareStatus/DefaultShareStatus.js"; import { Title } from "../title/Title.js"; + import { HiddenTopBar } from "./HiddenTopBar.js"; import { type ITopBarProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx index 1a559675f71..81227d524f9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/RenderModeAwareTopBar.tsx @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DefaultTopBar } from "./DefaultTopBar.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx index d1937e39d54..02e9794cd03 100644 --- a/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/topBar/topBar/TopBar.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type ITopBarProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx index 05c324abe5b..e2484f8fa30 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfiguration.tsx @@ -17,6 +17,7 @@ import { useAttributes } from "../../../../_staging/sharedHooks/useAttributes.js import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectAllCatalogAttributesMap } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectFilterContextAttributeFilterItems } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { AttributeFilterConfigurationItem } from "./AttributeFilterConfigurationItem.js"; import { getAttributeByDisplayForm } from "./utils.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx index 1bcd7471cc8..b46959a4c4d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/AttributeFilterConfigurationItem.tsx @@ -16,6 +16,7 @@ import { import { simplifyText } from "@gooddata/util"; import { useAttributeFilterDisplayFormFromMap } from "../../../../_staging/sharedHooks/useAttributeFilterDisplayFormFromMap.js"; + import { FilterConfigurationItemLabel } from "./FilterConfigurationItemLabel.js"; import { useAttributeFilterConfigurationHandling } from "./useAttributeFilterConfigurationHandling.js"; import { useIsFilterNotApplied } from "./useIsFilterNotApplied.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx index 027a849dc0e..e43f1a26c35 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateDatasetFilter.tsx @@ -11,6 +11,7 @@ import { } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectEnableUnavailableItemsVisibility } from "../../../../model/store/config/configSelectors.js"; import { selectFilterContextDateFilterByDataSet } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { DateDatasetDuplicityWarning } from "./DateDatasetDuplicityWarning.js"; import { DateDatasetPicker } from "./DateDatasetPicker.js"; import { DateFilterCheckbox } from "./DateFilterCheckbox.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx index 1739c83a57b..c0aabf8631f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterCheckbox.tsx @@ -9,6 +9,7 @@ import { type ICatalogDateDataset, type IWidget, type ObjRef, isInsightWidget } import { type IAlignPoint, ShortenedText } from "@gooddata/sdk-ui-kit"; import { useCurrentDateFilterConfig } from "../../../dragAndDrop/useCurrentDateFilterConfig.js"; + import { getUnrelatedDateDataset } from "./utils.js"; const tooltipAlignPoints: IAlignPoint[] = [{ align: "cl cr", offset: { x: -20, y: 0 } }]; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx index 1995d84d860..580b005535d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/DateFilterConfigurationItem.tsx @@ -19,6 +19,7 @@ import { simplifyText } from "@gooddata/util"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectAllCatalogDateDatasetsMap } from "../../../../model/store/catalog/catalogSelectors.js"; import { useCurrentDateFilterConfig } from "../../../dragAndDrop/useCurrentDateFilterConfig.js"; + import { useDateFilterConfigurationHandling } from "./useDateFilterConfigurationHandling.js"; const tooltipAlignPoints: IAlignPoint[] = [{ align: "cl cr", offset: { x: -20, y: 0 } }]; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx index 947aa40dc6b..aff624adba1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/configuration/FilterConfiguration.tsx @@ -26,6 +26,7 @@ import { } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectAttributeFilterConfigsDisplayAsLabelMap } from "../../../../model/store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js"; import { selectFilterContextFilters } from "../../../../model/store/tabs/filterContext/filterContextSelectors.js"; + import { AttributeFilterConfigurationItem } from "./AttributeFilterConfigurationItem.js"; import { DateFilterConfigurationItem } from "./DateFilterConfigurationItem.js"; import { MeasureValueFilterConfigurationItem } from "./MeasureValueFilterConfigurationItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts b/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts index c5dcc33ecd4..de93263714b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/common/useInsightExport.ts @@ -56,6 +56,7 @@ import { useExportXlsxDialogContext } from "../../dashboardContexts/ExportXlsxDi import { getDefaultPdfPageSize } from "../../scheduledEmail/utils/pdfPageSize.js"; import { useExportToTabular } from "../../topBar/menuButton/useExportToTabular.js"; import { useExportWithTemplateSelection } from "../../topBar/menuButton/useExportWithTemplateSelection.js"; + import { useExportHandler } from "./useExportHandler.js"; import { useImageExportHandler } from "./useImageExportHandler.js"; import { useRawExportHandler } from "./useRawExportHandler.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx index 26d24e72a71..85f2b2f7594 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DashboardLayout.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardLayoutProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts index 1a2e078603d..dd23ccad05d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayout.ts @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { DashboardLayout } from "./DashboardLayout.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx index 0ffa3ef717f..107e96bd81b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/dashboardLayout/DefaultDashboardLayoutComponentSetFactory.tsx @@ -3,6 +3,7 @@ import { type DashboardLayoutWidgetComponentSet } from "../../componentDefinition/types.js"; import { type DashboardLayoutComponentProvider } from "../../dashboardContexts/types.js"; import { DashboardLayoutDraggingComponent } from "../../dragAndDrop/draggableWidget/DashboardLayoutDraggingComponent.js"; + import { CreatableDashboardLayout } from "./CreatableDashboardLayout.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx index cb5736d1f32..52c5de553fb 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/description/ExportModeInsightWidgetDescription.tsx @@ -10,6 +10,7 @@ import { } from "../../../model/store/config/configSelectors.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IInsightWidgetDescriptionTriggerProps } from "./types.js"; import { useInsightWidgetDescription } from "./useInsightWidgetDescription.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx index c4c51dbe32a..054ee2d96b0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/description/InsightWidgetDescriptionTrigger.tsx @@ -10,6 +10,7 @@ import { useDashboardUserInteraction } from "../../../model/react/useDashboardUs import { selectEnableRichTextDynamicReferences } from "../../../model/store/config/configSelectors.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { DescriptionClickTrigger } from "./DescriptionClickTrigger.js"; import { type IInsightWidgetDescriptionTriggerProps } from "./types.js"; import { useInsightWidgetDescription } from "./useInsightWidgetDescription.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts b/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts index 7631ecfd79e..dccd5c8adc1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/description/useInsightWidgetDescription.ts @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js"; import { selectEnableRichTextDescriptions } from "../../../model/store/config/configSelectors.js"; + import { type IInsightWidgetDescriptionTriggerProps } from "./types.js"; export const useInsightWidgetDescription = (props: IInsightWidgetDescriptionTriggerProps) => { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx index 1c0784e97d3..5a8f6cb643a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DashboardInsight.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { type IInsight } from "@gooddata/sdk-model"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx index 2e8fc6f71e7..a4cb80fa40f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/DefaultDashboardInsight.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { EditModeDashboardInsight } from "./EditModeDashboardInsight/EditModeDashboardInsight.js"; import { ExportModeDashboardInsight } from "./ExportModeDashboardInsight/ExportModeDashboardInsight.js"; import { type IDashboardInsightProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx index 18a4ee92457..c757d4cccfc 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/InsightBody.tsx @@ -3,6 +3,7 @@ import { useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IInsightBodyProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx index 3e5e48d6b5d..1f47de7e726 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.tsx @@ -25,6 +25,7 @@ import { } from "../../../drill/types.js"; import { getDrillDownTitle } from "../../../drill/utils/drillDownUtils.js"; import { type IDashboardInsightProps } from "../types.js"; + import { DashboardInsightWithDrillSelect } from "./Insight/DashboardInsightWithDrillSelect.js"; import { InsightDrillDialog } from "./InsightDrillDialog/InsightDrillDialog.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx index 1400c6c72d2..bb8165a159a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsight.tsx @@ -69,6 +69,7 @@ import { type IDashboardInsightProps } from "../../types.js"; import { CustomError } from "../CustomError/CustomError.js"; import { useInsightPositionStyle } from "../useInsightPositionStyle.js"; import { useResolveDashboardInsightProperties } from "../useResolveDashboardInsightProperties.js"; + import { useDashboardInsightDrills } from "./useDashboardInsightDrills.js"; import { useHandlePropertiesPushData } from "./useHandlePropertiesPushData.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx index 3025c25a0db..bae0b47db5f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/Insight/DashboardInsightWithDrillSelect.tsx @@ -4,6 +4,7 @@ import { type ReactElement } from "react"; import { WithDrillSelect } from "../../../../drill/DrillSelect/WithDrillSelect.js"; import { type IDashboardInsightProps } from "../../types.js"; + import { DashboardInsight } from "./DashboardInsight.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx index 2ec1972a00f..1cdc4a9f5c1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialog.tsx @@ -26,6 +26,7 @@ import { selectSettings, } from "../../../../../model/store/config/configSelectors.js"; import { selectCanExportTabular } from "../../../../../model/store/permissions/permissionsSelectors.js"; + import { DrillDialogExportDropdownResolver } from "./DrillDialogExportDropdownResolver.js"; import { getTitleWithBreadcrumbs } from "./getTitleWithBreadcrumbs.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx index f551bf793c8..efe7d9efcde 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogExportDropdownResolver.tsx @@ -5,6 +5,7 @@ import { type ReactElement, useMemo } from "react"; import { type IInsight, type IInsightWidget } from "@gooddata/sdk-model"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDrillDialogExportDropdownProps } from "./drillDialogExportDropdownTypes.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx index 97c177a713b..7774ae0ffa2 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/DrillDialogInsight.tsx @@ -46,6 +46,7 @@ import { type IDashboardInsightProps } from "../../types.js"; import { CustomError } from "../CustomError/CustomError.js"; import { useInsightPositionStyle } from "../useInsightPositionStyle.js"; import { useResolveDashboardInsightProperties } from "../useResolveDashboardInsightProperties.js"; + import { useDrillDialogInsightDrills } from "./useDrillDialogInsightDrills.js"; import { useDrillDialogSyncInsightProperties } from "./useDrillDialogSyncInsightProperties.js"; import { useExcludedDrillDefinitionFilters } from "./useExcludedDrillDefinitionFilters.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx index 64cfdc2b5d8..1c129241eff 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/InsightDrillDialog/InsightDrillDialog.tsx @@ -47,6 +47,7 @@ import { ThemedLoadingEqualizer } from "../../../../presentationComponents/Theme import { useInsightExport } from "../../../common/useInsightExport.js"; import { useShowAsTable } from "../../../showAsTableButton/useShowAsTable.js"; import { supportsShowAsTable } from "../../insightToTable.js"; + import { DrillDialog } from "./DrillDialog.js"; import { DrillDialogInsight } from "./DrillDialogInsight.js"; import { getTitleWithBreadcrumbs } from "./getTitleWithBreadcrumbs.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx index 24e17c414df..eba872fd37f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/ViewModeDashboardInsight/ViewModeDashboardInsight.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IDashboardInsightProps } from "../types.js"; + import { DashboardInsightWithDrillDialog } from "./DashboardInsightWithDrillDialog.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx index b9c1d12f3af..6c7c2201eb4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfig.tsx @@ -6,6 +6,7 @@ import { type IDrillConfigItem, type IDrillDownAttributeHierarchyDefinition, } from "../../../../drill/types.js"; + import { DrillFiltersConfigInner } from "./DrillFiltersConfigInner.js"; import { useDrillFiltersConfig } from "./useDrillFiltersConfig.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx index c7a91d56c8d..99bb2c76968 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/DrillFiltersConfigInner.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { type SourceInsightFilterObjRef, type SourceMeasureFilterObjRef } from "@gooddata/sdk-model"; import { type IDrillFiltersConfigExtended } from "../../../../drill/types.js"; + import { DrillFiltersConfigSection } from "./DrillFiltersConfigSection.js"; import { messages } from "./messages.js"; import { type IDrillFiltersConfigOption } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts index 022cec363d6..c8b82ed7b3c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.ts @@ -38,6 +38,7 @@ import { findDashboardAttributeFilterByIncomingDisplayAsLabel, findDashboardAttributeFilterByTargetDisplayAsLabel, } from "../../../../../model/utils/filterContextUtils.js"; + import { messages } from "./messages.js"; import { type IDrillFiltersConfigOption } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts index 914a58bc324..f90c661c0b0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.ts @@ -38,6 +38,7 @@ import { type IDrillToInsightConfig, isDrillToInsightConfig, } from "../../../../drill/types.js"; + import { mapDashboardFilterToOption } from "./optionMappings/mapDashboardFilterToOption.js"; import { mapIntersectionAttributeToOption } from "./optionMappings/mapIntersectionAttributeToOption.js"; import { mapSourceInsightFilterToOption } from "./optionMappings/mapSourceInsightFilterToOption.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts index 2311cb33e8f..9f05a7ad922 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfigInner.ts @@ -6,6 +6,7 @@ import { type SourceInsightFilterObjRef, type SourceMeasureFilterObjRef } from " import { isSourceInsightFilterObjRefEqual } from "../../../../../_staging/drills/drillingUtils.js"; import { type IDrillFiltersConfigExtended } from "../../../../drill/types.js"; + import { type IDrillFiltersConfigOption } from "./types.js"; export type IDrillFiltersConfigSelection = Partial< diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts index 942fca557f0..d01dc3fa469 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersCount.ts @@ -8,6 +8,7 @@ import { type IDrillConfigItem, type IDrillDownAttributeHierarchyDefinition, } from "../../../../drill/types.js"; + import { isDrillFiltersConfigOptionSelected } from "./types.js"; import { useDrillFiltersConfig } from "./useDrillFiltersConfig.js"; import { useDrillFiltersConfigInner } from "./useDrillFiltersConfigInner.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts index 753ce71924e..7637411558d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.ts @@ -21,6 +21,7 @@ import { type IDrillConfigItem, type IDrillToDashboardConfig, } from "../../../../drill/types.js"; + import { getTargetDashboardFiltersCacheKey, useTargetDashboardFiltersContext, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx index 636e9227e94..12ee4a3a35e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillIntersectionIgnoredAttributes.tsx @@ -11,6 +11,7 @@ import { } from "../../../../model/store/catalog/catalogSelectors.js"; import { selectInsightByWidgetRef } from "../../../../model/store/insights/insightsSelectors.js"; import { type DRILL_TARGET_TYPE, type IDrillConfigItem } from "../../../drill/types.js"; + import { DrillIntersectionIgnoredAttributesSelect, type IDrillIntersectionIgnoredAttributesSelectOption, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx index df5c1b73f6a..4e34d360bf1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelector.tsx @@ -8,6 +8,7 @@ import { Dropdown, DropdownButton } from "@gooddata/sdk-ui-kit"; import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js"; import { type IAvailableDrillTargetItem } from "../../../../drill/DrillSelect/types.js"; + import { DrillOriginSelectorBody } from "./DrillOriginSelectorBody.js"; export interface IDrillOriginSelectorProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx index 02d50de7bef..f699a004cd1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillOriginSelector/DrillOriginSelectorBody.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { type IAvailableDrillTargets } from "@gooddata/sdk-ui"; import { type IAvailableDrillTargetItem } from "../../../../drill/DrillSelect/types.js"; + import { DrillAttributeSelectorList } from "./DrillAttributeSelectorList.js"; import { DrillMeasureSelectorList } from "./DrillMeasureSelectorList.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx index 44e50782a2a..e68a80e6910 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargetType/DrillTargetType.tsx @@ -7,6 +7,7 @@ import { Dropdown, DropdownList } from "@gooddata/sdk-ui-kit"; import { DRILL_TARGET_TYPE } from "../../../../drill/types.js"; import { ButtonWithIcon } from "../ButtonWithIcon.js"; import { type IDrillTargetType } from "../useDrillTargetTypeItems.js"; + import { DrillTargetTypeListItem } from "./DrillTargetTypeListItem.js"; export interface IDrillTargetProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx index c1fdcb3b787..c4e4b7c18c5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyDropdown.tsx @@ -23,6 +23,7 @@ import { selectAllCatalogAttributeHierarchies } from "../../../../../model/store import { selectIgnoredDrillDownHierarchiesByWidgetRef } from "../../../../../model/store/tabs/layout/layoutSelectors.js"; import { existBlacklistHierarchyPredicate } from "../../../../../model/utils/attributeHierarchyUtils.js"; import { type IDrillDownAttributeHierarchyConfig } from "../../../../drill/types.js"; + import { AttributeHierarchyList, type IAttributeHierarchyItem } from "./AttributeHierarchyList.js"; interface IAttributeHierarchyDropdownProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx index 2e02cca27f7..e5fcaa1677d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/AttributeHierarchyList.tsx @@ -9,6 +9,7 @@ import { DropdownList, UiTooltip } from "@gooddata/sdk-ui-kit"; import { messages } from "../../../../../locales.js"; import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js"; + import { AttributeHierarchyListFooter } from "./AttributeHierarchyListFooter.js"; import { AttributeHierarchyListItem } from "./AttributeHierarchyListItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx index 0dc0774847b..cb4311893b6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetAttributeHierarchyItem.tsx @@ -15,6 +15,7 @@ import { useDashboardSelector } from "../../../../../model/react/DashboardStoreP import { useDashboardUserInteraction } from "../../../../../model/react/useDashboardUserInteraction.js"; import { selectAllCatalogAttributeHierarchies } from "../../../../../model/store/catalog/catalogSelectors.js"; import { type IDrillDownAttributeHierarchyConfig } from "../../../../drill/types.js"; + import { AttributeHierarchyDropdown } from "./AttributeHierarchyDropdown.js"; import { EmptyAttributeHierarchyInfo } from "./EmptyAttributeHierarchyInfo.js"; import { useAttributeHierarchy } from "./useAttributeHierarchy.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx index 83b257e8fb1..e49a7e576c0 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetDashboardItem.tsx @@ -12,6 +12,7 @@ import { selectInaccessibleDashboards } from "../../../../../model/store/inacces import { type IInaccessibleDashboard } from "../../../../../model/types/inaccessibleDashboardTypes.js"; import { DashboardList } from "../../../../dashboardList/DashboardList.js"; import { type IDrillableDashboardListItem } from "../../../../dashboardList/types.js"; + import { DrillTargetDashboardTabSelector } from "./DrillTargetDashboardTabSelector.js"; interface IDrillTargetDashboardItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx index 69230a93792..f16a750e08f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetInsightItem.tsx @@ -3,6 +3,7 @@ import { type IInsight } from "@gooddata/sdk-model"; import { type IDrillConfigItem } from "../../../../drill/types.js"; + import { DrillingInsightDropdown } from "./DrillingInsightDropdown.js"; export interface IDrillMeasureItemProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx index 013759e9642..ed1fbbb4b52 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargetUrlItem.tsx @@ -24,6 +24,7 @@ import { isDrillToAttributeUrlConfig, isDrillToCustomUrlConfig, } from "../../../../drill/types.js"; + import { useAttributesWithDisplayForms } from "./useAttributesWithDisplayForms.js"; import { useInvalidAttributeDisplayFormIdentifiers } from "./useInvalidAttributeDisplayFormIdentifier.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx index 4b840c8160f..c22824f1ac7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/DrillTargets/DrillTargets.tsx @@ -26,6 +26,7 @@ import { isDrillToDashboardConfig, isDrillToUrlConfig, } from "../../../../drill/types.js"; + import { DrillTargetAttributeHierarchyItem } from "./DrillTargetAttributeHierarchyItem.js"; import { DrillTargetDashboardItem } from "./DrillTargetDashboardItem.js"; import { DrillTargetInsightItem } from "./DrillTargetInsightItem.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx index 1b55f7e6202..20459dd5240 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/CreateAlert.tsx @@ -14,6 +14,7 @@ import { import { type IExecutionResultEnvelope } from "../../../../../model/store/executionResults/types.js"; import { type IMeasureFormatMap } from "../../../../alerting/DefaultAlertingDialog/utils/getters.js"; import { type AlertAttribute, type AlertMetric } from "../../../../alerting/types.js"; + import { EditAlert } from "./EditAlert.js"; interface ICreateAlertProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx index 6212ac30bdc..ff2f51b4b81 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertConfig/EditAlert.tsx @@ -56,6 +56,7 @@ import { import { type AlertAttribute, type AlertMetric } from "../../../../alerting/types.js"; import { RecipientsSelect } from "../../../../scheduledEmail/DefaultScheduledEmailDialog/components/RecipientsSelect/RecipientsSelect.js"; import { DashboardInsightSubmenuContainer } from "../../../insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/DashboardInsightSubmenuContainer.js"; + import { AlertTitle } from "./AlertTitle.js"; import { EditAlertConfiguration } from "./EditAlertConfiguration.js"; import { useEditAlert } from "./hooks/useEditAlert.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx index edf85a26178..1ab0b3c37e1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlerts.tsx @@ -3,6 +3,7 @@ import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectEnableAutomationFilterContext } from "../../../../model/store/config/configSelectors.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { InsightAlertsNew } from "./InsightAlertsNew.js"; import { InsightAlertsOld } from "./InsightAlertsOld.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx index 75e3c302f68..56f2bdd0481 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsNew.tsx @@ -50,6 +50,7 @@ import { messages } from "../../../alerting/DefaultAlertingDialog/messages.js"; import { getSupportedInsightMeasuresByInsight } from "../../../alerting/DefaultAlertingDialog/utils/items.js"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { AlertsList } from "./InsightAlertConfig/AlertsList.js"; import { NoAvailableMeasures } from "./InsightAlertConfig/NoAvailableAlerts.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx index cfdb64af76e..306b6c2e9e6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightAlertsOld.tsx @@ -9,6 +9,7 @@ import { simplifyText } from "@gooddata/util"; import { AlertDeleteDialog } from "../../../alerting/DefaultAlertingDialog/components/AlertDeleteDialog.js"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { AlertsList } from "./InsightAlertConfig/AlertsList.js"; import { CreateAlert } from "./InsightAlertConfig/CreateAlert.js"; import { EditAlert } from "./InsightAlertConfig/EditAlert.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx index 1913d7c7101..47862ceb929 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightConfiguration.tsx @@ -21,6 +21,7 @@ import { import { selectSettings } from "../../../../model/store/config/configSelectors.js"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IInsightMenuSubmenuComponentProps } from "../../insightMenu/types.js"; + import { InsightDescriptionConfig } from "./InsightDescriptionConfig/InsightDescriptionConfig.js"; import { InsightFilters } from "./InsightFilters.js"; import { InsightTitleConfig } from "./InsightTitleConfig.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx index f0a07879147..795b09f7dcd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDescriptionConfig/InsightDescriptionConfig.tsx @@ -18,6 +18,7 @@ import { useWidgetFilters } from "../../../../../model/react/useWidgetFilters.js import { selectSeparators } from "../../../../../model/store/config/configSelectors.js"; import { selectInsightByRef } from "../../../../../model/store/insights/insightsSelectors.js"; import { useDashboardComponentsContext } from "../../../../dashboardContexts/DashboardComponentsContext.js"; + import { InsightDescription } from "./InsightDescription.js"; interface IInsightDescriptionConfigProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx index 34b0a906dce..f89d020dd1b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigItem.tsx @@ -33,6 +33,7 @@ import { isDrillToDashboardConfig, isDrillToInsightConfig, } from "../../../drill/types.js"; + import { DrillFiltersTrigger } from "./DrillFilters/DrillFiltersTrigger.js"; import { useDrillFiltersCount } from "./DrillFilters/useDrillFiltersCount.js"; import { useDrillFiltersSubview } from "./DrillFilters/useDrillFiltersSubview.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx index f2de5fb2d3d..6ba70a6da67 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigList.tsx @@ -4,6 +4,7 @@ import { type InsightDrillDefinition } from "@gooddata/sdk-model"; import { ScrollableItem } from "@gooddata/sdk-ui-kit"; import { type IDrillConfigItem, type IDrillDownAttributeHierarchyDefinition } from "../../../drill/types.js"; + import { DrillConfigItem } from "./InsightDrillConfigItem.js"; import { useDrillTargetTypeItems } from "./useDrillTargetTypeItems.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx index d967133ab13..00a17b80b66 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/InsightDrillConfigPanel.tsx @@ -9,6 +9,7 @@ import { DrillFiltersConfig } from "../DrillFilters/DrillFiltersConfig.js"; import { DrillOriginSelector } from "../DrillOriginSelector/DrillOriginSelector.js"; import { InsightDrillConfigList } from "../InsightDrillConfigList.js"; import { ZoomInsightConfiguration } from "../ZoomInsightConfiguration.js"; + import { useInsightDrillConfigPanel } from "./useInsightDrillConfigPanel.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts index 27c08a17b41..0a9def651a4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/tests/drillConfigMapper.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type IInsightWidget, idRef } from "@gooddata/sdk-model"; import { getGlobalDrillDownMappedConfigForWidget } from "../drillConfigMapper.js"; + import { availableDrillTargets, globalDrillDowns } from "./drillConfigMapper.fixture.js"; describe("drillConfigMapper", () => { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts index 9870da21341..475d895bc34 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightDrillConfigPanel/useInsightDrillConfigPanel.ts @@ -58,6 +58,7 @@ import { isDrillToUrlConfig, } from "../../../../drill/types.js"; import { useDrillFiltersSubview } from "../DrillFilters/useDrillFiltersSubview.js"; + import { getDrillToUrlMappedConfigForWidget, getGlobalDrillDownMappedConfigForWidget, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx index a7eab60cc97..a083b76c160 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightFilters.tsx @@ -6,6 +6,7 @@ import { type IInsightWidget, isInsightWidget } from "@gooddata/sdk-model"; import { Typography } from "@gooddata/sdk-ui-kit"; import { FilterConfiguration } from "../../common/configuration/FilterConfiguration.js"; + import { InsightCrossFiltering } from "./InsightCrossFiltering.js"; import { InsightDateDataSetFilter } from "./InsightDateDataSetFilter.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx index c6913efcbda..8bebdada051 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/configuration/InsightInteractions.tsx @@ -7,6 +7,7 @@ import { OverlayController, OverlayControllerProvider, ScrollablePanel } from "@ import { simplifyText } from "@gooddata/util"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; + import { TargetDashboardFiltersProvider } from "./DrillFilters/TargetDashboardFiltersContext.js"; import { InsightDrillConfigPanel } from "./InsightDrillConfigPanel/InsightDrillConfigPanel.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts index 2489d4d3b61..68a6db4dfce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insight/types.ts @@ -37,6 +37,7 @@ import { type OnWidgetDrill, } from "../../drill/types.js"; import { type WidgetExportDataAttributes } from "../../export/types.js"; + import { type ILayerTableDefinition } from "./insightToTable.js"; /// diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx index 885cc9e495a..948ac8a5217 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenu.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightMenuProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx index 9ee65ed1df1..c8fa1934ce6 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightMenuButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx index 1b18dadec7e..050a4fd7a81 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DashboardInsightMenuTitle.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardInsightMenuTitleProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx index 943dc28f150..9b6e8b00f1e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/CustomUiMenuComponents.tsx @@ -18,6 +18,7 @@ import { import { DashboardInsightMenuTitle } from "../../DashboardInsightMenuTitle.js"; import { type IDashboardInsightMenuTitleProps } from "../../types.js"; + import { DashboardInsightMenuItemButton } from "./DashboardInsightMenuItemButton.js"; import { DashboardInsightSubmenuContainer } from "./DashboardInsightSubmenuContainer.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx index 54920f09950..dc0c7e1946d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.tsx @@ -29,6 +29,7 @@ import { type IInsightMenuSubmenu, isIInsightMenuSubmenu, } from "../../types.js"; + import { CustomUiMenuContentComponent, CustomUiMenuContentItemComponent, diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx index 84711ee4a29..ab92d93d81a 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenu.tsx @@ -1,8 +1,9 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { type ReactElement } from "react"; import { type IDashboardInsightMenuProps } from "../types.js"; + import { DashboardInsightMenu } from "./DashboardInsightMenu/index.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx index bec3fb251a1..6b50cf7a59e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/DefaultDashboardInsightMenuButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IDashboardInsightMenuButtonProps } from "../types.js"; + import { DashboardInsightMenuButton } from "./DashboardInsightMenuButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx index eb5d78d5a0d..a81607d1344 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getDefaultInsightMenuItems.tsx @@ -10,6 +10,7 @@ import { UiIcon } from "@gooddata/sdk-ui-kit"; import { type IExecutionResultEnvelope } from "../../../../model/store/executionResults/types.js"; import { InsightAlerts } from "../../insight/configuration/InsightAlerts.js"; import { type IInsightMenuItem } from "../types.js"; + import { getExportTooltipId } from "./getExportTooltips.js"; import { type IUseInsightMenuConfig } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts index a1010d11d00..7f4ba033ea9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/insightMenu/DefaultDashboardInsightMenu/getExportTooltips.ts @@ -4,6 +4,7 @@ import { defineMessages } from "react-intl"; import { isDataError, isDataErrorTooLarge } from "../../../../_staging/errors/errorPredicates.js"; import { type IExecutionResultEnvelope } from "../../../../model/store/executionResults/types.js"; + import { type DisabledReason } from "./types.js"; const tooltipMessages = defineMessages({ diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx index d752c2b7d53..75befe6bf9c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DashboardRichText.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts index 304e389853b..b48fa6e265b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichText.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { EditModeDashboardRichText } from "./EditModeDashboardRichText.js"; import { ExportModeDashboardRichText } from "./ExportModeDashboardRichText.js"; import { ViewModeDashboardRichText } from "./ViewModeDashboardRichText.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx index 5d74f197d09..0b4b32dd12e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/DefaultDashboardRichTextComponentSetFactory.tsx @@ -3,6 +3,7 @@ import { type RichTextWidgetComponentSet } from "../../componentDefinition/types.js"; import { type RichTextComponentProvider } from "../../dashboardContexts/types.js"; import { RichTextDraggingComponent } from "../../dragAndDrop/draggableWidget/RichTextDraggingComponent.js"; + import { CreatableRichText } from "./CreatableRichText.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx index 6a4301067f4..082b2cd3b42 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/EditModeDashboardRichText.tsx @@ -31,6 +31,7 @@ import { uiActions } from "../../../model/store/ui/index.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { DASHBOARD_OVERLAYS_FILTER_Z_INDEX } from "../../../presentation/constants/zIndex.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextProps } from "./types.js"; import { useEditableRichTextMenu } from "./useEditableRichTextMenu.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx index 72096b247b9..f0403d6f308 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ExportModeDashboardRichText.tsx @@ -5,6 +5,7 @@ import { useCallback, useState } from "react"; import { type GoodDataSdkError, type ILoadingState } from "@gooddata/sdk-ui"; import { useRichTextExportData, useVisualizationExportData } from "../../export/useExportData.js"; + import { type IDashboardRichTextProps } from "./types.js"; import { ViewModeDashboardRichText } from "./ViewModeDashboardRichText.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx index 3705e4a330c..13af3440e76 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/ViewModeDashboardRichText.tsx @@ -15,6 +15,7 @@ import { selectCurrentDashboardSummaryWorkflowStatus } from "../../../model/stor import { selectCurrentDashboardSummary } from "../../../model/store/listedDashboards/listedDashboardsSummarySelectors.js"; import { selectExecutionTimestamp } from "../../../model/store/ui/uiSelectors.js"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx index 02e3909e3f8..1aed4faeab9 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextConfiguration.tsx @@ -8,6 +8,7 @@ import { simplifyText } from "@gooddata/util"; import { DASHBOARD_HEADER_OVERLAYS_Z_INDEX } from "../../../constants/zIndex.js"; import { type IRichTextMenuSubmenuComponentProps } from "../../richTextMenu/types.js"; + import { RichTextFilters } from "./RichTextFilters.js"; const overlayController = OverlayController.getInstance(DASHBOARD_HEADER_OVERLAYS_Z_INDEX); diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx index defc71799cd..f71df89c4fd 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richText/configuration/RichTextFilters.tsx @@ -6,6 +6,7 @@ import { type IRichTextWidget } from "@gooddata/sdk-model"; import { Typography } from "@gooddata/sdk-ui-kit"; import { FilterConfiguration } from "../../common/configuration/FilterConfiguration.js"; + import { RichTextDateDataSetFilter } from "./RichTextDateDataSetFilter.js"; interface IRichTextFiltersProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx index c27eafb18df..c62140f825f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DashboardRichTextMenuTitle.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardRichTextMenuTitleProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx index dc1c9040853..f09cd4c132e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DashboardRichTextMenu/index.tsx @@ -16,6 +16,7 @@ import { type IRichTextMenuItem, type IRichTextMenuSubmenu, } from "../../types.js"; + import { DashboardRichTextMenuContainer } from "./DashboardRichTextMenuContainer.js"; export function DashboardRichTextMenuBody({ diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx index 87181ffe21a..92306f497ce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/richTextMenu/DefaultDashboardRichTextMenu/DefaultDashboardRichTextMenu.tsx @@ -1,8 +1,9 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { type ReactElement } from "react"; import { type IDashboardRichTextMenuProps } from "../types.js"; + import { DashboardRichTextMenu } from "./DashboardRichTextMenu/index.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx index d1a9457a142..77ab505f245 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/DefaultShowAsTableButton/DefaultShowAsTableButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { type IShowAsTableButtonProps } from "../types.js"; + import { ShowAsTableButton } from "./ShowAsTableButton.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx index 5ac436668a3..fc2eecad929 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/showAsTableButton/ShowAsTableButton.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IShowAsTableButtonProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx index 7d068a2e0f0..3aeafc0721e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DashboardVisualizationSwitcher.tsx @@ -3,6 +3,7 @@ import { type ReactElement, useMemo } from "react"; import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; + import { type IDashboardVisualizationSwitcherProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts index 4bdca2373eb..d1a8c4d917f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcher.ts @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { renderModeAware } from "../../componentDefinition/renderModeAware.js"; + import { EditModeDashboardVisualizationSwitcher } from "./EditModeDashboardVisualizationSwitcher.js"; import { ExportModeDashboardVisualizationSwitcher } from "./ExportModeDashboardVisualizationSwitcher.js"; import { ViewModeDashboardVisualizationSwitcher } from "./ViewModeDashboardVisualizationSwitcher.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx index 8a8eb15e22e..dd4ce5aa4b7 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/DefaultDashboardVisualizationSwitcherComponentSetFactory.tsx @@ -3,6 +3,7 @@ import { type VisualizationSwitcherWidgetComponentSet } from "../../componentDefinition/types.js"; import { type VisualizationSwitcherComponentProvider } from "../../dashboardContexts/types.js"; import { VisualizationSwitcherDraggingComponent } from "../../dragAndDrop/draggableWidget/VisualizationSwitcherDraggingComponent.js"; + import { CreatableVisualizationSwitcher } from "./CreatableVisualizationSwitcher.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx index 79654f4542d..d1dc30f1cf4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.tsx @@ -14,6 +14,7 @@ import { DashboardItem } from "../../presentationComponents/DashboardItems/Dashb import { DashboardItemVisualization } from "../../presentationComponents/DashboardItems/DashboardItemVisualization.js"; import { getVisTypeCssClass } from "../../presentationComponents/DashboardItems/utils.js"; import { EditableDashboardInsightWidgetHeader } from "../widget/InsightWidget/EditableDashboardInsightWidgetHeader.js"; + import { AllVisualizationsDashInsights } from "./AllVisualizationsDashInsights.js"; import { type IDashboardVisualizationSwitcherProps } from "./types.js"; import { useExecutionProgress } from "./useExecutionProgress.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx index 7bb1c1207cc..bd1240591c5 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.tsx @@ -30,6 +30,7 @@ import { useShowAsTable } from "../showAsTableButton/useShowAsTable.js"; import { useAlertingAndScheduling } from "../widget/InsightWidget/useAlertingAndScheduling.js"; import { useInsightMenu } from "../widget/InsightWidget/useInsightMenu.js"; import { VisualizationSwitcherNavigationHeader } from "../widget/VisualizationSwitcherWidget/VisualizationSwitcherNavigationHeader.js"; + import { AllVisualizationsDashInsights } from "./AllVisualizationsDashInsights.js"; import { type IDashboardVisualizationSwitcherProps } from "./types.js"; import { useExecutionProgress } from "./useExecutionProgress.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx index 22963b45c16..b4bb6102328 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/Toolbar.tsx @@ -24,6 +24,7 @@ import { defaultAlignPoints, defaultArrowDirections, } from "../../common/configuration/ConfigurationBubble.js"; + import { ToolbarBottom } from "./ToolbarBottom.js"; import { ToolbarTop } from "./ToolbarTop.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx index 9dc0c6075a2..c41e399ccce 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationConfig.tsx @@ -6,6 +6,7 @@ import { useDashboardSelector } from "../../../../model/react/DashboardStoreProv import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; import { selectRenderMode } from "../../../../model/store/renderMode/renderModeSelectors.js"; import { DashboardInsightMenuBody } from "../../insightMenu/DefaultDashboardInsightMenu/DashboardInsightMenu/index.js"; + import { useVisualizationSwitcherEditableInsightMenu } from "./useVisualizationSwitcherEditableInsightMenu.js"; interface IVisualizationConfigProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx index 4c895663181..ead895cd278 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsList/VisualizationsList.tsx @@ -5,6 +5,7 @@ import { type IInsight, type IInsightWidget } from "@gooddata/sdk-model"; import { type ObjRefMap } from "../../../../../_staging/metadata/objRefMap.js"; import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js"; import { selectInsightsMap } from "../../../../../model/store/insights/insightsSelectors.js"; + import { VisualizationListItem } from "./VisualizationListItem.js"; interface IVisulizationsListProps { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx index 45293b7a777..9a573c34288 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/visualizationSwitcher/configuration/VisualizationsPage.tsx @@ -10,6 +10,7 @@ import { Button, Typography } from "@gooddata/sdk-ui-kit"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js"; import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; + import { InsightPicker } from "./InsightPicker.js"; import { VisualizationsList } from "./VisualizationsList/VisualizationsList.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx index fec5780a756..bc17a4d7341 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/EditableDashboardNestedLayoutWidget.tsx @@ -23,6 +23,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardLayout } from "../../dashboardLayout/DashboardLayout.js"; import { type IDashboardLayoutProps } from "../../dashboardLayout/types.js"; + import { Toolbar } from "./Toolbar.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx index 0f66adc408a..a0d9e5bd204 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.tsx @@ -2,6 +2,7 @@ import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; import { DefaultDashboardLayout } from "../../dashboardLayout/DefaultDashboardLayout.js"; + import { EditableDashboardNestedLayoutWidget } from "./EditableDashboardNestedLayoutWidget.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx index 7ccf4f4d3bd..b5be922833f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardNestedLayoutWidget/Toolbar.tsx @@ -18,6 +18,7 @@ import { import { getLayoutConfiguration } from "../../../../_staging/dashboard/flexibleLayout/layoutConfiguration.js"; import { useDashboardUserInteraction } from "../../../../model/react/useDashboardUserInteraction.js"; import { type ExtendedDashboardWidget } from "../../../../model/types/layoutTypes.js"; + import { LayoutDirectionConfigurationDialog } from "./LayoutDirectionConfigurationDialog.js"; const TOOLBAR_ALIGN_POINTS: IAlignPoint[] = [ diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx index 5494b71580e..f2a9c4edab4 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DashboardWidget.tsx @@ -13,6 +13,7 @@ import { import { useDashboardComponentsContext } from "../../dashboardContexts/DashboardComponentsContext.js"; import { LoadingDashboardPlaceholderWidget } from "../../dragAndDrop/draggableWidget/LoadingDashboardWidget.js"; import { EmptyDashboardDropZone as FlexibleEmptyDashboardDropZone } from "../../flexibleLayout/dragAndDrop/draggableWidget/EmptyDashboardDropZone.js"; + import { DefaultDashboardWidget } from "./DefaultDashboardWidget.js"; import { type CustomDashboardWidgetComponent, type IDashboardWidgetProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx index 1364ad65896..1a399f4587f 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/DefaultDashboardWidget.tsx @@ -25,6 +25,7 @@ import { } from "../../../model/events/widget.js"; import { useDashboardEventDispatch } from "../../../model/react/useDashboardEventDispatch.js"; import { isExtendedDashboardLayoutWidget } from "../../../model/types/layoutTypes.js"; + import { RenderModeAwareDashboardNestedLayoutWidget } from "./DashboardNestedLayoutWidget/RenderModeAwareDashboardNestedLayoutWidget.js"; import { RenderModeAwareDashboardInsightWidget } from "./InsightWidget/RenderModeAwareDashboardInsightWidget.js"; import { RenderModeAwareDashboardRichTextWidget } from "./RichTextWidget/RenderModeAwareDashboardRichTextWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx index f6583ea6d4d..0ace0caed8b 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DashboardWidgetInsightGuard.tsx @@ -4,6 +4,7 @@ import { type ComponentType } from "react"; import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js"; import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js"; + import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; interface IDashboardWidgetInsightGuardProps extends Omit { diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx index 84c445fdb0a..51439ee6fde 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/DefaultDashboardInsightWidget.tsx @@ -33,6 +33,7 @@ import { } from "../../insight/insightToTable.js"; import { ShowAsTableButton } from "../../showAsTableButton/ShowAsTableButton.js"; import { useShowAsTable } from "../../showAsTableButton/useShowAsTable.js"; + import { DashboardWidgetInsightGuard } from "./DashboardWidgetInsightGuard.js"; import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; import { useAlertingAndScheduling } from "./useAlertingAndScheduling.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx index 93141247140..33b63798713 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/EditableDashboardInsightWidget.tsx @@ -16,6 +16,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemVisualization } from "../../../presentationComponents/DashboardItems/DashboardItemVisualization.js"; import { getVisTypeCssClass } from "../../../presentationComponents/DashboardItems/utils.js"; import { DashboardInsight } from "../../insight/DashboardInsight.js"; + import { DashboardWidgetInsightGuard } from "./DashboardWidgetInsightGuard.js"; import { EditableDashboardInsightWidgetHeader } from "./EditableDashboardInsightWidgetHeader.js"; import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx index 5819ea2d6b2..5ee2352ad1e 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/ExportableDashboardInsightWidget.tsx @@ -2,6 +2,7 @@ import { ExportModeInsightWidgetDescription } from "../../description/ExportModeInsightWidgetDescription.js"; import { InsightWidgetDescriptionComponentProvider } from "../../description/InsightWidgetDescriptionComponentProvider.js"; + import { DefaultDashboardInsightWidget } from "./DefaultDashboardInsightWidget.js"; import { type IDefaultDashboardInsightWidgetProps } from "./types.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts index 18735b71e70..e6097830a7c 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/InsightWidget/RenderModeAwareDashboardInsightWidget.ts @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; + import { DefaultDashboardInsightWidget } from "./DefaultDashboardInsightWidget.js"; import { EditableDashboardInsightWidget } from "./EditableDashboardInsightWidget.js"; import { ExportableDashboardInsightWidget } from "./ExportableDashboardInsightWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx index c2ec736fb29..f42bc6cd140 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/DefaultDashboardRichTextWidget.tsx @@ -6,6 +6,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { useWidgetHighlighting } from "../../common/useWidgetHighlighting.js"; import { DashboardRichText } from "../../richText/DashboardRichText.js"; + import { type IDefaultDashboardRichTextWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx index 61c5241db49..aeed8dd3ef1 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/EditableDashboardRichTextWidget.tsx @@ -11,6 +11,7 @@ import { useIsDraggingWidget } from "../../../dragAndDrop/draggableWidget/useIsD import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardRichText } from "../../richText/DashboardRichText.js"; + import { type IDefaultDashboardRichTextWidgetProps } from "./types.js"; /** * @internal diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx index 7eef80a98b7..21d552cb464 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/ExportableDashboardRichTextWidget.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardRichText } from "../../richText/DashboardRichText.js"; + import { type IDefaultDashboardRichTextWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx index 04b218e68f9..53ea5161d44 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/RichTextWidget/RenderModeAwareDashboardRichTextWidget.tsx @@ -1,6 +1,7 @@ // (C) 2022-2026 GoodData Corporation import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; + import { DefaultDashboardRichTextWidget } from "./DefaultDashboardRichTextWidget.js"; import { EditableDashboardRichTextWidget } from "./EditableDashboardRichTextWidget.js"; import { ExportableDashboardRichTextWidget } from "./ExportableDashboardRichTextWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx index 3e97b7c5f01..edc65966a06 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/DefaultDashboardVisualizationSwitcherWidget.tsx @@ -6,6 +6,7 @@ import { DashboardItem } from "../../../presentationComponents/DashboardItems/Da import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { useWidgetHighlighting } from "../../common/useWidgetHighlighting.js"; import { DashboardVisualizationSwitcher } from "../../visualizationSwitcher/DashboardVisualizationSwitcher.js"; + import { type IDefaultDashboardVisualizationSwitcherWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx index e327a2babe5..b63d5e1e5cf 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/EditableDashboardVisualizationSwitcherWidget.tsx @@ -31,6 +31,7 @@ import { useIsDraggingWidget } from "../../../dragAndDrop/draggableWidget/useIsD import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardVisualizationSwitcher } from "../../visualizationSwitcher/DashboardVisualizationSwitcher.js"; + import { type IDefaultDashboardVisualizationSwitcherWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx index 4965ff054b2..33abde930ab 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/ExportableDashboardVisualizationSwitcherWidget.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { DashboardItem } from "../../../presentationComponents/DashboardItems/DashboardItem.js"; import { DashboardItemBase } from "../../../presentationComponents/DashboardItems/DashboardItemBase.js"; import { DashboardVisualizationSwitcher } from "../../visualizationSwitcher/DashboardVisualizationSwitcher.js"; + import { type IDefaultDashboardVisualizationSwitcherWidgetProps } from "./types.js"; /** diff --git a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx index 0a56b970bc1..a6764747f04 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widget/widget/VisualizationSwitcherWidget/RenderModeAwareDashboardVisualizationSwitcherWidget.tsx @@ -1,6 +1,7 @@ // (C) 2024-2026 GoodData Corporation import { renderModeAware } from "../../../componentDefinition/renderModeAware.js"; + import { DefaultDashboardVisualizationSwitcherWidget } from "./DefaultDashboardVisualizationSwitcherWidget.js"; import { EditableDashboardVisualizationSwitcherWidget } from "./EditableDashboardVisualizationSwitcherWidget.js"; import { ExportableDashboardVisualizationSwitcherWidget } from "./ExportableDashboardVisualizationSwitcherWidget.js"; diff --git a/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx b/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx index d2b1430ef2a..fc94b6ec17d 100644 --- a/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/widgetDeleteDialog/DefaultWidgetDeleteDialog.tsx @@ -21,6 +21,7 @@ import { selectIsWidgetDeleteDialogOpen, selectWidgetDeleteDialogWidgetRef, } from "../../model/store/ui/uiSelectors.js"; + import { type IWidgetDeleteDialogProps } from "./types.js"; const deleteMessages = defineMessages({ diff --git a/libs/sdk-ui-ext/package.json b/libs/sdk-ui-ext/package.json index d545cc83654..3ce2b3095e5 100644 --- a/libs/sdk-ui-ext/package.json +++ b/libs/sdk-ui-ext/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-ext", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Extensions", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-ext/src/automations/Automations.tsx b/libs/sdk-ui-ext/src/automations/Automations.tsx index f7ee5494b52..a5758a031fe 100644 --- a/libs/sdk-ui-ext/src/automations/Automations.tsx +++ b/libs/sdk-ui-ext/src/automations/Automations.tsx @@ -10,6 +10,7 @@ import { import { ToastsCenterContextProvider } from "@gooddata/sdk-ui-kit"; import { InternalIntlWrapper } from "../internal/utils/internalIntlProvider.js"; + import { AutomationsCore } from "./AutomationsCore.js"; import { DEFAULT_MAX_HEIGHT, diff --git a/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx b/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx index b5d03087678..e0882b85fdb 100644 --- a/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx +++ b/libs/sdk-ui-ext/src/automations/columns/AutomationIcon.tsx @@ -13,6 +13,7 @@ import { formatAutomationSubtitle, formatCellValue } from "../format.js"; import { messages } from "../messages.js"; import { type IAutomationIconProps } from "../types.js"; import { getRecipientName } from "../utils.js"; + import { AutomationIconTooltip } from "./AutomationIconTooltip.js"; const { e } = bem("gd-ui-ext-automation-icon-tooltip"); diff --git a/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx b/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx index ba52bd9c3c8..e8ea972c09a 100644 --- a/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx +++ b/libs/sdk-ui-ext/src/automations/columns/useAutomationColumns.tsx @@ -19,6 +19,7 @@ import { messages } from "../messages.js"; import { type AutomationsColumnName, type IUseAutomationColumnsProps } from "../types.js"; import { useUser } from "../UserContext.js"; import { getNextRunFromCron, getWidgetId, getWidgetName, getWorkspaceId } from "../utils.js"; + import { AutomationIcon } from "./AutomationIcon.js"; import { AutomationMenu } from "./AutomationMenu.js"; export const useAutomationColumns = ({ diff --git a/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts b/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts index a61838ea943..805e6bf2fe0 100644 --- a/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts +++ b/libs/sdk-ui-ext/src/automations/filters/useAutomationFilters.ts @@ -19,6 +19,7 @@ import { type IAutomationFilterQuery, } from "../types.js"; import { useUser } from "../UserContext.js"; + import { useFilterOptions } from "./FilterOptionsContext.js"; //generic filter hook diff --git a/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts b/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts index 7d958c6e5b3..e0f82e1e1c9 100644 --- a/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts +++ b/libs/sdk-ui-ext/src/dataLoaders/test/InsightDataLoader.test.ts @@ -7,6 +7,7 @@ import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { type IInsight, type ObjRef, idRef } from "@gooddata/sdk-model"; import { insightDataLoaderFactory } from "../InsightDataLoader.js"; + import { noopWorkspaceInsightsService } from "./dataLoaders.mock.js"; describe("InsightDataLoader", () => { diff --git a/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx b/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx index df27ac05799..61da5901686 100644 --- a/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx +++ b/libs/sdk-ui-ext/src/insightPicker/InsightPicker.tsx @@ -5,6 +5,7 @@ import { useContext } from "react"; import { IntlContext } from "react-intl"; import { InternalIntlWrapper } from "../internal/utils/internalIntlProvider.js"; + import { InsightPickerCore } from "./InsightPickerCore.js"; import { type IInsightPickerProps } from "./types.js"; diff --git a/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx b/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx index 2d1a822d022..fdbc05b74e1 100644 --- a/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx +++ b/libs/sdk-ui-ext/src/insightPicker/InsightPickerCore.tsx @@ -12,6 +12,7 @@ import { type ITabsIds, useInsightPagedList, } from "../internal/components/insightList/useInsightPagedList.js"; + import { InsightPickerFilterBar } from "./InsightPickerFilterBar.js"; import { InsightPickerRow } from "./InsightPickerRow.js"; import { messages } from "./messages.js"; diff --git a/libs/sdk-ui-ext/src/insightView/InsightView.tsx b/libs/sdk-ui-ext/src/insightView/InsightView.tsx index d42494b0c10..c1f0be0f26d 100644 --- a/libs/sdk-ui-ext/src/insightView/InsightView.tsx +++ b/libs/sdk-ui-ext/src/insightView/InsightView.tsx @@ -35,6 +35,7 @@ import { insightDataLoaderFactory } from "../dataLoaders/InsightDataLoader.js"; import { userWorkspaceSettingsDataLoaderFactory } from "../dataLoaders/UserWorkspaceSettingsDataLoader.js"; import { workspacePermissionsDataLoaderFactory } from "../dataLoaders/WorkspacePermissionsDataLoader.js"; import { type IInsightViewProps } from "../internal/index.js"; + import { InsightError } from "./InsightError.js"; import { InsightRenderer } from "./InsightRenderer.js"; import { InsightTitle } from "./InsightTitle.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx b/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx index 8e603104155..cc5f70009f4 100644 --- a/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx +++ b/libs/sdk-ui-ext/src/internal/components/BaseVisualization.tsx @@ -48,6 +48,7 @@ import { } from "../interfaces/Visualization.js"; import { type PluggableVisualizationFactory } from "../interfaces/VisualizationDescriptor.js"; import { cleanupKeyDriverAnalysisOnMetrics, hideKeyDriverOnMetrics } from "../utils/keyDriverAnalysis.js"; + import { FullVisualizationCatalog, type IVisualizationCatalog } from "./VisualizationCatalog.js"; export interface IBaseVisualizationProps extends IVisCallbacks { diff --git a/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts b/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts index 7a2489882b8..f36fe357791 100644 --- a/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts +++ b/libs/sdk-ui-ext/src/internal/components/VisualizationCatalog.ts @@ -3,6 +3,7 @@ import { type IInsightDefinition, insightVisualizationUrl } from "@gooddata/sdk-model"; import { type IVisualizationDescriptor } from "../interfaces/VisualizationDescriptor.js"; + import { AreaChartDescriptor } from "./pluggableVisualizations/areaChart/AreaChartDescriptor.js"; import { BarChartDescriptor } from "./pluggableVisualizations/barChart/BarChartDescriptor.js"; import { BubbleChartDescriptor } from "./pluggableVisualizations/bubbleChart/BubbleChartDescriptor.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts index aa92d3a3664..cbdc9cab0bf 100644 --- a/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/attributeHierarchies/attributeHierarchyDialog/tests/utils.test.ts @@ -9,6 +9,7 @@ import { findCatalogAttributeByRef, searchAttributes, } from "../utils.js"; + import { attributesData, catalogAttributes, catalogDateDatasets } from "./utils.fixture.js"; describe("utils", () => { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx index 7eafc3be719..935616990d1 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/BasemapDropdownControl.tsx @@ -4,6 +4,7 @@ import { memo } from "react"; import { messages } from "../../../locales.js"; import { type IDropdownItem } from "../../interfaces/Dropdown.js"; + import { DropdownControl, type IDropdownControlProps } from "./DropdownControl.js"; export interface IBasemapDropdownControlProps extends Omit< diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx index 659a6161d8b..5a69786619e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/CellsControl.tsx @@ -2,6 +2,7 @@ import { messages } from "../../../locales.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { CellTextWrappingControl } from "./PivotTableTextWrappingControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx index 548a69331db..410ce1bd1f2 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ColumnHeadersPositionControl.tsx @@ -9,6 +9,7 @@ import { columnHeadersPositionDropdownItems } from "../../constants/dropdowns.js import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { isSetColumnHeadersPositionToLeftAllowed } from "../../utils/controlsHelper.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; import { ColumnHeaderTextWrappingControl } from "./PivotTableTextWrappingControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx index 7afd7bfb5dc..70df8a5324c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataLabelsControl.tsx @@ -7,6 +7,7 @@ import { dataLabelStyleDropdownItems, dataLabelsDropdownItems } from "../../cons import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; import { CheckboxControl } from "../configurationControls/CheckboxControl.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IDataLabelsControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx index e8af0a7091b..8cfbf5efd34 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/DataPointsControl.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../locales.js"; import { dataPointsDropdownLabels } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IDataPointsControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx index f2ab87d663c..311aeb10659 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/GeoViewportControl.tsx @@ -19,6 +19,7 @@ import { messages } from "../../../locales.js"; import { pushpinViewportDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { CheckboxControl } from "./CheckboxControl.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx index 27129ec2d52..3eab877a10d 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/GrandTotalsControl.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../locales.js"; import { grandTotalsPositionDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx index 0e3c62e36ae..7370e58a21c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/ImageControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { imageDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IImageControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx index 8975c3a3a44..23f5fce7022 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/MetricsPositionControl.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../locales.js"; import { metricsPositionDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx index 4a2203c3dae..10ed60f9e14 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/OrientationDropdownControl.tsx @@ -11,6 +11,7 @@ import { messages } from "../../../locales.js"; import { orientationDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IOrientationDropdownControl { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx index ac4e48b9758..75e8d632893 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PagingSection.tsx @@ -9,6 +9,7 @@ import { type IPushData } from "@gooddata/sdk-ui"; import { messages } from "../../../locales.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; + import { ConfigSection } from "./ConfigSection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx index 3627af09258..f76f24babfa 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinShapeControl.tsx @@ -10,6 +10,7 @@ import { pushpinShapeTypeDropdownItems } from "../../constants/dropdowns.js"; import { type IDropdownItem } from "../../interfaces/Dropdown.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx index 061a404355f..76d489f39f8 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/PushpinSizeControl.tsx @@ -8,6 +8,7 @@ import { messages } from "../../../locales.js"; import { pushpinSizeDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { ConfigSubsection } from "./ConfigSubsection.js"; import { DropdownControl } from "./DropdownControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx index d8b91fe6e2b..1790f7834bc 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/RowHeightControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { rowSizingDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IRowHeightControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx index fd62c27ba1a..fdb3ac8c398 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/TextWrappingControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { textWrappingDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface ITextWrappingControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx index e1a8d7f6f04..415e66243d8 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/VerticalAlignControl.tsx @@ -9,6 +9,7 @@ import { messages } from "../../../locales.js"; import { verticalAlignmentDropdownItems } from "../../constants/dropdowns.js"; import { type IVisualizationProperties } from "../../interfaces/Visualization.js"; import { getTranslatedDropdownItems } from "../../utils/translations.js"; + import { DropdownControl } from "./DropdownControl.js"; export interface IVerticalAlignControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx index 2d98afdef0d..7976e91af00 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/AdvancedSection.tsx @@ -12,6 +12,7 @@ import { Button } from "@gooddata/sdk-ui-kit"; import { messages } from "../../../../locales.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { ConfigEditor } from "./ConfigEditor.js"; import { useOverflow } from "./useOverflow.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx index cb9a8f32d96..01960bf250f 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/advanced/ConfigEditor.tsx @@ -9,6 +9,7 @@ import { useIntl } from "react-intl"; import { Button, Hyperlink, type IAlignPoint, Overlay } from "@gooddata/sdk-ui-kit"; import { messages } from "../../../../locales.js"; + import { CodeMirrorEditor } from "./CodeMirrorEditor.js"; import { SnippetHeader, SnippetItem } from "./SnippetItem.js"; import { type IChartConfigurationItemSnippet, SNIPPETS } from "./snippets.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx index 3d9350b34d1..f6bdbaf261b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/anomalies/AnomaliesSection.tsx @@ -8,6 +8,7 @@ import { messages } from "../../../../locales.js"; import { type IColorConfiguration } from "../../../interfaces/Colors.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { AnomalyColorControl } from "./AnomalyColorControl.js"; import { AnomalyIndicatorControl } from "./AnomalyIndicatorControl.js"; import { AnomalySensitivityControl } from "./AnomalySensitivityControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx index 4ddc69942a2..d00c913d895 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/LabelSubsection.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../../locales.js"; import { type AxisType } from "../../../interfaces/AxisType.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSubsection } from "../../configurationControls/ConfigSubsection.js"; + import { LabelFormatControl } from "./LabelFormatControl.js"; import { LabelRotationControl } from "./LabelRotationControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx index 0adf887a437..0e091a6ca41 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/axis/NameSubsection.tsx @@ -6,6 +6,7 @@ import { messages } from "../../../../locales.js"; import { type IConfigItemSubsection } from "../../../interfaces/ConfigurationPanel.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSubsection } from "../../configurationControls/ConfigSubsection.js"; + import { NamePositionControl } from "./NamePositionControl.js"; export const NameSubsection = memo(function NameSubsection(props: IConfigItemSubsection) { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx index ae1f4e9787a..9e3736a7295 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/ColorsSection.tsx @@ -16,6 +16,7 @@ import { getColoredInputItems, getProperties } from "../../../utils/colors.js"; import { getTranslatedDropdownItems, getTranslation } from "../../../utils/translations.js"; import { ConfigSection } from "../../configurationControls/ConfigSection.js"; import { DropdownControl } from "../DropdownControl.js"; + import { ColoredItemsList } from "./coloredItemsList/ColoredItemsList.js"; export interface IColorsSectionProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx index 6dee71611d6..b06e7b5f00e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItem.tsx @@ -12,6 +12,7 @@ import { type IColoredItem } from "../../../../interfaces/Colors.js"; import { getTranslation } from "../../../../utils/translations.js"; import { isWaterfallColorHeaderItemKey } from "../../../../utils/uiConfigHelpers/waterfallChartUiConfigHelper.js"; import { ColorDropdown } from "../colorDropdown/ColorDropdown.js"; + import { ColoredItemContent } from "./ColoredItemContent.js"; export interface IColoredItemProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx index 0c2635e5cf9..dc5e0a28ad7 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/ColoredItemsList.tsx @@ -8,6 +8,7 @@ import { DropdownList, GOODSTRAP_SCROLLED_EVENT } from "@gooddata/sdk-ui-kit"; import { type IColoredItem } from "../../../../interfaces/Colors.js"; import { getSearchedItems } from "../../../../utils/colors.js"; + import { ColoredItem } from "./ColoredItem.js"; const DROPDOWN_MAX_HEIGHT = 150; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx index 20102efd5fd..8ecac498dcd 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/colors/coloredItemsList/tests/ColoredItemsList.test.tsx @@ -8,6 +8,7 @@ import { describe, expect, it } from "vitest"; import { colorPalette } from "../../../../../tests/mocks/testColorHelper.js"; import { InternalIntlWrapper } from "../../../../../utils/internalIntlProvider.js"; import { ColoredItemsList, type IColoredItemsListProps } from "../ColoredItemsList.js"; + import { inputItemsMock } from "./mock.js"; const defaultProps: IColoredItemsListProps = { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx index 38ce67daf37..4a58ac2138b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/ComparisonSection.tsx @@ -8,6 +8,7 @@ import { comparisonMessages } from "../../../../locales.js"; import { type IComparisonControlProperties } from "../../../interfaces/ControlProperties.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { CalculationControl } from "./calculation/CalculationControl.js"; import { COMPARISON_ENABLED_VALUE_PATH } from "./ComparisonValuePath.js"; import { IndicatorSubSection } from "./indicators/IndicatorSubSection.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx index 7b2c4143aca..d2cc8e65c8c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationControl.tsx @@ -13,6 +13,7 @@ import { type IComparisonControlProperties } from "../../../../interfaces/Contro import { type IVisualizationProperties } from "../../../../interfaces/Visualization.js"; import { DropdownControl } from "../../DropdownControl.js"; import { COMPARISON_CALCULATION_TYPE_VALUE_PATH } from "../ComparisonValuePath.js"; + import { CalculationListItem } from "./CalculationListItem.js"; interface ICalculationControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx index d63c7b395bf..628497c7a54 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/calculation/CalculationListItem.tsx @@ -6,6 +6,7 @@ import { type CalculationType } from "@gooddata/sdk-ui-charts"; import { Bubble, BubbleHoverTrigger, type ISingleSelectListItemProps } from "@gooddata/sdk-ui-kit"; import { HIDE_DELAY_DEFAULT, SHOW_DELAY_DEFAULT } from "../../../../constants/bubble.js"; + import { CalculationListItemInfo } from "./CalculationListItemInfo.js"; const BUBBLE_INFO_ALIGN_POINTS = [{ align: "cr cl" }]; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx index fc48b995135..671fc83c379 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/IndicatorSubSection.tsx @@ -7,6 +7,7 @@ import { comparisonMessages } from "../../../../../locales.js"; import { type IComparisonControlProperties } from "../../../../interfaces/ControlProperties.js"; import { type IVisualizationProperties } from "../../../../interfaces/Visualization.js"; import { ConfigSubsection } from "../../ConfigSubsection.js"; + import { ArrowControl } from "./ArrowControl.js"; import { ColorsControl } from "./colorsControl/ColorsControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx index 36152194355..b090c3266fe 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/indicators/colorsControl/ColorsControl.tsx @@ -12,6 +12,7 @@ import { COMPARISON_COLOR_CONFIG_NEGATIVE, COMPARISON_COLOR_CONFIG_POSITIVE, } from "../../ComparisonValuePath.js"; + import { ColorCheckbox } from "./ColorCheckbox.js"; import { ColorItem } from "./ColorItem.js"; import { ColorResetButton } from "./ColorResetButton.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx index 56383cf4e1a..0dbd5448e79 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/ValueSubSection.tsx @@ -9,6 +9,7 @@ import { type IVisualizationProperties } from "../../../../interfaces/Visualizat import { getNumberFormat, getNumberSubFormat } from "../../../../utils/comparisonHelper.js"; import { ConfigSubsection } from "../../ConfigSubsection.js"; import { COMPARISON_FORMAT_VALUE_PATH, COMPARISON_SUB_FORMAT_VALUE_PATH } from "../ComparisonValuePath.js"; + import { ComparisonPositionControl } from "./ComparisonPositionControl.js"; import { NumberFormatControl } from "./numberFormat/NumberFormatControl.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx index 9cd288045fb..86060d23d92 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/comparison/values/numberFormat/NumberFormatControl.tsx @@ -12,6 +12,7 @@ import { type IComparisonControlProperties } from "../../../../../interfaces/Con import { type IVisualizationProperties } from "../../../../../interfaces/Visualization.js"; import { getPresets, getTemplates } from "../../../../../utils/comparisonHelper.js"; import { DisabledBubbleMessage } from "../../../../DisabledBubbleMessage.js"; + import { NumberFormatToggleButton } from "./NumberFormatToggleButton.js"; interface INumberFormatControlProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx index f6a3681580d..deeb852b1ee 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/forecast/ForecastSection.tsx @@ -11,6 +11,7 @@ import { type IVisualizationProperties } from "../../../interfaces/Visualization import { CheckboxControl } from "../CheckboxControl.js"; import { ConfigSection } from "../ConfigSection.js"; import { InputControl } from "../InputControl.js"; + import { ForecastConfidenceControl } from "./ForecastConfidenceControl.js"; export interface IForecastSection { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx index abf32ef20f5..ba46d4c7677 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/GeoLegendSection.tsx @@ -5,6 +5,7 @@ import { memo } from "react"; import { messages } from "../../../../locales.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { GeoLegendPositionControl } from "./GeoLegendPositionControl.js"; type IGeoLegendPropertiesMeta = Record; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx index 43a7c7d81ec..15c88a90d2a 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationControls/legend/LegendSection.tsx @@ -5,6 +5,7 @@ import { memo } from "react"; import { messages } from "../../../../locales.js"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; import { ConfigSection } from "../ConfigSection.js"; + import { LegendPositionControl } from "./LegendPositionControl.js"; export interface ILegendSection { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx index 4f492d04999..654b273f527 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BarChartConfigurationPanel.tsx @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { BAR_CHART_AXIS_CONFIG } from "../../constants/axis.js"; + import { BaseChartConfigurationPanel } from "./BaseChartConfigurationPanel.js"; export class BarChartConfigurationPanel extends BaseChartConfigurationPanel { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx index 6acec9325c8..a5aad397569 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BaseChartConfigurationPanel.tsx @@ -26,6 +26,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx index e4a0ca18df5..03e74b4d1e0 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BubbleChartConfigurationPanel.tsx @@ -24,6 +24,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class BubbleChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx index 71c17324944..63761857f5b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/BulletChartConfigurationPanel.tsx @@ -20,6 +20,7 @@ import { CheckboxControl } from "../configurationControls/CheckboxControl.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class BulletChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx index 29df9d83b88..9c535e25059 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ConfigurationPanelContent.tsx @@ -36,6 +36,7 @@ import { isInsightSupportedForScheduledExports, } from "../pluggableVisualizations/alerts.js"; import { isInsightSupportedForImplicitDrillToUrl } from "../pluggableVisualizations/drillDownUtil.js"; + import { type SectionName } from "./sectionName.js"; export interface IConfigurationPanelContentProps { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx index 81f74d0db78..f8f15b23916 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/FunnelChartConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class FunnelChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx index 2b3be7fda6a..8b1961d4c8e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoAreaConfigurationPanel.tsx @@ -14,6 +14,7 @@ import { ColorsSection } from "../configurationControls/colors/ColorsSection.js" import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { GeoViewportControl, type ICurrentMapView } from "../configurationControls/GeoViewportControl.js"; import { GeoLegendSection } from "../configurationControls/legend/GeoLegendSection.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx index 3f701b57709..e2aeb918b0c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/GeoPushpinConfigurationPanel.tsx @@ -32,6 +32,7 @@ import { GeoLegendSection } from "../configurationControls/legend/GeoLegendSecti import { PushpinShapeControl } from "../configurationControls/PushpinShapeControl.js"; import { PushpinSizeControl } from "../configurationControls/PushpinSizeControl.js"; import { PushpinViewportControl } from "../configurationControls/PushpinViewportControl.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx index f628730dddd..85325e51ab8 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeadlineConfigurationPanel.tsx @@ -21,6 +21,7 @@ import { isComparisonEnabled, } from "../../utils/uiConfigHelpers/headlineUiConfigHelper.js"; import { ComparisonSection } from "../configurationControls/comparison/ComparisonSection.js"; + import { ConfigurationPanelContent, type IConfigurationPanelContentProps, diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx index b9e961ec9ad..3da75c60e32 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/HeatMapConfigurationPanel.tsx @@ -21,6 +21,7 @@ import { LabelSubsection } from "../configurationControls/axis/LabelSubsection.j import { NameSubsection } from "../configurationControls/axis/NameSubsection.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class HeatMapConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx index dd60823ef69..7e05fbcf634 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/LineChartBasedConfigurationPanel.tsx @@ -19,6 +19,7 @@ import { ContinuousLineControl } from "../configurationControls/ContinuousLineCo import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { DataPointsControl } from "../configurationControls/DataPointsControl.js"; import { DistinctPointShapesControl } from "../configurationControls/DistintcPointShapesControl.js"; + import { BaseChartConfigurationPanel } from "./BaseChartConfigurationPanel.js"; import { type IConfigurationPanelContentProps } from "./ConfigurationPanelContent.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx index a7e4f5dea08..e1418c9741a 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PieChartConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class PieChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx index 70c83326d37..f3945bc5368 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PivotTableConfigurationPanel.tsx @@ -23,6 +23,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { GrandTotalsControl } from "../configurationControls/GrandTotalsControl.js"; import { MetricsPositionControl } from "../configurationControls/MetricsPositionControl.js"; import { PagingSection } from "../configurationControls/PagingSection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; import { type SectionName } from "./sectionName.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx index 13fe38d1755..6a167b244b4 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/PyramidChartConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class PyramidChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx index e20dbd18d46..210ecf154ec 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/RepeaterConfigurationPanel.tsx @@ -19,6 +19,7 @@ import { ImageControl } from "../configurationControls/ImageControl.js"; import { RowHeightControl } from "../configurationControls/RowHeightControl.js"; import { TextWrappingControl } from "../configurationControls/TextWrappingControl.js"; import { VerticalAlignControl } from "../configurationControls/VerticalAlignControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class RepeaterConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx index 239ad99da06..95b32f6a50e 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/SankeyChartConfigurationPanel.tsx @@ -18,6 +18,7 @@ import { import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { LegendSection } from "../configurationControls/legend/LegendSection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class SankeyChartConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx index 70e8cba3426..b861117d08c 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/ScatterPlotConfigurationPanel.tsx @@ -26,6 +26,7 @@ import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; import { MinMaxControl } from "../configurationControls/MinMaxControl.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class ScatterPlotConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx index 3d6eb20005d..f5979109df6 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/TreeMapConfigurationPanel.tsx @@ -16,6 +16,7 @@ import { } from "../../constants/bubble.js"; import { ConfigSection } from "../configurationControls/ConfigSection.js"; import { DataLabelsControl } from "../configurationControls/DataLabelsControl.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class TreeMapConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx index 5c706c6178d..9c50345c84b 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/UnsupportedConfigurationPanel.tsx @@ -5,6 +5,7 @@ import { type ReactNode } from "react"; import { omit } from "lodash-es"; import { UnsupportedProperties } from "../configurationControls/UnsupportedProperties.js"; + import { ConfigurationPanelContent } from "./ConfigurationPanelContent.js"; export class UnsupportedConfigurationPanel extends ConfigurationPanelContent { diff --git a/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx b/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx index 7f20165dcf8..5aa24ff1fde 100644 --- a/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx +++ b/libs/sdk-ui-ext/src/internal/components/configurationPanels/WaterfallChartConfigurationPanel.tsx @@ -23,6 +23,7 @@ import { LegendSection } from "../configurationControls/legend/LegendSection.js" import { OrientationDropdownControl } from "../configurationControls/OrientationDropdownControl.js"; import { TotalSection } from "../configurationControls/total/TotalSection.js"; import { countItemsOnAxes } from "../pluggableVisualizations/baseChart/insightIntrospection.js"; + import { BaseChartConfigurationPanel } from "./BaseChartConfigurationPanel.js"; import { type IConfigurationPanelContentProps } from "./ConfigurationPanelContent.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx index ad41fac21a2..60c3aa20c23 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type DataSourcePermissionSubject, type IGrantedDataSource } from "../types.js"; + import { AddDataSourceSelect } from "./AddDataSourceSelect.js"; import { DataSourceList } from "./DataSourceList.js"; import { useAddDataSource } from "./useAddDataSource.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx index baceeceb46e..9da9708208a 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx @@ -18,6 +18,7 @@ import { isDataSourceItem, isSelectErrorOption, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx index 9b4000669fa..d84fb78fe5d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { IconDataSource } from "@gooddata/sdk-ui-kit"; import { type DataSourcePermissionSubject, type IGrantedDataSource } from "../types.js"; + import { PermissionsDropdown } from "./PermissionsDropdown.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx index a01e7c384a7..72af3ce4ea3 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx @@ -4,6 +4,7 @@ import { type ReactElement, useMemo } from "react"; import { type IGrantedDataSource, type ListMode, type WorkspacePermissionSubject } from "../types.js"; import { sortByName } from "../utils.js"; + import { DataSourceItem } from "./DataSourceItem.js"; import { DataSourceListEmpty } from "./DataSourceListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx index 599dcad8913..b71aed0bafd 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx @@ -15,6 +15,7 @@ import { type IDataSourcePermissionsItem, type IGrantedDataSource, } from "../types.js"; + import { dataSourcePermissionMessages } from "./locales.js"; import { PermissionsDropdownList } from "./PermissionsDropdownList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx index 74a421b388c..4a7f0866f32 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type DataSourcePermission, type IDataSourcePermissionsItem } from "../types.js"; + import { dataSourcePermissionMessages } from "./locales.js"; import { QuestionMarkIcon } from "./QuestionMarkIcon.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx index 51b07785abd..38bb63fe0f0 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx @@ -12,6 +12,7 @@ import { type DataSourcePermissionSubject, type IDataSourcePermissionsItem, } from "../types.js"; + import { dataSourcePermissionMessages } from "./locales.js"; import { PermissionDropdownItem } from "./PermissionsDropdownItem.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx index e3ba96e3741..5ecf259d9ae 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserDetails.tsx @@ -9,6 +9,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { extractUserName } from "../utils.js"; + import { useUserDetails } from "./detailsHooks.js"; import { UserDetailsView } from "./UserDetailsView.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx index 383abb600df..4a54ddd992a 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/EditUserGroupDetails.tsx @@ -9,6 +9,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { extractUserGroupName } from "../utils.js"; + import { useUserGroupDetails } from "./detailsHooks.js"; import { UserGroupDetailsView } from "./UserGroupDetailsView.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx index ac8df2e2cfc..c6c78451324 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserDetailsView.tsx @@ -7,6 +7,7 @@ import { type IUser } from "@gooddata/sdk-model"; import { messages } from "../locales.js"; import { useTelemetry } from "../TelemetryContext.js"; import { type ListMode } from "../types.js"; + import { DetailRow } from "./DetailRow.js"; import { OrganizationMemberDropdown } from "./OrganizationMemberDropdown.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx index 884c0975b65..751c2ef9a54 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Details/UserGroupDetailsView.tsx @@ -6,6 +6,7 @@ import { type IUserGroup } from "@gooddata/sdk-model"; import { messages } from "../locales.js"; import { type ListMode } from "../types.js"; + import { DetailRow } from "./DetailRow.js"; export interface IUserGroupDetailsViewProps { diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx index 7a25fa9e511..7649f6cc661 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroup.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type IGrantedUserGroup } from "../types.js"; + import { AddUserGroupContent } from "./AddUserGroupContent.js"; import { useAddUserGroup } from "./userGroupHooks.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx index 1c993b03ef4..be256485e0e 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupContent.tsx @@ -1,6 +1,7 @@ // (C) 2023-2026 GoodData Corporation import { type IGrantedUserGroup } from "../types.js"; + import { AddUserGroupSelect } from "./AddUserGroupSelect.js"; import { UserGroupsList } from "./UserGroupsList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx index a6da92597d4..aa7dc66ea00 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/AddUserGroupSelect.tsx @@ -18,6 +18,7 @@ import { isGrantedUserGroup, isSelectErrorOption, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx index 78e1d276f05..a61296b8fb9 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/UserGroups/UserGroupsList.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { type IGrantedUserGroup, type ListMode } from "../types.js"; import { sortByName } from "../utils.js"; + import { UserGroupItem } from "./UserGroupItem.js"; import { UserGroupsListEmpty } from "./UserGroupsListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx index 4785744b1b6..bf7444263fc 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUser.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type IUserMember } from "../types.js"; + import { AddUserContent } from "./AddUserContent.js"; import { useAddUsers } from "./usersHooks.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx index 21bd3b1c879..5a0bd115d01 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserContent.tsx @@ -1,6 +1,7 @@ // (C) 2023-2026 GoodData Corporation import { type IUserMember } from "../types.js"; + import { AddUserSelect } from "./AddUserSelect.js"; import { UsersList } from "./UsersList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx index 9c501e59ff1..1380c89add1 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/AddUserSelect.tsx @@ -17,6 +17,7 @@ import { isSelectErrorOption, isUserItem, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx index 6e41922f371..8e80189bfca 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Users/UsersList.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { type IUserMember, type ListMode } from "../types.js"; import { sortByName } from "../utils.js"; + import { UserItem } from "./UserItem.js"; import { UsersListEmpty } from "./UsersListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx index 4e642b3d00d..938abdcab64 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddSingleWorkspaceSelect.tsx @@ -17,6 +17,7 @@ import { isSelectErrorOption, isWorkspaceItem, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx index 36752609d77..aef82593381 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.tsx @@ -8,6 +8,7 @@ import { BackButton, ConfirmDialogBase, Hyperlink } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; import { type IGrantedWorkspace, type WorkspacePermissionSubject } from "../types.js"; + import { AddSingleWorkspaceSelect } from "./AddSingleWorkspaceSelect.js"; import { useAddWorkspace } from "./useAddWorkspace.js"; import { GranularPermissions } from "./WorkspaceItem/GranularPermissions.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx index 9d6e87c9ff1..944968058d7 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspaceSelect.tsx @@ -18,6 +18,7 @@ import { isSelectErrorOption, isWorkspaceItem, } from "../types.js"; + import { EmptyRenderer, GroupHeadingRenderer, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx index e276647feb7..405bff91db9 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissions.tsx @@ -12,6 +12,7 @@ import { type WorkspacePermission, type WorkspacePermissions, } from "../../types.js"; + import { AdditionalAccessPermissionItem, WorkspaceAccessPermissionItem } from "./GranularPermissionsItems.js"; import { getGranularPermissions, diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx index 10037ac6a91..948ac67a64b 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsItems.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { FormattedMessage } from "react-intl"; import { type IPermissionsItem, type WorkspacePermission } from "../../types.js"; + import { getGranularPermissionTitle, granularTooltipMessages } from "./locales.js"; import { QuestionMarkIcon } from "./QuestionMarkIcon.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx index 6923687b9ce..032910981ae 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/GranularPermissionsWorkspaceItem.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { RemoveIcon } from "../../RemoveIcon.js"; import { type IGrantedWorkspace } from "../../types.js"; + import { getHumanReadablePermissionsTitle } from "./granularPermissionUtils.js"; import { workspaceGranularPermissionMessages } from "./locales.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx index 9c9c2fea75f..1c674d55ed2 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/HierarchicalPermissionsDropdown.tsx @@ -10,6 +10,7 @@ import { simplifyText } from "@gooddata/util"; import { type TrackEventCallback, useTelemetry } from "../../TelemetryContext.js"; import { type IGrantedWorkspace, type WorkspacePermissionSubject } from "../../types.js"; + import { PermissionsDropdownList } from "./HierarchicalPermissionsDropdownList.js"; import { hierarchicalPermissionMessages } from "./locales.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx index 6c08ca39ff4..17e5e8f465d 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionDropdownItem.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type IPermissionsItem, type WorkspacePermission } from "../../types.js"; + import { getPermissionTitle } from "./locales.js"; import { QuestionMarkIcon } from "./QuestionMarkIcon.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx index e5faeaf9138..91cb9b788ce 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdown.tsx @@ -15,6 +15,7 @@ import { type WorkspacePermission, type WorkspacePermissionSubject, } from "../../types.js"; + import { getPermissionTitle } from "./locales.js"; import { PermissionsDropdownList } from "./PermissionsDropdownList.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx index 60fdf210161..10397688ca6 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/PermissionsDropdownList.tsx @@ -12,6 +12,7 @@ import { type WorkspacePermission, type WorkspacePermissionSubject, } from "../../types.js"; + import { workspacePermissionMessages } from "./locales.js"; import { PermissionDropdownItem } from "./PermissionDropdownItem.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx index 2449ea6ef10..f59567fdb45 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/WorkspaceItem.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type IGrantedWorkspace, type WorkspacePermissionSubject } from "../../types.js"; + import { HierarchicalPermissionsDropdown } from "./HierarchicalPermissionsDropdown.js"; import { PermissionsDropdown } from "./PermissionsDropdown.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts index 214a79d0804..09f9894bedf 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceItem/granularPermissionUtils.ts @@ -4,6 +4,7 @@ import { isEqual } from "lodash-es"; import { type IntlShape } from "react-intl"; import { type IGrantedWorkspace, type WorkspacePermission, type WorkspacePermissions } from "../../types.js"; + import { workspaceGranularPermissionMessages } from "./locales.js"; export const workspacePermissions: WorkspacePermissions = ["MANAGE", "ANALYZE", "VIEW"]; diff --git a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx index 1208b55880b..0e015c348a7 100644 --- a/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx +++ b/libs/sdk-ui-ext/src/internal/components/dialogs/userManagementDialogs/Workspace/WorkspaceList.tsx @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { type IGrantedWorkspace, type ListMode, type WorkspacePermissionSubject } from "../types.js"; import { sortByName } from "../utils.js"; + import { GranularPermissionsWorkspaceItem } from "./WorkspaceItem/GranularPermissionsWorkspaceItem.js"; import { WorkspaceListEmpty } from "./WorkspaceListEmpty.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts index 3de0e12e2c4..9a24d1e7317 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/BigChartDescriptor.ts @@ -7,6 +7,7 @@ import { type IVisualizationSizeInfo, type PluggableVisualizationFactory, } from "../../interfaces/VisualizationDescriptor.js"; + import { BaseChartDescriptor } from "./baseChart/BaseChartDescriptor.js"; import { MIN_VISUALIZATION_HEIGHT_FLEXIBLE_LAYOUT } from "./constants.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx index 6887b65d2c1..fd75569fdfa 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableColumnBarCharts.tsx @@ -54,6 +54,7 @@ import { setSecondaryMeasures, } from "../../utils/propertiesHelper.js"; import { setColumnBarChartUiConfig } from "../../utils/uiConfigHelpers/columnBarChartUiConfigHelper.js"; + import { PluggableBaseChart } from "./baseChart/PluggableBaseChart.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "./drillDownUtil.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx index 85fd1699240..217617f2dd3 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/PluggableUnknownChart.tsx @@ -16,6 +16,7 @@ import { type RenderFunction, type UnmountFunction, } from "../../interfaces/Visualization.js"; + import { AbstractPluggableVisualization } from "./AbstractPluggableVisualization.js"; export type IIntlLocalizedUnknownVisualizationClass = WrappedComponentProps & { onAfterRender?: () => void }; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts index b1f8618d69e..c223e22f151 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/UnknownVisualizationDescriptor.ts @@ -8,6 +8,7 @@ import { type IVisualizationMeta, type PluggableVisualizationFactory, } from "../../interfaces/VisualizationDescriptor.js"; + import { BaseChartDescriptor } from "./baseChart/BaseChartDescriptor.js"; import { PluggableUnknownChart } from "./PluggableUnknownChart.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts index ce10bc19f8f..4a62b3bb3fe 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/AreaChartDescriptor.ts @@ -28,6 +28,7 @@ import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection, } from "../drillDownUtil.js"; + import { PluggableAreaChart } from "./PluggableAreaChart.js"; export class AreaChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx index 5d67e77d459..df96d4e0759 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/areaChart/tests/PluggableAreaChart.test.tsx @@ -73,6 +73,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableAreaChart } from "../PluggableAreaChart.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts index f3193dfb858..02af990fd5a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/BarChartDescriptor.ts @@ -31,6 +31,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableBarChart } from "./PluggableBarChart.js"; export class BarChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx index f190bc01416..3a8efe1fedd 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/barChart/PluggableBarChart.tsx @@ -17,6 +17,7 @@ import { getBucketItems } from "../../../utils/bucketHelper.js"; import { getCustomSortDisabledExplanation } from "../../../utils/sort.js"; import { BarChartConfigurationPanel } from "../../configurationPanels/BarChartConfigurationPanel.js"; import { PluggableColumnBarCharts } from "../PluggableColumnBarCharts.js"; + import { canSortStackTotalValue } from "./sortHelpers.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx index 28448106c3b..d3ddc7c2900 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/baseChart/tests/PluggableBaseChart.test.tsx @@ -61,6 +61,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableBaseChart } from "../PluggableBaseChart.js"; + import { expectedInsightDefRegion, intersection, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts index 55cdcbd3407..cb182447ba1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bubbleChart/BubbleChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableBubbleChart } from "./PluggableBubbleChart.js"; export class BubbleChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts index 25bf94e3945..252c899fba1 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/BulletChartDescriptor.ts @@ -24,6 +24,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableBulletChart } from "./PluggableBulletChart.js"; export class BulletChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx index 4ce21df36af..0d4a0d0efae 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/PluggableBulletChart.tsx @@ -50,6 +50,7 @@ import { getBulletChartUiConfig } from "../../../utils/uiConfigHelpers/bulletCha import { BulletChartConfigurationPanel } from "../../configurationPanels/BulletChartConfigurationPanel.js"; import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { transformBuckets } from "./bucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx index e9c3b4816d2..3c965c8c652 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/bulletChart/tests/PluggableBulletChart.test.tsx @@ -49,6 +49,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableBulletChart } from "../PluggableBulletChart.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts index e4499aaba57..e9d0a334859 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/columnChart/ColumnChartDescriptor.ts @@ -31,6 +31,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableColumnChart } from "./PluggableColumnChart.js"; export class ColumnChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts index f7211bcd024..51503f44674 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableComboChart } from "./PluggableComboChart.js"; export class ComboChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts index c1b2df30138..3e1ad36d0d6 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/comboChart/ComboChartDescriptorDeprecated.ts @@ -5,6 +5,7 @@ import { type PluggableVisualizationFactory, } from "../../../interfaces/VisualizationDescriptor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; + import { PluggableComboChartDeprecated } from "./PluggableComboChartDeprecated.js"; export class ComboChartDescriptorDeprecated extends BigChartDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx index 1aeaa04887f..56f8d03db3e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/dependencyWheelChart/DependencyWheelChartDescriptor.tsx @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { SankeyChartDescriptor } from "../sankeyChart/SankeyChartDescriptor.js"; + import { PluggableDependencyWheelChart } from "./PluggableDependencyWheelChart.js"; export class DependencyWheelChartDescriptor diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts index 90a3900a8c3..6c9bc9aab8b 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/donutChart/DonutChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableDonutChart } from "./PluggableDonutChart.js"; export class DonutChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts index a2463c514e7..9d939335637 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/funnelChart/FunnelChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableFunnelChart } from "./PluggableFunnelChart.js"; export class FunnelChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts index 96fdca7815f..c9d75b921da 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/GeoAreaChartDescriptor.ts @@ -27,6 +27,7 @@ import { buildGeoChartNextGlobalFilters, buildGeoChartNextLayers, } from "../geoChartNext/geoEmbeddingLayers.js"; + import { PluggableGeoAreaChart } from "./PluggableGeoAreaChart.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx index 29ad91497da..68acc338bfa 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoAreaChart/PluggableGeoAreaChart.tsx @@ -61,6 +61,7 @@ import { getGeoVisualizationPropertiesWithFallback, } from "../geoCommon/geoVisualizationPropertiesWithFallback.js"; import { LiveMapViewTracker, createSyncedViewportHandlers } from "../geoCommon/liveMapViewTracking.js"; + import { createAreaConfiguredBuckets, createAreaSortForSegment, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts index 16632af8db5..83b9c84193a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChart/GeoPushpinChartDescriptor.ts @@ -30,6 +30,7 @@ import { import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories } from "../chartCodeGenUtils.js"; import { MAX_VISUALIZATION_HEIGHT, MIDDLE_VISUALIZATION_HEIGHT } from "../constants.js"; + import { geoConfigFromInsight, geoInsightConversion } from "./geoConfigCodeGenerator.js"; import { PluggableGeoPushpinChart } from "./PluggableGeoPushpinChart.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts index dd2eee09b94..7717184e6af 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/GeoPushpinChartNextDescriptor.ts @@ -22,6 +22,7 @@ import { import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories } from "../chartCodeGenUtils.js"; import { MAX_VISUALIZATION_HEIGHT, MIDDLE_VISUALIZATION_HEIGHT } from "../constants.js"; + import { geoConfigFromInsight } from "./geoConfigBuilder.js"; import { buildGeoChartNextGlobalFilters, buildGeoChartNextLayers } from "./geoEmbeddingLayers.js"; import { PluggableGeoPushpinChartNext } from "./PluggableGeoPushpinChartNext.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx index ac14aa529b7..f0bf721a0be 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/PluggableGeoPushpinChartNext.tsx @@ -75,6 +75,7 @@ import { getGeoVisualizationPropertiesWithFallback, } from "../geoCommon/geoVisualizationPropertiesWithFallback.js"; import { LiveMapViewTracker, createSyncedViewportHandlers } from "../geoCommon/liveMapViewTracking.js"; + import { extractControls, getLatitudeAttribute, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts index cf1afad8017..23d76b1c017 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoConfigBuilder.test.ts @@ -8,6 +8,7 @@ import { BucketNames } from "@gooddata/sdk-ui"; import { ANALYTICAL_ENVIRONMENT, DASHBOARDS_ENVIRONMENT } from "../../../constants/properties.js"; import { type IEmbeddingCodeContext } from "../../../interfaces/VisualizationDescriptor.js"; import { buildAreaVisualizationConfig } from "../geoAreaChart/geoAreaConfigBuilder.js"; + import { buildGeoVisualizationConfig, geoConfigFromInsight, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts index 91a6350f13b..176e0025e28 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/geoChartNext/geoVirtualBucketFactory.ts @@ -10,6 +10,7 @@ import { import { BucketNames } from "@gooddata/sdk-ui"; import { type IVisualizationProperties } from "../../../interfaces/Visualization.js"; + import { createAttributeRef, getAttributeMetadata, getLatitudeAttribute } from "./geoAttributeHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts index f48891ecbab..6cfdfb6f745 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/HeadlineDescriptor.ts @@ -23,6 +23,7 @@ import { insightConversion, } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { MAX_VISUALIZATION_HEIGHT } from "../constants.js"; + import { multipleSecondaryMeasuresBucketConversion, singleSecondaryMeasureBucketConversion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx index 5e99ac9e9ff..639e7fdf37a 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/headline/PluggableHeadline.tsx @@ -64,6 +64,7 @@ import { } from "../../../utils/uiConfigHelpers/headlineUiConfigHelper.js"; import { HeadlineConfigurationPanel } from "../../configurationPanels/HeadlineConfigurationPanel.js"; import { AbstractPluggableVisualization } from "../AbstractPluggableVisualization.js"; + import { setHeadlineRefPointBuckets, tryToMapForeignBuckets } from "./headlineBucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts index abf53ab3988..d1b109e1b0e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/HeatmapDescriptor.ts @@ -24,6 +24,7 @@ import { drillDownFromAttributeLocalId } from "../../../utils/ImplicitDrillDownH import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { addIntersectionFiltersToInsight, modifyBucketsAttributesForDrillDown } from "../drillDownUtil.js"; + import { PluggableHeatmap } from "./PluggableHeatmap.js"; export class HeatmapDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx index 6343cec75af..310ebb7ecf0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/heatMap/tests/PluggableHeatmap.test.tsx @@ -34,6 +34,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableHeatmap } from "../PluggableHeatmap.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts index 7604f6282a8..e0386ffdf60 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/lineChart/LineChartDescriptor.ts @@ -31,6 +31,7 @@ import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection, } from "../drillDownUtil.js"; + import { PluggableLineChart } from "./PluggableLineChart.js"; export class LineChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts index 2e2a6a5d408..6b5769a505e 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pieChart/PieChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggablePieChart } from "./PluggablePieChart.js"; export class PieChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts index d97bf4044fb..03fbe4965e0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PivotTableDescriptor.ts @@ -33,6 +33,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { pivotTableAdditionalFactories } from "./pivotTableAdditionalFactories.js"; import { pivotTableConfigFromInsight } from "./pivotTableConfigFromInsight.js"; import { PluggablePivotTable } from "./PluggablePivotTable.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx index 697701eeb98..ba0e039bd5c 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/PluggablePivotTable.tsx @@ -83,6 +83,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { adaptReferencePointSortItemsToPivotTable, addDefaultSort, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts index 4fcd29aff72..0a40fe81f58 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/pivotTableConfigFromInsight.ts @@ -7,6 +7,7 @@ import { type IPivotTableConfig } from "@gooddata/sdk-ui-pivot"; import { type IEmbeddingCodeContext } from "../../../interfaces/VisualizationDescriptor.js"; import { getColumnWidthsFromProperties } from "../../../utils/propertiesHelper.js"; + import { createPivotTableConfig } from "./PluggablePivotTable.js"; export function pivotTableConfigFromInsight( diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx index 59b2ddb4119..524b70b97d7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/PluggablePivotTable.test.tsx @@ -50,6 +50,7 @@ import { getColumnAttributes, getRowAttributes, } from "../PluggablePivotTable.js"; + import { getInsightWithDrillDownApplied } from "./getInsightWithDrillDownAppliedMock.js"; import { getMockReferencePoint } from "./mockReferencePoint.js"; import { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts index 517f6439864..1481bf347ef 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/sortItemsHelpers.test.ts @@ -16,6 +16,7 @@ import { addDefaultSort, isSortItemVisible, } from "../sortItemsHelpers.js"; + import { getMockReferencePoint } from "./mockReferencePoint.js"; import { invalidAttributeSort, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts index 693fabb5d02..9bbc8732690 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTable/tests/widthItemHelpers.test.ts @@ -8,6 +8,7 @@ import { type ColumnWidthItem, type MeasureGroupDimension } from "@gooddata/sdk- import { type IBucketFilter, type IBucketItem } from "../../../../interfaces/Visualization.js"; import { simpleStackedReferencePoint } from "../../../../tests/mocks/referencePointMocks.js"; import { adaptReferencePointWidthItemsToPivotTable } from "../widthItemsHelpers.js"; + import { invalidAttributeColumnWidthItem, invalidMeasureColumnWidthItem, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts index 7807b7c6660..90ff507fa4f 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PivotTableNextDescriptor.ts @@ -40,6 +40,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { pivotTableNextAdditionalFactories } from "./pivotTableNextAdditionalFactories.js"; import { pivotTableNextConfigFromInsight } from "./pivotTableNextConfigFromInsight.js"; import { PluggablePivotTableNext } from "./PluggablePivotTableNext.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx index 5ef1c92bb6e..60e63e765c0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pivotTableNext/PluggablePivotTableNext.tsx @@ -80,6 +80,7 @@ import { modifyBucketsAttributesForDrillDown, sanitizeTableProperties, } from "../drillDownUtil.js"; + import { getColumnAttributes, getRowAttributes, shouldAdjustColumnHeadersPositionToTop } from "./helpers.js"; import { adaptReferencePointSortItemsToPivotTable, getSanitizedSortItems } from "./sortHelpers.js"; import { removeInvalidTotals } from "./totalsHelpers.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts index b729bc584e4..996ff5429cc 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/pyramidChart/PyramidChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggablePyramidChart } from "./PluggablePyramidChart.js"; export class PyramidChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts index 1c16c239b51..0fd1c4f5cae 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/repeater/RepeaterDescriptor.ts @@ -23,6 +23,7 @@ import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerato import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; import { MIN_VISUALIZATION_HEIGHT_TABLE_REPEATER_FLEXIBLE_LAYOUT } from "../constants.js"; + import { PluggableRepeater } from "./PluggableRepeater.js"; export class RepeaterDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx index 926fb1abd4b..a6e226da495 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/sankeyChart/SankeyChartDescriptor.tsx @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableSankeyChart } from "./PluggableSankeyChart.js"; export class SankeyChartDescriptor extends BigChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx index 95342dddab5..2043a7d6db7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/PluggableScatterPlot.tsx @@ -26,6 +26,7 @@ import { removeSort } from "../../../utils/sort.js"; import { setScatterPlotUiConfig } from "../../../utils/uiConfigHelpers/scatterPlotUiConfigHelper.js"; import { ScatterPlotConfigurationPanel } from "../../configurationPanels/ScatterPlotConfigurationPanel.js"; import { PluggableBaseChart } from "../baseChart/PluggableBaseChart.js"; + import { transformBuckets } from "./bucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts index 5f8cd880243..d454459b3f5 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/scatterPlot/ScatterPlotDescriptor.ts @@ -19,6 +19,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BigChartDescriptor } from "../BigChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableScatterPlot } from "./PluggableScatterPlot.js"; export class ScatterPlotDescriptor extends BigChartDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx index 2bedd8bc105..7467b356c58 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/AbstractPluggableVisualization.test.tsx @@ -17,6 +17,7 @@ import { multipleMetricsNoCategoriesReferencePoint, } from "../../../tests/mocks/referencePointMocks.js"; import { AbstractPluggableVisualization } from "../AbstractPluggableVisualization.js"; + import { DummyVisConstruct } from "./visConstruct.fixture.js"; describe("AbstractPluggableVisualization", () => { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx index 118d0e4b5ca..f668fbc25b7 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/PluggableColumnBarCharts.test.tsx @@ -51,6 +51,7 @@ import { } from "../../../tests/mocks/testMocks.js"; import { DEFAULT_LANGUAGE, DEFAULT_MESSAGES } from "../../../utils/translations.js"; import { PluggableColumnChart } from "../columnChart/PluggableColumnChart.js"; + import { expectedInsightDefinitionDrillToRegion, expectedInsightDefinitionWithStackByDrillToDepartment, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts index ade106e493b..3d1552fe127 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/tests/drillDownUtil.test.ts @@ -17,6 +17,7 @@ import { type IDrillEventIntersectionElement } from "@gooddata/sdk-ui"; import { type IDrillDownDefinition } from "../../../interfaces/Visualization.js"; import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection } from "../drillDownUtil.js"; + import { insightDefinitionToInsight } from "./pluggableVisualizations.test.helpers.js"; import { reverseAndTrimIntersectionMock } from "./reverseAndTrimIntersectionMock.js"; diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts index 3f5e891393d..145e4537ef0 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/TreemapDescriptor.ts @@ -25,6 +25,7 @@ import { modifyBucketsAttributesForDrillDown, reverseAndTrimIntersection, } from "../drillDownUtil.js"; + import { PluggableTreemap } from "./PluggableTreemap.js"; export class TreemapDescriptor extends BigChartDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx index d046c591194..6e7d616a930 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/treeMap/tests/PluggableTreemap.test.tsx @@ -40,6 +40,7 @@ import { insightDefinitionToInsight, } from "../../tests/pluggableVisualizations.test.helpers.js"; import { PluggableTreemap } from "../PluggableTreemap.js"; + import { expectedInsightDefDepartment, expectedInsightDefRegion, diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts index 14197e6fb1b..dd680f8c585 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/waterfallChart/WaterfallChartDescriptor.ts @@ -20,6 +20,7 @@ import { import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { BaseChartDescriptor } from "../baseChart/BaseChartDescriptor.js"; import { chartAdditionalFactories, chartConfigInsightConversion } from "../chartCodeGenUtils.js"; + import { PluggableWaterfallChart } from "./PluggableWaterfallChart.js"; export class WaterfallChartDescriptor extends BaseChartDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx index a7ab22cac41..e58ef240b40 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/PluggableXirr.tsx @@ -41,6 +41,7 @@ import { } from "../../../utils/uiConfigHelpers/xirrUiConfigHelper.js"; import { UnsupportedConfigurationPanel } from "../../configurationPanels/UnsupportedConfigurationPanel.js"; import { AbstractPluggableVisualization } from "../AbstractPluggableVisualization.js"; + import { getXirrBuckets } from "./xirrBucketHelper.js"; /** diff --git a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts index c70480ad719..74c2a2b47dd 100644 --- a/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts +++ b/libs/sdk-ui-ext/src/internal/components/pluggableVisualizations/xirr/XirrDescriptor.ts @@ -21,6 +21,7 @@ import { } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convenience.js"; import { getInsightToPropsConverter } from "../../../utils/embeddingCodeGenerator/insightToPropsConverter/convertor.js"; import { MAX_VISUALIZATION_HEIGHT } from "../constants.js"; + import { PluggableXirr } from "./PluggableXirr.js"; export class XirrDescriptor implements IVisualizationDescriptor { diff --git a/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts b/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts index df4bc551b5f..df97537984a 100644 --- a/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts +++ b/libs/sdk-ui-ext/src/internal/constants/supportedProperties.ts @@ -3,6 +3,7 @@ import { CalculateAs } from "@gooddata/sdk-ui-charts"; import { type HeadlineControlProperties } from "../interfaces/ControlProperties.js"; + import { AXIS } from "./axis.js"; const CUSTOM_TOOLTIP_PROPERTIES = ["customTooltip"]; diff --git a/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts b/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts index 661ececf2fc..5ce564e198e 100644 --- a/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts +++ b/libs/sdk-ui-ext/src/internal/constants/uiConfig.ts @@ -3,6 +3,7 @@ import { BucketNames, OverTimeComparisonTypes, VisualizationTypes } from "@gooddata/sdk-ui"; import { type IUiConfig } from "../interfaces/Visualization.js"; + import { ATTRIBUTE, DATE, FACT, GEO_ATTRIBUTE, METRIC } from "./bucket.js"; export const MAX_METRICS_COUNT = 40; diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts b/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts index 1b729d5691d..705d7709cb2 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketConfig.ts @@ -10,6 +10,7 @@ import { type IBucketUiConfig, type IExtendedReferencePoint, } from "../interfaces/Visualization.js"; + import { filterOutArithmeticMeasuresFromDerived, filterOutDerivedMeasures, diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts b/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts index c7370dd6920..ac414c9f37c 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketHelper.ts @@ -45,6 +45,7 @@ import { type IUiConfig, type IVisualizationProperties, } from "../interfaces/Visualization.js"; + import { getTranslation } from "./translations.js"; export function isDateFilter(filter: IBucketFilter | undefined): filter is IDateFilter { diff --git a/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts b/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts index e5de5203656..b699ca4d5cb 100644 --- a/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts +++ b/libs/sdk-ui-ext/src/internal/utils/bucketRules.ts @@ -19,6 +19,7 @@ import { type IFiltersBucketItem, type IReferencePoint, } from "../interfaces/Visualization.js"; + import { getAllAttributeItems, getAllItemsByType, diff --git a/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts b/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts index e374efd03b1..35249a2511d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/controlsHelper.ts @@ -14,6 +14,7 @@ import { BucketNames, type IPushData } from "@gooddata/sdk-ui"; import { messages } from "../../locales.js"; import { type IMinMaxControlProps, type IMinMaxControlState } from "../interfaces/MinMaxControl.js"; + import { getMeasureGroupDimensionFromProperties } from "./propertiesHelper.js"; import { getTranslation } from "./translations.js"; diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts index 89df41ece86..e627a5b54c6 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/getReactEmbeddingCodeGenerator.ts @@ -5,6 +5,7 @@ import { compact, groupBy, isEmpty, partition, sortBy, uniqBy } from "lodash-es" import { type IInsightDefinition, factoryNotationFor } from "@gooddata/sdk-model"; import { type IEmbeddingCodeConfig } from "../../interfaces/VisualizationDescriptor.js"; + import { normalizeInsight } from "./normalizeInsight.js"; import { type IAdditionalFactoryDefinition, diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts index a391ee4469e..edffa2566d9 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingCodeGenerator/insightToPropsConverter/convenience.ts @@ -26,6 +26,7 @@ import { DefaultLocale } from "@gooddata/sdk-ui"; import { removeUseless } from "../../removeUseless.js"; import { createSorts } from "../../sort.js"; import { type PropMeta } from "../types.js"; + import { type IInsightToPropConversion, bucketConversion, insightConversion } from "./convertor.js"; function namedSdkModelPropMetaFor(name: string, propType: PropMeta["cardinality"]): PropMeta { diff --git a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts index bc9f5669b08..94c0c967958 100644 --- a/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts +++ b/libs/sdk-ui-ext/src/internal/utils/embeddingInsightViewCodeGenerator/insightViewCodeGenerator.ts @@ -10,6 +10,7 @@ import { type PropsWithMeta, } from "../embeddingCodeGenerator/types.js"; import { removeUseless } from "../removeUseless.js"; + import { configForInsightView, localeForInsightView } from "./insightViewConfig.js"; const getInsightViewSpecification = ( diff --git a/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts b/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts index 74af42e01fe..da92fb7f02d 100644 --- a/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts +++ b/libs/sdk-ui-ext/src/internal/utils/geoPushpinCompatibility.ts @@ -5,6 +5,7 @@ import { BucketNames } from "@gooddata/sdk-ui"; import { type GeoChartShapeType } from "@gooddata/sdk-ui-geo"; import { type IBucketOfFun } from "../interfaces/Visualization.js"; + import { getItemsCount } from "./bucketHelper.js"; function isPushpinIconShape(shapeType: GeoChartShapeType = "circle"): boolean { diff --git a/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts b/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts index 7dbd5e2b492..33e630a0075 100644 --- a/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts +++ b/libs/sdk-ui-ext/src/internal/utils/keyDriverAnalysis.ts @@ -2,6 +2,7 @@ import { METRIC } from "../constants/bucket.js"; import { type IExtendedReferencePoint } from "../interfaces/Visualization.js"; + import { getAllItemsByType } from "./bucketHelper.js"; export function cleanupKeyDriverAnalysisOnMetrics( diff --git a/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts b/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts index 857801e37fe..a1c63ae1925 100644 --- a/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/propertiesHelper.ts @@ -24,6 +24,7 @@ import { type IVisProps, type IVisualizationProperties, } from "../interfaces/Visualization.js"; + import { getAllMeasuresShowOnSecondaryAxis, getItemsCount, diff --git a/libs/sdk-ui-ext/src/internal/utils/sort.ts b/libs/sdk-ui-ext/src/internal/utils/sort.ts index a59578575f3..6a8253af67e 100644 --- a/libs/sdk-ui-ext/src/internal/utils/sort.ts +++ b/libs/sdk-ui-ext/src/internal/utils/sort.ts @@ -37,6 +37,7 @@ import { type IExtendedReferencePoint, type IVisualizationProperties, } from "../interfaces/Visualization.js"; + import { getTranslation } from "./translations.js"; export function getAttributeSortItem( diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts index f07067a6364..101a61a58d0 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/areaChartUiConfigHelper.ts @@ -17,6 +17,7 @@ import { import { getItemsCount, getStackItems, getViewItems, setBucketTitles } from "../bucketHelper.js"; import { getMasterMeasuresCount, hasNoStacksWithDate } from "../bucketRules.js"; import { getTranslation } from "../translations.js"; + import { getBucketItemsWarningMessage } from "./baseChartUiConfigHelper.js"; // If you need to edit these icons diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts index b1c911d4df6..aa0a219971b 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/lineChartUiConfigHelper.ts @@ -18,6 +18,7 @@ import { } from "../bucketRules.js"; import { hasColorMapping } from "../propertiesHelper.js"; import { getTranslation } from "../translations.js"; + import { getBucketItemsWarningMessage } from "./baseChartUiConfigHelper.js"; // If you need to edit these icons diff --git a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts index ce171cd28ac..9e45013f0bd 100644 --- a/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts +++ b/libs/sdk-ui-ext/src/internal/utils/uiConfigHelpers/treemapUiConfigHelper.ts @@ -12,6 +12,7 @@ import { type IExtendedReferencePoint } from "../../interfaces/Visualization.js" import { getViewItems, setBucketTitles } from "../bucketHelper.js"; import { hasMoreThanOneMasterMeasure, hasNoMeasures, hasOneCategory } from "../bucketRules.js"; import { getTranslation } from "../translations.js"; + import { getBucketItemsWarningMessage } from "./baseChartUiConfigHelper.js"; // If you need to edit these icons diff --git a/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx b/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx index de0af18f996..e441d930728 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/Notification/DefaultNotification.tsx @@ -5,6 +5,7 @@ import { FormattedMessage, defineMessages, useIntl } from "react-intl"; import { type INotification } from "@gooddata/sdk-model"; import { bem } from "../bem.js"; + import { Notification } from "./Notification.js"; /** diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx index 77caec6e04a..58684deacce 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsList/DefaultNotificationsList.tsx @@ -11,6 +11,7 @@ import { UiPagedVirtualList, useElementSize } from "@gooddata/sdk-ui-kit"; import { bem } from "../bem.js"; import { type INotificationComponentProps } from "../Notification/DefaultNotification.js"; import { type INotificationsPanelView } from "../types.js"; + import { type INotificationsListEmptyStateComponentProps } from "./DefaultNotificationsListEmptyState.js"; import { type INotificationsListErrorStateComponentProps } from "./DefaultNotificationsListErrorState.js"; import { type INotificationSkeletonItemComponentProps } from "./DefaultSkeletonItem.js"; diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx index 0e602978d98..a7cb499cb2f 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanel.tsx @@ -12,6 +12,7 @@ import { type INotificationsListEmptyStateComponentProps } from "../Notification import { type INotificationsListErrorStateComponentProps } from "../NotificationsList/DefaultNotificationsListErrorState.js"; import { type INotificationSkeletonItemComponentProps } from "../NotificationsList/DefaultSkeletonItem.js"; import { type INotificationsPanelView } from "../types.js"; + import { type INotificationsPanelHeaderComponentProps } from "./DefaultNotificationsPanelHeader.js"; const { b } = bem("gd-ui-ext-notifications-panel"); diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx index cf0e4c62070..7bba7a671e1 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/DefaultNotificationsPanelButton.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { UiIcon } from "@gooddata/sdk-ui-kit"; import { bem } from "../bem.js"; + import { NOTIFICATIONS_PANEL_ID } from "./DefaultNotificationsPanel.js"; const { b, e } = bem("gd-ui-ext-notifications-panel-button"); diff --git a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx index 8c878e1066b..18388818dfb 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/NotificationsPanel/NotificationsPanel.tsx @@ -33,6 +33,7 @@ import { type INotificationSkeletonItemComponentProps, } from "../NotificationsList/DefaultSkeletonItem.js"; import { type INotificationsPanelView } from "../types.js"; + import { DefaultNotificationsPanel, type INotificationsPanelComponentProps, diff --git a/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx b/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx index cdc9dbe2309..14aefb6e92e 100644 --- a/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx +++ b/libs/sdk-ui-ext/src/notificationsPanel/data/useNotifications.tsx @@ -7,6 +7,7 @@ import { type INotification, isAlertNotification } from "@gooddata/sdk-model"; import { UnexpectedSdkError, useWorkspace } from "@gooddata/sdk-ui"; import { useOrganization } from "../@staging/OrganizationContext/OrganizationContext.js"; + import { useFetchNotifications } from "./useFetchNotifications.js"; type OrganizationStatus = "pending" | "loading" | "success" | "error"; diff --git a/libs/sdk-ui-filters/package.json b/libs/sdk-ui-filters/package.json index 24cfed9a92b..e6f7e89b45b 100644 --- a/libs/sdk-ui-filters/package.json +++ b/libs/sdk-ui-filters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-filters", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Filter Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx b/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx index 9dcc499d3f8..dd9689d0977 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/AttributeFilterButton.tsx @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type VisibilityMode } from "../shared/interfaces/index.js"; + import { AttributeFilterBase } from "./AttributeFilterBase.js"; import { AttributeFilterDropdownButton } from "./Components/DropdownButton/AttributeFilterDropdownButton.js"; import { type IAttributeFilterBaseProps } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx index baa6e559868..87613fa9d51 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormDropdown.tsx @@ -6,6 +6,7 @@ import { type IAttributeDisplayFormMetadataObject, type ObjRef, areObjRefsEqual import { Dropdown, DropdownList, type IAlignPoint } from "@gooddata/sdk-ui-kit"; import { ATTRIBUTE_DISPLAY_FORM_DROPDOWN_BODY_CLASS } from "../../../constants.js"; + import { AttributeDisplayFormDropdownButton } from "./AttributeDisplayFormDropdownButton.js"; import { AttributeDisplayFormSelectItem } from "./AttributeDisplayFormSelectItem.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx index 259fa7e27e6..e22ce1e34db 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Addons/AttributeDisplayFormSelect/AttributeDisplayFormSelect.tsx @@ -4,6 +4,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IAlignPoint } from "@gooddata/sdk-ui-kit"; import { useAttributeFilterContext } from "../../../Context/AttributeFilterContext.js"; + import { AttributeDisplayFormDropdown } from "./AttributeDisplayFormDropdown.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx index e448ff03aa6..e0767025fbe 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownBody.tsx @@ -13,6 +13,7 @@ import { ATTRIBUTE_FILTER_DROPDOWN_BODY_CLASS, DEFAULT_DROPDOWN_BODY_WIDTH } fro import { useAttributeFilterComponentsContext } from "../../Context/AttributeFilterComponentsContext.js"; import { useAttributeFilterContext } from "../../Context/AttributeFilterContext.js"; import { MAX_SELECTION_SIZE } from "../../hooks/constants.js"; + import { type IAttributeFilterDropdownBodyProps } from "./types.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx index 8de78305a6e..3ea30c24f99 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/Dropdown/AttributeFilterDropdownHeader.tsx @@ -11,6 +11,7 @@ import { ShortenedText, UiIcon } from "@gooddata/sdk-ui-kit"; import { useAttributeFilterComponentsContext } from "../../Context/AttributeFilterComponentsContext.js"; import { useAttributeFilterContext } from "../../Context/AttributeFilterContext.js"; import { type AttributeFilterSelectionType } from "../../selectionTypes.js"; + import { AttributeFilterDetailsBubble } from "./AttributeFilterDetailsBubble.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx index fc20aad9b5e..41b5b0daad6 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.tsx @@ -18,6 +18,7 @@ import { simplifyText } from "@gooddata/util"; import { FilterButtonCustomIcon } from "../../../shared/components/internal/FilterButtonCustomIcon.js"; import { type IFilterButtonCustomIcon } from "../../../shared/interfaces/index.js"; + import { AttributeFilterButtonTooltip } from "./AttributeFilterButtonTooltip.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx index 3e77f419b9c..1577fda3675 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.tsx @@ -14,6 +14,7 @@ import { BACKEND_PAGE_SIZE, MAX_SELECTION_SIZE } from "../../hooks/constants.js" import { useAttributeFilterDropdownHeader } from "../../hooks/useAttributeFilterDropdownHeader.js"; import { getElementKey, getElementPrimaryTitle, getElementTitle } from "../../utils.js"; import { AttributeFilterDropdownHeader } from "../Dropdown/AttributeFilterDropdownHeader.js"; + import { type IAttributeFilterElementsSelectProps } from "./types.js"; const ITEM_HEIGHT = 28; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx index 0c2dd834b6a..84e42710316 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.tsx @@ -16,6 +16,7 @@ import { } from "@gooddata/sdk-ui-kit"; import { getElementPrimaryTitle, getElementTitle } from "../../utils.js"; + import { AttributeFilterElementsSelectItemTooltip } from "./AttributeFilterElementsSelectItemTooltip.js"; import { type IAttributeFilterElementsSelectItemProps } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx index 8829b396d8a..d97cc3f4653 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/EmptyResult/AttributeFilterEmptyFilteredResult.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { Bubble, BubbleHoverTrigger } from "@gooddata/sdk-ui-kit"; import { ATTRIBUTE_FILTER_DROPDOWN_BUBBLE_CLASS } from "../../../constants.js"; + import { AttributeFilterEmptySearchResult } from "./AttributeFilterEmptySearchResult.js"; const ALIGN_POINTS = [{ align: "cr cl" }]; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx index c6b116113e9..9990bc3f1e1 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.tsx @@ -9,6 +9,7 @@ import { useIntl } from "react-intl"; import { CustomizableCheckmark, useMediaQuery } from "@gooddata/sdk-ui-kit"; import { getElementPrimaryTitle, getElementTitle } from "../../utils.js"; + import { AttributeFilterElementsSelectItemTooltip } from "./AttributeFilterElementsSelectItemTooltip.js"; import { type IAttributeFilterElementsSelectItemProps } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx index f2e19b9442b..5acff5641ad 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/FilterMenu/FilterMenu.tsx @@ -8,6 +8,7 @@ import { type ObjRef, areObjRefsEqual } from "@gooddata/sdk-model"; import { Dropdown, type IAlignPoint, type IUiListboxItem, UiAutofocus } from "@gooddata/sdk-ui-kit"; import { type AttributeFilterSelectionType } from "../../selectionTypes.js"; + import { FilterMenuButton } from "./FilterMenuButton.js"; import { FilterMenuDropdownBody } from "./FilterMenuDropdownBody.js"; import { type IFilterMenuProps, type ILabelItemData, type ISelectionTypeItemData } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx index f4a2c1f712e..e904b31c087 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/TextFilterBody.tsx @@ -11,6 +11,7 @@ import { Checkbox, Input, UiLink, isEnterKey, useIdPrefixed } from "@gooddata/sd import { useAttributeFilterDropdownHeader } from "../../hooks/useAttributeFilterDropdownHeader.js"; import { isAllOperator, isMatchOperator } from "../../textFilterOperatorUtils.js"; import { AttributeFilterDropdownHeader } from "../Dropdown/AttributeFilterDropdownHeader.js"; + import { ArbitraryValuesInput } from "./ArbitraryValuesInput.js"; import { ArbitraryValuesTooltip } from "./ArbitraryValuesTooltip.js"; import { TextFilterOperatorDropdown } from "./TextFilterOperatorDropdown.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts index 3a07aedcabc..f53e6dc689c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/Components/TextFilterBody/useTextFilterBodyValidation.ts @@ -7,6 +7,7 @@ import { type IntlShape, useIntl } from "react-intl"; import { createInvalidDatapoint, createInvalidNode, useValidationContextValue } from "@gooddata/sdk-ui"; import { MAX_SELECTION_SIZE } from "../../hooks/constants.js"; + import { type ITextFilterBodyProps } from "./types.js"; type ITextFilterBodyValidationParams = Pick< diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts index 5ee61f137d7..8d3c36cac13 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/types.ts @@ -14,6 +14,7 @@ import { type AttributeFilterTextSelectionType, } from "../selectionTypes.js"; import { type TextFilterOperator } from "../textFilterOperatorUtils.js"; + import { type ITextFilterState } from "./useTextFilterInnerController.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts index 4c61064366e..28370db1156 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterController.ts @@ -34,6 +34,7 @@ import { type OnApplyCallbackType, type OnChangeCallbackType, } from "../types.js"; + import { type AttributeFilterController } from "./types.js"; import { useElementsFilterController } from "./useElementsFilterController.js"; import { useFilterDetailRequestHandler } from "./useFilterDetailRequestHandler.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts index 989b741f58b..8be80decb3c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useAttributeFilterControllerData.ts @@ -8,6 +8,7 @@ import { filterObjRef } from "@gooddata/sdk-model"; import { type IMultiSelectAttributeFilterHandler } from "../../AttributeFilterHandler/types/attributeFilterHandler.js"; import { isLimitingAttributeFiltersEmpty } from "../../AttributeFilterHandler/utils.js"; + import { MAX_SELECTION_SIZE, PARENT_FILTERS_CORRELATION } from "./constants.js"; import { type AttributeFilterControllerData } from "./types.js"; import { useAttributeFilterHandlerState } from "./useAttributeFilterHandlerState.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts index 6db16e9a157..e9e4d4aad42 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useElementsFilterController.ts @@ -35,6 +35,7 @@ import { type GoodDataSdkError, UnexpectedSdkError } from "@gooddata/sdk-ui"; import { type IMultiSelectAttributeFilterHandler } from "../../AttributeFilterHandler/types/attributeFilterHandler.js"; import { type OnApplyCallbackType, type OnChangeCallbackType } from "../types.js"; import { isValidSingleSelectionFilter } from "../utils.js"; + import { DISPLAY_FORM_CHANGED_CORRELATION, IRRELEVANT_SELECTION, diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts index ef8fea98c20..9828e4dbf95 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterController.ts @@ -9,6 +9,7 @@ import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { type AsyncOperationStatus } from "../../AttributeFilterHandler/types/common.js"; import { type AttributeFilterAvailableSelectionType } from "../selectionTypes.js"; import { getAvailableTextSelectionTypes } from "../selectionTypeUtils.js"; + import { type TextFilterController } from "./types.js"; import { type ITextFilterState, useTextFilterInnerController } from "./useTextFilterInnerController.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts index b4ff38c14bd..44d1a543fb5 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/hooks/useTextFilterInnerController.ts @@ -16,6 +16,7 @@ import { isArbitraryOperator, resolveValuesOnTextOperatorChange, } from "../textFilterOperatorUtils.js"; + import { MAX_SELECTION_SIZE } from "./constants.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilter/types.ts b/libs/sdk-ui-filters/src/AttributeFilter/types.ts index 6151c757ce4..d4de24f2c48 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/types.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/types.ts @@ -20,6 +20,7 @@ import { import { type IAlignPoint, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { type IFilterButtonCustomIcon } from "../shared/interfaces/index.js"; + import { type IAttributeFilterErrorProps } from "./Components/AttributeFilterError.js"; import { type IAttributeFilterLoadingProps } from "./Components/AttributeFilterLoading.js"; import { type IAttributeFilterDropdownActionsProps } from "./Components/Dropdown/AttributeFilterDropdownActions.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilter/utils.ts b/libs/sdk-ui-filters/src/AttributeFilter/utils.ts index ded77d14bc2..2b0a23a2315 100644 --- a/libs/sdk-ui-filters/src/AttributeFilter/utils.ts +++ b/libs/sdk-ui-filters/src/AttributeFilter/utils.ts @@ -20,6 +20,7 @@ import { import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import { getElementCacheKey } from "../AttributeFilterHandler/internal/redux/common/selectors.js"; + import { getSelectionTypeFromFilter } from "./selectionTypeUtils.js"; import { getOperatorFromFilter, getValuesFromFilter } from "./textFilterOperatorUtils.js"; import { getTextFilterStateText } from "./textFilterStateSummaryUtils.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts index 3620e7a0ec8..30cdfa09848 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/bridge.ts @@ -61,6 +61,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { newAttributeFilterCallbacks } from "./callbacks.js"; import { getElementsByKeys, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts index e25fa4f0bed..519c284f35c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/callbacks.ts @@ -44,6 +44,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { selectInvertableCommittedSelection, selectInvertableWorkingSelection, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts index 15f542b16f5..922916ea8c0 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/loader.ts @@ -53,6 +53,7 @@ import { type OnLoadNextElementsPageStartCallbackPayload, type OnLoadNextElementsPageSuccessCallbackPayload, } from "../types/elementsLoader.js"; + import { AttributeFilterReduxBridge } from "./bridge.js"; import { type AttributeFilterHandlerConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts index 5937c39f54e..5667e9b3d7b 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/multiSelectHandler.ts @@ -9,6 +9,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { AttributeFilterLoader } from "./loader.js"; import { type AttributeFilterHandlerConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts index b8715115d34..7f4e00df75b 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts @@ -15,6 +15,7 @@ import { selectHiddenElementsAsAttributeElements, } from "../filter/filterSelectors.js"; import { selectAttribute } from "../loadAttribute/loadAttributeSelectors.js"; + import { selectStaticElements } from "./elementsSelectors.js"; import { loadElements } from "./loadElements.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts index 042429a3718..6082ca255d9 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElements.ts @@ -5,6 +5,7 @@ import { type IAttributeElement, type ObjRef } from "@gooddata/sdk-model"; import { type ILoadElementsOptions } from "../../../types/elementsLoader.js"; import { type IAttributeFilterHandlerStoreContext } from "../store/types.js"; + import { loadElementsFromBackend } from "./loadElementsFromBackend.js"; import { loadElementsFromStaticElements } from "./loadElementsFromStaticElements.js"; import { type IHiddenElementsInfo } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts index 672fce7e297..062e66c04cf 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts @@ -27,6 +27,7 @@ import { DataViewFacade, convertError } from "@gooddata/sdk-ui"; import { type ILoadElementsOptions } from "../../../types/elementsLoader.js"; import { type IAttributeFilterHandlerStoreContext } from "../store/types.js"; + import { InMemoryPaging } from "./InMemoryPaging.js"; import { type IHiddenElementsInfo } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts index de1cc2e9b88..f55802e6b16 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/elements/loadElementsFromStaticElements.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-model"; import { type ILoadElementsOptions } from "../../../types/elementsLoader.js"; + import { InMemoryPaging } from "./InMemoryPaging.js"; import { type IHiddenElementsInfo } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts index 3e23740705e..6ea5b9c3dee 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/init/initSaga.ts @@ -15,6 +15,7 @@ import { import { selectHiddenElements } from "../filter/filterSelectors.js"; import { selectIsWorkingSelectionEmpty } from "../selection/selectionSelectors.js"; import { actions } from "../store/slice.js"; + import { initAttributeSaga } from "./initAttributeSaga.js"; import { initAttributeElementsPageSaga } from "./initElementsPageSaga.js"; import { initIrrelevantSelectionSaga } from "./initIrrelevantSelectionSaga.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts index 46b46284e2c..0a28d8713b0 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadAttribute/loadAttributeSaga.ts @@ -18,6 +18,7 @@ import { selectOriginalFilter, } from "../filter/filterSelectors.js"; import { actions } from "../store/slice.js"; + import { loadAttributeByDisplayForm } from "./loadAttributeByDisplayForm.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts index 5b70779cc21..51ac2f5399c 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageSaga.ts @@ -9,6 +9,7 @@ import { getAttributeFilterContext } from "../common/sagas.js"; import { elementsSaga } from "../elements/elementsSaga.js"; import { selectCacheId, selectLoadElementsOptions } from "../elements/elementsSelectors.js"; import { actions } from "../store/slice.js"; + import { loadLimitingAttributeFiltersAttributes } from "./loadLimitingAttributeFiltersAttributes.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts index ae3446c22d0..5a0cb253537 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageSaga.ts @@ -8,6 +8,7 @@ import { type GoodDataSdkError, convertError } from "@gooddata/sdk-ui"; import { elementsSaga } from "../elements/elementsSaga.js"; import { selectCacheId } from "../elements/elementsSelectors.js"; import { actions } from "../store/slice.js"; + import { selectHasNextPage, selectLoadNextElementsPageOptions } from "./loadNextElementsPageSelectors.js"; /** diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts index 46295cca961..c5bfae6c27a 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/redux/selection/selectionReducers.ts @@ -4,6 +4,7 @@ import { type PayloadAction } from "@reduxjs/toolkit"; import { type AttributeElementKey } from "../../../types/common.js"; import { type AttributeFilterReducer } from "../store/state.js"; + import { selectCommittedSelection, selectIrrelevantCommittedSelection, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts index 6a8216af729..31a4dd94f3a 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/internal/singleSelectHandler.ts @@ -16,6 +16,7 @@ import { type OnSelectionChangedCallbackPayload, type OnSelectionCommittedCallbackPayload, } from "../types/selectionHandler.js"; + import { AttributeFilterLoader } from "./loader.js"; import { type AttributeFilterHandlerConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts index 34d540e15cb..b1163e88b29 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadCustomElements.test.ts @@ -6,6 +6,7 @@ import { BadRequestSdkError } from "@gooddata/sdk-ui"; import { suppressConsole } from "@gooddata/util"; import { loadElements as mockLoadElements } from "../internal/redux/elements/loadElements.js"; + import { newTestAttributeFilterHandlerWithAttributeFilter, positiveAttributeFilterDefaultDF, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts index 5942f89686b..ffcabb54572 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadInitialElementsPage.test.ts @@ -8,6 +8,7 @@ import { BadRequestSdkError } from "@gooddata/sdk-ui"; import { suppressConsole } from "@gooddata/util"; import { loadElements as mockLoadElements } from "../internal/redux/elements/loadElements.js"; + import { limitingAttributeFilters, limitingDateFilters, diff --git a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts index 95e9735b3c7..0f071862e90 100644 --- a/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts +++ b/libs/sdk-ui-filters/src/AttributeFilterHandler/test/loadNextElementsPage.test.ts @@ -7,6 +7,7 @@ import { BadRequestSdkError } from "@gooddata/sdk-ui"; import { suppressConsole } from "@gooddata/util"; import { loadElements as mockLoadElements } from "../internal/redux/elements/loadElements.js"; + import { limitingAttributeFilters, limitingDateFilters, diff --git a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx index 0d1d2b4288e..9aa55209189 100644 --- a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterForm.tsx @@ -7,6 +7,7 @@ import { type WeekStart } from "@gooddata/sdk-model"; import { DateRangePicker } from "../DateRangePicker/DateRangePicker.js"; import { type IDateRange } from "../DateRangePicker/types.js"; import { type DateFilterOption, type IUiAbsoluteDateFilterForm } from "../interfaces/index.js"; + import { dateFilterValueToDateRange, dateRangeToDateFilterValue } from "./conversions.js"; /** diff --git a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx index 4b86233bf0c..6a9b732b021 100644 --- a/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/AbsoluteDateFilterForm/AbsoluteDateFilterFormSection.tsx @@ -15,6 +15,7 @@ import { type IUiAbsoluteDateFilterForm, } from "../interfaces/index.js"; import { ListItem } from "../ListItem/ListItem.js"; + import { AbsoluteDateFilterForm } from "./AbsoluteDateFilterForm.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; diff --git a/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx b/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx index 43759cd4ddc..ff88b035b48 100644 --- a/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/AllTime/AllTimeFilterSection.tsx @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type DateFilterOption, type IDateFilterOptionsByType } from "../interfaces/index.js"; + import { AllTimeFilterItem } from "./AllTimeFilterItem.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx index 6b126dc3f61..e544b1fcc94 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx @@ -15,6 +15,7 @@ import { import { type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { type IFilterButtonCustomIcon, type VisibilityMode } from "../shared/interfaces/index.js"; + import { DEFAULT_DATE_FORMAT } from "./constants/Platform.js"; import { type IFilterConfigurationProps } from "./DateFilterBody/types.js"; import { type IDateFilterButtonProps } from "./DateFilterButton/DateFilterButton.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx index afafa2f8346..f3049f237d9 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx @@ -42,6 +42,7 @@ import { getFiscalTabsConfig, } from "../utils/presetFilterUtils.js"; import { VisibleScrollbar } from "../VisibleScrollbar/VisibleScrollbar.js"; + import { DateFilterBodyButton } from "./DateFilterBodyButton.js"; import { DateFilterBodyContentFiltered } from "./DateFilterBodyContentFiltered.js"; import { DateFilterConfigurationButton } from "./DateFilterConfigurationButton.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx index dfc6261c33b..1b16a553b4d 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx @@ -26,6 +26,7 @@ import { getFilteredPresets, getFiscalTabsConfig, } from "../utils/presetFilterUtils.js"; + import { AbsolutePresetFilterItems } from "./AbsolutePresetFilterItems.js"; import { CalendarTypeTabs } from "./CalendarTypeTabs.js"; import { RelativePresetFilterItems } from "./RelativePresetFilterItems.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx index 5ce4df09ecd..e6ed5cce99c 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContentFiltered.tsx @@ -12,6 +12,7 @@ import { } from "../interfaces/index.js"; import { OtherPresetsSection } from "../Other/OtherPresetsSection.js"; import { type CalendarTabType } from "../utils/presetFilterUtils.js"; + import { AbsolutePresetFilterItems } from "./AbsolutePresetFilterItems.js"; import { CalendarTypeTabs } from "./CalendarTypeTabs.js"; import { RelativePresetFilterItems } from "./RelativePresetFilterItems.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx index 76d82b2e447..042c34d16de 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterFormContent.tsx @@ -30,6 +30,7 @@ import { type IUiRelativeDateFilterForm, } from "../interfaces/index.js"; import { RelativeDateFilterForm } from "../RelativeDateFilterForm/RelativeDateFilterForm.js"; + import { DateFilterFormNavigationWrapper } from "./DateFilterFormNavigationWrapper.js"; import { type DateFilterRoute } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx index 5620e79c255..0c020a7b4f9 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx @@ -25,6 +25,7 @@ import { Dropdown, type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { MediaQueries } from "../constants/MediaQueries.js"; import { type IFilterButtonCustomIcon } from "../shared/interfaces/index.js"; + import { DATE_FILTER_ACTIVE_CALENDAR_TAB_ID, DATE_FILTER_CUSTOM_RELATIVE_ID, diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx index 66b35266135..c08c4886b16 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateInput.tsx @@ -22,6 +22,7 @@ import { import { isArrowKey, isEnterKey, useId } from "@gooddata/sdk-ui-kit"; import { convertPlatformDateStringToDate } from "../utils/DateConversions.js"; + import { DateRangePickerInputFieldBody } from "./DateRangePickerInputFieldBody.js"; import { InputErrorMessage } from "./InputErrorMessage.js"; import { type IDateInputErrorMessageTexts, type IInputAccessibilityConfig } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx index c1c61dcfdc4..5fb7297c069 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DatePicker.tsx @@ -39,6 +39,7 @@ import { type WeekStart } from "@gooddata/sdk-model"; import { Overlay } from "@gooddata/sdk-ui-kit"; import { type DateRangePosition } from "../interfaces/index.js"; + import { type IDateRange } from "./types.js"; import { mergeDayPickerProps } from "./utils.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx index 1b3487b8e28..b28b86f61cf 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/DateRangePicker.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { type WeekStart } from "@gooddata/sdk-model"; import { type DateRangePosition } from "../interfaces/index.js"; + import { DayPicker } from "./DatePicker.js"; import { DateRangeHint } from "./DateRangeHint.js"; import { EndDateInputField } from "./EndDateInputField.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx index 8fff07b3d6a..dac7c4a30d5 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/EndDateInputField.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { DAY_END_TIME } from "../constants/Platform.js"; import { getLocalizedDateFormat } from "../utils/FormattingUtils.js"; + import { DateTimePicker, type IDateTimePickerAccessibilityConfig } from "./DateTimePicker.js"; import { DATE_INPUT_HINT_ID, diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx index f987af4d009..457cafd55bc 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/StartDateInputField.tsx @@ -6,6 +6,7 @@ import cx from "classnames"; import { DAY_START_TIME } from "../constants/Platform.js"; import { getLocalizedDateFormat } from "../utils/FormattingUtils.js"; + import { DateTimePicker, type IDateTimePickerAccessibilityConfig } from "./DateTimePicker.js"; import { DATE_INPUT_HINT_ID, diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx index dfec069bfcb..5040531d479 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/TimeInput.tsx @@ -8,6 +8,7 @@ import moment, { type Moment } from "moment/moment.js"; import { isArrowKey, isEnterKey, useId } from "@gooddata/sdk-ui-kit"; import { TIME_FORMAT } from "../constants/Platform.js"; + import { InputErrorMessage } from "./InputErrorMessage.js"; import { type IInputAccessibilityConfig, type ITime } from "./types.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx index a9873c0ad5b..9c244eb4ba0 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/tests/DateRangePicker.test.tsx @@ -5,6 +5,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest"; import { DateRangePicker, type IDateRangePickerProps } from "../DateRangePicker.js"; import { type IDateRange } from "../types.js"; + import { IntlDecorator } from "./IntlDecorators.js"; const defaultDateFormat = "MM/dd/yyyy"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts index 31122df2146..f697c7495a4 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts +++ b/libs/sdk-ui-filters/src/DateFilter/DateRangePicker/utils.ts @@ -5,6 +5,7 @@ import moment from "moment"; import { type DayPickerProps, type Matcher } from "react-day-picker"; import { platformDateFormat } from "../constants/Platform.js"; + import { type ITime } from "./types.js"; const mergeModifiers = ( diff --git a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx index 058fa059c99..74183fa049c 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/DynamicSelect.tsx @@ -14,6 +14,7 @@ import { } from "../Select/ScrollableSelectMenu.js"; import { type ISelectItemOption } from "../Select/types.js"; import { getSelectableItems, itemToString } from "../Select/utils.js"; + import { type DynamicSelectItem, type DynamicSelectOption } from "./types.js"; import { findRelativeDateFilterOptionByValue } from "./utils.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx index 17cf6ae2200..8de6e72758b 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/RelativeRangeDynamicSelect.tsx @@ -14,6 +14,7 @@ import { } from "../Select/ScrollableSelectMenu.js"; import { type ISelectItemOption } from "../Select/types.js"; import { getSelectableItems, itemToString } from "../Select/utils.js"; + import { type DynamicSelectItem, type DynamicSelectOption } from "./types.js"; import { findRelativeDateFilterOptionByValue, findRelativeDateFilterOptionIndexByLabel } from "./utils.js"; diff --git a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts index ecf40cc7608..1474b3c406e 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts +++ b/libs/sdk-ui-filters/src/DateFilter/DynamicSelect/utils.ts @@ -8,6 +8,7 @@ import { messages } from "../../locales.js"; import { granularityIntlCodes } from "../constants/i18n.js"; import { getSelectableItems } from "../Select/utils.js"; import { type IMessageTranslator } from "../utils/Translations/Translators.js"; + import { type DynamicSelectItem, type DynamicSelectOption } from "./types.js"; export const MINUTE: DateFilterGranularity = "GDC.time.minute"; diff --git a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx index 8ea1ea07bdb..25ab6580f99 100644 --- a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterForm.tsx @@ -7,6 +7,7 @@ import { type DateFilterGranularity } from "@gooddata/sdk-model"; import { DATE_FILTER_RELATIVE_GRANULARITY_TAB_ID } from "../accessibility/elementId.js"; import { type DateFilterOption, type IUiRelativeDateFilterForm } from "../interfaces/index.js"; import { RelativeRangePicker } from "../RelativeRangePicker/RelativeRangePicker.js"; + import { GranularityTabs } from "./GranularityTabs.js"; /** diff --git a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx index 2c0f5acaf55..01bfc4ba7a6 100644 --- a/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/RelativeDateFilterForm/RelativeDateFilterFormSection.tsx @@ -22,6 +22,7 @@ import { type IUiRelativeDateFilterForm, } from "../interfaces/index.js"; import { ListItem } from "../ListItem/ListItem.js"; + import { RelativeDateFilterForm } from "./RelativeDateFilterForm.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; diff --git a/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx b/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx index 858f9b1676c..92f12c31cfb 100644 --- a/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/constants/config.tsx @@ -3,6 +3,7 @@ import moment from "moment"; import { type IDateFilterOptionsByType } from "../interfaces/index.js"; + import { platformDateFormat } from "./Platform.js"; /** diff --git a/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx b/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx index e1bffd70217..7390d4687c8 100644 --- a/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/tests/DateFilter.test.tsx @@ -7,6 +7,7 @@ import { suppressConsole } from "@gooddata/util"; import { DEFAULT_DATE_FORMAT } from "../constants/Platform.js"; import { verifyDateFormat } from "../DateFilterCore.js"; import type { DateFilterOption, IDateFilterOptionsByType } from "../interfaces/index.js"; + import { AbsoluteForm } from "./AbsoluteForm.js"; import { clickAbsoluteFilter, diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts b/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts index 1a75b8e7481..a6245a4e90e 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/AFMConversions.ts @@ -16,6 +16,7 @@ import { isAbsoluteDateFilterOption, isRelativeDateFilterOption, } from "../interfaces/index.js"; + import { applyExcludeCurrentPeriod } from "./PeriodExclusion.js"; export const mapAbsoluteFilterToAfm = ( diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts index bd9e2a36987..9e6d6ff1e64 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/DateFilterTitle.ts @@ -40,6 +40,7 @@ import { type IUiRelativeDateFilterForm, } from "../../interfaces/index.js"; import { convertPlatformDateStringToDate } from "../DateConversions.js"; + import { type IDateAndMessageTranslator, type IMessageTranslator } from "./Translators.js"; export const getTimeRange = (dateFrom: Date, dateTo: Date, splitter = "\u2013"): string => { diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts index bb5407f4e86..24cb60448f7 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/Translations/tests/DateFilterTitle.test.ts @@ -9,6 +9,7 @@ import { DEFAULT_DATE_FORMAT, DEFAULT_DATE_FORMAT_WITH_TIME } from "../../../con import { type IUiRelativeDateFilterForm } from "../../../interfaces/index.js"; import { getDateFilterRepresentation, getDateFilterTitleUsingTranslator } from "../DateFilterTitle.js"; import { type IDateAndMessageTranslator } from "../Translators.js"; + import { absoluteFormFilter, absoluteFormFilterOneDay, diff --git a/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx b/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx index dd74210f71a..875c96b347c 100644 --- a/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx +++ b/libs/sdk-ui-filters/src/FilterGroup/FilterGroup.tsx @@ -47,6 +47,7 @@ import { ATTRIBUTE_FILTER_DROPDOWN_BUBBLE_CLASS, } from "../AttributeFilter/constants.js"; import { FilterButtonCustomIcon } from "../shared/components/internal/FilterButtonCustomIcon.js"; + import { useFilterGroupStatus } from "./useFilterGroupStatus.js"; /** diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx index 967e1859ad1..cd8b7937b0c 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/MeasureValueFilterDetailsBubble.tsx @@ -8,6 +8,7 @@ import { type IMeasureMetadataObject } from "@gooddata/sdk-model"; import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; + import { useMeasureValueFilterDetails } from "./useMeasureValueFilterDetails.js"; /** diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx index 14aab3cd2c9..72674ef679b 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/PreviewSection.tsx @@ -14,6 +14,7 @@ import { createNumberJsFormatter, messages as sdkMessages } from "@gooddata/sdk- import { UiTooltip, formatNumberWithSeparators, shortenNumber } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; + import { getOperatorTranslationKey, getOperatorWithValueTranslationKey, diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx index cb511d9ffcb..c2ffe840bfa 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilter.test.tsx @@ -12,6 +12,7 @@ import { import { withIntl } from "@gooddata/sdk-ui"; import { type IMeasureValueFilterProps, MeasureValueFilter } from "../MeasureValueFilter.js"; + import { MeasureValueFilterFragment as MVFDropdownFragment } from "./fragments/MeasureValueFilterDropdown.js"; // we cannot use factory here, it does not allow creating empty filters diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx index 1a09a22144b..e764ba9dc55 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/tests/MeasureValueFilterDropdown.test.tsx @@ -16,6 +16,7 @@ import { MeasureValueFilterDropdown, } from "../MeasureValueFilterDropdown.js"; import { type IWarningMessage } from "../typings.js"; + import { MeasureValueFilterFragment as MVFDropdownFragment } from "./fragments/MeasureValueFilterDropdown.js"; // we cannot use factory here, it does not allow creating empty filters diff --git a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx index f703b0f5c68..d2a4f8daa9e 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdown.tsx @@ -9,6 +9,7 @@ import { type ObjRefInScope, areObjRefsEqual } from "@gooddata/sdk-model"; import { Bubble, BubbleHoverTrigger, Button } from "@gooddata/sdk-ui-kit"; import { type IAttributeDropdownItem, type ICustomGranularitySelection } from "../types.js"; + import { AttributeDropdownBody } from "./AttributeDropdownBody.js"; const getItemTitle = (selectedItem: IAttributeDropdownItem | undefined, intl: IntlShape): string => diff --git a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx index 9f3d0507b22..58ab5ee3467 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/AttributeDropdown/AttributeDropdownBody.tsx @@ -1,9 +1,10 @@ -// (C) 2020-2025 GoodData Corporation +// (C) 2020-2026 GoodData Corporation import { type ObjRefInScope, areObjRefsEqual, objRefToString } from "@gooddata/sdk-model"; import { Overlay } from "@gooddata/sdk-ui-kit"; import { type IAttributeDropdownItem, type ICustomGranularitySelection } from "../types.js"; + import { AllRecordsItem } from "./DropdownItems/AllRecordsItem.js"; import { AttributeItem } from "./DropdownItems/AttributeItem.js"; diff --git a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx index d3bdbbb3d48..9ae44fcd961 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdown.tsx @@ -8,6 +8,7 @@ import { type ObjRefInScope, areObjRefsEqual } from "@gooddata/sdk-model"; import { Button } from "@gooddata/sdk-ui-kit"; import { type IMeasureDropdownItem } from "../types.js"; + import { MeasureDropdownBody } from "./MeasureDropdownBody.js"; interface IMeasureDropdownProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx index 9b196b8f7c9..95a8ed12a6c 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/MeasureDropdown/MeasureDropdownBody.tsx @@ -4,6 +4,7 @@ import { type ObjRefInScope, areObjRefsEqual, objRefToString } from "@gooddata/s import { Overlay } from "@gooddata/sdk-ui-kit"; import { type IMeasureDropdownItem } from "../types.js"; + import { MeasureDropdownItem } from "./MeasureDropdownItem.js"; interface IMeasureDropdownBodyProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx index 576631ecf7d..875009964a8 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdown.tsx @@ -10,6 +10,7 @@ import { Button } from "@gooddata/sdk-ui-kit"; import { messages } from "../../locales.js"; import { type IOperatorDropdownItem } from "../types.js"; + import { OperatorDropdownBody } from "./OperatorDropdownBody.js"; const operatorItems = [ diff --git a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx index 7a0368ec86e..43e93f93be3 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/OperatorDropdown/OperatorDropdownBody.tsx @@ -6,6 +6,7 @@ import { type RankingFilterOperator } from "@gooddata/sdk-model"; import { Overlay } from "@gooddata/sdk-ui-kit"; import { type IOperatorDropdownItem } from "../types.js"; + import { OperatorDropdownItem } from "./OperatorDropdownItem.js"; interface IOperatorDropdownBodyComponentProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx b/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx index eeb0226518a..54910566257 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/Preview.tsx @@ -7,6 +7,7 @@ import { FormattedMessage } from "react-intl"; import { type RankingFilterOperator } from "@gooddata/sdk-model"; import { messages } from "../locales.js"; + import { type IAttributeDropdownItem, type IMeasureDropdownItem } from "./types.js"; interface IPreviewProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx b/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx index 95275a2344c..03acf493068 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/ValueDropdown/ValueDropdown.tsx @@ -3,6 +3,7 @@ import { useIntl } from "react-intl"; import { DynamicSelect } from "../../DateFilter/DynamicSelect/DynamicSelect.js"; + import { sanitizeCustomInput, sanitizeInput } from "./utils.js"; interface IValueDropdownProps { diff --git a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx index 89cf3459446..75f7c8d8bff 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilter.test.tsx @@ -6,6 +6,7 @@ import { describe, expect, it } from "vitest"; import { withIntl } from "@gooddata/sdk-ui"; import { type IRankingFilterProps, RankingFilter } from "../RankingFilter.js"; + import { attributeItems as mockAttributeItems, defaultFilter as mockDefaultFilter, diff --git a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx index 42aaaecf194..2be5d35c897 100644 --- a/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx +++ b/libs/sdk-ui-filters/src/RankingFilter/tests/RankingFilterDropdown.test.tsx @@ -11,6 +11,7 @@ import { RankingFilterDropdown, prepareRankingFilterState, } from "../RankingFilterDropdown.js"; + import { RankingFilterDropdownFragment } from "./fragments/RankingFilterDropdown.js"; import { attribute1Ref as mockAttribute1Ref, diff --git a/libs/sdk-ui-gen-ai/package.json b/libs/sdk-ui-gen-ai/package.json index aed35a51e2f..27229fd4444 100644 --- a/libs/sdk-ui-gen-ai/package.json +++ b/libs/sdk-ui-gen-ai/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-gen-ai", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData GenAI SDK", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx b/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx index 678453c7b2a..52a11b348c4 100644 --- a/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/ConversationDeleteDialog.tsx @@ -10,6 +10,7 @@ import { ConfirmDialog } from "@gooddata/sdk-ui-kit"; import { type IChatConversationLocal } from "../model.js"; import { catalogItemsSelector } from "../store/chatWindow/chatWindowSelectors.js"; import { generateTemporaryTitle } from "../utils.js"; + import { collectReferences, replaceReferences } from "./completion/references.js"; const messages = defineMessages({ diff --git a/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx b/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx index 32327d2ded6..8eaefb9cc40 100644 --- a/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx +++ b/libs/sdk-ui-gen-ai/src/components/ErrorBoundary.tsx @@ -13,6 +13,7 @@ import { import { asyncProcessSelector, globalErrorSelector } from "../store/messages/messagesSelectors.js"; import { clearThreadAction, setGlobalErrorAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; + import { GlobalError } from "./GlobalError.js"; type ErrorBoundaryProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx index f0a74556b53..e47535b3244 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChat.tsx @@ -13,6 +13,7 @@ import { IntlWrapper } from "../localization/IntlWrapper.js"; import { PermissionsProvider } from "../permissions/PermissionsContext.js"; import { usePermissions } from "../permissions/usePermissions.js"; import { type ChatEventHandler } from "../store/events.js"; + import { ConfigProvider, type LinkHandlerEvent } from "./ConfigContext.js"; import { CustomizationProvider } from "./CustomizationProvider.js"; import { GenAIChatWrapper } from "./GenAIChatWrapper.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx index a86c9a11e5e..7dad5ef4a81 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatConversations.tsx @@ -22,6 +22,7 @@ import { conversationSelector, conversationsSelector } from "../store/messages/m import { deleteConversationAction, setCurrentConversationAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; import { generateTemporaryTitle } from "../utils.js"; + import { collectReferences, replaceReferences } from "./completion/references.js"; import { ConversationDeleteDialog } from "./ConversationDeleteDialog.js"; import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx index 49feb99c1da..b2c1dd679e3 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatDialog.tsx @@ -16,6 +16,7 @@ import { isOpenSelector } from "../store/chatWindow/chatWindowSelectors.js"; import { setOpenAction } from "../store/chatWindow/chatWindowSlice.js"; import { type ChatEventHandler } from "../store/events.js"; import { getIsOpened } from "../store/localStorage.js"; + import { ConfigProvider, type LinkHandlerEvent } from "./ConfigContext.js"; import { CustomizationProvider } from "./CustomizationProvider.js"; import { GenAIChatOverlay } from "./GenAIChatOverlay.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx index bf7fa5015e2..95d7fabfd6c 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatHeader.tsx @@ -10,6 +10,7 @@ import { setFullscreenAction, setHistoryAction } from "../store/chatWindow/chatW import { hasMessagesSelector } from "../store/messages/messagesSelectors.js"; import { clearThreadAction, startNewConversationAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; + import { HeaderIcon } from "./HeaderIcon.js"; import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx b/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx index aba34af0208..93a1dde011b 100644 --- a/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx +++ b/libs/sdk-ui-gen-ai/src/components/GenAIChatWrapper.tsx @@ -22,6 +22,7 @@ import { getSettingHref, getWorkspaceSettingHref, } from "../utils.js"; + import { useConfig } from "./ConfigContext.js"; import { useCustomization } from "./CustomizationProvider.js"; import { ErrorBoundary } from "./ErrorBoundary.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/Input.tsx b/libs/sdk-ui-gen-ai/src/components/Input.tsx index 19b635cd3ef..6ac858032bd 100644 --- a/libs/sdk-ui-gen-ai/src/components/Input.tsx +++ b/libs/sdk-ui-gen-ai/src/components/Input.tsx @@ -33,6 +33,7 @@ import { } from "../store/messages/messagesSelectors.js"; import { newMessageAction } from "../store/messages/messagesSlice.js"; import { type RootState } from "../store/types.js"; + import { collectReferences } from "./completion/references.js"; import { useCompletion } from "./completion/useCompletion.js"; import { useHighlight } from "./highlight/useHighlight.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/Messages.tsx b/libs/sdk-ui-gen-ai/src/components/Messages.tsx index 910a70d55f3..50467a91931 100644 --- a/libs/sdk-ui-gen-ai/src/components/Messages.tsx +++ b/libs/sdk-ui-gen-ai/src/components/Messages.tsx @@ -17,6 +17,7 @@ import { messagesSelector, } from "../store/messages/messagesSelectors.js"; import { type RootState } from "../store/types.js"; + import { ChatSkeleton } from "./ChatSkeleton.js"; import { parseReferences } from "./completion/references.js"; import { useCustomization } from "./CustomizationProvider.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts b/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts index 6e1b2f6cfe2..f7d075f0052 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/plugins/rehype-references.ts @@ -6,6 +6,7 @@ import { type Node, type Parent } from "unist"; import { type TextContentObject } from "../../../model.js"; import { getReferenceRegex } from "../utils.js"; + import { type HtmlNode, type TextNode } from "./types.js"; export function rehypeReferences(references: TextContentObject[]) { diff --git a/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts b/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts index 0fe63f5620f..831027b9e09 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/plugins/remark-references.ts @@ -3,6 +3,7 @@ import { type Node, type Parent, type Point } from "unist"; import { getReferenceRegex } from "../utils.js"; + import { type TextNode } from "./types.js"; export function remarkReferences() { diff --git a/libs/sdk-ui-gen-ai/src/components/completion/references.ts b/libs/sdk-ui-gen-ai/src/components/completion/references.ts index 5b0e8af1bde..04e4fbe0df0 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/references.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/references.ts @@ -7,6 +7,7 @@ import { type IChatConversationMultipartLocalPart, type TextContentObject, } from "../../model.js"; + import { getCatalogItemId, getCatalogItemTitle, getCatalogItemType } from "./utils.js"; export const REFERENCE_REGEX_PART = "[^{}\\/]+\\/[^{}]+"; diff --git a/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts b/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts index 57c35a2ad62..03eed4e0552 100644 --- a/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts +++ b/libs/sdk-ui-gen-ai/src/components/completion/useCompletion.ts @@ -13,6 +13,7 @@ import { useSelector } from "react-redux"; import { type CatalogItem, type ICatalogDateAttribute } from "@gooddata/sdk-model"; import { catalogItemsSelector } from "../../store/chatWindow/chatWindowSelectors.js"; + import { type ICompletionItem, getCatalogItemId, getCompletionItemId, getOptions } from "./utils.js"; const WORD_REGEX = /\p{L}[\p{L}\p{N}_]*/u; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx index 5defc45f21d..915aaddfa36 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItem.tsx @@ -5,6 +5,7 @@ import { useIntl } from "react-intl"; import { type IChatConversationLocalItem } from "../../model.js"; import { type IChatMessagesGroup } from "../utils/groupUtility.js"; + import { AssistantItemFeedback } from "./AssistantItemFeedback.js"; import { AssistantItemSuggestions } from "./AssistantItemSuggestions.js"; import { ReasoningIcon } from "./contents/ReasoningIcon.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx index 8a7baf9176b..df8caf6a125 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/AssistantItemFeedback.tsx @@ -9,6 +9,7 @@ import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import type { IChatConversationLocalItem } from "../../model.js"; import { setUserFeedback } from "../../store/messages/messagesSlice.js"; import { type IChatMessagesGroup } from "../utils/groupUtility.js"; + import { FeedbackPopup } from "./FeedbackPopup.js"; import { useUserFeedback } from "./useUserFeedback.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx index 79ade21150a..4f6b42b9f46 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/AssistantMessage.tsx @@ -8,6 +8,7 @@ import { UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit"; import { type AssistantMessage } from "../../model.js"; import { setUserFeedback } from "../../store/messages/messagesSlice.js"; + import { FeedbackPopup } from "./FeedbackPopup.js"; import { MessageContents } from "./MessageContents.js"; import { getAssistantMessageState } from "./messageState.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx index 2b71ce50315..456a2fa59b5 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ConversationItemContents.tsx @@ -7,6 +7,7 @@ import { type IChatConversationMultipartLocalPart, } from "../../model.js"; import { loadWhatIfScenarios } from "../../whatIf/whatIfMapping.js"; + import { ConversationErrorContent } from "./conversationContents/ConversationErrorContent.js"; import { ConversationKdaContent } from "./conversationContents/ConversationKdaContent.js"; import { ConversationReasoningContent } from "./conversationContents/ConversationReasoningContent.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx index e8347079071..aca7f045e30 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/MessageContents.tsx @@ -7,6 +7,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { type Contents } from "../../model.js"; import { settingsSelector } from "../../store/chatWindow/chatWindowSelectors.js"; + import { ChangeAnalysisContentsComponent } from "./contents/ChangeAnalysisContentsComponent.js"; import { ErrorContentsComponent } from "./contents/ErrorContents.js"; import { RoutingContentsComponent } from "./contents/RoutingContents.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx index 9f9fb840e85..5496036122d 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ReasoningMessage.tsx @@ -4,6 +4,7 @@ import { useSelector } from "react-redux"; import { type Contents, type ReasoningContents, isReasoningContents } from "../../model.js"; import { settingsSelector } from "../../store/chatWindow/chatWindowSelectors.js"; + import { ReasoningContentsComponent } from "./contents/ReasoningContents.js"; import { type AssistantMessageState } from "./messageState.js"; import { ReasoningDropdown, getLastReasoningStepTitle } from "./ReasoningDropdown.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx b/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx index 1d4b3243ff3..c8e4daf02ca 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/ToolItem.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type IChatConversationLocalItem } from "../../model.js"; + import { ConversationItemContents } from "./ConversationItemContents.js"; import { getItemState } from "./itemState.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx b/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx index f1e3dcf61fe..0ba5bf62d7c 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/UserItem.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type IChatConversationLocalItem } from "../../model.js"; + import { ConversationItemContents } from "./ConversationItemContents.js"; import { getItemState } from "./itemState.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx b/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx index 09eda234678..ee5538081c8 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/UserMessage.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { type UserMessage } from "../../model.js"; + import { MessageContents } from "./MessageContents.js"; type UserMessageProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx index 7a64f248716..c6a24b4ce38 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/ChangeAnalysisContentsComponent.tsx @@ -10,6 +10,7 @@ import { type ChangeAnalysisContents } from "../../../model.js"; import { settingsSelector } from "../../../store/chatWindow/chatWindowSelectors.js"; import { setKeyDriverAnalysisAction } from "../../../store/chatWindow/chatWindowSlice.js"; import { type RootState } from "../../../store/types.js"; + import { useKdaDefinition, useKdaInfo } from "./useKdaDefinition.js"; export type ChangeAnalysisContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx index 07f79a19c77..8a3d8c3b350 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/ErrorContents.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type ErrorContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; export type ErrorContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx index edd1d28a17b..f26c9e6d32c 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/Markdown.tsx @@ -9,6 +9,7 @@ import { Typography } from "@gooddata/sdk-ui-kit"; import { type TextContentObject } from "../../../model.js"; import { rehypeReferences } from "../../completion/plugins/rehype-references.js"; import { remarkReferences } from "../../completion/plugins/remark-references.js"; + import { CustomHyperlink } from "./CustomHyperlink.js"; const componentMap: Components = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx index ea9da324a46..f8131be7e1e 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/RoutingContents.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type RoutingContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; export type RoutingContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx index d62f3937ea3..139dd1b7151 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/SearchContents.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { useWorkspaceStrict } from "@gooddata/sdk-ui"; import { type SearchContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; import { replaceLinks } from "./replaceLinks.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx index 53d798c57a5..be7b98a31de 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/SemanticSearchContents.tsx @@ -9,6 +9,7 @@ import { useWorkspaceStrict } from "@gooddata/sdk-ui"; import { UiIcon } from "@gooddata/sdk-ui-kit"; import { type SemanticSearchContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; import { replaceLinks } from "./replaceLinks.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx index 31a91a3d578..c00d71a0ed4 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/TextContents.tsx @@ -3,6 +3,7 @@ import cx from "classnames"; import { type TextContents } from "../../../model.js"; + import { MarkdownComponent } from "./Markdown.js"; export type TextContentsProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx index a152380d79b..6ef47d13a58 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationContents.tsx @@ -95,6 +95,7 @@ import { mapVisualizationWhatIfToScenarios } from "../../../whatIf/whatIfMapping import { useConfig } from "../../ConfigContext.js"; import { convertIntersectionToAttributeFilters, mergeFilters } from "../../utils/intersectionUtils.js"; import { VisualizationErrorBoundary } from "../components/VisualizationErrorBoundary.js"; + import { DrillSelectDropdownMenu } from "./drill/DrillSelectDropdownMenu.js"; import { MarkdownComponent } from "./Markdown.js"; import { useExecution } from "./useExecution.js"; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx index 43d57efd52a..4edadb94609 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/contents/VisualizationSaveDialog.tsx @@ -9,6 +9,7 @@ import { type IGenAIVisualization } from "@gooddata/sdk-model"; import { ConfirmDialog, Input, Typography } from "@gooddata/sdk-ui-kit"; import { saveVisualizationAction } from "../../../store/messages/messagesSlice.js"; + import { useVisualisationSaving } from "./hooks/useVisualisationSaving.js"; export type VisualizationSaveDialogProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx index 4b629550e21..b4896740204 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationKdaContent.tsx @@ -14,6 +14,7 @@ import { setKeyDriverAnalysisAction } from "../../../store/chatWindow/chatWindow import { type RootState } from "../../../store/types.js"; import { collectReferences } from "../../completion/references.js"; import { MarkdownComponent } from "../contents/Markdown.js"; + import { useKdaDefinition, useKdaInfo } from "./useKdaDefinition.js"; export type ConversationKdaContentProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx index 6e07fafca36..2fb1de539f7 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualisation.tsx @@ -57,6 +57,7 @@ import { visualizationErrorAction, } from "../../../store/messages/messagesSlice.js"; import { getHeadlineComparison } from "../../../utils.js"; + import { useExecution } from "./useExecution.js"; const VIS_HEIGHT = 250; diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx index 945f4207f69..eb8774ba21b 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationVisualizationContent.tsx @@ -61,6 +61,7 @@ import { convertIntersectionToAttributeFilters, mergeFilters } from "../../utils import { VisualizationErrorBoundary } from "../components/VisualizationErrorBoundary.js"; import { DrillSelectDropdownMenu } from "../contents/drill/DrillSelectDropdownMenu.js"; import { MarkdownComponent } from "../contents/Markdown.js"; + import { ConversationVisualisation, type ConversationVisualisationProps, diff --git a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx index 798ab0594cd..ac08736e6ae 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx +++ b/libs/sdk-ui-gen-ai/src/components/messages/conversationContents/ConversationWhatIfContent.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import type { IChatConversationLocalItem, IChatConversationMultipartLocalPart } from "../../../model.js"; import { type IWhatIfDefinition } from "../../../whatIf/whatIfMapping.js"; + import { ConversationVisualizationContent } from "./ConversationVisualizationContent.js"; export type ConversationWhatIfContentProps = { diff --git a/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts b/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts index 264d07c05d5..8191769ae65 100644 --- a/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts +++ b/libs/sdk-ui-gen-ai/src/components/messages/useUserFeedback.ts @@ -4,6 +4,7 @@ import { isChatConversationItem } from "@gooddata/sdk-backend-spi"; import { type AssistantMessage, type IChatConversationLocalItem } from "../../model.js"; import { type setUserFeedback } from "../../store/messages/messagesSlice.js"; + import { type IFeedbackData } from "./FeedbackPopup.js"; /** diff --git a/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx b/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx index ceedcdb2eb9..232bf6a0601 100644 --- a/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx +++ b/libs/sdk-ui-gen-ai/src/permissions/PermissionsContext.tsx @@ -13,6 +13,7 @@ import { type IWorkspacePermissions } from "@gooddata/sdk-model"; import { useWorkspaceStrict } from "@gooddata/sdk-ui"; import { GlobalError } from "../components/GlobalError.js"; + import { useWorkspacePermissions } from "./useWorkspacePermissions.js"; import { emptyWorkspacePermissions } from "./utils.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts index 9ec7b3a5111..d5151a8cc18 100644 --- a/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts +++ b/libs/sdk-ui-gen-ai/src/store/chatWindow/chatWindowSelectors.ts @@ -13,6 +13,7 @@ import { import type { IKdaDefinition } from "@gooddata/sdk-ui-dashboard"; import { type RootState } from "../types.js"; + import { chatWindowSliceName } from "./chatWindowSlice.js"; const chatWindowSliceSelector = (state: RootState) => state[chatWindowSliceName]; diff --git a/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts b/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts index 35625f210d2..de7b6ff6a22 100644 --- a/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts +++ b/libs/sdk-ui-gen-ai/src/store/messages/messagesSelectors.ts @@ -4,6 +4,7 @@ import { createSelector } from "@reduxjs/toolkit"; import { type IChatConversationLocal, type IChatConversationLocalItem, type Message } from "../../model.js"; import { type RootState } from "../types.js"; + import { messagesSliceName } from "./messagesSlice.js"; const messagesSliceSelector = (state: RootState) => state[messagesSliceName]; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts index 9ae1b02fd18..dd35c7e059f 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/index.ts @@ -14,6 +14,7 @@ import { setUserFeedback, setVerboseAction, } from "../messages/messagesSlice.js"; + import { loadCatalogItems } from "./loadCatalogItems.js"; import { loadColorPalette } from "./loadColorPalette.js"; import { loadSettings } from "./loadSettings.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts index 6af321b76d0..3b7c411cc72 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onThreadLoad.ts @@ -32,6 +32,7 @@ import { loadThreadSuccessAction, restoreCachedMessagesAction, } from "../messages/messagesSlice.js"; + import { interactionsToMessages } from "./converters/interactionsToMessages.js"; import { convertToLocalContent } from "./converters/toLocalContent.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts index 9a90bb6446c..cb4212aaaf7 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserFeedback.ts @@ -14,6 +14,7 @@ import { messagesSelector, } from "../messages/messagesSelectors.js"; import { setUserFeedbackError } from "../messages/messagesSlice.js"; + import { extractError } from "./utils.js"; /** diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts index 5dc7248427b..ed4d06b989e 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onUserMessage.ts @@ -55,6 +55,7 @@ import { type newMessageAction, setCurrentConversationAction, } from "../messages/messagesSlice.js"; + import { processContents } from "./converters/interactionsToMessages.js"; import { convertToLocalContent } from "./converters/toLocalContent.js"; import { convertMessageToChatConversation, extractError } from "./utils.js"; diff --git a/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts b/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts index d3328dc651e..9b5ad4764f4 100644 --- a/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts +++ b/libs/sdk-ui-gen-ai/src/store/sideEffects/onVisualisationRender.ts @@ -8,6 +8,7 @@ import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi"; import { type IChatConversationLocal, type Message, isVisualizationContents } from "../../model.js"; import { conversationSelector, messagesSelector } from "../messages/messagesSelectors.js"; import { saveVisualisationRenderStatusSuccessAction } from "../messages/messagesSlice.js"; + import { extractError } from "./utils.js"; /** diff --git a/libs/sdk-ui-geo/package.json b/libs/sdk-ui-geo/package.json index 7fd02699761..5dae3754179 100644 --- a/libs/sdk-ui-geo/package.json +++ b/libs/sdk-ui-geo/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-geo", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Geo Charts", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx index 06539692782..5dc282cdc56 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartInner.tsx @@ -35,6 +35,7 @@ import { import { type IGeoConfig, type IGeoData } from "../../GeoChart.js"; import type { IGeoLngLat } from "../../publicTypes/geoCommon.js"; + import { GeoChartLegendRenderer, type IGeoChartLegendRendererProps } from "./GeoChartLegendRenderer.js"; import { type IGeoChartRendererProps } from "./GeoChartRenderer.js"; import { isColorAssignmentItemChanged, isFluidLegendEnabled } from "./helpers/geoChart/common.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx index a9a8b790ea5..d44a8d4d6c4 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartLegendRenderer.tsx @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-ui-vis-commons"; import { type IAvailableLegends, type IGeoData } from "../../GeoChart.js"; + import { generateLegendColorData } from "./geoChartColor.js"; import { getAvailableLegends } from "./helpers/geoChart/data.js"; import { diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx index f62d4e86225..792c27dd9e5 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartOptionsWrapper.tsx @@ -21,6 +21,7 @@ import { } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoData, type IValidationResult } from "../../GeoChart.js"; + import { getColorStrategy } from "./colorStrategy/geoChart.js"; import { DEFAULT_DATA_POINTS_LIMIT } from "./constants/geoChart.js"; import { GeoChartInner, type IGeoChartInnerOptions, type IGeoChartInnerProps } from "./GeoChartInner.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx index a79935a59f9..d6fef5153e3 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoChartRenderer.tsx @@ -20,6 +20,7 @@ import { type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoConfig, type IGeoData } from "../../GeoChart.js"; import type { IGeoLngLat } from "../../publicTypes/geoCommon.js"; + import { DEFAULT_CLUSTER_LABELS_CONFIG, DEFAULT_CLUSTER_LAYER_NAME, diff --git a/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx b/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx index 4b5fb802c6d..a6907836ba4 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx +++ b/libs/sdk-ui-geo/src/core/geoChart/GeoValidatorHOC.tsx @@ -28,6 +28,7 @@ import { import { type IColorMapping } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoConfig } from "../../GeoChart.js"; + import { type IGeoChartInnerProps } from "./GeoChartInner.js"; import { isLocationSet } from "./helpers/geoChart/common.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts index d4b969ca7eb..d4eab04a3be 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartColor.ts @@ -6,6 +6,7 @@ import { isAttributeDescriptor, isResultAttributeHeader } from "@gooddata/sdk-mo import { type IColorLegendItem, type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IPushpinColor } from "../../GeoChart.js"; + import { DEFAULT_PUSHPIN_BORDER_COLOR_VALUE, DEFAULT_PUSHPIN_COLOR_OPACITY, diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts index d2b1ce32fc3..8d75c35c9af 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataLayers.ts @@ -6,6 +6,7 @@ import type mapboxgl from "mapbox-gl"; import { BucketNames } from "@gooddata/sdk-ui"; import { type IGeoConfig, type IGeoData, type IGeoPointsConfig } from "../../GeoChart.js"; + import { DEFAULT_CLUSTER_FILTER, DEFAULT_CLUSTER_LABELS_CONFIG, diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts index f9ca3d17ccf..90014930159 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartDataSource.ts @@ -4,6 +4,7 @@ import { type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IGeoConfig, type IGeoData, type IGeoPointsConfig, type IPushpinColor } from "../../GeoChart.js"; import type { IGeoLngLat } from "../../publicTypes/geoCommon.js"; + import { DEFAULT_CLUSTER_MAX_ZOOM, DEFAULT_CLUSTER_RADIUS, diff --git a/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts b/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts index c500e7c6258..226f4e90758 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/geoChartTooltip.ts @@ -8,6 +8,7 @@ import { type ISeparators } from "@gooddata/sdk-model"; import { type IHeaderPredicate } from "@gooddata/sdk-ui"; import { type IGeoConfig, type IGeoTooltipItem } from "../../GeoChart.js"; + import { DEFAULT_PUSHPIN_COLOR_VALUE, NULL_TOOLTIP_VALUE } from "./constants/geoChart.js"; import { parseGeoProperties } from "./helpers/geoChart/data.js"; import { formatValueForTooltip, getTooltipContentWidth } from "./helpers/geoChart/format.js"; diff --git a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts index 65ef2708f26..c830dfeb1ec 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/common.ts @@ -12,6 +12,7 @@ import { import { BucketNames, type DataViewFacade, type IColorAssignment } from "@gooddata/sdk-ui"; import { type IGeoData, type IGeoPointsConfig } from "../../../../GeoChart.js"; + import { getResponsiveInfo } from "./responsive.js"; export function getGeoAttributeHeaderItems(dv: DataViewFacade, geoData: IGeoData): IResultHeader[][] { diff --git a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts index 782a7b9f302..89328f09c39 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/data.ts @@ -28,6 +28,7 @@ import { type IGeoSegmentItem, } from "../../../../GeoChart.js"; import type { IGeoLngLat } from "../../../../publicTypes/geoCommon.js"; + import { dataValueAsFloat, getFormatFromExecutionResponse, diff --git a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts index d6bb4fd6e1e..728a8bdb3bb 100644 --- a/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts +++ b/libs/sdk-ui-geo/src/core/geoChart/helpers/geoChart/drilling.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-ui"; import { type IGeoData, type IGeoDrillEvent } from "../../../../GeoChart.js"; + import { type AttributeInfo, findGeoAttributesInDimension, parseGeoProperties } from "./data.js"; function getDrillIntersectionForGeoChart( diff --git a/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx b/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx index 615310a13f3..065bb0d3d55 100644 --- a/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx +++ b/libs/sdk-ui-geo/src/next/components/GeoChartDataLoader.tsx @@ -17,6 +17,7 @@ import { useGeoChartData } from "../hooks/dataLoading/useGeoChartDataPipeline.js import { useCallbackOnChange } from "../hooks/utils/useCallbackOnChange.js"; import { type ILayerExecutionRecord } from "../types/props/geoChart/internal.js"; import { createGeoExportFunction } from "../utils/createGeoExportFunction.js"; + import { GeoChartProviders } from "./GeoChartProviders.js"; import { GeoErrorComponent } from "./GeoErrorComponent.js"; import { GeoLoadingComponent } from "./GeoLoadingComponent.js"; diff --git a/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx b/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx index 883d03c5367..94cfa2aad03 100644 --- a/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx +++ b/libs/sdk-ui-geo/src/next/components/RenderGeoChart.tsx @@ -26,6 +26,7 @@ import { getMapCanvasRuntimeCapabilities, mapCanvasInstructionMessagesById, } from "../utils/mapCanvasAccessibility.js"; + import { GeoChartLegendOverlay } from "./multiLayerLegend/GeoChartLegendOverlay.js"; import { type LegendMessageFormatter, legendMessagesById } from "./multiLayerLegend/legendMessages.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx index a19fe41dcc7..abe04333b84 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/GeoChartLegendOverlay.tsx @@ -11,6 +11,7 @@ import { useLegendDetails } from "../../hooks/legend/useLegendDetails.js"; import { useMultiLayerLegend } from "../../hooks/legend/useMultiLayerLegend.js"; import type { IGeoChartConfig } from "../../types/config/unified.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; + import { type LegendMessageFormatter } from "./legendMessages.js"; import { MultiLayerLegendPanel } from "./MultiLayerLegendPanel.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx index fe5853dc695..eec869ad546 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColor.tsx @@ -24,6 +24,7 @@ import { type ILegendGroup, isLegendColorCategoryItem, } from "../../types/legend/model.js"; + import { resolveLegendGroupTitle } from "./groupTitle.js"; /** diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx index 15b936db941..59aa44f854c 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupColorScale.tsx @@ -7,6 +7,7 @@ import { type ILegendGroup, isLegendColorScaleItem, } from "../../types/legend/model.js"; + import { resolveLegendGroupTitle } from "./groupTitle.js"; import { LegendGroupContainer } from "./LegendGroupContainer.js"; import { type LegendMessageFormatter } from "./legendMessages.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx index 752c30dc5d0..d04ca159b5b 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/LegendGroupSize.tsx @@ -7,6 +7,7 @@ import { type ILegendSizeAnchorItem, isLegendSizeAnchorItem, } from "../../types/legend/model.js"; + import { resolveLegendGroupTitle } from "./groupTitle.js"; import { LegendGroupContainer } from "./LegendGroupContainer.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx index a561355b837..dbbe323639f 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendPanel.tsx @@ -20,6 +20,7 @@ import { type ILegendSection, isLegendColorCategoryItem, } from "../../types/legend/model.js"; + import { type LegendMessageFormatter } from "./legendMessages.js"; import { MultiLayerLegendSection } from "./MultiLayerLegendSection.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx index 17613217aaf..ee4b5dbb231 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/MultiLayerLegendSection.tsx @@ -15,6 +15,7 @@ import cx from "classnames"; import { type ILegendGroup, type ILegendSection } from "../../types/legend/model.js"; import { prefersReducedMotion } from "../../utils/prefersReducedMotion.js"; + import { ChevronIcon } from "./ChevronIcon.js"; import { LayerToggleSwitch } from "./LayerToggleSwitch.js"; import { LegendGroupColor } from "./LegendGroupColor.js"; diff --git a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts index 2d23bd3b789..7bae6cc908a 100644 --- a/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts +++ b/libs/sdk-ui-geo/src/next/components/multiLayerLegend/groupTitle.ts @@ -1,6 +1,7 @@ // (C) 2026 GoodData Corporation import { type ILegendGroup } from "../../types/legend/model.js"; + import { type LegendMessageFormatter } from "./legendMessages.js"; /** diff --git a/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx b/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx index 71db0260f81..e579108f364 100644 --- a/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx +++ b/libs/sdk-ui-geo/src/next/context/GeoDataContext.tsx @@ -4,6 +4,7 @@ import { type IColorStrategy } from "@gooddata/sdk-ui-vis-commons"; import { type IAvailableLegends, type IGeoLegendItem } from "../types/common/legends.js"; import type { IGeoCommonData } from "../types/geoData/common.js"; + import { useGeoLayers } from "./GeoLayersContext.js"; export interface IGeoDataContext { diff --git a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts index e77c47cc51c..d9eaeba1743 100644 --- a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts +++ b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersData.ts @@ -18,6 +18,7 @@ import { getLayerAdapter } from "../../layers/registry/adapterRegistry.js"; import { type IGeoAdapterContext } from "../../layers/registry/adapterTypes.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; import { createExecutionsFingerprint, createLayersStructureFingerprint } from "../../utils/fingerprint.js"; + import { processSettledLayerResults } from "./processSettledLayerResults.js"; /** diff --git a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts index d3d44c435bb..12fa5f0c0b8 100644 --- a/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts +++ b/libs/sdk-ui-geo/src/next/hooks/layers/useLayersPrepare.ts @@ -20,6 +20,7 @@ import type { IGeoChartConfig } from "../../types/config/unified.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; import { resolveLayerColorConfig } from "../../utils/color/resolveLayerColorConfig.js"; import { createDataViewsFingerprint, createLayersStructureFingerprint } from "../../utils/fingerprint.js"; + import { processSettledLayerResults } from "./processSettledLayerResults.js"; /** diff --git a/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts b/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts index 32ca140e2d6..1f4ad3154b2 100644 --- a/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts +++ b/libs/sdk-ui-geo/src/next/hooks/layers/useSyncLayersToMap.ts @@ -9,6 +9,7 @@ import { useGeoLegend } from "../../context/GeoLegendContext.js"; import { useMapRuntime } from "../../context/MapRuntimeContext.js"; import { getLayerAdapter } from "../../layers/registry/adapterRegistry.js"; import { resolveLayerColorConfig } from "../../utils/color/resolveLayerColorConfig.js"; + import { useApplyLayerSegmentFiltering } from "./useApplyLayerSegmentFiltering.js"; import { useApplyLayerVisibility } from "./useApplyLayerVisibility.js"; import { useInitLayersToMap } from "./useInitLayersToMap.js"; diff --git a/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts b/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts index 476b444b978..d30924c1cdd 100644 --- a/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts +++ b/libs/sdk-ui-geo/src/next/hooks/pushData/useGeoPushData.ts @@ -18,6 +18,7 @@ import { normalizeAttributeDescriptorLocalIdentifier } from "../../layers/common import { type IAvailableLegends } from "../../types/common/legends.js"; import { type GeoLayerType } from "../../types/layers/index.js"; import { compareAlphabetically } from "../../utils/alphabeticalSorting.js"; + import { hasGeoSegmentConflict } from "./geoSegmentConflict.js"; interface ILegendContext { diff --git a/libs/sdk-ui-geo/src/next/layers/area/adapter.ts b/libs/sdk-ui-geo/src/next/layers/area/adapter.ts index 2bebefacd20..32e4cf37a30 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/adapter.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/adapter.ts @@ -28,6 +28,7 @@ import { type IGeoAdapterContext, type IGeoLayerAdapter, } from "../registry/adapterTypes.js"; + import { deriveCollectionBoundingBox } from "./boundingBox.js"; import { getAreaColorStrategy } from "./coloring/colorStrategy.js"; import { transformAreaData } from "./data/transformation.js"; diff --git a/libs/sdk-ui-geo/src/next/layers/area/layers.ts b/libs/sdk-ui-geo/src/next/layers/area/layers.ts index 419f526c788..b687f9b17ed 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/layers.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/layers.ts @@ -11,6 +11,7 @@ import type { LineLayerSpecification, } from "../common/mapFacade.js"; import { EMPTY_SEGMENT_VALUE } from "../pushpin/constants.js"; + import { DEFAULT_AREA_LAYER_NAME, DEFAULT_AREA_OUTLINE_LAYER_NAME } from "./constants.js"; const SELECTION_OPACITY_EXPRESSION: ExpressionSpecification = [ diff --git a/libs/sdk-ui-geo/src/next/layers/area/operations.ts b/libs/sdk-ui-geo/src/next/layers/area/operations.ts index 6b937b2b9e1..d69b96fc3f4 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/operations.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/operations.ts @@ -5,6 +5,7 @@ import { applyStylePlan } from "../../map/styleReconciliation/reconcileStyle.js" import { type IGeoChartConfig } from "../../types/config/unified.js"; import { removeLayerIfExists, removeSourceIfExists } from "../common/layerOps.js"; import { type GeoJSONSourceSpecification, type IMapFacade } from "../common/mapFacade.js"; + import { createAreaFillLayer, createAreaOutlineLayer } from "./layers.js"; /** diff --git a/libs/sdk-ui-geo/src/next/layers/area/source.ts b/libs/sdk-ui-geo/src/next/layers/area/source.ts index 9ace3b851c8..9375cebb446 100644 --- a/libs/sdk-ui-geo/src/next/layers/area/source.ts +++ b/libs/sdk-ui-geo/src/next/layers/area/source.ts @@ -11,6 +11,7 @@ import type { GeoJSONSourceSpecification } from "../common/mapFacade.js"; import { getSelectedIntersections, isFeatureSelected } from "../common/selectionUtils.js"; import { EMPTY_SEGMENT_VALUE } from "../pushpin/constants.js"; import type { IAreaLayerOutput, IGeoAdapterContext } from "../registry/adapterTypes.js"; + import { getAreaColorStrategy } from "./coloring/colorStrategy.js"; import { getAreaAreaColors } from "./coloring/palette.js"; import { DEFAULT_AREA_FILL_COLOR } from "./constants.js"; diff --git a/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts b/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts index 79d7ebc68a4..6f0c34649df 100644 --- a/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts +++ b/libs/sdk-ui-geo/src/next/layers/execution/buildLayerExecution.ts @@ -7,6 +7,7 @@ import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import type { IGeoLayer } from "../../types/layers/index.js"; import { getLayerAdapter } from "../registry/adapterRegistry.js"; import type { IGeoAdapterContext } from "../registry/adapterTypes.js"; + import { createExecutionContextFromLayer } from "./layerContext.js"; /** diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts index 9f7e61b3a76..dcb5145f2bf 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/adapter.ts @@ -26,6 +26,7 @@ import { prepareExecutionWithGeoIcon } from "../execution/prepareGeoIconExecutio import { prepareExecutionWithTooltipText } from "../execution/prepareTooltipExecution.js"; import { resolveAttributeDisplayForms } from "../execution/resolveAttributeDisplayForms.js"; import type { IGeoAdapterContext, IGeoLayerAdapter, IPushpinLayerOutput } from "../registry/adapterTypes.js"; + import { isClusteringAllowed } from "./clustering/clustering.js"; import { getPushpinColorStrategy } from "./coloring/colorStrategy.js"; import { transformPushpinData } from "./data/transformation.js"; diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts index 1662b4cb39a..6a73921c4ee 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/layers.ts @@ -12,6 +12,7 @@ import type { FilterSpecification, SymbolLayerSpecification, } from "../common/mapFacade.js"; + import { DEFAULT_CLUSTER_LAYER_NAME, DEFAULT_LAYER_NAME, diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts index 93f4bcd6269..fde0440d9ac 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/operations.ts @@ -6,6 +6,7 @@ import { type IGeoChartConfig } from "../../types/config/unified.js"; import { type IPushpinGeoData } from "../../types/geoData/pushpin.js"; import { removeLayerIfExists, removeSourceIfExists } from "../common/layerOps.js"; import { type GeoJSONSourceSpecification, type IMapFacade } from "../common/mapFacade.js"; + import { isClusteringAllowed } from "./clustering/clustering.js"; import { createClusterLabels, diff --git a/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts b/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts index 167ac6d3086..a0afbb2ebab 100644 --- a/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts +++ b/libs/sdk-ui-geo/src/next/layers/pushpin/source.ts @@ -9,6 +9,7 @@ import { type IPushpinColor, type IPushpinGeoData } from "../../types/geoData/pu import { SELECTED_FEATURE_PROPERTY } from "../common/constants.js"; import type { GeoJSONSourceSpecification } from "../common/mapFacade.js"; import { getSelectedIntersections, isFeatureSelected } from "../common/selectionUtils.js"; + import { getPushpinColors } from "./coloring/palette.js"; import { DEFAULT_CLUSTER_MAX_ZOOM, diff --git a/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts b/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts index eb81dc4eb28..d73eb28a927 100644 --- a/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts +++ b/libs/sdk-ui-geo/src/next/layers/registry/adapterRegistry.ts @@ -3,6 +3,7 @@ import type { GeoLayerType, IGeoLayer } from "../../types/layers/index.js"; import { areaAdapter } from "../area/adapter.js"; import { pushpinAdapter } from "../pushpin/adapter.js"; + import type { IGeoLayerAdapterByType } from "./adapterTypes.js"; /** diff --git a/libs/sdk-ui-geo/src/next/layers/registry/output.ts b/libs/sdk-ui-geo/src/next/layers/registry/output.ts index 086ccec86b2..1b679784696 100644 --- a/libs/sdk-ui-geo/src/next/layers/registry/output.ts +++ b/libs/sdk-ui-geo/src/next/layers/registry/output.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import type { IGeoLayerData } from "../../context/GeoLayersContext.js"; + import type { IGeoLayerOutput } from "./adapterTypes.js"; /** diff --git a/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts b/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts index fd0fc70ed8e..e049a3cadb1 100644 --- a/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts +++ b/libs/sdk-ui-geo/src/next/map/runtime/mapInitialization.ts @@ -13,6 +13,7 @@ import { type IGeoChartViewportNavigation } from "../../types/config/viewport.js import { type IMapOptions } from "../../types/map/provider.js"; import { type IMapLibreLocale } from "../../utils/mapLocale.js"; import { fetchMapStyle } from "../style/styleEndpoint.js"; + import { normalizeBoundsForShortestPath } from "./bounds.js"; import { DEFAULT_MAPLIBRE_OPTIONS, diff --git a/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts b/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts index 28112471545..9ba75ef746f 100644 --- a/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts +++ b/libs/sdk-ui-geo/src/next/map/styleReconciliation/planBuilder.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import type { GeoJSONSourceSpecification, IMapFacade } from "../../layers/common/mapFacade.js"; + import type { IReconciliationLayerEntry, IReconciliationSourceEntry, diff --git a/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts b/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts index e65e46add43..e095a24a7c9 100644 --- a/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts +++ b/libs/sdk-ui-geo/src/next/map/styleReconciliation/reconcileStyle.ts @@ -2,6 +2,7 @@ import { removeLayerIfExists, removeSourceIfExists } from "../../layers/common/layerOps.js"; import type { IMapFacade } from "../../layers/common/mapFacade.js"; + import type { IExistingResources, IStyleReconciliationPlan } from "./types.js"; /** diff --git a/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts b/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts index 53164ea8118..5d3ba889f06 100644 --- a/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts +++ b/libs/sdk-ui-geo/src/next/map/viewport/viewportCalculation.ts @@ -6,6 +6,7 @@ import { type IMapViewport, type IPushpinMapConfig } from "../../types/map/provi import { isLngLatTupleBounds } from "../../utils/guards.js"; import { normalizeBoundsForShortestPath } from "../runtime/bounds.js"; import { DEFAULT_BOUNDS_PADDING } from "../runtime/mapConfig.js"; + import { getViewportOptions } from "./viewportPresets.js"; /** diff --git a/libs/sdk-ui-geo/src/next/types/config/areaChart.ts b/libs/sdk-ui-geo/src/next/types/config/areaChart.ts index 8897e720d4e..4fa48ec2883 100644 --- a/libs/sdk-ui-geo/src/next/types/config/areaChart.ts +++ b/libs/sdk-ui-geo/src/next/types/config/areaChart.ts @@ -7,6 +7,7 @@ import { type IColorMapping, type ICustomTooltipConfig } from "@gooddata/sdk-ui- import type { IGeoLngLat, IGeoLngLatBounds } from "../../../publicTypes/geoCommon.js"; import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import type { GeoBasemap } from "../map/basemap.js"; + import { type IGeoAreasConfig } from "./areas.js"; import { type IGeoChartLegendConfig } from "./legend.js"; import { type IGeoChartViewport } from "./viewport.js"; diff --git a/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts b/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts index 81bb283d5b7..26581b5ba5b 100644 --- a/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts +++ b/libs/sdk-ui-geo/src/next/types/config/pushpinChart.ts @@ -7,6 +7,7 @@ import { type IColorMapping, type ICustomTooltipConfig } from "@gooddata/sdk-ui- import type { IGeoLngLat, IGeoLngLatBounds } from "../../../publicTypes/geoCommon.js"; import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import type { GeoBasemap } from "../map/basemap.js"; + import { type IGeoChartLegendConfig } from "./legend.js"; import { type IGeoChartPointsConfig } from "./points.js"; import { type IGeoChartViewport } from "./viewport.js"; diff --git a/libs/sdk-ui-geo/src/next/types/config/unified.ts b/libs/sdk-ui-geo/src/next/types/config/unified.ts index 3660d09f648..99208ab2bab 100644 --- a/libs/sdk-ui-geo/src/next/types/config/unified.ts +++ b/libs/sdk-ui-geo/src/next/types/config/unified.ts @@ -7,6 +7,7 @@ import { type IColorMapping, type ICustomTooltipConfig } from "@gooddata/sdk-ui- import type { IGeoLngLat, IGeoLngLatBounds } from "../../../publicTypes/geoCommon.js"; import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import type { GeoBasemap } from "../map/basemap.js"; + import { type IGeoAreasConfig } from "./areas.js"; import { type IGeoChartLegendConfig } from "./legend.js"; import { type IGeoChartPointsConfig } from "./points.js"; diff --git a/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts b/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts index 9d82717b5f3..147f3da9ac3 100644 --- a/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts +++ b/libs/sdk-ui-geo/src/next/types/geoData/pushpin.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type IGeoLngLat } from "../common/coordinates.js"; + import { type IGeoAttributeItem, type IGeoCommonData, diff --git a/libs/sdk-ui-geo/src/next/types/legend/model.ts b/libs/sdk-ui-geo/src/next/types/legend/model.ts index a1003104547..26fc7ee1322 100644 --- a/libs/sdk-ui-geo/src/next/types/legend/model.ts +++ b/libs/sdk-ui-geo/src/next/types/legend/model.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { type GeoLayerType } from "../layers/index.js"; + import { type LegendMessageId, type LegendMessageValues } from "./messages.js"; /** diff --git a/libs/sdk-ui-geo/src/next/types/map/provider.ts b/libs/sdk-ui-geo/src/next/types/map/provider.ts index fa5e5defbbc..8a2f9af39d1 100644 --- a/libs/sdk-ui-geo/src/next/types/map/provider.ts +++ b/libs/sdk-ui-geo/src/next/types/map/provider.ts @@ -4,6 +4,7 @@ import type { StyleSpecification } from "../../layers/common/mapFacade.js"; import { type IGeoLngLat, type IGeoLngLatBounds } from "../common/coordinates.js"; import { type IGeoPushpinChartConfig } from "../config/pushpinChart.js"; import { type IGeoChartViewportNavigation } from "../config/viewport.js"; + import type { GeoBasemap } from "./basemap.js"; /** diff --git a/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts b/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts index 04d40fc2c5f..e1484edf028 100644 --- a/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts +++ b/libs/sdk-ui-geo/src/next/types/props/geoChart/internal.ts @@ -16,6 +16,7 @@ import { type IInsightDefinition, type INullableFilter, type ISettings } from "@ import { type IDataVisualizationProps } from "@gooddata/sdk-ui"; import { type GeoLayerType, type IGeoLayer } from "../../layers/index.js"; + import { type IGeoChartProps } from "./public.js"; /** diff --git a/libs/sdk-ui-geo/src/next/utils/layerConversion.ts b/libs/sdk-ui-geo/src/next/utils/layerConversion.ts index e9a280333ad..2b8d1e67e84 100644 --- a/libs/sdk-ui-geo/src/next/utils/layerConversion.ts +++ b/libs/sdk-ui-geo/src/next/utils/layerConversion.ts @@ -30,6 +30,7 @@ import { type IGeoLayerPushpin, isGeoLayerPushpin, } from "../types/layers/index.js"; + import { isRecord } from "./guards.js"; import { registerHeaderPredicateKey } from "./predicateFingerprint.js"; diff --git a/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts b/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts index 14517b0f599..3a59c000ea7 100644 --- a/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts +++ b/libs/sdk-ui-geo/src/next/utils/legend/aggregateLegend.ts @@ -11,6 +11,7 @@ import type { IPushpinGeoData } from "../../types/geoData/pushpin.js"; import { type ILegendModel, type ILegendSection } from "../../types/legend/model.js"; import type { ILayerExecutionRecord } from "../../types/props/geoChart/internal.js"; import { resolveLayerColorConfig } from "../color/resolveLayerColorConfig.js"; + import { computeAreaLegend } from "./computeAreaLegend.js"; import { computePushpinLegend } from "./computePushpinLegend.js"; diff --git a/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts b/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts index 3b274c30c5c..c56eaad0a66 100644 --- a/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts +++ b/libs/sdk-ui-geo/src/next/utils/legend/computeAreaLegend.ts @@ -3,6 +3,7 @@ import type { IAvailableLegends, IGeoLegendItem } from "../../types/common/legends.js"; import type { IAreaGeoData } from "../../types/geoData/area.js"; import { type ILegendGroup, type ILegendSection } from "../../types/legend/model.js"; + import { computeColorScale } from "./computeColorScale.js"; import { ATTRIBUTE_ONLY_URI_PREFIX, diff --git a/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts b/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts index d0e24b8ab09..3ba0d9e94b5 100644 --- a/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts +++ b/libs/sdk-ui-geo/src/next/utils/legend/computePushpinLegend.ts @@ -9,6 +9,7 @@ import { type ILegendSection, type ILegendSizeAnchorItem, } from "../../types/legend/model.js"; + import { computeColorScale } from "./computeColorScale.js"; import { ATTRIBUTE_ONLY_URI_PREFIX, diff --git a/libs/sdk-ui-kit/package.json b/libs/sdk-ui-kit/package.json index 9147c218431..c177dabba21 100644 --- a/libs/sdk-ui-kit/package.json +++ b/libs/sdk-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-kit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - UI Building Components", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx index 2b779d556b7..aa791f0c343 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/SkeletonItemFactory.tsx @@ -9,6 +9,7 @@ import { type ObjRef } from "@gooddata/sdk-model"; import { type IUiPagedVirtualListSkeletonItemProps } from "../../UiPagedVirtualList/UiPagedVirtualList.js"; import { UiSkeleton } from "../../UiSkeleton/UiSkeleton.js"; import { type IUiAsyncTableBulkAction, type IUiAsyncTableColumn } from "../types.js"; + import { COLUMN_PADDING, SKELETON_ITEM_HEIGHT } from "./constants.js"; import { getColumnWidths } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx index d8b89914adb..f785a01c592 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTable.tsx @@ -9,6 +9,7 @@ import { IntlWrapper } from "@gooddata/sdk-ui"; import { b } from "../asyncTableBem.js"; import { type IUiAsyncTableProps } from "../types.js"; + import { CHECKBOX_COLUMN_WIDTH, ROW_HEIGHT_LARGE, ROW_HEIGHT_NORMAL, SCROLLBAR_WIDTH } from "./constants.js"; import { UiAsyncTableBody } from "./UiAsyncTableBody.js"; import { UiAsyncTableEmptyState } from "./UiAsyncTableEmptyState.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx index dbe51666552..df92d518bd5 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBody.tsx @@ -8,6 +8,7 @@ import { isEnterKey } from "../../../utils/events.js"; import { makeGridKeyboardNavigation } from "../../@utils/keyboardNavigation.js"; import { UiPagedVirtualList } from "../../UiPagedVirtualList/UiPagedVirtualList.js"; import { type IUiAsyncTableBodyProps } from "../types.js"; + import { useSkeletonItem } from "./SkeletonItemFactory.js"; import { getCellId, getItemKey, getRowId } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx index 7688d109518..048bc3de971 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableBulkActions.tsx @@ -11,6 +11,7 @@ import { UiAutofocus } from "../../UiFocusManager/UiAutofocus.js"; import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableBulkActionsProps } from "../types.js"; + import { ASYNC_TABLE_BULK_ACTIONS_BUTTON_ID, ASYNC_TABLE_BULK_ACTIONS_MENU_ID } from "./constants.js"; import { UiAsyncTableDropdownItem } from "./UiAsyncTableDropdownItem.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx index 0e224a51181..8ecd1819404 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableCheckbox.tsx @@ -6,6 +6,7 @@ import { isActionKey } from "../../../utils/events.js"; import { UiCheckbox } from "../../UiCheckbox/UiCheckbox.js"; import { e } from "../asyncTableBem.js"; import { type UiAsyncTableCheckboxProps } from "../types.js"; + import { ASYNC_TABLE_SELECTED_COUNT_ID } from "./constants.js"; import { getColumnHeaderId, stopPropagationCallback } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx index 5ef691bd8ed..6650a8906ff 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableFilter.tsx @@ -16,6 +16,7 @@ import { UiAutofocus } from "../../UiFocusManager/UiAutofocus.js"; import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableFilterOption, type IUiAsyncTableFilterProps } from "../types.js"; + import { FILTER_CHIP_MAX_WIDTH, FILTER_ITEMS_OFFSET, diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx index 1db1e71ce88..a7bc649083f 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableHeader.tsx @@ -9,6 +9,7 @@ import { UiIcon } from "../../UiIcon/UiIcon.js"; import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableColumn, type IUiAsyncTableHeaderProps } from "../types.js"; + import { getColumnHeaderId, getColumnWidth } from "./utils.js"; const arrowIcon = ; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx index 22f0840a9e1..93e42c1755e 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableRow.tsx @@ -13,6 +13,7 @@ import { type IUiAsyncTableRowProps, type UiAsyncTableMenuRenderer, } from "../types.js"; + import { UiAsyncTableCheckbox } from "./UiAsyncTableCheckbox.js"; import { UiAsyncTableIconRenderer } from "./UiAsyncTableIconRenderer.js"; import { getCellId, getColumnWidth, getItemKey, getRowId, getRowLabelId } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx index ba34a8acb6c..704ddaeba23 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/UiAsyncTableToolbar.tsx @@ -13,6 +13,7 @@ import { e } from "../asyncTableBem.js"; import { messages } from "../locales.js"; import { type IUiAsyncTableToolbarProps } from "../types.js"; import { useAsyncTableSearch } from "../useAsyncTableSearch.js"; + import { ASYNC_TABLE_FILTER_LABEL_ID, ASYNC_TABLE_SELECTED_COUNT_ID } from "./constants.js"; import { UiAsyncTableBulkActions } from "./UiAsyncTableBulkActions.js"; import { UiAsyncTableCheckbox } from "./UiAsyncTableCheckbox.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx index 14523a2e6ea..e099ef1c2a2 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/WithConditionalAnchor.tsx @@ -3,6 +3,7 @@ import { type ReactNode } from "react"; import { UiLink } from "../../UiLink/UiLink.js"; + import { stopPropagationCallback } from "./utils.js"; export function WithConditionalAnchor({ href, children }: { href?: string; children: ReactNode }) { diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts index 8832ee0df8a..f587359eff7 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/useAsyncTableResponsiveColumns.ts @@ -2,6 +2,7 @@ import { useElementSize } from "../../hooks/useElementSize.js"; import { type IUiAsyncTableColumnDefinitionResponsive } from "../types.js"; + import { CHECKBOX_COLUMN_WIDTH, SCROLLBAR_WIDTH } from "./constants.js"; import { computeProportionalWidth, getColumnWidth } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts index bfeb302fd4e..9686ea28970 100644 --- a/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts +++ b/libs/sdk-ui-kit/src/@ui/UiAsyncTable/UiAsyncTable/utils.ts @@ -5,6 +5,7 @@ import { type KeyboardEvent, type MouseEvent } from "react"; import { type ObjRef, objRefToString } from "@gooddata/sdk-model"; import { type IUiAsyncTableColumn, type IUiAsyncTableFilterOption } from "../types.js"; + import { ASYNC_TABLE_ID_PREFIX, CHECKBOX_COLUMN_WIDTH, diff --git a/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx b/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx index 89b386fa8d2..4d9332259ce 100644 --- a/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiChip/ChipContent.tsx @@ -2,6 +2,7 @@ import { bem } from "../@utils/bem.js"; import { UiIcon } from "../UiIcon/UiIcon.js"; + import { type IChipContentProps } from "./types.js"; const { e } = bem("gd-ui-kit-chip"); diff --git a/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx b/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx index 26603f9a451..07c095c719f 100644 --- a/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiChip/ChipDeleteButton.tsx @@ -2,6 +2,7 @@ import { bem } from "../@utils/bem.js"; import { UiIcon } from "../UiIcon/UiIcon.js"; + import { type IChipDeleteButtonProps } from "./types.js"; const { e } = bem("gd-ui-kit-chip"); diff --git a/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx b/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx index a277388eb0b..9bc7bc07165 100644 --- a/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiChip/UiChip.tsx @@ -3,6 +3,7 @@ import { type CSSProperties, useLayoutEffect, useRef, useState } from "react"; import { bem } from "../@utils/bem.js"; + import { ChipContent } from "./ChipContent.js"; import { ChipDeleteButton } from "./ChipDeleteButton.js"; import { type IUiChipProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx b/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx index 82bea9471f0..ac26c5e776c 100644 --- a/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiDrawer/UiDrawer.tsx @@ -12,6 +12,7 @@ import { UiAutofocus } from "../UiFocusManager/UiAutofocus.js"; import { UiFocusTrap } from "../UiFocusManager/UiFocusTrap.js"; import { UiReturnFocusOnUnmount } from "../UiFocusManager/UiReturnFocusOnUnmount.js"; import { UiIconButton } from "../UiIconButton/UiIconButton.js"; + import { useToggleDrawer } from "./hooks/useToggleDrawer.js"; import { type IUiDrawerProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx b/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx index a59092a8fda..8174712f866 100644 --- a/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiDropdown/UiDropdown.tsx @@ -10,6 +10,7 @@ import { bem } from "../@utils/bem.js"; import { UiFloatingElement } from "../UiFloatingElement/UiFloatingElement.js"; import { UiFocusManager } from "../UiFocusManager/UiFocusManager.js"; import { resolveRef } from "../UiFocusManager/utils.js"; + import { type IUiDropdownBodyRenderProps, type IUiDropdownButtonRenderProps, diff --git a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx index 76f7b4fc6f5..e076085f761 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/UiFloatingElement.tsx @@ -12,6 +12,7 @@ import { useCloseOnEscape } from "../hooks/useCloseOnEscape.js"; import { useCloseOnMouseDrag } from "../hooks/useCloseOnMouseDrag.js"; import { FLOATING_ELEMENT_DATA_ATTR, useCloseOnOutsideClick } from "../hooks/useCloseOnOutsideClick.js"; import { useCloseOnParentScroll } from "../hooks/useCloseOnParentScroll.js"; + import { type IUiFloatingElementProps } from "./types.js"; import { useFloatingPosition } from "./useFloatingPosition.js"; import { getDimensionsFromRef, resolveAnchor } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts index 6ddf748a95a..46dd5617f59 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts +++ b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/useFloatingPosition.ts @@ -16,6 +16,7 @@ import { } from "@floating-ui/react"; import { useOverlayZIndexWithRegister } from "../../Overlay/OverlayContext.js"; + import { type IUseFloatingPositionOptions, type IUseFloatingPositionResult } from "./types.js"; import { alignPointsToFallbackPlacements, alignPointsToPlacement, getOffsetFromAlignPoint } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts index 468888dd0a6..fdaa852937d 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts +++ b/libs/sdk-ui-kit/src/@ui/UiFloatingElement/utils.ts @@ -4,6 +4,7 @@ import { type OffsetOptions, type Placement, type VirtualElement } from "@floati import { type IRegion } from "../../typings/domUtilities.js"; import { elementRegion } from "../../utils/domUtilities.js"; + import { type IFloatingAnchor, type ILegacyAlignPoint } from "./types.js"; const ALIGN_POINT_MAP: Record = { diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx index a42b41a483c..bb7a7b868d5 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiAutofocus.tsx @@ -12,6 +12,7 @@ import { } from "react"; import { getFocusableElements, isElementFocusable, isElementTextInput } from "../../utils/domUtilities.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; import { resolveRef } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx index b743bd37b8b..3a853158391 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiFocusTrap.tsx @@ -5,6 +5,7 @@ import { type ReactElement, type ReactNode, cloneElement, useCallback, useMemo, import { type NavigationDirection } from "../../typings/navigation.js"; import { getFocusableElements } from "../../utils/domUtilities.js"; import { makeKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; import { focusAndEnsureReachableElement, getNextFocusableElement } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx index 5ef95afb379..453aa1a6e5a 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiReturnFocusOnUnmount.tsx @@ -5,6 +5,7 @@ import { type ReactNode, type RefObject, useCallback, useMemo, useRef } from "re import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { getFocusableElements, isElementFocusable } from "../../utils/domUtilities.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; import { resolveRef } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx index 5d3706f80ee..8fb12e36e84 100644 --- a/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiFocusManager/UiTabOutHandler.tsx @@ -7,6 +7,7 @@ import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { type NavigationDirection } from "../../typings/navigation.js"; import { getFocusableElements } from "../../utils/domUtilities.js"; import { makeKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { type IUiFocusHelperConnectors } from "./types.js"; /** diff --git a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx index 75be647398a..6d9611af35a 100644 --- a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIcon.tsx @@ -5,6 +5,7 @@ import { type AriaAttributes } from "react"; import { type BackgroundShape, type BackgroundType } from "../@types/background.js"; import { type IconType } from "../@types/icon.js"; import { type ThemeColor } from "../@types/themeColors.js"; + import { b } from "./iconBem.js"; import { iconPaths } from "./icons.js"; import { UiIconBackground } from "./UiIconBackground.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx index e87b0d22c99..d66e8f8953a 100644 --- a/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiIcon/UiIconBackground.tsx @@ -5,6 +5,7 @@ import { type ReactNode } from "react"; import { type ThemeColor } from "@gooddata/sdk-model"; import { type BackgroundShape, type BackgroundType } from "../@types/background.js"; + import { b } from "./iconBackgroundBem.js"; export function UiIconBackground({ diff --git a/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx b/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx index 89f4493baa6..0eb26914ef8 100644 --- a/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiListbox/UiListbox.tsx @@ -5,6 +5,7 @@ import { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } fro import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { DefaultUiListboxInteractiveItemComponent } from "./defaults/DefaultUiListboxInteractiveItemComponent.js"; import { DefaultUiListboxStaticItemComponent } from "./defaults/DefaultUiListboxStaticItemComponent.js"; import { firstCharacterSearch } from "./defaults/firstCharacterSearch.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx b/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx index e9b24641a0a..cd36b588e74 100644 --- a/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiMenu/UiMenu.tsx @@ -5,6 +5,7 @@ import { type KeyboardEvent, type ReactNode, type RefObject, useEffect, useMemo, import cx from "classnames"; import { UiAutofocus } from "../UiFocusManager/UiAutofocus.js"; + import { typedUiMenuContextStore } from "./context.js"; import { useCustomContentKeyNavigation, useKeyNavigation, useUiMenuContextValue } from "./hooks.js"; import { getContentItem, getSiblingItems } from "./itemUtils.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx b/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx index c80a9a7f06d..575186c0096 100644 --- a/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiMenu/components/defaults/DefaultUiMenuContent.tsx @@ -5,6 +5,7 @@ import { type ReactElement, memo, useCallback } from "react"; import { typedUiMenuContextStore } from "../../context.js"; import { e } from "../../menuBem.js"; import { type IUiMenuContentItem, type IUiMenuContentProps } from "../../types.js"; + import { DefaultUiMenuHeader } from "./DefaultUiMenuHeader.js"; /** diff --git a/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx b/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx index d085ac6b925..8c6b3c4f94b 100644 --- a/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiMenu/hooks.tsx @@ -16,6 +16,7 @@ import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { isElementTextInput } from "../../utils/domUtilities.js"; import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { DefaultUiMenuContent } from "./components/defaults/DefaultUiMenuContent.js"; import { DefaultUiMenuContentItem, diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx b/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx index da61d36aca1..b4376d93f52 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTags/UiTag.tsx @@ -4,6 +4,7 @@ import { forwardRef } from "react"; import { bem } from "../@utils/bem.js"; import { UiTag as UiTagComponent } from "../UiTag/UiTag.js"; + import { type IUiTagDef } from "./types.js"; const { e } = bem("gd-ui-kit-tags"); diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx b/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx index 94a64d33af5..db1d8b8e080 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTags/UiTags.tsx @@ -16,6 +16,7 @@ import { } from "../UiCombobox/UiComboboxListItem.js"; import { UiComboboxPopup } from "../UiCombobox/UiComboboxPopup.js"; import { UiPopover } from "../UiPopover/UiPopover.js"; + import { useResponsiveTags } from "./hooks/useResponsiveTags.js"; import { useTagsInteractions } from "./interactions.js"; import { type IUiTagDef, type IUiTagsProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts b/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts index be38e9a3fa2..3f274a4b8b8 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts +++ b/libs/sdk-ui-kit/src/@ui/UiTags/hooks/useResponsiveTags.ts @@ -3,6 +3,7 @@ import { type DependencyList, useLayoutEffect, useState } from "react"; import { type IUiTagDef } from "../types.js"; + import { useTagsElements } from "./useTagsElements.js"; const PADDING = 5; diff --git a/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts b/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts index d9a498516a9..b0559185282 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts +++ b/libs/sdk-ui-kit/src/@ui/UiTags/interactions.ts @@ -3,6 +3,7 @@ import { type MutableRefObject, useCallback, useMemo, useRef, useState } from "react"; import { makeTabsKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { type IUiTagDef, type IUiTagsProps } from "./types.js"; type InteractionState = { diff --git a/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx b/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx index f3aabcb00b2..0ba19012548 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTooltip/UiTooltip.tsx @@ -19,6 +19,7 @@ import { ConditionalScopedThemeProvider, useIsScopeThemed, useTheme } from "@goo import { bem } from "../@utils/bem.js"; import { FLOATING_ELEMENT_DATA_ATTR } from "../hooks/useCloseOnOutsideClick.js"; import { useFloatingPosition } from "../UiFloatingElement/useFloatingPosition.js"; + import { ARROW_HEIGHT, ARROW_WIDTH, HIDE_DELAY, SHOW_DELAY } from "./constants.js"; import { type Dimensions, type IUiTooltipProps } from "./types.js"; import { diff --git a/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx b/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx index 50d40c31136..8e98d871c16 100644 --- a/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx +++ b/libs/sdk-ui-kit/src/@ui/UiTreeview/UiTreeview.tsx @@ -14,6 +14,7 @@ import { import { useAutoupdateRef } from "@gooddata/sdk-ui"; import { makeMenuKeyboardNavigation } from "../@utils/keyboardNavigation.js"; + import { DefaultUiTreeViewItemComponent } from "./defaults/DefaultUiTreeViewItemComponent.js"; import { type IUiLeveledTreeViewProps, diff --git a/libs/sdk-ui-kit/src/Bubble/Bubble.tsx b/libs/sdk-ui-kit/src/Bubble/Bubble.tsx index c666e85d21f..48c900e4675 100644 --- a/libs/sdk-ui-kit/src/Bubble/Bubble.tsx +++ b/libs/sdk-ui-kit/src/Bubble/Bubble.tsx @@ -9,6 +9,7 @@ import isReactEqual from "react-fast-compare"; import { ZoomAwareOverlay } from "../Overlay/ZoomAwareOverlay.js"; import { type OverlayPositionType } from "../typings/overlay.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { type ArrowDirections, type ArrowOffsets } from "./typings.js"; const ARROW_DIRECTIONS: ArrowDirections = { diff --git a/libs/sdk-ui-kit/src/Bubble/withBubble.tsx b/libs/sdk-ui-kit/src/Bubble/withBubble.tsx index 428ed6b379f..6f13407c9c1 100644 --- a/libs/sdk-ui-kit/src/Bubble/withBubble.tsx +++ b/libs/sdk-ui-kit/src/Bubble/withBubble.tsx @@ -5,6 +5,7 @@ import { type ComponentType, type ReactNode, forwardRef } from "react"; import { useIntl } from "react-intl"; import { type IAlignPoint } from "../typings/positioning.js"; + import { Bubble } from "./Bubble.js"; import { BubbleHoverTrigger } from "./BubbleHoverTrigger.js"; diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx index 6d1ff97446b..4fac8842e68 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPicker.tsx @@ -4,6 +4,7 @@ import { type KeyboardEvent, memo, useEffect, useId, useMemo, useRef } from "rea import { bem } from "../@ui/@utils/bem.js"; import { LoadingSpinner } from "../LoadingSpinner/LoadingSpinner.js"; + import { CatalogItemPickerFooter, CatalogItemPickerHeader, diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx index ced6ae462f5..7ab210e7bd5 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/CatalogItemPickerParts.tsx @@ -19,6 +19,7 @@ import { UiListbox } from "../@ui/UiListbox/UiListbox.js"; import { UiSubmenuHeader } from "../@ui/UiSubmenuHeader/UiSubmenuHeader.js"; import { UiTooltip } from "../@ui/UiTooltip/UiTooltip.js"; import { Input } from "../Form/Input.js"; + import { type CatalogItemListboxItem, type ICatalogItemPickerListItemData } from "./listboxItemBuilders.js"; import { testIds } from "./messages.js"; import { type CatalogItemPickerType } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx b/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx index 9b71f8510e5..5425fafec99 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/listboxItemBuilders.tsx @@ -3,6 +3,7 @@ import { bem } from "../@ui/@utils/bem.js"; import { type IUiListboxItem } from "../@ui/UiListbox/types.js"; import { LoadingSpinner } from "../LoadingSpinner/LoadingSpinner.js"; + import { type ICatalogItemPickerItem } from "./types.js"; const { e } = bem("gd-ui-kit-catalog-item-picker"); diff --git a/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts b/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts index 5a16474f3eb..e964c548c83 100644 --- a/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts +++ b/libs/sdk-ui-kit/src/CatalogItemPicker/useCatalogItemPickerHandlers.ts @@ -3,6 +3,7 @@ import { type Dispatch, type SetStateAction, useCallback, useEffect, useMemo } from "react"; import { type IUiListboxInteractiveItem } from "../@ui/UiListbox/types.js"; + import { type CatalogItemListboxItem, type ICatalogItemPickerListItemData } from "./listboxItemBuilders.js"; import { type CatalogItemPickerSelectionMode, diff --git a/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx b/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx index 733487468e3..c3ff893841c 100644 --- a/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx +++ b/libs/sdk-ui-kit/src/ChartSorting/ChartSorting.tsx @@ -9,6 +9,7 @@ import { type ISortItem } from "@gooddata/sdk-model"; import { IntlWrapper } from "@gooddata/sdk-ui"; import { Button } from "../Button/Button.js"; + import { ChartSortingDropdown } from "./ChartSortingDropdown.js"; import { ChartSortingDropdownBody } from "./ChartSortingDropdownBody.js"; import { type IAvailableSortsGroup, type IBucketItemDescriptors } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx b/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx index 137bd2ae08c..52ac014aa58 100644 --- a/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx +++ b/libs/sdk-ui-kit/src/ColorPicker/ColorPicker.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { type ColorFormats } from "tinycolor2"; import { Button } from "../Button/Button.js"; + import { ColorPickerMatrix } from "./components/ColorPickerMatrix.js"; import { ColorsPreview } from "./components/ColorsPreview.js"; import { HexColorInput } from "./components/HexColorInput.js"; diff --git a/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx b/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx index ed630123ef3..8510ad31665 100644 --- a/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx +++ b/libs/sdk-ui-kit/src/DescriptionPanel/DescriptionPanel.tsx @@ -15,6 +15,7 @@ import { type ArrowOffsets } from "../Bubble/typings.js"; import { useMediaQuery } from "../responsive/useMediaQuery.js"; import { RichText } from "../RichText/RichText.js"; import { ZOOM_THRESHOLD, useIsZoomed } from "../ZoomContext/ZoomContext.js"; + import { EllipsisText } from "./EllipsisText.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx b/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx index 6ccd4518aa4..44928fcc80f 100644 --- a/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/CommunityEditionDialog.tsx @@ -3,6 +3,7 @@ import { Button } from "../Button/Button.js"; import { Message } from "../Messages/Message.js"; import { useId } from "../utils/useId.js"; + import { Dialog } from "./Dialog.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx b/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx index 41c7cd37b72..48dc34a9945 100644 --- a/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ConfirmDialog.tsx @@ -3,6 +3,7 @@ import { memo } from "react"; import { Overlay } from "../Overlay/Overlay.js"; + import { ConfirmDialogBase } from "./ConfirmDialogBase.js"; import { type IConfirmDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx index 307bd4334f0..e8842af90c3 100644 --- a/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ConfirmDialogBase.tsx @@ -10,6 +10,7 @@ import { Button } from "../Button/Button.js"; import { LoadingSpinner } from "../LoadingSpinner/LoadingSpinner.js"; import { Typography } from "../Typography/Typography.js"; import { useId } from "../utils/useId.js"; + import { DialogBase } from "./DialogBase.js"; import { CONFIRM_DIALOG_BASE_ID } from "./elementId.js"; import { type IConfirmDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/Dialog.tsx b/libs/sdk-ui-kit/src/Dialog/Dialog.tsx index c6fa66d5f1e..cd782dbea7e 100644 --- a/libs/sdk-ui-kit/src/Dialog/Dialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/Dialog.tsx @@ -3,6 +3,7 @@ import { memo } from "react"; import { Overlay } from "../Overlay/Overlay.js"; + import { DialogBase } from "./DialogBase.js"; import { type IDialogProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx index 63b6794db23..462faaa1d9d 100644 --- a/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/DialogBase.tsx @@ -8,6 +8,7 @@ import { UiFocusManager } from "../@ui/UiFocusManager/UiFocusManager.js"; import { defaultFocusCheckFn } from "../@ui/UiFocusManager/utils.js"; import { ScreenReaderToast } from "../Messages/toasts/ToastsCenter.js"; import { isElementSubmitButton, isElementTextInput } from "../utils/domUtilities.js"; + import { DialogCloseButton } from "./DialogCloseButton.js"; import { type IDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx b/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx index 34396e38b3e..dffd9561eb6 100644 --- a/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx +++ b/libs/sdk-ui-kit/src/Dialog/DialogCloseButton.tsx @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { IntlWrapper } from "@gooddata/sdk-ui"; import { Button } from "../Button/Button.js"; + import { type IDialogCloseButtonProps } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx b/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx index faa3fb7d14d..70c6397c858 100644 --- a/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx +++ b/libs/sdk-ui-kit/src/Dialog/DialogList/DialogListItemBasic.tsx @@ -9,6 +9,7 @@ import { simplifyText } from "@gooddata/util"; import { Bubble } from "../../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../../Bubble/BubbleHoverTrigger.js"; import { ShortenedText } from "../../ShortenedText/ShortenedText.js"; + import { type IDialogListItemComponentProps } from "./typings.js"; const ICON_TOOLTIP_ALIGN_POINTS = [ diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx index 427fcc1a232..4a6d5d03bd7 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/EmbedInsightDialogBase.tsx @@ -9,6 +9,7 @@ import { useIntl } from "react-intl"; import { dialogEmbedTabLabels, dialogHeadlineLabels } from "../../../locales.js"; import { type ITab, Tabs } from "../../../Tabs/Tabs.js"; import { ConfirmDialogBase } from "../../ConfirmDialogBase.js"; + import { CompleteListPropsMessage } from "./components/CompleteListPropsMessage.js"; import { EmbedInsightContent } from "./components/EmbedInsightContent.js"; import { diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx index 7a9817d474b..2c1d0fd6974 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/CodeOptions.tsx @@ -5,6 +5,7 @@ import { useCallback } from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { type IReactOptions, type UnitsType } from "../types.js"; + import { HeightSetting } from "./HeightSetting.js"; import { ToggleSwitch } from "./ToggleSwitch.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx index a28251bce9f..8a24c6efdd0 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ComponentTypeSelect.tsx @@ -6,6 +6,7 @@ import { FormattedMessage } from "react-intl"; import { dialogChangeMessageLabels } from "../../../../locales.js"; import { type InsightCodeType } from "../types.js"; + import { ComponentTypeItem } from "./ComponentTypeItem.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx index 80f0c252fd8..79521833ec3 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/EmbedInsightContent.tsx @@ -3,6 +3,7 @@ import { useMemo } from "react"; import { type EmbedOptionsType, type IReactOptions, type IWebComponentsOptions } from "../types.js"; + import { EmbedInsightCodeArea } from "./CodeArea.js"; import { PrepareEnvMessage } from "./PrepareEnvMessage.js"; import { ReactOptions } from "./ReactOptions.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx index da4f19d86d2..c7ad00e1c96 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/HeightSetting.tsx @@ -8,6 +8,7 @@ import { DropdownList } from "../../../../Dropdown/DropdownList.js"; import { SingleSelectListItem } from "../../../../List/ListItem.js"; import { getDefaultHeightForEmbedCodeByUnit } from "../../utils.js"; import { DEFAULT_UNIT, UNITS, type UnitsType } from "../types.js"; + import { NumericInput } from "./NumericInput.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx index 785a1f77c1f..ff14972e357 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/LocaleSetting.tsx @@ -12,6 +12,7 @@ import { DropdownList } from "../../../../Dropdown/DropdownList.js"; import { SingleSelectListItem } from "../../../../List/ListItem.js"; import { dialogChangeMessageLabels } from "../../../../locales.js"; import { DEFAULT_LOCALE } from "../types.js"; + import { ToggleSwitch } from "./ToggleSwitch.js"; /** diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx index 63228e0b8b9..1260bbfa7f0 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/ReactOptions.tsx @@ -3,6 +3,7 @@ import { useCallback } from "react"; import { type CodeLanguageType, type IReactOptions, type InsightCodeType } from "../types.js"; + import { CodeLanguageSelect } from "./CodeLanguageSelect.js"; import { CodeOptions } from "./CodeOptions.js"; import { ComponentTypeSelect } from "./ComponentTypeSelect.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx index 0a78258b066..5bbda33124d 100644 --- a/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx +++ b/libs/sdk-ui-kit/src/Dialog/EmbedInsightDialog/EmbedInsightDialogBase/components/WebComponentsOptions.tsx @@ -8,6 +8,7 @@ import { type ILocale } from "@gooddata/sdk-ui"; import { dialogChangeMessageLabels } from "../../../../locales.js"; import { type IWebComponentsOptions, type UnitsType } from "../types.js"; + import { HeightSetting } from "./HeightSetting.js"; import { LocaleSetting } from "./LocaleSetting.js"; import { ToggleSwitch } from "./ToggleSwitch.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx b/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx index 8f286e25e32..f6293f57e37 100644 --- a/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ExportDialog.tsx @@ -4,6 +4,7 @@ import { memo } from "react"; import { Overlay } from "../Overlay/Overlay.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { ExportDialogBase } from "./ExportDialogBase.js"; import { type IExportDialogProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx index c8f4b1ac08f..ab9f28f902f 100644 --- a/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ExportDialogBase.tsx @@ -8,6 +8,7 @@ import { usePropState } from "@gooddata/sdk-ui"; import { Checkbox } from "../Form/Checkbox.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { ConfirmDialogBase } from "./ConfirmDialogBase.js"; import { type IExportDialogBaseProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx b/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx index 74d14d42a65..fa3ed54a413 100644 --- a/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ExportTabularPdfDialog.tsx @@ -13,6 +13,7 @@ import { DropdownButton } from "../Dropdown/DropdownButton.js"; import { Checkbox } from "../Form/Checkbox.js"; import { Overlay } from "../Overlay/Overlay.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { ConfirmDialogBase } from "./ConfirmDialogBase.js"; import { type IExportTabularPdfDialogProps, type PageOrientation, type PageSize } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx b/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx index 7b1916918b0..0c0ecc10e28 100644 --- a/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/HubspotConversionTouchPointDialog.tsx @@ -3,6 +3,7 @@ import { HubspotProvider } from "@aaronhayes/react-use-hubspot-form"; import { useId } from "../utils/useId.js"; + import { Dialog } from "./Dialog.js"; import { HubspotConversionTouchPointDialogBase, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx index bc07d492a2a..90691377c90 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeBase.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { BackButton } from "../../BackButton.js"; import { ConfirmDialogBase } from "../../ConfirmDialogBase.js"; import { ContentDivider } from "../../ContentDivider.js"; + import { AddGranteeContent } from "./AddGranteeContent.js"; import { type IAddGranteeBaseProps } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx index ef9a82e3c28..5c7371e8aa1 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AddGranteeButton.tsx @@ -7,6 +7,7 @@ import { FormattedMessage, useIntl } from "react-intl"; import { UiTooltip } from "../../../@ui/UiTooltip/UiTooltip.js"; import { useIdPrefixed } from "../../../utils/useId.js"; + import { type IAddUserOrGroupButton } from "./types.js"; import { ADD_GRANTEE_ID } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx index 020b92c76be..78818b10c11 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/AsyncSelectComponents.tsx @@ -13,6 +13,7 @@ import { import { LoadingMask } from "../../../LoadingMask/LoadingMask.js"; import { Typography } from "../../../Typography/Typography.js"; + import { type ISelectErrorOption, type ISelectOption, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx index 9ac1e1adc56..11d4054c7c5 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentInteractionContext.tsx @@ -12,6 +12,7 @@ import { type ShareDialogInteractionGranteeData, type ShareDialogInteractionType, } from "../types.js"; + import { type GranteeItem, isGranularGrantee, isGranularGranteeUser } from "./types.js"; import { getGranularPermissionFromUserPermissions, getIsGranteeCurrentUser } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx index 71f521bedb8..d7b74fc8ba3 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ComponentLabelsContext.tsx @@ -3,6 +3,7 @@ import { createContext, useContext } from "react"; import { type IShareDialogLabels } from "../types.js"; + import { type IComponentLabelsProviderProps } from "./types.js"; const defaultLabels: IShareDialogLabels = { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx index d75182e15ba..8eb959d24ac 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeIcons.tsx @@ -4,6 +4,7 @@ import { FormattedMessage } from "react-intl"; import { Bubble } from "../../../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../../../Bubble/BubbleHoverTrigger.js"; + import { useComponentLabelsContext } from "./ComponentLabelsContext.js"; import { type DialogModeType } from "./types.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx index 9ca217fbceb..0555a481776 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranteeItem.tsx @@ -8,6 +8,7 @@ import { invariant } from "ts-invariant"; import { Button } from "../../../Button/Button.js"; import { useIdPrefixed } from "../../../utils/useId.js"; + import { GranteeGroupIcon, GranteeOwnerRemoveIcon, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx index 7d875f53104..d217416f969 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeGroupItem.tsx @@ -15,6 +15,7 @@ import { type IGranularGranteeGroup, } from "../types.js"; import { getGranteeItemTestId, getGranteeLabel } from "../utils.js"; + import { GranularPermissionsDropdownWithBubble } from "./GranularPermissionsDropdown.js"; import { getGranteePossibilities } from "./permissionsLogic.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx index 7fa1d8568d1..91e5607a519 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularGranteeUserItem.tsx @@ -10,6 +10,7 @@ import { useShareDialogInteraction } from "../ComponentInteractionContext.js"; import { GranteeUserIcon } from "../GranteeIcons.js"; import { type DialogModeType, type GranteeItem, type IGranularGranteeUser } from "../types.js"; import { getGranteeItemTestId, getGranteeLabel } from "../utils.js"; + import { GranularPermissionsDropdownWithBubble } from "./GranularPermissionsDropdown.js"; import { getGranteePossibilities } from "./permissionsLogic.js"; import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx index c03da4c69c0..b04af4cf59d 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdown.tsx @@ -18,6 +18,7 @@ import { type IGranularGrantee, } from "../types.js"; import { getGranularGranteeClassNameId } from "../utils.js"; + import { GranularPermissionsDropdownBody } from "./GranularPermissionsDropdownBody.js"; interface IGranularPermissionsDropdownProps { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx index c51f5573dcd..2b49ae1a57b 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/GranularPermissions/GranularPermissionsDropdownBody.tsx @@ -20,6 +20,7 @@ import { type IGranteePermissionsPossibilities, type IGranularGrantee, } from "../types.js"; + import { GranularPermissionSelectItemWithBubble } from "./GranularPermissionItem.js"; interface IGranularPermissionsDropdownBodyProps { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx index 78f48efa752..07eccb46448 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareDialogBase.tsx @@ -4,6 +4,7 @@ import { useCallback, useEffect, useRef } from "react"; import { Overlay } from "../../../Overlay/Overlay.js"; import { type IAlignPoint } from "../../../typings/positioning.js"; + import { AddGranteeBase } from "./AddGranteeBase.js"; import { useShareDialogInteraction } from "./ComponentInteractionContext.js"; import { ShareGranteeBase } from "./ShareGranteeBase.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx index e611a081f1b..972d1495ab6 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeBase.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { ConfirmDialogBase } from "../../ConfirmDialogBase.js"; import { ContentDivider } from "../../ContentDivider.js"; + import { AdminInformationMessage } from "./AdminInformationMessage.js"; import { SharedObjectLockControl } from "./SharedObjectLockControl.js"; import { SharedObjectUnderLenientControl } from "./SharedObjectUnderLenientControl.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx index 5f6ed1dd19f..ce285884b34 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareGranteeContent.tsx @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { Typography } from "../../../Typography/Typography.js"; + import { AddUserOrGroupButton } from "./AddGranteeButton.js"; import { GranteeList } from "./GranteeList.js"; import { GranteeListLoading } from "./GranteeListLoading.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx index 7089c977763..850e759d323 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/ShareLink.tsx @@ -7,6 +7,7 @@ import { compressForUrl } from "@gooddata/sdk-ui"; import { Input } from "../../../Form/Input.js"; import { Typography } from "../../../Typography/Typography.js"; import { isCopyKey } from "../../../utils/events.js"; + import { type IShareLinkProps } from "./types.js"; import { SHARE_LINK_HEADLINE_ID, SHARE_LINK_HELPER_TEXT_ID } from "./utils.js"; diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx index 9d8da4a499c..63c325052e1 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/AddGranteeSelect.test.tsx @@ -16,6 +16,7 @@ import { BackendProvider, WorkspaceProvider, withIntl } from "@gooddata/sdk-ui"; import { mapWorkspaceUserToGrantee } from "../../shareDialogMappers.js"; import { AddGranteeSelect } from "../AddGranteeSelect.js"; import { type IAddGranteeSelectProps } from "../types.js"; + import { availableUserAccessGrantee, availableUserGroupAccessGrantee, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts index 96067920e42..2763a2f4977 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/useShareDialogBase.test.ts @@ -9,6 +9,7 @@ import { idRef } from "@gooddata/sdk-model"; import { type IGranularGranteeUser, type IShareDialogBaseProps } from "../types.js"; import { useShareDialogBase } from "../useShareDialogBase.js"; + import { defaultUser, granularGranteeGroup, diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts index 403e0e768d5..37c29f5e7ed 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/test/utils.test.ts @@ -14,6 +14,7 @@ import { notInArrayFilter, sortGranteesByName, } from "../utils.js"; + import { current, granularRule, groupAll, owner, user } from "./GranteeMock.js"; describe("utils", () => { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts index 8950d0e416a..f2f2e0ce603 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/useShareDialogBase.ts @@ -7,6 +7,7 @@ import { isEqual } from "lodash-es"; import { areObjRefsEqual } from "@gooddata/sdk-model"; import { mapShareStatusToGroupAll } from "../shareDialogMappers.js"; + import { useGetAccessList } from "./backend/useGetAccessList.js"; import { useShareDialogInteraction } from "./ComponentInteractionContext.js"; import { diff --git a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts index c97d22fe101..eb04a25460d 100644 --- a/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts +++ b/libs/sdk-ui-kit/src/Dialog/ShareDialog/ShareDialogBase/utils.ts @@ -15,6 +15,7 @@ import { import { simplifyText } from "@gooddata/util"; import { type CurrentUserPermissions } from "../types.js"; + import { type GranteeItem, type IGranteeGroupAll, diff --git a/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx b/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx index 004d43170a5..bf4db639bb2 100644 --- a/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx +++ b/libs/sdk-ui-kit/src/Dialog/StylingEditorDialog/StylingEditorDialog.tsx @@ -13,6 +13,7 @@ import { Typography } from "../../Typography/Typography.js"; import { useId } from "../../utils/useId.js"; import { Dialog } from "../Dialog.js"; import { type IDialogBaseProps } from "../typings.js"; + import { BubbleHeaderSeparator } from "./BubbleHeaderSeparator.js"; import { StylingEditorDialogFooter, diff --git a/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx b/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx index 21c21069305..843ec3440f8 100644 --- a/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx +++ b/libs/sdk-ui-kit/src/Dropdown/Dropdown.tsx @@ -25,6 +25,7 @@ import { useMediaQuery } from "../responsive/useMediaQuery.js"; import { type OverlayPositionType } from "../typings/overlay.js"; import { type IAlignPoint } from "../typings/positioning.js"; import { useId } from "../utils/useId.js"; + import { DropdownButtonKeyboardWrapper } from "./DropdownButtonKeyboardWrapper.js"; const SCROLLBAR_SELECTOR = ".fixedDataTableLayout_main .ScrollbarLayout_main"; diff --git a/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx b/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx index 08a0cf45845..79416bd9983 100644 --- a/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx +++ b/libs/sdk-ui-kit/src/Dropdown/DropdownList.tsx @@ -29,6 +29,7 @@ import { NoData } from "../NoData/NoData.js"; import { type ITab } from "../Tabs/Tabs.js"; import { type IAccessibilityConfigBase } from "../typings/accessibility.js"; import { isTypingKey } from "../utils/events.js"; + import { DropdownTabs } from "./DropdownTabs.js"; /** diff --git a/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx b/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx index 78e6383677e..d0f0cb1a5b9 100644 --- a/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx +++ b/libs/sdk-ui-kit/src/Dropdown/tests/Dropdown.test.tsx @@ -10,6 +10,7 @@ import { type IDropdownButtonRenderProps, type IDropdownProps, } from "../Dropdown.js"; + import { componentMock } from "./testUtils.js"; const bodyMock = componentMock(); diff --git a/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx b/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx index 1ecab890b02..1db5a8aeb10 100644 --- a/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx +++ b/libs/sdk-ui-kit/src/EditableLabel/EditableLabel.tsx @@ -21,6 +21,7 @@ import { v4 as uuid } from "uuid"; import { Overlay } from "../Overlay/Overlay.js"; import { ENUM_KEY_CODE } from "../typings/utilities.js"; + import { type IEditableLabelProps } from "./typings.js"; // There are known compatibility issues between CommonJS (CJS) and ECMAScript modules (ESM). diff --git a/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx b/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx index ebd69d7e4ef..792b4e92604 100644 --- a/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx +++ b/libs/sdk-ui-kit/src/FileUpload/FileDropzone/FileDropzone.tsx @@ -13,6 +13,7 @@ import { import { useFileInput } from "../hooks/useFileInput.js"; import { parseAcceptedTypes } from "../parseAcceptedTypes.js"; import { FileValidationErrorCode, type IFileValidationResult } from "../types.js"; + import { b } from "./fileDropzoneBem.js"; type DragState = "idle" | "valid" | "invalid"; diff --git a/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx b/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx index adf0a9d9f09..961c8bd5260 100644 --- a/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx +++ b/libs/sdk-ui-kit/src/FileUpload/UploadFileList/UploadFileList.tsx @@ -6,6 +6,7 @@ import { type IntlShape, defineMessages, useIntl } from "react-intl"; import { UiButton } from "../../@ui/UiButton/UiButton.js"; import { type IUploadActionCallbacks, type IUploadFileItem, UploadItemStatus } from "../types.js"; + import { b, e } from "./uploadFileListBem.js"; /** diff --git a/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx b/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx index 46d9d096b45..b952b372055 100644 --- a/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx +++ b/libs/sdk-ui-kit/src/FileUpload/UploadStatusDialog/UploadStatusDialog.tsx @@ -6,6 +6,7 @@ import { UiIcon } from "../../@ui/UiIcon/UiIcon.js"; import { Dialog } from "../../Dialog/Dialog.js"; import { useIdPrefixed } from "../../utils/useId.js"; import { UploadItemStatus } from "../types.js"; + import { b, e } from "./uploadStatusDialogBem.js"; /** diff --git a/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts b/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts index 767a86cd663..c8b8314255b 100644 --- a/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts +++ b/libs/sdk-ui-kit/src/FileUpload/hooks/useFileSelection.ts @@ -3,6 +3,7 @@ import { type Dispatch, type SetStateAction, useCallback, useState } from "react"; import { type IFileRejection, type IFileValidationResult, type IFileValidationRules } from "../types.js"; + import { validateFile } from "./validateFile.js"; /** diff --git a/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx b/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx index b572233c779..2df9a4966c3 100644 --- a/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx +++ b/libs/sdk-ui-kit/src/FlexDimensions/FlexDimensions.tsx @@ -14,6 +14,7 @@ import cx from "classnames"; import { pickBy, throttle } from "lodash-es"; import { elementRegion } from "../utils/domUtilities.js"; + import { type IFlexDimensionsProps, type IFlexDimensionsState } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Form/InputPure.tsx b/libs/sdk-ui-kit/src/Form/InputPure.tsx index 35dca572fa0..5f37ea36b5b 100644 --- a/libs/sdk-ui-kit/src/Form/InputPure.tsx +++ b/libs/sdk-ui-kit/src/Form/InputPure.tsx @@ -18,6 +18,7 @@ import { UiIconButton } from "../@ui/UiIconButton/UiIconButton.js"; import { type IAccessibilityConfigBase } from "../typings/accessibility.js"; import { type IDomNative, type IDomNativeProps } from "../typings/domNative.js"; import { ENUM_KEY_CODE } from "../typings/utilities.js"; + import { runAutofocus } from "./focus.js"; /** diff --git a/libs/sdk-ui-kit/src/Header/Header.tsx b/libs/sdk-ui-kit/src/Header/Header.tsx index bfc93cafd9a..cd5a4bceb6f 100644 --- a/libs/sdk-ui-kit/src/Header/Header.tsx +++ b/libs/sdk-ui-kit/src/Header/Header.tsx @@ -14,6 +14,7 @@ import { Icon } from "../Icon/Icon.js"; import { Overlay } from "../Overlay/Overlay.js"; import { Typography } from "../Typography/Typography.js"; import { removeFromDom } from "../utils/domUtilities.js"; + import { addCssToStylesheet } from "./addCssToStylesheet.js"; import { getItemActiveColor, diff --git a/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx b/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx index 13b7e543b96..215fb93ab11 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderAccount.tsx @@ -10,6 +10,7 @@ import { Button } from "../Button/Button.js"; import { Overlay } from "../Overlay/Overlay.js"; import { isActionKey } from "../utils/events.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { type IHeaderAccountProps, type IHeaderMenuItem } from "./typings.js"; export function HeaderAccount({ diff --git a/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx b/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx index 2fcec58b52d..5fa38277f89 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderDataMenu.tsx @@ -7,6 +7,7 @@ import { v4 as uuid } from "uuid"; import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { Button } from "../Button/Button.js"; + import { type IHeaderMenuItem } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx b/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx index 8434227184d..289e1a0603c 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderSearchButton.tsx @@ -8,6 +8,7 @@ import { UiFocusManager } from "../@ui/UiFocusManager/UiFocusManager.js"; import { Button } from "../Button/Button.js"; import { Overlay } from "../Overlay/Overlay.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { useHeaderSearch } from "./headerSearchContext.js"; export type HeaderSearchProps = PropsWithChildren<{ diff --git a/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx b/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx index d7f630ea435..2b51fe5ca38 100644 --- a/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx +++ b/libs/sdk-ui-kit/src/Header/HeaderWorkspacePicker.tsx @@ -9,6 +9,7 @@ import { UiSkeleton } from "../@ui/UiSkeleton/UiSkeleton.js"; import { Dropdown } from "../Dropdown/Dropdown.js"; import { DropdownList } from "../Dropdown/DropdownList.js"; import { NoData } from "../NoData/NoData.js"; + import { HeaderWorkspacePickerButton, type IHeaderWorkspacePickerButtonAccessibilityConfig, diff --git a/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts b/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts index c24329647ae..d1e3e382657 100644 --- a/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts +++ b/libs/sdk-ui-kit/src/Header/generateHeaderHelpMenuItems.ts @@ -5,6 +5,7 @@ import { defineMessage } from "react-intl"; import { type ISettings } from "@gooddata/sdk-model"; import { generateSupportUrl } from "../utils/featureFlags.js"; + import { type IHeaderMenuItem, type TUTMContent } from "./typings.js"; const HEADER_HELP_MENU_ITEM_ID_DOCUMENTATION = defineMessage({ id: "gs.header.documentation" }).id; diff --git a/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts b/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts index 531e354eb70..96174a80330 100644 --- a/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts +++ b/libs/sdk-ui-kit/src/Header/generateHeaderMenuItemsGroups.ts @@ -5,6 +5,7 @@ import { defineMessage } from "react-intl"; import { type ISettings, type IWorkspacePermissions } from "@gooddata/sdk-model"; import { isFreemiumEdition } from "../utils/featureFlags.js"; + import { type IHeaderMenuItem } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts b/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts index 41c4b1ec52b..72229a042f7 100644 --- a/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/activateHeaderMenuItems.test.ts @@ -5,6 +5,7 @@ import { beforeAll, describe, expect, it } from "vitest"; import { activateHeaderMenuItems } from "../activateHeaderMenuItems.js"; import { HEADER_ITEM_ID_KPIS_NEW, generateHeaderMenuItemsGroups } from "../generateHeaderMenuItemsGroups.js"; import { type IHeaderMenuItem } from "../typings.js"; + import { getAccountMenuFeatureFlagsMock, getWorkspacePermissionsMock } from "./mock.js"; describe("activateHeaderMenuItems", () => { diff --git a/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts b/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts index 8be52f98d5c..edfc7c6c7c1 100644 --- a/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/generateHeaderAccountMenuItems.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { generateHeaderAccountMenuItems } from "../generateHeaderAccountMenuItems.js"; + import { getWorkspacePermissionsMock } from "./mock.js"; describe("generateHeaderAccountMenuItems", () => { diff --git a/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts b/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts index da89d47550d..9ef4f54c7c7 100644 --- a/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/generateHeaderHelpMenuItems.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { generateHeaderHelpMenuItems } from "../generateHeaderHelpMenuItems.js"; + import { getHelpMenuFeatureFlagsMock } from "./mock.js"; describe("generateHeaderHelpMenuItems", () => { diff --git a/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts b/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts index e92ac7f8033..ea0cc575436 100644 --- a/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts +++ b/libs/sdk-ui-kit/src/Header/tests/generateHeaderMenuItemsGroups.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { generateHeaderMenuItemsGroups } from "../generateHeaderMenuItemsGroups.js"; + import { getAccountMenuFeatureFlagsMock, getWorkspacePermissionsMock } from "./mock.js"; describe("generateHeaderMenuItemsGroups", () => { diff --git a/libs/sdk-ui-kit/src/List/AsyncList.tsx b/libs/sdk-ui-kit/src/List/AsyncList.tsx index 5f999c2f2b1..96ee8404226 100644 --- a/libs/sdk-ui-kit/src/List/AsyncList.tsx +++ b/libs/sdk-ui-kit/src/List/AsyncList.tsx @@ -7,6 +7,7 @@ import { defaultImport } from "default-import"; import ReactContentLoader from "react-content-loader"; import { LoadingMask } from "../LoadingMask/LoadingMask.js"; + import { type IRenderListItemProps, List } from "./List.js"; // There are known compatibility issues between CommonJS (CJS) and ECMAScript modules (ESM). diff --git a/libs/sdk-ui-kit/src/List/InsightListItem.tsx b/libs/sdk-ui-kit/src/List/InsightListItem.tsx index 1b47b995201..b7f09617d84 100644 --- a/libs/sdk-ui-kit/src/List/InsightListItem.tsx +++ b/libs/sdk-ui-kit/src/List/InsightListItem.tsx @@ -13,6 +13,7 @@ import { Button } from "../Button/Button.js"; import { DESCRIPTION_PANEL_ARROW_OFFSETS, DescriptionPanel } from "../DescriptionPanel/DescriptionPanel.js"; import { ShortenedText } from "../ShortenedText/ShortenedText.js"; import { getDateTimeConfig } from "../utils/dateTimeConfig.js"; + import { InsightListItemDate } from "./InsightListItemDate.js"; const VISUALIZATION_TYPE_UNKNOWN = "unknown"; diff --git a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx index ddc5a998b73..0637856dd6c 100644 --- a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx +++ b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelect.tsx @@ -11,6 +11,7 @@ import { ErrorComponent } from "@gooddata/sdk-ui"; import { LoadingMask } from "../../LoadingMask/LoadingMask.js"; import { AsyncList } from "../AsyncList.js"; import { type IRenderListItemProps } from "../List.js"; + import { InvertableSelectAllCheckbox } from "./InvertableSelectAllCheckbox.js"; import { InvertableSelectItem } from "./InvertableSelectItem.js"; import { InvertableSelectNoResultsMatch } from "./InvertableSelectNoResultsMatch.js"; diff --git a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx index f8032c747b8..cfb9d92e23d 100644 --- a/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx +++ b/libs/sdk-ui-kit/src/List/InvertableSelect/InvertableSelectVirtualised.tsx @@ -31,6 +31,7 @@ import { } from "../../@ui/UiSearchResultsAnnouncement/UiSearchResultsAnnouncement.js"; import { LoadingMask } from "../../LoadingMask/LoadingMask.js"; import { isEnterKey, isEscapeKey, isSpaceKey } from "../../utils/events.js"; + import { type IInvertableSelectRenderErrorProps, type IInvertableSelectRenderLoadingProps, diff --git a/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx b/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx index ddac30c1420..0b2e857d01d 100644 --- a/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx +++ b/libs/sdk-ui-kit/src/List/LegacyInvertableList.tsx @@ -8,6 +8,7 @@ import { FormattedMessage, type WrappedComponentProps, injectIntl } from "react- import { Input } from "../Form/Input.js"; import { Message } from "../Messages/Message.js"; + import { guidFor } from "./guid.js"; import { LegacyMultiSelectListWithIntl } from "./LegacyMultiSelectList.js"; import { LegacyMultiSelectListItem } from "./LegacyMultiSelectListItem.js"; diff --git a/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx b/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx index cd968ca47c4..65dfb21816d 100644 --- a/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx +++ b/libs/sdk-ui-kit/src/List/LegacyMultiSelectList.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { Button } from "../Button/Button.js"; import { FlexDimensions } from "../FlexDimensions/FlexDimensions.js"; + import { guidFor } from "./guid.js"; import { LegacyList } from "./LegacyList.js"; import { LegacyListItem } from "./LegacyListItem.js"; diff --git a/libs/sdk-ui-kit/src/List/MultiSelectList.tsx b/libs/sdk-ui-kit/src/List/MultiSelectList.tsx index 9afc6704c47..2c4631edd8b 100644 --- a/libs/sdk-ui-kit/src/List/MultiSelectList.tsx +++ b/libs/sdk-ui-kit/src/List/MultiSelectList.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { Button } from "../Button/Button.js"; import { FlexDimensions } from "../FlexDimensions/FlexDimensions.js"; + import { List } from "./List.js"; /** diff --git a/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx b/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx index 63fb96acd35..adf66df9e5e 100644 --- a/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx +++ b/libs/sdk-ui-kit/src/List/tests/LegacyMultiSelectList.test.tsx @@ -7,6 +7,7 @@ import { describe, expect, it, vi } from "vitest"; import { withIntl } from "@gooddata/sdk-ui"; import { type ILegacyMultiSelectListProps, LegacyMultiSelectListWithIntl } from "../LegacyMultiSelectList.js"; + import { customMessages } from "./customDictionary.js"; describe("LegacyMultiSelectList", () => { diff --git a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx index b7683bc7ac9..7199fa04f40 100644 --- a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx +++ b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByClick.tsx @@ -4,6 +4,7 @@ import { type ReactElement, type ReactNode, useCallback, useRef } from "react"; import { MenuPosition } from "../positioning/MenuPosition.js"; import { OutsideClickHandler } from "../utils/OutsideClickHandler.js"; + import { type IMenuOpenedBySharedProps } from "./MenuOpenedBySharedProps.js"; export function MenuOpenedByClick(props: IMenuOpenedBySharedProps): ReactElement { diff --git a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx index b3f09215f11..371ec6b504c 100644 --- a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx +++ b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpenedByHover.tsx @@ -3,6 +3,7 @@ import { useCallback, useEffect, useRef } from "react"; import { MenuPosition } from "../positioning/MenuPosition.js"; + import { type IMenuOpenedBySharedProps } from "./MenuOpenedBySharedProps.js"; export function MenuOpenedByHover({ diff --git a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx index c6da547447e..4e9059cd46a 100644 --- a/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx +++ b/libs/sdk-ui-kit/src/Menu/menuOpener/MenuOpener.tsx @@ -3,6 +3,7 @@ import { type ElementType, type ReactNode, useMemo } from "react"; import { type IMenuPositionConfig, type OnOpenedChange, type OpenAction } from "../MenuSharedTypes.js"; + import { MenuOpenedByClick } from "./MenuOpenedByClick.js"; import { MenuOpenedByHover } from "./MenuOpenedByHover.js"; diff --git a/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx b/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx index 6dbbffc9a13..ba96a80dd4c 100644 --- a/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx +++ b/libs/sdk-ui-kit/src/Menu/positioning/MenuPosition.tsx @@ -4,6 +4,7 @@ import { Fragment, type ReactNode, useCallback, useMemo, useRef, useState } from import { type IMenuPositionConfig } from "../MenuSharedTypes.js"; import { RenderChildrenInPortal } from "../utils/RenderChildrenInPortal.js"; + import { PositionedMenuContent } from "./PositionedMenuContent.js"; export interface IMenuPositionProps extends IMenuPositionConfig { diff --git a/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx b/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx index f83618f886e..e7627bd795f 100644 --- a/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx +++ b/libs/sdk-ui-kit/src/Menu/positioning/PositionedMenuContent.tsx @@ -3,6 +3,7 @@ import { type ReactNode, useCallback, useEffect, useRef, useState } from "react"; import { type IMenuPositionConfig } from "../MenuSharedTypes.js"; + import { calculateMenuPosition, getElementDimensions, diff --git a/libs/sdk-ui-kit/src/Messages/Message.tsx b/libs/sdk-ui-kit/src/Messages/Message.tsx index a5807ec9d21..7b5460e160a 100644 --- a/libs/sdk-ui-kit/src/Messages/Message.tsx +++ b/libs/sdk-ui-kit/src/Messages/Message.tsx @@ -4,6 +4,7 @@ import cx from "classnames"; import { useIntl } from "react-intl"; import { Button } from "../Button/Button.js"; + import { type IMessageProps } from "./typings.js"; /** diff --git a/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx b/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx index 0e1d6fa9d5a..72537940ead 100644 --- a/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx +++ b/libs/sdk-ui-kit/src/Messages/toasts/NonContextToastsInterop.tsx @@ -5,6 +5,7 @@ import { useCallback, useEffect, useMemo, useRef } from "react"; import { useAutoupdateRef, usePrevious } from "@gooddata/sdk-ui"; import { type IMessage } from "../typings.js"; + import { ToastsCenterContext } from "./context.js"; import { ToastsCenterContextProvider } from "./ToastsCenter.js"; diff --git a/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx b/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx index 66db1c6efed..d2cb9a86fe1 100644 --- a/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx +++ b/libs/sdk-ui-kit/src/Messages/toasts/ToastsCenter.tsx @@ -6,6 +6,7 @@ import { useIntl } from "react-intl"; import { Overlay } from "../../Overlay/Overlay.js"; import { type IMessage } from "../typings.js"; + import { ToastsCenterContext, useToastsCenterValue } from "./context.js"; import { ToastMessageList } from "./ToastsCenterMessage.js"; diff --git a/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts b/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts index cb8fefed3ef..b9a502698eb 100644 --- a/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts +++ b/libs/sdk-ui-kit/src/Messages/toasts/useToastMessage.ts @@ -3,6 +3,7 @@ import { type MessageDescriptor, useIntl } from "react-intl"; import { type IMessage, type IMessageDefinition, type MessageType } from "../typings.js"; + import { ToastsCenterContext } from "./context.js"; /** diff --git a/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx b/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx index e104a0c0752..17ddfb75098 100644 --- a/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx +++ b/libs/sdk-ui-kit/src/Overlay/ErrorOverlay.tsx @@ -10,6 +10,7 @@ import { useTheme } from "@gooddata/sdk-ui-theme-provider"; import { Button } from "../Button/Button.js"; import { Icon } from "../Icon/Icon.js"; import { Typography } from "../Typography/Typography.js"; + import { Overlay } from "./Overlay.js"; /** diff --git a/libs/sdk-ui-kit/src/Overlay/Overlay.tsx b/libs/sdk-ui-kit/src/Overlay/Overlay.tsx index 14b350d58b5..db3417335bf 100644 --- a/libs/sdk-ui-kit/src/Overlay/Overlay.tsx +++ b/libs/sdk-ui-kit/src/Overlay/Overlay.tsx @@ -21,6 +21,7 @@ import { elementRegion, isFixedPosition } from "../utils/domUtilities.js"; import { GOODSTRAP_DRAG_EVENT } from "../utils/drag.js"; import { DEFAULT_ALIGN_POINTS, getOptimalAlignment, getOverlayStyles } from "../utils/overlay.js"; import { GOODSTRAP_SCROLLED_EVENT } from "../utils/scroll.js"; + import { OverlayContext } from "./OverlayContext.js"; import { type IOverlayProps, type IOverlayState } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx b/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx index e5ff421f2f9..b232743ebd3 100644 --- a/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx +++ b/libs/sdk-ui-kit/src/Overlay/ZoomAwareOverlay.tsx @@ -3,6 +3,7 @@ import { type ReactElement } from "react"; import { ZoomProvider } from "../ZoomContext/ZoomContext.js"; + import { Overlay } from "./Overlay.js"; import { type IOverlayProps } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx b/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx index 6b41763af94..98b9c7d9326 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx +++ b/libs/sdk-ui-kit/src/RecurrenceForm/DateTime.tsx @@ -17,6 +17,7 @@ import { Datepicker, parseDate } from "../Datepicker/Datepicker.js"; import { Timepicker } from "../Timepicker/Timepicker.js"; import { normalizeTime } from "../Timepicker/utils/timeUtilities.js"; import { useIdPrefixed } from "../utils/useId.js"; + import { DEFAULT_DROPDOWN_ZINDEX, TIME_ANCHOR } from "./constants.js"; interface IDateTimeProps { diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx b/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx index f3de8276e1d..45787eb9975 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx +++ b/libs/sdk-ui-kit/src/RecurrenceForm/Recurrence.tsx @@ -5,6 +5,7 @@ import cx from "classnames"; import { type WeekStart } from "@gooddata/sdk-model"; import { useIdPrefixed } from "../utils/useId.js"; + import { RECURRENCE_TYPES } from "./constants.js"; import { CronExpression } from "./CronExpression.js"; import { CronExpressionSuggestion } from "./CronExpressionSuggestion.js"; diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx b/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx index e15f6cc2d13..2ec62ed14b3 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx +++ b/libs/sdk-ui-kit/src/RecurrenceForm/RepeatTypeSelect.tsx @@ -9,6 +9,7 @@ import { UiListbox } from "../@ui/UiListbox/UiListbox.js"; import { Dropdown } from "../Dropdown/Dropdown.js"; import { DropdownButton } from "../Dropdown/DropdownButton.js"; import { SingleSelectListItem } from "../List/ListItem.js"; + import { DEFAULT_DROPDOWN_ALIGN_POINTS, DEFAULT_DROPDOWN_WIDTH, diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts b/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts index 6a968659c2a..e88401ccbfa 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts +++ b/libs/sdk-ui-kit/src/RecurrenceForm/utils/simpleRecurrenceTypeMappingFn.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { type WeekStart } from "@gooddata/sdk-model"; import { RECURRENCE_TYPES } from "../constants.js"; + import { simpleRecurrenceTypeMappingFn } from "./simpleRecurrenceTypeMappingFn.js"; describe("simpleRecurrenceTypeMappingFn", () => { diff --git a/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts b/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts index 6ef57e09873..360c48a9518 100644 --- a/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts +++ b/libs/sdk-ui-kit/src/RecurrenceForm/utils/utils.test.ts @@ -6,6 +6,7 @@ import { type WeekStart } from "@gooddata/sdk-model"; import { createIntlMock } from "@gooddata/sdk-ui"; import { RECURRENCE_TYPES } from "../constants.js"; + import { constructCronExpression, isLastOccurrenceOfWeekdayInMonth, diff --git a/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx b/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx index a13fc308a59..fae6cd435e9 100644 --- a/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx +++ b/libs/sdk-ui-kit/src/RichText/RichTextWithTooltip.tsx @@ -9,6 +9,7 @@ import { IntlWrapper } from "@gooddata/sdk-ui"; import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { type IRichTextProps, RichText } from "./RichText.js"; const alignPoints: IAlignPoint[] = [{ align: "bc tc" }, { align: "tc bc" }]; diff --git a/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts b/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts index 3a80f2c3283..4019e9e5e0e 100644 --- a/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts +++ b/libs/sdk-ui-kit/src/RichText/hooks/useEvaluatedReferences.ts @@ -5,6 +5,7 @@ import { useMemo } from "react"; import { type IExecutionConfig, type IFilter } from "@gooddata/sdk-model"; import { collectReferences } from "../helpers/references.js"; + import { useEvaluatedMetricsAndAttributes } from "./useEvaluatedMetricsAndAttributes.js"; export function useEvaluatedReferences( diff --git a/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts b/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts index 2a6f1cd556d..71504c309d6 100644 --- a/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts +++ b/libs/sdk-ui-kit/src/RichText/plugins/rehype-references.ts @@ -10,6 +10,7 @@ import { type ISeparators, type IdentifierRef, areObjRefsEqual } from "@gooddata import { createReference } from "../helpers/references.js"; import { type EvaluatedMetric } from "../hooks/useEvaluatedMetricsAndAttributes.js"; + import { type HtmlNode, REFERENCE_REGEX_MATCH, REFERENCE_REGEX_SPLIT, type TextNode } from "./types.js"; export function rehypeReferences(intl: IntlShape, metrics?: EvaluatedMetric[], separators?: ISeparators) { diff --git a/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx b/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx index 1556b5f07e0..b1a2432cfda 100644 --- a/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx +++ b/libs/sdk-ui-kit/src/ScrollablePanel/ScrollablePanel.tsx @@ -11,6 +11,7 @@ import { } from "react"; import { handleOnScrollEvent } from "../utils/scroll.js"; + import { ScrollContext, type isElementInvisibleType } from "./ScrollContext.js"; /** diff --git a/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx b/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx index 49abbb3d722..21ec18d34f7 100644 --- a/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx +++ b/libs/sdk-ui-kit/src/SettingItem/SettingItem.tsx @@ -7,6 +7,7 @@ import cx from "classnames"; import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { Button } from "../Button/Button.js"; + import { type ActionType, type ISettingItem } from "./typings.js"; const DEFAULT_ALIGN_POINT_TITLE_TOOLTIP = [{ align: "cr cl" }, { align: "bl tl" }, { align: "bc tc" }]; diff --git a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx index 6ddeafb58f5..db6dd834799 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingBody.tsx @@ -12,6 +12,7 @@ import { type IStylingPickerItem, type StylingPickerItemContent, } from "../../Dialog/StylingEditorDialog/StylingEditorDialog.js"; + import { StylingSettingList } from "./StylingSettingList.js"; import { StylingSettingListItem } from "./StylingSettingListItem.js"; diff --git a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx index 6da2d603953..e289aaf6926 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingList.tsx @@ -9,6 +9,7 @@ import { type IStylingPickerItem, type StylingPickerItemContent, } from "../../Dialog/StylingEditorDialog/StylingEditorDialog.js"; + import { StylingSettingListItem } from "./StylingSettingListItem.js"; interface IStylingSettingListProps { diff --git a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx index b83567a31b5..6d9b2f28105 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/StylingSettingWidget/StylingSettingWidget.tsx @@ -23,6 +23,7 @@ import { Header } from "../Header.js"; import { Separator } from "../Separator.js"; import { SettingWidget } from "../SettingWidget.js"; import { Title } from "../Title.js"; + import { StylingSettingBody } from "./StylingSettingBody.js"; /** diff --git a/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx b/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx index 029f3bacb16..31f08ba192d 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/TooltipIcon.tsx @@ -6,6 +6,7 @@ import { Bubble } from "../Bubble/Bubble.js"; import { BubbleHoverTrigger } from "../Bubble/BubbleHoverTrigger.js"; import { type ArrowOffset } from "../Bubble/typings.js"; import { type IAlignPoint } from "../typings/positioning.js"; + import { ALIGN_POINTS, ARROW_OFFSETS } from "./constants.js"; /** diff --git a/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx b/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx index fd846f59dd7..ce036070c48 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx +++ b/libs/sdk-ui-kit/src/SettingWidget/tests/StylingSettingWidget.test.tsx @@ -12,6 +12,7 @@ import { type IStylingSettingWidgetProps, StylingSettingWidget, } from "../StylingSettingWidget/StylingSettingWidget.js"; + import { customItemsMock, defaultItemMock } from "./mocks.js"; vi.mock("../../responsive/useMediaQuery.js", () => ({ diff --git a/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts b/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts index 95f3c1be988..d5d0086c480 100644 --- a/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts +++ b/libs/sdk-ui-kit/src/SettingWidget/tests/utils.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { getColorsPreviewFromTheme } from "../StylingSettingWidget/utils.js"; + import { customItemsMock, fullyDefinedThemeMock } from "./mocks.js"; describe("getColorsPreviewFromTheme", () => { diff --git a/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx b/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx index c985bfb1860..dd860e4b073 100644 --- a/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx +++ b/libs/sdk-ui-kit/src/Timepicker/Timepicker.tsx @@ -22,6 +22,7 @@ import { Dropdown } from "../Dropdown/Dropdown.js"; import { DropdownButton } from "../Dropdown/DropdownButton.js"; import { SingleSelectListItem } from "../List/ListItem.js"; import { type OverlayPositionType } from "../typings/overlay.js"; + import { type SelectedTime } from "./typings.js"; import { HOURS_IN_DAY, TIME_ANCHOR, formatTime, normalizeTime, updateTime } from "./utils/timeUtilities.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx index 44d7e88c3fc..878fa2367ce 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/MeasureNumberFormat.tsx @@ -16,6 +16,7 @@ import { useIntl } from "react-intl"; import { type ISeparators, IntlWrapper } from "@gooddata/sdk-ui"; import { type IPositioning } from "../typings/positioning.js"; + import { CustomFormatDialog } from "./customFormatDialog/CustomFormatDialog.js"; import { PresetsDropdown } from "./presetsDropdown/PresetsDropdown.js"; import { type IFormatPreset, type IFormatTemplate, type IToggleButtonProps, PresetType } from "./typings.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx index 47dc19e94e3..2ac9523e660 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/CustomFormatDialog.tsx @@ -11,6 +11,7 @@ import { Overlay } from "../../Overlay/Overlay.js"; import { type IPositioning, SnapPoint } from "../../typings/positioning.js"; import { positioningToAlignPoints } from "../../utils/positioning.js"; import { type IFormatTemplate } from "../typings.js"; + import { DocumentationLink } from "./DocumentationLink.js"; import { FormatInputWithIntl } from "./FormatInput.js"; import { Preview } from "./previewSection/Preview.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx index b40e9af2688..9fd7418342e 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/FormatInput.tsx @@ -9,6 +9,7 @@ import { type ISeparators } from "@gooddata/sdk-ui"; import { SyntaxHighlightingInput } from "../../syntaxHighlightingInput/SyntaxHighlightingInput.js"; import { type IFormatTemplate } from "../typings.js"; + import { FormatTemplatesDropdown } from "./formatTemplatesDropdown/FormatTemplatesDropdown.js"; type LanguageState = { diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx index 2a33aca535b..92e7f451ca7 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/formatTemplatesDropdown/FormatTemplatesDropdown.tsx @@ -6,6 +6,7 @@ import { type ISeparators } from "@gooddata/sdk-ui"; import { Overlay } from "../../../Overlay/Overlay.js"; import { type IFormatTemplate } from "../../typings.js"; + import { DropdownItem } from "./DropdownItem.js"; import { DropdownToggleButton } from "./DropdownToggleButton.js"; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx index 7f8c9448ce0..932ced02311 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/customFormatDialog/previewSection/Preview.tsx @@ -8,6 +8,7 @@ import { type ISeparators } from "@gooddata/sdk-ui"; import { InputWithNumberFormat } from "../../../Form/InputWithNumberFormat.js"; import { FormattedPreview } from "../shared/FormattedPreview.js"; + import { ExtendedPreview } from "./ExtendedPreview.js"; const DEFAULT_PREVIEW_VALUE = -1234.5678; diff --git a/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx b/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx index 23e1e62020a..4f9c90686ed 100644 --- a/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx +++ b/libs/sdk-ui-kit/src/measureNumberFormat/presetsDropdown/PresetsDropdown.tsx @@ -10,6 +10,7 @@ import { Overlay } from "../../Overlay/Overlay.js"; import { type IPositioning, SnapPoint } from "../../typings/positioning.js"; import { positioningToAlignPoints } from "../../utils/positioning.js"; import { type IFormatPreset } from "../typings.js"; + import { PresetsDropdownItem } from "./PresetsDropdownItem.js"; interface IMeasureNumberFormatDropdownOwnProps { diff --git a/libs/sdk-ui-kit/src/utils/overlay.ts b/libs/sdk-ui-kit/src/utils/overlay.ts index 20837fcee6b..5c16cdeb7e0 100644 --- a/libs/sdk-ui-kit/src/utils/overlay.ts +++ b/libs/sdk-ui-kit/src/utils/overlay.ts @@ -10,6 +10,7 @@ import { type IOptimalAlignment, } from "../typings/overlay.js"; import { type IAlignPoint, type IOffset } from "../typings/positioning.js"; + import { elementRegion } from "./domUtilities.js"; const ALIGN_RATIOS_X: Record = { diff --git a/libs/sdk-ui-loaders/package.json b/libs/sdk-ui-loaders/package.json index e19ede8228d..a8a321943e3 100644 --- a/libs/sdk-ui-loaders/package.json +++ b/libs/sdk-ui-loaders/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-loaders", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK Runtime Component Loaders", "license": "LicenseRef-LICENSE", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts index 155af313cd4..7e4ba885369 100644 --- a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts +++ b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/adaptiveComponentLoaders.ts @@ -10,6 +10,7 @@ import { type LoadedPlugin, type ModuleFederationIntegration, } from "../types.js"; + import { dynamicDashboardBeforeLoad, dynamicDashboardEngineLoader, diff --git a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts index 8bd47cac01f..1356f4ae984 100644 --- a/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts +++ b/libs/sdk-ui-loaders/src/dashboard/loadingStrategies/dynamicComponentLoaders.ts @@ -13,6 +13,7 @@ import { } from "@gooddata/sdk-ui-dashboard"; import { type LoadedPlugin, type ModuleFederationIntegration } from "../types.js"; + import { determineDashboardEngine } from "./determineDashboardEngine.js"; interface IEntryPoint { diff --git a/libs/sdk-ui-pivot/package.json b/libs/sdk-ui-pivot/package.json index 9db866a75a7..29d447bc4f0 100644 --- a/libs/sdk-ui-pivot/package.json +++ b/libs/sdk-ui-pivot/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pivot", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Pivot Table", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-pivot/src/impl/base/agUtils.ts b/libs/sdk-ui-pivot/src/impl/base/agUtils.ts index aee390d9359..276b5377b01 100644 --- a/libs/sdk-ui-pivot/src/impl/base/agUtils.ts +++ b/libs/sdk-ui-pivot/src/impl/base/agUtils.ts @@ -4,6 +4,7 @@ import { type ColDef, type Column, type ColumnResizedEvent } from "ag-grid-commu import { ColumnEventSourceType } from "../../columnWidths.js"; import { agColId } from "../structure/tableDescriptorTypes.js"; + import { COLUMN_SUBTOTAL, COLUMN_TOTAL, MEASURE_COLUMN } from "./constants.js"; /* diff --git a/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts b/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts index 31651beef6d..3af2a3e7387 100644 --- a/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts +++ b/libs/sdk-ui-pivot/src/impl/cell/cellClass.ts @@ -13,6 +13,7 @@ import { type IGridRow } from "../data/resultTypes.js"; import { isCellDrillable } from "../drilling/cellDrillabilityPredicate.js"; import { isRootCol, isSeriesCol } from "../structure/tableDescriptorTypes.js"; import { type TableFacade } from "../tableFacade.js"; + import { getCellClassNames, getColumnTotalOrSubTotalInfo } from "./cellUtils.js"; export type CellClassProvider = (cellClassParams: CellClassParams) => string; diff --git a/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts b/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts index 86ec728ed2f..38da611bfb9 100644 --- a/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts +++ b/libs/sdk-ui-pivot/src/impl/config/tableConfigAccessors.ts @@ -11,6 +11,7 @@ import { type MeasureGroupDimension, } from "../../publicTypes.js"; import { type ICorePivotTableState } from "../../tableState.js"; + import { checkIsColumnAutoresizeEnabled, checkIsGrowToFitEnabled, diff --git a/libs/sdk-ui-pivot/src/impl/data/dataSource.ts b/libs/sdk-ui-pivot/src/impl/data/dataSource.ts index 80522e13c43..a51a93fb438 100644 --- a/libs/sdk-ui-pivot/src/impl/data/dataSource.ts +++ b/libs/sdk-ui-pivot/src/impl/data/dataSource.ts @@ -22,6 +22,7 @@ import { type ColumnHeadersPosition } from "../../publicTypes.js"; import { COLS_PER_PAGE } from "../base/constants.js"; import { type OnExecutionTransformed, type OnTransformedExecutionFailed } from "../privateTypes.js"; import { TableDescriptor } from "../structure/tableDescriptor.js"; + import { areTotalsChanged, isInvalidGetRowsRequest } from "./dataSourceUtils.js"; import { createAgGridPage } from "./rowFactory.js"; import { GroupingProviderFactory, type IGroupingProvider } from "./rowGroupingProvider.js"; diff --git a/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts b/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts index eb17ba239c6..c65f3ee3238 100644 --- a/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts +++ b/libs/sdk-ui-pivot/src/impl/data/dataSourceUtils.ts @@ -6,6 +6,7 @@ import { isEqual } from "lodash-es"; import { type IDimension } from "@gooddata/sdk-model"; import { COLUMN_SUBTOTAL, COLUMN_TOTAL, ROW_SUBTOTAL, ROW_TOTAL } from "../base/constants.js"; + import { type IGridTotalsRow } from "./resultTypes.js"; export function areTotalsChanged(gridApi: GridApi | undefined, newTotals: IGridTotalsRow[] | null): boolean { diff --git a/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts b/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts index 9da2ed679fe..e440838dde8 100644 --- a/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/data/rowFactory.ts @@ -37,6 +37,7 @@ import { type ISliceMeasureCol, isSeriesCol, } from "../structure/tableDescriptorTypes.js"; + import { getSubtotalStyles } from "./dataSourceUtils.js"; import { type IAgGridPage, type IGridRow, type IGridTotalsRow } from "./resultTypes.js"; diff --git a/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts b/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts index 06a6b7ff9bc..dd57888562f 100644 --- a/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts +++ b/libs/sdk-ui-pivot/src/impl/data/tests/GroupingProvider.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { GroupingProviderFactory, type IGroupingProvider } from "../rowGroupingProvider.js"; + import { noAttributesTwoMeasures, oneAttributeTwoMeasures, diff --git a/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts b/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts index 72947eccb77..02dc89336ed 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/cellDrillabilityPredicate.ts @@ -10,6 +10,7 @@ import { import { type ColumnHeadersPosition } from "../../publicTypes.js"; import { type IGridRow } from "../data/resultTypes.js"; import { type AnyCol } from "../structure/tableDescriptorTypes.js"; + import { createDrillHeaders } from "./colDrillHeadersFactory.js"; export function isCellDrillable( diff --git a/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts b/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts index 32efa6cab6a..36d50a62667 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/drillIntersectionFactory.ts @@ -18,6 +18,7 @@ import { isSeriesCol, isSliceCol, } from "../structure/tableDescriptorTypes.js"; + import { createDataColLeafHeaders, createMixedValuesColHeaders, diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts index 3f2881f2d96..c1f152558ba 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/colDrillHeadersFactory.test.ts @@ -7,6 +7,7 @@ import { ReferenceData } from "@gooddata/reference-workspace"; import { type IGridRow } from "../../data/resultTypes.js"; import { type AnyCol } from "../../structure/tableDescriptorTypes.js"; import { createDrillHeaders } from "../colDrillHeadersFactory.js"; + import { TwoMeasuresWithTwoRowAndTwoColumnAttributesDescriptor, createTestRow } from "./drilling.fixture.js"; describe("createDrillHeaders", () => { diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts index f4f6462ef99..18a21ad54e9 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillIntersectionFactory.test.ts @@ -7,6 +7,7 @@ import { ReferenceData } from "@gooddata/reference-workspace"; import { type IGridRow } from "../../data/resultTypes.js"; import { type AnyCol } from "../../structure/tableDescriptorTypes.js"; import { createDrillIntersection } from "../drillIntersectionFactory.js"; + import { TwoMeasuresWithTwoRowAndTwoColumnAttributesDescriptor, createTestRow } from "./drilling.fixture.js"; describe("createDrillIntersection", () => { diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts index 5a6ce12e012..c2d64973363 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/drillTargets.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { getAvailableDrillTargets } from "../drillTargets.js"; + import { OneMeasureAndRepeatingRowAttributesOnDifferentPositions, TwoMeasuresWithTwoRowAndTwoColumnAttributes, diff --git a/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts b/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts index ff83e468c39..faba142d111 100644 --- a/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/drilling/tests/drilledRowFactory.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { ReferenceData } from "@gooddata/reference-workspace"; import { createDrilledRow } from "../drilledRowFactory.js"; + import { TwoMeasuresWithTwoRowAndTwoColumnAttributesDescriptor, createTestRow } from "./drilling.fixture.js"; describe("createDrilledRow", () => { diff --git a/libs/sdk-ui-pivot/src/impl/gridOptions.ts b/libs/sdk-ui-pivot/src/impl/gridOptions.ts index 9b5c35f9419..4ea2571660a 100644 --- a/libs/sdk-ui-pivot/src/impl/gridOptions.ts +++ b/libs/sdk-ui-pivot/src/impl/gridOptions.ts @@ -3,6 +3,7 @@ import { type FocusGridInnerElementParams } from "ag-grid-community"; import { type ICorePivotTableProps } from "../publicTypes.js"; + import { COLUMN_ATTRIBUTE_COLUMN, COLUMN_SUBTOTAL, diff --git a/libs/sdk-ui-pivot/src/impl/privateTypes.ts b/libs/sdk-ui-pivot/src/impl/privateTypes.ts index ceb1992d38a..ab42e2a51a4 100644 --- a/libs/sdk-ui-pivot/src/impl/privateTypes.ts +++ b/libs/sdk-ui-pivot/src/impl/privateTypes.ts @@ -33,6 +33,7 @@ import { type IMenu, type MeasureGroupDimension, } from "../publicTypes.js"; + import { type IScrollPosition } from "./stickyRowHandler.js"; export interface IMenuAggregationClickConfig { diff --git a/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts b/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts index ede8e8fdd38..ceff91a5ab3 100644 --- a/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts +++ b/libs/sdk-ui-pivot/src/impl/resizing/tests/columnSizing.test.ts @@ -27,6 +27,7 @@ import { getMaxWidthCached, getUpdatedColumnDefs, } from "../columnSizing.js"; + import { ColumnOnlyResultDescriptor, SingleMeasureWithRowAttributeDescriptor, diff --git a/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts b/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts index 21bad778c6b..15dad51f662 100644 --- a/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts +++ b/libs/sdk-ui-pivot/src/impl/resizing/tests/updateColDefs.test.ts @@ -14,6 +14,7 @@ import { } from "../../../columnWidths.js"; import { TableDescriptor } from "../../structure/tableDescriptor.js"; import { MANUALLY_SIZED_MAX_WIDTH, updateColumnDefinitionsWithWidths } from "../columnSizing.js"; + import { TwoMeasuresWithRowAttribute, TwoMeasuresWithTwoRowAndTwoColumnAttributes, diff --git a/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts b/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts index 99f383df6af..a49c704417e 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colDefFactory.ts @@ -20,6 +20,7 @@ import { ROW_ATTRIBUTE_COLUMN, ROW_MEASURE_COLUMN, } from "../base/constants.js"; + import { attributeSortMatcher, measureSortMatcher } from "./colSortItemMatching.js"; import { ColumnTotalGroupHeader } from "./headers/ColumnTotalGroupHeader.js"; import { diff --git a/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts b/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts index cf2edb8eb73..7a55799b8ba 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colDefHeaderClass.ts @@ -8,6 +8,7 @@ import { isResultTotalHeader } from "@gooddata/sdk-model"; import { type ICorePivotTableProps } from "../../publicTypes.js"; import { COLUMN_ATTRIBUTE_COLUMN, COLUMN_SUBTOTAL, COLUMN_TOTAL } from "../base/constants.js"; import { type TableFacade } from "../tableFacade.js"; + import { type TableDescriptor } from "./tableDescriptor.js"; import { type AnyCol, diff --git a/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts b/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts index c44efb4ef6f..128a5de21e3 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colDefTemplates.ts @@ -12,6 +12,7 @@ import { cellClassFactory } from "../cell/cellClass.js"; import { createCellRenderer } from "../cell/cellRenderer.js"; import { getMeasureCellFormattedValue, getMeasureCellStyle } from "../cell/cellUtils.js"; import { type TableFacade } from "../tableFacade.js"; + import { headerClassFactory } from "./colDefHeaderClass.js"; import { ColumnTotalHeader } from "./headers/ColumnTotalHeader.js"; import { MixedValuesColumnHeader } from "./headers/MixedValuesColumnHeader.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts b/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts index feb0a6344f9..b9ab6d0aeea 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colLocatorFactory.ts @@ -17,6 +17,7 @@ import { type IMeasureColumnLocator, type ITotalColumnLocator, } from "../../columnWidths.js"; + import { type LeafDataCol, type TransposedMeasureDataCol, isScopeCol } from "./tableDescriptorTypes.js"; function createAttributeLocator( diff --git a/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts b/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts index d12c93f60c1..ea043268688 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/colLocatorMatching.ts @@ -10,6 +10,7 @@ import { isMeasureColumnLocator, isTotalColumnLocator, } from "../../columnWidths.js"; + import { colMeasureLocalId } from "./colAccessors.js"; import { type DataCol, diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx index 946b1640159..6eaed59e8d6 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsMenu.tsx @@ -37,6 +37,7 @@ import { isSliceCol, isSliceMeasureCol, } from "../tableDescriptorTypes.js"; + import { getAttributeDescriptorsLocalId, getTotalsForAttributeHeader, diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx index 9e43a34e246..7a5d2d7e0ca 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenu.tsx @@ -10,6 +10,7 @@ import { ItemsWrapper, SubMenu } from "@gooddata/sdk-ui-kit"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; import { tableHasColumnAttributes, tableHasRowAttributes } from "../../utils.js"; + import { type IColumnTotal } from "./aggregationsMenuTypes.js"; import { AggregationsSubMenuItems } from "./AggregationsSubMenuItems.js"; import { ColumnsHeaderIcon } from "./subMenuIcons/ColumnsIcon.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx index 0212eca16ca..6a01fb982ca 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/AggregationsSubMenuItems.tsx @@ -14,6 +14,7 @@ import { import { Header, Item } from "@gooddata/sdk-ui-kit"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; + import { isTotalEnabledForSubMenuAttribute } from "./aggregationsMenuHelper.js"; import { type IColumnTotal } from "./aggregationsMenuTypes.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx index eed1d3cc186..8750d41bbf9 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnGroupHeader.tsx @@ -4,6 +4,7 @@ import { type IHeaderGroupParams } from "ag-grid-community"; import { type IMenu } from "../../../publicTypes.js"; import { agColId } from "../tableDescriptorTypes.js"; + import { ALIGN_LEFT, HeaderCell, type ICommonHeaderParams } from "./HeaderCell.js"; export interface IProps extends ICommonHeaderParams, IHeaderGroupParams { diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx index d4dfff52e6f..cd2a222168c 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnHeader.tsx @@ -16,6 +16,7 @@ import { isSliceCol, isSliceMeasureCol, } from "../tableDescriptorTypes.js"; + import { ALIGN_LEFT, ALIGN_RIGHT, HeaderCell, type ICommonHeaderParams } from "./HeaderCell.js"; export interface IColumnHeaderProps extends ICommonHeaderParams, IHeaderParams { diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx index 132be62d90a..9b0a5d515c6 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/ColumnTotalHeader.tsx @@ -6,6 +6,7 @@ import { type IHeaderParams } from "ag-grid-community"; import { type IMenu } from "../../../publicTypes.js"; import { isEmptyScopeCol, isSliceCol } from "../tableDescriptorTypes.js"; + import { ALIGN_LEFT, ALIGN_RIGHT, HeaderCell, type ICommonHeaderParams } from "./HeaderCell.js"; export interface IColumnHeaderProps extends ICommonHeaderParams, IHeaderParams { diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx b/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx index 3d2ba9ff840..798a0431140 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/HeaderCell.tsx @@ -12,6 +12,7 @@ import { type IMenu } from "../../../publicTypes.js"; import { AVAILABLE_TOTALS, HEADER_LABEL_CLASS } from "../../base/constants.js"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; import { type TableDescriptor } from "../tableDescriptor.js"; + import { AggregationsMenu } from "./AggregationsMenu.js"; export type AlignPositions = "left" | "right" | "center"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts b/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts index ab6eb83d6e4..8b2b504b1c1 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/headers/aggregationsMenuHelper.ts @@ -11,6 +11,7 @@ import { import { AVAILABLE_TOTALS } from "../../base/constants.js"; import { type IMenuAggregationClickConfig } from "../../privateTypes.js"; + import { type IColumnTotal } from "./aggregationsMenuTypes.js"; function getTotalsForMeasureAndType(totals: ITotal[], type: TotalType, measureLocalIdentifier: string) { diff --git a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts index dd0e2b7be53..e86ca35b4fc 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptor.ts @@ -20,6 +20,7 @@ import { type ISliceMeasureColumnWidthItem, } from "../../columnWidths.js"; import { type IPivotTableConfig } from "../../publicTypes.js"; + import { searchForLocatorMatch, searchForTransposedLocatorMatch } from "./colLocatorMatching.js"; import { createSortItemForCol } from "./colSortItemFactory.js"; import { createHeadersAndColDefs } from "./tableDescriptorFactory.js"; diff --git a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts index fc16b5e1126..40795fd7b2c 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tableDescriptorFactory.ts @@ -15,6 +15,7 @@ import { type DataViewFacade, getTotalInfo } from "@gooddata/sdk-ui"; import { type IPivotTableConfig } from "../../publicTypes.js"; import { getDataViewSeriesDescriptors } from "../utils.js"; + import { createColDefsFromTableDescriptor } from "./colDefFactory.js"; import { type AnyCol, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts index 210d2f4db6b..3b841c0ba77 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorFactory.test.ts @@ -5,6 +5,7 @@ import { describe, expect, it } from "vitest"; import { createColumnLocator, createTransposedColumnLocator } from "../colLocatorFactory.js"; import { TableDescriptor } from "../tableDescriptor.js"; import { type IScopeCol } from "../tableDescriptorTypes.js"; + import { MultipleMeasuresAndNoColumnsWithMetricsInRows, SingleMeasureWithRowAttribute, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts index d554e6c7fa1..b74a3ec965e 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/columnLocatorMatching.test.ts @@ -12,6 +12,7 @@ import { } from "../../../columnWidths.js"; import { searchForLocatorMatch, searchForTransposedLocatorMatch } from "../colLocatorMatching.js"; import { createHeadersAndColDefs } from "../tableDescriptorFactory.js"; + import { MultipleMeasuresAndNoColumnsWithMetricsInRows, SingleColumn, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts index bde6e05192a..899ed108b1a 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/columnSortItemFactory.test.ts @@ -4,6 +4,7 @@ import { describe, expect, it } from "vitest"; import { createSortItemForCol } from "../colSortItemFactory.js"; import { TableDescriptor } from "../tableDescriptor.js"; + import { SingleMeasureWithColumnAttribute, SingleMeasureWithRowAttribute, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts index 08278a56911..b19a0c6733b 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptor.test.ts @@ -7,6 +7,7 @@ import { ReferenceMd } from "@gooddata/reference-workspace"; import { newWidthForAttributeColumn } from "../../../columnWidths.js"; import { TableDescriptor } from "../tableDescriptor.js"; import { type IScopeCol, type ISeriesCol } from "../tableDescriptorTypes.js"; + import { SingleAttribute, SingleColumn, diff --git a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts index e3e9a9ecf50..3320fe11fa5 100644 --- a/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts +++ b/libs/sdk-ui-pivot/src/impl/structure/tests/tableDescriptorFactory.test.ts @@ -6,6 +6,7 @@ import { describe, expect, it } from "vitest"; import { type DataViewFacade } from "@gooddata/sdk-ui"; import { createHeadersAndColDefs } from "../tableDescriptorFactory.js"; + import { SingleAttribute, SingleColumn, diff --git a/libs/sdk-ui-pivot/src/impl/tableFacade.ts b/libs/sdk-ui-pivot/src/impl/tableFacade.ts index 41984b6b37c..06801ee88f6 100644 --- a/libs/sdk-ui-pivot/src/impl/tableFacade.ts +++ b/libs/sdk-ui-pivot/src/impl/tableFacade.ts @@ -16,6 +16,7 @@ import { import { type IResizedColumns, UIClick } from "../columnWidths.js"; import { type ICorePivotTableProps, type IPivotTableConfig } from "../publicTypes.js"; + import { getHeaderHeight } from "./base/agApiWrapper.js"; import { setColumnMaxWidth, setColumnMaxWidthIf } from "./base/agColumnWrapper.js"; import { agColIds, isMeasureColumn, isMeasureOrAnyColumnTotal } from "./base/agUtils.js"; diff --git a/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts b/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts index e201cb26e4d..59ce178a956 100644 --- a/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts +++ b/libs/sdk-ui-pivot/src/impl/tableFacadeInitializer.ts @@ -12,6 +12,7 @@ import { import { DataViewFacade, convertError } from "@gooddata/sdk-ui"; import { type ICorePivotTableProps } from "../publicTypes.js"; + import { COLS_PER_PAGE } from "./base/constants.js"; import { getAvailableDrillTargets } from "./drilling/drillTargets.js"; import { diff --git a/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx b/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx index db0fea91b7e..aead44b5d5b 100644 --- a/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx +++ b/libs/sdk-ui-pivot/src/next/components/AvoidResizeFlickering.tsx @@ -4,6 +4,7 @@ import { type CSSProperties, type ReactNode, useMemo } from "react"; import { useTableReady } from "../context/TableReadyContext.js"; import { useInitialAutoResizeVisibility } from "../hooks/resizing/useInitialAutoResizeVisibility.js"; + import { LoadingComponent } from "./LoadingComponent.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx b/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx index 5ae90ee7ca3..e7550be3e0f 100644 --- a/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Cell/AttributeCell.tsx @@ -19,6 +19,7 @@ import { getPivotCellTestIdPropsFromCellTypes, } from "../../testing/dataTestIdGenerators.js"; import { type CellTypes } from "../../types/cellRendering.js"; + import { ImageCell } from "./ImageCell.js"; const IMAGE_LABEL_TYPE: AttributeDisplayFormType = "GDC.image"; diff --git a/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx index 9d5d023f395..b22534c6941 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/AttributeHeader.tsx @@ -13,6 +13,7 @@ import { getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js"; import { type AgGridColumnDef, type AgGridHeaderParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { SortIndicator } from "./SortIndicator.js"; diff --git a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx index f1af457de68..6e289f3c485 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupHeader.tsx @@ -6,6 +6,7 @@ import { e } from "../../features/styling/bem.js"; import { useHeaderCellAriaLabel } from "../../hooks/header/useHeaderCellAriaLabel.js"; import { useHeaderMenu } from "../../hooks/header/useHeaderMenu.js"; import { type AgGridHeaderParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx index 7fa4485be94..d07e2de9579 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/EmptyMeasureGroupValueHeader.tsx @@ -4,6 +4,7 @@ import { useState } from "react"; import { e } from "../../features/styling/bem.js"; import { useHeaderMenu } from "../../hooks/header/useHeaderMenu.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx index 19c02d9d5c8..ee7a5c706b5 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/HeaderCell/HeaderMenu.tsx @@ -22,6 +22,7 @@ import { type ISortingMenuItem, type ITextWrappingMenuItem, } from "../../../types/menu.js"; + import { type AggregationsMenuItemData, HeaderInteractiveItem, diff --git a/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx index dd3f1ecfa1c..042d02216cf 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/MeasureGroupHeader.tsx @@ -15,6 +15,7 @@ import { type AgGridColumnDef, type AgGridHeaderParams, } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { getColumnMeasureIdentifier, diff --git a/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx index 460c200178e..bfd4fcc6239 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/MeasureHeader.tsx @@ -17,6 +17,7 @@ import { getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js"; import { type AgGridColumnDef, type AgGridHeaderParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { SortIndicator } from "./SortIndicator.js"; import { diff --git a/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx b/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx index a6e82d16d9f..6a7651936da 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx +++ b/libs/sdk-ui-pivot/src/next/components/Header/PivotGroupHeader.tsx @@ -19,6 +19,7 @@ import { getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js"; import { type AgGridColumnGroupDef, type AgGridHeaderGroupParams } from "../../types/agGrid.js"; + import { HeaderMenu } from "./HeaderCell/HeaderMenu.js"; import { getColumnScope, getPivotAttributeDescriptors, isValueColumnDef } from "./utils/common.js"; diff --git a/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts b/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts index b9beee81740..1fc972a1c8e 100644 --- a/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts +++ b/libs/sdk-ui-pivot/src/next/components/Header/utils/constructAggregationsMenuItems.ts @@ -18,6 +18,7 @@ import { type IAggregationsSubMenuItem, type IMenu, } from "../../../types/menu.js"; + import { getPreviousAttributeHeaderName } from "./common.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx b/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx index dc5588605d1..9eaa5b07c54 100644 --- a/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx +++ b/libs/sdk-ui-pivot/src/next/context/ColumnDefsContext.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { useInitialProp } from "@gooddata/sdk-ui/internal"; import { dataViewToColDefs } from "../features/data/dataViewToColDefs.js"; + import { useDrillableItemsRef } from "./DrillableItemsRefContext.js"; import { useInitialExecution } from "./InitialExecutionContext.js"; import { usePivotTableProps } from "./PivotTablePropsContext.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts b/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts index 23d823459ce..732590f8d55 100644 --- a/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/aggregations/applyTotalsToExecutionDef.ts @@ -4,6 +4,7 @@ import { type IAttribute, type ITotal, bucketSetTotals } from "@gooddata/sdk-mod import { addTotalsToDimension } from "../data/executionDefinition/dimensions.js"; import { type IPivotTableExecutionDefinition } from "../data/executionDefinition/types.js"; + import { orderTotals } from "./ordering.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts b/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts index e63ada3af28..985d4cf6b3f 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/attributeColDef.ts @@ -7,6 +7,7 @@ import { type ITableAttributeColumnDefinition } from "@gooddata/sdk-ui"; import { AttributeCell } from "../../components/Cell/AttributeCell.js"; import { type AgGridColumnDef } from "../../types/agGrid.js"; import { HEADER_CELL_CLASSNAME } from "../styling/bem.js"; + import { extractIntlFormattedValue } from "./shared.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/columns/colId.ts b/libs/sdk-ui-pivot/src/next/features/columns/colId.ts index 8b6675b5549..677704230de 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/colId.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/colId.ts @@ -4,6 +4,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { AG_GRID_PIVOT_RESULT_FIELD_SEPARATOR } from "../../constants/agGridDefaultProps.js"; import { type ColumnHeadersPosition } from "../../types/transposition.js"; + import { columnDefinitionToColDefIdentifiers } from "./colDefIdentifiers.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts b/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts index b93aeb42168..6320649c133 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/createColDef.ts @@ -11,6 +11,7 @@ import { createAttributeHeaderColDef } from "../transposition/attributeHeaderCol import { createMeasureGroupHeaderColDef } from "../transposition/measureGroupHeaderColDef.js"; import { createMeasureGroupValueColDef } from "../transposition/measureGroupValueColDef.js"; import { createTotalHeaderColDef } from "../transposition/totalHeaderColDef.js"; + import { createAttributeColDef } from "./attributeColDef.js"; import { columnDefinitionToColId } from "./colId.js"; import { createMeasureColDef } from "./measureColDef.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts b/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts index de5cb6b3b11..17a2b94f6c1 100644 --- a/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/columns/measureColDef.ts @@ -11,6 +11,7 @@ import { MetricCell } from "../../components/Cell/MetricCell.js"; import { type AgGridColumnDef } from "../../types/agGrid.js"; import { getMeasureCellStyle } from "../styling/cell.js"; import { getHeaderCellClassName } from "../styling/headerCell.js"; + import { extractFormattedValue } from "./shared.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts b/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts index 43bbaf2ff32..02bb840bf74 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/createExecutionDef.ts @@ -13,6 +13,7 @@ import { type MeasureGroupDimension } from "../../types/transposition.js"; import { applyTotalsToExecutionDef } from "../aggregations/applyTotalsToExecutionDef.js"; import { applySortByToExecutionDef } from "../sorting/applySortByToExecutionDef.js"; import { applyTranspositionToExecutionDef } from "../transposition/applyTranspositionToExecutionDef.js"; + import { applyAttributesToExecutionDef } from "./executionDefinition/attributes.js"; import { DEFAULT_PIVOT_TABLE_EXECUTION_DEFINITION } from "./executionDefinition/constants.js"; import { applyExecConfigToExecutionDef } from "./executionDefinition/execConfig.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts b/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts index cb502e4b4b9..63b65db94ae 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/createServerSideDataSource.ts @@ -29,6 +29,7 @@ import { type ColumnHeadersPosition } from "../../types/transposition.js"; import { handleExportReady } from "../exports/exports.js"; import { getSortModel } from "../sorting/agGridSortingApi.js"; import { sortModelToSortItems } from "../sorting/sortModelToSortItems.js"; + import { agGridSetLoading } from "./agGridLoadingApi.js"; import { dataViewToRowData } from "./dataViewToRowData.js"; import { loadDataView } from "./loadDataView.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts b/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts index e6baab770df..b5f7dc037a3 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/dataViewToColDefs.ts @@ -17,6 +17,7 @@ import { columnDefinitionToColId } from "../columns/colId.js"; import { createColDef } from "../columns/createColDef.js"; import { columnDefsToPivotGroups } from "../pivoting/columnDefsToPivotGroups.js"; import { applyTextWrappingToGroupDef } from "../textWrapping/applyTextWrappingToGroupDef.js"; + import { getTableData } from "./valueFormatter.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts b/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts index 9a95f64833d..103d4173a08 100644 --- a/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts +++ b/libs/sdk-ui-pivot/src/next/features/data/dataViewToRowData.ts @@ -7,6 +7,7 @@ import { type GrandTotalsPosition } from "../../types/grandTotalsPosition.js"; import { type AgGridRowData } from "../../types/internal.js"; import { type ColumnHeadersPosition } from "../../types/transposition.js"; import { columnDefinitionToColId } from "../columns/colId.js"; + import { getTableData } from "./valueFormatter.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts b/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts index e4b7152ba1f..32102074013 100644 --- a/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts +++ b/libs/sdk-ui-pivot/src/next/features/drilling/intersection.ts @@ -13,6 +13,7 @@ import { isAgGridColumnGroupDef, } from "../../types/agGrid.js"; import { type AgGridRowData } from "../../types/internal.js"; + import { extractAllColumnMappingHeaders, extractMappingHeadersUpToPosition, diff --git a/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts b/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts index 1f8813b618b..00e36565289 100644 --- a/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts +++ b/libs/sdk-ui-pivot/src/next/features/drilling/isDrillable.ts @@ -11,6 +11,7 @@ import { import { type AgGridColumnDef, type AgGridColumnGroupDef } from "../../types/agGrid.js"; import { type AgGridRowData } from "../../types/internal.js"; + import { extractAllColumnMappingHeaders, extractAllRowMeasureMappingHeaders, diff --git a/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts b/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts index 087f24820b5..f2d38e5943b 100644 --- a/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts +++ b/libs/sdk-ui-pivot/src/next/features/pivoting/columnDefsToPivotGroups.ts @@ -15,6 +15,7 @@ import { type ColumnHeadersPosition } from "../../types/transposition.js"; import { columnDefinitionToColDefIdentifiers } from "../columns/colDefIdentifiers.js"; import { columnDefinitionToColId } from "../columns/colId.js"; import { getHeaderCellClassName } from "../styling/headerCell.js"; + import { columnDefinitionToHeaderNames } from "./columnDefinitionToHeaderNames.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts b/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts index 3359db07684..d198071bb49 100644 --- a/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/resizing/applyColumnWidthsToColDef.ts @@ -2,6 +2,7 @@ import { type AgGridColumnDef } from "../../types/agGrid.js"; import { type ColumnWidthItem } from "../../types/resizing.js"; + import { getColumnWidthItemForColumnDefinition } from "./getColumnWidthItemForColumnDefinition.js"; import { getColumnWidthItemValue } from "./getColumnWidthItemValue.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts index a0268efd523..353ce98e303 100644 --- a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts +++ b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.test.ts @@ -13,6 +13,7 @@ import { type ITableColumnDefinition, type ITableValueColumnDefinition } from "@ import { newAttributeColumnLocator } from "../../types/locators.js"; import { newWidthForAllColumnsForMeasure, setNewWidthForSelectedColumns } from "../../types/resizing.js"; + import { getColumnWidthItemForColumnDefinition } from "./getColumnWidthItemForColumnDefinition.js"; const ATTRIBUTE_IDENTIFIER = "region"; diff --git a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts index 0aeaf46a0a3..4f5b660f484 100644 --- a/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts +++ b/libs/sdk-ui-pivot/src/next/features/resizing/getColumnWidthItemForColumnDefinition.ts @@ -3,6 +3,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { type ColumnWidthItem } from "../../types/resizing.js"; + import { createColumnWidthItemForColumnDefinition, createWeakColumnWidthItemForColumnDefinition, diff --git a/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts b/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts index 6c0a691bdd0..f52eb387298 100644 --- a/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/sorting/applySortByToColDef.ts @@ -3,6 +3,7 @@ import { type ISortItem, sortDirection } from "@gooddata/sdk-model"; import { type AgGridColumnDef } from "../../types/agGrid.js"; + import { getSortForColumnDefinition } from "./getSortForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts b/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts index 16d8cdfe1f3..ec239f4a003 100644 --- a/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts +++ b/libs/sdk-ui-pivot/src/next/features/sorting/sortItemsToSortModel.ts @@ -7,6 +7,7 @@ import { type ISortItem, sortDirection } from "@gooddata/sdk-model"; import { type ColumnHeadersPosition } from "../../../publicTypes.js"; import { type ITableColumnDefinitionByColId } from "../../types/internal.js"; import { columnDefinitionToColId } from "../columns/colId.js"; + import { getSortForColumnDefinition } from "./getSortForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts b/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts index 17fe39fb341..e959c12e8b6 100644 --- a/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts +++ b/libs/sdk-ui-pivot/src/next/features/sorting/sortModelToSortItems.ts @@ -5,6 +5,7 @@ import { type SortModelItem } from "ag-grid-enterprise"; import { type ISortItem } from "@gooddata/sdk-model"; import { type ITableColumnDefinitionByColId } from "../../types/internal.js"; + import { createSortForColumnDefinition } from "./createSortForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/styling/cell.ts b/libs/sdk-ui-pivot/src/next/features/styling/cell.ts index adf6001ebe0..4868ce01aa5 100644 --- a/libs/sdk-ui-pivot/src/next/features/styling/cell.ts +++ b/libs/sdk-ui-pivot/src/next/features/styling/cell.ts @@ -36,6 +36,7 @@ import { type CellTypes } from "../../types/cellRendering.js"; import { type AgGridRowData } from "../../types/internal.js"; import { extractAttributeUri, getAttributeColIds, parentsMatch } from "../columns/shared.js"; import { isCellDrillable } from "../drilling/isDrillable.js"; + import { CELL_CLASSNAME, e } from "./bem.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts b/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts index 68c34e74c97..18006c604da 100644 --- a/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts +++ b/libs/sdk-ui-pivot/src/next/features/styling/headerCell.ts @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui"; import { type AgGridRowData } from "../../types/internal.js"; + import { e } from "./bem.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts index f973e3b86fd..18f727bdd94 100644 --- a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToColDef.ts @@ -2,6 +2,7 @@ import { type AgGridColumnDef } from "../../types/agGrid.js"; import { type ITextWrapping } from "../../types/textWrapping.js"; + import { allowCellWrappingByColumnDefinition } from "./allowCellWrappingByColumnDefinition.js"; import { getColumnTextWrappingItemForColumnDefinition } from "./getColumnTextWrappingItemForColumnDefinition.js"; import { getPivotGroupTextWrappingItemForColumnDefinition } from "./getPivotGroupTextWrappingItemForColumnDefinition.js"; diff --git a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts index 3ca9931cec3..c0144254bbe 100644 --- a/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts +++ b/libs/sdk-ui-pivot/src/next/features/textWrapping/applyTextWrappingToGroupDef.ts @@ -2,6 +2,7 @@ import { type AgGridColumnGroupDef } from "../../types/agGrid.js"; import { type ITextWrapping } from "../../types/textWrapping.js"; + import { getPivotGroupTextWrappingItemForColumnDefinition } from "./getPivotGroupTextWrappingItemForColumnDefinition.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts b/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts index 07d9b7b3a26..f17a84d0656 100644 --- a/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts +++ b/libs/sdk-ui-pivot/src/next/features/textWrapping/getColumnTextWrappingItemForColumnDefinition.ts @@ -3,6 +3,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { type IColumnTextWrappingItem } from "../../types/textWrapping.js"; + import { createColumnTextWrappingItemForColumnDefinition } from "./createColumnTextWrappingItemForColumnDefinition.js"; import { isColumnTextWrappingItemMatch } from "./isColumnTextWrappingItemMatch.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts b/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts index e967abff664..a4283c35f2d 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/header/useHeaderMenu.ts @@ -5,6 +5,7 @@ import { type MouseEvent } from "react"; import { type IAttributeDescriptor } from "@gooddata/sdk-model"; import { type AgGridHeaderGroupParams, type AgGridHeaderParams } from "../../types/agGrid.js"; + import { useHeaderDrilling } from "./useHeaderDrilling.js"; import { useHeaderMenuAggregations } from "./useHeaderMenuAggregations.js"; import { useHeaderMenuSorting } from "./useHeaderMenuSorting.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts b/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts index 3e56679e693..6cb34a8b24f 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/resizing/useColumnSizingProps.ts @@ -5,6 +5,7 @@ import { useCallback } from "react"; import { UnexpectedSdkError, useDebounce } from "@gooddata/sdk-ui"; import { type AgGridOnColumnResized, type AgGridProps } from "../../types/agGrid.js"; + import { useColumnSizingDefault } from "./useColumnSizingDefault.js"; import { useColumnSizingForAutoResize } from "./useColumnSizingForAutoResize.js"; import { useColumnSizingForFullHorizontalSpace } from "./useColumnSizingForFullHorizontalSpace.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts b/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts index d6df206660e..ef3e887b88a 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/resizing/useManualResize.test.ts @@ -7,6 +7,7 @@ import { type ITableColumnDefinition } from "@gooddata/sdk-ui"; import { type AgGridOnColumnResized } from "../../types/agGrid.js"; import { type ColumnWidthItem, newWidthForAttributeColumn } from "../../types/resizing.js"; + import { useManualResize } from "./useManualResize.js"; const { usePivotTablePropsMock } = vi.hoisted(() => ({ diff --git a/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts b/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts index b8f1f5fe2b6..9c0a5c7e19d 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/textWrapping/useUpdateTextWrapping.ts @@ -8,6 +8,7 @@ import { type AgGridApi, type AgGridColumnDef } from "../../types/agGrid.js"; import { type ITextWrapping } from "../../types/textWrapping.js"; import { useGetAgGridColumns } from "../columns/useGetAgGridColumns.js"; import { useUpdateAgGridColumnDefs } from "../columns/useUpdateAgGridColumnDefs.js"; + import { useUpdateDefaultTextWrapping } from "./useUpdateDefaultTextWrapping.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts b/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts index 2977dd7362f..1930bedb120 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useAfterRenderCallback.ts @@ -9,6 +9,7 @@ import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import { usePivotTableProps } from "../context/PivotTablePropsContext.js"; import { useTableReady } from "../context/TableReadyContext.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { fixRowgroupRoles } from "./useAccessibilityProps.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts index 8e60271a299..117dbbe8483 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useAgGridReactProps.ts @@ -4,6 +4,7 @@ import { useMemo } from "react"; import { AG_GRID_DEFAULT_PROPS } from "../constants/agGridDefaultProps.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { useColumnSizingProps } from "./resizing/useColumnSizingProps.js"; import { useVirtualColumnAutoResize } from "./resizing/useVirtualColumnAutoResize.js"; import { useAccessibilityModeProps } from "./useAccessibilityProps.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts index 157d6562e57..c5fae8cc27b 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useDataLoadingProps.ts @@ -14,6 +14,7 @@ import { useRuntimeError } from "../context/RuntimeErrorContext.js"; import { createServerSideDataSource } from "../features/data/createServerSideDataSource.js"; import { getEffectivePageSize, isPaginationEnabled } from "../features/pagination/utils.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { useSetAgGridPivotResultColumns } from "./columns/useSetAgGridPivotResultColumns.js"; import { useInitSizingForEmptyData } from "./resizing/useInitSizingForEmptyData.js"; import { useGrandTotalRows } from "./useGrandTotalRows.js"; diff --git a/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts index 1911e1c8747..18284bff5b1 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useFocusManagementProps.ts @@ -8,6 +8,7 @@ import { UnexpectedSdkError } from "@gooddata/sdk-ui"; import { type AgGridProps } from "../types/agGrid.js"; import { type AgGridRowData } from "../types/internal.js"; + import { useClearCellSelection } from "./useClearCellSelection.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts b/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts index 120797210c8..5b1ae3986fd 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useGrandTotalRows.ts @@ -5,6 +5,7 @@ import { useCallback } from "react"; import { agGridSetGrandTotalRows } from "../features/aggregations/agGridAggregationsApi.js"; import { type AgGridApi } from "../types/agGrid.js"; import { type AgGridRowData } from "../types/internal.js"; + import { useAccessibilityConfigOverrides } from "./useAccessibilityProps.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts index 5d5756165a8..71ae3085387 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useInteractionProps.ts @@ -35,6 +35,7 @@ import { type AgGridProps, } from "../types/agGrid.js"; import { type AgGridRowData } from "../types/internal.js"; + import { useSyncDrillableItems } from "./drilling/useSyncDrillableItems.js"; /** diff --git a/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts b/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts index 4068538816a..66341d657b7 100644 --- a/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts +++ b/libs/sdk-ui-pivot/src/next/hooks/useSortingProps.ts @@ -12,6 +12,7 @@ import { usePivotTableProps } from "../context/PivotTablePropsContext.js"; import { getSortModel } from "../features/sorting/agGridSortingApi.js"; import { sortModelToSortItems } from "../features/sorting/sortModelToSortItems.js"; import { type AgGridProps } from "../types/agGrid.js"; + import { useSyncSort } from "./sorting/useSyncSort.js"; /** diff --git a/libs/sdk-ui-pluggable-application/package.json b/libs/sdk-ui-pluggable-application/package.json index 5a463e1a1a9..b06d64b2f5a 100644 --- a/libs/sdk-ui-pluggable-application/package.json +++ b/libs/sdk-ui-pluggable-application/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pluggable-application", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK React helpers for pluggable applications", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-semantic-search/package.json b/libs/sdk-ui-semantic-search/package.json index 8a9453af9a0..f488900e258 100644 --- a/libs/sdk-ui-semantic-search/package.json +++ b/libs/sdk-ui-semantic-search/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-semantic-search", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK TypeScript & React skeleton", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx b/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx index 964d676be42..037ce49fd9a 100644 --- a/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx +++ b/libs/sdk-ui-semantic-search/src/internal/LeveledSearchTreeViewItem.tsx @@ -12,6 +12,7 @@ import { type IUiTreeviewItemProps, UiIcon } from "@gooddata/sdk-ui-kit"; import { semanticSearchItemDate, semanticSearchItemTitle } from "../automation/testIds.js"; import { SearchItem } from "../SearchItem.js"; import { getAriaLabel } from "../utils/getAriaLabel.js"; + import { GroupResultCounter } from "./GroupResultCounter.js"; import { SearchItemDetails } from "./SearchItemDetails.js"; import { SearchItemIcon } from "./SearchItemIcon.js"; diff --git a/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx b/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx index f773a4d62cc..41e5c506193 100644 --- a/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx +++ b/libs/sdk-ui-semantic-search/src/internal/SearchNoResults.tsx @@ -3,6 +3,7 @@ import { FormattedMessage } from "react-intl"; import { semanticSearchNoResults } from "../automation/testIds.js"; + import { type IErrorMessageProps, getErrorMessage } from "./errorMessage.js"; export interface ISearchNoResults { diff --git a/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx b/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx index 38f4bce145b..e34aced3ee2 100644 --- a/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx +++ b/libs/sdk-ui-semantic-search/src/internal/SearchOverlay.tsx @@ -37,6 +37,7 @@ import { useSearchIds } from "../hooks/useSearchIds.js"; import { useSemanticSearch } from "../hooks/useSemanticSearch.js"; import { useSearchKeyboard } from "../hooks/usSearchKeyboard.js"; import { IntlWrapper } from "../localization/IntlWrapper.js"; + import { ALLOWED_RELATIONSHIP_TYPES_FOR_VIEWER } from "./allowedRelationshipTypes.js"; import { HistorySearchTreeView } from "./HistorySearchTreeView.js"; import { buildSemanticSearchTreeViewItems } from "./itemsBuilder.js"; diff --git a/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts b/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts index 802037d3210..5a576dcc5e1 100644 --- a/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts +++ b/libs/sdk-ui-semantic-search/src/internal/itemsBuilder.ts @@ -7,6 +7,7 @@ import type { ISemanticSearchRelationship, ISemanticSearchResultItem } from "@go import { thresholdFilter } from "../filters/items.filters.js"; import { getUIPath } from "../utils/getUIPath.js"; import { getItemRelationships, isItemLocked, isRelationshipLocked } from "../utils/searchItem.js"; + import { type SearchTreeViewItem } from "./LeveledSearchTreeView.js"; type BuildSearchOverlayItemsProps = { diff --git a/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js b/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js index c4319841b53..a4728e7dd08 100644 --- a/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js +++ b/libs/sdk-ui-tests-reference-workspace/lib/create_tiger_workspace.js @@ -18,6 +18,7 @@ import { TIGER_FIXTURE_METADATA_EXTENSIONS, } from "../constant.js"; import { exportCatalogTiger } from "../export_catalog.js"; + import { retryOperation } from "./utils.js"; const childWSOutputFile = TIGER_CHILD_WORKSPACE_FIXTURE_CATALOG["goodsales"]; diff --git a/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js b/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js index 47903202dbb..8269ca13b3d 100644 --- a/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js +++ b/libs/sdk-ui-tests-reference-workspace/lib/delete_tiger_workspace.js @@ -6,6 +6,7 @@ import fs from "fs"; import { deleteTigerWorkspace, log } from "@gooddata/fixtures"; import { TIGER_CHILD_WORKSPACE_FIXTURE_CATALOG } from "../constant.js"; + import { deleteVariableFromEnv } from "./delete_helper.js"; import { retryOperation } from "./utils.js"; import "../scripts/env.js"; diff --git a/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js b/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js index c54f91ccb5a..0a8bbb0fab9 100644 --- a/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js +++ b/libs/sdk-ui-tests-reference-workspace/lib/export_tiger_workspace_fixture.js @@ -6,6 +6,7 @@ import { exportTigerFixtureExtension, logLn } from "@gooddata/fixtures"; import { TIGER_FIXTURE_METADATA_EXTENSIONS } from "../constant.js"; import { exportCatalogTiger } from "../export_catalog.js"; + import { runOxfmtOnFile } from "./prettierUtils.js"; async function main() { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts index 66d79bbd21e..aa6eb9d0c84 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/_infra/legendResponsiveVariants.ts @@ -4,6 +4,7 @@ import { type IBucketChartProps, type ILegendConfig } from "@gooddata/sdk-ui-cha import { type UnboundVisProps } from "../../../scenario.js"; import { type CustomizedScenario } from "../../../scenarioGroup.js"; + import { type IResponsiveSize } from "./responsiveScenarios.js"; export const legendResponsiveSizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx index 618dd07c670..91a2402ae96 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/axisCustomization.tsx @@ -4,6 +4,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartWithTwoMeasuresAndViewBy } from "./base.js"; export const axisCustomization = scenariosFor("AreaChart", AreaChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx index 6eddf01d8c1..cfabc49d5e3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/coloring.tsx @@ -5,6 +5,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartWithTwoMeasuresAndViewBy } from "./base.js"; export const coloring = scenariosFor("AreaChart", AreaChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx index f3678e400da..1f5e2390e9d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { AreaChartWithLotArithmeticMeasuresAndViewBy, AreaChartWithManyDataPoints, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx index 6a9f1bce218..e665f362611 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/stacking.tsx @@ -4,6 +4,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartViewByDate, AreaChartWithTwoMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx index 77c03a9850a..5153010f7f9 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/areaChart/theming.tsx @@ -4,6 +4,7 @@ import { AreaChart, type IAreaChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { AreaChartWithTwoMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("AreaChart", AreaChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts index 563579f7d74..5d480d7dedf 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/axisCustomization.ts @@ -8,6 +8,7 @@ import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { axisRotationVariants } from "../_infra/axisRotationVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithArithmeticMeasuresAndViewBy, BarChartWithTwoMeasuresAndTwoViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx index cba3bab45fc..a08238dace5 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/coloring.tsx @@ -10,6 +10,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { BarChartViewByDateAndPop, BarChartWithSingleMeasureViewByAndStackBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx index 194de808adb..cee89fb62ce 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BarChartWithLargeLegend, BarChartWithSingleMeasureAndViewByAndStackMultipleItems, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx index 6ba652eb3fb..88dc0897548 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/drilling.tsx @@ -7,6 +7,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { AttributeElements } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithSingleMeasureAndTwoViewByAndStack, BarChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx index 547b1a37af2..cd418719abe 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/responsive.tsx @@ -4,6 +4,7 @@ import { BarChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BarChartWithSingleMeasureViewByAndStackBy } from "./base.js"; const sizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts index 403d044b2e9..4eef6fa3973 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/reversedStacking.ts @@ -6,6 +6,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithArithmeticMeasuresAndViewBy, BarChartWithTwoMeasuresAndTwoViewBy } from "./base.js"; export const reversedStacking = scenariosFor("BarChart", BarChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx index 8764505bf53..ef03bb70c5e 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/stacking.tsx @@ -6,6 +6,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithArithmeticMeasuresAndViewBy, BarChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx index 3c2d9ca287e..a40c4b78bd3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/barChart/theming.tsx @@ -4,6 +4,7 @@ import { BarChart, type IBarChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BarChartWithSingleMeasureViewByAndStackBy } from "./base.js"; export const theming = scenariosFor("BarChart", BarChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts index ee8f944ebcc..ecf99216f14 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/axisCustomization.ts @@ -5,6 +5,7 @@ import { BubbleChart, type IBubbleChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; const singleAxisNameConfig = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx index 731bf2a3a74..8d30bc1fad9 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; const colorsAndPalette = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx index 1861b9fbb21..5e4d3b4dca5 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; const legendScenarios = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx index 7b63afda468..fe686d0e9cc 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/singleSeries.tsx @@ -4,6 +4,7 @@ import { BubbleChart, type IBubbleChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; export const singleSeries = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx index 5c884b93127..d0b3ebdacc3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bubbleChart/theming.tsx @@ -4,6 +4,7 @@ import { BubbleChart, type IBubbleChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BubbleChartWithAllMeasuresAndAttribute } from "./base.js"; export const theming = scenariosFor("BubbleChart", BubbleChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts index 2e9c273b75c..c69c221bc59 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/axisCustomization.ts @@ -5,6 +5,7 @@ import { BulletChart, type IBulletChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const singleAxisNameConfig = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx index ce42df7df02..28159b55ab1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/coloring.tsx @@ -9,6 +9,7 @@ import { BlackColor, CustomColorPalette, RedColor } from "../../_infra/colors.js import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx index 49f98880200..b51b7f22679 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const legendScenarios = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx index 6d81e3bcbf8..95f6d421cf9 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/drilling.tsx @@ -5,6 +5,7 @@ import { BulletChart, type IBulletChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { AttributeElements } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BulletChartWithAllMeasuresAndTwoViewBy, BulletChartWithAllMeasuresAndViewBy } from "./base.js"; export const drilling = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx index 3a7accb9ab1..4d94030ad29 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/responsive.tsx @@ -5,6 +5,7 @@ import { BulletChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; const sizeVariantsSimple: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx index dc742ffce8a..a633ce966ee 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/bulletChart/theming.tsx @@ -4,6 +4,7 @@ import { BulletChart, type IBulletChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { BulletChartWithAllMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("BulletChart", BulletChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts index ec2873af9af..b7768f86c61 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/axisCustomization.ts @@ -7,6 +7,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithArithmeticMeasuresAndViewBy, ColumnChartWithTwoMeasuresAndTwoViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx index f767a727cc3..5491dbbad0b 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/coloring.tsx @@ -10,6 +10,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { ColumnChartViewByDateAndPop, ColumnChartWithSingleMeasureViewByAndStackBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx index ee2359d1a17..78986767595 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { ColumnChartWithSingleMeasureAndViewByAndStackMultipleItems, ColumnChartWithTwoMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx index cb74b0bc06a..6c1cd427ca1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/drilling.tsx @@ -7,6 +7,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { AttributeElements } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithSingleMeasureAndTwoViewByAndStack, ColumnChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx index d906dd59eaa..d0c33fa4fc1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/responsive.tsx @@ -5,6 +5,7 @@ import { ColumnChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { ColumnChartWithArithmeticMeasuresAndViewBy } from "./base.js"; const sizeVariantsSimple: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx index b14796d2aae..be4f5a42538 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/stacking.tsx @@ -6,6 +6,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithArithmeticMeasuresAndViewBy, ColumnChartWithSingleMeasureAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx index 016f9b7412c..c8a077f3de8 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/columnChart/theming.tsx @@ -4,6 +4,7 @@ import { ColumnChart, type IColumnChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ColumnChartWithTwoMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("ColumnChart", ColumnChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts index bf251dcf371..763e3066a80 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/_variants.ts @@ -2,6 +2,7 @@ import { type UnboundVisProps, type VisProps } from "../../../scenario.js"; import { type CustomizedScenario } from "../../../scenarioGroup.js"; + import { type ComboChartTypes } from "./base.js"; const AllExplicitCombinations: ComboChartTypes[][] = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx index e3d5b813419..bba1625f3e6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/axisCustomization.tsx @@ -5,6 +5,7 @@ import { ComboChart, type IComboChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { comboVariants } from "./_variants.js"; import { ComboChartWithArithmeticMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx index c702a30590a..a3867745ad8 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, WonMeasurePredicate } from "../../_infra/predic import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { ComboChartWithArithmeticMeasuresAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("ComboChart", ComboChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx index ee4d7e404c1..254a42538cc 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/customization.tsx @@ -15,6 +15,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { ComboChartViewByDate, ComboChartWithManyDataPoints, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx index f294bc9e369..746c8690d5d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/stacking.tsx @@ -4,6 +4,7 @@ import { ComboChart, type IComboChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ComboChartWithArithmeticMeasuresAndViewBy, ComboChartWithManyPrimaryAndSecondaryMeasuresAndViewBy, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx index 44032c507e5..872ae94b490 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/comboChart/theming.tsx @@ -4,6 +4,7 @@ import { ComboChart, type IComboChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ComboChartWithArithmeticMeasuresAndViewBy } from "./base.js"; export const theming = scenariosFor("ComboChart", ComboChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx index 9796df5fc25..e80d66016d1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { DependencyWheelChartWithMeasureAttributeFromAndTo } from "./base.js"; const colorsAndPalette = scenariosFor( diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx index 39a3cf64750..d5a3d2243e2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendForceEnabledCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { DependencyWheelChartWithMeasureAndAttributeFrom, DependencyWheelChartWithMeasureAttributeFromAndTo, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx index 0da79cf1ea3..1a4c26b8a24 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/dependencyWheelChart/theming.tsx @@ -4,6 +4,7 @@ import { DependencyWheelChart, type IDependencyWheelChartProps } from "@gooddata import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { DependencyWheelChartWithMeasureAttributeFromAndTo } from "./base.js"; export const theming = scenariosFor("DependencyWheelChart", DependencyWheelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx index 6322d2e53c8..148a05c20b7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { DonutChartWithSingleMeasureAndViewBy, DonutChartWithTwoMeasures } from "./base.js"; const colorsAndPalette = scenariosFor("DonutChart", DonutChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx index b637946d31d..fae43a3e9b2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { DonutChartWithSingleMeasureAndViewBy, DonutChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("DonutChart", DonutChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx index 72b11a275fa..de163a4fc35 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/responsive.tsx @@ -4,6 +4,7 @@ import { DonutChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { DonutChartWithSingleMeasureAndViewBy } from "./base.js"; const sizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx index 2d0a9474229..c37c1a68e9a 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/donutChart/theming.tsx @@ -4,6 +4,7 @@ import { DonutChart, type IDonutChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { DonutChartWithSingleMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("DonutChart", DonutChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx index 90afcb8b7d2..e7be62d06bc 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { FunnelChartWithArithmeticMeasures, FunnelChartWithMeasureAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("FunnelChart", FunnelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx index ea5ef888fa4..7cfb12acfa7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/customization.tsx @@ -18,6 +18,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { FunnelChartWithMeasureAndViewBy, FunnelChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("FunnelChart", FunnelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx index 75e9a237169..2e5af2207e6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/funnelChart/theming.tsx @@ -4,6 +4,7 @@ import { FunnelChart, type IFunnelChartProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { FunnelChartWithMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("FunnelChart", FunnelChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx index 2cb41b42ee9..95090954cf6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/base.tsx @@ -6,6 +6,7 @@ import { Headline, type IHeadlineProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { GermanNumberFormat } from "../../_infra/formatting.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeadlinePositiveComparisonMeasures, comparisonDisabled, comparisonEnabled } from "./comparison.js"; export const HeadlineWithTwoMeasures = { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx index 81048ac223d..441954ce9d1 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/headline/drilling.tsx @@ -10,6 +10,7 @@ import { WonMeasurePredicate, } from "../../_infra/predicates.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeadlinePositiveComparisonMeasures, comparisonDisabled, comparisonEnabled } from "./comparison.js"; export const drilling = scenariosFor("Headline", Headline) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx index b43d6ef8c13..b703016d97e 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/axisCustomization.tsx @@ -5,6 +5,7 @@ import { Heatmap, type IHeatmapProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeatmapWithMeasureRowsAndColumns } from "./base.js"; export const axisCustomization = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx index 3f1f1f80389..0fc409e5f83 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { HeatmapWithMeasureRowsAndColumns } from "./base.js"; const colorsAndPalette = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx index 78b926b4ba9..b29183f9f5d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/customization.tsx @@ -8,6 +8,7 @@ import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { legendResponsiveVariants } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { HeatmapWithMeasureRowsAndColumns } from "./base.js"; const legendScenarios = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx index c348e3fe9c6..9eeb64d7798 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/heatmap/theming.tsx @@ -4,6 +4,7 @@ import { Heatmap, type IHeatmapProps } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { HeatmapWithMeasureRowsAndColumns, HeatmapWithNullDataPoints } from "./base.js"; export const theming = scenariosFor("Heatmap", Heatmap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts index 315178d59c0..4592a9de543 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/axisCustomization.ts @@ -7,6 +7,7 @@ import { type ILineChartProps, LineChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { LineChartTwoMeasuresWithTrendyBy, LineChartWithArithmeticMeasuresAndViewBy } from "./base.js"; const axisConfig = scenariosFor("LineChart", LineChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx index 9e2549f22ee..a3e95fbc827 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { LineChartTwoMeasuresWithTrendyBy } from "./base.js"; const colorsAndPalette = scenariosFor("LineChart", LineChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx index dd373ed7dfe..26981c88f36 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/customization.tsx @@ -14,6 +14,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { LineChartTwoMeasuresWithTrendyBy, LineChartViewByDate, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx index 9b54c80982e..72cdc029ad6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/responsive.tsx @@ -5,6 +5,7 @@ import { LineChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { LineChartTwoMeasuresWithTrendyBy } from "./base.js"; const sizeVariantsSimple: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx index 756144a3f60..bbb497ef7a6 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/lineChart/theming.tsx @@ -4,6 +4,7 @@ import { type ILineChartProps, LineChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { LineChartTwoMeasuresWithTrendyBy } from "./base.js"; export const theming = scenariosFor("LineChart", LineChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx index 0f7296ef7e3..1b2399be330 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { PieChartWithSingleMeasureAndViewBy, PieChartWithTwoMeasures } from "./base.js"; const colorsAndPalette = scenariosFor("PieChart", PieChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx index 3f727842fa0..b37cd9b6162 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { PieChartWithSingleMeasureAndViewBy, PieChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("PieChart", PieChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx index 166c5a29fa4..fe7f0fbcb34 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/responsive.tsx @@ -4,6 +4,7 @@ import { PieChart } from "@gooddata/sdk-ui-charts"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { type IResponsiveSize, responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { PieChartWithSingleMeasureAndViewBy } from "./base.js"; const sizeVariants: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx index 8a6c9f149ea..a63529d7f25 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pieChart/theming.tsx @@ -4,6 +4,7 @@ import { type IPieChartProps, PieChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { PieChartWithSingleMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("PieChart", PieChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx index a5ac965a8c6..a26354a6d73 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate, AttributeElements, WonMeasurePredicate } from " import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { PyramidChartWithArithmeticMeasures, PyramidChartWithMeasureAndViewBy } from "./base.js"; const colorsAndPalette = scenariosFor("PyramidChart", PyramidChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx index cb28613fe4b..3705605e46d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/customization.tsx @@ -12,6 +12,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { PyramidChartWithMeasureAndViewBy, PyramidChartWithTwoMeasures } from "./base.js"; const legendScenarios = scenariosFor("PyramidChart", PyramidChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx index 113a873a73e..55c0c798a1b 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/pyramidChart/theming.tsx @@ -4,6 +4,7 @@ import { type IPyramidChartProps, PyramidChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { PyramidChartWithMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("PyramidChart", PyramidChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx index 86185fc2a3e..338def1d549 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/coloring.tsx @@ -5,6 +5,7 @@ import { type IRepeaterProps, Repeater } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { RepeaterWithOneAttributeAndInlineVisualisation } from "./base.js"; const colorsAndPalette = scenariosFor("Repeater", Repeater) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx index 6013d7de8c0..a2778472e78 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/customization.tsx @@ -5,6 +5,7 @@ import { type IRepeaterProps, Repeater } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { canvasCustomizer } from "../_infra/canvasVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { RepeaterWithOneAttributeAndInlineVisualisation } from "./base.js"; const canvasScenarios = scenariosFor("Repeater", Repeater) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx index 7af92ca150e..64a7b8a6ff8 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/repeater/theming.tsx @@ -4,6 +4,7 @@ import { type IRepeaterProps, Repeater } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { RepeaterWithOneAttributeAndInlineVisualisation } from "./base.js"; export const theming = scenariosFor("Repeater", Repeater) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx index 20a036fb7b8..063a27a228d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { SankeyChartWithMeasureAttributeFromAndTo } from "./base.js"; const colorsAndPalette = scenariosFor("SankeyChart", SankeyChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx index 49ac8cdcb23..1776c993543 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendForceEnabledCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { SankeyChartWithMeasureAndAttributeFrom, SankeyChartWithMeasureAttributeFromAndTo } from "./base.js"; const legendScenarios = scenariosFor("SankeyChart", SankeyChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx index 5d4c47e563a..abdade5a8d2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/sankeyChart/theming.tsx @@ -4,6 +4,7 @@ import { type ISankeyChartProps, SankeyChart } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { SankeyChartWithMeasureAttributeFromAndTo } from "./base.js"; export const theming = scenariosFor("SankeyChart", SankeyChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts index 2bb41a501bc..5df10608525 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/axisCustomization.ts @@ -5,6 +5,7 @@ import { type IScatterPlotProps, ScatterPlot } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { axisNameCustomization } from "../_infra/axisNameCustomization.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ScatterPlotWithMeasuresAndAttribute } from "./base.js"; const axisConfig = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx index 17657938eac..e7c80fe168f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/coloring.tsx @@ -9,6 +9,7 @@ import { AmountMeasurePredicate } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { ScatterPlotWithMeasuresAndAttribute, ScatterPlotWithMeasuresAttributeAndSegmentBy } from "./base.js"; const colorsAndPalette = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx index cb52c157601..ae625a76cd7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/customization.tsx @@ -5,6 +5,7 @@ import { type IScatterPlotProps, ScatterPlot } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { dataLabelCustomizer } from "../_infra/dataLabelVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ScatterPlotWithMeasuresAndAttribute } from "./base.js"; const dataLabelScenarios = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx index d4681cd191f..c537b102c78 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/scatterPlot/theming.tsx @@ -4,6 +4,7 @@ import { type IScatterPlotProps, ScatterPlot } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { ScatterPlotWithMeasuresAndAttribute } from "./base.js"; export const theming = scenariosFor("ScatterPlot", ScatterPlot) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx index c9afb54fe46..31bc28473fd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/coloring.tsx @@ -9,6 +9,7 @@ import { AttributeElements } from "../../_infra/predicates.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; import { replaceMappingPredicates } from "../_infra/insightConverters.js"; + import { TreemapWithMeasureViewByAndSegmentBy } from "./base.js"; const colorsAndPalette = scenariosFor("Treemap", Treemap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx index 9b5396f98c4..b64f28918e2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { TreemapWithMeasureViewByAndSegmentBy } from "./base.js"; const legendScenarios = scenariosFor("Treemap", Treemap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx index 50d112ab541..d98325826e2 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/treemap/theming.tsx @@ -4,6 +4,7 @@ import { type ITreemapProps, Treemap } from "@gooddata/sdk-ui-charts"; import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { TreemapWithMeasureViewByAndSegmentBy } from "./base.js"; export const theming = scenariosFor("Treemap", Treemap) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx index 6c022d17f84..7e1e1586c7f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/coloring.tsx @@ -8,6 +8,7 @@ import { scenariosFor } from "../../../scenarioGroup.js"; import { BlackColor, CustomColorPalette, CustomPaletteColor, RedColor } from "../../_infra/colors.js"; import { coloringCustomizer } from "../_infra/coloringVariants.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { WaterfallChartWithMultiMeasures, WaterfallChartWithSingleMeasureAndViewBy } from "./base.js"; const TotalPredicate = (header: IMappingHeader) => { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx index 071133e9069..885cbb189cb 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/customization.tsx @@ -11,6 +11,7 @@ import { } from "../_infra/legendResponsiveVariants.js"; import { legendForceEnabledCustomizer } from "../_infra/legendVariants.js"; import { responsiveScenarios } from "../_infra/responsiveScenarios.js"; + import { WaterfallChartWithMultiMeasures, WaterfallChartWithSingleMeasureAndViewBy } from "./base.js"; const legendScenarios = scenariosFor("WaterfallChart", WaterfallChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx index f7b6a62fa11..9c9ca3ffd5d 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/charts/waterfallChart/theming.tsx @@ -4,6 +4,7 @@ import { type IWaterfallChartProps, WaterfallChart } from "@gooddata/sdk-ui-char import { scenariosFor } from "../../../scenarioGroup.js"; import { ScenarioGroupNames } from "../_infra/groupNames.js"; + import { WaterfallChartWithMultiMeasures, WaterfallChartWithSingleMeasureAndViewBy } from "./base.js"; export const theming = scenariosFor("WaterfallChart", WaterfallChart) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx index 86cc57e7519..17f01b809f3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/base.tsx @@ -16,6 +16,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoCountryArea = modifyAttribute(ReferenceMd.Country.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx index a5003c6391f..d5d28e6032a 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/clusters.tsx @@ -5,6 +5,7 @@ import { GeoPushpinChart, type IGeoPushpinChartProps } from "@gooddata/sdk-ui-ge import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const geoVisualTestConfig = { diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx index 73b3b86b724..02e07eef2e3 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/coloring.tsx @@ -21,6 +21,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoStateArea = modifyAttribute(ReferenceMd.State.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx index 33e40dab7b7..95b44328645 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/legends.tsx @@ -12,6 +12,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const legendPositions: Array = [ diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx index 906fd732db0..30acf7e69cd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/multiLayer.tsx @@ -7,6 +7,7 @@ import { GeoChart, type IGeoChartProps, createAreaLayer, createPushpinLayer } fr import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoStateArea = modifyAttribute(ReferenceMd.State.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx index d23716fd9b0..be4c948fb07 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/geoChart/viewport.tsx @@ -11,6 +11,7 @@ import { import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { OfflineMapStyle } from "./_infra/offlineMapStyle.js"; const GeoArea = modifyAttribute(ReferenceMd.Country.Code, (m) => m.localId("geo.area")); diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx index ae8c1fd817a..5be2fa0d693 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/autoresize.tsx @@ -4,6 +4,7 @@ import { requestPages } from "@gooddata/mock-handling"; import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleColumn, PivotTableWithSingleMeasureAndTwoRowsAndCols, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx index 9ca2fc398bf..ec1e712aec7 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/customization.tsx @@ -7,6 +7,7 @@ import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; import { GermanNumberFormat } from "../_infra/formatting.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols } from "./base.js"; import { PivotTableWithSingleMeasureAndGrandTotal, PivotTableWithTwoMeasuresAndTotals } from "./totals.js"; diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx index 8115db5d6f2..4928dc61161 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/drilling.tsx @@ -12,6 +12,7 @@ import { SalesRepPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithTwoMeasuresAndThreeRowsAndTwoCols } from "./base.js"; export const drilling = scenariosFor("PivotTable", PivotTable) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx index 8222028153f..c96cf9ed617 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/manualSizing.tsx @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui-pivot"; import { copyWithModifiedProps, scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx index fb07ef21789..95e2b5741b4 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/sorting.tsx @@ -5,6 +5,7 @@ import { newAttributeSort, newMeasureSort } from "@gooddata/sdk-model"; import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx index 2a9f79660aa..9585401d94b 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/theming.tsx @@ -4,6 +4,7 @@ import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; import { ScenarioGroupNames } from "../charts/_infra/groupNames.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols } from "./base.js"; export const theming = scenariosFor("PivotTable", PivotTable) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx index e51c37d6e74..b6e9a812bdd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/totals.tsx @@ -11,6 +11,7 @@ import { import { type IPivotTableProps, PivotTable } from "@gooddata/sdk-ui-pivot"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWighSingleMeasureAndSingleRowColAttr, PivotTableWighTwoMeasureAndSingleRowColAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx index 222eeadcebc..f0862fee97c 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTable/transposition.tsx @@ -14,6 +14,7 @@ import { RegionPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithMeasuresAndColumnOnly, PivotTableWithMeasuresAndColumnsOnly, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx index de661a06e74..efd8e2f6f8f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/autoresize.tsx @@ -4,6 +4,7 @@ import { requestPages } from "@gooddata/mock-handling"; import { type IPivotTableNextProps, PivotTableNext } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleColumn, PivotTableWithSingleMeasureAndTwoRowsAndCols, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx index 6c5a49dd818..d8ef2c4120e 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/config.tsx @@ -9,6 +9,7 @@ import { } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithTwoMeasuresAndSingleRowAttr, PivotTableWithTwoMeasuresAndTwoRowsAndCols, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx index dd042496a9f..7516f76b605 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/drilling.tsx @@ -12,6 +12,7 @@ import { SalesRepPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithTwoMeasuresAndThreeRowsAndTwoCols } from "./base.js"; export const drilling = scenariosFor("PivotTableNext", PivotTableNext) diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx index 4b0737e2b34..8e3451d9acd 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/manualSizing.tsx @@ -10,6 +10,7 @@ import { } from "@gooddata/sdk-ui-pivot/next"; import { copyWithModifiedProps, scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx index 10edacb9ad7..f6a90b5609f 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/sorting.tsx @@ -5,6 +5,7 @@ import { newAttributeSort, newMeasureSort } from "@gooddata/sdk-model"; import { type IPivotTableNextProps, PivotTableNext } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWithSingleMeasureAndTwoRowsAndCols, PivotTableWithTwoMeasuresAndSingleRowAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx index 1f8f8eb1b58..40f87a47264 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/totals.tsx @@ -11,6 +11,7 @@ import { import { type IPivotTableNextProps, PivotTableNext } from "@gooddata/sdk-ui-pivot/next"; import { scenariosFor } from "../../scenarioGroup.js"; + import { PivotTableWighSingleMeasureAndSingleRowColAttr, PivotTableWighTwoMeasureAndSingleRowColAttr, diff --git a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx index 49ed8c6cc66..54ea4076ccb 100644 --- a/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx +++ b/libs/sdk-ui-tests-scenarios/src/scenarios/pivotTableNext/transposition.tsx @@ -14,6 +14,7 @@ import { RegionPredicate, WonMeasurePredicate, } from "../_infra/predicates.js"; + import { PivotTableWithMeasuresAndColumnOnly, PivotTableWithMeasuresAndColumnsOnly, diff --git a/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx b/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx index bb6c97c5117..eb763264ebf 100644 --- a/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx +++ b/libs/sdk-ui-tests-scenarios/tests/_infra/render.tsx @@ -7,6 +7,7 @@ import { isNoDataError } from "@gooddata/sdk-backend-spi"; import { type GoodDataSdkError } from "@gooddata/sdk-ui"; import { type IScenario, type VisProps } from "../../src/index.js"; + import { type ChartInteractions, backendWithCapturing } from "./backendWithCapturing.js"; function errorHandler(error: GoodDataSdkError) { diff --git a/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx b/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx index aa7fbb1c497..edbbfd11c38 100644 --- a/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx +++ b/libs/sdk-ui-tests-scenarios/tests/_infra/renderPlugVis.tsx @@ -17,6 +17,7 @@ import { } from "@gooddata/sdk-ui-ext/internal"; import { type IScenario } from "../../src/index.js"; + import { type ChartInteractions, backendWithCapturing } from "./backendWithCapturing.js"; function createVisualizationClass(insight: IInsightDefinition): IVisualizationClass { diff --git a/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx b/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx index 3b76ee985a1..5f1e29e3b34 100644 --- a/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx +++ b/libs/sdk-ui-tests-scenarios/tests/smoke-and-capture/allScenarios.test.tsx @@ -14,6 +14,7 @@ import { type ChartInteractions } from "../_infra/backendWithCapturing.js"; import { createInsightDefinitionForChart } from "../_infra/insightFactory.js"; import { mountChartAndCaptureNormalized } from "../_infra/render.js"; import { mountInsight } from "../_infra/renderPlugVis.js"; + import { storeDirectoryFor } from "./store.js"; import { readJsonSync, writeAsJsonSync } from "./utils.js"; diff --git a/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile b/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile index 739e63a3f20..29042d188e2 100644 --- a/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile +++ b/libs/sdk-ui-tests-storybook/neobackstop/serve/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build the Go app -FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.2-alpine AS builder +FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.3-alpine AS builder WORKDIR /app # Copy Go module files and download dependencies diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx index 93a7b3ca242..83a312e06aa 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.normal.stories.tsx @@ -1,6 +1,7 @@ // (C) 2007-2026 GoodData Corporation import { type IStoryParameters } from "../../_infra/backstopScenario.js"; + import { DialogComponent, dialogContentLoadingState, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx index c43306180d4..d5ea6acd004 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kda/KdaDialog.themed.stories.tsx @@ -2,6 +2,7 @@ import { type IStoryParameters } from "../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../themeWrapper.js"; + import { DialogComponent, dialogContentLoadingState, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx index 22cbae13b7b..62b196c9d63 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Bubble/Bubble.stories.tsx @@ -6,6 +6,7 @@ import { Bubble, BubbleFocusTrigger, BubbleHoverTrigger, Button } from "@gooddat import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; const alignOptions = ["tl", "tc", "tr", "cl", "cc", "cr", "bl", "bc", "br"]; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx index 15edd0db5aa..dec3ca9b483 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ChartSorting/ChartSorting.stories.tsx @@ -9,6 +9,7 @@ import { ChartSortingDialog, type IBucketItemDescriptors } from "@gooddata/sdk-u import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { multipleAttributesMultipleMetricsSortConfig, singleAttributeSortConfig, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx index 7638cdf6592..55ab8a67258 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Dialog/Dialog.stories.tsx @@ -18,6 +18,7 @@ import { type IStoryParameters, } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; const DialogExamples = memo(function DialogExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx index 13938bead6b..2a8b8b1d432 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/DialogList.stories.tsx @@ -8,6 +8,7 @@ import { DialogList } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { itemsMock as items } from "./itemsMock.js"; function Wrapper({ children }: { children?: ReactNode }) { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx index bfd883000d7..1a38f2e2405 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/DialogList/ManagementDialogComposition.stories.tsx @@ -12,6 +12,7 @@ import { State, } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { itemsMock as items } from "./itemsMock.js"; import "./styles.scss"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx index 2e702ce3ff4..b4ee0f5c03b 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/CodeArea.stories.tsx @@ -8,6 +8,7 @@ import { CodeArea } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { code } from "./CodeMock.js"; function AreaWrapper({ children }: { children?: ReactNode }) { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx index 1d8f1aa8fd3..f802910e6f9 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/EmbedInsightDialog/EmbedInsightDialogBase.stories.tsx @@ -13,6 +13,7 @@ import { State, } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { code } from "./CodeMock.js"; function EmbedInsightDialogBaseExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx index e461862bfcb..44314061eda 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/Header/Header.stories.tsx @@ -17,6 +17,7 @@ import { import "@gooddata/sdk-ui-kit/styles/css/main.css"; import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { custom, gd } from "./logos.js"; import "./styles.scss"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx index 382c93da070..463a373a5b2 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/LegacyLists.stories.tsx @@ -9,6 +9,7 @@ import { LegacyInvertableList, LegacySingleSelectList } from "@gooddata/sdk-ui-k import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; interface IItem { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx index 31649092ea2..6853b392456 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/List/MenuList.stories.tsx @@ -4,6 +4,7 @@ import { Header, Item, ItemsWrapper, Separator } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; function ListExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx index e515b9e2fdd..59861d68b0c 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/NestedMenu/NestedMenu.stories.tsx @@ -15,6 +15,7 @@ import { import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./NestedMenu.scss"; function NestedMenuExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx index 8baf3b307ef..3811fc56944 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/RichText/RichText.stories.tsx @@ -9,6 +9,7 @@ import { RichText } from "@gooddata/sdk-ui-kit"; import "@gooddata/sdk-ui-kit/styles/css/main.css"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./styles.scss"; const placeholder = `# Heading diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx index 17077c19731..ed7e4284dcc 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/AddGranteeBase.stories.tsx @@ -16,6 +16,7 @@ import { AddGranteeBase, ComponentLabelsProvider, type IAffectedSharedObject } f import { BrowserAlias, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { useResetFocus } from "../../../utils/useResetFocus.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { current, defaultUser, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx index af9bb2b8607..d5e7a574e10 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/GranteeItem.stories.tsx @@ -14,6 +14,7 @@ import { import "@gooddata/sdk-ui-kit/styles/css/main.css"; import { type INeobackstopConfig, type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { current, currentAndOwen, diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx index d93bfe0d429..544eed7153e 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareDialog.stories.tsx @@ -13,6 +13,7 @@ import { Button, ComponentLabelsProvider, ShareDialogBase } from "@gooddata/sdk- import { type IStoryParameters } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { defaultUser, defaultUserPermissions, owner } from "./GranteeMock.js"; import { LabelsMock } from "./LabelsMock.js"; import "@gooddata/sdk-ui-kit/styles/css/main.css"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx index 324f2599b42..9cac113c3ee 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShareDialog/ShareGranteeBase.stories.tsx @@ -14,6 +14,7 @@ import { import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { defaultUserPermissions, grantees, inactiveUser, owner } from "./GranteeMock.js"; import { LabelsMock } from "./LabelsMock.js"; import "@gooddata/sdk-ui-kit/styles/css/main.css"; diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx index 7328fb9510f..7f643b34f76 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/ShortenedText/ShortenedText.stories.tsx @@ -4,6 +4,7 @@ import { ShortenedText } from "@gooddata/sdk-ui-kit"; import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import "./ShortenedText.css"; function ShortenedTextExamples() { diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx index cb8b4988391..988163c2eb2 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/kit/StylingSettingWidget/StylingSettingWidget.stories.tsx @@ -13,6 +13,7 @@ import { import { type IStoryParameters, State } from "../../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../../themeWrapper.js"; + import { customThemeItems } from "./itemsMock.js"; const emptyMessage = () => ( diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx index bd2ae394ca5..2303852385c 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/ui/UiTooltip.stories.tsx @@ -12,6 +12,7 @@ import { indigoDarkTheme, redLightTheme } from "@gooddata/sdk-ui-theme-provider/ import { type IStoryParameters, State } from "../../_infra/backstopScenario.js"; import { wrapWithTheme } from "../themeWrapper.js"; + import tooltipImage from "./assets/tooltip-image.png"; const propCombination = propCombinationsFor({} as IUiTooltipProps); diff --git a/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx b/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx index 219eda43d88..8eadb11cea7 100644 --- a/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx +++ b/libs/sdk-ui-tests-storybook/stories/visual-regression/visualizations/insightStories.tsx @@ -38,6 +38,7 @@ import { createElementCountResolver, } from "../../_infra/ScreenshotReadyWrapper.js"; import { getTheme, wrapWithTheme } from "../themeWrapper.js"; + import "./insightStories.css"; const DefaultSettings: ISettings = { diff --git a/libs/sdk-ui-theme-provider/package.json b/libs/sdk-ui-theme-provider/package.json index be584fd66e8..a75f996aa73 100644 --- a/libs/sdk-ui-theme-provider/package.json +++ b/libs/sdk-ui-theme-provider/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-theme-provider", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Theme provider", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx b/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx index d22d9665971..5249146cdf7 100644 --- a/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx +++ b/libs/sdk-ui-theme-provider/src/ThemeProvider/ScopedThemeProvider.tsx @@ -7,6 +7,7 @@ import { type ITheme } from "@gooddata/sdk-model"; import { useBackend, useWorkspace } from "@gooddata/sdk-ui"; import { clearCssProperties, setCssProperties } from "../cssProperties.js"; + import { ThemeContextProvider, type ThemeStatus } from "./Context.js"; import { isDarkTheme } from "./isDarkTheme.js"; import { prepareTheme } from "./prepareTheme.js"; diff --git a/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx b/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx index 3a9828ed56a..64a973f0e83 100644 --- a/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx +++ b/libs/sdk-ui-theme-provider/src/ThemeProvider/ThemeProvider.tsx @@ -7,6 +7,7 @@ import { type ITheme } from "@gooddata/sdk-model"; import { useBackend, useWorkspace } from "@gooddata/sdk-ui"; import { clearCssProperties, setCssProperties } from "../cssProperties.js"; + import { ThemeContextProvider, type ThemeStatus } from "./Context.js"; import { isDarkTheme } from "./isDarkTheme.js"; import { prepareTheme } from "./prepareTheme.js"; diff --git a/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts b/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts index 289644dbee5..077754bfaee 100644 --- a/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts +++ b/libs/sdk-ui-theme-provider/src/variablesSpec/validate/validate.ts @@ -9,6 +9,7 @@ import { type ThemeInconsistentCssVariable, type ThemeInternalCssVariable, } from "../types.js"; + import { type CssVariableUsage } from "./types.js"; import { groupByUnique } from "./utils.js"; diff --git a/libs/sdk-ui-vis-commons/package.json b/libs/sdk-ui-vis-commons/package.json index ad96982c614..ff0291f2e59 100644 --- a/libs/sdk-ui-vis-commons/package.json +++ b/libs/sdk-ui-vis-commons/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-vis-commons", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - common functionality for different types of visualizations", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts b/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts index c8ee1f9ad05..8dd6cda850c 100644 --- a/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts +++ b/libs/sdk-ui-vis-commons/src/coloring/test/attribute.test.ts @@ -11,6 +11,7 @@ import { recordedDataFacade } from "../../../testUtils/recordings.js"; import { AttributeColorStrategy } from "../attribute.js"; import { getRgbString } from "../color.js"; import { type IColorMapping } from "../types.js"; + import { getColorsFromStrategy } from "./helper.js"; const RgbPalette: IColorPalette = [ diff --git a/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx b/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx index 989d74080f4..61268e65756 100644 --- a/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/FluidLegend.tsx @@ -5,6 +5,7 @@ import { type ReactNode, memo, useState } from "react"; import cx from "classnames"; import { type ChartFillType } from "../coloring/types.js"; + import { calculateFluidLegend } from "./helpers.js"; import { LegendList } from "./LegendList.js"; import { LegendSeries } from "./LegendSeries.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/Legend.tsx b/libs/sdk-ui-vis-commons/src/legend/Legend.tsx index 3fbe0189a4c..337bcafd856 100644 --- a/libs/sdk-ui-vis-commons/src/legend/Legend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/Legend.tsx @@ -10,6 +10,7 @@ import ReactMeasure, { type Rect } from "react-measure"; import { type ITranslationsComponentProps, IntlTranslationsProvider, IntlWrapper } from "@gooddata/sdk-ui"; import { type ChartFillType } from "../coloring/types.js"; + import { FluidLegend } from "./FluidLegend.js"; import { HeatmapLegend } from "./HeatmapLegend.js"; import { type ButtonsOrientationType } from "./Paging.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx b/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx index b2e2a21d864..e9417d5bcc0 100644 --- a/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/LegendGroup.tsx @@ -7,6 +7,7 @@ import { useIntl } from "react-intl"; import { useIdPrefixed } from "@gooddata/sdk-ui-kit"; import { messages } from "../locales.js"; + import { type ILegendGroup } from "./types.js"; export function LegendGroup({ diff --git a/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx b/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx index 7a47cc913bb..a25805e8b67 100644 --- a/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/LegendItem.tsx @@ -12,6 +12,7 @@ import { withTheme } from "@gooddata/sdk-ui-theme-provider"; import { getDarkerColor, isPatternObject } from "../coloring/color.js"; import { PatternFill } from "../coloring/PatternFill.js"; import { type ChartFillType, type IPatternObject } from "../coloring/types.js"; + import { LegendSeriesContextStore, useItemVisibility } from "./context.js"; import { type ISeriesItemMetric } from "./types.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx b/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx index b9742016396..c4983b93b4b 100644 --- a/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/LegendList.tsx @@ -3,6 +3,7 @@ import { type ReactElement, memo, useRef } from "react"; import { type ChartFillType } from "../coloring/types.js"; + import { LegendSeriesContextStore } from "./context.js"; import { groupSeries } from "./helpers.js"; import { LegendGroup } from "./LegendGroup.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx b/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx index e536dc01ea8..e1d92dbcad2 100644 --- a/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/PopUpLegend/PopUpLegend.tsx @@ -9,6 +9,7 @@ import { useIdPrefixed } from "@gooddata/sdk-ui-kit"; import { type ChartFillType } from "../../coloring/types.js"; import { StaticLegend } from "../StaticLegend.js"; import { type ISeriesItem, type ItemBorderRadiusPredicate } from "../types.js"; + import { LegendDialog } from "./LegendDialog.js"; import { RowLegend } from "./RowLegend.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx b/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx index 0a41b2a68af..9d52a55d851 100644 --- a/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx +++ b/libs/sdk-ui-vis-commons/src/legend/StaticLegend.tsx @@ -5,6 +5,7 @@ import { type ReactElement, type ReactNode, memo, useCallback, useState } from " import cx from "classnames"; import { type ChartFillType } from "../coloring/types.js"; + import { ITEM_HEIGHT, STATIC_PAGING_HEIGHT, calculateStaticLegend } from "./helpers.js"; import { LegendLabelItem } from "./LegendLabelItem.js"; import { LegendList } from "./LegendList.js"; diff --git a/libs/sdk-ui-vis-commons/src/legend/helpers.ts b/libs/sdk-ui-vis-commons/src/legend/helpers.ts index ceee8cf9ddf..9b8af4faabc 100644 --- a/libs/sdk-ui-vis-commons/src/legend/helpers.ts +++ b/libs/sdk-ui-vis-commons/src/legend/helpers.ts @@ -6,6 +6,7 @@ import { ClientFormatterFacade } from "@gooddata/number-formatter"; import { type ITheme } from "@gooddata/sdk-model"; import { parseRGBString } from "../coloring/color.js"; + import { LEFT, RIGHT } from "./PositionTypes.js"; import { type IColorLegendItem, diff --git a/libs/sdk-ui-web-components/Dockerfile b/libs/sdk-ui-web-components/Dockerfile index 107dd6d1fb3..b54d9552567 100644 --- a/libs/sdk-ui-web-components/Dockerfile +++ b/libs/sdk-ui-web-components/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build the Go app -FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.2-alpine AS builder +FROM 020413372491.dkr.ecr.us-east-1.amazonaws.com/pullthrough/docker.io/library/golang:1.26.3-alpine AS builder WORKDIR /app # Copy Go module files and download dependencies diff --git a/libs/sdk-ui/package.json b/libs/sdk-ui/package.json index b0321e7ce8a..3a5378e28fc 100644 --- a/libs/sdk-ui/package.json +++ b/libs/sdk-ui/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData.UI SDK - Core", "license": "MIT", "author": "GoodData Corporation", diff --git a/libs/sdk-ui/src/base/errors/errorHandling.ts b/libs/sdk-ui/src/base/errors/errorHandling.ts index 16ecb82baf6..bb549ca401e 100644 --- a/libs/sdk-ui/src/base/errors/errorHandling.ts +++ b/libs/sdk-ui/src/base/errors/errorHandling.ts @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-backend-spi"; import { isCancelError } from "../react/CancelablePromise.js"; + import { BadRequestSdkError, CancelledSdkError, diff --git a/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts b/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts index b5fcb0583ab..4dfb2b365fe 100644 --- a/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts +++ b/libs/sdk-ui/src/base/headerMatching/HeaderPredicate.ts @@ -1,6 +1,7 @@ // (C) 2007-2026 GoodData Corporation import { type DataViewFacade } from "../results/facade.js"; + import { type IMappingHeader } from "./MappingHeader.js"; /** diff --git a/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts b/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts index 6480e69d584..ad3deb88fe2 100644 --- a/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts +++ b/libs/sdk-ui/src/base/headerMatching/HeaderPredicateFactory.ts @@ -23,6 +23,7 @@ import { } from "@gooddata/sdk-model"; import { type DataViewFacade } from "../results/facade.js"; + import { type IHeaderPredicate, type IHeaderPredicateContext } from "./HeaderPredicate.js"; import { type IMappingHeader, diff --git a/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts b/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts index 4a310b30c03..3edceac70c1 100644 --- a/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts +++ b/libs/sdk-ui/src/base/headerMatching/tests/HeaderPredicateFactory.test.ts @@ -15,6 +15,7 @@ import { objRefMatch, uriMatch, } from "../HeaderPredicateFactory.js"; + import { attributeDescriptor, attributeHeaderItem, diff --git a/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts b/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts index db356bd8cc3..d60fead195a 100644 --- a/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts +++ b/libs/sdk-ui/src/base/headerMatching/tests/headerPredicate.test.ts @@ -10,6 +10,7 @@ import { convertDrillableItemsToPredicates, isSomeHeaderPredicateMatched } from import { type IHeaderPredicate } from "../HeaderPredicate.js"; import { identifierMatch, uriMatch } from "../HeaderPredicateFactory.js"; import { type IMappingHeader } from "../MappingHeader.js"; + import { context, measureDescriptors } from "./HeaderPredicateFactory.fixtures.js"; const emptyFacade = DataViewFacade.for(dummyDataView(newDefForBuckets("testWorkspace", []))); diff --git a/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts b/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts index 4f275a58493..ae5cfc1fd0f 100644 --- a/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts +++ b/libs/sdk-ui/src/base/headerMatching/tests/mappingHeader.test.ts @@ -15,6 +15,7 @@ import { getMappingHeaderUri, hasMappingHeaderFormattedName, } from "../MappingHeader.js"; + import { attributeDescriptor, attributeHeaderItem, diff --git a/libs/sdk-ui/src/base/localization/TranslationsProvider.ts b/libs/sdk-ui/src/base/localization/TranslationsProvider.ts index 0741384e414..d5d2d326d71 100644 --- a/libs/sdk-ui/src/base/localization/TranslationsProvider.ts +++ b/libs/sdk-ui/src/base/localization/TranslationsProvider.ts @@ -5,6 +5,7 @@ import { memo } from "react"; import { type IntlShape, type WrappedComponentProps, injectIntl } from "react-intl"; import { messages } from "../../locales.js"; + import { emptyHeaderTitleFromIntl } from "./intlUtils.js"; /** diff --git a/libs/sdk-ui/src/base/localization/intlUtils.tsx b/libs/sdk-ui/src/base/localization/intlUtils.tsx index fd56f0b06e3..026fc3866a6 100644 --- a/libs/sdk-ui/src/base/localization/intlUtils.tsx +++ b/libs/sdk-ui/src/base/localization/intlUtils.tsx @@ -14,6 +14,7 @@ import { IntlProvider, type IntlShape, createIntl } from "react-intl"; import type { IntlConfig } from "react-intl/src/types.js"; import { wrapDisplayName } from "../react/wrapDisplayName.js"; + import { DefaultLocale, type ILocale, isLocale } from "./Locale.js"; import { DEFAULT_MESSAGES, type ITranslations, resolveMessages } from "./messagesMap.js"; diff --git a/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts b/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts index eecb23bec7f..4239e1b59aa 100644 --- a/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts +++ b/libs/sdk-ui/src/base/measureTitles/ArithmeticMeasureTitleFactory.ts @@ -5,6 +5,7 @@ import { type MessageDescriptor } from "react-intl"; import { messages } from "../../locales.js"; import { getTranslation } from "../localization/IntlStore.js"; import { type ILocale } from "../localization/Locale.js"; + import { type IArithmeticMeasureTitleProps, type IMeasureTitleProps } from "./MeasureTitle.js"; /** diff --git a/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts b/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts index 0b7dab03b10..14935885b2d 100644 --- a/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts +++ b/libs/sdk-ui/src/base/measureTitles/fillMissingTitles.ts @@ -24,6 +24,7 @@ import { shortenText } from "@gooddata/util"; import { type OverTimeComparisonType, OverTimeComparisonTypes } from "../interfaces/OverTimeComparison.js"; import { type ILocale } from "../localization/Locale.js"; import { type ITranslations, resolveMessages } from "../localization/messagesMap.js"; + import { ArithmeticMeasureTitleFactory } from "./ArithmeticMeasureTitleFactory.js"; import { DerivedMeasureTitleSuffixFactory } from "./DerivedMeasureTitleSuffixFactory.js"; import { type IMeasureTitleProps } from "./MeasureTitle.js"; diff --git a/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx b/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx index d424c98bafd..12e00e53dbb 100644 --- a/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx +++ b/libs/sdk-ui/src/base/react/ClientWorkspaceContext/ClientWorkspaceContext.tsx @@ -15,6 +15,7 @@ import { useCancelablePromise, } from "../useCancelablePromise.js"; import { WorkspaceProvider, useWorkspace } from "../WorkspaceContext.js"; + import { type IClientWorkspaceIdentifiers, type IClientWorkspaceStatus } from "./interfaces.js"; import { resolveLCMWorkspaceIdentifiers } from "./resolveLCMWorkspaceIdentifiers.js"; diff --git a/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx b/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx index 31563b535cd..ae614f21856 100644 --- a/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx +++ b/libs/sdk-ui/src/base/react/legacy/withEntireDataView.tsx @@ -32,6 +32,7 @@ import { DataViewFacade } from "../../results/facade.js"; import { type IExportFunction, type ILoadingState } from "../../vis/Events.js"; import { createExportErrorFunction, createExportFunction } from "../../vis/export.js"; import { type IDataVisualizationProps } from "../../vis/VisualizationProps.js"; + import { getAvailableDrillTargets } from "./availableDrillTargets.js"; interface IDataViewLoadState { diff --git a/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts b/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts index 0fad355f02f..219af5ae48f 100644 --- a/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts +++ b/libs/sdk-ui/src/base/react/tests/CancelablePromise.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { CancelError, makeCancelable } from "../CancelablePromise.js"; + import { createDummyPromise } from "./toolkit.js"; describe("CancelablePromise", () => { diff --git a/libs/sdk-ui/src/base/react/useCancelablePromise.ts b/libs/sdk-ui/src/base/react/useCancelablePromise.ts index e6f74ed410c..e7dfcd61ec5 100644 --- a/libs/sdk-ui/src/base/react/useCancelablePromise.ts +++ b/libs/sdk-ui/src/base/react/useCancelablePromise.ts @@ -3,6 +3,7 @@ import { type DependencyList, useEffect, useState } from "react"; import { UnexpectedSdkError } from "../errors/GoodDataSdkError.js"; + import { makeCancelable } from "./CancelablePromise.js"; import { safeSerialize } from "./safeSerialize.js"; diff --git a/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts b/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts index da98488f573..a08617b08ef 100644 --- a/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts +++ b/libs/sdk-ui/src/base/react/useCancelablePromiseUtils.ts @@ -1,6 +1,7 @@ // (C) 2019-2026 GoodData Corporation import { UnexpectedSdkError } from "../errors/GoodDataSdkError.js"; + import { type UseCancelablePromiseState, type UseCancelablePromiseStatus } from "./useCancelablePromise.js"; /** diff --git a/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx b/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx index 1e29c8f3ae2..ae2d398c567 100644 --- a/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx +++ b/libs/sdk-ui/src/base/react/validation/ValidationContextStore.tsx @@ -6,6 +6,7 @@ import { v4 as uuid } from "uuid"; import { createContextStore } from "../contextStore.js"; import { useAutoupdateRef } from "../useAutoupdateRef.js"; + import { type IChildRegistration, type IInvalidDatapoint, diff --git a/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts b/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts index 6c92b4d4f80..b960add51ea 100644 --- a/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts +++ b/libs/sdk-ui/src/base/results/internal/dataAccessImpl.ts @@ -24,6 +24,7 @@ import { type IDataSlice, } from "../dataAccess.js"; import { type DataAccessConfig } from "../dataAccessConfig.js"; + import { type DataAccessDigest, createDataAccessDigest } from "./dataAccessDigest.js"; import { LazyInitArray } from "./lazyInitArray.js"; import { getTotalInfo, measureFormat, measureName } from "./utils.js"; diff --git a/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts b/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts index 239e35e10a1..e352773ce56 100644 --- a/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts +++ b/libs/sdk-ui/src/base/results/internal/dataAccessMethods.ts @@ -20,6 +20,7 @@ import { import { type DataAccessConfig, DefaultDataAccessConfig } from "../dataAccessConfig.js"; import { dataViewToTableData } from "../tableData/dataViewToTableData.js"; import { type ITableData } from "../tableData/interfaces/index.js"; + import { DataAccessImpl } from "./dataAccessImpl.js"; class FilteredIterator implements Iterator { diff --git a/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts b/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts index ace6387145c..813f96d7a41 100644 --- a/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts +++ b/libs/sdk-ui/src/base/results/tableData/dataViewToTableData.ts @@ -1,9 +1,10 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation import { type IDataView } from "@gooddata/sdk-backend-spi"; import { type DataValue } from "@gooddata/sdk-model"; import { type DataAccessConfig } from "../dataAccessConfig.js"; + import { type ITableData } from "./interfaces/index.js"; import { type IMappingOptions } from "./interfaces/mappingOptions.js"; import { collectBucketsInfo } from "./mapping/collect/collectBucketsInfo.js"; diff --git a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts index 87024ec86d4..93de3c6fdaa 100644 --- a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts +++ b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectColumnDefinitions.ts @@ -10,6 +10,7 @@ import { type ITableDataMeasureScope, type ITableDataMeasureTotalScope, } from "../../interfaces/scope.js"; + import { type IBucketsInfo } from "./collectBucketsInfo.js"; import { type IDescriptorsInfo } from "./collectDescriptorsInfo.js"; import { type IHeadersInfo } from "./collectHeadersInfo.js"; diff --git a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts index 0f5fc133d4e..7f3227314b8 100644 --- a/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts +++ b/libs/sdk-ui/src/base/results/tableData/mapping/collect/collectRowDefinitions.ts @@ -3,6 +3,7 @@ import { type IAttributeDescriptor, type IMeasureDescriptor } from "@gooddata/sdk-model"; import { type ITableGrandTotalRowDefinition, type ITableRowDefinition } from "../../interfaces/rows.js"; + import { type IDescriptorsInfo } from "./collectDescriptorsInfo.js"; import { type IHeadersInfo } from "./collectHeadersInfo.js"; import { type IMeasureDimensionInfo } from "./collectMeasureDimensionMeta.js"; diff --git a/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts b/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts index 8d1317d3b4a..93a3bc10014 100644 --- a/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts +++ b/libs/sdk-ui/src/base/results/tableData/mapping/dataViewToTableDataMapping.ts @@ -5,6 +5,7 @@ import { type ITableDataValue } from "../interfaces/cells.js"; import { type ITableColumnDefinition } from "../interfaces/columns.js"; import { type IMappingOptions } from "../interfaces/mappingOptions.js"; import { type ITableRowDefinition } from "../interfaces/rows.js"; + import { mapGrandTotalRowAttributeColumn } from "./grandTotalRow/attribute.js"; import { mapGrandTotalRowGrandTotalColumn } from "./grandTotalRow/grandTotal.js"; import { mapGrandTotalRowMeasureGroupHeaderColumn } from "./grandTotalRow/measureGroupHeader.js"; diff --git a/libs/sdk-ui/src/base/vis/DrillEvents.ts b/libs/sdk-ui/src/base/vis/DrillEvents.ts index 1740d9eba0d..17375cdfef4 100644 --- a/libs/sdk-ui/src/base/vis/DrillEvents.ts +++ b/libs/sdk-ui/src/base/vis/DrillEvents.ts @@ -11,6 +11,7 @@ import { } from "@gooddata/sdk-model"; import { type IHeaderPredicate, isHeaderPredicate } from "../headerMatching/HeaderPredicate.js"; + import { type ChartElementType, type ChartType, diff --git a/libs/sdk-ui/src/base/vis/VisualizationProps.ts b/libs/sdk-ui/src/base/vis/VisualizationProps.ts index ac8e5e7349e..2365a4d1779 100644 --- a/libs/sdk-ui/src/base/vis/VisualizationProps.ts +++ b/libs/sdk-ui/src/base/vis/VisualizationProps.ts @@ -11,6 +11,7 @@ import { import { type IErrorProps } from "../react/ErrorComponent.js"; import { type ILoadingProps } from "../react/LoadingComponent.js"; + import { type ExplicitDrill, type OnFiredDrillEvent } from "./DrillEvents.js"; import { type IPushData, diff --git a/libs/sdk-ui/src/base/vis/drilling.ts b/libs/sdk-ui/src/base/vis/drilling.ts index 403389a569d..2dce647a9b1 100644 --- a/libs/sdk-ui/src/base/vis/drilling.ts +++ b/libs/sdk-ui/src/base/vis/drilling.ts @@ -12,6 +12,7 @@ import { type IHeaderPredicate } from "../headerMatching/HeaderPredicate.js"; import { identifierMatch, uriMatch } from "../headerMatching/HeaderPredicateFactory.js"; import { type IMappingHeader } from "../headerMatching/MappingHeader.js"; import { type DataViewFacade } from "../results/facade.js"; + import { type ExplicitDrill, type IDrillEvent, diff --git a/libs/sdk-ui/src/base/vis/export.ts b/libs/sdk-ui/src/base/vis/export.ts index be1d084901c..a97fa233dae 100644 --- a/libs/sdk-ui/src/base/vis/export.ts +++ b/libs/sdk-ui/src/base/vis/export.ts @@ -3,6 +3,7 @@ import { type IExecutionResult, type IExportConfig, type IExportResult } from "@gooddata/sdk-backend-spi"; import { type GoodDataSdkError } from "../errors/GoodDataSdkError.js"; + import { type IExportFunction, type IExtendedExportConfig } from "./Events.js"; const escapeFileName = (str: string) => str?.replace(/[/?<>\\:*|"]/g, ""); diff --git a/libs/sdk-ui/src/base/vis/geoDataExport.ts b/libs/sdk-ui/src/base/vis/geoDataExport.ts index baf0ef4d6b3..8ceca1873be 100644 --- a/libs/sdk-ui/src/base/vis/geoDataExport.ts +++ b/libs/sdk-ui/src/base/vis/geoDataExport.ts @@ -30,6 +30,7 @@ import { } from "@gooddata/sdk-model"; import { BucketNames } from "../constants/bucketNames.js"; + import { isGeoVisualizationUsingNewEngine } from "./isGeoVisualizationUsingNewEngine.js"; import { VisualizationTypes } from "./visualizationTypes.js"; diff --git a/libs/sdk-ui/src/base/vis/geoExportNormalization.ts b/libs/sdk-ui/src/base/vis/geoExportNormalization.ts index 225fa889597..df0adcadfaf 100644 --- a/libs/sdk-ui/src/base/vis/geoExportNormalization.ts +++ b/libs/sdk-ui/src/base/vis/geoExportNormalization.ts @@ -24,6 +24,7 @@ import { } from "@gooddata/sdk-model"; import { BucketNames } from "../constants/bucketNames.js"; + import { VisualizationTypes } from "./visualizationTypes.js"; const TOOLTIP_TEXT_ATTRIBUTE_LOCAL_ID = "tooltipText_df"; diff --git a/libs/sdk-ui/src/execution/DataViewLoader.tsx b/libs/sdk-ui/src/execution/DataViewLoader.tsx index 238095df3ee..a857494952d 100644 --- a/libs/sdk-ui/src/execution/DataViewLoader.tsx +++ b/libs/sdk-ui/src/execution/DataViewLoader.tsx @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-model"; import { DataViewFacade } from "../base/results/facade.js"; + import { createExecution } from "./createExecution.js"; import { type DataViewWindow } from "./withExecutionLoading.js"; diff --git a/libs/sdk-ui/src/execution/Execute.tsx b/libs/sdk-ui/src/execution/Execute.tsx index b36cf7e187e..1d1b816a394 100644 --- a/libs/sdk-ui/src/execution/Execute.tsx +++ b/libs/sdk-ui/src/execution/Execute.tsx @@ -23,6 +23,7 @@ import { } from "../base/react/placeholders/aliases.js"; import { useResolveValuesWithPlaceholders } from "../base/react/placeholders/hooks.js"; import { withContexts } from "../base/react/withContexts.js"; + import { createExecution } from "./createExecution.js"; import { type IExecuteErrorComponent, type IExecuteLoadingComponent } from "./interfaces.js"; import { withExecution } from "./withExecution.js"; diff --git a/libs/sdk-ui/src/execution/ExecuteInsight.tsx b/libs/sdk-ui/src/execution/ExecuteInsight.tsx index bb0d2720cb3..5b73a93ceb9 100644 --- a/libs/sdk-ui/src/execution/ExecuteInsight.tsx +++ b/libs/sdk-ui/src/execution/ExecuteInsight.tsx @@ -15,6 +15,7 @@ import { } from "@gooddata/sdk-model"; import { withContexts } from "../base/react/withContexts.js"; + import { type IExecuteErrorComponent, type IExecuteLoadingComponent } from "./interfaces.js"; import { withExecution } from "./withExecution.js"; import { diff --git a/libs/sdk-ui/src/execution/useExecutionDataView.ts b/libs/sdk-ui/src/execution/useExecutionDataView.ts index 2882f3bfa23..a59ac3f9fbb 100644 --- a/libs/sdk-ui/src/execution/useExecutionDataView.ts +++ b/libs/sdk-ui/src/execution/useExecutionDataView.ts @@ -24,6 +24,7 @@ import { } from "../base/react/useCancelablePromise.js"; import { useWorkspaceStrict } from "../base/react/WorkspaceContext.js"; import { DataViewFacade } from "../base/results/facade.js"; + import { createExecution } from "./createExecution.js"; import { type DataViewWindow } from "./withExecutionLoading.js"; diff --git a/libs/sdk-ui/src/execution/useInsightDataView.ts b/libs/sdk-ui/src/execution/useInsightDataView.ts index da7adbe2db0..3ad0c79faea 100644 --- a/libs/sdk-ui/src/execution/useInsightDataView.ts +++ b/libs/sdk-ui/src/execution/useInsightDataView.ts @@ -23,6 +23,7 @@ import { } from "../base/react/useCancelablePromiseUtils.js"; import { useWorkspaceStrict } from "../base/react/WorkspaceContext.js"; import { type DataViewFacade } from "../base/results/facade.js"; + import { useExecutionDataView } from "./useExecutionDataView.js"; import { useInsight } from "./useInsight.js"; import { type DataViewWindow } from "./withExecutionLoading.js"; diff --git a/libs/sdk-ui/src/execution/withExecution.ts b/libs/sdk-ui/src/execution/withExecution.ts index cacccee9885..b2287734576 100644 --- a/libs/sdk-ui/src/execution/withExecution.ts +++ b/libs/sdk-ui/src/execution/withExecution.ts @@ -5,6 +5,7 @@ import { type ComponentType } from "react"; import { type IPreparedExecution, isNoDataError } from "@gooddata/sdk-backend-spi"; import { DataViewFacade } from "../base/results/facade.js"; + import { type DataViewWindow, type IWithLoadingEvents, diff --git a/libs/sdk-ui/src/kpi/Kpi.tsx b/libs/sdk-ui/src/kpi/Kpi.tsx index 8d524fcb9fb..2cae874a0d8 100644 --- a/libs/sdk-ui/src/kpi/Kpi.tsx +++ b/libs/sdk-ui/src/kpi/Kpi.tsx @@ -15,6 +15,7 @@ import { withContexts } from "../base/react/withContexts.js"; import { type DataViewFacade } from "../base/results/facade.js"; import { type IRawExecuteProps, RawExecute } from "../execution/RawExecute.js"; import { type IWithLoadingEvents } from "../execution/withExecutionLoading.js"; + import { FormattedNumber } from "./FormattedNumber.js"; import { KpiError } from "./KpiError.js"; diff --git a/libs/util/package.json b/libs/util/package.json index 6615b3b858d..e95255ad450 100644 --- a/libs/util/package.json +++ b/libs/util/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/util", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Utility Functions", "license": "MIT", "author": "GoodData", diff --git a/tools/app-toolkit/package.json b/tools/app-toolkit/package.json index fae2c0a9a39..0250cbbae7d 100644 --- a/tools/app-toolkit/package.json +++ b/tools/app-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/app-toolkit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "CLI with useful tools for creating and maintaining GoodData web applications.", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/app-toolkit/src/initCmd/index.ts b/tools/app-toolkit/src/initCmd/index.ts index 9a4e731016b..804e7f8c66f 100644 --- a/tools/app-toolkit/src/initCmd/index.ts +++ b/tools/app-toolkit/src/initCmd/index.ts @@ -15,6 +15,7 @@ import { writeAsJsonSync, } from "../_base/utils.js"; import { getReactAppTemplateArchive } from "../react-app-template.js"; + import { type InitCmdActionConfig, getInitCmdActionConfig } from "./actionConfig.js"; import { type IFileReplacementSpec, replaceInFiles } from "./replaceInFiles.js"; diff --git a/tools/applink/src/base/test/sdkDepedencyGraph.test.ts b/tools/applink/src/base/test/sdkDepedencyGraph.test.ts index 3182fc99569..349f4643cb4 100644 --- a/tools/applink/src/base/test/sdkDepedencyGraph.test.ts +++ b/tools/applink/src/base/test/sdkDepedencyGraph.test.ts @@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest"; import { determinePackageBuildOrder } from "../dependencyGraph.js"; + import { TestSdkDependencyGraph } from "./sdkDependencyGraph.fixture.js"; describe("dependency graph", () => { diff --git a/tools/applink/src/devConsole/action.ts b/tools/applink/src/devConsole/action.ts index 6cc64827f21..38f5e48f849 100644 --- a/tools/applink/src/devConsole/action.ts +++ b/tools/applink/src/devConsole/action.ts @@ -3,6 +3,7 @@ import { getSourceDescriptor } from "../base/sourceDiscovery.js"; import { getTargetDescriptor } from "../base/targetDiscovery.js"; import { type SourceDescriptor, type TargetDependency, type TargetDescriptor } from "../base/types.js"; + import { GlobalEventBus, sourceInitialized, targetSelected } from "./events.js"; import { BuildScheduler } from "./pipeline/buildScheduler.js"; import { ChangeDetector } from "./pipeline/changeDetector.js"; diff --git a/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts b/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts index caeeffd6634..ffb37573b8d 100644 --- a/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts +++ b/tools/applink/src/devConsole/pipeline/tests/buildScheduler.test.ts @@ -10,6 +10,7 @@ import { targetSelected, } from "../../events.js"; import { BuildScheduler } from "../buildScheduler.js"; + import { EventCollector, MockBuilder, TestSourceDescriptor, TestTargetDescriptor } from "./fixture.js"; describe("BuildScheduler", () => { diff --git a/tools/applink/src/devConsole/pipeline/tests/fixture.ts b/tools/applink/src/devConsole/pipeline/tests/fixture.ts index 4b82d3e1515..8196320d963 100644 --- a/tools/applink/src/devConsole/pipeline/tests/fixture.ts +++ b/tools/applink/src/devConsole/pipeline/tests/fixture.ts @@ -9,6 +9,7 @@ import { type IEventListener, buildFinished, } from "../../events.js"; + import source from "./source.json" with { type: "json" }; import target from "./target.json" with { type: "json" }; diff --git a/tools/applink/src/devConsole/ui/appLog.ts b/tools/applink/src/devConsole/ui/appLog.ts index c4ec1a5e3f6..1a5798a28b5 100644 --- a/tools/applink/src/devConsole/ui/appLog.ts +++ b/tools/applink/src/devConsole/ui/appLog.ts @@ -9,6 +9,7 @@ import { type IEventListener, type Severity, } from "../events.js"; + import { AppPanel, type AppPanelOptions } from "./appPanel.js"; import { getTerminalSize } from "./utils.js"; diff --git a/tools/applink/src/devConsole/ui/buildOutput.ts b/tools/applink/src/devConsole/ui/buildOutput.ts index d36076121ba..c1c560a59b1 100644 --- a/tools/applink/src/devConsole/ui/buildOutput.ts +++ b/tools/applink/src/devConsole/ui/buildOutput.ts @@ -13,6 +13,7 @@ import { type IEventListener, buildOutputExited, } from "../events.js"; + import { AppPanel, type AppPanelOptions } from "./appPanel.js"; export class BuildOutput extends AppPanel implements IEventListener { diff --git a/tools/applink/src/devConsole/ui/packageList.ts b/tools/applink/src/devConsole/ui/packageList.ts index eb3cf9feddf..dfc37e1ae47 100644 --- a/tools/applink/src/devConsole/ui/packageList.ts +++ b/tools/applink/src/devConsole/ui/packageList.ts @@ -25,6 +25,7 @@ import { buildOutputRequested, packagesSelected, } from "../events.js"; + import { AppPanel, type AppPanelOptions } from "./appPanel.js"; import { ColorCodes } from "./colors.js"; diff --git a/tools/applink/src/devConsole/ui/ui.ts b/tools/applink/src/devConsole/ui/ui.ts index dc8b11a68d9..fb8f4187e54 100644 --- a/tools/applink/src/devConsole/ui/ui.ts +++ b/tools/applink/src/devConsole/ui/ui.ts @@ -13,6 +13,7 @@ import { autobuildToggled, packagesChanged, } from "../events.js"; + import { AppLog } from "./appLog.js"; import { AppMenu, type AppMenuItem } from "./appMenu.js"; import { BuildOutput } from "./buildOutput.js"; diff --git a/tools/catalog-export/package.json b/tools/catalog-export/package.json index c1e8fa50155..dd931bd9459 100644 --- a/tools/catalog-export/package.json +++ b/tools/catalog-export/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/catalog-export", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK Catalog Export tooling", "license": "MIT", "author": "GoodData", diff --git a/tools/catalog-export/src/loaders/tiger/index.ts b/tools/catalog-export/src/loaders/tiger/index.ts index 375a6717a3e..734aefd3747 100644 --- a/tools/catalog-export/src/loaders/tiger/index.ts +++ b/tools/catalog-export/src/loaders/tiger/index.ts @@ -16,6 +16,7 @@ import { } from "../../base/types.js"; import { logError, logInfo } from "../../cli/loggers.js"; import { type WorkspaceChoices, promptWorkspaceId } from "../../cli/prompts.js"; + import { createTigerClient } from "./tigerClient.js"; import { tigerLoad } from "./tigerLoad.js"; diff --git a/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts b/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts index 69c4e0534f6..730bb71aceb 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerCatalog.ts @@ -15,6 +15,7 @@ import { } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type Attribute, type Catalog, type Fact, type Metric } from "../../base/types.js"; + import { convertAttribute, createLabelMap } from "./tigerCommon.js"; function convertMetrics(metrics: JsonApiMetricOutList): Metric[] { diff --git a/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts b/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts index 937ed60a159..e7f041650d8 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerDateDatasets.ts @@ -10,6 +10,7 @@ import { import { EntitiesApi_GetAllEntitiesAttributes } from "@gooddata/api-client-tiger/endpoints/entitiesObjects"; import { type Attribute, type DateDataSet } from "../../base/types.js"; + import { type DatasetMap, type LabelMap, diff --git a/tools/catalog-export/src/loaders/tiger/tigerLoad.ts b/tools/catalog-export/src/loaders/tiger/tigerLoad.ts index 5a297a81f8f..6a1efdb3150 100644 --- a/tools/catalog-export/src/loaders/tiger/tigerLoad.ts +++ b/tools/catalog-export/src/loaders/tiger/tigerLoad.ts @@ -6,6 +6,7 @@ import { type ITigerClient } from "@gooddata/api-client-tiger"; import { CatalogExportError, type WorkspaceMetadata } from "../../base/types.js"; import { logError } from "../../cli/loggers.js"; + import { loadAnalyticalDashboards } from "./tigerAnalyticalDashboards.js"; import { loadCatalog } from "./tigerCatalog.js"; import { loadDateDataSets } from "./tigerDateDatasets.js"; diff --git a/tools/catalog-export/src/transform/toTypescript.ts b/tools/catalog-export/src/transform/toTypescript.ts index 3a45065f464..d4081142058 100644 --- a/tools/catalog-export/src/transform/toTypescript.ts +++ b/tools/catalog-export/src/transform/toTypescript.ts @@ -19,6 +19,7 @@ import { type Metric, type WorkspaceMetadata, } from "../base/types.js"; + import { type TakenNamesSet, createUniqueVariableName, stringToVariableName } from "./titles.js"; export type TypescriptOutput = { diff --git a/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json b/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json index 8e97240c255..9b21d536374 100644 --- a/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json +++ b/tools/dashboard-plugin-template/configTemplates/js/.oxfmtrc.json @@ -13,7 +13,8 @@ "external", "gooddata-group", "internal", - ["parent", "sibling", "index"], + "parent", + ["sibling", "index"], "unknown" ], "customGroups": [ diff --git a/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json b/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json index 8e97240c255..9b21d536374 100644 --- a/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json +++ b/tools/dashboard-plugin-template/configTemplates/ts/.oxfmtrc.json @@ -13,7 +13,8 @@ "external", "gooddata-group", "internal", - ["parent", "sibling", "index"], + "parent", + ["sibling", "index"], "unknown" ], "customGroups": [ diff --git a/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx b/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx index 6a6438b8924..eb0f6233ea5 100644 --- a/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx +++ b/tools/dashboard-plugin-template/src/harness/PluginLoader.tsx @@ -12,6 +12,7 @@ import { } from "@gooddata/sdk-ui-loaders"; import { PluginFactory } from "../plugin/index.js"; + // this import will be renamed in plugin-toolkit import { PluginToolbar } from "./PluginToolbar.js"; diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index b796cf462dd..f9cea44b5b4 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/eslint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/eslint-config/scripts/build.ts b/tools/eslint-config/scripts/build.ts index c497d49a94e..2472f605e6d 100644 --- a/tools/eslint-config/scripts/build.ts +++ b/tools/eslint-config/scripts/build.ts @@ -1,6 +1,7 @@ // (C) 2025-2026 GoodData Corporation import { commonConfigurations, v8Variants, v9Variants } from "../src/index.js"; + import { buildV8 } from "./build/v8.js"; import { buildV9 } from "./build/v9.js"; diff --git a/tools/eslint-config/scripts/build/v9.ts b/tools/eslint-config/scripts/build/v9.ts index defd77539f7..e756ef70dab 100644 --- a/tools/eslint-config/scripts/build/v9.ts +++ b/tools/eslint-config/scripts/build/v9.ts @@ -5,6 +5,7 @@ import { writeFileSync } from "fs"; import type { GlobalValue, IPackage } from "@gooddata/lint-config"; import type { GlobalsPreset, IConfigurationV9, IDualConfiguration } from "../../src/types.js"; + import { renderKey, renderValue } from "./renderPlugin.js"; // Track imports needed for generated JS diff --git a/tools/i18n-toolkit/package.json b/tools/i18n-toolkit/package.json index 4e501c16cc8..831c65e1384 100644 --- a/tools/i18n-toolkit/package.json +++ b/tools/i18n-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/i18n-toolkit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "Localization validator to validate localization complexity and intl and html format.", "license": "MIT", "author": "GoodData", diff --git a/tools/i18n-toolkit/src/validations/messagesUsage.ts b/tools/i18n-toolkit/src/validations/messagesUsage.ts index 4171c71b712..1291a371cb8 100644 --- a/tools/i18n-toolkit/src/validations/messagesUsage.ts +++ b/tools/i18n-toolkit/src/validations/messagesUsage.ts @@ -8,6 +8,7 @@ import fastGlob from "fast-glob"; import { DefaultLocale, type ToolkitConfigFile, type UsageResult } from "../data.js"; import { type LocalesStructure } from "../schema/localization.js"; import { done, fail, message, resultsInfo, skipped } from "../utils/console.js"; + import { checkTranslations } from "./usage/checkTranslations.js"; const { sync } = fastGlob; diff --git a/tools/lint-config/package.json b/tools/lint-config/package.json index b49a1b0d553..c921c22b042 100644 --- a/tools/lint-config/package.json +++ b/tools/lint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/lint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "Linter-agnostic shared rules for @gooddata/eslint-config and @gooddata/oxlint-config", "license": "MIT", "author": "GoodData", diff --git a/tools/mock-handling/package.json b/tools/mock-handling/package.json index eea7d3a32c1..3eb96090b4f 100644 --- a/tools/mock-handling/package.json +++ b/tools/mock-handling/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/mock-handling", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK Mock data capture and management tool", "license": "MIT", "author": "GoodData", diff --git a/tools/mock-handling/src/codegen/index.ts b/tools/mock-handling/src/codegen/index.ts index 630527cbb13..b6463f556c0 100644 --- a/tools/mock-handling/src/codegen/index.ts +++ b/tools/mock-handling/src/codegen/index.ts @@ -13,6 +13,7 @@ import { type DisplayFormRecording } from "../recordings/displayForms.js"; import { type ExecutionRecording } from "../recordings/execution.js"; import { type InsightRecording } from "../recordings/insights.js"; import { type VisClassesRecording } from "../recordings/visClasses.js"; + import { generateConstantsForCatalog } from "./catalog.js"; import { generateConstantsForCollectionItems } from "./collectionItems.js"; import { generateConstantsForDashboards } from "./dashboard.js"; diff --git a/tools/mock-handling/src/recordings/catalogRepository.ts b/tools/mock-handling/src/recordings/catalogRepository.ts index 7981d7864a8..6efead1022e 100644 --- a/tools/mock-handling/src/recordings/catalogRepository.ts +++ b/tools/mock-handling/src/recordings/catalogRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { CatalogDefinition, CatalogRecording } from "./catalog.js"; import { type IRecording, isNonNullRecording } from "./common.js"; diff --git a/tools/mock-handling/src/recordings/collectionItemsRepository.ts b/tools/mock-handling/src/recordings/collectionItemsRepository.ts index 24e12a23206..0d62b05193e 100644 --- a/tools/mock-handling/src/recordings/collectionItemsRepository.ts +++ b/tools/mock-handling/src/recordings/collectionItemsRepository.ts @@ -5,6 +5,7 @@ import path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { CollectionItemsRecording } from "./collectionItems.js"; import { type IRecording, isNonNullRecording } from "./common.js"; diff --git a/tools/mock-handling/src/recordings/dashboards.ts b/tools/mock-handling/src/recordings/dashboards.ts index 8c53172a6fa..cef35371ffb 100644 --- a/tools/mock-handling/src/recordings/dashboards.ts +++ b/tools/mock-handling/src/recordings/dashboards.ts @@ -10,6 +10,7 @@ import { DataRecorderError } from "../base/types.js"; import { createUniqueVariableNameForIdentifier } from "../base/variableNaming.js"; import { logError } from "../cli/loggers.js"; import { RecordingFiles } from "../interface.js"; + import { type IRecording, type RecordingIndexEntry, RecordingType, writeAsJsonSync } from "./common.js"; // diff --git a/tools/mock-handling/src/recordings/dashboardsRepository.ts b/tools/mock-handling/src/recordings/dashboardsRepository.ts index 566bb30287e..3d1f4faae25 100644 --- a/tools/mock-handling/src/recordings/dashboardsRepository.ts +++ b/tools/mock-handling/src/recordings/dashboardsRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { type IRecording, isNonNullRecording, readJsonSync } from "./common.js"; import { DashboardRecording } from "./dashboards.js"; import { DashboardsDefinition } from "./displayForms.js"; diff --git a/tools/mock-handling/src/recordings/displayForms.ts b/tools/mock-handling/src/recordings/displayForms.ts index e86afc15299..9f6e9feb259 100644 --- a/tools/mock-handling/src/recordings/displayForms.ts +++ b/tools/mock-handling/src/recordings/displayForms.ts @@ -9,6 +9,7 @@ import { type IAnalyticalBackend, type IElementsQuery } from "@gooddata/sdk-back import { type IAttributeDisplayFormMetadataObject, type IAttributeElement, idRef } from "@gooddata/sdk-model"; import { createUniqueVariableNameForIdentifier } from "../base/variableNaming.js"; + import { type IRecording, type RecordingIndexEntry, diff --git a/tools/mock-handling/src/recordings/displayFormsRepository.ts b/tools/mock-handling/src/recordings/displayFormsRepository.ts index 26ad0a676c9..39c68b7e775 100644 --- a/tools/mock-handling/src/recordings/displayFormsRepository.ts +++ b/tools/mock-handling/src/recordings/displayFormsRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { type IRecording, isNonNullRecording, readJsonSync } from "./common.js"; import { DisplayFormRecording, DisplayFormsDefinition } from "./displayForms.js"; diff --git a/tools/mock-handling/src/recordings/execution.ts b/tools/mock-handling/src/recordings/execution.ts index 9780485dba0..58c1e30f193 100644 --- a/tools/mock-handling/src/recordings/execution.ts +++ b/tools/mock-handling/src/recordings/execution.ts @@ -30,6 +30,7 @@ import { type RequestedWindow, type ScenarioDescriptor, } from "../interface.js"; + import { type IRecording, type RecordingIndexEntry, diff --git a/tools/mock-handling/src/recordings/executionRepository.ts b/tools/mock-handling/src/recordings/executionRepository.ts index 31f114e8e88..bff0ee9bf48 100644 --- a/tools/mock-handling/src/recordings/executionRepository.ts +++ b/tools/mock-handling/src/recordings/executionRepository.ts @@ -5,6 +5,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; import { RecordingFiles } from "../interface.js"; + import { type IRecording, isNonNullRecording } from "./common.js"; import { ExecutionRecording } from "./execution.js"; diff --git a/tools/mock-handling/src/recordings/insights.ts b/tools/mock-handling/src/recordings/insights.ts index 21e19ecfc43..3a9ff80579f 100644 --- a/tools/mock-handling/src/recordings/insights.ts +++ b/tools/mock-handling/src/recordings/insights.ts @@ -10,6 +10,7 @@ import { idRef } from "@gooddata/sdk-model"; import { createUniqueVariableNameForIdentifier } from "../base/variableNaming.js"; import { type InsightRecordingSpec, RecordingFiles } from "../interface.js"; + import { type IRecording, type RecordingIndexEntry, RecordingType, writeAsJsonSync } from "./common.js"; // diff --git a/tools/mock-handling/src/recordings/insightsRepository.ts b/tools/mock-handling/src/recordings/insightsRepository.ts index a9d5b61b3c9..b8b3a23383b 100644 --- a/tools/mock-handling/src/recordings/insightsRepository.ts +++ b/tools/mock-handling/src/recordings/insightsRepository.ts @@ -5,6 +5,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; import { RecordingFiles } from "../interface.js"; + import { type IRecording, isNonNullRecording, readJsonSync } from "./common.js"; import { InsightRecording } from "./insights.js"; diff --git a/tools/mock-handling/src/recordings/visClassesRepository.ts b/tools/mock-handling/src/recordings/visClassesRepository.ts index f1e30cbcb12..0df82ae4230 100644 --- a/tools/mock-handling/src/recordings/visClassesRepository.ts +++ b/tools/mock-handling/src/recordings/visClassesRepository.ts @@ -4,6 +4,7 @@ import * as path from "path"; import { findFiles } from "../base/utils.js"; import { logWarn } from "../cli/loggers.js"; + import { type IRecording, isNonNullRecording } from "./common.js"; import { VisClassesDefinition, VisClassesRecording } from "./visClasses.js"; diff --git a/tools/oxlint-config/package.json b/tools/oxlint-config/package.json index 424acd077d8..093f609a13a 100644 --- a/tools/oxlint-config/package.json +++ b/tools/oxlint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/oxlint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "license": "MIT", "author": "GoodData", "repository": { diff --git a/tools/plugin-toolkit/package.json b/tools/plugin-toolkit/package.json index 8d31958523b..54c199b9e52 100644 --- a/tools/plugin-toolkit/package.json +++ b/tools/plugin-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/plugin-toolkit", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData Set of Tools for working with Plugins", "license": "LicenseRef-LICENSE", "author": "GoodData", diff --git a/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts b/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts index 0654448a278..db1dc8e664f 100644 --- a/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts +++ b/tools/plugin-toolkit/src/_base/inputHandling/extractors.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../types.js"; + import { createHostnameValidator, validOrDie } from "./validators.js"; /** diff --git a/tools/plugin-toolkit/src/addPluginCmd/index.ts b/tools/plugin-toolkit/src/addPluginCmd/index.ts index 5944e119ddf..39f04beb127 100644 --- a/tools/plugin-toolkit/src/addPluginCmd/index.ts +++ b/tools/plugin-toolkit/src/addPluginCmd/index.ts @@ -7,6 +7,7 @@ import { type IDashboardPlugin } from "@gooddata/sdk-model"; import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type AddCmdActionConfig, getAddCmdActionConfig } from "./actionConfig.js"; function printAddConfigSummary({ diff --git a/tools/plugin-toolkit/src/initCmd/index.ts b/tools/plugin-toolkit/src/initCmd/index.ts index e7e4d007365..95d54de091f 100644 --- a/tools/plugin-toolkit/src/initCmd/index.ts +++ b/tools/plugin-toolkit/src/initCmd/index.ts @@ -16,6 +16,7 @@ import { writeAsJsonSync, } from "../_base/utils.js"; import { getDashboardPluginTemplateArchive } from "../dashboard-plugin-template.js"; + import { type InitCmdActionConfig, getInitCmdActionConfig } from "./actionConfig.js"; import { type IFileReplacementSpec, replaceInFiles } from "./replaceInFiles.js"; diff --git a/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts b/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts index 8b34bb7142d..cbf04a5cbb0 100644 --- a/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts +++ b/tools/plugin-toolkit/src/inspectCmds/inspectCmdAction.ts @@ -3,6 +3,7 @@ import { logInfo } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type InspectCmdActionConfig, getInspectCmdActionConfig } from "./actionConfig.js"; import { type InspectObjectFn } from "./types.js"; diff --git a/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts b/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts index 0e85dbe9154..6f1f33f52ae 100644 --- a/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts +++ b/tools/plugin-toolkit/src/inspectCmds/inspectDashboard.ts @@ -7,6 +7,7 @@ import { isEmpty } from "lodash-es"; import { areObjRefsEqual, idRef } from "@gooddata/sdk-model"; import { type ActionOptions } from "../_base/types.js"; + import { type InspectCmdActionConfig } from "./actionConfig.js"; import { printObjectSummary } from "./output.js"; diff --git a/tools/plugin-toolkit/src/inspectCmds/types.ts b/tools/plugin-toolkit/src/inspectCmds/types.ts index 311a375a04b..83acf40033e 100644 --- a/tools/plugin-toolkit/src/inspectCmds/types.ts +++ b/tools/plugin-toolkit/src/inspectCmds/types.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type InspectCmdActionConfig } from "./actionConfig.js"; export type InspectObjectFn = (config: InspectCmdActionConfig, options: ActionOptions) => Promise; diff --git a/tools/plugin-toolkit/src/linkPluginCmd/index.ts b/tools/plugin-toolkit/src/linkPluginCmd/index.ts index 56ceb89b0b0..6727bdd701f 100644 --- a/tools/plugin-toolkit/src/linkPluginCmd/index.ts +++ b/tools/plugin-toolkit/src/linkPluginCmd/index.ts @@ -7,6 +7,7 @@ import { type IDashboard, type IDashboardDefinition, idRef } from "@gooddata/sdk import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type LinkCmdActionConfig, getLinkCmdActionConfig } from "./actionConfig.js"; function printUseConfigSummary({ diff --git a/tools/plugin-toolkit/src/listCmds/listCmdAction.ts b/tools/plugin-toolkit/src/listCmds/listCmdAction.ts index d39fd3f4e6d..3d47b3f75cc 100644 --- a/tools/plugin-toolkit/src/listCmds/listCmdAction.ts +++ b/tools/plugin-toolkit/src/listCmds/listCmdAction.ts @@ -5,6 +5,7 @@ import columnify from "columnify"; import { logInfo, logSuccess } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type ListCmdActionConfig, getListCmdActionConfig } from "./actionConfig.js"; import { type ListObjectsFn } from "./types.js"; diff --git a/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts b/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts index 4db41424a9e..15be38a7632 100644 --- a/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts +++ b/tools/plugin-toolkit/src/listCmds/listDashboardPlugins.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type ListCmdActionConfig } from "./actionConfig.js"; import { type ListEntry } from "./types.js"; diff --git a/tools/plugin-toolkit/src/listCmds/listDashboards.ts b/tools/plugin-toolkit/src/listCmds/listDashboards.ts index 394e322b128..62fad64341e 100644 --- a/tools/plugin-toolkit/src/listCmds/listDashboards.ts +++ b/tools/plugin-toolkit/src/listCmds/listDashboards.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type ListCmdActionConfig } from "./actionConfig.js"; import { type ListEntry } from "./types.js"; diff --git a/tools/plugin-toolkit/src/listCmds/types.ts b/tools/plugin-toolkit/src/listCmds/types.ts index 28122220755..40da5b8095a 100644 --- a/tools/plugin-toolkit/src/listCmds/types.ts +++ b/tools/plugin-toolkit/src/listCmds/types.ts @@ -1,6 +1,7 @@ // (C) 2021-2026 GoodData Corporation import { type ActionOptions } from "../_base/types.js"; + import { type ListCmdActionConfig } from "./actionConfig.js"; export type ListEntry = { diff --git a/tools/plugin-toolkit/src/removeParamsCmd/index.ts b/tools/plugin-toolkit/src/removeParamsCmd/index.ts index ae9885fb8c9..e72f57c293f 100644 --- a/tools/plugin-toolkit/src/removeParamsCmd/index.ts +++ b/tools/plugin-toolkit/src/removeParamsCmd/index.ts @@ -8,6 +8,7 @@ import { type IDashboard, type IDashboardDefinition, areObjRefsEqual, idRef } fr import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type RemovePluginParamsCmdConfig, getRemovePluginParamsCmdConfig } from "./actionConfig.js"; function printUsedUpdatePluginParamsSummary({ diff --git a/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts b/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts index 8c84398f4c2..c7be266d69d 100644 --- a/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts +++ b/tools/plugin-toolkit/src/unlinkPluginCmd/index.ts @@ -8,6 +8,7 @@ import { type IDashboardDefinition, areObjRefsEqual, idRef } from "@gooddata/sdk import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type UnlinkCmdActionConfig, getUnlinkCmdActionConfig } from "./actionConfig.js"; function printUnlinkConfigSummary({ hostname, workspace, dashboard, identifier }: UnlinkCmdActionConfig) { diff --git a/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts b/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts index 7f2f2596fc9..989a4d9642e 100644 --- a/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts +++ b/tools/plugin-toolkit/src/updatePluginParamsCmd/index.ts @@ -8,6 +8,7 @@ import { type IDashboard, type IDashboardDefinition, areObjRefsEqual, idRef } fr import { logInfo, logSuccess, logWarn } from "../_base/terminal/loggers.js"; import { type ActionOptions } from "../_base/types.js"; import { genericErrorReporter } from "../_base/utils.js"; + import { type UpdatePluginParamsCmdConfig, getUpdatePluginParamsCmdConfig } from "./actionConfig.js"; function printUsedUpdatePluginParamsSummary({ diff --git a/tools/reference-workspace/package.json b/tools/reference-workspace/package.json index d8d0ea16df1..ad4455abcde 100644 --- a/tools/reference-workspace/package.json +++ b/tools/reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData SDK - Reference Workspace for tests", "license": "MIT", "author": "GoodData", diff --git a/tools/stylelint-config/package.json b/tools/stylelint-config/package.json index 5238d91499f..7871c47b822 100644 --- a/tools/stylelint-config/package.json +++ b/tools/stylelint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/stylelint-config", - "version": "11.35.0-alpha.3", + "version": "11.35.0-alpha.4", "description": "GoodData CSS Style Guide", "keywords": [ "config", From 2c0628d9841cce36f5d8d2b927541cc993cb125b Mon Sep 17 00:00:00 2001 From: git-action Date: Mon, 11 May 2026 03:20:06 +0000 Subject: [PATCH 2/2] chore: update dependencies after rush update risk: low --- .../rush/browser-approved-packages.json | 2652 +++++++++-------- common/config/rush/pnpm-lock.yaml | 469 +-- 2 files changed, 1588 insertions(+), 1533 deletions(-) diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index 14c4dd5da82..1b5483ed840 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -1,1218 +1,1434 @@ -// DO NOT ADD COMMENTS IN THIS FILE. They will be lost when the Rush tool resaves it. -{ - "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json", - "packages": [ - { - "name": "@aaronhayes/react-use-hubspot-form", - "allowedCategories": ["production"] - }, - { - "name": "@babel/cli", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@babel/core", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@babel/plugin-proposal-export-default-from", - "allowedCategories": ["production"] - }, - { - "name": "@babel/plugin-transform-async-to-generator", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@babel/plugin-transform-class-properties", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@babel/plugin-transform-object-rest-spread", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@babel/plugin-transform-typescript", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@babel/preset-env", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@babel/preset-react", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@babel/preset-typescript", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@babel/runtime", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@braintree/sanitize-url", - "allowedCategories": ["production"] - }, - { - "name": "@codemirror/autocomplete", - "allowedCategories": ["production"] - }, - { - "name": "@codemirror/commands", - "allowedCategories": ["production"] - }, - { - "name": "@codemirror/lang-yaml", - "allowedCategories": ["production"] - }, - { - "name": "@codemirror/language", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@codemirror/lint", - "allowedCategories": ["production"] - }, - { - "name": "@codemirror/state", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@codemirror/view", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@componentdriven/csf", - "allowedCategories": ["production"] - }, - { - "name": "@floating-ui/dom", - "allowedCategories": ["production"] - }, - { - "name": "@floating-ui/react", - "allowedCategories": ["production"] - }, - { - "name": "@floating-ui/react-dom", - "allowedCategories": ["production"] - }, - { - "name": "@formatjs/cli-lib", - "allowedCategories": ["tools"] - }, - { - "name": "@formatjs/icu-messageformat-parser", - "allowedCategories": ["tools"] - }, - { - "name": "@gooddata/api-client-tiger", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@gooddata/catalog-export", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/eslint-config", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/fixtures", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@gooddata/i18n-toolkit", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/mock-handling", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@gooddata/number-formatter", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/plugin-toolkit", - "allowedCategories": ["tools"] - }, - { - "name": "@gooddata/reference-workspace", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/sdk-backend-base", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-backend-mockingbird", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/sdk-backend-spi", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-backend-tiger", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-embedding", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/sdk-model", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-dashboard", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-ext", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-filters", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-gen-ai", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-geo", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-charts", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-kit", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-loaders", - "allowedCategories": ["examples", "tools"] - }, - { - "name": "@gooddata/sdk-ui-pivot", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@gooddata/sdk-ui-semantic-search", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@gooddata/sdk-ui-theme-provider", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@gooddata/sdk-ui-vis-commons", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/sdk-ui-web-components", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/stylelint-config", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/util", - "allowedCategories": ["production"] - }, - { - "name": "@lezer/highlight", - "allowedCategories": ["production"] - }, - { - "name": "@microsoft/api-documenter", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@microsoft/api-extractor", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@openapitools/openapi-generator-cli", - "allowedCategories": ["production"] - }, - { - "name": "@react-aria/interactions", - "allowedCategories": ["production"] - }, - { - "name": "@reduxjs/toolkit", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/builder-vite", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/builder-webpack5", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/cli", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/manager-webpack5", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/preset-scss", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/react", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/react-vite", - "allowedCategories": ["production"] - }, - { - "name": "@storybook/react-webpack5", - "allowedCategories": ["production"] - }, - { - "name": "@tanstack/react-virtual", - "allowedCategories": ["production"] - }, - { - "name": "@testing-library/dom", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@testing-library/react", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@testing-library/user-event", - "allowedCategories": ["production"] - }, - { - "name": "@types/babel__core", - "allowedCategories": ["tools"] - }, - { - "name": "@types/blessed", - "allowedCategories": ["tools"] - }, - { - "name": "@types/columnify", - "allowedCategories": ["tools"] - }, - { - "name": "@types/cross-spawn", - "allowedCategories": ["tools"] - }, - { - "name": "@types/debounce-promise", - "allowedCategories": ["production"] - }, - { - "name": "@types/fast-levenshtein", - "allowedCategories": ["production"] - }, - { - "name": "@types/fs-extra", - "allowedCategories": ["tools"] - }, - { - "name": "@types/history", - "allowedCategories": ["examples"] - }, - { - "name": "@types/hoist-non-react-statics", - "allowedCategories": ["production"] - }, - { - "name": "@types/inquirer", - "allowedCategories": ["tools"] - }, - { - "name": "@types/isomorphic-fetch", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@types/js-yaml", - "allowedCategories": ["production"] - }, - { - "name": "@types/json5", - "allowedCategories": ["tools"] - }, - { - "name": "@types/kefir", - "allowedCategories": ["production"] - }, - { - "name": "@types/mapbox-gl", - "allowedCategories": ["production"] - }, - { - "name": "@types/mdast", - "allowedCategories": ["production"] - }, - { - "name": "@types/node", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@types/node-fetch", - "allowedCategories": ["production"] - }, - { - "name": "@types/pdf-parse", - "allowedCategories": ["production"] - }, - { - "name": "@types/qs", - "allowedCategories": ["production"] - }, - { - "name": "@types/raf", - "allowedCategories": ["production", "tools"] - }, - { - "name": "@types/react", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@types/react-datepicker", - "allowedCategories": ["examples"] - }, - { - "name": "@types/react-dom", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@types/react-google-recaptcha", - "allowedCategories": ["examples"] - }, - { - "name": "@types/react-helmet", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@types/react-lines-ellipsis", - "allowedCategories": ["production"] - }, - { - "name": "@types/react-measure", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@types/react-native-listener", - "allowedCategories": ["production"] - }, - { - "name": "@types/react-portal", - "allowedCategories": ["production"] - }, - { - "name": "@types/react-redux", - "allowedCategories": ["production"] - }, - { - "name": "@types/react-router-dom", - "allowedCategories": ["examples", "production"] - }, - { - "name": "@types/react-syntax-highlighter", - "allowedCategories": ["examples"] - }, - { - "name": "@types/react-textarea-autosize", - "allowedCategories": ["production"] - }, - { - "name": "@types/react-transition-group", - "allowedCategories": ["production"] - }, - { - "name": "@types/rimraf", - "allowedCategories": ["tools"] - }, - { - "name": "@types/semver", - "allowedCategories": ["production"] - }, - { - "name": "@types/spark-md5", - "allowedCategories": ["production"] - }, - { - "name": "@types/stringify-object", - "allowedCategories": ["production"] - }, - { - "name": "@types/tar", - "allowedCategories": ["tools"] - }, - { - "name": "@types/tinycolor2", - "allowedCategories": ["production"] - }, - { - "name": "@types/tough-cookie", - "allowedCategories": ["production"] - }, - { - "name": "@types/unist", - "allowedCategories": ["production"] - }, - { - "name": "@types/uuid", - "allowedCategories": ["production"] - }, - { - "name": "@types/validate-npm-package-name", - "allowedCategories": ["tools"] - }, - { - "name": "@types/watchpack", - "allowedCategories": ["tools"] - }, - { - "name": "@types/webpack-env", - "allowedCategories": ["examples"] - }, - { - "name": "@typescript-eslint/eslint-plugin", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@typescript-eslint/parser", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "@vitejs/plugin-react", - "allowedCategories": ["examples"] - }, - { - "name": "@vitejs/plugin-react-swc", - "allowedCategories": ["examples"] - }, - { - "name": "@welldone-software/why-did-you-render", - "allowedCategories": ["examples"] - }, - { - "name": "ag-grid-community", - "allowedCategories": ["production"] - }, - { - "name": "ag-grid-enterprise", - "allowedCategories": ["production"] - }, - { - "name": "ag-grid-react", - "allowedCategories": ["production"] - }, - { - "name": "async", - "allowedCategories": ["production"] - }, - { - "name": "axios", - "allowedCategories": ["production", "tools"] - }, - { - "name": "axios-cache-interceptor", - "allowedCategories": ["production"] - }, - { - "name": "babel-loader", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "babel-plugin-lodash", - "allowedCategories": ["examples", "production"] - }, - { - "name": "babel-plugin-require-context-hook", - "allowedCategories": ["production"] - }, - { - "name": "blessed", - "allowedCategories": ["tools"] - }, - { - "name": "blob-polyfill", - "allowedCategories": ["production"] - }, - { - "name": "case-sensitive-paths-webpack-plugin", - "allowedCategories": ["examples", "tools"] - }, - { - "name": "circular-dependency-plugin", - "allowedCategories": ["examples", "production"] - }, - { - "name": "classnames", - "allowedCategories": ["examples", "production"] - }, - { - "name": "clean-webpack-plugin", - "allowedCategories": ["examples", "production"] - }, - { - "name": "codemirror", - "allowedCategories": ["production"] - }, - { - "name": "columnify", - "allowedCategories": ["tools"] - }, - { - "name": "commander", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "compression-webpack-plugin", - "allowedCategories": ["examples", "production"] - }, - { - "name": "concurrently", - "allowedCategories": ["production", "tools"] - }, - { - "name": "copy-to-clipboard", - "allowedCategories": ["production"] - }, - { - "name": "copy-webpack-plugin", - "allowedCategories": ["production"] - }, - { - "name": "core-js", - "allowedCategories": ["examples", "production"] - }, - { - "name": "cron-parser", - "allowedCategories": ["production"] - }, - { - "name": "cross-spawn", - "allowedCategories": ["tools"] - }, - { - "name": "css-loader", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "date-fns", - "allowedCategories": ["production"] - }, - { - "name": "date-fns-tz", - "allowedCategories": ["production"] - }, - { - "name": "debounce-promise", - "allowedCategories": ["production"] - }, - { - "name": "default-import", - "allowedCategories": ["examples", "production"] - }, - { - "name": "dependency-cruiser", - "allowedCategories": ["production", "tools"] - }, - { - "name": "dotenv", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "dotenv-webpack", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "downshift", - "allowedCategories": ["production"] - }, - { - "name": "@gooddata/emailjs-mime-codec-new", - "allowedCategories": ["production"] - }, - { - "name": "esbuild-loader", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-import-resolver-typescript", - "allowedCategories": ["examples", "production"] - }, - { - "name": "eslint-plugin-header", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-import", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-import-esm", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-no-only-tests", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-react", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-react-hooks", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-regexp", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-sonarjs", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eslint-plugin-tsdoc", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "eventsource-parser", - "allowedCategories": ["production"] - }, - { - "name": "exponential-backoff", - "allowedCategories": ["production"] - }, - { - "name": "fast-glob", - "allowedCategories": ["production", "tools"] - }, - { - "name": "fast-levenshtein", - "allowedCategories": ["production"] - }, - { - "name": "fetch-cookie", - "allowedCategories": ["production"] - }, - { - "name": "fetch-mock", - "allowedCategories": ["production"] - }, - { - "name": "find-up", - "allowedCategories": ["tools"] - }, - { - "name": "fix-esm-import-path", - "allowedCategories": ["production"] - }, - { - "name": "fixed-data-table-2", - "allowedCategories": ["production"] - }, - { - "name": "fork-ts-checker-webpack-plugin", - "allowedCategories": ["examples", "production"] - }, - { - "name": "fs-extra", - "allowedCategories": ["tools"] - }, - { - "name": "full-icu", - "allowedCategories": ["production"] - }, - { - "name": "glob", - "allowedCategories": ["production"] - }, - { - "name": "happy-dom", - "allowedCategories": ["production", "tools"] - }, - { - "name": "highcharts", - "allowedCategories": ["examples", "production"] - }, - { - "name": "highcharts-react-official", - "allowedCategories": ["examples", "production"] - }, - { - "name": "history", - "allowedCategories": ["examples"] - }, - { - "name": "hoist-non-react-statics", - "allowedCategories": ["production"] - }, - { - "name": "html-validate", - "allowedCategories": ["tools"] - }, - { - "name": "html-webpack-plugin", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "http-status-codes", - "allowedCategories": ["production"] - }, - { - "name": "chalk", - "allowedCategories": ["production", "tools"] - }, - { - "name": "chokidar", - "allowedCategories": ["tools"] - }, - { - "name": "immer", - "allowedCategories": ["production"] - }, - { - "name": "inquirer", - "allowedCategories": ["tools"] - }, - { - "name": "isomorphic-fetch", - "allowedCategories": ["examples", "production"] - }, - { - "name": "js-object-pretty-print", - "allowedCategories": ["production"] - }, - { - "name": "js-yaml", - "allowedCategories": ["production"] - }, - { - "name": "jsdom", - "allowedCategories": ["production"] - }, - { - "name": "json-loader", - "allowedCategories": ["production"] - }, - { - "name": "json-stable-stringify", - "allowedCategories": ["production", "tools"] - }, - { - "name": "json5", - "allowedCategories": ["tools"] - }, - { - "name": "jsonschema", - "allowedCategories": ["tools"] - }, - { - "name": "kefir", - "allowedCategories": ["production"] - }, - { - "name": "lru-cache", - "allowedCategories": ["production"] - }, - { - "name": "lz-string", - "allowedCategories": ["production"] - }, - { - "name": "mapbox-gl", - "allowedCategories": ["production"] - }, - { - "name": "mdast", - "allowedCategories": ["production"] - }, - { - "name": "mini-css-extract-plugin", - "allowedCategories": ["production"] - }, - { - "name": "mkdirp", - "allowedCategories": ["production", "tools"] - }, - { - "name": "mocha", - "allowedCategories": ["production"] - }, - { - "name": "mocha-junit-reporter", - "allowedCategories": ["production"] - }, - { - "name": "moment", - "allowedCategories": ["examples", "production"] - }, - { - "name": "node-fetch", - "allowedCategories": ["production"] - }, - { - "name": "node-xlsx", - "allowedCategories": ["production"] - }, - { - "name": "npm-run-all", - "allowedCategories": ["examples", "production"] - }, - { - "name": "open", - "allowedCategories": ["tools"] - }, - { - "name": "ora", - "allowedCategories": ["tools"] - }, - { - "name": "p-map", - "allowedCategories": ["tools"] - }, - { - "name": "pdf-parse", - "allowedCategories": ["production"] - }, - { - "name": "polished", - "allowedCategories": ["production"] - }, - { - "name": "postcss", - "allowedCategories": ["production"] - }, - { - "name": "postcss-value-parser", - "allowedCategories": ["production"] - }, - { - "name": "process", - "allowedCategories": ["examples", "tools"] - }, - { - "name": "qs", - "allowedCategories": ["production"] - }, - { - "name": "raf", - "allowedCategories": ["production", "tools"] - }, - { - "name": "react", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "react-content-loader", - "allowedCategories": ["production"] - }, - { - "name": "react-datepicker", - "allowedCategories": ["examples"] - }, - { - "name": "react-day-picker", - "allowedCategories": ["production"] - }, - { - "name": "react-dnd", - "allowedCategories": ["production"] - }, - { - "name": "react-dnd-html5-backend", - "allowedCategories": ["production"] - }, - { - "name": "react-dom", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "react-fast-compare", - "allowedCategories": ["production"] - }, - { - "name": "react-ga", - "allowedCategories": ["examples"] - }, - { - "name": "react-google-recaptcha", - "allowedCategories": ["examples"] - }, - { - "name": "react-grid-system", - "allowedCategories": ["production"] - }, - { - "name": "react-helmet", - "allowedCategories": ["examples", "production"] - }, - { - "name": "react-intl", - "allowedCategories": ["production", "tools"] - }, - { - "name": "react-lines-ellipsis", - "allowedCategories": ["production"] - }, - { - "name": "react-loading-skeleton", - "allowedCategories": ["production"] - }, - { - "name": "react-markdown", - "allowedCategories": ["production"] - }, - { - "name": "react-measure", - "allowedCategories": ["examples", "production"] - }, - { - "name": "react-native-listener", - "allowedCategories": ["production"] - }, - { - "name": "react-portal", - "allowedCategories": ["production"] - }, - { - "name": "react-redux", - "allowedCategories": ["production"] - }, - { - "name": "react-responsive", - "allowedCategories": ["production"] - }, - { - "name": "react-router-dom", - "allowedCategories": ["examples", "production"] - }, - { - "name": "react-select", - "allowedCategories": ["examples", "production"] - }, - { - "name": "react-select-async-paginate", - "allowedCategories": ["production"] - }, - { - "name": "react-syntax-highlighter", - "allowedCategories": ["examples"] - }, - { - "name": "react-textarea-autosize", - "allowedCategories": ["production"] - }, - { - "name": "react-transition-group", - "allowedCategories": ["production"] - }, - { - "name": "react-window", - "allowedCategories": ["production"] - }, - { - "name": "redux-batched-actions", - "allowedCategories": ["production"] - }, - { - "name": "redux-saga", - "allowedCategories": ["production"] - }, - { - "name": "recharts", - "allowedCategories": ["examples"] - }, - { - "name": "remark", - "allowedCategories": ["production"] - }, - { - "name": "remark-emoji", - "allowedCategories": ["production"] - }, - { - "name": "require-from-string", - "allowedCategories": ["production"] - }, - { - "name": "reselect", - "allowedCategories": ["production"] - }, - { - "name": "sass", - "allowedCategories": ["examples", "production"] - }, - { - "name": "sass-loader", - "allowedCategories": ["examples", "production"] - }, - { - "name": "semver", - "allowedCategories": ["production"] - }, - { - "name": "source-map-loader", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "spark-md5", - "allowedCategories": ["production"] - }, - { - "name": "speed-measure-webpack-plugin", - "allowedCategories": ["examples"] - }, - { - "name": "storybook", - "allowedCategories": ["production"] - }, - { - "name": "stringify-object", - "allowedCategories": ["production"] - }, - { - "name": "strip-ansi", - "allowedCategories": ["tools"] - }, - { - "name": "style-loader", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "styled-jsx", - "allowedCategories": ["examples", "production"] - }, - { - "name": "stylelint", - "allowedCategories": ["production"] - }, - { - "name": "svgo", - "allowedCategories": ["production"] - }, - { - "name": "tar", - "allowedCategories": ["tools"] - }, - { - "name": "tinycolor2", - "allowedCategories": ["production"] - }, - { - "name": "ts-invariant", - "allowedCategories": ["examples", "production"] - }, - { - "name": "ts-loader", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "ts-morph", - "allowedCategories": ["tools"] - }, - { - "name": "tsd", - "allowedCategories": ["production"] - }, - { - "name": "tslib", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "typescript", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "unified", - "allowedCategories": ["production"] - }, - { - "name": "util", - "allowedCategories": ["examples", "tools"] - }, - { - "name": "uuid", - "allowedCategories": ["production"] - }, - { - "name": "validate-npm-package-name", - "allowedCategories": ["examples", "tools"] - }, - { - "name": "vite", - "allowedCategories": ["examples", "production"] - }, - { - "name": "vite-plugin-html", - "allowedCategories": ["examples"] - }, - { - "name": "vite-plugin-mkcert", - "allowedCategories": ["examples"] - }, - { - "name": "vite-plugin-static-copy", - "allowedCategories": ["production"] - }, - { - "name": "vitest", - "allowedCategories": ["production", "tools"] - }, - { - "name": "vitest-dom", - "allowedCategories": ["production"] - }, - { - "name": "wait-on", - "allowedCategories": ["production"] - }, - { - "name": "watchpack", - "allowedCategories": ["tools"] - }, - { - "name": "webpack", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "webpack-bundle-analyzer", - "allowedCategories": ["production", "tools"] - }, - { - "name": "webpack-cli", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "webpack-dev-server", - "allowedCategories": ["examples", "production", "tools"] - }, - { - "name": "xml2js", - "allowedCategories": ["production"] - } - ] -} +// DO NOT ADD COMMENTS IN THIS FILE. They will be lost when the Rush tool resaves it. +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json", + "packages": [ + { + "name": "@aaronhayes/react-use-hubspot-form", + "allowedCategories": [ "production" ] + }, + { + "name": "@babel/cli", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@babel/core", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@babel/plugin-proposal-export-default-from", + "allowedCategories": [ "production" ] + }, + { + "name": "@babel/plugin-transform-async-to-generator", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@babel/plugin-transform-class-properties", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@babel/plugin-transform-object-rest-spread", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@babel/plugin-transform-typescript", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@babel/preset-env", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@babel/preset-react", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@babel/preset-typescript", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@babel/runtime", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@braintree/sanitize-url", + "allowedCategories": [ "production" ] + }, + { + "name": "@codemirror/autocomplete", + "allowedCategories": [ "production" ] + }, + { + "name": "@codemirror/commands", + "allowedCategories": [ "production" ] + }, + { + "name": "@codemirror/lang-yaml", + "allowedCategories": [ "production" ] + }, + { + "name": "@codemirror/language", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@codemirror/lint", + "allowedCategories": [ "production" ] + }, + { + "name": "@codemirror/state", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@codemirror/view", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@componentdriven/csf", + "allowedCategories": [ "production" ] + }, + { + "name": "@eslint/js", + "allowedCategories": [ "tools" ] + }, + { + "name": "@evil-internetmann/react-dnd", + "allowedCategories": [ "production" ] + }, + { + "name": "@floating-ui/dom", + "allowedCategories": [ "production" ] + }, + { + "name": "@floating-ui/react", + "allowedCategories": [ "production" ] + }, + { + "name": "@floating-ui/react-dom", + "allowedCategories": [ "production" ] + }, + { + "name": "@formatjs/cli-lib", + "allowedCategories": [ "tools" ] + }, + { + "name": "@formatjs/icu-messageformat-parser", + "allowedCategories": [ "tools" ] + }, + { + "name": "@gooddata/api-client-tiger", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@gooddata/catalog-export", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/emailjs-mime-codec-new", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/eslint-config", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/fixtures", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@gooddata/i18n-toolkit", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/lint-config", + "allowedCategories": [ "tools" ] + }, + { + "name": "@gooddata/mock-handling", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@gooddata/number-formatter", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/oxlint-config", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/plugin-toolkit", + "allowedCategories": [ "tools" ] + }, + { + "name": "@gooddata/reference-workspace", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-backend-base", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-backend-mockingbird", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-backend-spi", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-backend-tiger", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-code-convertors", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-code-schemas", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-e2e-utils", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-embedding", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-model", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-pluggable-application-model", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-ui", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-catalog", + "allowedCategories": [ "examples" ] + }, + { + "name": "@gooddata/sdk-ui-charts", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-dashboard", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-ext", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-filters", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-gen-ai", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-geo", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-kit", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-loaders", + "allowedCategories": [ "examples", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-pivot", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@gooddata/sdk-ui-semantic-search", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@gooddata/sdk-ui-tests-app", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-ui-tests-reference-workspace", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-ui-tests-scenarios", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-ui-theme-provider", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@gooddata/sdk-ui-vis-commons", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/sdk-ui-web-components", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/stylelint-config", + "allowedCategories": [ "production" ] + }, + { + "name": "@gooddata/util", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@joint/core", + "allowedCategories": [ "production" ] + }, + { + "name": "@joint/layout-directed-graph", + "allowedCategories": [ "production" ] + }, + { + "name": "@lezer/highlight", + "allowedCategories": [ "production" ] + }, + { + "name": "@microsoft/api-documenter", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@microsoft/api-extractor", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@openapitools/openapi-generator-cli", + "allowedCategories": [ "production" ] + }, + { + "name": "@playwright/test", + "allowedCategories": [ "production" ] + }, + { + "name": "@react-aria/interactions", + "allowedCategories": [ "production" ] + }, + { + "name": "@reduxjs/toolkit", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/addon-a11y", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/builder-vite", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/builder-webpack5", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/cli", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/manager-webpack5", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/preset-scss", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/react", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/react-vite", + "allowedCategories": [ "production" ] + }, + { + "name": "@storybook/react-webpack5", + "allowedCategories": [ "production" ] + }, + { + "name": "@tanstack/react-virtual", + "allowedCategories": [ "production" ] + }, + { + "name": "@testing-library/dom", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@testing-library/react", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@testing-library/user-event", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/babel__core", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/blessed", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/columnify", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/cross-spawn", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/debounce-promise", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/fast-levenshtein", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/fs-extra", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/geojson", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/history", + "allowedCategories": [ "examples" ] + }, + { + "name": "@types/hoist-non-react-statics", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/inquirer", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/isomorphic-fetch", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@types/js-yaml", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/json5", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/kefir", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/lodash-es", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@types/mapbox-gl", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/maplibre-gl", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/mdast", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/node", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@types/node-fetch", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/pdf-parse", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/qs", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/raf", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@types/react", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@types/react-datepicker", + "allowedCategories": [ "examples" ] + }, + { + "name": "@types/react-dom", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@types/react-google-recaptcha", + "allowedCategories": [ "examples" ] + }, + { + "name": "@types/react-helmet", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@types/react-lines-ellipsis", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/react-measure", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@types/react-native-listener", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/react-portal", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/react-redux", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/react-router-dom", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@types/react-syntax-highlighter", + "allowedCategories": [ "examples" ] + }, + { + "name": "@types/react-textarea-autosize", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/react-transition-group", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/rimraf", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/semver", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/spark-md5", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/stringify-object", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/tar", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/tinycolor2", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/tough-cookie", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/unist", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/uuid", + "allowedCategories": [ "production" ] + }, + { + "name": "@types/validate-npm-package-name", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/watchpack", + "allowedCategories": [ "tools" ] + }, + { + "name": "@types/webpack-env", + "allowedCategories": [ "examples" ] + }, + { + "name": "@typescript-eslint/eslint-plugin", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@typescript-eslint/parser", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@typescript/native-preview", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "@vitejs/plugin-react", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "@vitejs/plugin-react-swc", + "allowedCategories": [ "examples" ] + }, + { + "name": "@vitest/eslint-plugin", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "@welldone-software/why-did-you-render", + "allowedCategories": [ "examples" ] + }, + { + "name": "ag-grid-community", + "allowedCategories": [ "production" ] + }, + { + "name": "ag-grid-enterprise", + "allowedCategories": [ "production" ] + }, + { + "name": "ag-grid-react", + "allowedCategories": [ "production" ] + }, + { + "name": "async", + "allowedCategories": [ "production" ] + }, + { + "name": "axios", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "axios-cache-interceptor", + "allowedCategories": [ "production" ] + }, + { + "name": "babel-loader", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "babel-plugin-lodash", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "babel-plugin-require-context-hook", + "allowedCategories": [ "production" ] + }, + { + "name": "blessed", + "allowedCategories": [ "tools" ] + }, + { + "name": "blob-polyfill", + "allowedCategories": [ "production" ] + }, + { + "name": "case-sensitive-paths-webpack-plugin", + "allowedCategories": [ "examples", "tools" ] + }, + { + "name": "chalk", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "chokidar", + "allowedCategories": [ "tools" ] + }, + { + "name": "circular-dependency-plugin", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "classnames", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "clean-webpack-plugin", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "codemirror", + "allowedCategories": [ "production" ] + }, + { + "name": "columnify", + "allowedCategories": [ "tools" ] + }, + { + "name": "commander", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "compression-webpack-plugin", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "concurrently", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "copy-to-clipboard", + "allowedCategories": [ "production" ] + }, + { + "name": "copy-webpack-plugin", + "allowedCategories": [ "production" ] + }, + { + "name": "core-js", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "cron-parser", + "allowedCategories": [ "production" ] + }, + { + "name": "cross-spawn", + "allowedCategories": [ "tools" ] + }, + { + "name": "css-loader", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "date-fns", + "allowedCategories": [ "production" ] + }, + { + "name": "date-fns-tz", + "allowedCategories": [ "production" ] + }, + { + "name": "debounce-promise", + "allowedCategories": [ "production" ] + }, + { + "name": "default-import", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "dependency-cruiser", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "dotenv", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "dotenv-webpack", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "downshift", + "allowedCategories": [ "production" ] + }, + { + "name": "esbuild-loader", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-import-resolver-typescript", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-chai-friendly", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "eslint-plugin-header", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-headers", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-import", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-import-esm", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-import-x", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-jsdoc", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-no-barrel-files", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-no-only-tests", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-playwright", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "eslint-plugin-react", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-react-hooks", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-regexp", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-sonarjs", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eslint-plugin-storybook", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "eslint-plugin-tsdoc", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "eventsource-parser", + "allowedCategories": [ "production" ] + }, + { + "name": "exponential-backoff", + "allowedCategories": [ "production" ] + }, + { + "name": "fast-equals", + "allowedCategories": [ "production" ] + }, + { + "name": "fast-glob", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "fast-levenshtein", + "allowedCategories": [ "production" ] + }, + { + "name": "fetch-cookie", + "allowedCategories": [ "production" ] + }, + { + "name": "fetch-mock", + "allowedCategories": [ "production" ] + }, + { + "name": "find-up", + "allowedCategories": [ "tools" ] + }, + { + "name": "fix-esm-import-path", + "allowedCategories": [ "production" ] + }, + { + "name": "fixed-data-table-2", + "allowedCategories": [ "production" ] + }, + { + "name": "fork-ts-checker-webpack-plugin", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "fs-extra", + "allowedCategories": [ "tools" ] + }, + { + "name": "full-icu", + "allowedCategories": [ "production" ] + }, + { + "name": "glob", + "allowedCategories": [ "production" ] + }, + { + "name": "globals", + "allowedCategories": [ "tools" ] + }, + { + "name": "happy-dom", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "highcharts", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "highcharts-react-official", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "history", + "allowedCategories": [ "examples" ] + }, + { + "name": "hoist-non-react-statics", + "allowedCategories": [ "production" ] + }, + { + "name": "html-validate", + "allowedCategories": [ "tools" ] + }, + { + "name": "html-webpack-plugin", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "http-status-codes", + "allowedCategories": [ "production" ] + }, + { + "name": "immer", + "allowedCategories": [ "production" ] + }, + { + "name": "inquirer", + "allowedCategories": [ "tools" ] + }, + { + "name": "isomorphic-fetch", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "jiti", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "js-object-pretty-print", + "allowedCategories": [ "production" ] + }, + { + "name": "js-yaml", + "allowedCategories": [ "production" ] + }, + { + "name": "jsdom", + "allowedCategories": [ "production" ] + }, + { + "name": "json-loader", + "allowedCategories": [ "production" ] + }, + { + "name": "json-schema-to-typescript", + "allowedCategories": [ "production" ] + }, + { + "name": "json-stable-stringify", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "json5", + "allowedCategories": [ "tools" ] + }, + { + "name": "jsonschema", + "allowedCategories": [ "tools" ] + }, + { + "name": "kefir", + "allowedCategories": [ "production" ] + }, + { + "name": "lodash-es", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "lru-cache", + "allowedCategories": [ "production" ] + }, + { + "name": "lz-string", + "allowedCategories": [ "production" ] + }, + { + "name": "mapbox-gl", + "allowedCategories": [ "production" ] + }, + { + "name": "maplibre-gl", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "mdast", + "allowedCategories": [ "production" ] + }, + { + "name": "mini-css-extract-plugin", + "allowedCategories": [ "production" ] + }, + { + "name": "mkdirp", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "mocha", + "allowedCategories": [ "production" ] + }, + { + "name": "mocha-junit-reporter", + "allowedCategories": [ "production" ] + }, + { + "name": "moment", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "moment-timezone", + "allowedCategories": [ "production" ] + }, + { + "name": "node-fetch", + "allowedCategories": [ "production" ] + }, + { + "name": "node-xlsx", + "allowedCategories": [ "production" ] + }, + { + "name": "npm-run-all", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "open", + "allowedCategories": [ "tools" ] + }, + { + "name": "ora", + "allowedCategories": [ "tools" ] + }, + { + "name": "oxfmt", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "oxlint", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "oxlint-tsgolint", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "p-map", + "allowedCategories": [ "tools" ] + }, + { + "name": "pdf-parse", + "allowedCategories": [ "production" ] + }, + { + "name": "polished", + "allowedCategories": [ "production" ] + }, + { + "name": "postcss", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "postcss-scss", + "allowedCategories": [ "tools" ] + }, + { + "name": "postcss-value-parser", + "allowedCategories": [ "production" ] + }, + { + "name": "prettier", + "allowedCategories": [ "production" ] + }, + { + "name": "process", + "allowedCategories": [ "examples", "tools" ] + }, + { + "name": "qs", + "allowedCategories": [ "production" ] + }, + { + "name": "raf", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "react", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "react-content-loader", + "allowedCategories": [ "production" ] + }, + { + "name": "react-datepicker", + "allowedCategories": [ "examples" ] + }, + { + "name": "react-day-picker", + "allowedCategories": [ "production" ] + }, + { + "name": "react-dnd", + "allowedCategories": [ "production" ] + }, + { + "name": "react-dnd-html5-backend", + "allowedCategories": [ "production" ] + }, + { + "name": "react-dom", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "react-fast-compare", + "allowedCategories": [ "production" ] + }, + { + "name": "react-ga", + "allowedCategories": [ "examples" ] + }, + { + "name": "react-google-recaptcha", + "allowedCategories": [ "examples" ] + }, + { + "name": "react-grid-system", + "allowedCategories": [ "production" ] + }, + { + "name": "react-helmet", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "react-intl", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "react-lines-ellipsis", + "allowedCategories": [ "production" ] + }, + { + "name": "react-loading-skeleton", + "allowedCategories": [ "production" ] + }, + { + "name": "react-markdown", + "allowedCategories": [ "production" ] + }, + { + "name": "react-measure", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "react-native-listener", + "allowedCategories": [ "production" ] + }, + { + "name": "react-portal", + "allowedCategories": [ "production" ] + }, + { + "name": "react-redux", + "allowedCategories": [ "production" ] + }, + { + "name": "react-responsive", + "allowedCategories": [ "production" ] + }, + { + "name": "react-router-dom", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "react-select", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "react-select-async-paginate", + "allowedCategories": [ "production" ] + }, + { + "name": "react-syntax-highlighter", + "allowedCategories": [ "examples" ] + }, + { + "name": "react-textarea-autosize", + "allowedCategories": [ "production" ] + }, + { + "name": "react-transition-group", + "allowedCategories": [ "production" ] + }, + { + "name": "react-window", + "allowedCategories": [ "production" ] + }, + { + "name": "readdirp", + "allowedCategories": [ "production" ] + }, + { + "name": "recharts", + "allowedCategories": [ "examples" ] + }, + { + "name": "redux", + "allowedCategories": [ "production" ] + }, + { + "name": "redux-batched-actions", + "allowedCategories": [ "production" ] + }, + { + "name": "redux-saga", + "allowedCategories": [ "production" ] + }, + { + "name": "remark", + "allowedCategories": [ "production" ] + }, + { + "name": "remark-emoji", + "allowedCategories": [ "production" ] + }, + { + "name": "remark-gfm", + "allowedCategories": [ "production" ] + }, + { + "name": "require-from-string", + "allowedCategories": [ "production" ] + }, + { + "name": "reselect", + "allowedCategories": [ "production" ] + }, + { + "name": "rolldown", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "rollup", + "allowedCategories": [ "production" ] + }, + { + "name": "sass", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "sass-loader", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "semver", + "allowedCategories": [ "production" ] + }, + { + "name": "source-map-loader", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "spark-md5", + "allowedCategories": [ "production" ] + }, + { + "name": "speed-measure-webpack-plugin", + "allowedCategories": [ "examples" ] + }, + { + "name": "storybook", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "stringify-object", + "allowedCategories": [ "production" ] + }, + { + "name": "strip-ansi", + "allowedCategories": [ "tools" ] + }, + { + "name": "style-loader", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "styled-jsx", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "stylelint", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "stylelint-config-standard", + "allowedCategories": [ "tools" ] + }, + { + "name": "stylelint-order", + "allowedCategories": [ "tools" ] + }, + { + "name": "stylelint-plugin-defensive-css", + "allowedCategories": [ "tools" ] + }, + { + "name": "stylelint-scss", + "allowedCategories": [ "tools" ] + }, + { + "name": "svgo", + "allowedCategories": [ "production" ] + }, + { + "name": "tar", + "allowedCategories": [ "tools" ] + }, + { + "name": "tinycolor2", + "allowedCategories": [ "production" ] + }, + { + "name": "ts-invariant", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "ts-loader", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "ts-morph", + "allowedCategories": [ "tools" ] + }, + { + "name": "tsd", + "allowedCategories": [ "production" ] + }, + { + "name": "tslib", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "typescript", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "unified", + "allowedCategories": [ "production" ] + }, + { + "name": "util", + "allowedCategories": [ "examples", "tools" ] + }, + { + "name": "uuid", + "allowedCategories": [ "production" ] + }, + { + "name": "validate-npm-package-name", + "allowedCategories": [ "examples", "tools" ] + }, + { + "name": "vite", + "allowedCategories": [ "examples", "production" ] + }, + { + "name": "vite-node", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "vite-plugin-css-injected-by-js", + "allowedCategories": [ "production" ] + }, + { + "name": "vite-plugin-environment", + "allowedCategories": [ "production" ] + }, + { + "name": "vite-plugin-html", + "allowedCategories": [ "examples" ] + }, + { + "name": "vite-plugin-mkcert", + "allowedCategories": [ "examples" ] + }, + { + "name": "vite-plugin-static-copy", + "allowedCategories": [ "production" ] + }, + { + "name": "vitest", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "vitest-dom", + "allowedCategories": [ "production" ] + }, + { + "name": "wait-on", + "allowedCategories": [ "production" ] + }, + { + "name": "watchpack", + "allowedCategories": [ "tools" ] + }, + { + "name": "webpack", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "webpack-bundle-analyzer", + "allowedCategories": [ "production", "tools" ] + }, + { + "name": "webpack-cli", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "webpack-dev-server", + "allowedCategories": [ "examples", "production", "tools" ] + }, + { + "name": "xml2js", + "allowedCategories": [ "production" ] + }, + { + "name": "yaml", + "allowedCategories": [ "production" ] + }, + { + "name": "zod", + "allowedCategories": [ "production" ] + } + ] +} diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 0674b4108e5..6b799da641a 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -8,7 +8,7 @@ importers: .: {} - ../../../sdk/examples/playground: + ../../examples/playground: devDependencies: '@codemirror/state': specifier: 6.5.3 @@ -167,13 +167,13 @@ importers: specifier: 8.0.0 version: 8.0.0(@types/node@24.12.0)(sass@1.70.0) - ../../../sdk/examples/sdk-interactive-examples: + ../../examples/sdk-interactive-examples: devDependencies: validate-npm-package-name: specifier: ^5.0.0 version: 5.0.1 - ../../../sdk/examples/sdk-interactive-examples/examples-template: + ../../examples/sdk-interactive-examples/examples-template: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -309,7 +309,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-attributefilter: + ../../examples/sdk-interactive-examples/examples/example-attributefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -445,7 +445,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-chartconfig: + ../../examples/sdk-interactive-examples/examples/example-chartconfig: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -581,7 +581,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-columnchart: + ../../examples/sdk-interactive-examples/examples/example-columnchart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -717,7 +717,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-combochart: + ../../examples/sdk-interactive-examples/examples/example-combochart: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -853,7 +853,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-dashboard: + ../../examples/sdk-interactive-examples/examples/example-dashboard: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -989,7 +989,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-datefilter: + ../../examples/sdk-interactive-examples/examples/example-datefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1125,7 +1125,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-dependentfilters: + ../../examples/sdk-interactive-examples/examples/example-dependentfilters: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1261,7 +1261,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-execute: + ../../examples/sdk-interactive-examples/examples/example-execute: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1406,7 +1406,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-granularity: + ../../examples/sdk-interactive-examples/examples/example-granularity: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1542,7 +1542,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-headline: + ../../examples/sdk-interactive-examples/examples/example-headline: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1678,7 +1678,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-pivottable: + ../../examples/sdk-interactive-examples/examples/example-pivottable: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1814,7 +1814,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-relativedatefilter: + ../../examples/sdk-interactive-examples/examples/example-relativedatefilter: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -1950,7 +1950,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/examples/sdk-interactive-examples/examples/example-repeater: + ../../examples/sdk-interactive-examples/examples/example-repeater: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -2086,7 +2086,7 @@ importers: specifier: ~3.2.0 version: 3.2.2(vite@8.0.0) - ../../../sdk/libs/api-client-tiger: + ../../libs/api-client-tiger: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2189,7 +2189,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-backend-base: + ../../libs/sdk-backend-base: dependencies: '@braintree/sanitize-url': specifier: ^6.0.0 @@ -2301,7 +2301,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-backend-mockingbird: + ../../libs/sdk-backend-mockingbird: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -2401,7 +2401,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-backend-spi: + ../../libs/sdk-backend-spi: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2486,7 +2486,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-backend-tiger: + ../../libs/sdk-backend-tiger: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2628,7 +2628,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-code-convertors: + ../../libs/sdk-code-convertors: dependencies: '@gooddata/api-client-tiger': specifier: workspace:* @@ -2710,7 +2710,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0)(yaml@2.8.3) - ../../../sdk/libs/sdk-code-schemas: + ../../libs/sdk-code-schemas: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -2788,7 +2788,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-e2e-utils: + ../../libs/sdk-e2e-utils: dependencies: '@playwright/test': specifier: 1.59.1 @@ -2876,7 +2876,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/libs/sdk-embedding: + ../../libs/sdk-embedding: dependencies: '@gooddata/sdk-model': specifier: workspace:* @@ -2961,7 +2961,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-model: + ../../libs/sdk-model: dependencies: '@types/geojson': specifier: ^7946.0.16 @@ -3061,7 +3061,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/libs/sdk-pluggable-application-model: + ../../libs/sdk-pluggable-application-model: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3146,7 +3146,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/libs/sdk-ui: + ../../libs/sdk-ui: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -3333,7 +3333,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-all: + ../../libs/sdk-ui-all: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -3430,7 +3430,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/libs/sdk-ui-catalog: + ../../libs/sdk-ui-catalog: dependencies: '@babel/core': specifier: 7.28.4 @@ -3626,7 +3626,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-charts: + ../../libs/sdk-ui-charts: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -3849,7 +3849,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-dashboard: + ../../libs/sdk-ui-dashboard: dependencies: '@codemirror/language': specifier: 6.12.1 @@ -4117,7 +4117,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-ext: + ../../libs/sdk-ui-ext: dependencies: '@codemirror/commands': specifier: 6.10.1 @@ -4400,7 +4400,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-filters: + ../../libs/sdk-ui-filters: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -4602,7 +4602,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-gen-ai: + ../../libs/sdk-ui-gen-ai: dependencies: '@codemirror/autocomplete': specifier: 6.20.0 @@ -4849,7 +4849,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-geo: + ../../libs/sdk-ui-geo: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -5036,7 +5036,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-kit: + ../../libs/sdk-ui-kit: dependencies: '@aaronhayes/react-use-hubspot-form': specifier: 2.1.2 @@ -5328,7 +5328,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-loaders: + ../../libs/sdk-ui-loaders: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -5461,7 +5461,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/libs/sdk-ui-pivot: + ../../libs/sdk-ui-pivot: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -5651,7 +5651,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-pluggable-application: + ../../libs/sdk-ui-pluggable-application: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -5775,7 +5775,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/libs/sdk-ui-semantic-search: + ../../libs/sdk-ui-semantic-search: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -5935,7 +5935,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-tests-app: + ../../libs/sdk-ui-tests-app: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6070,7 +6070,7 @@ importers: specifier: 8.0.0 version: 8.0.0(@types/node@24.12.0)(sass@1.70.0) - ../../../sdk/libs/sdk-ui-tests-e2e: + ../../libs/sdk-ui-tests-e2e: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6169,7 +6169,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/libs/sdk-ui-tests-reference-workspace: + ../../libs/sdk-ui-tests-reference-workspace: devDependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -6235,7 +6235,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/libs/sdk-ui-tests-scenarios: + ../../libs/sdk-ui-tests-scenarios: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6397,7 +6397,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/libs/sdk-ui-tests-storybook: + ../../libs/sdk-ui-tests-storybook: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -6625,7 +6625,7 @@ importers: specifier: 3.1.2 version: 3.1.2(vite@8.0.0) - ../../../sdk/libs/sdk-ui-theme-provider: + ../../libs/sdk-ui-theme-provider: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -6782,7 +6782,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/libs/sdk-ui-vis-commons: + ../../libs/sdk-ui-vis-commons: dependencies: '@gooddata/number-formatter': specifier: ^1.0.6 @@ -6951,7 +6951,7 @@ importers: specifier: 0.1.1 version: 0.1.1(vitest@4.1.0) - ../../../sdk/libs/sdk-ui-web-components: + ../../libs/sdk-ui-web-components: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -7120,7 +7120,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/libs/util: + ../../libs/util: dependencies: lodash-es: specifier: ^4.17.23 @@ -7202,7 +7202,7 @@ importers: specifier: 4.1.0 version: 4.1.0(happy-dom@18.0.1)(sass@1.70.0) - ../../../sdk/tools/app-toolkit: + ../../tools/app-toolkit: dependencies: '@babel/cli': specifier: ^7.23.4 @@ -7359,7 +7359,7 @@ importers: specifier: 5.93.0 version: 5.93.0(webpack-cli@6.0.1) - ../../../sdk/tools/applink: + ../../tools/applink: devDependencies: '@gooddata/eslint-config': specifier: workspace:* @@ -7464,7 +7464,7 @@ importers: specifier: ^2.4.4 version: 2.4.4 - ../../../sdk/tools/catalog-export: + ../../tools/catalog-export: dependencies: '@babel/core': specifier: 7.28.4 @@ -7588,7 +7588,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/tools/dashboard-plugin-template: + ../../tools/dashboard-plugin-template: dependencies: json-stable-stringify: specifier: 1.3.0 @@ -7784,7 +7784,7 @@ importers: specifier: 5.2.2 version: 5.2.2(webpack-cli@6.0.1)(webpack@5.93.0) - ../../../sdk/tools/eslint-config: + ../../tools/eslint-config: devDependencies: '@eslint/js': specifier: 9.28.0 @@ -7877,7 +7877,7 @@ importers: specifier: ^5.2.0 version: 5.2.0(@types/node@24.12.0)(jiti@2.6.1) - ../../../sdk/tools/i18n-toolkit: + ../../tools/i18n-toolkit: dependencies: '@formatjs/cli-lib': specifier: ^6.1.1 @@ -7986,7 +7986,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/tools/lint-config: + ../../tools/lint-config: devDependencies: '@typescript/native-preview': specifier: 7.0.0-dev.20260202.1 @@ -8001,7 +8001,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/tools/mock-handling: + ../../tools/mock-handling: dependencies: '@gooddata/sdk-backend-base': specifier: workspace:* @@ -8110,7 +8110,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/tools/oxlint-config: + ../../tools/oxlint-config: devDependencies: '@eslint/js': specifier: 9.28.0 @@ -8188,7 +8188,7 @@ importers: specifier: ^5.2.0 version: 5.2.0(@types/node@24.12.0)(jiti@2.6.1) - ../../../sdk/tools/plugin-toolkit: + ../../tools/plugin-toolkit: dependencies: '@babel/cli': specifier: ^7.23.4 @@ -8336,7 +8336,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/tools/react-app-template: + ../../tools/react-app-template: dependencies: '@codemirror/state': specifier: 6.5.3 @@ -8499,7 +8499,7 @@ importers: specifier: 5.2.2 version: 5.2.2(webpack-cli@6.0.1)(webpack@5.93.0) - ../../../sdk/tools/reference-workspace: + ../../tools/reference-workspace: dependencies: '@gooddata/sdk-backend-spi': specifier: workspace:* @@ -8575,7 +8575,7 @@ importers: specifier: 5.9.3 version: 5.9.3 - ../../../sdk/tools/reference-workspace-mgmt: + ../../tools/reference-workspace-mgmt: dependencies: '@gooddata/catalog-export': specifier: workspace:* @@ -8657,7 +8657,7 @@ importers: specifier: 4.1.0 version: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) - ../../../sdk/tools/stylelint-config: + ../../tools/stylelint-config: dependencies: postcss: specifier: 8.5.6 @@ -8789,7 +8789,7 @@ packages: resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 /@babel/helper-compilation-targets@7.28.6: resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} @@ -8813,7 +8813,7 @@ packages: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.29.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8856,15 +8856,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-module-imports@7.27.1: - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - transitivePeerDependencies: - - supports-color - /@babel/helper-module-imports@7.28.6: resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} @@ -8874,19 +8865,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4): - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.4 - transitivePeerDependencies: - - supports-color - /@babel/helper-module-transforms@7.28.6(@babel/core@7.28.4): resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} @@ -8946,7 +8924,7 @@ packages: '@babel/core': 7.28.4 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -8954,8 +8932,8 @@ packages: resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -8963,10 +8941,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.27.1: - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.28.5: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -9484,7 +9458,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9693,10 +9667,10 @@ packages: dependencies: '@babel/core': 7.28.4 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/types': 7.28.4 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color dev: true @@ -10003,20 +9977,6 @@ packages: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 - /@babel/traverse@7.28.4: - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.0 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.29.0: resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} @@ -10031,13 +9991,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.28.4: - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - /@babel/types@7.29.0: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -10164,13 +10117,13 @@ packages: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 - /@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0): + /@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1): resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} engines: {node: '>=18'} peerDependencies: postcss-selector-parser: ^7.0.0 dependencies: - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 /@dagrejs/dagre@1.1.8: resolution: {integrity: sha512-5SEDlndt4W/LaVzPYJW+bSmSEZc9EzTf8rJ20WCKvjS5EAZAN0b+x0Yww7VMT4R3Wootkg+X9bUfUxazYw6Blw==} @@ -11591,7 +11544,7 @@ packages: /@nestjs/axios@4.0.1(@nestjs/common@11.1.6)(axios@1.12.2)(rxjs@7.8.2): resolution: {integrity: sha512-68pFJgu+/AZbWkGu65Z3r55bTsCPlgyKaV4BSG8yUAD72q1PPuyVRgUwFv6BxdnibTUHlyxm06FmYWNC+bjN7A==} peerDependencies: - '@nestjs/common': ^10.0.0 || ^11.0.0 + '@nestjs/common': ^10.0.0 || ^11.0.0 || 9.3.11 axios: ^1.3.1 rxjs: ^7.0.0 dependencies: @@ -11629,7 +11582,7 @@ packages: engines: {node: '>= 20'} requiresBuild: true peerDependencies: - '@nestjs/common': ^11.0.0 + '@nestjs/common': ^11.0.0 || 9.3.11 '@nestjs/microservices': ^11.0.0 '@nestjs/platform-express': ^11.0.0 '@nestjs/websockets': ^11.0.0 @@ -12146,7 +12099,7 @@ packages: react-redux: optional: true dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 '@standard-schema/utils': 0.3.0 immer: 10.1.1 react: 19.1.1 @@ -12303,7 +12256,7 @@ packages: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 dev: true /@rollup/rollup-android-arm-eabi@4.54.0: @@ -12615,10 +12568,6 @@ packages: engines: {node: '>=10'} dev: false - /@standard-schema/spec@1.0.0: - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - dev: false - /@standard-schema/spec@1.1.0: resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -12660,7 +12609,7 @@ packages: dependencies: '@storybook/codemod': 10.1.11(@testing-library/dom@10.4.1)(react-dom@19.1.1)(react@19.1.1) '@types/semver': 7.3.13 - commander: 14.0.2 + commander: 14.0.3 create-storybook: 10.1.11(@testing-library/dom@10.4.1)(react-dom@19.1.1)(react@19.1.1) jscodeshift: 0.15.2 storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.1.1)(react@19.1.1) @@ -13429,20 +13378,6 @@ packages: - supports-color dev: true - /@typescript-eslint/project-service@8.52.0(typescript@5.9.3): - resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - dependencies: - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.53.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/project-service@8.58.0(typescript@5.9.3): resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13457,14 +13392,6 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@8.52.0: - resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 - dev: true - /@typescript-eslint/scope-manager@8.58.0: resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13473,15 +13400,6 @@ packages: '@typescript-eslint/visitor-keys': 8.58.0 dev: true - /@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3): - resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - dependencies: - typescript: 5.9.3 - dev: true - /@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3): resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13509,41 +13427,11 @@ packages: - supports-color dev: true - /@typescript-eslint/types@8.52.0: - resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /@typescript-eslint/types@8.53.0: - resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@typescript-eslint/types@8.58.0: resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3): - resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - dependencies: - '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/visitor-keys': 8.52.0 - debug: 4.4.3 - minimatch: 10.1.2 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3): resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13564,23 +13452,6 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@8.52.0(eslint@9.39.2)(typescript@5.9.3): - resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/types': 8.52.0 - '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/utils@8.58.0(eslint@9.39.2)(typescript@5.9.3): resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13598,14 +13469,6 @@ packages: - supports-color dev: true - /@typescript-eslint/visitor-keys@8.52.0: - resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - '@typescript-eslint/types': 8.52.0 - eslint-visitor-keys: 4.2.1 - dev: true - /@typescript-eslint/visitor-keys@8.58.0: resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -13685,6 +13548,7 @@ packages: /@ungap/structured-clone@1.3.0: resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher dev: false /@unrs/resolver-binding-android-arm-eabi@1.11.1: @@ -13871,8 +13735,8 @@ packages: vitest: optional: true dependencies: - '@typescript-eslint/scope-manager': 8.52.0 - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/utils': 8.58.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 vitest: 4.1.0(@types/node@24.12.0)(happy-dom@18.0.1) @@ -14087,6 +13951,9 @@ packages: peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x + peerDependenciesMeta: + webpack: + optional: true dependencies: webpack: 5.93.0(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.93.0) @@ -14097,6 +13964,9 @@ packages: peerDependencies: webpack: ^5.82.0 webpack-cli: 6.x.x + peerDependenciesMeta: + webpack: + optional: true dependencies: webpack: 5.93.0(webpack-cli@6.0.1) webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.93.0) @@ -14109,6 +13979,8 @@ packages: webpack-cli: 6.x.x webpack-dev-server: '*' peerDependenciesMeta: + webpack: + optional: true webpack-dev-server: optional: true dependencies: @@ -14129,25 +14001,17 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-import-attributes@1.9.5(acorn@8.15.0): + /acorn-import-attributes@1.9.5(acorn@8.16.0): resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.15.0 + acorn: 8.16.0 /acorn-jsx-walk@2.0.0: resolution: {integrity: sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA==} dev: true - /acorn-jsx@5.3.2(acorn@8.15.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.15.0 - dev: true - /acorn-jsx@5.3.2(acorn@8.16.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -14163,29 +14027,16 @@ packages: acorn: 8.16.0 dev: true - /acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - dependencies: - acorn: 8.15.0 - /acorn-walk@8.3.5: resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} dependencies: acorn: 8.16.0 - dev: true - - /acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true /acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /ag-charts-community@13.1.0: resolution: {integrity: sha512-w+uFTjxlAoTq1+8tgUORtB/zr9jm38ibXzbbWnkBP9Dep9yahi5a1jZL7yExAX35uq3g9QtjTh0Oj/QPDBQ9Ew==} @@ -14630,6 +14481,9 @@ packages: peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' + peerDependenciesMeta: + webpack: + optional: true dependencies: '@babel/core': 7.28.4 find-cache-dir: 3.3.2 @@ -14699,6 +14553,7 @@ packages: /basic-ftp@5.0.5: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} + deprecated: Security vulnerability fixed in 5.2.1, please upgrade dev: true /batch@0.6.1: @@ -15107,11 +14962,6 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - /commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} - engines: {node: '>=20'} - dev: true - /commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -15778,16 +15628,14 @@ packages: engines: {node: '>=10'} peerDependencies: webpack: ^4 || ^5 + peerDependenciesMeta: + webpack: + optional: true dependencies: dotenv-defaults: 2.0.2 webpack: 5.93.0(webpack-cli@6.0.1) dev: true - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - dev: true - /dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} @@ -15900,20 +15748,12 @@ packages: tapable: 1.1.3 dev: true - /enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.3 - /enhanced-resolve@5.20.1: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.3.2 - dev: true /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} @@ -16115,6 +15955,9 @@ packages: resolution: {integrity: sha512-D7HeJNdkDKKMarPQO/3dlJT6RwN2YJO7ENU6RPlpOz5YxSHnUNi2yvW41Bckvi1EVwctIaLzlb0ni5ag2GINYA==} peerDependencies: webpack: ^4.40.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true dependencies: esbuild: 0.25.9 get-tsconfig: 4.10.1 @@ -16458,7 +16301,7 @@ packages: eslint: '>=8' storybook: ^10.1.11 dependencies: - '@typescript-eslint/utils': 8.52.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) storybook: 10.1.11(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.1.1)(react@19.1.1) transitivePeerDependencies: @@ -16570,8 +16413,8 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 dev: true @@ -16761,7 +16604,7 @@ packages: pend: 1.2.0 dev: true - /fdir@6.5.0(picomatch@4.0.3): + /fdir@6.5.0(picomatch@4.0.4): resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -16770,7 +16613,7 @@ packages: picomatch: optional: true dependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 /fetch-cookie@0.7.3: resolution: {integrity: sha512-rZPkLnI8x5V+zYAiz8QonAHsTb4BY+iFowFBI1RFn0zrO343AVp9X7/yUj/9wL6Ef/8fLls8b/vGtzUvmyAUGA==} @@ -17180,6 +17023,7 @@ packages: /glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true dependencies: foreground-child: 3.3.1 @@ -17522,7 +17366,7 @@ packages: html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.2.3 + tapable: 2.3.2 webpack: 5.93.0(webpack-cli@6.0.1) dev: true @@ -20019,14 +19863,9 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - /picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - dev: true /pidtree@0.3.1: resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} @@ -20158,13 +19997,6 @@ packages: postcss: 8.5.6 dev: false - /postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - /postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} @@ -20744,6 +20576,9 @@ packages: resolution: {integrity: sha512-6orZWyCnIQXMGY4DUGM0oj0L7oYnwTACsfsru/J7r94RM3P9eS7SORGpr3LCeRCMoIMQcpfKZ7X4NdyFHBS8Eg==} peerDependencies: redux: '>=1.0.0' + peerDependenciesMeta: + redux: + optional: true dependencies: redux: 5.0.1 dev: false @@ -20758,6 +20593,9 @@ packages: resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} peerDependencies: redux: ^5.0.0 + peerDependenciesMeta: + redux: + optional: true dependencies: redux: 5.0.1 dev: false @@ -21492,6 +21330,9 @@ packages: engines: {node: '>= 14.15.0'} peerDependencies: webpack: ^5.72.1 + peerDependenciesMeta: + webpack: + optional: true dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 @@ -21624,7 +21465,7 @@ packages: '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 - esbuild: 0.25.9 + esbuild: 0.27.2 open: 10.2.0 prettier: 3.6.2 recast: 0.23.11 @@ -21799,6 +21640,9 @@ packages: engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true dependencies: webpack: 5.93.0(webpack-cli@6.0.1) dev: true @@ -21881,7 +21725,7 @@ packages: '@csstools/css-syntax-patches-for-csstree': 1.0.26 '@csstools/css-tokenizer': 3.0.4 '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5)(@csstools/css-tokenizer@3.0.4) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) '@dual-bundle/import-meta-resolve': 4.2.1 balanced-match: 2.0.0 colord: 2.9.3 @@ -21908,7 +21752,7 @@ packages: postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 postcss-safe-parser: 7.0.1(postcss@8.5.6) - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 @@ -22003,14 +21847,9 @@ packages: engines: {node: '>=6'} dev: true - /tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} - engines: {node: '>=6'} - /tapable@2.3.2: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} - dev: true /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} @@ -22028,6 +21867,7 @@ packages: /tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -22059,6 +21899,8 @@ packages: optional: true uglify-js: optional: true + webpack: + optional: true dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 @@ -22073,7 +21915,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 + acorn: 8.16.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -22136,8 +21978,8 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 /tinypool@2.1.0: resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} @@ -22252,15 +22094,6 @@ packages: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false - /ts-api-utils@2.4.0(typescript@5.9.3): - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - dependencies: - typescript: 5.9.3 - dev: true - /ts-api-utils@2.5.0(typescript@5.9.3): resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} @@ -22293,6 +22126,9 @@ packages: peerDependencies: typescript: '*' webpack: '*' + peerDependenciesMeta: + webpack: + optional: true dependencies: chalk: 4.1.2 enhanced-resolve: 4.5.0 @@ -22316,7 +22152,7 @@ packages: dependencies: chalk: 4.1.2 enhanced-resolve: 5.20.1 - tapable: 2.2.3 + tapable: 2.3.2 tsconfig-paths: 4.2.0 dev: true @@ -22569,8 +22405,8 @@ packages: engines: {node: '>=18.12.0'} dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.15.0 - picomatch: 4.0.3 + acorn: 8.16.0 + picomatch: 4.0.4 webpack-virtual-modules: 0.6.2 dev: true @@ -22697,6 +22533,7 @@ packages: /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true /validate-npm-package-license@3.0.4: @@ -22777,7 +22614,7 @@ packages: colorette: 2.0.20 connect-history-api-fallback: 1.6.0 consola: 2.15.3 - dotenv: 16.0.3 + dotenv: 16.4.5 dotenv-expand: 8.0.3 ejs: 3.1.10 fast-glob: 3.3.3 @@ -22844,9 +22681,9 @@ packages: dependencies: '@types/node': 24.12.0 esbuild: 0.27.2 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) jiti: 2.6.1 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.6 rollup: 4.54.0 tinyglobby: 0.2.15 @@ -22900,7 +22737,7 @@ packages: '@oxc-project/runtime': 0.115.0 '@types/node': 24.12.0 lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 rolldown: 1.0.0-rc.9 sass: 1.70.0 @@ -22953,7 +22790,7 @@ packages: dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 - picomatch: 4.0.3 + picomatch: 4.0.4 postcss: 8.5.8 rolldown: 1.0.0-rc.9 sass: 1.70.0 @@ -23025,7 +22862,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23095,7 +22932,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23165,7 +23002,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23235,7 +23072,7 @@ packages: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 @@ -23306,8 +23143,8 @@ packages: hasBin: true dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.15.0 - acorn-walk: 8.3.4 + acorn: 8.16.0 + acorn-walk: 8.3.5 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 @@ -23330,6 +23167,8 @@ packages: webpack-bundle-analyzer: '*' webpack-dev-server: '*' peerDependenciesMeta: + webpack: + optional: true webpack-bundle-analyzer: optional: true webpack-dev-server: @@ -23456,11 +23295,11 @@ packages: '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) + acorn: 8.16.0 + acorn-import-attributes: 1.9.5(acorn@8.16.0) browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.20.1 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -23471,7 +23310,7 @@ packages: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 3.3.0 - tapable: 2.2.3 + tapable: 2.3.2 terser-webpack-plugin: 5.3.14(webpack@5.93.0) watchpack: 2.4.4 webpack-cli: 6.0.1(webpack-bundle-analyzer@4.10.2)(webpack-dev-server@5.2.2)(webpack@5.93.0)