diff --git a/biome.json b/biome.json index 3dd0492085..2aecb0851f 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.6.1/schema.json", + "$schema": "https://biomejs.dev/schemas/1.8.0/schema.json", "linter": { "enabled": true, "rules": { @@ -7,7 +7,8 @@ "correctness": { "noUnsafeOptionalChaining": "off", "useExhaustiveDependencies": "off", - "noUnusedImports": "warn" + "noUnusedImports": "warn", + "useJsxKeyInIterable": "off" }, "complexity": { "noBannedTypes": "off", @@ -31,7 +32,8 @@ "noPrototypeBuiltins": "off", "noConfusingVoidType": "off", "noArrayIndexKey": "off", - "noThenProperty": "off" + "noThenProperty": "off", + "noExportsInTest": "off" }, "performance": { "noAccumulatingSpread": "off", diff --git a/docker/yarn.lock b/docker/yarn.lock index 6e3d1d0cc4..0b91c6fe16 100644 --- a/docker/yarn.lock +++ b/docker/yarn.lock @@ -3131,7 +3131,7 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" -semver@^5.3.0, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4: +semver@^5.3.0, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -3695,7 +3695,7 @@ unleash-client@5.5.3: semver "^7.5.3" "unleash-server@file:../build": - version "5.12.5" + version "5.12.7" dependencies: "@slack/web-api" "^6.10.0" "@wesleytodd/openapi" "^0.3.0" @@ -3750,7 +3750,7 @@ unleash-client@5.5.3: prom-client "^14.0.0" response-time "^2.3.2" sanitize-filename "^1.6.3" - semver "^7.5.4" + semver "^7.6.2" serve-favicon "^2.5.0" slug "^9.0.0" stoppable "^1.1.0" diff --git a/frontend/package.json b/frontend/package.json index 4c007fac89..2e1e79d582 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,7 +34,7 @@ "gen:api:clean": "yarn gen:api && rm -rf src/openapi/apis && sed -i.bak '1q' src/openapi/index.ts && rm src/openapi/index.ts.bak" }, "devDependencies": { - "@biomejs/biome": "1.6.4", + "@biomejs/biome": "1.8.0", "@codemirror/lang-json": "6.0.1", "@emotion/react": "11.11.4", "@emotion/styled": "11.11.5", diff --git a/frontend/src/component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountsActionsCell/ServiceAccountsActionsCell.tsx b/frontend/src/component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountsActionsCell/ServiceAccountsActionsCell.tsx index ffe58e3730..5b2b05a86c 100644 --- a/frontend/src/component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountsActionsCell/ServiceAccountsActionsCell.tsx +++ b/frontend/src/component/admin/serviceAccounts/ServiceAccountsTable/ServiceAccountsActionsCell/ServiceAccountsActionsCell.tsx @@ -15,30 +15,31 @@ interface IServiceAccountsActionsCellProps { onDelete: (event: React.SyntheticEvent) => void; } -export const ServiceAccountsActionsCell: VFC = - ({ onEdit, onDelete }) => { - return ( - - - - - - - - - ); - }; +export const ServiceAccountsActionsCell: VFC< + IServiceAccountsActionsCellProps +> = ({ onEdit, onDelete }) => { + return ( + + + + + + + + + ); +}; diff --git a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestReviewStatus/ChangeRequestReviewStatus.tsx b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestReviewStatus/ChangeRequestReviewStatus.tsx index 67bed50436..3e13adbf1f 100644 --- a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestReviewStatus/ChangeRequestReviewStatus.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestReviewStatus/ChangeRequestReviewStatus.tsx @@ -73,37 +73,38 @@ const resolveIconColors = (state: ChangeRequestState, theme: Theme) => { }; }; -export const ChangeRequestReviewStatus: FC = - ({ changeRequest, onEditClick }) => { - const theme = useTheme(); - return ( - - - - - = ({ changeRequest, onEditClick }) => { + const theme = useTheme(); + return ( + + + - - - - ); - }; + /> + + + + + + ); +}; interface IResolveComponentProps { changeRequest: ChangeRequestType; diff --git a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestScheduledDialogs/ScheduleChangeRequestDialog.tsx b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestScheduledDialogs/ScheduleChangeRequestDialog.tsx index e861cf231e..fb37f4a809 100644 --- a/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestScheduledDialogs/ScheduleChangeRequestDialog.tsx +++ b/frontend/src/component/changeRequest/ChangeRequestOverview/ChangeRequestScheduledDialogs/ScheduleChangeRequestDialog.tsx @@ -25,84 +25,82 @@ const StyledContainer = styled(Box)(({ theme }) => ({ gap: theme.spacing(2), })); -export const ScheduleChangeRequestDialog: FC = - ({ - open, - onConfirm, - onClose, - title, - primaryButtonText, - projectId, - environment, - disabled, - scheduledAt, - }) => { - const [selectedDate, setSelectedDate] = useState( - scheduledAt ? new Date(scheduledAt) : new Date(), - ); - const [error, setError] = useState(undefined); +export const ScheduleChangeRequestDialog: FC< + ScheduleChangeRequestDialogProps +> = ({ + open, + onConfirm, + onClose, + title, + primaryButtonText, + projectId, + environment, + disabled, + scheduledAt, +}) => { + const [selectedDate, setSelectedDate] = useState( + scheduledAt ? new Date(scheduledAt) : new Date(), + ); + const [error, setError] = useState(undefined); - const timezone = getBrowserTimezone(); + const timezone = getBrowserTimezone(); - return ( - onClose()} - onClick={() => onConfirm(selectedDate)} - permissionButton={ - onConfirm(selectedDate)} - projectId={projectId} - permission={APPLY_CHANGE_REQUEST} - environmentId={environment} - disabled={disabled} - > - {primaryButtonText} - - } - fullWidth + return ( + onClose()} + onClick={() => onConfirm(selectedDate)} + permissionButton={ + onConfirm(selectedDate)} + projectId={projectId} + permission={APPLY_CHANGE_REQUEST} + environmentId={environment} + disabled={disabled} + > + {primaryButtonText} + + } + fullWidth + > + theme.spacing(2) }}> + The time shown below is based on your browser's time zone. + + theme.spacing(4) }} > - theme.spacing(2) }} - > - The time shown below is based on your browser's time zone. - - theme.spacing(4) }} - > - Select the date and time when these changes should be - applied. If you change your mind later, you can reschedule - the changes or apply them immediately. + Select the date and time when these changes should be applied. + If you change your mind later, you can reschedule the changes or + apply them immediately. + + + { + setError(undefined); + if (date < new Date()) { + setError( + `The time you provided (${date.toLocaleString()}) is not valid because it's in the past. Please select a time in the future.`, + ); + } + setSelectedDate(date); + }} + min={new Date()} + error={Boolean(error)} + errorText={error} + required + /> + + Your browser's time zone is {timezone} - - { - setError(undefined); - if (date < new Date()) { - setError( - `The time you provided (${date.toLocaleString()}) is not valid because it's in the past. Please select a time in the future.`, - ); - } - setSelectedDate(date); - }} - min={new Date()} - error={Boolean(error)} - errorText={error} - required - /> - - Your browser's time zone is {timezone} - - - - ); - }; + + + ); +}; diff --git a/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx b/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx index 5feac54d66..654267cf15 100644 --- a/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx +++ b/frontend/src/component/common/ConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx @@ -44,41 +44,39 @@ const StyledRightButton = styled(Button)(({ theme }) => ({ minWidth: '125px', })); -export const ConstraintAccordionEditBody: React.FC = - ({ localConstraint, children, triggerTransition, setAction, onSubmit }) => { - return ( - <> - - } - /> - {children} - - - - - Done - - { - setAction(CANCEL); - triggerTransition(); - }} - > - Cancel - - - - - ); - }; +export const ConstraintAccordionEditBody: React.FC< + IConstraintAccordionBody +> = ({ localConstraint, children, triggerTransition, setAction, onSubmit }) => { + return ( + <> + + } + /> + {children} + + + + + Done + + { + setAction(CANCEL); + triggerTransition(); + }} + > + Cancel + + + + + ); +}; diff --git a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx index 8aeb23388e..6fe4c006a5 100644 --- a/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx +++ b/frontend/src/component/common/NewConstraintAccordion/ConstraintAccordionEdit/ConstraintAccordionEditBody/ConstraintAccordionEditBody.tsx @@ -43,33 +43,31 @@ const StyledRightButton = styled(Button)(({ theme }) => ({ minWidth: '125px', })); -export const ConstraintAccordionEditBody: React.FC = - ({ localConstraint, children, triggerTransition, setAction, onSubmit }) => { - return ( - <> - - } - /> - {children} - - - - - Done - - - - - ); - }; +export const ConstraintAccordionEditBody: React.FC< + IConstraintAccordionBody +> = ({ localConstraint, children, triggerTransition, setAction, onSubmit }) => { + return ( + <> + + } + /> + {children} + + + + + Done + + + + + ); +}; diff --git a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureEnvironmentVariants/PushVariantsButton/PermissionCheckboxMenuItem.tsx b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureEnvironmentVariants/PushVariantsButton/PermissionCheckboxMenuItem.tsx index abd6bd2bf8..af437f0197 100644 --- a/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureEnvironmentVariants/PushVariantsButton/PermissionCheckboxMenuItem.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureVariants/FeatureEnvironmentVariants/PushVariantsButton/PermissionCheckboxMenuItem.tsx @@ -10,18 +10,19 @@ interface PermissionCheckboxMenuItemProps { onClick: () => void; } -export const PermissionCheckboxMenuItem: FC = - ({ permission, projectId, environment, checked, onClick, ...props }) => { - const hasPermissions = useHasProjectEnvironmentAccess( - permission, - projectId, - environment, - ); +export const PermissionCheckboxMenuItem: FC< + PermissionCheckboxMenuItemProps +> = ({ permission, projectId, environment, checked, onClick, ...props }) => { + const hasPermissions = useHasProjectEnvironmentAccess( + permission, + projectId, + environment, + ); - return ( - - - {environment} - - ); - }; + return ( + + + {environment} + + ); +}; diff --git a/frontend/src/component/insights/componentsChart/FlagsProjectChart/FlagsProjectChart.tsx b/frontend/src/component/insights/componentsChart/FlagsProjectChart/FlagsProjectChart.tsx index 31f10ca03b..9537e0ecf4 100644 --- a/frontend/src/component/insights/componentsChart/FlagsProjectChart/FlagsProjectChart.tsx +++ b/frontend/src/component/insights/componentsChart/FlagsProjectChart/FlagsProjectChart.tsx @@ -26,9 +26,7 @@ export const FlagsProjectChart: VFC = ({ const data = useProjectChartData(projectFlagTrends); const notEnoughData = useMemo( - () => - !isLoading && - (data.datasets.some((d) => d.data.length > 1) ? false : true), + () => !isLoading && !data.datasets.some((d) => d.data.length > 1), [data, isLoading], ); diff --git a/frontend/src/component/insights/componentsChart/MetricsSummaryChart/MetricsChartTooltip/MetricsChartTooltip.tsx b/frontend/src/component/insights/componentsChart/MetricsSummaryChart/MetricsChartTooltip/MetricsChartTooltip.tsx index a0afe575b3..a45d59b2f5 100644 --- a/frontend/src/component/insights/componentsChart/MetricsSummaryChart/MetricsChartTooltip/MetricsChartTooltip.tsx +++ b/frontend/src/component/insights/componentsChart/MetricsSummaryChart/MetricsChartTooltip/MetricsChartTooltip.tsx @@ -112,23 +112,17 @@ export const MetricsSummaryTooltip: VFC<{ tooltip: TooltipState | null }> = ({ /> = ({ : projectsData; const notEnoughData = useMemo( () => - !isLoading && - (projectsData.datasets.some((d) => d.data.length > 1) - ? false - : true), + !isLoading && !projectsData.datasets.some((d) => d.data.length > 1), [projectsData, isLoading], ); const data = diff --git a/frontend/src/component/insights/componentsChart/UsersPerProjectChart/UsersPerProjectChart.tsx b/frontend/src/component/insights/componentsChart/UsersPerProjectChart/UsersPerProjectChart.tsx index 64e97092ff..adb0a54042 100644 --- a/frontend/src/component/insights/componentsChart/UsersPerProjectChart/UsersPerProjectChart.tsx +++ b/frontend/src/component/insights/componentsChart/UsersPerProjectChart/UsersPerProjectChart.tsx @@ -26,9 +26,7 @@ export const UsersPerProjectChart: VFC = ({ const data = useProjectChartData(projectFlagTrends); const notEnoughData = useMemo( - () => - !isLoading && - (data.datasets.some((d) => d.data.length > 1) ? false : true), + () => !isLoading && !data.datasets.some((d) => d.data.length > 1), [data, isLoading], ); diff --git a/frontend/src/component/insights/hooks/usePlaceholderData.ts b/frontend/src/component/insights/hooks/usePlaceholderData.ts index d129cf5444..350dbc7169 100644 --- a/frontend/src/component/insights/hooks/usePlaceholderData.ts +++ b/frontend/src/component/insights/hooks/usePlaceholderData.ts @@ -46,13 +46,13 @@ export const usePlaceholderData = ( data: type === 'rising' ? [ - 3, 5, 15, 17, 25, 40, 47, 48, 55, - 65, 62, 72, 75, 73, 80, - ] + 3, 5, 15, 17, 25, 40, 47, 48, 55, + 65, 62, 72, 75, 73, 80, + ] : [ - 54, 52, 53, 49, 54, 50, 47, 46, - 51, 51, 50, 51, 49, 49, 51, - ], + 54, 52, 53, 49, 54, 50, 47, 46, 51, + 51, 50, 51, 49, 49, 51, + ], borderColor: theme.palette.primary.light, backgroundColor: fill ? fillGradientPrimary diff --git a/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistorySuccessfulCell/LoginHistorySuccessfulCell.tsx b/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistorySuccessfulCell/LoginHistorySuccessfulCell.tsx index 5b146385b1..3fa817506b 100644 --- a/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistorySuccessfulCell/LoginHistorySuccessfulCell.tsx +++ b/frontend/src/component/loginHistory/LoginHistoryTable/LoginHistorySuccessfulCell/LoginHistorySuccessfulCell.tsx @@ -18,29 +18,30 @@ interface ILoginHistorySuccessfulCellProps { value: boolean; } -export const LoginHistorySuccessfulCell: VFC = - ({ row, value }) => { - const { searchQuery } = useSearchHighlightContext(); - - if (value) - return ( - - True - - ); +export const LoginHistorySuccessfulCell: VFC< + ILoginHistorySuccessfulCellProps +> = ({ row, value }) => { + const { searchQuery } = useSearchHighlightContext(); + if (value) return ( - - {row.original.failure_reason} - - } - > - False - + True ); - }; + + return ( + + + {row.original.failure_reason} + + } + > + False + + + ); +}; diff --git a/frontend/src/component/playground/Playground/PlaygroundGuidance/PlaygroundGuidanceSection/PlaygroundGuidanceSection.tsx b/frontend/src/component/playground/Playground/PlaygroundGuidance/PlaygroundGuidanceSection/PlaygroundGuidanceSection.tsx index 75b50d7a16..c074a8b3ab 100644 --- a/frontend/src/component/playground/Playground/PlaygroundGuidance/PlaygroundGuidanceSection/PlaygroundGuidanceSection.tsx +++ b/frontend/src/component/playground/Playground/PlaygroundGuidance/PlaygroundGuidanceSection/PlaygroundGuidanceSection.tsx @@ -9,37 +9,36 @@ interface IPlaygroundGuidanceSectionProps { sectionNumber: string; } -export const PlaygroundGuidanceSection: VFC = - ({ headerText, bodyText, sectionNumber }) => { - return ( - - - - {sectionNumber} - - - - {headerText} - - - {bodyText} - - } - /> - +export const PlaygroundGuidanceSection: VFC< + IPlaygroundGuidanceSectionProps +> = ({ headerText, bodyText, sectionNumber }) => { + return ( + + + + {sectionNumber} + + + + {headerText} + + + {bodyText} + + } + /> - ); - }; + + ); +}; diff --git a/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/DisabledStrategyExecution.tsx b/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/DisabledStrategyExecution.tsx index ca03c55679..c6ebe493d6 100644 --- a/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/DisabledStrategyExecution.tsx +++ b/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/DisabledStrategyExecution.tsx @@ -24,73 +24,69 @@ const StyledStrategyExecutionWrapper = styled('div')(({ theme }) => ({ padding: theme.spacing(0), })); -export const DisabledStrategyExecution: VFC = - ({ strategyResult, input, percentageFill }) => { - const { name, constraints, segments, parameters } = strategyResult; +export const DisabledStrategyExecution: VFC< + IDisabledStrategyExecutionProps +> = ({ strategyResult, input, percentageFill }) => { + const { name, constraints, segments, parameters } = strategyResult; - const hasSegments = Boolean(segments && segments.length > 0); - const hasConstraints = Boolean(constraints && constraints?.length > 0); - const hasExecutionParameters = - name !== 'default' && - Object.keys(formattedStrategyNames).includes(name); - const hasCustomStrategyParameters = - Object.keys(parameters).length > 0 && - strategyResult.result.evaluationStatus === 'incomplete'; // Use of custom strategy can be more explicit from the API + const hasSegments = Boolean(segments && segments.length > 0); + const hasConstraints = Boolean(constraints && constraints?.length > 0); + const hasExecutionParameters = + name !== 'default' && + Object.keys(formattedStrategyNames).includes(name); + const hasCustomStrategyParameters = + Object.keys(parameters).length > 0 && + strategyResult.result.evaluationStatus === 'incomplete'; // Use of custom strategy can be more explicit from the API - if (!parameters) { - return null; - } + if (!parameters) { + return null; + } - const items = [ - hasSegments && ( - - ), - hasConstraints && ( - - ), - hasExecutionParameters && ( - - ), - hasCustomStrategyParameters && ( - - ), - name === 'default' && ( - ({ - width: '100%', - color: theme.palette.text.secondary, - })} - > - The standard strategy is{' '} - ON for all users. - - ), - ].filter(Boolean); + const items = [ + hasSegments && , + hasConstraints && ( + + ), + hasExecutionParameters && ( + + ), + hasCustomStrategyParameters && ( + + ), + name === 'default' && ( + ({ + width: '100%', + color: theme.palette.text.secondary, + })} + > + The standard strategy is ON{' '} + for all users. + + ), + ].filter(Boolean); - return ( - - {items.map((item, index) => ( - - 0 && - (strategyResult.name === 'flexibleRollout' - ? index < items.length - : index < items.length - 1) - } - show={} - /> - {item} - - ))} - - ); - }; + return ( + + {items.map((item, index) => ( + + 0 && + (strategyResult.name === 'flexibleRollout' + ? index < items.length + : index < items.length - 1) + } + show={} + /> + {item} + + ))} + + ); +}; diff --git a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/SingleSelectConfigButton.tsx b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/SingleSelectConfigButton.tsx index be26d8c273..072cb86c4e 100644 --- a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/SingleSelectConfigButton.tsx +++ b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/SingleSelectConfigButton.tsx @@ -18,7 +18,7 @@ export const SingleSelectConfigButton: FC = ({ const handleChange = (value: any) => { onChange(value); setAnchorEl(null); - props.onClose && props.onClose(); + props.onClose?.(); setRecentlyClosed(true); // this is a hack to prevent the button from being diff --git a/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectEnterpriseSettingsForm.tsx b/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectEnterpriseSettingsForm.tsx index 4afe8ded84..782357675e 100644 --- a/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectEnterpriseSettingsForm.tsx +++ b/frontend/src/component/project/Project/ProjectEnterpriseSettingsForm/ProjectEnterpriseSettingsForm.tsx @@ -117,232 +117,231 @@ const useFeatureNamePatternTracking = () => { return { trackPattern, setPreviousPattern }; }; -const ProjectEnterpriseSettingsForm: React.FC = - ({ - children, - handleSubmit, - projectId, - projectMode, - featureNamingExample, - featureNamingPattern, - featureNamingDescription, - setFeatureNamingExample, - setFeatureNamingPattern, - setFeatureNamingDescription, - setProjectMode, - errors, +const ProjectEnterpriseSettingsForm: React.FC< + IProjectEnterpriseSettingsForm +> = ({ + children, + handleSubmit, + projectId, + projectMode, + featureNamingExample, + featureNamingPattern, + featureNamingDescription, + setFeatureNamingExample, + setFeatureNamingPattern, + setFeatureNamingDescription, + setProjectMode, + errors, +}) => { + const { setPreviousPattern, trackPattern } = + useFeatureNamePatternTracking(); + + const projectModeOptions = [ + { key: 'open', label: 'open' }, + { key: 'protected', label: 'protected' }, + { key: 'private', label: 'private' }, + ]; + + useEffect(() => { + setPreviousPattern(featureNamingPattern || ''); + }, [projectId]); + + const updateNamingExampleError = ({ + example, + pattern, + }: { + example: string; + pattern: string; }) => { - const { setPreviousPattern, trackPattern } = - useFeatureNamePatternTracking(); - - const projectModeOptions = [ - { key: 'open', label: 'open' }, - { key: 'protected', label: 'protected' }, - { key: 'private', label: 'private' }, - ]; - - useEffect(() => { - setPreviousPattern(featureNamingPattern || ''); - }, [projectId]); - - const updateNamingExampleError = ({ - example, + const validationResult = validateFeatureNamingExample({ pattern, - }: { - example: string; - pattern: string; - }) => { - const validationResult = validateFeatureNamingExample({ - pattern, - example, - featureNamingPatternError: errors.featureNamingPattern, - }); + example, + featureNamingPatternError: errors.featureNamingPattern, + }); - switch (validationResult.state) { - case 'invalid': - errors.namingExample = validationResult.reason; - break; - case 'valid': - delete errors.namingExample; - break; - } - }; - - const onSetFeatureNamingPattern = (regex: string) => { - const disallowedStrings = [ - ' ', - '\\t', - '\\s', - '\\n', - '\\r', - '\\f', - '\\v', - ]; - if ( - disallowedStrings.some((blockedString) => - regex.includes(blockedString), - ) - ) { - errors.featureNamingPattern = - 'Whitespace is not allowed in the expression'; - } else { - try { - new RegExp(regex); - delete errors.featureNamingPattern; - } catch (e) { - errors.featureNamingPattern = 'Invalid regular expression'; - } - } - setFeatureNamingPattern?.(regex); - updateNamingExampleError({ - pattern: regex, - example: featureNamingExample || '', - }); - }; - - const onSetFeatureNamingExample = (example: string) => { - setFeatureNamingExample?.(example); - updateNamingExampleError({ - pattern: featureNamingPattern || '', - example, - }); - }; - - const onSetFeatureNamingDescription = (description: string) => { - setFeatureNamingDescription?.(description); - }; - - return ( - { - handleSubmit(submitEvent); - trackPattern(featureNamingPattern); - }} - > - <> - -

What is your project collaboration mode?

- -
- { - setProjectMode?.(e.target.value as ProjectMode); - }} - options={projectModeOptions} - /> - - - - Feature flag naming pattern? - - - - -

- Define a{' '} - - JavaScript RegEx - {' '} - used to enforce feature flag names within this - project. The regex will be surrounded by a - leading ^ and a trailing{' '} - $. -

-

- Leave it empty if you don’t want to add a naming - pattern. -

-
-
- - - ^ - - ), - endAdornment: ( - - $ - - ), - }} - type={'text'} - value={featureNamingPattern || ''} - error={Boolean(errors.featureNamingPattern)} - errorText={errors.featureNamingPattern} - onChange={(e) => - onSetFeatureNamingPattern(e.target.value) - } - /> - -

- The example and description will be shown to - users when they create a new feature flag in - this project. -

-
- - - onSetFeatureNamingExample(e.target.value) - } - /> - .. - -The flag name should contain the project name, the feature name, and the ticket number, each separated by a dot.`} - multiline - minRows={5} - value={featureNamingDescription || ''} - onChange={(e) => - onSetFeatureNamingDescription(e.target.value) - } - /> -
-
- {children} -
- ); + switch (validationResult.state) { + case 'invalid': + errors.namingExample = validationResult.reason; + break; + case 'valid': + delete errors.namingExample; + break; + } }; + const onSetFeatureNamingPattern = (regex: string) => { + const disallowedStrings = [ + ' ', + '\\t', + '\\s', + '\\n', + '\\r', + '\\f', + '\\v', + ]; + if ( + disallowedStrings.some((blockedString) => + regex.includes(blockedString), + ) + ) { + errors.featureNamingPattern = + 'Whitespace is not allowed in the expression'; + } else { + try { + new RegExp(regex); + delete errors.featureNamingPattern; + } catch (e) { + errors.featureNamingPattern = 'Invalid regular expression'; + } + } + setFeatureNamingPattern?.(regex); + updateNamingExampleError({ + pattern: regex, + example: featureNamingExample || '', + }); + }; + + const onSetFeatureNamingExample = (example: string) => { + setFeatureNamingExample?.(example); + updateNamingExampleError({ + pattern: featureNamingPattern || '', + example, + }); + }; + + const onSetFeatureNamingDescription = (description: string) => { + setFeatureNamingDescription?.(description); + }; + + return ( + { + handleSubmit(submitEvent); + trackPattern(featureNamingPattern); + }} + > + <> + +

What is your project collaboration mode?

+ +
+ { + setProjectMode?.(e.target.value as ProjectMode); + }} + options={projectModeOptions} + /> + + + + Feature flag naming pattern? + + + + +

+ Define a{' '} + + JavaScript RegEx + {' '} + used to enforce feature flag names within this + project. The regex will be surrounded by a leading{' '} + ^ and a trailing $. +

+

+ Leave it empty if you don’t want to add a naming + pattern. +

+
+
+ + + ^ + + ), + endAdornment: ( + + $ + + ), + }} + type={'text'} + value={featureNamingPattern || ''} + error={Boolean(errors.featureNamingPattern)} + errorText={errors.featureNamingPattern} + onChange={(e) => + onSetFeatureNamingPattern(e.target.value) + } + /> + +

+ The example and description will be shown to users + when they create a new feature flag in this project. +

+
+ + + onSetFeatureNamingExample(e.target.value) + } + /> + .. + +The flag name should contain the project name, the feature name, and the ticket number, each separated by a dot.`} + multiline + minRows={5} + value={featureNamingDescription || ''} + onChange={(e) => + onSetFeatureNamingDescription(e.target.value) + } + /> +
+
+ {children} +
+ ); +}; + export default ProjectEnterpriseSettingsForm; diff --git a/frontend/src/component/project/Project/ProjectSettings/ChangeRequestConfiguration/ChangeRequestProcessHelp/ChangeRequestProcessHelp.tsx b/frontend/src/component/project/Project/ProjectSettings/ChangeRequestConfiguration/ChangeRequestProcessHelp/ChangeRequestProcessHelp.tsx index 9141e847ef..959fe8a08b 100644 --- a/frontend/src/component/project/Project/ProjectSettings/ChangeRequestConfiguration/ChangeRequestProcessHelp/ChangeRequestProcessHelp.tsx +++ b/frontend/src/component/project/Project/ProjectSettings/ChangeRequestConfiguration/ChangeRequestProcessHelp/ChangeRequestProcessHelp.tsx @@ -13,159 +13,156 @@ import { ReactComponent as ChangeRequestProcessWithScheduleImage } from 'assets/ type IChangeRequestProcessHelpProps = {}; -export const ChangeRequestProcessHelp: VFC = - () => { - const ref = useRef(null); - const theme = useTheme(); - const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')); - const [isOpen, setIsOpen] = useState(false); +export const ChangeRequestProcessHelp: VFC< + IChangeRequestProcessHelpProps +> = () => { + const ref = useRef(null); + const theme = useTheme(); + const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')); + const [isOpen, setIsOpen] = useState(false); - const descriptionId = 'change-request-process-description'; + const descriptionId = 'change-request-process-description'; - return ( - <> - - Show change request process{' '} - - } - /> - setIsOpen(true)} + return ( + <> + + Show change request process{' '} + + } + /> + setIsOpen(true)} + > + + + setIsOpen(false)} + > + - - - setIsOpen(false)} - > - - - Change request process: - - -
    + + Change request process: + + +
      +
    1. + When changes are detected they are added to a + draft. +
    2. +
    3. + The user can submit the changes for review or + discard them. +
        +
      • + Once submitted, the changes are visible + to everyone. +
      • +
      +
    4. +
    5. + A user with the{' '} + “Review change request”{' '} + permission can approve or reject the changes. +
        +
      • + The user who created the change request + can cancel it at this stage. +
      • +
      • + Rejecting or canceling the changes will + close the change request. +
      • +
      +
    6. + <>
    7. - When changes are detected they are added to - a draft. -
    8. -
    9. - The user can submit the changes for review - or discard them. + Once approved, a user with the{' '} + + “Apply/Reject change request” + {' '} + permission can apply, schedule, or reject + the changes.
      • - Once submitted, the changes are - visible to everyone. + If applied, the changes will take + effect and the change request will + be closed. +
      • +
      • + If scheduled, Unleash will attempt + to apply the changes at the + scheduled date and time. +
      • +
      • + The user who created the change + request can cancel the changes up + until they are applied or scheduled.
    10. A user with the{' '} - “Review change request”{' '} - permission can approve or reject the - changes. + + “Apply/Reject change request” + {' '} + permission can reschedule, reject, or + immediately apply a scheduled change + request.
      • - The user who created the change - request can cancel it at this stage. + If any of the flags or strategies in + the change request are archived or + deleted (outside of the change + request), thus creating a conflict, + Unleash will send an email out to + the change request author and to the + user who (last) scheduled the change + request.
      • - Rejecting or canceling the changes - will close the change request. + If the scheduled changes contain any + conflicts, Unleash will refuse to + apply them. +
      • +
      • + If the user who scheduled the + changes is removed from this Unleash + instance, the scheduled changes will + also not be applied.
    11. - <> -
    12. - Once approved, a user with the{' '} - - “Apply/Reject change request” - {' '} - permission can apply, schedule, or - reject the changes. -
        -
      • - If applied, the changes will - take effect and the change - request will be closed. -
      • -
      • - If scheduled, Unleash will - attempt to apply the changes at - the scheduled date and time. -
      • -
      • - The user who created the change - request can cancel the changes - up until they are applied or - scheduled. -
      • -
      -
    13. -
    14. - A user with the{' '} - - “Apply/Reject change request” - {' '} - permission can reschedule, reject, or - immediately apply a scheduled change - request. -
        -
      • - If any of the flags or - strategies in the change request - are archived or deleted (outside - of the change request), thus - creating a conflict, Unleash - will send an email out to the - change request author and to the - user who (last) scheduled the - change request. -
      • -
      • - If the scheduled changes contain - any conflicts, Unleash will - refuse to apply them. -
      • -
      • - If the user who scheduled the - changes is removed from this - Unleash instance, the scheduled - changes will also not be - applied. -
      • -
      -
    15. - -
    -
    - - - + +
+
+ + -
- - ); - }; +
+ + + ); +}; diff --git a/frontend/src/hooks/api/getters/useResetPassword/useResetPassword.ts b/frontend/src/hooks/api/getters/useResetPassword/useResetPassword.ts index e4f9d52614..b920105947 100644 --- a/frontend/src/hooks/api/getters/useResetPassword/useResetPassword.ts +++ b/frontend/src/hooks/api/getters/useResetPassword/useResetPassword.ts @@ -35,11 +35,10 @@ const useResetPassword = (options: SWRConfiguration = {}) => { setLoading(!error && !data); }, [data, error]); - const isValidToken = + const isValidToken = !( (!loading && data?.name === INVALID_TOKEN_ERROR) || data?.name === USED_TOKEN_ERROR - ? false - : true; + ); return { token, diff --git a/frontend/src/hooks/useSearch.ts b/frontend/src/hooks/useSearch.ts index 68ae49453f..92c73f70a4 100644 --- a/frontend/src/hooks/useSearch.ts +++ b/frontend/src/hooks/useSearch.ts @@ -139,8 +139,8 @@ export const getColumnValues = (column: any, row: any) => { ? column.accessor(row) : column.accessor.includes('.') ? column.accessor - .split('.') - .reduce((object: any, key: string) => object?.[key], row) + .split('.') + .reduce((object: any, key: string) => object?.[key], row) : row[column.accessor]; if (column.filterParsing) { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 34047f1d95..8266b69aa4 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -615,59 +615,59 @@ "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" -"@biomejs/biome@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.6.4.tgz#d09ab44c1df2a0cbbbb15901779a164beacd356d" - integrity sha512-3groVd2oWsLC0ZU+XXgHSNbq31lUcOCBkCcA7sAQGBopHcmL+jmmdoWlY3S61zIh+f2mqQTQte1g6PZKb3JJjA== +"@biomejs/biome@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.8.0.tgz#393f4c530582509938d58c3856b5a50179254df8" + integrity sha512-34xcE2z8GWrIz1sCFEmlHT/+4d+SN7YOqqvzlAKXKvaWPRJ2/NUwxPbRsP01P9QODkQ5bvGvc9rpBihmP+7RJQ== optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.6.4" - "@biomejs/cli-darwin-x64" "1.6.4" - "@biomejs/cli-linux-arm64" "1.6.4" - "@biomejs/cli-linux-arm64-musl" "1.6.4" - "@biomejs/cli-linux-x64" "1.6.4" - "@biomejs/cli-linux-x64-musl" "1.6.4" - "@biomejs/cli-win32-arm64" "1.6.4" - "@biomejs/cli-win32-x64" "1.6.4" + "@biomejs/cli-darwin-arm64" "1.8.0" + "@biomejs/cli-darwin-x64" "1.8.0" + "@biomejs/cli-linux-arm64" "1.8.0" + "@biomejs/cli-linux-arm64-musl" "1.8.0" + "@biomejs/cli-linux-x64" "1.8.0" + "@biomejs/cli-linux-x64-musl" "1.8.0" + "@biomejs/cli-win32-arm64" "1.8.0" + "@biomejs/cli-win32-x64" "1.8.0" -"@biomejs/cli-darwin-arm64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.6.4.tgz#a2b07cacb0d2769ae5545b6a3cf40907fbfd4ab0" - integrity sha512-2WZef8byI9NRzGajGj5RTrroW9BxtfbP9etigW1QGAtwu/6+cLkdPOWRAs7uFtaxBNiKFYA8j/BxV5zeAo5QOQ== +"@biomejs/cli-darwin-arm64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.8.0.tgz#b3eb9644b5bbb393e993ac5acc9570ef21907380" + integrity sha512-dBAYzfIJ1JmWigKlWourT3sJ3I60LZPjqNwwlsyFjiv5AV7vPeWlHVVIImV2BpINwNjZQhpXnwDfVnGS4vr7AA== -"@biomejs/cli-darwin-x64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.6.4.tgz#476720d731864508312b12fbef62a35609ef5f96" - integrity sha512-uo1zgM7jvzcoDpF6dbGizejDLCqNpUIRkCj/oEK0PB0NUw8re/cn1EnxuOLZqDpn+8G75COLQTOx8UQIBBN/Kg== +"@biomejs/cli-darwin-x64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.8.0.tgz#a31eada9b57cf33cb9655593b1df2b5ff2d4f092" + integrity sha512-ZTTSD0bP0nn9UpRDGQrQNTILcYSj+IkxTYr3CAV64DWBDtQBomlk2oVKWzDaA1LOhpAsTh0giLCbPJaVk2jfMQ== -"@biomejs/cli-linux-arm64-musl@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.6.4.tgz#403f5889a4ec290e35a0b910c1c26723373cf5fc" - integrity sha512-Hp8Jwt6rjj0wCcYAEN6/cfwrrPLLlGOXZ56Lei4Pt4jy39+UuPeAVFPeclrrCfxyL1wQ2xPrhd/saTHSL6DoJg== +"@biomejs/cli-linux-arm64-musl@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.8.0.tgz#ca66b8635f8f55f320e247a5febed8bb56dc3b91" + integrity sha512-+ee/pZWsvhDv6eRI00krRNSgAg8DKSxzOv3LUsCjto6N1VzqatTASeQv2HRfG1nitf79rRKM75LkMJbqEfiKww== -"@biomejs/cli-linux-arm64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.6.4.tgz#7eff2af0fc5d9af9affc963bb594ec2ebf89668f" - integrity sha512-wAOieaMNIpLrxGc2/xNvM//CIZg7ueWy3V5A4T7gDZ3OL/Go27EKE59a+vMKsBCYmTt7jFl4yHz0TUkUbodA/w== +"@biomejs/cli-linux-arm64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.8.0.tgz#147ab4d9bcfb4cc1baee90a367acf0fef5c42649" + integrity sha512-cx725jTlJS6dskvJJwwCQaaMRBKE2Qss7ukzmx27Rn/DXRxz6tnnBix4FUGPf1uZfwrERkiJlbWM05JWzpvvXg== -"@biomejs/cli-linux-x64-musl@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.6.4.tgz#aeca8dd886b19b7779dfb43898ec896c71da279f" - integrity sha512-wqi0hr8KAx5kBO0B+m5u8QqiYFFBJOSJVSuRqTeGWW+GYLVUtXNidykNqf1JsW6jJDpbkSp2xHKE/bTlVaG2Kg== +"@biomejs/cli-linux-x64-musl@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.8.0.tgz#4c80358c178327fccee660f0cebcc7a78c20bcb0" + integrity sha512-VPA4ocrAOak50VYl8gOAVnjuFFDpIUolShntc/aWM0pZfSIMbRucxnrfUfp44EVwayxjK6ruJTR5xEWj93WvDA== -"@biomejs/cli-linux-x64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.6.4.tgz#545b205dea20195b1fa64f5a0e60331a70133518" - integrity sha512-qTWhuIw+/ePvOkjE9Zxf5OqSCYxtAvcTJtVmZT8YQnmY2I62JKNV2m7tf6O5ViKZUOP0mOQ6NgqHKcHH1eT8jw== +"@biomejs/cli-linux-x64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.8.0.tgz#de1ab7649324c72b74e16c5234ef6191a8bc34fd" + integrity sha512-cmgmhlD4QUxMhL1VdaNqnB81xBHb3R7huVNyYnPYzP+AykZ7XqJbPd1KcWAszNjUk2AHdx0aLKEBwCOWemxb2g== -"@biomejs/cli-win32-arm64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.6.4.tgz#2c377c0965749d01280baac6cb273bcbe11cd652" - integrity sha512-Wp3FiEeF6v6C5qMfLkHwf4YsoNHr/n0efvoC8jCKO/kX05OXaVExj+1uVQ1eGT7Pvx0XVm/TLprRO0vq/V6UzA== +"@biomejs/cli-win32-arm64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.8.0.tgz#1527e7bbcf9abd27302225591ef150da1656393a" + integrity sha512-J31spvlh39FfRHQacYXxJX9PvTCH/a8+2Jx9D1lxw+LSF0JybqZcw/4JrlFUWUl4kF3yv8AuYUK0sENScc3g9w== -"@biomejs/cli-win32-x64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.6.4.tgz#317fed21b863d43778665d42a41cbd0f94351051" - integrity sha512-mz183Di5hTSGP7KjNWEhivcP1wnHLGmOxEROvoFsIxMYtDhzJDad4k5gI/1JbmA0xe4n52vsgqo09tBhrMT/Zg== +"@biomejs/cli-win32-x64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.8.0.tgz#d566d6d27ba262691eaac7c54b7a41560d390130" + integrity sha512-uPHHvu76JC1zYe9zZDcOU9PAg+1MZmPuNgWkb5jljaDeATvzLFPB+0nuJTilf603LXL+E8IdPQAO61Wy2VuEJA== "@bundled-es-modules/cookie@^2.0.0": version "2.0.0" diff --git a/package.json b/package.json index af5fbf54dc..cc3942ce96 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "start:dev": "TZ=UTC NODE_ENV=development tsc-watch --strictNullChecks false --onSuccess \"node dist/server-dev.js\"", "db-migrate": "db-migrate --migrations-dir ./src/migrations", "lint": "biome check .", - "lint:fix": "biome check . --apply", + "lint:fix": "biome check . --write", "local:package": "del-cli --force build && mkdir build && cp -r dist docs CHANGELOG.md LICENSE README.md package.json build", "prebuild:watch": "yarn run clean", "build:watch": "tsc -w --strictNullChecks false", @@ -153,7 +153,7 @@ "prom-client": "^14.0.0", "response-time": "^2.3.2", "sanitize-filename": "^1.6.3", - "semver": "^7.5.4", + "semver": "^7.6.2", "serve-favicon": "^2.5.0", "slug": "^9.0.0", "stoppable": "^1.1.0", @@ -165,8 +165,8 @@ "devDependencies": { "@apidevtools/swagger-parser": "10.1.0", "@babel/core": "7.24.6", - "@biomejs/biome": "1.6.4", - "@swc/core": "1.5.7", + "@biomejs/biome": "1.8.0", + "@swc/core": "1.5.24", "@swc/jest": "0.2.36", "@types/bcryptjs": "2.4.6", "@types/cors": "2.8.17", @@ -228,12 +228,12 @@ "ip": "^2.0.1", "tar": "6.2.1", "minimatch": "^5.0.0", - "semver": "^7.5.3", + "semver": "^7.6.2", "tough-cookie": "4.1.4" }, "lint-staged": { - "*.{js,ts}": ["biome check --apply --no-errors-on-unmatched"], - "*.{jsx,tsx}": ["biome check --apply --no-errors-on-unmatched"], + "*.{js,ts}": ["biome check --write --no-errors-on-unmatched"], + "*.{jsx,tsx}": ["biome check --write --no-errors-on-unmatched"], "*.json": ["biome format --write --no-errors-on-unmatched"] } } diff --git a/src/lib/addons/feature-event-formatter-md.ts b/src/lib/addons/feature-event-formatter-md.ts index 11eeb0082e..1e95801a90 100644 --- a/src/lib/addons/feature-event-formatter-md.ts +++ b/src/lib/addons/feature-event-formatter-md.ts @@ -446,11 +446,11 @@ export class FeatureEventFormatterMd implements FeatureEventFormatter { ? '' : !preData ? ` ${propertyName} to ${userIdText( - data?.parameters[propertyName], - )}` + data?.parameters[propertyName], + )}` : ` ${propertyName} from ${userIdText( - preData.parameters[propertyName], - )} to ${userIdText(data?.parameters[propertyName])}`; + preData.parameters[propertyName], + )} to ${userIdText(data?.parameters[propertyName])}`; const constraintText = this.constraintChangeText( preData?.constraints, data?.constraints, diff --git a/src/lib/features/feature-search/feature-search-store.ts b/src/lib/features/feature-search/feature-search-store.ts index 2b7aa9a955..e58991fa37 100644 --- a/src/lib/features/feature-search/feature-search-store.ts +++ b/src/lib/features/feature-search/feature-search-store.ts @@ -188,7 +188,7 @@ class FeatureSearchStore implements IFeatureSearchStore { envName, ).andWhere( 'feature_environments.enabled', - envStatus === 'enabled' ? true : false, + envStatus === 'enabled', ); }); } diff --git a/yarn.lock b/yarn.lock index a78cae54af..d3fec1cd25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -657,59 +657,59 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@biomejs/biome@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.6.4.tgz#d09ab44c1df2a0cbbbb15901779a164beacd356d" - integrity sha512-3groVd2oWsLC0ZU+XXgHSNbq31lUcOCBkCcA7sAQGBopHcmL+jmmdoWlY3S61zIh+f2mqQTQte1g6PZKb3JJjA== +"@biomejs/biome@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.8.0.tgz#393f4c530582509938d58c3856b5a50179254df8" + integrity sha512-34xcE2z8GWrIz1sCFEmlHT/+4d+SN7YOqqvzlAKXKvaWPRJ2/NUwxPbRsP01P9QODkQ5bvGvc9rpBihmP+7RJQ== optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.6.4" - "@biomejs/cli-darwin-x64" "1.6.4" - "@biomejs/cli-linux-arm64" "1.6.4" - "@biomejs/cli-linux-arm64-musl" "1.6.4" - "@biomejs/cli-linux-x64" "1.6.4" - "@biomejs/cli-linux-x64-musl" "1.6.4" - "@biomejs/cli-win32-arm64" "1.6.4" - "@biomejs/cli-win32-x64" "1.6.4" + "@biomejs/cli-darwin-arm64" "1.8.0" + "@biomejs/cli-darwin-x64" "1.8.0" + "@biomejs/cli-linux-arm64" "1.8.0" + "@biomejs/cli-linux-arm64-musl" "1.8.0" + "@biomejs/cli-linux-x64" "1.8.0" + "@biomejs/cli-linux-x64-musl" "1.8.0" + "@biomejs/cli-win32-arm64" "1.8.0" + "@biomejs/cli-win32-x64" "1.8.0" -"@biomejs/cli-darwin-arm64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.6.4.tgz#a2b07cacb0d2769ae5545b6a3cf40907fbfd4ab0" - integrity sha512-2WZef8byI9NRzGajGj5RTrroW9BxtfbP9etigW1QGAtwu/6+cLkdPOWRAs7uFtaxBNiKFYA8j/BxV5zeAo5QOQ== +"@biomejs/cli-darwin-arm64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.8.0.tgz#b3eb9644b5bbb393e993ac5acc9570ef21907380" + integrity sha512-dBAYzfIJ1JmWigKlWourT3sJ3I60LZPjqNwwlsyFjiv5AV7vPeWlHVVIImV2BpINwNjZQhpXnwDfVnGS4vr7AA== -"@biomejs/cli-darwin-x64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.6.4.tgz#476720d731864508312b12fbef62a35609ef5f96" - integrity sha512-uo1zgM7jvzcoDpF6dbGizejDLCqNpUIRkCj/oEK0PB0NUw8re/cn1EnxuOLZqDpn+8G75COLQTOx8UQIBBN/Kg== +"@biomejs/cli-darwin-x64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.8.0.tgz#a31eada9b57cf33cb9655593b1df2b5ff2d4f092" + integrity sha512-ZTTSD0bP0nn9UpRDGQrQNTILcYSj+IkxTYr3CAV64DWBDtQBomlk2oVKWzDaA1LOhpAsTh0giLCbPJaVk2jfMQ== -"@biomejs/cli-linux-arm64-musl@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.6.4.tgz#403f5889a4ec290e35a0b910c1c26723373cf5fc" - integrity sha512-Hp8Jwt6rjj0wCcYAEN6/cfwrrPLLlGOXZ56Lei4Pt4jy39+UuPeAVFPeclrrCfxyL1wQ2xPrhd/saTHSL6DoJg== +"@biomejs/cli-linux-arm64-musl@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.8.0.tgz#ca66b8635f8f55f320e247a5febed8bb56dc3b91" + integrity sha512-+ee/pZWsvhDv6eRI00krRNSgAg8DKSxzOv3LUsCjto6N1VzqatTASeQv2HRfG1nitf79rRKM75LkMJbqEfiKww== -"@biomejs/cli-linux-arm64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.6.4.tgz#7eff2af0fc5d9af9affc963bb594ec2ebf89668f" - integrity sha512-wAOieaMNIpLrxGc2/xNvM//CIZg7ueWy3V5A4T7gDZ3OL/Go27EKE59a+vMKsBCYmTt7jFl4yHz0TUkUbodA/w== +"@biomejs/cli-linux-arm64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.8.0.tgz#147ab4d9bcfb4cc1baee90a367acf0fef5c42649" + integrity sha512-cx725jTlJS6dskvJJwwCQaaMRBKE2Qss7ukzmx27Rn/DXRxz6tnnBix4FUGPf1uZfwrERkiJlbWM05JWzpvvXg== -"@biomejs/cli-linux-x64-musl@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.6.4.tgz#aeca8dd886b19b7779dfb43898ec896c71da279f" - integrity sha512-wqi0hr8KAx5kBO0B+m5u8QqiYFFBJOSJVSuRqTeGWW+GYLVUtXNidykNqf1JsW6jJDpbkSp2xHKE/bTlVaG2Kg== +"@biomejs/cli-linux-x64-musl@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.8.0.tgz#4c80358c178327fccee660f0cebcc7a78c20bcb0" + integrity sha512-VPA4ocrAOak50VYl8gOAVnjuFFDpIUolShntc/aWM0pZfSIMbRucxnrfUfp44EVwayxjK6ruJTR5xEWj93WvDA== -"@biomejs/cli-linux-x64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.6.4.tgz#545b205dea20195b1fa64f5a0e60331a70133518" - integrity sha512-qTWhuIw+/ePvOkjE9Zxf5OqSCYxtAvcTJtVmZT8YQnmY2I62JKNV2m7tf6O5ViKZUOP0mOQ6NgqHKcHH1eT8jw== +"@biomejs/cli-linux-x64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.8.0.tgz#de1ab7649324c72b74e16c5234ef6191a8bc34fd" + integrity sha512-cmgmhlD4QUxMhL1VdaNqnB81xBHb3R7huVNyYnPYzP+AykZ7XqJbPd1KcWAszNjUk2AHdx0aLKEBwCOWemxb2g== -"@biomejs/cli-win32-arm64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.6.4.tgz#2c377c0965749d01280baac6cb273bcbe11cd652" - integrity sha512-Wp3FiEeF6v6C5qMfLkHwf4YsoNHr/n0efvoC8jCKO/kX05OXaVExj+1uVQ1eGT7Pvx0XVm/TLprRO0vq/V6UzA== +"@biomejs/cli-win32-arm64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.8.0.tgz#1527e7bbcf9abd27302225591ef150da1656393a" + integrity sha512-J31spvlh39FfRHQacYXxJX9PvTCH/a8+2Jx9D1lxw+LSF0JybqZcw/4JrlFUWUl4kF3yv8AuYUK0sENScc3g9w== -"@biomejs/cli-win32-x64@1.6.4": - version "1.6.4" - resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.6.4.tgz#317fed21b863d43778665d42a41cbd0f94351051" - integrity sha512-mz183Di5hTSGP7KjNWEhivcP1wnHLGmOxEROvoFsIxMYtDhzJDad4k5gI/1JbmA0xe4n52vsgqo09tBhrMT/Zg== +"@biomejs/cli-win32-x64@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.8.0.tgz#d566d6d27ba262691eaac7c54b7a41560d390130" + integrity sha512-uPHHvu76JC1zYe9zZDcOU9PAg+1MZmPuNgWkb5jljaDeATvzLFPB+0nuJTilf603LXL+E8IdPQAO61Wy2VuEJA== "@colors/colors@1.5.0": version "1.5.0" @@ -1241,76 +1241,76 @@ p-queue "^6.6.1" p-retry "^4.0.0" -"@swc/core-darwin-arm64@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.7.tgz#2b5cdbd34e4162e50de6147dd1a5cb12d23b08e8" - integrity sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ== +"@swc/core-darwin-arm64@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.24.tgz#71875695bc617e57c2d93352f48317b4c41e0240" + integrity sha512-M7oLOcC0sw+UTyAuL/9uyB9GeO4ZpaBbH76JSH6g1m0/yg7LYJZGRmplhDmwVSDAR5Fq4Sjoi1CksmmGkgihGA== -"@swc/core-darwin-x64@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.5.7.tgz#6aa7e3c01ab8e5e41597f8a24ff24c4e50936a46" - integrity sha512-RpUyu2GsviwTc2qVajPL0l8nf2vKj5wzO3WkLSHAHEJbiUZk83NJrZd1RVbEknIMO7+Uyjh54hEh8R26jSByaw== +"@swc/core-darwin-x64@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.5.24.tgz#6b4c3eb9b21ab50b7324a82c9497ffeb2e8e0a57" + integrity sha512-MfcFjGGYognpSBSos2pYUNYJSmqEhuw5ceGr6qAdME7ddbjGXliza4W6FggsM+JnWwpqa31+e7/R+GetW4WkaQ== -"@swc/core-linux-arm-gnueabihf@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.7.tgz#160108633b9e1d1ad05f815bedc7e9eb5d59fc2a" - integrity sha512-cTZWTnCXLABOuvWiv6nQQM0hP6ZWEkzdgDvztgHI/+u/MvtzJBN5lBQ2lue/9sSFYLMqzqff5EHKlFtrJCA9dQ== +"@swc/core-linux-arm-gnueabihf@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.24.tgz#5730ed6ad86afe4ee8df04ee6f21430daead186c" + integrity sha512-amI2pwtcWV3E/m/nf+AQtn1LWDzKLZyjCmWd3ms7QjEueWYrY8cU1Y4Wp7wNNsxIoPOi8zek1Uj2wwFD/pttNQ== -"@swc/core-linux-arm64-gnu@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.7.tgz#cbfa512683c73227ad25552f3b3e722b0e7fbd1d" - integrity sha512-hoeTJFBiE/IJP30Be7djWF8Q5KVgkbDtjySmvYLg9P94bHg9TJPSQoC72tXx/oXOgXvElDe/GMybru0UxhKx4g== +"@swc/core-linux-arm64-gnu@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.24.tgz#0a2478e8601391aa88f82bfece1dbc60d27cbcfd" + integrity sha512-sTSvmqMmgT1ynH/nP75Pc51s+iT4crZagHBiDOf5cq+kudUYjda9lWMs7xkXB/TUKFHPCRK0HGunl8bkwiIbuw== -"@swc/core-linux-arm64-musl@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.7.tgz#80239cb58fe57f3c86b44617fe784530ec55ee2b" - integrity sha512-+NDhK+IFTiVK1/o7EXdCeF2hEzCiaRSrb9zD7X2Z7inwWlxAntcSuzZW7Y6BRqGQH89KA91qYgwbnjgTQ22PiQ== +"@swc/core-linux-arm64-musl@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.24.tgz#e0199092dc611ca75f8a92dcea17de44e38f3fbf" + integrity sha512-vd2/hfOBGbrX21FxsFdXCUaffjkHvlZkeE2UMRajdXifwv79jqOHIJg3jXG1F3ZrhCghCzirFts4tAZgcG8XWg== -"@swc/core-linux-x64-gnu@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.7.tgz#a699c1632de60b6a63b7fdb7abcb4fef317e57ca" - integrity sha512-25GXpJmeFxKB+7pbY7YQLhWWjkYlR+kHz5I3j9WRl3Lp4v4UD67OGXwPe+DIcHqcouA1fhLhsgHJWtsaNOMBNg== +"@swc/core-linux-x64-gnu@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.24.tgz#1fe347c9f28457c593f2fda5b0d4904a2b105ecd" + integrity sha512-Zrdzi7NqzQxm2BvAG5KyOSBEggQ7ayrxh599AqqevJmsUXJ8o2nMiWQOBvgCGp7ye+Biz3pvZn1EnRzAp+TpUg== -"@swc/core-linux-x64-musl@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.7.tgz#8e4c203d6bc41e7f85d7d34d0fdf4ef751fa626c" - integrity sha512-0VN9Y5EAPBESmSPPsCJzplZHV26akC0sIgd3Hc/7S/1GkSMoeuVL+V9vt+F/cCuzr4VidzSkqftdP3qEIsXSpg== +"@swc/core-linux-x64-musl@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.24.tgz#bf6ac583fac211d704d2d78cfd0b7bf751268f5e" + integrity sha512-1F8z9NRi52jdZQCGc5sflwYSctL6omxiVmIFVp8TC9nngjQKc00TtX/JC2Eo2HwvgupkFVl5YQJidAck9YtmJw== -"@swc/core-win32-arm64-msvc@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.7.tgz#31e3d42b8c0aa79f0ea1a980c0dd1a999d378ed7" - integrity sha512-RtoNnstBwy5VloNCvmvYNApkTmuCe4sNcoYWpmY7C1+bPR+6SOo8im1G6/FpNem8AR5fcZCmXHWQ+EUmRWJyuA== +"@swc/core-win32-arm64-msvc@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.24.tgz#41b9faf4db69cc08a43c3a176df2a7b94d765637" + integrity sha512-cKpP7KvS6Xr0jFSTBXY53HZX/YfomK5EMQYpCVDOvfsZeYHN20sQSKXfpVLvA/q2igVt1zzy1XJcOhpJcgiKLg== -"@swc/core-win32-ia32-msvc@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.7.tgz#a235285f9f62850aefcf9abb03420f2c54f63638" - integrity sha512-Xm0TfvcmmspvQg1s4+USL3x8D+YPAfX2JHygvxAnCJ0EHun8cm2zvfNBcsTlnwYb0ybFWXXY129aq1wgFC9TpQ== +"@swc/core-win32-ia32-msvc@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.24.tgz#e123ad00e3b28d567d3851a86697fb3c54ed817a" + integrity sha512-IoPWfi0iwqjZuf7gE223+B97/ZwkKbu7qL5KzGP7g3hJrGSKAvv7eC5Y9r2iKKtLKyv5R/T6Ho0kFR/usi7rHw== -"@swc/core-win32-x64-msvc@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.7.tgz#f84641393b5223450d00d97bfff877b8b69d7c9b" - integrity sha512-tp43WfJLCsKLQKBmjmY/0vv1slVywR5Q4qKjF5OIY8QijaEW7/8VwPyUyVoJZEnDgv9jKtUTG5PzqtIYPZGnyg== +"@swc/core-win32-x64-msvc@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.24.tgz#21fb87b1981253039e6d45255e31a875f446e397" + integrity sha512-zHgF2k1uVJL8KIW+PnVz1To4a3Cz9THbh2z2lbehaF/gKHugH4c3djBozU4das1v35KOqf5jWIEviBLql2wDLQ== -"@swc/core@1.5.7": - version "1.5.7" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.5.7.tgz#e1db7b9887d5f34eb4a3256a738d0c5f1b018c33" - integrity sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ== +"@swc/core@1.5.24": + version "1.5.24" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.5.24.tgz#9ecb4601cb6a4fb19f227ec5fb59d07e23347dca" + integrity sha512-Eph9zvO4xvqWZGVzTdtdEJ0Vqf0VIML/o/e4Qd2RLOqtfgnlRi7avmMu5C0oqciJ0tk+hqdUKVUZ4JPoPaiGvQ== dependencies: - "@swc/counter" "^0.1.2" - "@swc/types" "0.1.7" + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.7" optionalDependencies: - "@swc/core-darwin-arm64" "1.5.7" - "@swc/core-darwin-x64" "1.5.7" - "@swc/core-linux-arm-gnueabihf" "1.5.7" - "@swc/core-linux-arm64-gnu" "1.5.7" - "@swc/core-linux-arm64-musl" "1.5.7" - "@swc/core-linux-x64-gnu" "1.5.7" - "@swc/core-linux-x64-musl" "1.5.7" - "@swc/core-win32-arm64-msvc" "1.5.7" - "@swc/core-win32-ia32-msvc" "1.5.7" - "@swc/core-win32-x64-msvc" "1.5.7" + "@swc/core-darwin-arm64" "1.5.24" + "@swc/core-darwin-x64" "1.5.24" + "@swc/core-linux-arm-gnueabihf" "1.5.24" + "@swc/core-linux-arm64-gnu" "1.5.24" + "@swc/core-linux-arm64-musl" "1.5.24" + "@swc/core-linux-x64-gnu" "1.5.24" + "@swc/core-linux-x64-musl" "1.5.24" + "@swc/core-win32-arm64-msvc" "1.5.24" + "@swc/core-win32-ia32-msvc" "1.5.24" + "@swc/core-win32-x64-msvc" "1.5.24" -"@swc/counter@^0.1.2", "@swc/counter@^0.1.3": +"@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== @@ -1324,7 +1324,7 @@ "@swc/counter" "^0.1.3" jsonc-parser "^3.2.0" -"@swc/types@0.1.7": +"@swc/types@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.7.tgz#ea5d658cf460abff51507ca8d26e2d391bafb15e" integrity sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ== @@ -6434,12 +6434,10 @@ sanitize-filename@^1.6.3: dependencies: truncate-utf8-bytes "^1.0.0" -semver@^5.3.0, semver@^6.0.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" +semver@^5.3.0, semver@^6.0.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== send@0.18.0: version "0.18.0"