From 111309a770977fe1a73d317255ce2a28f1a751a1 Mon Sep 17 00:00:00 2001 From: Elizabeth Craig Date: Thu, 8 Jan 2026 17:10:09 -0800 Subject: [PATCH] Use `import type` internally --- .eslintrc.js | 2 ++ change/beachball-41e15715-39f5-4e08-b9fb-15190803a8af.json | 7 +++++++ src/__e2e__/change.test.ts | 1 + src/__fixtures__/mockNpm.ts | 5 +++-- src/__functional__/packageManager/packPackage.test.ts | 4 ++-- src/__functional__/packageManager/packagePublish.test.ts | 2 +- src/__tests__/bump/performBump.test.ts | 2 +- src/__tests__/bump/updateLockFile.test.ts | 1 + src/__tests__/bump/updateRelatedChangeType.test.ts | 4 ++-- src/bump/updateRelatedChangeType.ts | 2 +- src/changefile/changeTypes.ts | 2 +- src/packageManager/packPackage.ts | 4 ++-- src/validation/isValidDependentChangeType.ts | 2 +- 13 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 change/beachball-41e15715-39f5-4e08-b9fb-15190803a8af.json diff --git a/.eslintrc.js b/.eslintrc.js index cb875bd8d..8dc869d49 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -17,6 +17,8 @@ const config = { rules: { '@typescript-eslint/consistent-generic-constructors': 'error', '@typescript-eslint/consistent-type-assertions': 'error', + '@typescript-eslint/consistent-type-imports': 'error', + '@typescript-eslint/consistent-type-exports': 'error', '@typescript-eslint/explicit-module-boundary-types': 'error', '@typescript-eslint/naming-convention': [ 'error', diff --git a/change/beachball-41e15715-39f5-4e08-b9fb-15190803a8af.json b/change/beachball-41e15715-39f5-4e08-b9fb-15190803a8af.json new file mode 100644 index 000000000..67a3ab110 --- /dev/null +++ b/change/beachball-41e15715-39f5-4e08-b9fb-15190803a8af.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Use `import type` internally", + "packageName": "beachball", + "email": "elcraig@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/src/__e2e__/change.test.ts b/src/__e2e__/change.test.ts index 9459d6224..afc543c21 100644 --- a/src/__e2e__/change.test.ts +++ b/src/__e2e__/change.test.ts @@ -38,6 +38,7 @@ let mockBeachballOptions: Partial | undefined; jest.mock('../options/getDefaultOptions', () => ({ getDefaultOptions: () => ({ ...jest + // eslint-disable-next-line @typescript-eslint/consistent-type-imports .requireActual('../options/getDefaultOptions') .getDefaultOptions(), ...mockBeachballOptions, diff --git a/src/__fixtures__/mockNpm.ts b/src/__fixtures__/mockNpm.ts index dc2e295c0..1a9d50d01 100644 --- a/src/__fixtures__/mockNpm.ts +++ b/src/__fixtures__/mockNpm.ts @@ -1,9 +1,10 @@ -import { afterAll, afterEach, beforeAll, jest } from '@jest/globals'; +import type { jest } from '@jest/globals'; +import { afterAll, afterEach, beforeAll } from '@jest/globals'; import fs from 'fs'; import fetch from 'npm-registry-fetch'; import path from 'path'; import semver from 'semver'; -import { npm, NpmResult } from '../packageManager/npm'; +import { npm, type NpmResult } from '../packageManager/npm'; import type { PackageJson } from '../types/PackageInfo'; import type { PackageManagerOptions } from '../packageManager/packageManager'; import { readJson } from '../object/readJson'; diff --git a/src/__functional__/packageManager/packPackage.test.ts b/src/__functional__/packageManager/packPackage.test.ts index 0bc1b0592..35401ae4b 100644 --- a/src/__functional__/packageManager/packPackage.test.ts +++ b/src/__functional__/packageManager/packPackage.test.ts @@ -3,10 +3,10 @@ import fs from 'fs'; import path from 'path'; import { initMockLogs } from '../../__fixtures__/mockLogs'; import { removeTempDir, tmpdir } from '../../__fixtures__/tmpdir'; -import * as npmModuleType from '../../packageManager/npm'; +import type * as npmModuleType from '../../packageManager/npm'; import type { NpmResult } from '../../packageManager/npm'; import { packPackage } from '../../packageManager/packPackage'; -import { PackageInfo } from '../../types/PackageInfo'; +import type { PackageInfo } from '../../types/PackageInfo'; import { getMockNpmPackName, initNpmMock } from '../../__fixtures__/mockNpm'; import { writeJson } from '../../object/writeJson'; diff --git a/src/__functional__/packageManager/packagePublish.test.ts b/src/__functional__/packageManager/packagePublish.test.ts index cfbdf9257..267a047a5 100644 --- a/src/__functional__/packageManager/packagePublish.test.ts +++ b/src/__functional__/packageManager/packagePublish.test.ts @@ -6,7 +6,7 @@ import { removeTempDir, tmpdir } from '../../__fixtures__/tmpdir'; import * as npmModule from '../../packageManager/npm'; import { packagePublish } from '../../packageManager/packagePublish'; import type { PackageInfo } from '../../types/PackageInfo'; -import { npm, NpmResult } from '../../packageManager/npm'; +import type { npm, NpmResult } from '../../packageManager/npm'; import { writeJson } from '../../object/writeJson'; import { getNpmPackageInfo, type NpmPackageVersionsData } from '../../packageManager/getNpmPackageInfo'; import { env } from '../../env'; diff --git a/src/__tests__/bump/performBump.test.ts b/src/__tests__/bump/performBump.test.ts index 11d9d8ec8..2d133c978 100644 --- a/src/__tests__/bump/performBump.test.ts +++ b/src/__tests__/bump/performBump.test.ts @@ -7,7 +7,7 @@ import { makePackageInfos, type PartialPackageInfos } from '../../__fixtures__/p import type { BumpInfo } from '../../types/BumpInfo'; import { getParsedOptions } from '../../options/getOptions'; import { performBump } from '../../bump/performBump'; -import { ChangeSet, type ChangeFileInfo } from '../../types/ChangeInfo'; +import type { ChangeSet, ChangeFileInfo } from '../../types/ChangeInfo'; import { consideredDependencies, type PackageInfos, type PackageJson } from '../../types/PackageInfo'; import { initMockLogs } from '../../__fixtures__/mockLogs'; import { updateLockFile as _updateLockFile } from '../../bump/updateLockFile'; diff --git a/src/__tests__/bump/updateLockFile.test.ts b/src/__tests__/bump/updateLockFile.test.ts index 4200481f2..31793a244 100644 --- a/src/__tests__/bump/updateLockFile.test.ts +++ b/src/__tests__/bump/updateLockFile.test.ts @@ -8,6 +8,7 @@ jest.mock('fs'); jest.mock('../../packageManager/packageManager'); jest.mock('../../env', () => ({ env: { + // eslint-disable-next-line @typescript-eslint/consistent-type-imports ...jest.requireActual('../../env').env, isJest: false, }, diff --git a/src/__tests__/bump/updateRelatedChangeType.test.ts b/src/__tests__/bump/updateRelatedChangeType.test.ts index 5a169bd3d..869b5ca05 100644 --- a/src/__tests__/bump/updateRelatedChangeType.test.ts +++ b/src/__tests__/bump/updateRelatedChangeType.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from '@jest/globals'; import { updateRelatedChangeType } from '../../bump/updateRelatedChangeType'; import type { ChangeFileInfo, ChangeInfo, ChangeType } from '../../types/ChangeInfo'; -import { PartialPackageInfos, makePackageInfos } from '../../__fixtures__/packageInfos'; -import { PackageGroups } from '../../types/PackageInfo'; +import { makePackageInfos, type PartialPackageInfos } from '../../__fixtures__/packageInfos'; +import type { PackageGroups } from '../../types/PackageInfo'; import { getDependentsForPackages } from '../../bump/getDependentsForPackages'; import type { BeachballOptions } from '../../types/BeachballOptions'; diff --git a/src/bump/updateRelatedChangeType.ts b/src/bump/updateRelatedChangeType.ts index fb49aa258..70b4d6c8d 100644 --- a/src/bump/updateRelatedChangeType.ts +++ b/src/bump/updateRelatedChangeType.ts @@ -2,7 +2,7 @@ import { getMaxChangeType } from '../changefile/changeTypes'; import { getPackageOption } from '../options/getPackageOption'; import type { BeachballOptions } from '../types/BeachballOptions'; import type { BumpInfo, PackageDependents } from '../types/BumpInfo'; -import { ChangeFileInfo } from '../types/ChangeInfo'; +import type { ChangeFileInfo } from '../types/ChangeInfo'; /** * This is the core of the `bumpInfo` dependency bumping logic - done once per change info. diff --git a/src/changefile/changeTypes.ts b/src/changefile/changeTypes.ts index c89ba409b..b6380bce1 100644 --- a/src/changefile/changeTypes.ts +++ b/src/changefile/changeTypes.ts @@ -1,4 +1,4 @@ -import { BumpInfo } from '../types/BumpInfo'; +import type { BumpInfo } from '../types/BumpInfo'; import type { ChangeSet, ChangeType } from '../types/ChangeInfo'; /** diff --git a/src/packageManager/packPackage.ts b/src/packageManager/packPackage.ts index 3b6c13322..720ff7187 100644 --- a/src/packageManager/packPackage.ts +++ b/src/packageManager/packPackage.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import path from 'path'; -import { PackageInfo } from '../types/PackageInfo'; -import { BeachballOptions } from '../types/BeachballOptions'; +import type { PackageInfo } from '../types/PackageInfo'; +import type { BeachballOptions } from '../types/BeachballOptions'; import { npm } from './npm'; import { getNpmLogLevelArgs } from './npmArgs'; diff --git a/src/validation/isValidDependentChangeType.ts b/src/validation/isValidDependentChangeType.ts index 972f81b08..d1bdf482c 100644 --- a/src/validation/isValidDependentChangeType.ts +++ b/src/validation/isValidDependentChangeType.ts @@ -1,5 +1,5 @@ import { SortedChangeTypes } from '../changefile/changeTypes'; -import { ChangeType } from '../types/ChangeInfo'; +import type { ChangeType } from '../types/ChangeInfo'; /** * Returns whether `dependentChangeType` is valid and not disallowed.