From e835b02ce24cc0c116bea50b3d65789a801d95e9 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Tue, 4 Feb 2025 14:17:40 +0100 Subject: [PATCH 1/7] update package --- package.json | 2 +- packages/kbn-babel-register/cache/lmdb_cache.js | 6 ++---- yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 3db7b620b4459..94e9c9f092e1b 100644 --- a/package.json +++ b/package.json @@ -1727,7 +1727,7 @@ "cypress-network-idle": "^1.14.2", "cypress-real-events": "^1.11.0", "cypress-recurse": "^1.35.2", - "date-fns": "^2.29.3", + "date-fns": "^4.1.0", "dependency-check": "^4.1.0", "dependency-cruiser": "^16.8.0", "ejs": "^3.1.10", diff --git a/packages/kbn-babel-register/cache/lmdb_cache.js b/packages/kbn-babel-register/cache/lmdb_cache.js index f4b5547b47586..06c0668a0fa99 100644 --- a/packages/kbn-babel-register/cache/lmdb_cache.js +++ b/packages/kbn-babel-register/cache/lmdb_cache.js @@ -9,14 +9,12 @@ const Path = require('path'); const Crypto = require('crypto'); -const startOfDay = /** @type {import('date-fns/startOfDay').default} */ ( - /** @type {unknown} */ (require('date-fns/startOfDay')) -); +const dateFns = require('date-fns'); const chalk = require('chalk'); const LmdbStore = require('lmdb'); -const GLOBAL_ATIME = startOfDay(new Date()).valueOf(); +const GLOBAL_ATIME = dateFns.startOfDay(new Date()).valueOf(); const MINUTE = 1000 * 60; const HOUR = MINUTE * 60; const DAY = HOUR * 24; diff --git a/yarn.lock b/yarn.lock index 19c92560ecfc4..02a0559d2023e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16869,10 +16869,10 @@ date-fns@^1.30.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -date-fns@^2.29.3: - version "2.29.3" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" - integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== +date-fns@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.1.0.tgz#64b3d83fff5aa80438f5b1a633c2e83b8a1c2d14" + integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== date-now@^0.1.4: version "0.1.4" From e8a576c1af3e6e539b31ea089459d1c362e46012 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 5 Feb 2025 14:18:18 +0100 Subject: [PATCH 2/7] fix types --- test/api_integration/apis/home/sample_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/api_integration/apis/home/sample_data.ts b/test/api_integration/apis/home/sample_data.ts index e849c905b2681..764e8e07952e8 100644 --- a/test/api_integration/apis/home/sample_data.ts +++ b/test/api_integration/apis/home/sample_data.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import type { Response } from 'superagent'; -import differenceInMilliseconds from 'date-fns/differenceInMilliseconds'; +import { differenceInMilliseconds } from 'date-fns'; import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common'; import { FtrProviderContext } from '../../ftr_provider_context'; From a13ddf6e32a3912489fddd2cbbc5fb341decf350 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 5 Feb 2025 14:21:48 +0100 Subject: [PATCH 3/7] update --- .../components/investigation_header/investigation_header.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx index d6bfb1c496793..70e1da2a34f8e 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx @@ -7,7 +7,6 @@ import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -// eslint-disable-next-line import/no-extraneous-dependencies import { formatDistance } from 'date-fns'; import React from 'react'; import { InvestigationStatusBadge } from '../../../../components/investigation_status_badge/investigation_status_badge'; From 8ff160eeedf0e110e72e34c80cd20167adfb93ad Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 5 Feb 2025 14:23:58 +0100 Subject: [PATCH 4/7] date fns --- .../investigation_header/investigation_header.tsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx index 70e1da2a34f8e..b5cb4a92902fa 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx @@ -7,8 +7,8 @@ import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { formatDistance } from 'date-fns'; import React from 'react'; +import moment from 'moment'; import { InvestigationStatusBadge } from '../../../../components/investigation_status_badge/investigation_status_badge'; import { InvestigationTag } from '../../../../components/investigation_tag/investigation_tag'; import { useInvestigation } from '../../contexts/investigation_context'; @@ -51,13 +51,7 @@ export function InvestigationHeader() { id="xpack.investigateApp.investigationHeader.startedLabel" defaultMessage="Started: {timeAgo}" values={{ - timeAgo: ( - - {formatDistance(new Date(investigation.createdAt), new Date(), { - addSuffix: true, - })} - - ), + timeAgo: {moment(investigation.createdAt).from(moment(), true)}, }} /> From 2d184dabd340f1d1a011bdbe2822674d2934d944 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 5 Feb 2025 14:39:44 +0100 Subject: [PATCH 5/7] remove usage --- package.json | 1 - .../kbn-babel-register/cache/lmdb_cache.js | 4 ++-- renovate.json | 20 ------------------- .../kbn-generate-csv/src/generate_csv.test.ts | 6 +++--- .../src/generate_csv_esql.test.ts | 6 +++--- .../src/lib/get_export_settings.test.ts | 8 ++++---- test/api_integration/apis/home/sample_data.ts | 8 ++++---- .../investigation_header.tsx | 2 +- .../components/investigation_notes/note.tsx | 5 ++--- 9 files changed, 19 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 5282f99d28121..89dc8984fb075 100644 --- a/package.json +++ b/package.json @@ -1727,7 +1727,6 @@ "cypress-network-idle": "^1.14.2", "cypress-real-events": "^1.11.0", "cypress-recurse": "^1.35.2", - "date-fns": "^4.1.0", "dependency-check": "^4.1.0", "dependency-cruiser": "^16.8.0", "ejs": "^3.1.10", diff --git a/packages/kbn-babel-register/cache/lmdb_cache.js b/packages/kbn-babel-register/cache/lmdb_cache.js index 06c0668a0fa99..5248716511ac8 100644 --- a/packages/kbn-babel-register/cache/lmdb_cache.js +++ b/packages/kbn-babel-register/cache/lmdb_cache.js @@ -9,12 +9,12 @@ const Path = require('path'); const Crypto = require('crypto'); -const dateFns = require('date-fns'); const chalk = require('chalk'); const LmdbStore = require('lmdb'); +const moment = require('moment'); -const GLOBAL_ATIME = dateFns.startOfDay(new Date()).valueOf(); +const GLOBAL_ATIME = moment().startOf('day').valueOf(); const MINUTE = 1000 * 60; const HOUR = MINUTE * 60; const DAY = HOUR * 24; diff --git a/renovate.json b/renovate.json index b15cf62d6a4f8..7e96fed5facaa 100644 --- a/renovate.json +++ b/renovate.json @@ -3478,26 +3478,6 @@ "minimumReleaseAge": "7 days", "enabled": true }, - { - "groupName": "date-fns", - "matchDepNames": [ - "date-fns" - ], - "reviewers": [ - "team:obs-ux-management-team" - ], - "matchBaseBranches": [ - "main" - ], - "labels": [ - "release_note:skip", - "backport:all-open", - "ci:all-cypress-suites", - "Team:obs-ux-management" - ], - "minimumReleaseAge": "7 days", - "enabled": true - }, { "groupName": "form-data", "matchDepNames": [ diff --git a/src/platform/packages/private/kbn-generate-csv/src/generate_csv.test.ts b/src/platform/packages/private/kbn-generate-csv/src/generate_csv.test.ts index e2999b63088d3..2147e6e50c56a 100644 --- a/src/platform/packages/private/kbn-generate-csv/src/generate_csv.test.ts +++ b/src/platform/packages/private/kbn-generate-csv/src/generate_csv.test.ts @@ -10,7 +10,6 @@ import { identity, range } from 'lodash'; import * as Rx from 'rxjs'; import type { Writable } from 'stream'; -import { add, type Duration } from 'date-fns'; import { errors as esErrors, estypes } from '@elastic/elasticsearch'; import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types'; @@ -38,6 +37,7 @@ import { UI_SETTINGS_DATEFORMAT_TZ, } from '../constants'; import { CsvGenerator } from './generate_csv'; +import moment from 'moment'; type CsvConfigType = ReportingConfigType['csv']; @@ -576,9 +576,9 @@ describe('CsvGenerator', () => { }); describe('export behavior when scroll duration config is auto', () => { - const getTaskInstanceFields = (intervalFromNow: Duration) => { + const getTaskInstanceFields = (intervalFromNow: { seconds: number }) => { const now = new Date(Date.now()); - return { startedAt: now, retryAt: add(now, intervalFromNow) }; + return { startedAt: now, retryAt: moment(now).add(intervalFromNow).toDate() }; }; let mockConfigWithAutoScrollDuration: ReportingConfigType['csv']; diff --git a/src/platform/packages/private/kbn-generate-csv/src/generate_csv_esql.test.ts b/src/platform/packages/private/kbn-generate-csv/src/generate_csv_esql.test.ts index 8dbcfba7bbc9d..b8c4633c17b80 100644 --- a/src/platform/packages/private/kbn-generate-csv/src/generate_csv_esql.test.ts +++ b/src/platform/packages/private/kbn-generate-csv/src/generate_csv_esql.test.ts @@ -9,7 +9,6 @@ import * as Rx from 'rxjs'; import type { Writable } from 'stream'; -import { add, type Duration } from 'date-fns'; import { errors as esErrors } from '@elastic/elasticsearch'; import type { IScopedClusterClient, IUiSettingsClient, Logger } from '@kbn/core/server'; @@ -31,6 +30,7 @@ import { UI_SETTINGS_DATEFORMAT_TZ, } from '../constants'; import { CsvESQLGenerator, JobParamsCsvESQL } from './generate_csv_esql'; +import moment from 'moment'; const createMockJob = (params: JobParamsCsvESQL): JobParamsCsvESQL => ({ ...params, @@ -216,9 +216,9 @@ describe('CsvESQLGenerator', () => { }); describe('"auto" scroll duration config', () => { - const getTaskInstanceFields = (intervalFromNow: Duration) => { + const getTaskInstanceFields = (intervalFromNow: { seconds: number }) => { const now = new Date(Date.now()); - return { startedAt: now, retryAt: add(now, intervalFromNow) }; + return { startedAt: now, retryAt: moment(now).add(intervalFromNow).toDate() }; }; let mockConfigWithAutoScrollDuration: ReportingConfigType['csv']; diff --git a/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts b/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts index f1c73680a8b9d..ab6afbfa609ed 100644 --- a/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts +++ b/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts @@ -15,7 +15,6 @@ import { } from '@kbn/core/server/mocks'; import type { ReportingConfigType } from '@kbn/reporting-server'; import type { TaskInstanceFields } from '@kbn/reporting-common/types'; -import { sub, add, type Duration } from 'date-fns'; import { UI_SETTINGS_CSV_QUOTE_VALUES, @@ -24,6 +23,7 @@ import { UI_SETTINGS_SEARCH_INCLUDE_FROZEN, } from '../../constants'; import { getExportSettings } from './get_export_settings'; +import moment from 'moment'; describe('getExportSettings', () => { let uiSettingsClient: IUiSettingsClient; @@ -163,8 +163,8 @@ describe('getExportSettings', () => { spiedDateNow = jest.spyOn(Date, 'now').mockReturnValue(now); mockedTaskInstanceFields = { - startedAt: sub(new Date(Date.now()), durationApart), - retryAt: add(new Date(Date.now()), durationApart), + startedAt: moment().subtract(durationApart).toDate(), + retryAt: moment().add(durationApart).toDate(), }; }); @@ -238,7 +238,7 @@ describe('getExportSettings', () => { }; spiedDateNow.mockReturnValue( - add(mockedTaskInstanceFields.retryAt!, { minutes: 5 }).getTime() + moment(mockedTaskInstanceFields.retryAt!).add(durationApart).toDate().getTime() ); const { scroll } = await getExportSettings( diff --git a/test/api_integration/apis/home/sample_data.ts b/test/api_integration/apis/home/sample_data.ts index 764e8e07952e8..ac8d0dcd3e307 100644 --- a/test/api_integration/apis/home/sample_data.ts +++ b/test/api_integration/apis/home/sample_data.ts @@ -9,8 +9,8 @@ import expect from '@kbn/expect'; import type { Response } from 'superagent'; -import { differenceInMilliseconds } from 'date-fns'; import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common'; +import moment from 'moment'; import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { @@ -75,9 +75,9 @@ export default function ({ getService }: FtrProviderContext) { describe('dates', () => { // dates being compared are not arbitrary, but rather the dates of the earliest and latest timestamp of the flight sample data // this can be verified in the flight data archive here {@link src/platform/plugins/shared/home/server/services/sample_data/data_sets/flights/flights.json.gz} - const sampleDataTimeIntervalInMS = differenceInMilliseconds( - new Date('2018-02-11T14:54:34'), - new Date('2018-01-01T00:00:00') + const sampleDataTimeIntervalInMS = moment('2018-02-11T14:54:34').diff( + moment('2018-01-01T00:00:00'), + 'milliseconds' ); it('should load elasticsearch index containing sample data with dates relative to current time', async () => { diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx index b5cb4a92902fa..cfbfb2f960c68 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_header/investigation_header.tsx @@ -51,7 +51,7 @@ export function InvestigationHeader() { id="xpack.investigateApp.investigationHeader.startedLabel" defaultMessage="Started: {timeAgo}" values={{ - timeAgo: {moment(investigation.createdAt).from(moment(), true)}, + timeAgo: {moment(investigation.createdAt).fromNow()}, }} /> diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/note.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/note.tsx index d33bca416f5bd..9536bf9562303 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/note.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/investigation_notes/note.tsx @@ -15,9 +15,8 @@ import { import { css } from '@emotion/css'; import { InvestigationNoteResponse } from '@kbn/investigation-shared'; import { UserProfile } from '@kbn/security-plugin/common'; -// eslint-disable-next-line import/no-extraneous-dependencies -import { formatDistance } from 'date-fns'; import React, { useState } from 'react'; +import moment from 'moment'; import { useTheme } from '../../../../hooks/use_theme'; import { useInvestigation } from '../../contexts/investigation_context'; import { EditNoteForm } from './edit_note_form'; @@ -78,7 +77,7 @@ export function Note({ note, isOwner, userProfile, userProfileLoading }: Props) - {formatDistance(new Date(note.createdAt), new Date(), { addSuffix: true })} + {moment(new Date(note.createdAt)).fromNow()} From f6a28017210e3388249eefdb870204a9147ceb94 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 5 Feb 2025 14:42:42 +0100 Subject: [PATCH 6/7] simplify --- packages/kbn-babel-register/BUILD.bazel | 1 - packages/kbn-babel-register/cache/lmdb_cache.js | 3 +-- yarn.lock | 5 ----- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/kbn-babel-register/BUILD.bazel b/packages/kbn-babel-register/BUILD.bazel index b64bf2eee0d46..1615aa3cf7341 100644 --- a/packages/kbn-babel-register/BUILD.bazel +++ b/packages/kbn-babel-register/BUILD.bazel @@ -35,7 +35,6 @@ BUNDLER_DEPS = [ "@npm//chalk", "@npm//pirates", "@npm//lmdb", - "@npm//date-fns", "@npm//source-map-support", "//src/platform/packages/private/kbn-repo-packages", "//src/platform/packages/shared/kbn-repo-info", diff --git a/packages/kbn-babel-register/cache/lmdb_cache.js b/packages/kbn-babel-register/cache/lmdb_cache.js index 5248716511ac8..e7e5e045ee59b 100644 --- a/packages/kbn-babel-register/cache/lmdb_cache.js +++ b/packages/kbn-babel-register/cache/lmdb_cache.js @@ -12,9 +12,8 @@ const Crypto = require('crypto'); const chalk = require('chalk'); const LmdbStore = require('lmdb'); -const moment = require('moment'); -const GLOBAL_ATIME = moment().startOf('day').valueOf(); +const GLOBAL_ATIME = new Date().setHours(0, 0, 0, 0); const MINUTE = 1000 * 60; const HOUR = MINUTE * 60; const DAY = HOUR * 24; diff --git a/yarn.lock b/yarn.lock index 749226f95cf7f..70de5ca0780fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16869,11 +16869,6 @@ date-fns@^1.30.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -date-fns@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.1.0.tgz#64b3d83fff5aa80438f5b1a633c2e83b8a1c2d14" - integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" From 748acdf182bd77aff2d38b4d31f35217387ac7f9 Mon Sep 17 00:00:00 2001 From: Shahzad Date: Wed, 5 Feb 2025 15:20:43 +0100 Subject: [PATCH 7/7] Update get_export_settings.test.ts --- .../kbn-generate-csv/src/lib/get_export_settings.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts b/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts index ab6afbfa609ed..245d78c83883b 100644 --- a/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts +++ b/src/platform/packages/private/kbn-generate-csv/src/lib/get_export_settings.test.ts @@ -154,7 +154,7 @@ describe('getExportSettings', () => { describe('scroll duration function', () => { let spiedDateNow: jest.Spied; let mockedTaskInstanceFields: TaskInstanceFields; - const durationApart: Duration = { minutes: 5 }; + const durationApart: { minutes: number } = { minutes: 5 }; beforeEach(() => { const now = Date.now();