sanity 3.26.2-canary.52 → 3.26.2-canary.69
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/lib/_chunks/{_internal-2CJ5wSKF.js → _internal-6Pl2wJGj.js} +422 -201
- package/lib/_chunks/_internal-6Pl2wJGj.js.map +1 -0
- package/lib/_chunks/{_internal-79flWvL8.js → _internal-yQwMw2ht.js} +419 -203
- package/lib/_chunks/_internal-yQwMw2ht.js.map +1 -0
- package/lib/_chunks/{_internalBrowser-QAFz3SKp.js → _internalBrowser-HWvRXvlU.js} +22 -22
- package/lib/_chunks/_internalBrowser-HWvRXvlU.js.map +1 -0
- package/lib/_chunks/{_internalBrowser-Y0qKZ-GA.js → _internalBrowser-TWIhitgI.js} +22 -22
- package/lib/_chunks/_internalBrowser-TWIhitgI.js.map +1 -0
- package/lib/_chunks/{deployApiAction-SHteit1G.js → deployApiAction-TZcCtXan.js} +2 -2
- package/lib/_chunks/{deployApiAction-SHteit1G.js.map → deployApiAction-TZcCtXan.js.map} +1 -1
- package/lib/_chunks/{deployApiAction-bRyJpGOS.js → deployApiAction-rVL67VYW.js} +2 -2
- package/lib/_chunks/{deployApiAction-bRyJpGOS.js.map → deployApiAction-rVL67VYW.js.map} +1 -1
- package/lib/_chunks/{getStudioConfig-JSkc4GE0.js → getStudioWorkspaces-HX9o9-hl.js} +20 -4
- package/lib/_chunks/getStudioWorkspaces-HX9o9-hl.js.map +1 -0
- package/lib/_chunks/{index-EO9iRnDS.js → index-2kSxso3r.js} +2 -2
- package/lib/_chunks/{index-EO9iRnDS.js.map → index-2kSxso3r.js.map} +1 -1
- package/lib/_chunks/{index-FQCCBbuC.js → index-751ZLh3z.js} +6 -6
- package/lib/_chunks/{index-FQCCBbuC.js.map → index-751ZLh3z.js.map} +1 -1
- package/lib/_chunks/{index-VNSHvpZr.js → index-HcF369ru.js} +2 -2
- package/lib/_chunks/{index-VNSHvpZr.js.map → index-HcF369ru.js.map} +1 -1
- package/lib/_chunks/{index-Xs2xnLUV.js → index-MAAxgUnl.js} +6 -6
- package/lib/_chunks/{index-Xs2xnLUV.js.map → index-MAAxgUnl.js.map} +1 -1
- package/lib/_chunks/{index-AaK2CidU.js → index-NweJPfGb.js} +2 -2
- package/lib/_chunks/{index-AaK2CidU.js.map → index-NweJPfGb.js.map} +1 -1
- package/lib/_chunks/{index-R7R6AyHF.js → index-zobOqko7.js} +2 -2
- package/lib/_chunks/{index-R7R6AyHF.js.map → index-zobOqko7.js.map} +1 -1
- package/lib/_chunks/{listApisAction-6lGkFZrU.js → listApisAction-IvKV4iAd.js} +2 -2
- package/lib/_chunks/{listApisAction-6lGkFZrU.js.map → listApisAction-IvKV4iAd.js.map} +1 -1
- package/lib/_chunks/{listApisAction-CqCkBz-F.js → listApisAction-oca2uykY.js} +2 -2
- package/lib/_chunks/{listApisAction-CqCkBz-F.js.map → listApisAction-oca2uykY.js.map} +1 -1
- package/lib/_chunks/pane-9HEeITpx.js +5 -0
- package/lib/_chunks/pane-9HEeITpx.js.map +1 -0
- package/lib/_chunks/pane-QyVrOLqS.js +2 -0
- package/lib/_chunks/pane-QyVrOLqS.js.map +1 -0
- package/lib/_chunks/pane-TXXUUvdc.js +5 -0
- package/lib/_chunks/pane-TXXUUvdc.js.map +1 -0
- package/lib/_chunks/pane-cQxQtBcL.js +2 -0
- package/lib/_chunks/pane-cQxQtBcL.js.map +1 -0
- package/lib/_chunks/{structure-qJLnDJXq.js → structure-iqIDIH7-.js} +3 -3
- package/lib/_chunks/structure-iqIDIH7-.js.map +1 -0
- package/lib/_chunks/{structure-588eAwLd.js → structure-o_wMXC_G.js} +3 -3
- package/lib/_chunks/structure-o_wMXC_G.js.map +1 -0
- package/lib/_chunks/validateAction-4Jl_y_iB.js +154 -0
- package/lib/_chunks/validateAction-4Jl_y_iB.js.map +1 -0
- package/lib/_chunks/{validateAction-GUvMkXiN.js → validateAction-6q8Sqwaz.js} +25 -73
- package/lib/_chunks/validateAction-6q8Sqwaz.js.map +1 -0
- package/lib/_chunks/validateAction-Bz67ApRP.js +143 -0
- package/lib/_chunks/validateAction-Bz67ApRP.js.map +1 -0
- package/lib/_chunks/{validateAction-NIrqtyYJ.js → validateAction-shi462sq.js} +27 -75
- package/lib/_chunks/validateAction-shi462sq.js.map +1 -0
- package/lib/_internal/cli/threads/getGraphQLAPIs.js +2 -2
- package/lib/_internal/cli/threads/getGraphQLAPIs.js.map +1 -1
- package/lib/_internal/cli/threads/validateDocuments.js +5 -3
- package/lib/_internal/cli/threads/validateDocuments.js.map +1 -1
- package/lib/_internal/cli/threads/validateSchema.js +55 -0
- package/lib/_internal/cli/threads/validateSchema.js.map +1 -0
- package/lib/_internal.esm.js +1 -1
- package/lib/_internal.js +1 -1
- package/lib/_internalBrowser.esm.js +1 -1
- package/lib/_internalBrowser.js +1 -1
- package/lib/desk.esm.js +1 -1
- package/lib/desk.js +1 -1
- package/lib/exports/index.d.ts +25 -0
- package/lib/index.cjs.mjs +1 -0
- package/lib/index.esm.js +2 -2
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/structure.esm.js +1 -1
- package/lib/structure.js +1 -1
- package/package.json +15 -15
- package/src/_internal/cli/actions/schema/formatSchemaValidation.ts +96 -0
- package/src/_internal/cli/actions/schema/validateAction.ts +120 -0
- package/src/_internal/cli/actions/validation/reporters/prettyReporter/formatDocumentValidation.ts +17 -95
- package/src/_internal/cli/commands/index.ts +2 -0
- package/src/_internal/cli/commands/migration/createMigrationCommand.ts +18 -10
- package/src/_internal/cli/commands/migration/listMigrationsCommand.ts +34 -31
- package/src/_internal/cli/commands/migration/prettyMutationFormatter.ts +214 -0
- package/src/_internal/cli/commands/migration/runMigrationCommand.ts +102 -58
- package/src/_internal/cli/commands/migration/templates/minimalAdvanced.ts +1 -1
- package/src/_internal/cli/commands/migration/templates/minimalSimple.ts +1 -1
- package/src/_internal/cli/commands/migration/templates/renameField.ts +3 -3
- package/src/_internal/cli/commands/migration/templates/renameType.ts +1 -1
- package/src/_internal/cli/commands/migration/templates/stringToPTE.ts +1 -1
- package/src/_internal/cli/commands/migration/utils/mutationFormatter.ts +1 -1
- package/src/_internal/cli/commands/schema/validateSchemaCommand.ts +35 -0
- package/src/_internal/cli/threads/getGraphQLAPIs.ts +2 -2
- package/src/_internal/cli/threads/validateDocuments.ts +6 -3
- package/src/_internal/cli/threads/validateSchema.ts +73 -0
- package/src/_internal/cli/util/{getStudioConfig.ts → getStudioWorkspaces.ts} +30 -8
- package/src/_internal/cli/util/tree.ts +110 -0
- package/src/core/config/index.ts +1 -0
- package/src/core/config/prepareConfig.ts +2 -5
- package/src/core/config/resolveSchemaTypes.ts +29 -0
- package/src/core/studio/screens/schemaErrors/SchemaProblemGroups.tsx +4 -2
- package/src/structure/comments/src/components/pte/blocks/MentionInlineBlock.tsx +13 -6
- package/lib/_chunks/_internal-2CJ5wSKF.js.map +0 -1
- package/lib/_chunks/_internal-79flWvL8.js.map +0 -1
- package/lib/_chunks/_internalBrowser-QAFz3SKp.js.map +0 -1
- package/lib/_chunks/_internalBrowser-Y0qKZ-GA.js.map +0 -1
- package/lib/_chunks/getStudioConfig-JSkc4GE0.js.map +0 -1
- package/lib/_chunks/pane-QmJb9ZTN.js +0 -2
- package/lib/_chunks/pane-QmJb9ZTN.js.map +0 -1
- package/lib/_chunks/pane-SK7FWNTJ.js +0 -2
- package/lib/_chunks/pane-SK7FWNTJ.js.map +0 -1
- package/lib/_chunks/pane-y4hpcKe1.js +0 -5
- package/lib/_chunks/pane-y4hpcKe1.js.map +0 -1
- package/lib/_chunks/pane-yQXBQyyI.js +0 -5
- package/lib/_chunks/pane-yQXBQyyI.js.map +0 -1
- package/lib/_chunks/structure-588eAwLd.js.map +0 -1
- package/lib/_chunks/structure-qJLnDJXq.js.map +0 -1
- package/lib/_chunks/validateAction-GUvMkXiN.js.map +0 -1
- package/lib/_chunks/validateAction-NIrqtyYJ.js.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"_internal-2CJ5wSKF.js","sources":["../../src/_internal/cli/commands/build/buildCommand.ts","../../src/_internal/cli/commands/check/checkCommand.ts","../../src/_internal/cli/commands/config/configCheckCommand.ts","../../src/_internal/cli/commands/dataset/datasetGroup.ts","../../src/_internal/cli/commands/deploy/deployCommand.ts","../../src/_internal/cli/commands/deploy/undeployCommand.ts","../../src/_internal/cli/actions/dataset/alias/validateDatasetAliasName.ts","../../src/_internal/cli/commands/dataset/alias/datasetAliasesClient.ts","../../src/_internal/cli/commands/dataset/alias/listAliasesHandler.ts","../../src/_internal/cli/commands/dataset/listDatasetsCommand.ts","../../src/_internal/cli/debug.ts","../../src/_internal/cli/actions/dataset/validateDatasetName.ts","../../src/_internal/cli/actions/dataset/datasetNamePrompt.ts","../../src/_internal/cli/commands/dataset/createDatasetCommand.ts","../../src/_internal/cli/commands/dataset/datasetVisibilityCommand.ts","../../src/_internal/cli/commands/dataset/deleteDatasetCommand.ts","../../src/_internal/cli/actions/dataset/chooseDatasetPrompt.ts","../../src/_internal/cli/commands/dataset/exportDatasetCommand.ts","../../src/_internal/cli/commands/dataset/importDatasetCommand.ts","../../src/_internal/cli/actions/dataset/listDatasetCopyJobs.ts","../../src/_internal/cli/util/getClientUrl.ts","../../src/_internal/cli/commands/dataset/copyDatasetCommand.ts","../../src/_internal/cli/actions/dataset/alias/promptForDatasetAliasName.ts","../../src/_internal/cli/commands/dataset/alias/createAliasHandler.ts","../../src/_internal/cli/commands/dataset/alias/deleteAliasHandler.ts","../../src/_internal/cli/commands/dataset/alias/unlinkAliasHandler.ts","../../src/_internal/cli/commands/dataset/alias/linkAliasHandler.ts","../../src/_internal/cli/commands/dataset/alias/aliasCommands.ts","../../src/_internal/cli/commands/documents/documentsGroup.ts","../../src/_internal/cli/util/colorizeJson.ts","../../src/_internal/cli/commands/documents/getDocumentsCommand.ts","../../src/_internal/cli/commands/documents/queryDocumentsCommand.ts","../../src/_internal/cli/commands/documents/deleteDocumentsCommand.ts","../../src/_internal/cli/commands/documents/createDocumentsCommand.ts","../../src/_internal/cli/commands/documents/validateDocumentsCommand.ts","../../src/_internal/cli/commands/dev/devCommand.ts","../../src/_internal/cli/util/isInteractive.ts","../../src/_internal/cli/commands/start/startCommand.ts","../../src/_internal/cli/commands/preview/previewCommand.ts","../../src/_internal/cli/commands/uninstall/uninstallCommand.ts","../../src/_internal/cli/commands/hook/hookGroup.ts","../../src/_internal/cli/commands/hook/createHookCommand.ts","../../src/_internal/cli/commands/hook/deleteHookCommand.ts","../../src/_internal/cli/commands/hook/listHooksCommand.ts","../../src/_internal/cli/commands/hook/printHookAttemptCommand.ts","../../src/_internal/cli/commands/hook/listHookLogsCommand.ts","../../src/_internal/cli/commands/exec/execCommand.ts","../../src/_internal/cli/commands/cors/corsGroup.ts","../../src/_internal/cli/actions/cors/addCorsOrigin.ts","../../src/_internal/cli/commands/cors/addCorsOriginCommand.ts","../../src/_internal/cli/commands/cors/listCorsOriginsCommand.ts","../../src/_internal/cli/commands/cors/deleteCorsOriginCommand.ts","../../src/_internal/cli/commands/graphql/graphqlGroup.ts","../../src/_internal/cli/commands/graphql/listGraphQLAPIsCommand.ts","../../src/_internal/cli/commands/graphql/deployGraphQLAPICommand.ts","../../src/_internal/cli/commands/graphql/deleteGraphQLAPICommand.ts","../../src/_internal/cli/commands/users/usersGroup.ts","../../src/_internal/cli/util/prettifyQuotaError.ts","../../src/_internal/cli/commands/users/inviteUserCommand.ts","../../src/_internal/cli/commands/users/listUsersCommand.ts","../../src/_internal/cli/commands/migration/migrationGroup.ts","../../src/_internal/cli/commands/migration/constants.ts","../../src/_internal/cli/commands/migration/templates/renameType.ts","../../src/_internal/cli/commands/migration/templates/stringToPTE.ts","../../src/_internal/cli/commands/migration/templates/minimalSimple.ts","../../src/_internal/cli/commands/migration/templates/minimalAdvanced.ts","../../src/_internal/cli/commands/migration/templates/renameField.ts","../../src/_internal/cli/commands/migration/createMigrationCommand.ts","../../src/_internal/cli/commands/migration/utils/mutationFormatter.ts","../../src/_internal/cli/commands/migration/runMigrationCommand.ts","../../src/_internal/cli/commands/migration/utils.ts","../../src/_internal/cli/commands/migration/listMigrationsCommand.ts","../../src/_internal/cli/commands/index.ts"],"sourcesContent":["import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport {BuildSanityStudioCommandFlags} from '../../actions/build/buildAction'\n\nconst helpText = `\nOptions\n --source-maps Enable source maps for built bundles (increases size of bundle)\n --no-minify Skip minifying built JavaScript (speeds up build, increases size of bundle)\n -y, --yes Use unattended mode, accepting defaults and using only flags for choices\n\nExamples\n sanity build\n sanity build --no-minify --source-maps\n`\n\nconst buildCommand: CliCommandDefinition = {\n name: 'build',\n signature: '[OUTPUT_DIR]',\n description: 'Builds the current Sanity configuration to a static bundle',\n action: async (\n args: CliCommandArguments<BuildSanityStudioCommandFlags>,\n context: CliCommandContext,\n overrides?: {basePath?: string},\n ) => {\n const buildAction = await getBuildAction()\n\n return buildAction(args, context, overrides)\n },\n helpText,\n}\n\nasync function getBuildAction() {\n // NOTE: in dev-mode we want to include from `src` so we need to use `.ts` extension\n // NOTE: this `if` statement is not included in the output bundle\n if (__DEV__) {\n // eslint-disable-next-line import/extensions\n const mod: typeof import('../../actions/build/buildAction') = require('../../actions/build/buildAction.ts')\n\n return mod.default\n }\n\n const mod = await import('../../actions/build/buildAction')\n\n return mod.default\n}\n\nexport default buildCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\n\nconst checkCommand: CliCommandDefinition = {\n name: 'check',\n signature: '',\n description: '[deprecated]',\n helpText: '',\n hideFromHelp: true,\n action: (_args, context) => {\n const {output} = context\n output.print('`sanity check` is deprecated and no longer has any effect')\n return Promise.resolve()\n },\n}\n\nexport default checkCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\n\nconst configCheckCommand: CliCommandDefinition = {\n name: 'configcheck',\n signature: '',\n description: 'Checks if the required configuration files for plugins exists and are up to date',\n helpText: '',\n hideFromHelp: true,\n action: async (args, context) => {\n context.output.error('`sanity configcheck` is no longer required/used')\n return Promise.resolve()\n },\n}\n\nexport default configCheckCommand\n","export default {\n name: 'dataset',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Interact with datasets in your project',\n}\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {DeployStudioActionFlags} from '../../actions/deploy/deployAction'\n\nconst helpText = `\nOptions\n --source-maps Enable source maps for built bundles (increases size of bundle)\n --no-minify Skip minifying built JavaScript (speeds up build, increases size of bundle)\n --no-build Don't build the studio prior to deploy, instead deploying the version currently in \\`dist/\\`\n\nExamples\n sanity deploy\n sanity deploy --no-minify --source-maps\n`\n\nconst deployCommand: CliCommandDefinition = {\n name: 'deploy',\n signature: '[SOURCE_DIR] [--no-build] [--source-maps] [--no-minify]',\n description: 'Deploys a statically built Sanity studio',\n action: async (\n args: CliCommandArguments<DeployStudioActionFlags>,\n context: CliCommandContext,\n ) => {\n const mod = await import('../../actions/deploy/deployAction')\n\n return mod.default(args, context)\n },\n helpText,\n}\n\nexport default deployCommand\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\n\nconst helpText = `\nExamples\n sanity undeploy\n`\n\nconst undeployCommand: CliCommandDefinition = {\n name: 'undeploy',\n signature: '',\n description: 'Removes the deployed studio from <hostname>.sanity.studio',\n action: async (\n args: CliCommandArguments<Record<string, unknown>>,\n context: CliCommandContext,\n ) => {\n const mod = await import('../../actions/deploy/undeployAction')\n\n return mod.default(args, context)\n },\n helpText,\n}\n\nexport default undeployCommand\n","const MAX_DATASET_NAME_LENGTH = 64\n\nexport function validateDatasetAliasName(datasetName: string): false | string {\n if (!datasetName) {\n return 'Alias name is missing'\n }\n\n const name = `${datasetName}`\n\n if (name.toLowerCase() !== name) {\n return 'Alias name must be all lowercase characters'\n }\n\n if (name.length < 2) {\n return 'Alias name must be at least two characters long'\n }\n\n if (name.length > MAX_DATASET_NAME_LENGTH) {\n return `Alias name must be at most ${MAX_DATASET_NAME_LENGTH} characters`\n }\n\n if (!/^[a-z0-9~]/.test(name)) {\n return 'Alias name must start with a letter or a number'\n }\n\n if (!/^[a-z0-9~][-_a-z0-9]+$/.test(name)) {\n return 'Alias name must only contain letters, numbers, dashes and underscores'\n }\n\n if (/[-_]$/.test(name)) {\n return 'Alias name must not end with a dash or an underscore'\n }\n\n return false\n}\n","import type {SanityClient} from '@sanity/client'\nimport {validateDatasetAliasName} from '../../../actions/dataset/alias/validateDatasetAliasName'\nimport type {DatasetAliasDefinition, DatasetModificationResponse} from './types'\n\nexport const ALIAS_PREFIX = '~'\n\nexport function listAliases(client: SanityClient): Promise<DatasetAliasDefinition[]> {\n return client.request<DatasetAliasDefinition[]>({uri: '/aliases'})\n}\n\nexport function createAlias(\n client: SanityClient,\n aliasName: string,\n datasetName: string | null,\n): Promise<DatasetModificationResponse> {\n return modify(client, 'PUT', aliasName, datasetName ? {datasetName} : undefined)\n}\n\nexport function updateAlias(\n client: SanityClient,\n aliasName: string,\n datasetName: string | null,\n): Promise<DatasetModificationResponse> {\n return modify(client, 'PATCH', aliasName, datasetName ? {datasetName} : undefined)\n}\n\nexport function unlinkAlias(\n client: SanityClient,\n aliasName: string,\n): Promise<DatasetModificationResponse> {\n validateDatasetAliasName(aliasName)\n return modify(client, 'PATCH', `${aliasName}/unlink`, {})\n}\n\nexport function removeAlias(client: SanityClient, aliasName: string): Promise<{deleted: boolean}> {\n return modify(client, 'DELETE', aliasName)\n}\n\nfunction modify(\n client: SanityClient,\n method: string,\n aliasName: string,\n body?: {datasetName?: string},\n) {\n return client.request({method, uri: `/aliases/${aliasName}`, body})\n}\n","import type {CliCommandAction} from '@sanity/cli'\nimport * as aliasClient from './datasetAliasesClient'\nimport {ALIAS_PREFIX} from './datasetAliasesClient'\n\nexport const listAliasesHandler: CliCommandAction = async (args, context) => {\n const {apiClient, output} = context\n const client = apiClient()\n\n const aliases = await aliasClient.listAliases(client)\n output.print(\n aliases\n .map((set) => `${ALIAS_PREFIX}${set.name} -> ${set.datasetName || '<unlinked>'}`)\n .join('\\n'),\n )\n}\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport {listAliasesHandler} from './alias/listAliasesHandler'\n\nconst listDatasetsCommand: CliCommandDefinition = {\n name: 'list',\n group: 'dataset',\n helpText: '',\n signature: '',\n description: 'List datasets of your project',\n action: async (args, context) => {\n const {apiClient, output} = context\n const client = apiClient()\n const datasets = await client.datasets.list()\n output.print(datasets.map((set) => set.name).join('\\n'))\n\n // Print alias list\n await listAliasesHandler(args, context)\n },\n}\n\nexport default listDatasetsCommand\n","import debugIt from 'debug'\n\nexport const debug = debugIt('sanity:core')\n","const MAX_DATASET_NAME_LENGTH = 64\n\nexport function validateDatasetName(datasetName: string): false | string {\n if (!datasetName) {\n return 'Dataset name is missing'\n }\n\n const name = `${datasetName}`\n\n if (name.toLowerCase() !== name) {\n return 'Dataset name must be all lowercase characters'\n }\n\n if (name.length < 2) {\n return 'Dataset name must be at least two characters long'\n }\n\n if (name.length > MAX_DATASET_NAME_LENGTH) {\n return `Dataset name must be at most ${MAX_DATASET_NAME_LENGTH} characters`\n }\n\n if (!/^[a-z0-9]/.test(name)) {\n return 'Dataset name must start with a letter or a number'\n }\n\n if (!/^[a-z0-9][-_a-z0-9]+$/.test(name)) {\n return 'Dataset name must only contain letters, numbers, dashes and underscores'\n }\n\n if (/[-_]$/.test(name)) {\n return 'Dataset name must not end with a dash or an underscore'\n }\n\n return false\n}\n","import type {CliPrompter} from '@sanity/cli'\nimport {validateDatasetName} from './validateDatasetName'\n\nexport function promptForDatasetName(\n prompt: CliPrompter,\n options: {message?: string; default?: string} = {},\n): Promise<string> {\n return prompt.single({\n type: 'input',\n message: 'Dataset name:',\n validate: (name) => {\n const err = validateDatasetName(name)\n if (err) {\n return err\n }\n\n return true\n },\n ...options,\n })\n}\n","import type {CliCommandDefinition, CliOutputter, CliPrompter} from '@sanity/cli'\nimport {debug} from '../../debug'\nimport {promptForDatasetName} from '../../actions/dataset/datasetNamePrompt'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName'\n\nconst helpText = `\nOptions\n --visibility <mode> Set visibility for this dataset (public/private)\n\nExamples\n sanity dataset create\n sanity dataset create <name>\n sanity dataset create <name> --visibility private\n`\n\nconst allowedModes = ['private', 'public', 'custom']\n\ninterface CreateFlags {\n visibility?: 'private' | 'public' | 'custom'\n}\n\nconst createDatasetCommand: CliCommandDefinition<CreateFlags> = {\n name: 'create',\n group: 'dataset',\n signature: '[NAME]',\n helpText,\n description: 'Create a new dataset within your project',\n action: async (args, context) => {\n const {apiClient, output, prompt} = context\n const flags = args.extOptions\n const [dataset] = args.argsWithoutOptions\n const client = apiClient()\n\n const nameError = dataset && validateDatasetName(dataset)\n if (nameError) {\n throw new Error(nameError)\n }\n\n const [datasets, projectFeatures] = await Promise.all([\n client.datasets.list().then((sets) => sets.map((ds) => ds.name)),\n client.request({uri: '/features'}),\n ])\n\n if (flags.visibility && !allowedModes.includes(flags.visibility)) {\n throw new Error(`Visibility mode \"${flags.visibility}\" not allowed`)\n }\n\n const datasetName = await (dataset || promptForDatasetName(prompt))\n if (datasets.includes(datasetName)) {\n throw new Error(`Dataset \"${datasetName}\" already exists`)\n }\n\n const canCreatePrivate = projectFeatures.includes('privateDataset')\n debug('%s create private datasets', canCreatePrivate ? 'Can' : 'Cannot')\n\n const defaultAclMode = canCreatePrivate ? flags.visibility : 'public'\n const aclMode = await (defaultAclMode || promptForDatasetVisibility(prompt, output))\n\n try {\n await client.datasets.create(datasetName, {aclMode})\n output.print('Dataset created successfully')\n } catch (err) {\n throw new Error(`Dataset creation failed:\\n${err.message}`)\n }\n },\n}\n\nasync function promptForDatasetVisibility(prompt: CliPrompter, output: CliOutputter) {\n const mode = await prompt.single<'public' | 'private'>({\n type: 'list',\n message: 'Dataset visibility',\n choices: [\n {\n value: 'public',\n name: 'Public (world readable)',\n },\n {\n value: 'private',\n name: 'Private (Authenticated user or token needed)',\n },\n ],\n })\n\n if (mode === 'private') {\n output.print(\n 'Please note that while documents are private, assets (files and images) are still public\\n',\n )\n }\n\n return mode\n}\n\nexport default createDatasetCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName'\n\nconst datasetVisibilityCommand: CliCommandDefinition = {\n name: 'visibility',\n group: 'dataset',\n helpText: '',\n signature: 'get/set [dataset] [mode]',\n description: 'Set visibility of a dataset',\n action: async (args, context) => {\n const {apiClient, output} = context\n const [action, ds, aclMode] = args.argsWithoutOptions\n const client = apiClient()\n\n if (!client.datasets.edit) {\n throw new Error('@sanity/cli must be upgraded first:\\n npm install -g @sanity/cli')\n }\n\n if (!action) {\n throw new Error('Action must be provided (get/set)')\n }\n\n if (!['set', 'get'].includes(action)) {\n throw new Error('Invalid action (only get/set allowed)')\n }\n\n if (!ds) {\n throw new Error('Dataset name must be provided')\n }\n\n if (action === 'set' && !aclMode) {\n throw new Error('Please provide a visibility mode (public/private)')\n }\n\n const dataset = `${ds}`\n const dsError = validateDatasetName(dataset)\n if (dsError) {\n throw new Error(dsError)\n }\n\n const current = (await client.datasets.list()).find((curr) => curr.name === dataset)\n\n if (!current) {\n throw new Error('Dataset not found')\n }\n\n if (action === 'get') {\n output.print(current.aclMode)\n return\n }\n\n if (current.aclMode === aclMode) {\n output.print(`Dataset already in \"${aclMode}\"-mode`)\n return\n }\n\n if (aclMode === 'private') {\n output.print(\n 'Please note that while documents are private, assets (files and images) are still public\\n',\n )\n }\n\n await client.datasets.edit(dataset, {aclMode: aclMode as 'public' | 'private'})\n output.print('Dataset visibility changed')\n },\n}\n\nexport default datasetVisibilityCommand\n","import yargs from 'yargs/yargs'\nimport {hideBin} from 'yargs/helpers'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName'\n\nconst helpText = `\nOptions\n --force Do not prompt for delete confirmation - forcefully delete\n\nExamples\n sanity dataset delete\n sanity dataset delete my-dataset\n sanity dataset delete my-dataset --force\n`\n\nfunction parseCliFlags(args: {argv?: string[]}) {\n return yargs(hideBin(args.argv || process.argv).slice(2)).option('force', {type: 'boolean'}).argv\n}\n\ninterface DeleteDatasetFlags {\n force?: boolean\n}\n\nconst deleteDatasetCommand: CliCommandDefinition<DeleteDatasetFlags> = {\n name: 'delete',\n group: 'dataset',\n helpText,\n signature: '[datasetName]',\n description: 'Delete a dataset within your project',\n action: async (args, context) => {\n const {apiClient, prompt, output} = context\n const {force} = await parseCliFlags(args)\n const [ds] = args.argsWithoutOptions\n if (!ds) {\n throw new Error('Dataset name must be provided')\n }\n\n const dataset = `${ds}`\n const dsError = validateDatasetName(dataset)\n if (dsError) {\n throw dsError\n }\n\n if (force) {\n output.warn(`'--force' used: skipping confirmation, deleting dataset \"${dataset}\"`)\n } else {\n await prompt.single({\n type: 'input',\n message:\n 'Are you ABSOLUTELY sure you want to delete this dataset?\\n Type the name of the dataset to confirm delete:',\n filter: (input) => `${input}`.trim(),\n validate: (input) => {\n return input === dataset || 'Incorrect dataset name. Ctrl + C to cancel delete.'\n },\n })\n }\n\n await apiClient().datasets.delete(dataset)\n output.print('Dataset deleted successfully')\n },\n}\n\nexport default deleteDatasetCommand\n","import type {CliCommandContext} from '@sanity/cli'\nimport {debug} from '../../debug'\nimport {promptForDatasetName} from './datasetNamePrompt'\n\nexport async function chooseDatasetPrompt(\n context: CliCommandContext,\n options: {message?: string; allowCreation?: boolean} = {},\n): Promise<string> {\n const {apiClient, prompt} = context\n const {message, allowCreation} = options\n const client = apiClient()\n\n const datasets = await client.datasets.list()\n const hasProduction = datasets.find((dataset) => dataset.name === 'production')\n const datasetChoices = datasets.map((dataset) => ({value: dataset.name}))\n const selected = await prompt.single({\n message: message || 'Select dataset to use',\n type: 'list',\n choices: allowCreation\n ? [{value: 'new', name: 'Create new dataset'}, new prompt.Separator(), ...datasetChoices]\n : datasetChoices,\n })\n\n if (selected === 'new') {\n debug('User wants to create a new dataset, prompting for name')\n const newDatasetName = await promptForDatasetName(prompt, {\n message: 'Name your dataset:',\n default: hasProduction ? undefined : 'production',\n })\n await client.datasets.create(newDatasetName)\n return newDatasetName\n }\n\n return selected\n}\n","import path from 'path'\nimport fs from 'fs/promises'\nimport type {CliCommandDefinition, CliPrompter} from '@sanity/cli'\nimport prettyMs from 'pretty-ms'\nimport {absolutify} from '@sanity/util/fs'\nimport exportDataset from '@sanity/export'\nimport {chooseDatasetPrompt} from '../../actions/dataset/chooseDatasetPrompt'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName'\n\nconst noop = () => null\n\nconst helpText = `\nOptions\n --raw Extract only documents, without rewriting asset references\n --no-assets Export only non-asset documents and remove references to image assets\n --no-drafts Export only published versions of documents\n --no-compress Skips compressing tarball entries (still generates a gzip file)\n --types Defines which document types to export\n --overwrite Overwrite any file with the same name\n --asset-concurrency <num> Concurrent number of asset downloads\n\nExamples\n sanity dataset export moviedb localPath.tar.gz\n sanity dataset export moviedb assetless.tar.gz --no-assets\n sanity dataset export staging staging.tar.gz --raw\n sanity dataset export staging staging.tar.gz --types products,shops\n`\n\ninterface ExportFlags {\n raw?: boolean\n assets?: boolean\n drafts?: boolean\n compress?: boolean\n overwrite?: boolean\n types?: string\n 'asset-concurrency'?: string\n}\n\ninterface ParsedExportFlags {\n raw?: boolean\n assets?: boolean\n drafts?: boolean\n compress?: boolean\n overwrite?: boolean\n types?: string[]\n assetConcurrency?: number\n}\n\nfunction parseFlags(rawFlags: ExportFlags): ParsedExportFlags {\n const flags: ParsedExportFlags = {}\n if (rawFlags.types) {\n flags.types = `${rawFlags.types}`.split(',')\n }\n\n if (rawFlags['asset-concurrency']) {\n flags.assetConcurrency = parseInt(rawFlags['asset-concurrency'], 10)\n }\n\n if (typeof rawFlags.raw !== 'undefined') {\n flags.raw = Boolean(rawFlags.raw)\n }\n\n if (typeof rawFlags.assets !== 'undefined') {\n flags.assets = Boolean(rawFlags.assets)\n }\n\n if (typeof rawFlags.drafts !== 'undefined') {\n flags.drafts = Boolean(rawFlags.drafts)\n }\n\n if (typeof rawFlags.compress !== 'undefined') {\n flags.compress = Boolean(rawFlags.compress)\n }\n\n if (typeof rawFlags.overwrite !== 'undefined') {\n flags.overwrite = Boolean(rawFlags.overwrite)\n }\n\n return flags\n}\n\ninterface ProgressEvent {\n step: string\n update?: boolean\n current: number\n total: number\n}\n\nconst exportDatasetCommand: CliCommandDefinition<ExportFlags> = {\n name: 'export',\n group: 'dataset',\n signature: '[NAME] [DESTINATION]',\n description: 'Export dataset to local filesystem as a gzipped tarball',\n helpText,\n action: async (args, context) => {\n const {apiClient, output, chalk, workDir, prompt} = context\n const client = apiClient()\n const [targetDataset, targetDestination] = args.argsWithoutOptions\n const flags = parseFlags(args.extOptions)\n\n let dataset = targetDataset ? `${targetDataset}` : null\n if (!dataset) {\n dataset = await chooseDatasetPrompt(context, {message: 'Select dataset to export'})\n }\n\n const dsError = validateDatasetName(dataset)\n if (dsError) {\n throw dsError\n }\n\n // Verify existence of dataset before trying to export from it\n const datasets = await client.datasets.list()\n if (!datasets.find((set) => set.name === dataset)) {\n throw new Error(`Dataset with name \"${dataset}\" not found`)\n }\n\n // Print information about what projectId and dataset it is being exported from\n const {projectId} = client.config()\n\n output.print('╭───────────────────────────────────────────────╮')\n output.print('│ │')\n output.print('│ Exporting from: │')\n output.print(`│ ${chalk.bold('projectId')}: ${chalk.cyan(projectId).padEnd(44)} │`)\n output.print(`│ ${chalk.bold('dataset')}: ${chalk.cyan(dataset).padEnd(46)} │`)\n output.print('│ │')\n output.print('╰───────────────────────────────────────────────╯')\n output.print('')\n\n let destinationPath = targetDestination\n if (!destinationPath) {\n destinationPath = await prompt.single({\n type: 'input',\n message: 'Output path:',\n default: path.join(workDir, `${dataset}.tar.gz`),\n filter: absolutify,\n })\n }\n\n const outputPath = await getOutputPath(destinationPath, dataset, prompt, flags)\n if (!outputPath) {\n output.print('Cancelled')\n return\n }\n\n // If we are dumping to a file, let the user know where it's at\n if (outputPath !== '-') {\n output.print(`Exporting dataset \"${chalk.cyan(dataset)}\" to \"${chalk.cyan(outputPath)}\"`)\n }\n\n let currentStep = 'Exporting documents...'\n let spinner = output.spinner(currentStep).start()\n const onProgress = (progress: ProgressEvent) => {\n if (progress.step !== currentStep) {\n spinner.succeed()\n spinner = output.spinner(progress.step).start()\n } else if (progress.step === currentStep && progress.update) {\n spinner.text = `${progress.step} (${progress.current}/${progress.total})`\n }\n\n currentStep = progress.step\n }\n\n const start = Date.now()\n try {\n await exportDataset({\n client,\n dataset,\n outputPath,\n onProgress,\n ...flags,\n })\n spinner.succeed()\n } catch (err) {\n spinner.fail()\n throw err\n }\n\n output.print(`Export finished (${prettyMs(Date.now() - start)})`)\n },\n}\n\n// eslint-disable-next-line complexity\nasync function getOutputPath(\n destination: string,\n dataset: string,\n prompt: CliPrompter,\n flags: ParsedExportFlags,\n) {\n if (destination === '-') {\n return '-'\n }\n\n const dstPath = path.isAbsolute(destination)\n ? destination\n : path.resolve(process.cwd(), destination)\n\n let dstStats = await fs.stat(dstPath).catch(noop)\n const looksLikeFile = dstStats ? dstStats.isFile() : path.basename(dstPath).indexOf('.') !== -1\n\n if (!dstStats) {\n const createPath = looksLikeFile ? path.dirname(dstPath) : dstPath\n\n await fs.mkdir(createPath, {recursive: true})\n }\n\n const finalPath = looksLikeFile ? dstPath : path.join(dstPath, `${dataset}.tar.gz`)\n dstStats = await fs.stat(finalPath).catch(noop)\n\n if (!flags.overwrite && dstStats && dstStats.isFile()) {\n const shouldOverwrite = await prompt.single({\n type: 'confirm',\n message: `File \"${finalPath}\" already exists, would you like to overwrite it?`,\n default: false,\n })\n\n if (!shouldOverwrite) {\n return false\n }\n }\n\n return finalPath\n}\n\nexport default exportDatasetCommand\n","import path from 'path'\nimport fs from 'fs/promises'\nimport {createReadStream} from 'fs'\nimport type {CliCommandContext, CliCommandDefinition, CliOutputter} from '@sanity/cli'\nimport {getIt} from 'get-it'\nimport {promise} from 'get-it/middleware'\nimport sanityImport from '@sanity/import'\nimport padStart from 'lodash/padStart'\nimport prettyMs from 'pretty-ms'\nimport {chooseDatasetPrompt} from '../../actions/dataset/chooseDatasetPrompt'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName'\nimport {debug} from '../../debug'\n\nconst yellow = (str: string) => `\\u001b[33m${str}\\u001b[39m`\n\nconst helpText = `\nOptions\n --missing On duplicate document IDs, skip importing document in question\n --replace On duplicate document IDs, replace existing document with imported document\n --allow-failing-assets Skip assets that cannot be fetched/uploaded\n --replace-assets Skip reuse of existing assets\n --skip-cross-dataset-references Skips references to other datasets\n\nRarely used options (should generally not be used)\n --allow-assets-in-different-dataset Allow asset documents to reference different project/dataset\n\nExamples\n # Import \"moviedb.ndjson\" from the current directory to the dataset called \"moviedb\"\n sanity dataset import moviedb.ndjson moviedb\n\n # Import \"moviedb.tar.gz\" from the current directory to the dataset called \"moviedb\",\n # replacing any documents encountered that have the same document IDs\n sanity dataset import moviedb.tar.gz moviedb --replace\n\n # Import from a folder containing an ndjson file, such as an extracted tarball\n # retrieved through \"sanity dataset export\".\n sanity dataset import ~/some/folder moviedb\n\n # Import from a remote URL. Will download and extract the tarball to a temporary\n # location before importing it.\n sanity dataset import https://some.url/moviedb.tar.gz moviedb --replace\n`\n\ninterface ImportFlags {\n 'allow-assets-in-different-dataset'?: boolean\n 'allow-failing-assets'?: boolean\n 'asset-concurrency'?: boolean\n 'replace-assets'?: boolean\n 'skip-cross-dataset-references'?: boolean\n replace?: boolean\n missing?: boolean\n}\n\ninterface ParsedImportFlags {\n allowAssetsInDifferentDataset?: boolean\n allowFailingAssets?: boolean\n assetConcurrency?: boolean\n skipCrossDatasetReferences?: boolean\n replaceAssets?: boolean\n replace?: boolean\n missing?: boolean\n}\n\ninterface ProgressEvent {\n step: string\n total?: number\n current?: number\n}\n\ninterface ImportWarning {\n type?: string\n url?: string\n}\n\nfunction toBoolIfSet(flag: unknown): boolean | undefined {\n return typeof flag === 'undefined' ? undefined : Boolean(flag)\n}\n\nfunction parseFlags(rawFlags: ImportFlags): ParsedImportFlags {\n const allowAssetsInDifferentDataset = toBoolIfSet(rawFlags['allow-assets-in-different-dataset'])\n const allowFailingAssets = toBoolIfSet(rawFlags['allow-failing-assets'])\n const assetConcurrency = toBoolIfSet(rawFlags['asset-concurrency'])\n const replaceAssets = toBoolIfSet(rawFlags['replace-assets'])\n const skipCrossDatasetReferences = toBoolIfSet(rawFlags['skip-cross-dataset-references'])\n const replace = toBoolIfSet(rawFlags.replace)\n const missing = toBoolIfSet(rawFlags.missing)\n return {\n allowAssetsInDifferentDataset,\n allowFailingAssets,\n assetConcurrency,\n skipCrossDatasetReferences,\n replaceAssets,\n replace,\n missing,\n }\n}\n\nconst importDatasetCommand: CliCommandDefinition = {\n name: 'import',\n group: 'dataset',\n signature: '[FILE | FOLDER | URL] [TARGET_DATASET]',\n description: 'Import documents to given dataset from either an ndjson file or a gzipped tarball',\n helpText,\n // eslint-disable-next-line max-statements\n action: async (args, context) => {\n const {apiClient, output, chalk, fromInitCommand} = context\n const flags = parseFlags(args.extOptions)\n const {\n allowAssetsInDifferentDataset,\n allowFailingAssets,\n assetConcurrency,\n skipCrossDatasetReferences,\n replaceAssets,\n } = flags\n\n const operation = getMutationOperation(args.extOptions)\n const client = apiClient()\n\n const [file, target] = args.argsWithoutOptions\n if (!file) {\n throw new Error(\n `Source file name and target dataset must be specified (\"sanity dataset import ${chalk.bold(\n '[file]',\n )} [dataset]\")`,\n )\n }\n\n const targetDataset = await determineTargetDataset(target, context)\n debug(`Target dataset has been set to \"${targetDataset}\"`)\n\n const isUrl = /^https?:\\/\\//i.test(file)\n let inputStream\n let assetsBase\n let sourceIsFolder = false\n\n if (isUrl) {\n debug('Input is a URL, streaming from source URL')\n inputStream = await getUrlStream(file)\n } else {\n const sourceFile = path.resolve(process.cwd(), file)\n const fileStats = await fs.stat(sourceFile).catch(() => null)\n if (!fileStats) {\n throw new Error(`${sourceFile} does not exist or is not readable`)\n }\n\n sourceIsFolder = fileStats.isDirectory()\n if (sourceIsFolder) {\n inputStream = sourceFile\n } else {\n assetsBase = path.dirname(sourceFile)\n inputStream = await createReadStream(sourceFile)\n }\n }\n\n const importClient = client.clone().config({dataset: targetDataset})\n\n // Print information about what projectId and dataset it is being imported to\n const {projectId, dataset} = importClient.config()\n\n output.print('╭───────────────────────────────────────────────╮')\n output.print('│ │')\n output.print('│ Importing to: │')\n output.print(`│ ${chalk.bold('projectId')}: ${chalk.cyan(projectId).padEnd(44)} │`)\n output.print(`│ ${chalk.bold('dataset')}: ${chalk.cyan(dataset).padEnd(46)} │`)\n output.print('│ │')\n output.print('╰───────────────────────────────────────────────╯')\n output.print('')\n\n let currentStep: string | undefined\n let currentProgress: ReturnType<CliOutputter['spinner']> | undefined\n let stepStart: number | undefined\n let spinInterval: ReturnType<typeof setInterval> | null = null\n let percent: string | undefined\n\n function onProgress(opts: ProgressEvent) {\n const lengthComputable = opts.total\n const sameStep = opts.step == currentStep\n percent = getPercentage(opts)\n\n if (lengthComputable && opts.total === opts.current) {\n if (spinInterval) {\n clearInterval(spinInterval)\n }\n spinInterval = null\n }\n\n if (sameStep) {\n return\n }\n\n // Moved to a new step\n const prevStep = currentStep\n const prevStepStart = stepStart || Date.now()\n stepStart = Date.now()\n currentStep = opts.step\n\n if (currentProgress && currentProgress.succeed) {\n const timeSpent = prettyMs(Date.now() - prevStepStart, {\n secondsDecimalDigits: 2,\n })\n currentProgress.text = `[100%] ${prevStep} (${timeSpent})`\n currentProgress.succeed()\n }\n\n currentProgress = output.spinner(`[0%] ${opts.step} (0.00s)`).start()\n\n if (spinInterval) {\n clearInterval(spinInterval)\n spinInterval = null\n }\n\n spinInterval = setInterval(() => {\n const timeSpent = prettyMs(Date.now() - prevStepStart, {\n secondsDecimalDigits: 2,\n })\n\n if (currentProgress) {\n currentProgress.text = `${percent}${opts.step} (${timeSpent})`\n }\n }, 60)\n }\n\n function endTask({success}: {success: boolean}) {\n if (spinInterval) {\n clearInterval(spinInterval)\n }\n\n spinInterval = null\n\n if (success && stepStart && currentProgress) {\n const timeSpent = prettyMs(Date.now() - stepStart, {\n secondsDecimalDigits: 2,\n })\n currentProgress.text = `[100%] ${currentStep} (${timeSpent})`\n currentProgress.succeed()\n } else if (currentProgress) {\n currentProgress.fail()\n }\n }\n\n // Start the import!\n try {\n const {numDocs, warnings} = await sanityImport(inputStream, {\n client: importClient,\n assetsBase,\n operation,\n onProgress,\n allowFailingAssets,\n allowAssetsInDifferentDataset,\n skipCrossDatasetReferences,\n assetConcurrency,\n replaceAssets,\n })\n\n endTask({success: true})\n\n output.print('Done! Imported %d documents to dataset \"%s\"\\n', numDocs, targetDataset)\n printWarnings(warnings, output)\n } catch (err) {\n endTask({success: false})\n\n const isNonRefConflict =\n !fromInitCommand &&\n err.response &&\n err.response.statusCode === 409 &&\n err.step !== 'strengthen-references'\n\n if (!isNonRefConflict) {\n throw err\n }\n\n const message = [\n err.message,\n '',\n 'You probably want either:',\n ' --replace (replace existing documents with same IDs)',\n ' --missing (only import documents that do not already exist)',\n '',\n ].join('\\n')\n\n // @todo SUBCLASS ERROR?\n const error = new Error(message) as any\n error.details = err.details\n error.response = err.response\n error.responseBody = err.responseBody\n\n throw error\n }\n },\n}\n\nasync function determineTargetDataset(target: string, context: CliCommandContext) {\n const {apiClient, output, prompt} = context\n const client = apiClient()\n\n if (target) {\n const dsError = validateDatasetName(target)\n if (dsError) {\n throw new Error(dsError)\n }\n }\n\n debug('Fetching available datasets')\n const spinner = output.spinner('Fetching available datasets').start()\n const datasets = await client.datasets.list()\n spinner.succeed('[100%] Fetching available datasets')\n\n let targetDataset = target ? `${target}` : null\n if (!targetDataset) {\n targetDataset = await chooseDatasetPrompt(context, {\n message: 'Select target dataset',\n allowCreation: true,\n })\n } else if (!datasets.find((dataset) => dataset.name === targetDataset)) {\n debug('Target dataset does not exist, prompting for creation')\n const shouldCreate = await prompt.single({\n type: 'confirm',\n message: `Dataset \"${targetDataset}\" does not exist, would you like to create it?`,\n default: true,\n })\n\n if (!shouldCreate) {\n throw new Error(`Dataset \"${targetDataset}\" does not exist`)\n }\n\n await client.datasets.create(targetDataset)\n }\n\n return targetDataset\n}\n\nfunction getMutationOperation(flags: ParsedImportFlags) {\n const {replace, missing} = flags\n if (replace && missing) {\n throw new Error('Cannot use both --replace and --missing')\n }\n\n if (flags.replace) {\n return 'createOrReplace'\n }\n\n if (flags.missing) {\n return 'createIfNotExists'\n }\n\n return 'create'\n}\n\nfunction getPercentage(opts: ProgressEvent) {\n if (!opts.total || typeof opts.current === 'undefined') {\n return ''\n }\n\n const percent = Math.floor((opts.current / opts.total) * 100)\n return `[${padStart(`${percent}`, 3, ' ')}%] `\n}\n\nfunction getUrlStream(url: string) {\n const request = getIt([promise({onlyBody: true})])\n return request({url, stream: true})\n}\n\nfunction printWarnings(warnings: ImportWarning[], output: CliOutputter) {\n const assetFails = warnings.filter((warn) => warn.type === 'asset')\n\n if (!assetFails.length) {\n return\n }\n\n const warn = (output.warn || output.print).bind(output)\n\n warn(yellow('⚠ Failed to import the following %s:'), assetFails.length > 1 ? 'assets' : 'asset')\n\n warnings.forEach((warning) => {\n warn(` ${warning.url}`)\n })\n}\n\nexport default importDatasetCommand\n","import {parseISO, formatDistanceToNow, formatDistance} from 'date-fns'\nimport {Table} from 'console-table-printer'\nimport type {CliCommandContext} from '@sanity/cli'\n\ninterface ListFlags {\n offset?: number\n limit?: number\n}\n\ntype CopyDatasetListResponse = {\n id: string\n state: string\n createdAt: string\n updatedAt: string\n sourceDataset: string\n targetDataset: string\n withHistory: boolean\n}[]\n\nexport async function listDatasetCopyJobs(\n flags: ListFlags,\n context: CliCommandContext,\n): Promise<void> {\n const {apiClient, output, chalk} = context\n const client = apiClient()\n const projectId = client.config().projectId\n const query: {offset?: string; limit?: string} = {}\n let response\n\n if (flags.offset && flags.offset >= 0) {\n query.offset = `${flags.offset}`\n }\n if (flags.limit && flags.limit > 0) {\n query.limit = `${flags.limit}`\n }\n\n try {\n response = await client.request<CopyDatasetListResponse>({\n method: 'GET',\n uri: `/projects/${projectId}/datasets/copy`,\n query,\n })\n } catch (error) {\n if (error.statusCode) {\n output.error(`${chalk.red(`Dataset copy list failed:\\n${error.response.body.message}`)}\\n`)\n } else {\n output.error(`${chalk.red(`Dataset copy list failed:\\n${error.message}`)}\\n`)\n }\n }\n\n if (response && response.length > 0) {\n const table = new Table({\n title: 'Dataset copy jobs for this project in descending order',\n columns: [\n {name: 'id', title: 'Job ID', alignment: 'left'},\n {name: 'sourceDataset', title: 'Source Dataset', alignment: 'left'},\n {name: 'targetDataset', title: 'Target Dataset', alignment: 'left'},\n {name: 'state', title: 'State', alignment: 'left'},\n {name: 'withHistory', title: 'With history', alignment: 'left'},\n {name: 'timeStarted', title: 'Time started', alignment: 'left'},\n {name: 'timeTaken', title: 'Time taken', alignment: 'left'},\n ],\n })\n\n response.forEach((job) => {\n const {id, state, createdAt, updatedAt, sourceDataset, targetDataset, withHistory} = job\n\n let timeStarted = ''\n if (createdAt !== '') {\n timeStarted = formatDistanceToNow(parseISO(createdAt))\n }\n\n let timeTaken = ''\n if (updatedAt !== '') {\n timeTaken = formatDistance(parseISO(updatedAt), parseISO(createdAt))\n }\n\n let color\n switch (state) {\n case 'completed':\n color = 'green'\n break\n case 'failed':\n color = 'red'\n break\n case 'pending':\n color = 'yellow'\n break\n default:\n color = ''\n }\n\n table.addRow(\n {\n id,\n state,\n withHistory,\n timeStarted: `${timeStarted} ago`,\n timeTaken,\n sourceDataset,\n targetDataset,\n },\n {color},\n )\n })\n\n table.printTable()\n } else {\n output.print(\"This project doesn't have any dataset copy jobs\")\n }\n}\n","import type {SanityClient} from '@sanity/client'\n\nexport const getClientUrl = (client: SanityClient, uri: string, useCdn = false): string => {\n const config = client.config()\n const base = useCdn ? config.cdnUrl : config.url\n return `${base}/${uri.replace(/^\\//, '')}`\n}\n","import type {SanityClient} from '@sanity/client'\nimport type {CliCommandDefinition, CliOutputter} from '@sanity/cli'\nimport yargs from 'yargs/yargs'\nimport {hideBin} from 'yargs/helpers'\nimport EventSource from '@sanity/eventsource'\nimport {Observable} from 'rxjs'\nimport {promptForDatasetName} from '../../actions/dataset/datasetNamePrompt'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName'\nimport {debug} from '../../debug'\nimport {listDatasetCopyJobs} from '../../actions/dataset/listDatasetCopyJobs'\nimport {getClientUrl} from '../../util/getClientUrl'\n\nconst helpText = `\nOptions\n --detach Start the copy without waiting for it to finish\n --attach <job-id> Attach to the running copy process to show progress\n --skip-history Don't preserve document history on copy\n --list Lists all dataset copy jobs corresponding to a certain criteria.\n --offset Start position in the list of jobs. Default 0. With --list.\n --limit Maximum number of jobs returned. Default 10. Maximum 1000. With --list.\n\nExamples\n sanity dataset copy\n sanity dataset copy <source-dataset>\n sanity dataset copy <source-dataset> <target-dataset>\n sanity dataset copy --skip-history <source-dataset> <target-dataset>\n sanity dataset copy --detach <source-dataset> <target-dataset>\n sanity dataset copy --attach <job-id>\n sanity dataset copy --list\n sanity dataset copy --list --offset=2\n sanity dataset copy --list --offset=2 --limit=10\n`\n\ninterface CopyProgressStreamEvent {\n type: 'reconnect' | string\n progress?: number\n}\n\ninterface CopyDatasetFlags {\n list?: boolean\n attach?: string\n detach?: boolean\n offset?: number\n limit?: number\n 'skip-history'?: boolean\n}\n\ninterface CopyDatasetResponse {\n jobId: string\n}\n\nfunction parseCliFlags(args: {argv?: string[]}) {\n return yargs(hideBin(args.argv || process.argv).slice(2))\n .option('attach', {type: 'string'})\n .option('list', {type: 'boolean'})\n .option('limit', {type: 'number'})\n .option('offset', {type: 'number'})\n .option('skip-history', {type: 'boolean'})\n .option('detach', {type: 'boolean'}).argv\n}\n\nconst progress = (url: string) => {\n return new Observable<CopyProgressStreamEvent>((observer) => {\n let progressSource = new EventSource(url)\n let stopped = false\n\n function onError(error: unknown) {\n if (progressSource) {\n progressSource.close()\n }\n\n debug(`Error received: ${error}`)\n if (stopped) {\n return\n }\n observer.next({type: 'reconnect'})\n progressSource = new EventSource(url)\n }\n\n function onChannelError(error: MessageEvent) {\n stopped = true\n progressSource.close()\n observer.error(error)\n }\n\n function onMessage(event: MessageEvent) {\n const data = JSON.parse(event.data)\n if (data.state === 'failed') {\n debug('Job failed. Data: %o', event)\n observer.error(event)\n } else if (data.state === 'completed') {\n debug('Job succeeded. Data: %o', event)\n onComplete()\n } else {\n debug(`Job progressed. Data: %o`, event)\n observer.next(data)\n }\n }\n\n function onComplete() {\n progressSource.removeEventListener('error', onError)\n progressSource.removeEventListener('channel_error', onChannelError)\n progressSource.removeEventListener('job', onMessage)\n progressSource.removeEventListener('done', onComplete)\n progressSource.close()\n observer.complete()\n }\n\n progressSource.addEventListener('error', onError)\n progressSource.addEventListener('channel_error', onChannelError)\n progressSource.addEventListener('job', onMessage)\n progressSource.addEventListener('done', onComplete)\n })\n}\n\nconst followProgress = (\n jobId: string,\n client: SanityClient,\n output: CliOutputter,\n): Promise<void> => {\n let currentProgress = 0\n\n const spinner = output.spinner({}).start()\n const listenUrl = getClientUrl(client, `jobs/${jobId}/listen`)\n\n debug(`Listening to ${listenUrl}`)\n\n return new Promise((resolve, reject) => {\n progress(listenUrl).subscribe({\n next: (event) => {\n if (typeof event.progress === 'number') {\n currentProgress = event.progress\n }\n\n spinner.text = `Copy in progress: ${currentProgress}%`\n },\n error: (err) => {\n spinner.fail()\n reject(new Error(`${err.data}`))\n },\n complete: () => {\n spinner.succeed('Copy finished.')\n resolve()\n },\n })\n })\n}\n\nconst copyDatasetCommand: CliCommandDefinition<CopyDatasetFlags> = {\n name: 'copy',\n group: 'dataset',\n signature: '[SOURCE_DATASET] [TARGET_DATASET]',\n helpText,\n description:\n 'Manages dataset copying, including starting a new copy job, listing copy jobs and following the progress of a running copy job',\n action: async (args, context) => {\n const {apiClient, output, prompt, chalk} = context\n // Reparsing CLI flags for better control of binary flags\n const flags: CopyDatasetFlags = await parseCliFlags(args)\n const client = apiClient()\n\n if (flags.list) {\n await listDatasetCopyJobs(flags, context)\n return\n }\n\n if (flags.attach) {\n const jobId = flags.attach\n\n if (!jobId) {\n throw new Error('Please supply a jobId')\n }\n\n await followProgress(jobId, client, output)\n return\n }\n\n const [sourceDataset, targetDataset] = args.argsWithoutOptions\n const shouldSkipHistory = Boolean(flags['skip-history'])\n\n const nameError = sourceDataset && validateDatasetName(sourceDataset)\n if (nameError) {\n throw new Error(nameError)\n }\n\n const existingDatasets = await client.datasets\n .list()\n .then((datasets) => datasets.map((ds) => ds.name))\n\n const sourceDatasetName = await (sourceDataset ||\n promptForDatasetName(prompt, {message: 'Source dataset name:'}))\n if (!existingDatasets.includes(sourceDatasetName)) {\n throw new Error(`Source dataset \"${sourceDatasetName}\" doesn't exist`)\n }\n\n const targetDatasetName = await (targetDataset ||\n promptForDatasetName(prompt, {message: 'Target dataset name:'}))\n if (existingDatasets.includes(targetDatasetName)) {\n throw new Error(`Target dataset \"${targetDatasetName}\" already exists`)\n }\n\n const err = validateDatasetName(targetDatasetName)\n if (err) {\n throw new Error(err)\n }\n\n try {\n const response = await client.request<CopyDatasetResponse>({\n method: 'PUT',\n uri: `/datasets/${sourceDatasetName}/copy`,\n body: {\n targetDataset: targetDatasetName,\n skipHistory: shouldSkipHistory,\n },\n })\n\n output.print(\n `Copying dataset ${chalk.green(sourceDatasetName)} to ${chalk.green(targetDatasetName)}...`,\n )\n\n if (!shouldSkipHistory) {\n output.print(\n `Note: You can run this command with flag '--skip-history'. The flag will reduce copy time in larger datasets.`,\n )\n }\n\n output.print(`Job ${chalk.green(response.jobId)} started`)\n\n if (flags.detach) {\n return\n }\n\n await followProgress(response.jobId, client, output)\n output.print(`Job ${chalk.green(response.jobId)} completed`)\n } catch (error) {\n if (error.statusCode) {\n output.print(`${chalk.red(`Dataset copying failed:\\n${error.response.body.message}`)}\\n`)\n } else {\n output.print(`${chalk.red(`Dataset copying failed:\\n${error.message}`)}\\n`)\n }\n }\n },\n}\n\nexport default copyDatasetCommand\n","import type {CliPrompter} from '@sanity/cli'\nimport {validateDatasetAliasName} from './validateDatasetAliasName'\n\nexport function promptForDatasetAliasName(\n prompt: CliPrompter,\n options: {message?: string; default?: string} = {},\n): Promise<string> {\n return prompt.single({\n type: 'input',\n message: 'Alias name:',\n validate: (name) => {\n const err = validateDatasetAliasName(name)\n if (err) {\n return err\n }\n\n return true\n },\n ...options,\n })\n}\n","import type {CliCommandAction} from '@sanity/cli'\nimport {promptForDatasetName} from '../../../actions/dataset/datasetNamePrompt'\nimport {promptForDatasetAliasName} from '../../../actions/dataset/alias/promptForDatasetAliasName'\nimport {validateDatasetAliasName} from '../../../actions/dataset/alias/validateDatasetAliasName'\nimport {validateDatasetName} from '../../../actions/dataset/validateDatasetName'\nimport * as aliasClient from './datasetAliasesClient'\nimport {ALIAS_PREFIX} from './datasetAliasesClient'\n\nexport const createAliasHandler: CliCommandAction = async (args, context) => {\n const {apiClient, output, prompt} = context\n const [, alias, targetDataset] = args.argsWithoutOptions\n const client = apiClient()\n\n const nameError = alias && validateDatasetAliasName(alias)\n if (nameError) {\n throw new Error(nameError)\n }\n\n const [datasets, aliases, projectFeatures] = await Promise.all([\n client.datasets.list().then((sets) => sets.map((ds) => ds.name)),\n aliasClient.listAliases(client).then((sets) => sets.map((ds) => ds.name)),\n client.request({uri: '/features'}),\n ])\n\n let aliasName = await (alias || promptForDatasetAliasName(prompt))\n let aliasOutputName = aliasName\n\n if (aliasName.startsWith(ALIAS_PREFIX)) {\n aliasName = aliasName.substring(1)\n } else {\n aliasOutputName = `${ALIAS_PREFIX}${aliasName}`\n }\n\n if (aliases.includes(aliasName)) {\n throw new Error(`Dataset alias \"${aliasOutputName}\" already exists`)\n }\n\n if (targetDataset) {\n const datasetErr = validateDatasetName(targetDataset)\n if (datasetErr) {\n throw new Error(datasetErr)\n }\n }\n\n const datasetName = await (targetDataset || promptForDatasetName(prompt))\n if (datasetName && !datasets.includes(datasetName)) {\n throw new Error(`Dataset \"${datasetName}\" does not exist `)\n }\n\n const canCreateAlias = projectFeatures.includes('advancedDatasetManagement')\n if (!canCreateAlias) {\n throw new Error(`This project cannot create a dataset alias`)\n }\n\n try {\n await aliasClient.createAlias(client, aliasName, datasetName)\n output.print(\n `Dataset alias ${aliasOutputName} created ${\n datasetName && `and linked to ${datasetName}`\n } successfully`,\n )\n } catch (err) {\n throw new Error(`Dataset alias creation failed:\\n${err.message}`)\n }\n}\n","import type {CliCommandAction} from '@sanity/cli'\nimport {hideBin} from 'yargs/helpers'\nimport yargs from 'yargs/yargs'\nimport {validateDatasetAliasName} from '../../../actions/dataset/alias/validateDatasetAliasName'\nimport * as aliasClient from './datasetAliasesClient'\nimport {ALIAS_PREFIX} from './datasetAliasesClient'\n\nfunction parseCliFlags(args: {argv?: string[]}) {\n return yargs(hideBin(args.argv || process.argv).slice(2)).option('force', {type: 'boolean'}).argv\n}\n\ninterface DeleteAliasFlags {\n force?: boolean\n}\n\nexport const deleteAliasHandler: CliCommandAction<DeleteAliasFlags> = async (args, context) => {\n const {apiClient, prompt, output} = context\n const [, ds] = args.argsWithoutOptions\n const {force} = await parseCliFlags(args)\n const client = apiClient()\n if (!ds) {\n throw new Error('Dataset alias name must be provided')\n }\n\n let aliasName = `${ds}`\n const dsError = validateDatasetAliasName(aliasName)\n if (dsError) {\n throw dsError\n }\n aliasName = aliasName.startsWith(ALIAS_PREFIX) ? aliasName.substring(1) : aliasName\n\n const [fetchedAliases] = await Promise.all([aliasClient.listAliases(client)])\n const linkedAlias = fetchedAliases.find((elem) => elem.name === aliasName)\n const message =\n linkedAlias && linkedAlias.datasetName\n ? `This dataset alias is linked to ${linkedAlias.datasetName}. `\n : ''\n\n if (force) {\n output.warn(`'--force' used: skipping confirmation, deleting alias \"${aliasName}\"`)\n } else {\n await prompt.single({\n type: 'input',\n message: `${message}Are you ABSOLUTELY sure you want to delete this dataset alias?\\n Type the name of the dataset alias to confirm delete: `,\n filter: (input) => `${input}`.trim(),\n validate: (input) => {\n return input === aliasName || 'Incorrect dataset alias name. Ctrl + C to cancel delete.'\n },\n })\n }\n\n return aliasClient.removeAlias(client, aliasName).then(() => {\n output.print('Dataset alias deleted successfully')\n })\n}\n","import type {CliCommandAction} from '@sanity/cli'\nimport {hideBin} from 'yargs/helpers'\nimport yargs from 'yargs/yargs'\nimport {promptForDatasetAliasName} from '../../../actions/dataset/alias/promptForDatasetAliasName'\nimport {validateDatasetAliasName} from '../../../actions/dataset/alias/validateDatasetAliasName'\nimport * as aliasClient from './datasetAliasesClient'\nimport {ALIAS_PREFIX} from './datasetAliasesClient'\n\ninterface UnlinkFlags {\n force?: boolean\n}\n\nfunction parseCliFlags(args: {argv?: string[]}) {\n return yargs(hideBin(args.argv || process.argv).slice(2)).option('force', {type: 'boolean'}).argv\n}\n\nexport const unlinkAliasHandler: CliCommandAction<UnlinkFlags> = async (args, context) => {\n const {apiClient, output, prompt} = context\n const [, alias] = args.argsWithoutOptions\n const {force} = await parseCliFlags(args)\n const client = apiClient()\n\n const nameError = alias && validateDatasetAliasName(alias)\n if (nameError) {\n throw new Error(nameError)\n }\n\n const fetchedAliases = await aliasClient.listAliases(client)\n\n let aliasName = await (alias || promptForDatasetAliasName(prompt))\n let aliasOutputName = aliasName\n\n if (aliasName.startsWith(ALIAS_PREFIX)) {\n aliasName = aliasName.substring(1)\n } else {\n aliasOutputName = `${ALIAS_PREFIX}${aliasName}`\n }\n\n // get the current alias from the remote alias list\n const linkedAlias = fetchedAliases.find((elem) => elem.name === aliasName)\n if (!linkedAlias) {\n throw new Error(`Dataset alias \"${aliasOutputName}\" does not exist`)\n }\n\n if (!linkedAlias.datasetName) {\n throw new Error(`Dataset alias \"${aliasOutputName}\" is not linked to a dataset`)\n }\n\n if (force) {\n output.warn(`'--force' used: skipping confirmation, unlinking alias \"${aliasOutputName}\"`)\n } else {\n await prompt.single({\n type: 'input',\n message: `Are you ABSOLUTELY sure you want to unlink this alias from the \"${linkedAlias.datasetName}\" dataset?\n \\n Type YES/NO: `,\n filter: (input) => `${input}`.toLowerCase(),\n validate: (input) => {\n return input === 'yes' || 'Ctrl + C to cancel dataset alias unlink.'\n },\n })\n }\n\n try {\n const result = await aliasClient.unlinkAlias(client, aliasName)\n output.print(\n `Dataset alias ${aliasOutputName} unlinked from ${result.datasetName} successfully`,\n )\n } catch (err) {\n throw new Error(`Dataset alias unlink failed:\\n${err.message}`)\n }\n}\n","import type {CliCommandAction} from '@sanity/cli'\nimport {promptForDatasetName} from '../../../actions/dataset/datasetNamePrompt'\nimport {promptForDatasetAliasName} from '../../../actions/dataset/alias/promptForDatasetAliasName'\nimport {validateDatasetAliasName} from '../../../actions/dataset/alias/validateDatasetAliasName'\nimport {validateDatasetName} from '../../../actions/dataset/validateDatasetName'\nimport * as aliasClient from './datasetAliasesClient'\nimport {ALIAS_PREFIX} from './datasetAliasesClient'\n\nexport const linkAliasHandler: CliCommandAction = async (args, context) => {\n const {apiClient, output, prompt} = context\n const [, alias, targetDataset] = args.argsWithoutOptions\n const flags = args.extOptions\n const client = apiClient()\n\n const nameError = alias && validateDatasetAliasName(alias)\n if (nameError) {\n throw new Error(nameError)\n }\n\n const [datasets, fetchedAliases] = await Promise.all([\n client.datasets.list().then((sets) => sets.map((ds) => ds.name)),\n aliasClient.listAliases(client),\n ])\n const aliases = fetchedAliases.map((da) => da.name)\n\n let aliasName = await (alias || promptForDatasetAliasName(prompt))\n let aliasOutputName = aliasName\n\n if (aliasName.startsWith(ALIAS_PREFIX)) {\n aliasName = aliasName.substring(1)\n } else {\n aliasOutputName = `${ALIAS_PREFIX}${aliasName}`\n }\n\n if (!aliases.includes(aliasName)) {\n throw new Error(`Dataset alias \"${aliasOutputName}\" does not exist `)\n }\n\n const datasetName = await (targetDataset || promptForDatasetName(prompt))\n const datasetErr = validateDatasetName(datasetName)\n if (datasetErr) {\n throw new Error(datasetErr)\n }\n\n if (!datasets.includes(datasetName)) {\n throw new Error(`Dataset \"${datasetName}\" does not exist `)\n }\n\n const linkedAlias = fetchedAliases.find((elem) => elem.name === aliasName)\n\n if (linkedAlias && linkedAlias.datasetName) {\n if (linkedAlias.datasetName === datasetName) {\n throw new Error(`Dataset alias ${aliasOutputName} already linked to ${datasetName}`)\n }\n\n if (!flags.force) {\n await prompt.single({\n type: 'input',\n message: `This alias is linked to dataset <${linkedAlias.datasetName}>. Are you ABSOLUTELY sure you want to link this dataset alias to this dataset?\n \\n Type YES/NO: `,\n filter: (input) => `${input}`.toLowerCase(),\n validate: (input) => {\n return input === 'yes' || 'Ctrl + C to cancel dataset alias link.'\n },\n })\n }\n }\n\n try {\n await aliasClient.updateAlias(client, aliasName, datasetName)\n output.print(`Dataset alias ${aliasOutputName} linked to ${datasetName} successfully`)\n } catch (err) {\n throw new Error(`Dataset alias link failed:\\n${err.message}`)\n }\n}\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport oneline from 'oneline'\nimport {createAliasHandler} from './createAliasHandler'\nimport {deleteAliasHandler} from './deleteAliasHandler'\nimport {unlinkAliasHandler} from './unlinkAliasHandler'\nimport {linkAliasHandler} from './linkAliasHandler'\n\nconst helpText = `\nBelow are examples of the alias subcommand\n\nCreate Alias\n sanity dataset alias create\n sanity dataset alias create <alias-name>\n sanity dataset alias create <alias-name> <target-dataset>\n\nDelete Alias\n Options\n --force Skips security prompt and forces link command\n\n Usage\n sanity dataset alias delete <alias-name>\n sanity dataset alias delete <alias-name> --force\n\nLink Alias\n Options\n --force Skips security prompt and forces link command\n\n Usage\n sanity dataset alias link\n sanity dataset alias link <alias-name>\n sanity dataset alias link <alias-name> <target-dataset>\n sanity dataset alias link <alias-name> <target-dataset> --force\n\nUn-link Alias\n Options\n --force Skips security prompt and forces link command\n\n Usage\n sanity dataset alias unlink\n sanity dataset alias unlink <alias-name>\n sanity dataset alias unlink <alias-name> --force\n`\n\nconst aliasCommand: CliCommandDefinition = {\n name: 'alias',\n group: 'dataset',\n signature: 'SUBCOMMAND [ALIAS_NAME, TARGET_DATASET]',\n helpText,\n description: 'You can manage your dataset alias using this command.',\n action: async (args, context) => {\n const [verb] = args.argsWithoutOptions\n switch (verb) {\n case 'create':\n await createAliasHandler(args, context)\n break\n case 'delete':\n await deleteAliasHandler(args, context)\n break\n case 'unlink':\n await unlinkAliasHandler(args, context)\n break\n case 'link':\n await linkAliasHandler(args, context)\n break\n default:\n throw new Error(oneline`\n Invalid command provided. Available commands are: create, delete, link and unlink.\n For more guide run the help command 'sanity dataset alias --help'\n `)\n }\n },\n}\n\nexport default aliasCommand\n","import type {CliCommandGroupDefinition} from '@sanity/cli'\n\nconst documentsGroup: CliCommandGroupDefinition = {\n name: 'documents',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Interact with documents in your project',\n}\n\nexport default documentsGroup\n","import type {CliCommandContext} from '@sanity/cli'\nimport tokenize, {LexerToken} from 'json-lexer'\n\ninterface KeyToken {\n type: 'key'\n value: string\n raw: string\n}\n\ntype ExtendedLexerToken = LexerToken | KeyToken\n\nconst identity = (inp: string): string => inp\n\nexport function colorizeJson(input: unknown, chalk: CliCommandContext['chalk']): string {\n const formatters: Record<ExtendedLexerToken['type'], (str: string) => string> = {\n punctuator: chalk.white,\n key: chalk.white,\n string: chalk.green,\n number: chalk.yellow,\n literal: chalk.bold,\n whitespace: identity,\n }\n\n const json = JSON.stringify(input, null, 2)\n\n return tokenize(json)\n .map((token, i, arr): ExtendedLexerToken => {\n // Note how the following only works because we pretty-print the JSON\n const prevToken = i === 0 ? token : arr[i - 1]\n if (\n token.type === 'string' &&\n prevToken.type === 'whitespace' &&\n /^\\n\\s+$/.test(prevToken.value)\n ) {\n return {...token, type: 'key'}\n }\n\n return token\n })\n .map((token) => {\n const formatter = formatters[token.type] || identity\n return formatter(token.raw)\n })\n .join('')\n}\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport {colorizeJson} from '../../util/colorizeJson'\n\nconst helpText = `\nGet and print a document from the projects configured dataset\n\nOptions\n --pretty colorized JSON output\n --dataset NAME to override dataset\n\nExamples\n # Get the document with the ID \"myDocId\"\n sanity documents get myDocId\n\n # ID wrapped in double or single quote works equally well\n sanity documents get 'myDocId'\n`\n\ninterface GetDocumentFlags {\n pretty?: boolean\n dataset?: string\n}\n\nconst getDocumentsCommand: CliCommandDefinition<GetDocumentFlags> = {\n name: 'get',\n group: 'documents',\n signature: '[DOCUMENT_ID]',\n helpText,\n description: 'Get and print a document by ID',\n action: async (args, context) => {\n const {apiClient, output, chalk} = context\n const {pretty, dataset} = args.extOptions\n const [docId] = args.argsWithoutOptions.map((str) => `${str}`)\n\n if (!docId) {\n throw new Error('Document ID must be specified')\n }\n\n const client = dataset ? apiClient().clone().config({dataset}) : apiClient()\n\n try {\n const doc = await client.getDocument(docId)\n if (!doc) {\n throw new Error(`Document ${docId} not found`)\n }\n\n output.print(pretty ? colorizeJson(doc, chalk) : JSON.stringify(doc, null, 2))\n } catch (err) {\n throw new Error(`Failed to fetch document:\\n${err.message}`)\n }\n },\n}\n\nexport default getDocumentsCommand\n","import yargs from 'yargs/yargs'\nimport {hideBin} from 'yargs/helpers'\nimport type {CliCommandArguments, CliCommandContext} from '@sanity/cli'\nimport {colorizeJson} from '../../util/colorizeJson'\n\nconst defaultApiVersion = 'v2022-06-01'\n\nconst helpText = `\nRun a query against the projects configured dataset\n\nOptions\n --pretty colorized JSON output\n --dataset NAME to override dataset\n --project PROJECT to override project ID\n --anonymous Send the query without any authorization token\n --api-version API version to use (defaults to \\`${defaultApiVersion}\\`)\n\nEnvironment variables\n \\`SANITY_CLI_QUERY_API_VERSION\\` - will use the defined API version,\n unless \\`--api-version\\` is specified.\n\nExamples\n # Fetch 5 documents of type \"movie\"\n sanity documents query '*[_type == \"movie\"][0..4]'\n\n # Fetch title of the oldest movie in the dataset named \"staging\"\n sanity documents query '*[_type == \"movie\"]|order(releaseDate asc)[0]{title}' --dataset staging\n\n # Use API version v2021-06-07 and do a query\n sanity documents query --api-version v2021-06-07 '*[_id == \"header\"] { \"headerText\": pt::text(body) }'\n`\n\ninterface CliQueryCommandFlags {\n pretty?: boolean\n anonymous?: boolean\n dataset?: string\n project?: string\n apiVersion?: string\n}\n\nexport default {\n name: 'query',\n group: 'documents',\n signature: '[QUERY]',\n helpText,\n description: 'Query for documents',\n action: async (\n args: CliCommandArguments<CliQueryCommandFlags>,\n context: CliCommandContext,\n ): Promise<void> => {\n // Reparsing arguments for improved control of flags\n const {\n pretty,\n dataset,\n project,\n anonymous,\n 'api-version': apiVersion,\n } = await parseCliFlags(args)\n const {apiClient, output, chalk, cliConfig} = context\n const [query] = args.argsWithoutOptions\n\n if (!query) {\n throw new Error('Query must be specified')\n }\n\n if (!apiVersion) {\n output.warn(chalk.yellow(`--api-version not specified, using \\`${defaultApiVersion}\\``))\n }\n\n const requireDataset = !dataset\n const requireProject = !project\n const requireUser = !anonymous\n\n if (requireProject && !cliConfig?.api?.projectId) {\n throw new Error(\n 'No project configured in CLI config - either configure one, or use `--project` flag',\n )\n }\n\n if (requireDataset && !cliConfig?.api?.dataset) {\n throw new Error(\n 'No dataset configured in CLI config - either configure one, or use `--dataset` flag',\n )\n }\n\n const baseClient = apiClient({requireProject, requireUser}).clone()\n const {dataset: originalDataset, projectId: originalProjectId} = baseClient.config()\n\n const client = baseClient.config({\n projectId: project || originalProjectId,\n dataset: dataset || originalDataset,\n apiVersion: apiVersion || defaultApiVersion,\n })\n\n try {\n const docs = await client.fetch(query)\n if (!docs) {\n throw new Error('Query returned no results')\n }\n\n output.print(pretty ? colorizeJson(docs, chalk) : JSON.stringify(docs, null, 2))\n } catch (err) {\n throw new Error(`Failed to run query:\\n${err.message}`)\n }\n },\n}\n\nfunction parseCliFlags(args: CliCommandArguments<CliQueryCommandFlags>) {\n // eslint-disable-next-line no-process-env\n const fallbackApiVersion = process.env.SANITY_CLI_QUERY_API_VERSION\n return yargs(hideBin(args.argv || process.argv).slice(2))\n .option('pretty', {type: 'boolean', default: false})\n .option('dataset', {type: 'string'})\n .option('project', {type: 'string'})\n .option('anonymous', {type: 'boolean', default: false})\n .option('api-version', {type: 'string', default: fallbackApiVersion}).argv\n}\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport pluralize from 'pluralize-esm'\n\nconst helpText = `\nDelete a document from the projects configured dataset\n\nOptions\n --dataset NAME to override dataset\n\nExample\n # Delete the document with the ID \"myDocId\"\n sanity documents delete myDocId\n\n # ID wrapped in double or single quote works equally well\n sanity documents delete 'myDocId'\n\n # Delete document with ID \"someDocId\" from dataset \"blog\"\n sanity documents delete --dataset=blog someDocId\n\n # Delete the document with ID \"doc1\" and \"doc2\"\n sanity documents delete doc1 doc2\n`\n\ninterface DeleteFlags {\n dataset?: string\n}\n\nconst deleteDocumentsCommand: CliCommandDefinition<DeleteFlags> = {\n name: 'delete',\n group: 'documents',\n signature: '[ID] [...IDS]',\n helpText,\n description: 'Delete a document by ID',\n action: async (args, context) => {\n const {apiClient, output, chalk} = context\n const {dataset} = args.extOptions\n const ids = args.argsWithoutOptions.map((str) => `${str}`)\n\n if (!ids.length) {\n throw new Error('Document ID must be specified')\n }\n\n const client = dataset ? apiClient().clone().config({dataset}) : apiClient()\n\n const transaction = ids.reduce((trx, id) => trx.delete(id), client.transaction())\n try {\n const {results} = await transaction.commit()\n const deleted = results.filter((res) => res.operation === 'delete').map((res) => res.id)\n const notFound = ids.filter((id) => !deleted.includes(id))\n if (deleted.length > 0) {\n output.print(`Deleted ${deleted.length} ${pluralize('document', deleted.length)}`)\n }\n\n if (notFound.length > 0) {\n output.error(\n chalk.red(`${pluralize('Document', notFound.length)} not found: ${notFound.join(', ')}`),\n )\n }\n } catch (err) {\n throw new Error(`Failed to delete ${pluralize('document', ids.length)}:\\n${err.message}`)\n }\n },\n}\n\nexport default deleteDocumentsCommand\n","import path from 'path'\nimport fs from 'fs/promises'\nimport os from 'os'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport type {\n SanityClient,\n MultipleMutationResult,\n Mutation,\n IdentifiedSanityDocumentStub,\n} from '@sanity/client'\nimport json5 from 'json5'\nimport execa from 'execa'\nimport chokidar from 'chokidar'\nimport {isPlainObject, isEqual, noop} from 'lodash'\nimport {uuid} from '@sanity/uuid'\n\ntype MutationOperationName = 'create' | 'createOrReplace' | 'createIfNotExists'\n\ninterface CreateFlags {\n dataset?: string\n replace?: boolean\n missing?: boolean\n watch?: boolean\n json5?: boolean\n id?: string\n}\n\nconst helpText = `\nOptions\n --replace On duplicate document IDs, replace existing document with specified document(s)\n --missing On duplicate document IDs, don't modify the target document(s)\n --watch Write the documents whenever the target file or buffer changes\n --json5 Use JSON5 file type to allow a \"simplified\" version of JSON\n --id <id> Specify a document ID to use. Will fetch remote document ID and populate editor.\n --dataset NAME to override dataset\n\nExamples\n # Create the document specified in \"myDocument.json\".\n sanity documents create myDocument.json\n\n # Open configured $EDITOR and create the specified document(s)\n sanity documents create\n\n # Fetch document with the ID \"myDocId\" and open configured $EDITOR with the\n # current document content (if any). Replace document with the edited version\n # when the editor closes\n sanity documents create --id myDocId --replace\n\n # Open configured $EDITOR and replace the document with the given content\n # on each save. Use JSON5 file extension and parser for simplified syntax.\n sanity documents create --id myDocId --watch --replace --json5\n`\n\nconst createDocumentsCommand: CliCommandDefinition<CreateFlags> = {\n name: 'create',\n group: 'documents',\n signature: '[FILE]',\n helpText,\n description: 'Create one or more documents',\n // eslint-disable-next-line complexity\n action: async (args, context) => {\n const {apiClient, output} = context\n const {replace, missing, watch, id, dataset} = args.extOptions\n const [file] = args.argsWithoutOptions\n const useJson5 = args.extOptions.json5\n const client = dataset ? apiClient().clone().config({dataset}) : apiClient()\n\n if (replace && missing) {\n throw new Error('Cannot use both --replace and --missing')\n }\n\n if (id && file) {\n throw new Error('Cannot use --id when specifying a file path')\n }\n\n let operation: MutationOperationName = 'create'\n if (replace || missing) {\n operation = replace ? 'createOrReplace' : 'createIfNotExists'\n }\n\n if (file) {\n const contentPath = path.resolve(process.cwd(), file)\n const content = json5.parse(await fs.readFile(contentPath, 'utf8'))\n const result = await writeDocuments(content, operation, client)\n output.print(getResultMessage(result, operation))\n return\n }\n\n // Create a temporary file and use that as source, opening an editor on it\n const docId = id || uuid()\n const ext = useJson5 ? 'json5' : 'json'\n const tmpFile = path.join(os.tmpdir(), 'sanity-cli', `${docId}.${ext}`)\n const stringify = useJson5 ? json5.stringify : JSON.stringify\n const defaultValue = (id && (await client.getDocument(id))) || {_id: docId, _type: 'specify-me'}\n await fs.mkdir(path.join(os.tmpdir(), 'sanity-cli'), {recursive: true})\n await fs.writeFile(tmpFile, stringify(defaultValue, null, 2), 'utf8')\n\n const editor = getEditor()\n if (watch) {\n // If we're in watch mode, we want to run the creation on each change (if it validates)\n registerUnlinkOnSigInt(tmpFile)\n output.print(`Watch mode: ${tmpFile}`)\n output.print('Watch mode: Will write documents on each save.')\n output.print('Watch mode: Press Ctrl + C to cancel watch mode.')\n chokidar.watch(tmpFile).on('change', () => {\n output.print('')\n return readAndPerformCreatesFromFile(tmpFile)\n })\n execa(editor.bin, editor.args.concat(tmpFile), {stdio: 'inherit'})\n } else {\n // While in normal mode, we just want to wait for the editor to close and run the thing once\n execa.sync(editor.bin, editor.args.concat(tmpFile), {stdio: 'inherit'})\n await readAndPerformCreatesFromFile(tmpFile)\n await fs.unlink(tmpFile).catch(noop)\n }\n\n async function readAndPerformCreatesFromFile(filePath: string) {\n let content\n try {\n content = json5.parse(await fs.readFile(filePath, 'utf8'))\n } catch (err) {\n output.error(`Failed to read input: ${err.message}`)\n return\n }\n\n if (isEqual(content, defaultValue)) {\n output.print('Value not modified, doing nothing.')\n output.print('Modify document to trigger creation.')\n return\n }\n\n try {\n const writeResult = await writeDocuments(content, operation, client)\n output.print(getResultMessage(writeResult, operation))\n } catch (err) {\n output.error(`Failed to write documents: ${err.message}`)\n if (err.message.includes('already exists')) {\n output.error('Perhaps you want to use `--replace` or `--missing`?')\n }\n }\n }\n },\n}\n\nfunction registerUnlinkOnSigInt(tmpFile: string) {\n process.on('SIGINT', async () => {\n await fs.unlink(tmpFile).catch(noop)\n // eslint-disable-next-line no-process-exit\n process.exit(130)\n })\n}\n\nfunction writeDocuments(\n documents: {_id?: string; _type: string} | {_id?: string; _type: string}[],\n operation: MutationOperationName,\n client: SanityClient,\n) {\n const docs = Array.isArray(documents) ? documents : [documents]\n if (docs.length === 0) {\n throw new Error('No documents provided')\n }\n\n const mutations = docs.map((doc, index): Mutation => {\n validateDocument(doc, index, docs)\n if (operation === 'create') {\n return {create: doc}\n }\n\n if (operation === 'createIfNotExists') {\n if (isIdentifiedSanityDocument(doc)) {\n return {createIfNotExists: doc}\n }\n\n throw new Error(`Missing required _id attribute for ${operation}`)\n }\n\n if (operation === 'createOrReplace') {\n if (isIdentifiedSanityDocument(doc)) {\n return {createOrReplace: doc}\n }\n\n throw new Error(`Missing required _id attribute for ${operation}`)\n }\n\n throw new Error(`Unsupported operation ${operation}`)\n })\n\n return client.transaction(mutations).commit()\n}\n\nfunction validateDocument(doc: unknown, index: number, arr: unknown[]) {\n const isSingle = arr.length === 1\n\n if (!isPlainObject(doc)) {\n throw new Error(getErrorMessage('must be an object', index, isSingle))\n }\n\n if (!isSanityDocumentish(doc)) {\n throw new Error(getErrorMessage('must have a `_type` property of type string', index, isSingle))\n }\n}\n\nfunction isSanityDocumentish(doc: unknown): doc is {_type: string} {\n return (\n doc !== null &&\n typeof doc === 'object' &&\n '_type' in doc &&\n typeof (doc as any)._type === 'string'\n )\n}\n\nfunction isIdentifiedSanityDocument(doc: unknown): doc is IdentifiedSanityDocumentStub {\n return isSanityDocumentish(doc) && '_id' in doc\n}\n\nfunction getErrorMessage(message: string, index: number, isSingle: boolean): string {\n return isSingle ? `Document ${message}` : `Document at index ${index} ${message}`\n}\n\nfunction getResultMessage(\n result: MultipleMutationResult,\n operation: MutationOperationName,\n): string {\n const joiner = '\\n - '\n if (operation === 'createOrReplace') {\n return `Upserted:\\n - ${result.results.map((res) => res.id).join(joiner)}`\n }\n\n if (operation === 'create') {\n return `Created:\\n - ${result.results.map((res) => res.id).join(joiner)}`\n }\n\n // \"Missing\" (createIfNotExists)\n const created: string[] = []\n const skipped: string[] = []\n for (const res of result.results) {\n if (res.operation === 'update') {\n skipped.push(res.id)\n } else {\n created.push(res.id)\n }\n }\n\n if (created.length > 0 && skipped.length > 0) {\n return [\n `Created:\\n - ${created.join(joiner)}`,\n `Skipped (already exists):${joiner}${skipped.join(joiner)}`,\n ].join('\\n\\n')\n } else if (created.length > 0) {\n return `Created:\\n - ${created.join(joiner)}`\n }\n\n return `Skipped (already exists):\\n - ${skipped.join(joiner)}`\n}\n\nfunction getEditor() {\n const defaultEditor = /^win/.test(process.platform) ? 'notepad' : 'vim'\n // eslint-disable-next-line no-process-env\n const editor = process.env.VISUAL || process.env.EDITOR || defaultEditor\n const args = editor.split(/\\s+/)\n const bin = args.shift() || ''\n return {bin, args}\n}\n\nexport default createDocumentsCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\n\nconst description = `Downloads and validates all document specified in a workspace`\n\nconst helpText = `\nOptions\n -y, --yes Skips the first confirmation prompt.\n --workspace <name> The name of the workspace to use when downloading and validating all documents.\n --dataset <name> Override the dataset used. By default, this is derived from the given workspace.\n --file <filepath> Provide a path to either an .ndjson file or a tarball containing an .ndjson file.\n --format <pretty|ndjson|json> The output format used to print the found validation markers and report progress.\n --level <error|warning|info> The minimum level reported out. Defaults to warning.\n --max-custom-validation-concurrency <number> Specify how many custom validators can run concurrently. Defaults to 5.\n\nExamples\n # Validates all documents in a Sanity project with more than one workspace\n sanity documents validate --workspace default\n\n # Override the dataset specified in the workspace\n sanity documents validate --workspace default --dataset staging\n\n # Save the results of the report into a file\n sanity documents validate > report.txt\n\n # Report out info level validation markers too\n sanity documents validate --level info\n`\n\nconst validateDocumentsCommand: CliCommandDefinition = {\n name: 'validate',\n group: 'documents',\n signature: '',\n description,\n helpText,\n action: async (args, context) => {\n const mod = await import('../../actions/validation/validateAction')\n\n return mod.default(args, context)\n },\n} satisfies CliCommandDefinition\n\nexport default validateDocumentsCommand\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {StartDevServerCommandFlags} from '../../actions/dev/devAction'\n\nconst helpText = `\nNotes\n Changing the hostname or port number might require a new entry to the CORS-origins allow list.\n\nOptions\n --port <port> TCP port to start server on. [default: 3333]\n --host <host> The local network interface at which to listen. [default: \"127.0.0.1\"]\n\nExamples\n sanity dev --host=0.0.0.0\n sanity dev --port=1942\n`\n\nconst devCommand: CliCommandDefinition = {\n name: 'dev',\n signature: '[--port <port>] [--host <host>]',\n description: 'Starts a development server for the Sanity Studio',\n action: async (\n args: CliCommandArguments<StartDevServerCommandFlags>,\n context: CliCommandContext,\n ) => {\n const devAction = await getDevAction()\n\n return devAction(args, context)\n },\n helpText,\n}\n\nexport async function getDevAction(): Promise<\n (\n args: CliCommandArguments<StartDevServerCommandFlags>,\n context: CliCommandContext,\n ) => Promise<void>\n> {\n // NOTE: in dev-mode we want to include from `src` so we need to use `.ts` extension\n // NOTE: this `if` statement is not included in the output bundle\n if (__DEV__) {\n // eslint-disable-next-line import/extensions\n const mod: typeof import('../../actions/dev/devAction') = require('../../actions/dev/devAction.ts')\n\n return mod.default\n }\n\n const mod = await import('../../actions/dev/devAction')\n\n return mod.default\n}\n\nexport default devCommand\n","/* eslint-disable no-process-env */\nexport const isInteractive =\n process.stdout.isTTY && process.env.TERM !== 'dumb' && !('CI' in process.env)\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {StartPreviewServerCommandFlags} from '../../actions/preview/previewAction'\nimport {isInteractive} from '../../util/isInteractive'\nimport {getDevAction} from '../dev/devCommand'\n\nconst helpText = `\nNotes\n Changing the hostname or port number might require a new CORS-entry to be added.\n\nOptions\n --port <port> TCP port to start server on. [default: 3333]\n --host <host> The local network interface at which to listen. [default: \"127.0.0.1\"]\n\nExamples\n sanity start --host=0.0.0.0\n sanity start --port=1942\n sanity start some/build-output-dir\n`\n\nconst startCommand: CliCommandDefinition = {\n name: 'start',\n signature: '[BUILD_OUTPUT_DIR] [--port <port>] [--host <host>]',\n description: 'Alias of `sanity preview`',\n action: async (\n args: CliCommandArguments<StartPreviewServerCommandFlags>,\n context: CliCommandContext,\n ) => {\n const {output, chalk, prompt} = context\n const previewAction = await getPreviewAction()\n\n const warn = (msg: string) => output.warn(chalk.yellow.bgBlack(msg))\n const error = (msg: string) => output.warn(chalk.red.bgBlack(msg))\n warn('╭───────────────────────────────────────────────────────────╮')\n warn('│ │')\n warn(\"│ You're running Sanity Studio v3. In this version the │\")\n warn('│ [start] command is used to preview static builds. |')\n warn('│ │')\n warn('│ To run a development server, use the [npm run dev] or |')\n warn('│ [npx sanity dev] command instead. For more information, │')\n warn('│ see https://www.sanity.io/help/studio-v2-vs-v3 │')\n warn('│ │')\n warn('╰───────────────────────────────────────────────────────────╯')\n warn('') // Newline to separate from other output\n\n try {\n await previewAction(args, context)\n } catch (err) {\n if (err.name !== 'BUILD_NOT_FOUND') {\n throw err\n }\n\n error(err.message)\n error('\\n')\n\n const shouldRunDevServer =\n isInteractive &&\n (await prompt.single({\n message: 'Do you want to start a development server instead?',\n type: 'confirm',\n }))\n\n if (shouldRunDevServer) {\n const devAction = await getDevAction()\n await devAction(args, context)\n } else {\n // Indicate that this isn't an expected exit\n // eslint-disable-next-line no-process-exit\n process.exit(1)\n }\n }\n },\n helpText,\n}\n\nasync function getPreviewAction() {\n // NOTE: in dev-mode we want to include from `src` so we need to use `.ts` extension\n // NOTE: this `if` statement is not included in the output bundle\n if (__DEV__) {\n // eslint-disable-next-line import/extensions\n const mod: typeof import('../../actions/preview/previewAction') = require('../../actions/preview/previewAction.ts')\n\n return mod.default\n }\n\n const mod = await import('../../actions/preview/previewAction')\n\n return mod.default\n}\n\nexport default startCommand\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {StartPreviewServerCommandFlags} from '../../actions/preview/previewAction'\n\nconst helpText = `\nNotes\n Changing the hostname or port number might require a new entry to the CORS-origins allow list.\n\nOptions\n --port <port> TCP port to start server on. [default: 3333]\n --host <host> The local network interface at which to listen. [default: \"127.0.0.1\"]\n\nExamples\n sanity preview --host=0.0.0.0\n sanity preview --port=1942\n sanity preview some/build-output-dir\n`\n\nconst previewCommand: CliCommandDefinition = {\n name: 'preview',\n signature: '[BUILD_OUTPUT_DIR] [--port <port>] [--host <host>]',\n description: 'Starts a local web server for previewing production build',\n action: async (\n args: CliCommandArguments<StartPreviewServerCommandFlags>,\n context: CliCommandContext,\n ) => {\n const previewAction = await getPreviewAction()\n\n return previewAction(args, context)\n },\n helpText,\n}\n\nasync function getPreviewAction() {\n // NOTE: in dev-mode we want to include from `src` so we need to use `.ts` extension\n // NOTE: this `if` statement is not included in the output bundle\n if (__DEV__) {\n // eslint-disable-next-line import/extensions\n const mod: typeof import('../../actions/preview/previewAction') = require('../../actions/preview/previewAction.ts')\n\n return mod.default\n }\n\n const mod = await import('../../actions/preview/previewAction')\n\n return mod.default\n}\n\nexport default previewCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\n\nconst uninstallCommand: CliCommandDefinition = {\n name: 'uninstall',\n signature: '[plugin]',\n helpText: '',\n description: 'Removes a Sanity plugin from the current Sanity configuration',\n hideFromHelp: true,\n action: async (args, context) => {\n await context.output.error('`sanity uninstall` is no longer supported - use npm/yarn')\n },\n}\n\nexport default uninstallCommand\n","import type {CliCommandGroupDefinition} from '@sanity/cli'\n\nconst hookGroup: CliCommandGroupDefinition = {\n name: 'hook',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Interact with hooks in your project',\n}\n\nexport default hookGroup\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport open from 'open'\n\nconst createHookCommand: CliCommandDefinition = {\n name: 'create',\n group: 'hook',\n signature: '',\n helpText: '',\n description: 'Create a new hook for the given dataset',\n action: async (args, context) => {\n const {apiClient, output} = context\n const client = apiClient()\n\n const {projectId} = client.config()\n if (!projectId) {\n throw new Error('No project ID found')\n }\n\n const projectInfo = (await client.projects.getById(projectId)) || {}\n const organizationId = projectInfo.organizationId || 'personal'\n const manageUrl = `https://www.sanity.io/organizations/${organizationId}/project/${projectId}/api/webhooks/new`\n\n output.print(`Opening ${manageUrl}`)\n open(manageUrl)\n },\n}\n\nexport default createHookCommand\n","import type {CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {Hook} from './types'\n\nconst deleteHookCommand: CliCommandDefinition = {\n name: 'delete',\n group: 'hook',\n signature: '[NAME]',\n helpText: '',\n description: 'Delete a hook within your project',\n action: async (args, context) => {\n const {apiClient} = context\n const [name] = args.argsWithoutOptions\n const client = apiClient()\n\n const hookId = await promptForHook(name, context)\n try {\n await client\n .clone()\n .config({apiVersion: '2021-10-04'})\n .request({method: 'DELETE', uri: `/hooks/${hookId}`})\n } catch (err) {\n throw new Error(`Hook deletion failed:\\n${err.message}`)\n }\n },\n}\n\nasync function promptForHook(specified: string | undefined, context: CliCommandContext) {\n const specifiedName = specified && specified.toLowerCase()\n const {prompt, apiClient} = context\n const client = apiClient()\n\n const hooks = await client\n .clone()\n .config({apiVersion: '2021-10-04'})\n .request<Hook[]>({uri: '/hooks', json: true})\n\n if (specifiedName) {\n const selected = hooks.filter((hook) => hook.name.toLowerCase() === specifiedName)[0]\n if (!selected) {\n throw new Error(`Hook with name \"${specified} not found\"`)\n }\n\n return selected.id\n }\n\n const choices = hooks.map((hook) => ({value: hook.id, name: hook.name}))\n return prompt.single({\n message: 'Select hook to delete',\n type: 'list',\n choices,\n })\n}\n\nexport default deleteHookCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport type {Hook} from './types'\n\nconst listHooksCommand: CliCommandDefinition = {\n name: 'list',\n group: 'hook',\n signature: '',\n helpText: '',\n description: 'List hooks for a given project',\n action: async (args, context) => {\n const {apiClient, output} = context\n const client = apiClient()\n\n let hooks\n try {\n hooks = await client\n .clone()\n .config({apiVersion: '2021-10-04'})\n .request<Hook[]>({uri: '/hooks'})\n } catch (err) {\n throw new Error(`Hook list retrieval failed:\\n${err.message}`)\n }\n\n hooks.forEach((hook) => {\n output.print(`Name: ${hook.name}`)\n output.print(`Dataset: ${hook.dataset}`)\n output.print(`URL: ${hook.url}`)\n\n if (hook.type === 'document') {\n output.print(`HTTP method: ${hook.httpMethod}`)\n\n if (hook.description) {\n output.print(`Description: ${hook.description}`)\n }\n }\n\n output.print('')\n })\n },\n}\n\nexport default listHooksCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport type {DeliveryAttempt} from './types'\n\nconst printHookAttemptCommand: CliCommandDefinition = {\n name: 'attempt',\n group: 'hook',\n signature: 'ATTEMPT_ID',\n helpText: '',\n description: 'Print details of a given webhook delivery attempt',\n action: async (args, context) => {\n const {apiClient, output} = context\n const [attemptId] = args.argsWithoutOptions\n const client = apiClient()\n\n let attempt\n try {\n attempt = await client.request<DeliveryAttempt>({uri: `/hooks/attempts/${attemptId}`})\n } catch (err) {\n throw new Error(`Hook attempt retrieval failed:\\n${err.message}`)\n }\n\n const {createdAt, resultCode, resultBody, failureReason, inProgress} = attempt\n\n output.print(`Date: ${createdAt}`)\n output.print(`Status: ${getStatus(attempt)}`)\n output.print(`Status code: ${resultCode}`)\n\n if (attempt.isFailure) {\n output.print(`Failure: ${formatFailure(attempt)}`)\n }\n\n if (!inProgress && (!failureReason || failureReason === 'http')) {\n const body = resultBody ? `\\n---\\n${resultBody}\\n---\\n` : '<empty>'\n output.print(`Response body: ${body}`)\n }\n },\n}\n\nexport default printHookAttemptCommand\n\nexport function formatFailure(\n attempt: DeliveryAttempt,\n options: {includeHelp?: boolean} = {},\n): string {\n const {includeHelp} = options\n const {id, failureReason, resultCode} = attempt\n const help = includeHelp ? `(run \\`sanity hook attempt ${id}\\` for details)` : ''\n switch (failureReason) {\n case 'http':\n return `HTTP ${resultCode} ${help}`\n case 'timeout':\n return 'Request timed out'\n case 'network':\n return 'Network error'\n case 'other':\n default:\n }\n\n return 'Unknown error'\n}\n\nexport function getStatus(attempt: DeliveryAttempt): string {\n if (attempt.isFailure) {\n return 'Failed'\n }\n\n if (attempt.inProgress) {\n return 'In progress'\n }\n\n return 'Delivered'\n}\n","import {inspect} from 'util'\nimport type {CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport {groupBy} from 'lodash'\nimport {formatFailure} from './printHookAttemptCommand'\nimport type {DeliveryAttempt, Hook, HookMessage} from './types'\n\ninterface ListHookFlags {\n detailed?: boolean\n}\n\nconst listHookLogsCommand: CliCommandDefinition<ListHookFlags> = {\n name: 'logs',\n group: 'hook',\n signature: '[NAME]',\n helpText: '',\n description: 'List latest log entries for a given hook',\n action: async (args, context) => {\n const {apiClient} = context\n const flags = args.extOptions\n const [name] = args.argsWithoutOptions\n const client = apiClient()\n\n const hookId = await promptForHook(name, context)\n let messages\n let attempts\n try {\n messages = await client.request<HookMessage[]>({uri: `/hooks/${hookId}/messages`})\n attempts = await client.request<DeliveryAttempt[]>({uri: `/hooks/${hookId}/attempts`})\n } catch (err) {\n throw new Error(`Hook logs retrieval failed:\\n${err.message}`)\n }\n\n const groupedAttempts = groupBy(attempts, 'messageId')\n const populated = messages.map((msg): HookMessage & {attempts: DeliveryAttempt[]} => ({\n ...msg,\n attempts: groupedAttempts[msg.id],\n }))\n\n const totalMessages = messages.length - 1\n populated.forEach((message, i) => {\n printMessage(message, context, {detailed: flags.detailed})\n printSeparator(context, totalMessages === i)\n })\n },\n}\n\nexport default listHookLogsCommand\n\nasync function promptForHook(specified: string | undefined, context: CliCommandContext) {\n const specifiedName = specified && specified.toLowerCase()\n const {prompt, apiClient} = context\n const client = apiClient()\n\n const hooks = await client\n .clone()\n .config({apiVersion: '2021-10-04'})\n .request<Hook[]>({uri: '/hooks', json: true})\n\n if (specifiedName) {\n const selected = hooks.filter((hook) => hook.name.toLowerCase() === specifiedName)[0]\n if (!selected) {\n throw new Error(`Hook with name \"${specified} not found\"`)\n }\n\n return selected.id\n }\n\n if (hooks.length === 0) {\n throw new Error('No hooks currently registered')\n }\n\n if (hooks.length === 1) {\n return hooks[0].id\n }\n\n const choices = hooks.map((hook) => ({value: hook.id, name: hook.name}))\n return prompt.single({\n message: 'Select hook to list logs for',\n type: 'list',\n choices,\n })\n}\n\nfunction printSeparator(context: CliCommandContext, skip: boolean) {\n if (!skip) {\n context.output.print('---\\n')\n }\n}\n\nfunction printMessage(\n message: HookMessage & {attempts: DeliveryAttempt[]},\n context: CliCommandContext,\n options: {detailed?: boolean},\n) {\n const {detailed} = options\n const {output, chalk} = context\n\n output.print(`Date: ${message.createdAt}`)\n output.print(`Status: ${message.status}`)\n output.print(`Result code: ${message.resultCode}`)\n\n if (message.failureCount > 0) {\n output.print(`Failures: ${message.failureCount}`)\n }\n\n if (detailed) {\n output.print('Payload:')\n output.print(inspect(JSON.parse(message.payload), {colors: true}))\n }\n\n if (detailed && message.attempts) {\n output.print('Attempts:')\n message.attempts.forEach((attempt) => {\n const date = attempt.createdAt.replace(/\\.\\d+Z$/, 'Z')\n const prefix = ` [${date}]`\n\n if (attempt.inProgress) {\n output.print(`${prefix} ${chalk.yellow('Pending')}`)\n } else if (attempt.isFailure) {\n const failure = formatFailure(attempt, {includeHelp: true})\n output.print(`${prefix} ${chalk.yellow(`Failure: ${failure}`)}`)\n } else {\n output.print(`${prefix} Success: HTTP ${attempt.resultCode} (${attempt.duration}ms)`)\n }\n })\n }\n\n // Leave some empty space between messages\n output.print('')\n}\n","import type {CliCommandDefinition} from '@sanity/cli'\n\nconst helpText = `\nOptions\n --with-user-token Prime access token from CLI config into getCliClient()\n --mock-browser-env Mocks a browser-like environment using jsdom\n\nExamples\n # Run the script at some/script.js in Sanity context\n sanity exec some/script.js\n\n # Run the script at migrations/fullname.ts and configure \\`getCliClient()\\`\n # from \\`sanity/cli\\`to include the current user's token\n sanity exec migrations/fullname.ts --with-user-token\n\n # Run the script at scripts/browserScript.js in a mock browser environment\n sanity exec scripts/browserScript.js --mock-browser-env\n\n # Pass arbitrary arguments to scripts by separating them with a \\`--\\`.\n # Arguments are available in \\`process.argv\\` as they would in regular node scripts\n # eg the following command would yield a \\`process.argv\\` of:\n # ['/path/to/node', '/path/to/myscript.js', '--dry-run', 'positional-argument']\n sanity exec --mock-browser-env myscript.js -- --dry-run positional-argument\n`\n\nexport const execCommand: CliCommandDefinition = {\n name: 'exec',\n signature: 'SCRIPT',\n description: 'Runs a script in Sanity context',\n helpText,\n action: async (args, context) => {\n const mod = await import('../../actions/exec/execScript')\n\n return mod.default(args, context)\n },\n}\n\nexport default execCommand\n","import type {CliCommandGroupDefinition} from '@sanity/cli'\n\nconst corsGroup: CliCommandGroupDefinition = {\n name: 'cors',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Interact with CORS-entries for your project',\n}\n\nexport default corsGroup\n","import url from 'url'\nimport logSymbols from 'log-symbols'\nimport oneline from 'oneline'\nimport type {CliCommandContext, CliPrompter} from '@sanity/cli'\n\nconst wildcardReplacement = 'a-wild-card-r3pl4c3m3n7-a'\nconst portReplacement = ':7777777'\n\ninterface AddCorsOriginFlags {\n credentials?: boolean\n}\n\nexport async function addCorsOrigin(\n givenOrigin: string,\n flags: AddCorsOriginFlags,\n context: CliCommandContext,\n): Promise<boolean> {\n const {apiClient, prompt, output} = context\n const origin = await (givenOrigin\n ? filterAndValidateOrigin(givenOrigin)\n : promptForOrigin(prompt))\n\n const hasWildcard = origin.includes('*')\n if (hasWildcard && !(await promptForWildcardConfirmation(origin, context))) {\n return false\n }\n const allowCredentials =\n typeof flags.credentials === 'undefined'\n ? await promptForCredentials(hasWildcard, context)\n : Boolean(flags.credentials)\n\n if (givenOrigin !== origin) {\n output.print(`Normalized origin to ${origin}`)\n }\n\n const client = apiClient({\n requireUser: true,\n requireProject: true,\n })\n\n await client.request({\n method: 'POST',\n url: '/cors',\n body: {origin, allowCredentials},\n maxRedirects: 0,\n })\n\n return true\n}\n\nfunction promptForCredentials(hasWildcard: boolean, context: CliCommandContext): Promise<string> {\n const {prompt, output, chalk} = context\n\n output.print('')\n if (hasWildcard) {\n output.print(oneline`\n ${chalk.yellow(`${logSymbols.warning} Warning:`)}\n We ${chalk.red(chalk.underline('HIGHLY'))} recommend NOT allowing credentials\n on origins containing wildcards. If you are logged in to a studio, people will\n be able to send requests ${chalk.underline('on your behalf')} to read and modify\n data, from any matching origin. Please tread carefully!\n `)\n } else {\n output.print(oneline`\n ${chalk.yellow(`${logSymbols.warning} Warning:`)}\n Should this origin be allowed to send requests using authentication tokens or\n session cookies? Be aware that any script on this origin will be able to send\n requests ${chalk.underline('on your behalf')} to read and modify data if you\n are logged in to a Sanity studio. If this origin hosts a studio, you will need\n this, otherwise you should probably answer \"No\" (n).\n `)\n }\n\n output.print('')\n\n return prompt.single({\n type: 'confirm',\n message: oneline`\n Allow credentials to be sent from this origin? Please read the warning above.\n `,\n default: false,\n })\n}\n\nfunction promptForWildcardConfirmation(\n origin: string,\n context: CliCommandContext,\n): Promise<boolean> {\n const {prompt, output, chalk} = context\n\n output.print('')\n output.print(chalk.yellow(`${logSymbols.warning} Warning: Examples of allowed origins:`))\n\n if (origin === '*') {\n output.print('- http://www.some-malicious.site')\n output.print('- https://not.what-you-were-expecting.com')\n output.print('- https://high-traffic-site.com')\n output.print('- http://192.168.1.1:8080')\n } else {\n output.print(`- ${origin.replace(/:\\*/, ':1234').replace(/\\*/g, 'foo')}`)\n output.print(`- ${origin.replace(/:\\*/, ':3030').replace(/\\*/g, 'foo.bar')}`)\n }\n\n output.print('')\n\n return prompt.single({\n type: 'confirm',\n message: oneline`\n Using wildcards can be ${chalk.red('risky')}.\n Are you ${chalk.underline('absolutely sure')} you want to allow this origin?`,\n default: false,\n })\n}\n\nfunction promptForOrigin(prompt: CliPrompter): Promise<string> {\n return prompt.single({\n type: 'input',\n message: 'Origin (including protocol):',\n filter: filterOrigin,\n validate: (origin) => validateOrigin(origin, origin),\n })\n}\n\nfunction filterOrigin(origin: string): string | null {\n if (origin === '*' || origin === 'file:///*' || origin === 'null') {\n return origin\n }\n\n try {\n const example = origin\n .replace(/([^:])\\*/g, `$1${wildcardReplacement}`)\n .replace(/:\\*/, portReplacement)\n\n const parsed = url.parse(example)\n let host = parsed.host || ''\n if (/^https?:$/.test(parsed.protocol || '')) {\n host = host.replace(/:(80|443)$/, '')\n }\n\n host = host.replace(portReplacement, ':*').replace(new RegExp(wildcardReplacement, 'g'), '*')\n\n return `${parsed.protocol}//${host}`\n } catch (err) {\n return null\n }\n}\n\nfunction validateOrigin(origin: string | null, givenOrigin: string): true | string {\n if (origin === '*' || origin === 'file:///*' || origin === 'null') {\n return true\n }\n\n try {\n url.parse(origin || (0 as any as string)) // Use 0 to trigger error for unset values\n return true\n } catch (err) {\n // Fall-through to error\n }\n\n if (/^file:\\/\\//.test(givenOrigin)) {\n return `Only a local file wildcard is currently allowed: file:///*`\n }\n\n return `Invalid origin \"${givenOrigin}\", must include protocol (https://some.host)`\n}\n\nfunction filterAndValidateOrigin(givenOrigin: string): string {\n const origin = filterOrigin(givenOrigin)\n const result = validateOrigin(origin, givenOrigin)\n if (result !== true) {\n throw new Error(result)\n }\n\n if (!origin) {\n throw new Error('Invalid origin')\n }\n\n return origin\n}\n","import fs from 'fs'\nimport path from 'path'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport {addCorsOrigin} from '../../actions/cors/addCorsOrigin'\n\nconst helpText = `\nOptions\n --credentials Allow credentials (token/cookie) to be sent from this origin\n --no-credentials Disallow credentials (token/cookie) to be sent from this origin\n\nExamples\n sanity cors add\n sanity cors add http://localhost:3000 --no-credentials\n`\n\nconst addCorsOriginCommand: CliCommandDefinition = {\n name: 'add',\n group: 'cors',\n signature: '[ORIGIN]',\n helpText,\n description: 'Allow a new origin to use your project API through CORS',\n action: async (args, context) => {\n const {output} = context\n const [origin] = args.argsWithoutOptions\n\n if (!origin) {\n throw new Error('No origin specified, use `sanity cors add <origin-url>`')\n }\n\n const flags = args.extOptions\n\n // eslint-disable-next-line no-sync\n const isFile = fs.existsSync(path.join(process.cwd(), origin))\n if (isFile) {\n output.warn(`Origin \"${origin}?\" Remember to quote values (sanity cors add \"*\")`)\n }\n\n const success = await addCorsOrigin(origin, flags, context)\n if (success) {\n output.print('CORS origin added successfully')\n }\n },\n}\n\nexport default addCorsOriginCommand\n","import type {CliCommandDefinition} from '@sanity/cli'\nimport type {CorsOrigin} from './types'\n\nconst helpText = `\nExamples\n sanity cors list\n`\n\nconst listCorsOriginsCommand: CliCommandDefinition = {\n name: 'list',\n group: 'cors',\n signature: '',\n helpText,\n description: 'List all origins allowed to access the API for this project',\n action: async (args, context) => {\n const {output} = context\n const {apiClient} = context\n const client = apiClient({requireUser: true, requireProject: true})\n const origins = await client.request<CorsOrigin[]>({url: '/cors'})\n output.print(origins.map((origin) => origin.origin).join('\\n'))\n },\n}\n\nexport default listCorsOriginsCommand\n","import type {CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {CorsOrigin} from './types'\n\nconst helpText = `\nExamples\n sanity cors delete\n sanity cors delete http://localhost:3000\n`\n\nconst deleteCorsOriginCommand: CliCommandDefinition = {\n name: 'delete',\n group: 'cors',\n signature: '[ORIGIN]',\n helpText,\n description: 'Delete an existing CORS-origin from your project',\n action: async (args, context) => {\n const {output, apiClient} = context\n const [origin] = args.argsWithoutOptions\n const client = apiClient({requireUser: true, requireProject: true})\n const originId = await promptForOrigin(origin, context)\n try {\n await client.request({method: 'DELETE', uri: `/cors/${originId}`})\n output.print('Origin deleted')\n } catch (err) {\n throw new Error(`Origin deletion failed:\\n${err.message}`)\n }\n },\n}\n\nexport default deleteCorsOriginCommand\n\nasync function promptForOrigin(specified: string | undefined, context: CliCommandContext) {\n const specifiedOrigin = specified && specified.toLowerCase()\n const {prompt, apiClient} = context\n const client = apiClient({requireUser: true, requireProject: true})\n\n const origins = await client.request<CorsOrigin[]>({url: '/cors'})\n if (specifiedOrigin) {\n const selected = origins.filter((origin) => origin.origin.toLowerCase() === specifiedOrigin)[0]\n if (!selected) {\n throw new Error(`Origin \"${specified} not found\"`)\n }\n\n return selected.id\n }\n\n const choices = origins.map((origin) => ({value: origin.id, name: origin.origin}))\n return prompt.single({\n message: 'Select origin to delete',\n type: 'list',\n choices,\n })\n}\n","import type {CliCommandGroupDefinition} from '@sanity/cli'\n\nconst graphqlGroup: CliCommandGroupDefinition = {\n name: 'graphql',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Interact with GraphQL APIs',\n}\n\nexport default graphqlGroup\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\n\nconst helpText = `\nExamples\n sanity graphql list\n`\n\nconst listGraphQLAPIsCommand: CliCommandDefinition = {\n name: 'list',\n signature: '',\n group: 'graphql',\n description: 'Lists all the GraphQL endpoints deployed for this project',\n action: async (\n args: CliCommandArguments<Record<string, unknown>>,\n context: CliCommandContext,\n ) => {\n const mod = await import('../../actions/graphql/listApisAction')\n\n return mod.default(args, context)\n },\n helpText,\n}\n\nexport default listGraphQLAPIsCommand\n","import type {CliCommandContext, CliCommandDefinition} from '@sanity/cli'\n\nconst helpText = `\nOptions\n --dry-run Validate defined APIs, exiting with an error on breaking changes\n --force Deploy API without confirming breaking changes\n --api <api-id> Only deploy API with this ID. Can be specified multiple times.\n\nThe following options will override any setting from the CLI configuration file\n(sanity.cli.js/sanity.cli.ts) - and applies to ALL defined APIs defined in that\nconfiguration file. Tread with caution!\n\n --tag Deploy API(s) to given tag (defaults to 'default')\n --dataset <name> Deploy API for the given dataset\n --generation <gen1|gen2|gen3> API generation to deploy (defaults to 'gen3')\n --non-null-document-fields Use non-null document fields (_id, _type etc)\n --playground Enable GraphQL playground for easier debugging\n --no-playground Disable GraphQL playground\n --with-union-cache *Experimental:* Enable union cache that optimizes schema generation for schemas with many self referencing types\n\nExamples\n # Deploy all defined GraphQL APIs\n sanity graphql deploy\n\n # Validate defined GraphQL APIs, check for breaking changes, skip deploy\n sanity graphql deploy --dry-run\n\n # Deploy only the GraphQL APIs with the IDs \"staging\" and \"ios\"\n sanity graphql deploy --api staging --api ios\n\n # Deploy all defined GraphQL APIs, overriding any playground setting\n sanity graphql deploy --playground\n`\n\nconst deployGraphQLAPICommand: CliCommandDefinition = {\n name: 'deploy',\n signature: '',\n group: 'graphql',\n description: 'Deploy a GraphQL API from the current Sanity schema',\n action: async (args: {argv?: string[]}, context: CliCommandContext) => {\n const mod = await import('../../actions/graphql/deployApiAction')\n\n return mod.default(args, context)\n },\n helpText,\n}\n\nexport default deployGraphQLAPICommand\n","import type {CliCommandArguments, CliCommandContext, CliCommandDefinition} from '@sanity/cli'\nimport type {DeleteGraphQLApiFlags} from '../../actions/graphql/deleteApiAction'\n\nconst helpText = `\nOptions\n --api <api-id> Undeploy API with this ID (project, dataset and tag flags takes preference)\n --project <projectId> Project ID to delete GraphQL API for\n --dataset <dataset> Delete GraphQL API for the given dataset\n --tag <tag> Delete GraphQL API for the given tag (defaults to 'default')\n --force Skip confirmation prompt, forcefully undeploying the GraphQL API\n\nExamples\n sanity graphql undeploy\n sanity graphql undeploy --api ios\n sanity graphql undeploy --dataset staging\n sanity graphql undeploy --dataset staging --tag next\n`\n\nconst deleteGraphQLAPICommand: CliCommandDefinition = {\n name: 'undeploy',\n group: 'graphql',\n signature: '',\n description: 'Remove a deployed GraphQL API',\n action: async (args: CliCommandArguments<DeleteGraphQLApiFlags>, context: CliCommandContext) => {\n const mod = await import('../../actions/graphql/deleteApiAction')\n\n return mod.default(args, context)\n },\n helpText,\n}\n\nexport default deleteGraphQLAPICommand\n","import type {CliCommandGroupDefinition} from '@sanity/cli'\n\nexport const usersGroup: CliCommandGroupDefinition = {\n name: 'users',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Manage users of your project',\n}\n\nexport default usersGroup\n","export function prettifyQuotaError(message: string) {\n return (err: Error & {statusCode?: number}): Error & {statusCode?: number} => {\n if (err.statusCode === 402) {\n err.message = message\n throw err\n }\n\n throw err\n }\n}\n","import type {CliCommandDefinition, CliPrompter} from '@sanity/cli'\nimport {prettifyQuotaError} from '../../util/prettifyQuotaError'\nimport type {Role} from './types'\n\nconst helpText = `\nOptions\n --role Role to invite the user as\n\nExamples\n # Invite a new user to the project (prompt for details)\n sanity users invite\n\n # Send a new user invite to the email \"pippi@sanity.io\", prompt for role\n sanity users invite pippi@sanity.io\n\n # Send a new user invite to the email \"pippi@sanity.io\", as administrator\n sanity users invite pippi@sanity.io --role administrator\n`\n\ninterface InviteFlags {\n role?: string\n}\n\nconst inviteUserCommand: CliCommandDefinition<InviteFlags> = {\n name: 'invite',\n group: 'users',\n signature: '[EMAIL]',\n helpText,\n description: 'Invite a new user to the project',\n action: async (args, context) => {\n const {apiClient, output, prompt} = context\n const [selectedEmail] = args.argsWithoutOptions\n const flags = args.extOptions\n\n const client = apiClient().clone().config({useProjectHostname: false, apiVersion: '2021-06-07'})\n const {projectId} = client.config()\n const roles = (await client.request<Role[]>({uri: `/projects/${projectId}/roles`})).filter(\n (role) => role.appliesToUsers,\n )\n const email = selectedEmail || (await promptForEmail(prompt))\n const selectedRole = flags.role || (await promptForRole(prompt, roles))\n const role = roles.find(({name}) => name.toLowerCase() === selectedRole.toLowerCase())\n if (!role) {\n throw new Error(`Role name \"${selectedRole}\" not found`)\n }\n\n await client\n .clone()\n .request({\n method: 'POST',\n uri: `/invitations/project/${projectId}`,\n body: {email, role: role.name},\n useGlobalApi: true,\n maxRedirects: 0,\n })\n .catch(\n prettifyQuotaError(\n 'Project is already at user quota, add billing details to the project in order to allow overage charges.',\n ),\n )\n\n output.print(`Invitation sent to ${email}`)\n },\n}\n\nexport default inviteUserCommand\n\nfunction promptForEmail(prompt: CliPrompter): Promise<string> {\n return prompt.single({\n type: 'input',\n message: 'Email to invite:',\n filter: (val) => val.trim(),\n validate: (name) => {\n if (!name || !name.includes('@')) {\n return 'Invalid email'\n }\n\n return true\n },\n })\n}\n\nfunction promptForRole(prompt: CliPrompter, roles: Role[]): Promise<string> {\n return prompt.single({\n type: 'list',\n message: 'Which role should the user have?',\n choices: roles.map((role) => ({\n value: role.name,\n name: `${role.title} (${role.description})`,\n })),\n })\n}\n","import {sortBy, size} from 'lodash'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport type {Invite, PartialProjectResponse, User} from './types'\n\nconst sortFields = ['id', 'name', 'role', 'date']\n\nconst helpText = `\nOptions\n --no-invitations Don't include pending invitations\n --no-robots Don't include robots (token users)\n --sort <field> Sort users by specified column: ${sortFields.join(', ')}\n --order <asc/desc> Sort output ascending/descending\n\nExamples\n # List all users of the project\n sanity users list\n\n # List all users of the project, but exclude pending invitations and robots\n sanity users list --no-invitations --no-robots\n\n # List all users, sorted by role\n sanity users list --sort role\n`\n\nconst listUsersCommand: CliCommandDefinition = {\n name: 'list',\n group: 'users',\n signature: '',\n helpText,\n description: 'List all users of the project',\n action: async (args, context) => {\n const {apiClient, output, chalk} = context\n const {sort, order, robots, invitations} = {\n sort: 'date',\n order: 'asc',\n robots: true,\n invitations: true,\n ...args.extOptions,\n }\n\n if (!sortFields.includes(sort)) {\n throw new Error(`Can't sort by field \"${sort}\". Must be one of ${sortFields.join(', ')}`)\n }\n\n if (order !== 'asc' && order !== 'desc') {\n throw new Error(`Unknown sort order \"${order}\", must be either \"asc\" or \"desc\"`)\n }\n\n const client = apiClient()\n const globalClient = client.clone().config({useProjectHostname: false})\n const {projectId} = client.config()\n\n const useGlobalApi = true\n const [pendingInvitations, project] = await Promise.all([\n invitations\n ? globalClient\n .request<Invite[]>({uri: `/invitations/project/${projectId}`, useGlobalApi})\n .then(getPendingInvitations)\n : [],\n globalClient.request<PartialProjectResponse>({uri: `/projects/${projectId}`, useGlobalApi}),\n ])\n\n const memberIds = project.members.map((member) => member.id)\n const users = await globalClient\n .request<User | User[]>({uri: `/users/${memberIds.join(',')}`, useGlobalApi})\n .then((user) => (Array.isArray(user) ? user : [user]))\n\n const projectMembers = project.members\n .map((member) => ({\n ...member,\n ...getUserProps(users.find((candidate) => candidate.id === member.id)),\n }))\n .filter((member) => !member.isRobot || robots)\n\n const members = [...projectMembers, ...pendingInvitations]\n\n const ordered = sortBy(\n members.map(({id, name, role, date}) => [id, name, role, date]),\n [sortFields.indexOf(sort)],\n )\n\n const rows = order === 'asc' ? ordered : ordered.reverse()\n\n const maxWidths = rows.reduce(\n (max, row) => row.map((current, index) => Math.max(size(current), max[index])),\n sortFields.map((str) => size(str)),\n )\n\n const printRow = (row: string[]) => {\n const isInvite = row[0] === '<pending>'\n const textRow = row.map((col, i) => `${col}`.padEnd(maxWidths[i])).join(' ')\n return isInvite ? chalk.dim(textRow) : textRow\n }\n\n output.print(chalk.cyan(printRow(sortFields)))\n rows.forEach((row) => output.print(printRow(row)))\n },\n}\n\nfunction getUserProps(user: User | undefined) {\n const {displayName: name, createdAt: date} = user || {}\n return {name: name || '', date: date || ''}\n}\n\nfunction getPendingInvitations(invitations: Invite[]) {\n return invitations\n .filter((invite) => !invite.isAccepted && !invite.isRevoked && !invite.acceptedByUserId)\n .map((invite) => ({\n id: '<pending>',\n name: invite.email,\n role: invite.role,\n date: invite.createdAt,\n }))\n}\n\nexport default listUsersCommand\n","export default {\n name: 'migration',\n signature: '[COMMAND]',\n isGroupRoot: true,\n description: 'Scaffold and run migrations against your project dataset',\n}\n","export const MIGRATIONS_DIRECTORY = 'migrations'\nexport const MIGRATION_SCRIPT_EXTENSIONS = ['mjs', 'js', 'ts', 'cjs']\n","export const renameType = ({\n migrationName,\n documentTypes,\n}: {\n migrationName: string\n documentTypes: string[]\n}) => `import {defineMigration, at, set} from 'sanity/migrate'\n\nconst oldType = 'old'\nconst newType = 'new'\n\nexport default defineMigration({\n name: '${migrationName}',\n${\n documentTypes.length > 0\n ? ` documentTypes: [${documentTypes.map((t) => JSON.stringify(t)).join(', ')}],\\n`\n : ''\n}\n migrate: {\n object(object, path, context) {\n if (object._type === oldType) {\n return at('_type', set(newType))\n }\n }\n }\n})\n`\n","export const stringToPTE = ({\n migrationName,\n documentTypes,\n}: {\n migrationName: string\n documentTypes: string[]\n}) => `import {pathsAreEqual, stringToPath} from 'sanity'\nimport {defineMigration, set} from 'sanity/migrate'\n\nconst targetPath = stringToPath('some.path')\n\nexport default defineMigration({\n name: '${migrationName}',\n${\n documentTypes.length > 0\n ? ` documentTypes: [${documentTypes.map((t) => JSON.stringify(t)).join(', ')}],\\n`\n : ''\n}\n migrate: {\n string(node, path, ctx) {\n if (pathsAreEqual(path, targetPath)) {\n return set([\n {\n style: 'normal',\n _type: 'block',\n children: [\n {\n _type: 'span',\n marks: [],\n text: node,\n },\n ],\n markDefs: [],\n },\n ])\n }\n },\n },\n})\n`\n","export const minimalSimple = ({\n migrationName,\n documentTypes,\n}: {\n migrationName: string\n documentTypes: string[]\n}) => `import {defineMigration} from 'sanity/migrate'\n\nexport default defineMigration({\n name: '${migrationName}',\n${\n documentTypes.length > 0\n ? ` documentTypes: [${documentTypes.map((t) => JSON.stringify(t)).join(', ')}],\\n`\n : ''\n}\n migrate: {\n document(doc, context) {\n // this will be called for every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n node(node, path, context) {\n // this will be called for every node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n object(node, path, context) {\n // this will be called for every object node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n array(node, path, context) {\n // this will be called for every array node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n string(node, path, context) {\n // this will be called for every string node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n number(node, path, context) {\n // this will be called for every number node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n boolean(node, path, context) {\n // this will be called for every boolean node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n null(node, path, context) {\n // this will be called for every null node in every document of the matching type\n // any patch returned will be applied to the document\n // you can also return mutations that touches other documents\n },\n },\n})\n`\n","export const minimalAdvanced = ({\n migrationName,\n documentTypes,\n}: {\n migrationName: string\n documentTypes: string[]\n}) => `import {defineMigration, patch, at, setIfMissing} from 'sanity/migrate'\n\n/**\n * this migration will set \\`Default title\\` on all documents that are missing a title\n * and make \\`true\\` the default value for the \\`enabled\\` field\n */\nexport default defineMigration({\n name: '${migrationName}',\n${\n documentTypes.length > 0\n ? ` documentTypes: [${documentTypes.map((t) => JSON.stringify(t)).join(', ')}],\\n`\n : ''\n}\n async *migrate(documents, context) {\n for await (const document of documents()) {\n yield patch(document._id, [\n at('title', setIfMissing('Default title')),\n at('enabled', setIfMissing(true)),\n ])\n }\n }\n})\n`\n","export const renameField = ({\n migrationName,\n documentTypes,\n}: {\n migrationName: string\n documentTypes: string[]\n}) => `import {defineMigration, at, setIfMissing, unset} from 'sanity/migrate'\n\nconst from = 'oldFieldName'\nconst to = 'newFieldName'\n\nexport default defineMigration({\n name: '${migrationName}',\n${\n documentTypes.length > 0\n ? ` documentTypes: [${documentTypes.map((t) => JSON.stringify(t)).join(', ')}],\\n`\n : ''\n}\n migrate: {\n document(doc, path, context) {\n return [\n at(to, setIfMissing(doc[from]))\n at(from, unset())\n ]\n }\n }\n})\n`\n","import path from 'path'\nimport fs from 'node:fs/promises'\nimport {existsSync} from 'node:fs'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport deburr from 'lodash/deburr'\nimport mkdirp from 'mkdirp'\nimport {MIGRATIONS_DIRECTORY} from './constants'\nimport {renameType} from './templates/renameType'\nimport {stringToPTE} from './templates/stringToPTE'\nimport {minimalSimple} from './templates/minimalSimple'\nimport {minimalAdvanced} from './templates/minimalAdvanced'\nimport {renameField} from './templates/renameField'\n\nconst helpText = `\nCreate a new migration within your project\n`\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface CreateMigrationFlags {}\n\nconst TEMPLATES = [\n {name: 'Minimalistic migration to get you started', template: minimalSimple},\n {name: 'Rename an object type', template: renameType},\n {name: 'Rename a field', template: renameField},\n {name: 'Convert string field to Portable Text', template: stringToPTE},\n {\n name: 'Advanced template using async iterators providing more fine grained control',\n template: minimalAdvanced,\n },\n]\n\nconst createMigrationCommand: CliCommandDefinition<CreateMigrationFlags> = {\n name: 'create',\n group: 'migration',\n signature: '[NAME]',\n helpText,\n description: 'Create a new content migration within your project',\n action: async (args, context) => {\n const {output, prompt, workDir, chalk} = context\n\n let name = ''\n while (!name.trim()) {\n name = await prompt.single({\n type: 'input',\n suffix: ' (e.g. rename field from location to address)',\n message: 'Name of migration',\n })\n if (!name.trim()) {\n output.print(chalk.red('Name cannot be empty'))\n }\n }\n const types = await prompt.single({\n type: 'input',\n suffix: ' (optional)',\n message: 'Type of documents to migrate. You can add multiple types separated by comma',\n })\n\n const templatesByName = Object.fromEntries(TEMPLATES.map((t) => [t.name, t]))\n const template = await prompt.single({\n type: 'list',\n message: 'Select a template',\n choices: TEMPLATES.map((definedTemplate) => ({\n name: definedTemplate.name,\n value: definedTemplate.name,\n })),\n })\n\n const sluggedName = deburr(name.toLowerCase())\n .replace(/\\s+/g, '-')\n .replace(/[^a-z0-9-]/g, '')\n\n const destDir = path.join(MIGRATIONS_DIRECTORY, sluggedName)\n if (existsSync(destDir)) {\n if (\n !(await prompt.single({\n type: 'confirm',\n message: `Migration directory ./${destDir} already exists. Overwrite?`,\n default: false,\n }))\n ) {\n return\n }\n }\n mkdirp.sync(destDir)\n\n const renderedTemplate = (templatesByName[template].template || minimalSimple)({\n migrationName: name,\n documentTypes: types\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean),\n })\n\n const definitionFile = path.join(destDir, 'index.ts')\n\n await fs.writeFile(path.join(workDir, definitionFile), renderedTemplate)\n // To dry run it, run \\`sanity migration run ${sluggedName}\\``)\n output.print()\n output.print(`${chalk.green('✓')} Migration created!`)\n output.print()\n output.print('Next steps:')\n output.print(\n `Open ./${chalk.bold(\n definitionFile,\n )} in your code editor and write the code for your migration.`,\n )\n output.print(\n `Dry run the migration with:\\n\\`${chalk.bold(\n `sanity migration run ${sluggedName} --dry --project-id=<projectId> --dataset <dataset> `,\n )}\\``,\n )\n output.print(\n `Run the migration against a dataset with:\\n \\`${chalk.bold(\n `sanity migration run ${sluggedName} --project-id=<projectId> --dataset <dataset> --no-dry`,\n )}\\``,\n )\n output.print()\n output.print(\n `👉 Learn more about schema and content migrations at ${chalk.bold(\n 'https://www.sanity.io/docs/schema-and-content-migrations',\n )}`,\n )\n },\n}\nexport default createMigrationCommand\n","// An example of a compact formatter\n\nimport {Mutation, NodePatch, Transaction} from '@sanity/migrate'\n\nimport {Chalk} from 'chalk'\nimport {KeyedSegment} from '@sanity/types'\nimport {toString as pathToString} from '@sanity/util/paths'\n\nexport type ItemRef = string | number\n\nexport function format(chalk: Chalk, mutations: Mutation[]): string {\n return mutations.flatMap((m) => formatTransaction(chalk, m)).join('\\n')\n}\n\nfunction encodeItemRef(ref: number | KeyedSegment): ItemRef {\n return typeof ref === 'number' ? ref : ref._key\n}\n\nexport function formatTransaction(chalk: Chalk, mutation: Mutation | Transaction): string {\n if (mutation.type === 'transaction') {\n return mutation.mutations.flatMap((m) => formatTransaction(chalk, m)).join('\\n')\n }\n if (\n mutation.type === 'create' ||\n mutation.type === 'createIfNotExists' ||\n mutation.type === 'createOrReplace'\n ) {\n return [chalk.bold(mutation.type), ': ', JSON.stringify(mutation.document)].join('')\n }\n if (mutation.type === 'delete') {\n return [`${chalk.red.bold('delete')} `, mutation.id].join(': ')\n }\n if (mutation.type === 'patch') {\n const ifRevision = mutation.options?.ifRevision\n return [\n chalk.blue.bold('patch'),\n '',\n `(${mutation.id})`,\n ifRevision ? ` (if revision==${ifRevision})` : '',\n ':\\n',\n mutation.patches.map((nodePatch) => ` ${formatPatchMutation(chalk, nodePatch)}`).join('\\n'),\n ].join('')\n }\n\n //@ts-expect-error - all cases are covered\n throw new Error(`Invalid mutation type: ${mutation.type}`)\n}\n\nfunction formatPatchMutation(chalk: Chalk, patch: NodePatch<any>): string {\n const {op} = patch\n const path = chalk.grey(pathToString(patch.path))\n const formattedType = chalk.bold(op.type)\n if (op.type === 'unset') {\n return [path, `${formattedType}()`].join(': ')\n }\n if (op.type === 'diffMatchPatch') {\n return [path, `${formattedType}(${op.value})`].join(': ')\n }\n if (op.type === 'inc' || op.type === 'dec') {\n return [path, `${formattedType}(${op.amount})`].join(': ')\n }\n if (op.type === 'set' || op.type === 'setIfMissing') {\n return [path, `${formattedType}(${JSON.stringify(op.value)})`].join(': ')\n }\n if (op.type === 'assign') {\n return [path, `${formattedType}(${JSON.stringify(op.value)})`].join(': ')\n }\n if (op.type === 'unassign') {\n return [path, `${formattedType}(${JSON.stringify(op.keys)})`].join(': ')\n }\n if (op.type === 'insert' || op.type === 'upsert') {\n return [\n path,\n `${formattedType}(${op.position}, ${encodeItemRef(op.referenceItem)}, ${JSON.stringify(\n op.items,\n )})`,\n ].join(': ')\n }\n if (op.type === 'replace') {\n return [\n path,\n `${formattedType}(${encodeItemRef(op.referenceItem)}, ${JSON.stringify(op.items)})`,\n ].join(': ')\n }\n if (op.type === 'truncate') {\n return [path, `${formattedType}(${op.startIndex}, ${op.endIndex}`].join(': ')\n }\n // @ts-expect-error all cases are covered\n throw new Error(`Invalid operation type: ${op.type}`)\n}\n","import path from 'path'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport {register} from 'esbuild-register/dist/node'\nimport {\n DEFAULT_MUTATION_CONCURRENCY,\n dryRun,\n MAX_MUTATION_CONCURRENCY,\n Migration,\n MigrationProgress,\n run,\n runFromArchive,\n} from '@sanity/migrate'\n\nimport {debug} from '../../debug'\nimport {formatTransaction} from './utils/mutationFormatter'\n\nconst helpText = `\nOptions\n --dry <boolean> Whether or not to dry run the migration. Default to true, to actually run the migration, pass --no-dry\n --from-export <export.tar.gz> Use a local dataset export as source for migration instead of calling the Sanity API. Note: this is only supported for dry runs.\n --concurrency <concurrent> How many mutation requests to run in parallel. Must be between 1 and ${MAX_MUTATION_CONCURRENCY}. Default: ${DEFAULT_MUTATION_CONCURRENCY}.\n --no-progress Don't output progress. Useful if you want debug your migration script and see the output of console.log() statements.\n --dataset <dataset> Dataset to migrate. Defaults to the dataset configured in your Sanity CLI config.\n --projectId <project id> Project ID of the dataset to migrate. Defaults to the projectId configured in your Sanity CLI config.\n --no-confirm Skip the confirmation prompt before running the migration. Make sure you know what you're doing before using this flag.\n\n\nExamples\n # dry run the migration\n sanity migration run <name>\n\n # execute the migration against a dataset\n sanity migration run <name> --no-dry --projectId xyz --dataset staging\n\n # run the migration using the dataset export as the source\n sanity migration run <name> --dry false --from-export=production.tar.gz --projectId xyz --dataset staging\n`\n\ninterface CreateFlags {\n dry?: boolean\n 'from-export'?: string\n concurrency?: number\n progress?: boolean\n dataset?: string\n 'project-id'?: string\n confirm?: boolean\n}\n\nconst tryExtensions = ['mjs', 'js', 'ts', 'cjs']\n\nfunction resolveMigrationScript(workDir: string, migrationName: string) {\n return [migrationName, path.join(migrationName, 'index')].flatMap((location) =>\n tryExtensions.map((ext) => {\n const relativePath = path.join('migrations', `${location}.${ext}`)\n const absolutePath = path.resolve(workDir, relativePath)\n let mod\n try {\n // eslint-disable-next-line import/no-dynamic-require\n mod = require(absolutePath)\n } catch (err) {\n // console.error(err)\n }\n return {relativePath, absolutePath, mod}\n }),\n )\n}\n\nconst createMigrationCommand: CliCommandDefinition<CreateFlags> = {\n name: 'run',\n group: 'migration',\n signature: '[NAME] [MIGRATION NAME]',\n helpText,\n description: 'Run a migration against a dataset',\n action: async (args, context) => {\n const {apiClient, output, prompt, chalk, workDir} = context\n const [migrationName] = args.argsWithoutOptions\n\n const [fromExport, dry, showProgress, dataset, projectId, shouldConfirm] = [\n args.extOptions['from-export'],\n args.extOptions.dry !== false,\n args.extOptions.progress !== false,\n args.extOptions.dataset,\n args.extOptions['project-id'],\n args.extOptions.confirm !== false,\n ]\n\n if ((dataset && !projectId) || (projectId && !dataset)) {\n throw new Error('If either --dataset or --projectId is provided, both must be provided')\n }\n\n if (!migrationName) {\n throw new Error('MIGRATION NAME must be provided. `sanity migration run <name>`')\n }\n\n if (!__DEV__) {\n register({\n target: `node${process.version.slice(1)}`,\n })\n }\n\n const candidates = resolveMigrationScript(workDir, migrationName)\n\n const resolvedScripts = candidates.filter((candidate) => candidate!.mod?.default)\n\n if (resolvedScripts.length > 1) {\n // todo: consider prompt user about which one to run? note: it's likely a mistake if multiple files resolve to the same name\n throw new Error(\n `Found multiple migrations for \"${migrationName}\" in current directory ${candidates\n .map((candidate) => candidate!.relativePath)\n .join(', ')}`,\n )\n }\n if (resolvedScripts.length === 0) {\n throw new Error(\n `No migration found for \"${migrationName}\" in current directory. Make sure that the migration file exists and exports a valid migration as its default export.\\n\n Tried the following files:\\n -${candidates\n .map((candidate) => candidate.relativePath)\n .join('\\n - ')}`,\n )\n }\n\n const script = resolvedScripts[0]!\n\n const mod = script!.mod\n if ('up' in mod || 'down' in mod) {\n // todo: consider adding support for up/down as separate named exports\n // For now, make sure we reserve the names for future use\n throw new Error(\n 'Only \"up\" migrations are supported at this time, please use a default export',\n )\n }\n\n const migration: Migration = mod.default\n\n if (fromExport && !dry) {\n throw new Error('Can only dry run migrations from a dataset export file')\n }\n\n const concurrency = args.extOptions.concurrency\n if (concurrency !== undefined) {\n if (concurrency > MAX_MUTATION_CONCURRENCY) {\n throw new Error(\n `Concurrency exceeds the maximum allowed value of ${MAX_MUTATION_CONCURRENCY}`,\n )\n }\n\n if (concurrency === 0) {\n throw new Error(`Concurrency must be a positive number, got ${concurrency}`)\n }\n }\n\n const projectConfig = apiClient({\n requireUser: true,\n requireProject: true,\n }).config()\n\n const apiConfig = {\n dataset: dataset ?? projectConfig.dataset!,\n projectId: projectId ?? projectConfig.projectId!,\n apiHost: projectConfig.apiHost!,\n token: projectConfig.token!,\n apiVersion: 'v2024-01-29',\n } as const\n\n if (dry) {\n const spinner = output.spinner(`Running migration \"${migrationName}\" in dry mode`).start()\n if (fromExport) {\n await runFromArchive(migration, fromExport, {\n api: apiConfig,\n concurrency,\n onProgress: createProgress(spinner),\n })\n return\n }\n\n dryRun({api: apiConfig}, migration)\n\n spinner.stop()\n } else {\n const response =\n shouldConfirm &&\n (await prompt.single<boolean>({\n message: `This migration will run on the ${chalk.yellow(\n chalk.bold(apiConfig.dataset),\n )} dataset in ${chalk.yellow(chalk.bold(apiConfig.projectId))} project. Are you sure?`,\n type: 'confirm',\n }))\n\n if (response === false) {\n debug('User aborted migration')\n return\n }\n\n const spinner = output.spinner(`Running migration \"${migrationName}\"`).start()\n await run({api: apiConfig, concurrency, onProgress: createProgress(spinner)}, migration)\n spinner.stop()\n }\n\n function createProgress(spinner: ReturnType<typeof output.spinner>) {\n return function onProgress(progress: MigrationProgress) {\n if (!showProgress) {\n spinner.stop()\n return\n }\n if (progress.done) {\n spinner.text = `Migration \"${migrationName}\" completed.\n\n Project id: ${chalk.bold(projectId)}\n Dataset: ${chalk.bold(dataset)}\n\n ${progress.documents} documents processed.\n ${progress.mutations} mutations generated.\n ${chalk.green(progress.completedTransactions.length)} transactions committed.`\n spinner.stopAndPersist({symbol: chalk.green('✔')})\n return\n }\n\n ;[null, ...progress.currentTransactions].forEach((transaction) => {\n spinner.text = `Running migration \"${migrationName}\"…\n\n Project id: ${chalk.bold(projectId)}\n Dataset: ${chalk.bold(dataset)}\n Document type: ${chalk.bold(migration.documentTypes?.join(','))}\n\n ${progress.documents} documents processed…\n ${progress.mutations} mutations generated…\n ${chalk.blue(progress.pending)} requests pending…\n ${chalk.green(progress.completedTransactions.length)} transactions committed.\n\n ${transaction && !progress.done ? `» ${chalk.grey(formatTransaction(chalk, transaction))}` : ''}`\n })\n }\n }\n },\n}\n\nexport default createMigrationCommand\n","import path from 'path'\n\nimport {MIGRATION_SCRIPT_EXTENSIONS, MIGRATIONS_DIRECTORY} from './constants'\n\nexport function resolveMigrationScript(workDir: string, migrationName: string) {\n return [migrationName, path.join(migrationName, 'index')].flatMap((location) =>\n MIGRATION_SCRIPT_EXTENSIONS.map((ext) => {\n const relativePath = path.join(MIGRATIONS_DIRECTORY, `${location}.${ext}`)\n const absolutePath = path.resolve(workDir, relativePath)\n let mod\n try {\n // eslint-disable-next-line import/no-dynamic-require\n mod = require(absolutePath)\n } catch (err) {\n // console.error(err)\n }\n return {relativePath, absolutePath, mod}\n }),\n )\n}\n","import path from 'path'\nimport {readdir} from 'node:fs/promises'\nimport type {CliCommandDefinition} from '@sanity/cli'\nimport {register} from 'esbuild-register/dist/node'\nimport {Migration} from '@sanity/migrate'\nimport {Table} from 'console-table-printer'\nimport {resolveMigrationScript} from './utils'\nimport {MIGRATIONS_DIRECTORY} from './constants'\n\nconst helpText = ``\n\ninterface CreateFlags {\n dry?: 'true' | 'false' | 'yes' | 'no'\n 'from-export'?: string\n}\n\nconst createMigrationCommand: CliCommandDefinition<CreateFlags> = {\n name: 'list',\n group: 'migration',\n signature: '[NAME]',\n helpText,\n description: 'List available migrations',\n action: async (args, context) => {\n const {output, workDir} = context\n\n if (!__DEV__) {\n register({\n target: `node${process.version.slice(1)}`,\n })\n }\n\n const directories = (\n await readdir(path.join(workDir, MIGRATIONS_DIRECTORY), {withFileTypes: true})\n ).filter((ent) => ent.isDirectory())\n\n const migrationModules = directories\n .map((ent) => {\n const candidates = resolveMigrationScript(workDir, ent.name)\n const found = candidates.find((candidate) => candidate.mod?.default)\n if (!found) {\n return null\n }\n return {\n dirname: ent.name,\n migration: found.mod.default as Migration,\n }\n })\n .filter(Boolean) as {dirname: string; migration: Migration}[]\n const table = new Table({\n title: `Found ${migrationModules.length} migrations in project`,\n columns: [\n {name: 'id', title: 'ID', alignment: 'left'},\n {name: 'name', title: 'Name', alignment: 'left'},\n ],\n })\n\n migrationModules.forEach((definedMigration) => {\n table.addRow({id: definedMigration.dirname, name: definedMigration.migration.name})\n })\n table.printTable()\n output.print(`\\nRun \"sanity migration run <MIGRATION ID>\" to run a migration`)\n },\n}\n\nexport default createMigrationCommand\n","import type {CliCommandDefinition, CliCommandGroupDefinition} from '@sanity/cli'\nimport buildCommand from './build/buildCommand'\nimport checkCommand from './check/checkCommand'\nimport configCheckCommand from './config/configCheckCommand'\nimport datasetGroup from './dataset/datasetGroup'\nimport deployCommand from './deploy/deployCommand'\nimport undeployCommand from './deploy/undeployCommand'\nimport listDatasetsCommand from './dataset/listDatasetsCommand'\nimport createDatasetCommand from './dataset/createDatasetCommand'\nimport datasetVisibilityCommand from './dataset/datasetVisibilityCommand'\nimport deleteDatasetCommand from './dataset/deleteDatasetCommand'\nimport exportDatasetCommand from './dataset/exportDatasetCommand'\nimport importDatasetCommand from './dataset/importDatasetCommand'\nimport copyDatasetCommand from './dataset/copyDatasetCommand'\nimport aliasDatasetCommand from './dataset/alias/aliasCommands'\nimport documentsGroup from './documents/documentsGroup'\nimport getDocumentsCommand from './documents/getDocumentsCommand'\nimport queryDocumentsCommand from './documents/queryDocumentsCommand'\nimport deleteDocumentsCommand from './documents/deleteDocumentsCommand'\nimport createDocumentsCommand from './documents/createDocumentsCommand'\nimport validateDocumentsCommand from './documents/validateDocumentsCommand'\nimport devCommand from './dev/devCommand'\nimport startCommand from './start/startCommand'\nimport previewCommand from './preview/previewCommand'\nimport uninstallCommand from './uninstall/uninstallCommand'\nimport hookGroup from './hook/hookGroup'\nimport createHookCommand from './hook/createHookCommand'\nimport deleteHookCommand from './hook/deleteHookCommand'\nimport listHooksCommand from './hook/listHooksCommand'\nimport printHookAttemptCommand from './hook/printHookAttemptCommand'\nimport listHookLogsCommand from './hook/listHookLogsCommand'\nimport execCommand from './exec/execCommand'\nimport corsGroup from './cors/corsGroup'\nimport addCorsOriginCommand from './cors/addCorsOriginCommand'\nimport listCorsOriginsCommand from './cors/listCorsOriginsCommand'\nimport deleteCorsOriginCommand from './cors/deleteCorsOriginCommand'\nimport graphqlGroup from './graphql/graphqlGroup'\nimport listGraphQLAPIsCommand from './graphql/listGraphQLAPIsCommand'\nimport deployGraphQLAPICommand from './graphql/deployGraphQLAPICommand'\nimport deleteGraphQLAPICommand from './graphql/deleteGraphQLAPICommand'\nimport usersGroup from './users/usersGroup'\nimport inviteUserCommand from './users/inviteUserCommand'\nimport listUsersCommand from './users/listUsersCommand'\nimport migrationGroup from './migration/migrationGroup'\nimport createMigrationCommand from './migration/createMigrationCommand'\nimport runMigrationCommand from './migration/runMigrationCommand'\nimport listMigrationsCommand from './migration/listMigrationsCommand'\n\nconst commands: (CliCommandDefinition | CliCommandGroupDefinition)[] = [\n buildCommand,\n checkCommand,\n configCheckCommand,\n datasetGroup,\n deployCommand,\n undeployCommand,\n listDatasetsCommand,\n createDatasetCommand,\n datasetVisibilityCommand,\n exportDatasetCommand,\n importDatasetCommand,\n deleteDatasetCommand,\n copyDatasetCommand,\n aliasDatasetCommand,\n corsGroup,\n listCorsOriginsCommand,\n addCorsOriginCommand,\n deleteCorsOriginCommand,\n usersGroup,\n inviteUserCommand,\n listUsersCommand,\n hookGroup,\n listHooksCommand,\n createHookCommand,\n migrationGroup,\n createMigrationCommand,\n runMigrationCommand,\n listMigrationsCommand,\n deleteHookCommand,\n listHookLogsCommand,\n printHookAttemptCommand,\n documentsGroup,\n getDocumentsCommand,\n queryDocumentsCommand,\n deleteDocumentsCommand,\n createDocumentsCommand,\n validateDocumentsCommand,\n graphqlGroup,\n listGraphQLAPIsCommand,\n deployGraphQLAPICommand,\n deleteGraphQLAPICommand,\n devCommand,\n startCommand,\n previewCommand,\n uninstallCommand,\n execCommand,\n]\n\n/**\n * @deprecated Not actually deprecated, but these are internals and should not be relied upon outside of the Sanity team\n * @internal\n */\nexport const cliProjectCommands = {\n requiredCliVersionRange: '^3.0.0',\n commands,\n}\n"],"names":["helpText","buildCommand","name","signature","description","action","args","context","overrides","buildAction","getBuildAction","mod","Promise","resolve","then","require","default","checkCommand","hideFromHelp","_args","output","print","configCheckCommand","error","datasetGroup","isGroupRoot","deployCommand","undeployCommand","MAX_DATASET_NAME_LENGTH","validateDatasetAliasName","datasetName","concat","toLowerCase","length","test","ALIAS_PREFIX","listAliases","client","request","uri","createAlias","aliasName","modify","updateAlias","unlinkAlias","removeAlias","method","body","listAliasesHandler","apiClient","aliases","aliasClient.listAliases","map","set","join","listDatasetsCommand","group","datasets","list","debug","debugIt","validateDatasetName","promptForDatasetName","prompt","options","arguments","undefined","single","type","message","validate","err","allowedModes","createDatasetCommand","flags","extOptions","dataset","argsWithoutOptions","nameError","Error","projectFeatures","all","sets","ds","visibility","includes","canCreatePrivate","defaultAclMode","aclMode","promptForDatasetVisibility","create","mode","choices","value","datasetVisibilityCommand","edit","dsError","current","find","curr","parseCliFlags","yargs","hideBin","argv","process","slice","option","deleteDatasetCommand","force","warn","filter","input","trim","delete","chooseDatasetPrompt","allowCreation","hasProduction","datasetChoices","selected","Separator","newDatasetName","noop","parseFlags","rawFlags","types","split","assetConcurrency","parseInt","raw","Boolean","assets","drafts","compress","overwrite","exportDatasetCommand","chalk","workDir","targetDataset","targetDestination","projectId","config","bold","cyan","padEnd","destinationPath","path","absolutify","outputPath","getOutputPath","currentStep","spinner","start","onProgress","progress","step","succeed","update","text","total","Date","now","exportDataset","fail","prettyMs","destination","dstPath","isAbsolute","cwd","dstStats","fs","stat","catch","looksLikeFile","isFile","basename","indexOf","createPath","dirname","mkdir","recursive","finalPath","shouldOverwrite","yellow","str","toBoolIfSet","flag","allowAssetsInDifferentDataset","allowFailingAssets","replaceAssets","skipCrossDatasetReferences","replace","missing","importDatasetCommand","fromInitCommand","operation","getMutationOperation","file","target","determineTargetDataset","isUrl","inputStream","assetsBase","sourceIsFolder","getUrlStream","sourceFile","fileStats","isDirectory","createReadStream","importClient","clone","currentProgress","stepStart","spinInterval","percent","opts","lengthComputable","sameStep","getPercentage","clearInterval","prevStep","prevStepStart","timeSpent","secondsDecimalDigits","setInterval","endTask","_ref","success","numDocs","warnings","sanityImport","printWarnings","isNonRefConflict","response","statusCode","details","responseBody","shouldCreate","Math","floor","padStart","url","getIt","promise","onlyBody","stream","assetFails","bind","forEach","warning","listDatasetCopyJobs","query","offset","limit","red","table","Table","title","columns","alignment","job","id","state","createdAt","updatedAt","sourceDataset","withHistory","timeStarted","formatDistanceToNow","parseISO","timeTaken","formatDistance","color","addRow","printTable","getClientUrl","useCdn","base","cdnUrl","Observable","observer","progressSource","EventSource","stopped","onError","close","next","onChannelError","onMessage","event","data","JSON","parse","onComplete","removeEventListener","complete","addEventListener","followProgress","jobId","listenUrl","reject","subscribe","copyDatasetCommand","attach","shouldSkipHistory","existingDatasets","sourceDatasetName","targetDatasetName","skipHistory","green","detach","promptForDatasetAliasName","createAliasHandler","alias","aliasOutputName","startsWith","substring","datasetErr","canCreateAlias","aliasClient.createAlias","deleteAliasHandler","fetchedAliases","linkedAlias","elem","aliasClient.removeAlias","unlinkAliasHandler","result","aliasClient.unlinkAlias","linkAliasHandler","da","aliasClient.updateAlias","_a","aliasCommand","verb","oneline","__template","documentsGroup","identity","inp","colorizeJson","formatters","punctuator","white","key","string","number","literal","whitespace","json","stringify","tokenize","token","i","arr","prevToken","formatter","getDocumentsCommand","pretty","docId","doc","getDocument","defaultApiVersion","queryDocumentsCommand","_b","project","anonymous","apiVersion","cliConfig","requireDataset","requireProject","requireUser","api","baseClient","originalDataset","originalProjectId","docs","fetch","fallbackApiVersion","env","SANITY_CLI_QUERY_API_VERSION","deleteDocumentsCommand","ids","transaction","reduce","trx","results","commit","deleted","res","notFound","pluralize","createDocumentsCommand","watch","useJson5","json5","contentPath","content","readFile","writeDocuments","getResultMessage","uuid","ext","tmpFile","os","tmpdir","defaultValue","_id","_type","writeFile","editor","getEditor","registerUnlinkOnSigInt","chokidar","on","readAndPerformCreatesFromFile","execa","bin","stdio","sync","unlink","filePath","isEqual","writeResult","exit","documents","Array","isArray","mutations","index","validateDocument","isIdentifiedSanityDocument","createIfNotExists","createOrReplace","isSingle","isPlainObject","getErrorMessage","isSanityDocumentish","joiner","created","skipped","push","defaultEditor","platform","VISUAL","EDITOR","shift","validateDocumentsCommand","devCommand","devAction","getDevAction","isInteractive","stdout","isTTY","TERM","startCommand","previewAction","getPreviewAction","msg","bgBlack","shouldRunDevServer","getPreviewAction$1","previewCommand","uninstallCommand","hookGroup","createHookCommand","projectInfo","projects","getById","organizationId","manageUrl","open","deleteHookCommand","hookId","promptForHook","promptForHook$1","specified","specifiedName","hooks","hook","listHooksCommand","httpMethod","printHookAttemptCommand","attemptId","attempt","resultCode","resultBody","failureReason","inProgress","getStatus","isFailure","formatFailure","includeHelp","help","listHookLogsCommand","messages","attempts","groupedAttempts","groupBy","populated","totalMessages","printMessage","detailed","printSeparator","skip","status","failureCount","inspect","payload","colors","date","prefix","failure","duration","execCommand","corsGroup","_c","_d","wildcardReplacement","portReplacement","addCorsOrigin","givenOrigin","origin","filterAndValidateOrigin","promptForOrigin","hasWildcard","promptForWildcardConfirmation","allowCredentials","credentials","promptForCredentials","maxRedirects","logSymbols","underline","filterOrigin","validateOrigin","example","parsed","host","protocol","RegExp","addCorsOriginCommand","existsSync","listCorsOriginsCommand","origins","deleteCorsOriginCommand","originId","specifiedOrigin","graphqlGroup","listGraphQLAPIsCommand","deployGraphQLAPICommand","deleteGraphQLAPICommand","usersGroup","prettifyQuotaError","inviteUserCommand","selectedEmail","useProjectHostname","roles","role","appliesToUsers","email","promptForEmail","selectedRole","promptForRole","_ref2","useGlobalApi","val","sortFields","listUsersCommand","sort","order","robots","invitations","globalClient","pendingInvitations","getPendingInvitations","memberIds","members","member","users","user","projectMembers","getUserProps","candidate","isRobot","ordered","sortBy","_ref3","rows","reverse","maxWidths","max","row","size","printRow","isInvite","textRow","col","dim","displayName","invite","isAccepted","isRevoked","acceptedByUserId","migrationGroup","MIGRATIONS_DIRECTORY","MIGRATION_SCRIPT_EXTENSIONS","renameType","_ref4","migrationName","documentTypes","t","stringToPTE","_ref5","minimalSimple","_ref6","minimalAdvanced","_ref7","renameField","_ref8","TEMPLATES","template","createMigrationCommand","suffix","templatesByName","Object","fromEntries","definedTemplate","sluggedName","deburr","destDir","mkdirp","renderedTemplate","definitionFile","encodeItemRef","ref","_key","formatTransaction","mutation","flatMap","m","document","ifRevision","blue","patches","nodePatch","formatPatchMutation","patch","op","grey","pathToString","toString","formattedType","amount","keys","position","referenceItem","items","startIndex","endIndex","MAX_MUTATION_CONCURRENCY","DEFAULT_MUTATION_CONCURRENCY","tryExtensions","resolveMigrationScript","resolveMigrationScript$1","location","relativePath","absolutePath","fromExport","dry","showProgress","shouldConfirm","confirm","register","version","candidates","resolvedScripts","script","migration","concurrency","projectConfig","apiConfig","apiHost","runFromArchive","createProgress","dryRun","stop","run","done","completedTransactions","stopAndPersist","symbol","currentTransactions","pending","directories","readdir","withFileTypes","ent","migrationModules","found","definedMigration","commands","aliasDatasetCommand","runMigrationCommand","listMigrationsCommand","cliProjectCommands","requiredCliVersionRange"],"mappings":"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"}
|