@sanity/cli 6.3.2 → 6.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -10
- package/dist/actions/init/bootstrapLocalTemplate.js +16 -1
- package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
- package/dist/actions/init/initApp.js +72 -0
- package/dist/actions/init/initApp.js.map +1 -0
- package/dist/actions/init/initHelpers.js +37 -0
- package/dist/actions/init/initHelpers.js.map +1 -0
- package/dist/actions/init/initNextJs.js +246 -0
- package/dist/actions/init/initNextJs.js.map +1 -0
- package/dist/actions/init/initStudio.js +127 -0
- package/dist/actions/init/initStudio.js.map +1 -0
- package/dist/actions/init/scaffoldTemplate.js +114 -0
- package/dist/actions/init/scaffoldTemplate.js.map +1 -0
- package/dist/actions/init/templates/appQuickstart.js +2 -1
- package/dist/actions/init/templates/appQuickstart.js.map +1 -1
- package/dist/actions/init/templates/appSanityUi.js +2 -1
- package/dist/actions/init/templates/appSanityUi.js.map +1 -1
- package/dist/actions/init/templates/shopify.js +6 -6
- package/dist/actions/init/templates/shopify.js.map +1 -1
- package/dist/actions/init/templates/shopifyOnline.js +2 -2
- package/dist/actions/init/templates/shopifyOnline.js.map +1 -1
- package/dist/actions/mcp/detectAvailableEditors.js +16 -3
- package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
- package/dist/actions/mcp/editorConfigs.js +192 -132
- package/dist/actions/mcp/editorConfigs.js.map +1 -1
- package/dist/actions/mcp/setupMCP.js +4 -1
- package/dist/actions/mcp/setupMCP.js.map +1 -1
- package/dist/actions/mcp/writeMCPConfig.js +2 -2
- package/dist/actions/mcp/writeMCPConfig.js.map +1 -1
- package/dist/actions/schema/extractSchema.js +5 -7
- package/dist/actions/schema/extractSchema.js.map +1 -1
- package/dist/commands/datasets/copy.js +14 -0
- package/dist/commands/datasets/copy.js.map +1 -1
- package/dist/commands/init.js +149 -482
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp/configure.js +1 -1
- package/dist/commands/mcp/configure.js.map +1 -1
- package/dist/hooks/prerun/injectEnvVariables.js +3 -5
- package/dist/hooks/prerun/injectEnvVariables.js.map +1 -1
- package/dist/services/datasets.js +2 -1
- package/dist/services/datasets.js.map +1 -1
- package/dist/telemetry/init.telemetry.js.map +1 -1
- package/dist/util/packageManager/installationInfo/detectPackages.js +13 -7
- package/dist/util/packageManager/installationInfo/detectPackages.js.map +1 -1
- package/dist/util/update/fetchUpdateInfo.js +40 -0
- package/dist/util/update/fetchUpdateInfo.js.map +1 -0
- package/dist/util/update/fetchUpdateInfo.worker.js +19 -0
- package/dist/util/update/fetchUpdateInfo.worker.js.map +1 -0
- package/dist/util/update/getRunnerUpdateCommand.js +33 -0
- package/dist/util/update/getRunnerUpdateCommand.js.map +1 -0
- package/dist/util/update/getUpdateCommand.js +6 -7
- package/dist/util/update/getUpdateCommand.js.map +1 -1
- package/dist/util/update/packageRunner.js +10 -0
- package/dist/util/update/packageRunner.js.map +1 -0
- package/dist/util/update/resolveRunnerPackage.js +45 -0
- package/dist/util/update/resolveRunnerPackage.js.map +1 -0
- package/dist/util/update/resolveUpdateTarget.js +31 -0
- package/dist/util/update/resolveUpdateTarget.js.map +1 -0
- package/dist/util/update/showNotificationUpdate.js +8 -6
- package/dist/util/update/showNotificationUpdate.js.map +1 -1
- package/dist/util/update/updateChecker.js +73 -38
- package/dist/util/update/updateChecker.js.map +1 -1
- package/oclif.manifest.json +540 -525
- package/package.json +6 -6
- package/templates/app-quickstart/src/App.tsx +2 -2
- package/templates/app-sanity-ui/src/App.tsx +2 -2
- package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +1 -1
- package/dist/util/update/fetchLatestVersion.js +0 -21
- package/dist/util/update/fetchLatestVersion.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/util/update/updateChecker.ts"],"sourcesContent":["import {getUserConfig, isCi, subdebug} from '@sanity/cli-core'\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/updateChecker.ts"],"sourcesContent":["import {spawn} from 'node:child_process'\nimport {fileURLToPath} from 'node:url'\n\nimport {getUserConfig, isCi, subdebug} from '@sanity/cli-core'\nimport {gt as semverGt} from 'semver'\n\nimport {type SanityPackage} from '../packageManager/installationInfo/types.js'\nimport {detectPackageRunner} from './packageRunner.js'\nimport {resolveRunnerPackage} from './resolveRunnerPackage.js'\nimport {resolveUpdateTarget} from './resolveUpdateTarget.js'\nimport {showUpdateNotification} from './showNotificationUpdate.js'\n\nconst debug = subdebug('updateChecker')\n\nconst TWELVE_HOURS = 12 * 60 * 60 * 1000\n\n/**\n * Check for CLI updates and notify the user if a new version is available.\n *\n * The main process resolves the local update target (which package and installed version),\n * then reads the latest version from the config cache. It never makes network requests.\n * If the cache is empty or expired, a detached worker process is spawned to fetch the\n * latest version from npm and write it to the cache. The notification is shown on the\n * next CLI invocation when the cached result is available instantly.\n */\nexport async function updateChecker(config: {version: string}): Promise<void> {\n debug(`Installed CLI version is ${config.version}`)\n\n // Skip in CI or if disabled\n if (isCi() || process.env.NO_UPDATE_NOTIFIER) {\n debug('Running on CI, or explicitly disabled, skipping update check')\n return\n }\n\n if (!process.stdout.isTTY) {\n return\n }\n\n const runner = detectPackageRunner()\n const {installedVersion, packageName} = runner\n ? await resolveRunnerPackage(process.argv[1] ?? '', config.version)\n : await resolveUpdateTarget(process.cwd(), config.version)\n debug('Update target: %s@%s%s', packageName, installedVersion, runner ? ` via ${runner}` : '')\n\n const store = getUserConfig()\n const cacheKey = `latestVersion:${packageName}`\n const cached = readCachedLatestVersion(store, cacheKey)\n\n if (cached) {\n const {expired, latestVersion, updatedAt} = cached\n\n debug(\n 'Cache %s for %s: installed=%s, latest=%s',\n expired ? 'expired' : 'hit',\n packageName,\n installedVersion,\n latestVersion,\n )\n\n if (semverGt(latestVersion, installedVersion)) {\n const notifiedKey = `notifiedAt:${packageName}`\n if (store.get(notifiedKey) === updatedAt) {\n debug('Update is available (%s), already notified for this cache cycle', latestVersion)\n } else {\n debug('Update is available (%s)', latestVersion)\n await showUpdateNotification(installedVersion, latestVersion, packageName, runner)\n store.set(notifiedKey, updatedAt)\n }\n } else {\n debug('No update found')\n }\n\n if (expired) {\n debug('Cache expired, spawning worker to refresh')\n spawnFetchWorker(config.version, packageName)\n }\n } else {\n debug('No cached update info, spawning worker to fetch')\n spawnFetchWorker(config.version, packageName)\n }\n}\n\n/**\n * Read and validate the cached latest version for a specific package.\n * The cache only stores the latest npm version (globally valid) - the installed\n * version is always resolved locally to avoid cross-project confusion.\n */\nfunction readCachedLatestVersion(\n store: ReturnType<typeof getUserConfig>,\n cacheKey: string,\n): {expired: boolean; latestVersion: string; updatedAt: number} | null {\n const stored: unknown = store.get(cacheKey)\n\n if (\n !stored ||\n typeof stored !== 'object' ||\n !('updatedAt' in stored) ||\n typeof stored.updatedAt !== 'number' ||\n !('value' in stored) ||\n typeof stored.value !== 'string'\n ) {\n return null\n }\n\n const expired = Date.now() - stored.updatedAt > TWELVE_HOURS\n return {expired, latestVersion: stored.value, updatedAt: stored.updatedAt}\n}\n\n/**\n * Spawn a detached worker process to fetch the latest version and update the cache.\n * The worker is unref'd so the parent CLI can exit immediately.\n */\nfunction spawnFetchWorker(cliVersion: string, packageName: SanityPackage): void {\n const workerPath = fileURLToPath(new URL('fetchUpdateInfo.worker.js', import.meta.url))\n debug(`Spawning update check worker: ${process.execPath} ${workerPath}`)\n\n spawn(process.execPath, [workerPath], {\n detached: true,\n env: {\n ...process.env,\n SANITY_UPDATE_CHECK_CLI_VERSION: cliVersion,\n SANITY_UPDATE_CHECK_CWD: process.cwd(),\n SANITY_UPDATE_CHECK_PACKAGE: packageName,\n },\n stdio: debug.enabled ? 'inherit' : 'ignore',\n }).unref()\n}\n"],"names":["spawn","fileURLToPath","getUserConfig","isCi","subdebug","gt","semverGt","detectPackageRunner","resolveRunnerPackage","resolveUpdateTarget","showUpdateNotification","debug","TWELVE_HOURS","updateChecker","config","version","process","env","NO_UPDATE_NOTIFIER","stdout","isTTY","runner","installedVersion","packageName","argv","cwd","store","cacheKey","cached","readCachedLatestVersion","expired","latestVersion","updatedAt","notifiedKey","get","set","spawnFetchWorker","stored","value","Date","now","cliVersion","workerPath","URL","url","execPath","detached","SANITY_UPDATE_CHECK_CLI_VERSION","SANITY_UPDATE_CHECK_CWD","SANITY_UPDATE_CHECK_PACKAGE","stdio","enabled","unref"],"mappings":"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"}
|