Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/orange-dolls-smell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@sanity/cli-build": major
"@sanity/cli": patch
---

Move compareDependencyVersions into cli-build package. This change cleans up an unused export getModuleUrl from cli-build.
10 changes: 5 additions & 5 deletions packages/@sanity/cli-build/src/_exports/_internal/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ export {buildStaticFiles} from '../../actions/build/buildStaticFiles.js'
export {buildStudio} from '../../actions/build/buildStudio.js'
export {checkRequiredDependencies} from '../../actions/build/checkRequiredDependencies.js'
export {checkStudioDependencyVersions} from '../../actions/build/checkStudioDependencyVersions.js'
export {getModuleUrl} from '../../actions/build/getAutoUpdatesImportMap.js'
export {extendViteConfigWithUserConfig, getViteConfig} from '../../actions/build/getViteConfig.js'
export {resolveVendorBuildConfig} from '../../actions/build/resolveVendorBuildConfig.js'
export {writeSanityRuntime} from '../../actions/build/writeSanityRuntime.js'
export {SANITY_CACHE_DIR} from '../../constants.js'
export type {
CompareDependencyVersions,
CompareDependencyVersionsResult,
UnresolvedPrerelease,
export {
compareDependencyVersions,
type CompareDependencyVersions,
type CompareDependencyVersionsResult,
type UnresolvedPrerelease,
} from '../../util/compareDependencyVersions.js'
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {beforeEach, describe, expect, it, vi} from 'vitest'

import {compareDependencyVersions} from '../compareDependencyVersions'
import {compareDependencyVersions} from '../compareDependencyVersions.js'

const mockReadPackageJson = vi.hoisted(() => vi.fn())
const mockRequest = vi.hoisted(() => vi.fn())
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
import path from 'node:path'

import {
type CompareDependencyVersions,
type CompareDependencyVersionsResult,
getModuleUrl,
type UnresolvedPrerelease,
} from '@sanity/cli-build/_internal/build'
import {getLocalPackageVersion, readPackageJson} from '@sanity/cli-core'
import {createRequester} from '@sanity/cli-core/request'
import {coerce, eq, prerelease, parse as semverParse} from 'semver'

import {getModuleUrl} from '../actions/build/getAutoUpdatesImportMap.js'

export interface CompareDependencyVersions {
installed: string
pkg: string
remote: string
}

export interface UnresolvedPrerelease {
pkg: string
version: string
}

export interface CompareDependencyVersionsResult {
mismatched: Array<CompareDependencyVersions>
unresolvedPrerelease: Array<UnresolvedPrerelease>
}

const defaultRequester = createRequester({
middleware: {httpErrors: false, promise: {onlyBody: false}},
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,27 @@ const FLAGS = {

// Mock heavy dependencies to isolate appId warning logic
// Paths are relative to the test file location (__tests__/)
vi.mock('../../../util/warnAboutMissingAppId.js', () => ({
vi.mock(import('../../../util/warnAboutMissingAppId.js'), () => ({
warnAboutMissingAppId: mockWarnAboutMissingAppId,
}))

vi.mock('../../../util/appId.js', () => ({
vi.mock(import('../../../util/appId.js'), () => ({
getAppId: mockGetAppId,
}))

vi.mock('../../../util/compareDependencyVersions.js', () => ({
compareDependencyVersions: vi.fn().mockResolvedValue({mismatched: [], unresolvedPrerelease: []}),
}))

vi.mock('@sanity/cli-build/_internal/build', async (importOriginal) => {
const actual = await importOriginal<typeof import('@sanity/cli-build/_internal/build')>()
vi.mock(import('@sanity/cli-build/_internal/build'), async (importOriginal) => {
const actual = await importOriginal()
return {
...actual,
buildApp: mockedBuildApp,
compareDependencyVersions: vi
.fn()
.mockResolvedValue({mismatched: [], unresolvedPrerelease: []}),
}
})

vi.mock('@sanity/cli-core', async (importOriginal) => {
const actual = await importOriginal<typeof import('@sanity/cli-core')>()
vi.mock(import('@sanity/cli-core'), async (importOriginal) => {
Comment thread
snocorp marked this conversation as resolved.
Outdated
const actual = await importOriginal()
return {
...actual,
getCliTelemetry: vi.fn().mockReturnValue({
Expand All @@ -54,11 +53,7 @@ vi.mock('@sanity/cli-core', async (importOriginal) => {
}
})

vi.mock('@sanity/cli-core/ux', () => ({
confirm: vi.fn(),
logSymbols: {info: 'i', warning: '!'},
spinner: vi.fn(() => ({fail: vi.fn(), start: vi.fn().mockReturnThis(), succeed: vi.fn()})),
}))
vi.mock('@sanity/cli-core/ux', async () => import('@sanity/cli-test/mocks/cli-core/ux'))

// Import after mocks are set up
const {buildApp} = await import('../buildApp.js')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,28 +22,27 @@ const FLAGS = {

// Mock heavy dependencies to isolate appId warning logic
// Paths are relative to the test file location (__tests__/)
vi.mock('../../../util/warnAboutMissingAppId.js', () => ({
vi.mock(import('../../../util/warnAboutMissingAppId.js'), () => ({
warnAboutMissingAppId: mockWarnAboutMissingAppId,
}))

vi.mock('../../../util/appId.js', () => ({
vi.mock(import('../../../util/appId.js'), () => ({
getAppId: mockGetAppId,
}))

vi.mock('../../../util/compareDependencyVersions.js', () => ({
compareDependencyVersions: vi.fn().mockResolvedValue({mismatched: [], unresolvedPrerelease: []}),
}))

vi.mock('@sanity/cli-build/_internal/build', async (importOriginal) => {
const actual = await importOriginal<typeof import('@sanity/cli-core')>()
vi.mock(import('@sanity/cli-build/_internal/build'), async (importOriginal) => {
const actual = await importOriginal()
return {
...actual,
buildStudio: mockBuildStudio,
compareDependencyVersions: vi
.fn()
.mockResolvedValue({mismatched: [], unresolvedPrerelease: []}),
}
})

vi.mock('@sanity/cli-core', async (importOriginal) => {
const actual = await importOriginal<typeof import('@sanity/cli-core')>()
vi.mock(import('@sanity/cli-core'), async (importOriginal) => {
Comment thread
snocorp marked this conversation as resolved.
Outdated
const actual = await importOriginal()
return {
...actual,
getCliTelemetry: vi.fn().mockReturnValue({
Expand All @@ -55,12 +54,7 @@ vi.mock('@sanity/cli-core', async (importOriginal) => {
}
})

vi.mock('@sanity/cli-core/ux', () => ({
confirm: vi.fn(),
logSymbols: {info: 'i', warning: '!'},
select: vi.fn(),
spinner: vi.fn(() => ({fail: vi.fn(), start: vi.fn().mockReturnThis(), succeed: vi.fn()})),
}))
vi.mock('@sanity/cli-core/ux', async () => import('@sanity/cli-test/mocks/cli-core/ux'))

// Import after mocks are set up
const {buildStudio} = await import('../buildStudio.js')
Expand Down
6 changes: 4 additions & 2 deletions packages/@sanity/cli/src/actions/build/buildApp.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import {buildApp as internalBuildApp} from '@sanity/cli-build/_internal/build'
import {
compareDependencyVersions,
buildApp as internalBuildApp,
} from '@sanity/cli-build/_internal/build'
import {resolveWorkbenchApp} from '@sanity/workbench-cli/build'

import {getAppId} from '../../util/appId.js'
import {compareDependencyVersions} from '../../util/compareDependencyVersions.js'
import {warnAboutMissingAppId} from '../../util/warnAboutMissingAppId.js'
import {determineBasePath} from './determineBasePath.js'
import {type BuildOptions} from './types.js'
Expand Down
6 changes: 4 additions & 2 deletions packages/@sanity/cli/src/actions/build/buildStudio.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import {buildStudio as internalBuildStudio} from '@sanity/cli-build/_internal/build'
import {
compareDependencyVersions,
buildStudio as internalBuildStudio,
} from '@sanity/cli-build/_internal/build'
import {resolveWorkbenchApp} from '@sanity/workbench-cli/build'

import {getAppId} from '../../util/appId.js'
import {compareDependencyVersions} from '../../util/compareDependencyVersions.js'
import {determineIsApp} from '../../util/determineIsApp.js'
import {getPackageManagerChoice} from '../../util/packageManager/packageManagerChoice.js'
import {upgradePackages} from '../../util/packageManager/upgradePackages.js'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,11 @@ vi.mock('../getDashboardAppUrl.js', () => ({
vi.mock('@sanity/cli-build/_internal/build', () => ({
checkRequiredDependencies: mockCheckRequiredDependencies,
checkStudioDependencyVersions: mockCheckStudioDependencyVersions,
compareDependencyVersions: mockCompareDependencyVersions,
}))
vi.mock('../../../build/shouldAutoUpdate.js', () => ({
shouldAutoUpdate: mockShouldAutoUpdate,
}))
vi.mock('../../../../util/compareDependencyVersions.js', () => ({
compareDependencyVersions: mockCompareDependencyVersions,
}))
vi.mock('../../../../util/appId.js', () => ({
getAppId: mockGetAppId,
}))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {styleText} from 'node:util'
import {
checkRequiredDependencies,
checkStudioDependencyVersions,
compareDependencyVersions,
} from '@sanity/cli-build/_internal/build'
import {getLocalPackageVersion, isInteractive} from '@sanity/cli-core'
import {confirm, logSymbols, spinner} from '@sanity/cli-core/ux'
Expand All @@ -13,7 +14,6 @@ import {startDevServer} from '../../../server/devServer.js'
import {gracefulServerDeath} from '../../../server/gracefulServerDeath.js'
import {getProjectById} from '../../../services/projects.js'
import {getAppId} from '../../../util/appId.js'
import {compareDependencyVersions} from '../../../util/compareDependencyVersions.js'
import {getPackageManagerChoice} from '../../../util/packageManager/packageManagerChoice.js'
import {upgradePackages} from '../../../util/packageManager/upgradePackages.js'
import {shouldAutoUpdate} from '../../build/shouldAutoUpdate.js'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,25 @@ const mockedSelect = vi.hoisted(() => vi.fn())
const mockedCompareDependencyVersions = vi.hoisted(() => vi.fn())
const mockedIsInteractive = vi.hoisted(() => vi.fn(() => true))

vi.mock('@sanity/cli-core/ux', async (importOriginal) => {
const original = await importOriginal<typeof import('@sanity/cli-core/ux')>()
vi.mock(import('@sanity/cli-build/_internal/build'), async (importOriginal) => {
const original = await importOriginal()
return {
...original,
compareDependencyVersions: mockedCompareDependencyVersions,
}
})

vi.mock(import('@sanity/cli-core/ux'), async (importOriginal) => {
const original = await importOriginal()
return {
...original,
confirm: mockedConfirm,
select: mockedSelect,
}
})

vi.mock('../../../src/util/compareDependencyVersions.js', () => ({
compareDependencyVersions: mockedCompareDependencyVersions,
}))

vi.mock('@sanity/cli-core', async (importOriginal) => {
const original = await importOriginal<typeof import('@sanity/cli-core')>()
vi.mock(import('@sanity/cli-core'), async (importOriginal) => {
const original = await importOriginal()
return {
...original,
isInteractive: mockedIsInteractive,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,32 @@ const mockedCompareDependencyVersions = vi.hoisted(() => vi.fn())
const mockedUpgradePackages = vi.hoisted(() => vi.fn())
const mockedIsInteractive = vi.hoisted(() => vi.fn())

vi.mock('@sanity/cli-core', async (importOriginal) => {
const original = await importOriginal<typeof import('@sanity/cli-core')>()
vi.mock(import('@sanity/cli-build/_internal/build'), async (importOriginal) => {
const original = await importOriginal()
return {
...original,
compareDependencyVersions: mockedCompareDependencyVersions,
}
})

vi.mock(import('@sanity/cli-core'), async (importOriginal) => {
const original = await importOriginal()
return {
...original,
isInteractive: mockedIsInteractive,
}
})

vi.mock('@sanity/cli-core/ux', async (importOriginal) => {
const original = await importOriginal<typeof import('@sanity/cli-core/ux')>()
vi.mock(import('@sanity/cli-core/ux'), async (importOriginal) => {
const original = await importOriginal()
return {
...original,
confirm: mockedConfirm,
select: mockedSelect,
}
})

vi.mock('../../../src/util/compareDependencyVersions.js', () => ({
compareDependencyVersions: mockedCompareDependencyVersions,
}))

vi.mock('../../../src/util/packageManager/upgradePackages.js', () => ({
vi.mock(import('../../../src/util/packageManager/upgradePackages.js'), () => ({
upgradePackages: mockedUpgradePackages,
}))

Expand Down
31 changes: 12 additions & 19 deletions packages/@sanity/cli/test/integration/commands/dev.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@ import {createServer} from 'node:http'
import {platform} from 'node:os'
import {join} from 'node:path'

import {checkRequiredDependencies} from '@sanity/cli-build/_internal/build'
import {
checkRequiredDependencies,
compareDependencyVersions,
} from '@sanity/cli-build/_internal/build'
import {getProjectCliClient} from '@sanity/cli-core'
import {confirm} from '@sanity/cli-core/ux'
import {testCommand, testFixture} from '@sanity/cli-test'
import {afterEach, describe, expect, test, vi} from 'vitest'

import {DevCommand} from '../../../src/commands/dev.js'
import {compareDependencyVersions} from '../../../src/util/compareDependencyVersions.js'
import {getPackageManagerChoice} from '../../../src/util/packageManager/packageManagerChoice.js'
import {upgradePackages} from '../../../src/util/packageManager/upgradePackages.js'
import {closeServer, tryCloseServer} from '../../testUtils.js'
Expand All @@ -20,39 +22,30 @@ const mockGetDashboardAppURL = vi.hoisted(() =>
vi.fn().mockResolvedValue('https://www.sanity.io/@test-org?dev=http%3A%2F%2Flocalhost%3A5340'),
)

vi.mock('../../../src/actions/dev/servers/getDashboardAppUrl.js', () => ({
vi.mock(import('../../../src/actions/dev/servers/getDashboardAppUrl.js'), () => ({
getDashboardAppURL: mockGetDashboardAppURL,
}))

vi.mock('../../../src/util/compareDependencyVersions.js', () => ({
compareDependencyVersions: vi.fn().mockResolvedValue({mismatched: [], unresolvedPrerelease: []}),
}))

vi.mock('../../../src/server/vite/plugin-typegen.js', () => ({
vi.mock(import('../../../src/server/vite/plugin-typegen.js'), () => ({
sanityTypegenPlugin: mockTypegenPlugin.mockReturnValue({
name: 'sanity/typegen',
}),
}))

vi.mock('@sanity/cli-build/_internal/build', async () => {
const actual = await vi.importActual<typeof import('@sanity/cli-build/_internal/build')>(
'@sanity/cli-build/_internal/build',
)
vi.mock(import('@sanity/cli-build/_internal/build'), async () => {
const actual = await vi.importActual('@sanity/cli-build/_internal/build')
return {
...actual,
checkRequiredDependencies: vi.fn().mockResolvedValue({
installedSanityVersion: '3.0.0',
}),
compareDependencyVersions: vi
.fn()
.mockResolvedValue({mismatched: [], unresolvedPrerelease: []}),
}
})

vi.mock('@sanity/cli-core/ux', async () => {
const actual = await vi.importActual<typeof import('@sanity/cli-core/ux')>('@sanity/cli-core/ux')
return {
...actual,
confirm: vi.fn(),
}
})
vi.mock('@sanity/cli-core/ux', async () => import('@sanity/cli-test/mocks/cli-core/ux'))

vi.mock('../../../src/util/packageManager/upgradePackages.js')
vi.mock('../../../src/util/packageManager/packageManagerChoice.js')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ import {mkdtemp, rm, writeFile} from 'node:fs/promises'
import {tmpdir} from 'node:os'
import path from 'node:path'

import {compareDependencyVersions} from '@sanity/cli-build/_internal/build'
import {gt, valid} from 'semver'
import {afterAll, beforeAll, describe, expect, it} from 'vitest'

import {compareDependencyVersions} from '../../../src/util/compareDependencyVersions.js'

describe('compareDependencyVersions (integration)', {timeout: 30_000}, () => {
let workDir: string

Expand Down
Loading