sanity 3.77.3-server-side-schemas.14 → 3.77.3-server-side-schemas.15

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.
@@ -49,7 +49,7 @@ async function extractManifest(args, context) {
49
49
  const manifestDuration = timer.end(CREATE_TIMER);
50
50
  spinner.succeed(`Extracted manifest (${manifestDuration.toFixed()}ms)`);
51
51
  } catch (err) {
52
- throw spinner.fail(err), output.print(chalk__default.default.gray(EXTRACT_FAILURE_MESSAGE)), err;
52
+ throw spinner.fail(err.message), output.print(chalk__default.default.gray(EXTRACT_FAILURE_MESSAGE)), err;
53
53
  }
54
54
  }
55
55
  async function getWorkspaceManifests({
@@ -1 +1 @@
1
- {"version":3,"file":"extractManifestAction.js","sources":["../../src/_internal/cli/actions/manifest/extractManifestAction.ts"],"sourcesContent":["import {createHash} from 'node:crypto'\nimport {mkdir, writeFile} from 'node:fs/promises'\nimport {dirname, join, resolve} from 'node:path'\nimport {Worker} from 'node:worker_threads'\n\nimport {type CliCommandArguments, type CliCommandContext} from '@sanity/cli'\nimport chalk from 'chalk'\nimport {minutesToMilliseconds} from 'date-fns'\nimport readPkgUp from 'read-pkg-up'\n\nimport {\n type CreateManifest,\n type CreateWorkspaceManifest,\n type ManifestWorkspaceFile,\n} from '../../../manifest/manifestTypes'\nimport {type ExtractManifestWorkerData} from '../../threads/extractManifest'\nimport {getTimer} from '../../util/timing'\n\nexport const MANIFEST_FILENAME = 'create-manifest.json'\nconst SCHEMA_FILENAME_SUFFIX = '.create-schema.json'\nconst TOOLS_FILENAME_SUFFIX = '.create-tools.json'\n\n/** Escape-hatch env flags to change action behavior */\nconst FEATURE_ENABLED_ENV_NAME = 'SANITY_CLI_EXTRACT_MANIFEST_ENABLED'\nconst EXTRACT_MANIFEST_ENABLED = process.env[FEATURE_ENABLED_ENV_NAME] !== 'false'\nconst EXTRACT_MANIFEST_LOG_ERRORS = process.env.SANITY_CLI_EXTRACT_MANIFEST_LOG_ERRORS === 'true'\n\nconst CREATE_TIMER = 'create-manifest'\n\nconst EXTRACT_TASK_TIMEOUT_MS = minutesToMilliseconds(2)\n\nconst EXTRACT_FAILURE_MESSAGE =\n \"↳ Couldn't extract manifest file. Sanity Create will not be available for the studio.\\n\" +\n ` Disable this message with ${FEATURE_ENABLED_ENV_NAME}=false`\n\ninterface ExtractFlags {\n path?: string\n}\n\n/**\n * This function will never throw.\n * @returns `undefined` if extract succeeded - caught error if it failed\n */\nexport async function extractManifestSafe(\n args: CliCommandArguments<ExtractFlags>,\n context: CliCommandContext,\n): Promise<Error | undefined> {\n if (!EXTRACT_MANIFEST_ENABLED) {\n return undefined\n }\n\n try {\n await extractManifest(args, context)\n return undefined\n } catch (err) {\n if (EXTRACT_MANIFEST_LOG_ERRORS) {\n context.output.error(err)\n }\n return err\n }\n}\n\nasync function extractManifest(\n args: CliCommandArguments<ExtractFlags>,\n context: CliCommandContext,\n): Promise<void> {\n const {output, workDir} = context\n\n const flags = args.extOptions\n const defaultOutputDir = resolve(join(workDir, 'dist'))\n\n const outputDir = resolve(defaultOutputDir)\n const defaultStaticPath = join(outputDir, 'static')\n\n const staticPath = flags.path ?? defaultStaticPath\n\n const path = join(staticPath, MANIFEST_FILENAME)\n\n const rootPkgPath = readPkgUp.sync({cwd: __dirname})?.path\n if (!rootPkgPath) {\n throw new Error('Could not find root directory for `sanity` package')\n }\n\n const timer = getTimer()\n timer.start(CREATE_TIMER)\n const spinner = output.spinner({}).start('Extracting manifest')\n\n try {\n const workspaceManifests = await getWorkspaceManifests({rootPkgPath, workDir})\n await mkdir(staticPath, {recursive: true})\n\n const workspaceFiles = await writeWorkspaceFiles(workspaceManifests, staticPath)\n\n const manifest: CreateManifest = {\n /**\n * Version history:\n * 1: Initial release.\n * 2: Added tools file.\n */\n version: 2,\n createdAt: new Date().toISOString(),\n workspaces: workspaceFiles,\n }\n\n await writeFile(path, JSON.stringify(manifest, null, 2))\n const manifestDuration = timer.end(CREATE_TIMER)\n\n spinner.succeed(`Extracted manifest (${manifestDuration.toFixed()}ms)`)\n } catch (err) {\n spinner.fail(err)\n output.print(chalk.gray(EXTRACT_FAILURE_MESSAGE))\n throw err\n }\n}\n\nasync function getWorkspaceManifests({\n rootPkgPath,\n workDir,\n}: {\n rootPkgPath: string\n workDir: string\n}): Promise<CreateWorkspaceManifest[]> {\n const workerPath = join(\n dirname(rootPkgPath),\n 'lib',\n '_internal',\n 'cli',\n 'threads',\n 'extractManifest.js',\n )\n\n const worker = new Worker(workerPath, {\n workerData: {workDir} satisfies ExtractManifestWorkerData,\n // eslint-disable-next-line no-process-env\n env: process.env,\n })\n\n let timeout = false\n const timeoutId = setTimeout(() => {\n timeout = true\n worker.terminate()\n }, EXTRACT_TASK_TIMEOUT_MS)\n\n try {\n return await new Promise<CreateWorkspaceManifest[]>((resolveWorkspaces, reject) => {\n const buffer: CreateWorkspaceManifest[] = []\n worker.addListener('message', (message) => buffer.push(message))\n worker.addListener('exit', (exitCode) => {\n if (exitCode === 0) {\n resolveWorkspaces(buffer)\n } else if (timeout) {\n reject(new Error(`Extract manifest was aborted after ${EXTRACT_TASK_TIMEOUT_MS}ms`))\n }\n })\n worker.addListener('error', reject)\n })\n } finally {\n clearTimeout(timeoutId)\n }\n}\n\nfunction writeWorkspaceFiles(\n manifestWorkspaces: CreateWorkspaceManifest[],\n staticPath: string,\n): Promise<ManifestWorkspaceFile[]> {\n const output = manifestWorkspaces.reduce<Promise<ManifestWorkspaceFile>[]>(\n (workspaces, workspace) => {\n return [...workspaces, writeWorkspaceFile(workspace, staticPath)]\n },\n [],\n )\n return Promise.all(output)\n}\n\nasync function writeWorkspaceFile(\n workspace: CreateWorkspaceManifest,\n staticPath: string,\n): Promise<ManifestWorkspaceFile> {\n const [schemaFilename, toolsFilename] = await Promise.all([\n createFile(staticPath, workspace.schema, SCHEMA_FILENAME_SUFFIX),\n createFile(staticPath, workspace.tools, TOOLS_FILENAME_SUFFIX),\n ])\n\n return {\n ...workspace,\n schema: schemaFilename,\n tools: toolsFilename,\n }\n}\n\nconst createFile = async (path: string, content: any, filenameSuffix: string) => {\n const stringifiedContent = JSON.stringify(content, null, 2)\n const hash = createHash('sha1').update(stringifiedContent).digest('hex')\n const filename = `${hash.slice(0, 8)}${filenameSuffix}`\n\n // workspaces with identical data will overwrite each others file. This is ok, since they are identical and can be shared\n await writeFile(join(path, filename), stringifiedContent)\n\n return filename\n}\n"],"names":["MANIFEST_FILENAME","SCHEMA_FILENAME_SUFFIX","TOOLS_FILENAME_SUFFIX","FEATURE_ENABLED_ENV_NAME","EXTRACT_MANIFEST_ENABLED","process","env","EXTRACT_MANIFEST_LOG_ERRORS","SANITY_CLI_EXTRACT_MANIFEST_LOG_ERRORS","CREATE_TIMER","EXTRACT_TASK_TIMEOUT_MS","minutesToMilliseconds","EXTRACT_FAILURE_MESSAGE","extractManifestSafe","args","context","extractManifest","err","output","error","workDir","flags","extOptions","defaultOutputDir","resolve","join","outputDir","defaultStaticPath","staticPath","path","rootPkgPath","readPkgUp","sync","cwd","__dirname","Error","timer","getTimer","start","spinner","workspaceManifests","getWorkspaceManifests","mkdir","recursive","workspaceFiles","writeWorkspaceFiles","manifest","version","createdAt","Date","toISOString","workspaces","writeFile","JSON","stringify","manifestDuration","end","succeed","toFixed","fail","print","chalk","gray","workerPath","dirname","worker","Worker","workerData","timeout","timeoutId","setTimeout","terminate","Promise","resolveWorkspaces","reject","buffer","addListener","message","push","exitCode","clearTimeout","manifestWorkspaces","reduce","workspace","writeWorkspaceFile","all","schemaFilename","toolsFilename","createFile","schema","tools","content","filenameSuffix","stringifiedContent","filename","createHash","update","digest","slice"],"mappings":"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"}
1
+ {"version":3,"file":"extractManifestAction.js","sources":["../../src/_internal/cli/actions/manifest/extractManifestAction.ts"],"sourcesContent":["import {createHash} from 'node:crypto'\nimport {mkdir, writeFile} from 'node:fs/promises'\nimport {dirname, join, resolve} from 'node:path'\nimport {Worker} from 'node:worker_threads'\n\nimport {type CliCommandArguments, type CliCommandContext} from '@sanity/cli'\nimport chalk from 'chalk'\nimport {minutesToMilliseconds} from 'date-fns'\nimport readPkgUp from 'read-pkg-up'\n\nimport {\n type CreateManifest,\n type CreateWorkspaceManifest,\n type ManifestWorkspaceFile,\n} from '../../../manifest/manifestTypes'\nimport {type ExtractManifestWorkerData} from '../../threads/extractManifest'\nimport {getTimer} from '../../util/timing'\n\nexport const MANIFEST_FILENAME = 'create-manifest.json'\nconst SCHEMA_FILENAME_SUFFIX = '.create-schema.json'\nconst TOOLS_FILENAME_SUFFIX = '.create-tools.json'\n\n/** Escape-hatch env flags to change action behavior */\nconst FEATURE_ENABLED_ENV_NAME = 'SANITY_CLI_EXTRACT_MANIFEST_ENABLED'\nconst EXTRACT_MANIFEST_ENABLED = process.env[FEATURE_ENABLED_ENV_NAME] !== 'false'\nconst EXTRACT_MANIFEST_LOG_ERRORS = process.env.SANITY_CLI_EXTRACT_MANIFEST_LOG_ERRORS === 'true'\n\nconst CREATE_TIMER = 'create-manifest'\n\nconst EXTRACT_TASK_TIMEOUT_MS = minutesToMilliseconds(2)\n\nconst EXTRACT_FAILURE_MESSAGE =\n \"↳ Couldn't extract manifest file. Sanity Create will not be available for the studio.\\n\" +\n ` Disable this message with ${FEATURE_ENABLED_ENV_NAME}=false`\n\ninterface ExtractFlags {\n path?: string\n}\n\n/**\n * This function will never throw.\n * @returns `undefined` if extract succeeded - caught error if it failed\n */\nexport async function extractManifestSafe(\n args: CliCommandArguments<ExtractFlags>,\n context: CliCommandContext,\n): Promise<Error | undefined> {\n if (!EXTRACT_MANIFEST_ENABLED) {\n return undefined\n }\n\n try {\n await extractManifest(args, context)\n return undefined\n } catch (err) {\n if (EXTRACT_MANIFEST_LOG_ERRORS) {\n context.output.error(err)\n }\n return err\n }\n}\n\nasync function extractManifest(\n args: CliCommandArguments<ExtractFlags>,\n context: CliCommandContext,\n): Promise<void> {\n const {output, workDir} = context\n\n const flags = args.extOptions\n const defaultOutputDir = resolve(join(workDir, 'dist'))\n\n const outputDir = resolve(defaultOutputDir)\n const defaultStaticPath = join(outputDir, 'static')\n\n const staticPath = flags.path ?? defaultStaticPath\n\n const path = join(staticPath, MANIFEST_FILENAME)\n\n const rootPkgPath = readPkgUp.sync({cwd: __dirname})?.path\n if (!rootPkgPath) {\n throw new Error('Could not find root directory for `sanity` package')\n }\n\n const timer = getTimer()\n timer.start(CREATE_TIMER)\n const spinner = output.spinner({}).start('Extracting manifest')\n\n try {\n const workspaceManifests = await getWorkspaceManifests({rootPkgPath, workDir})\n await mkdir(staticPath, {recursive: true})\n\n const workspaceFiles = await writeWorkspaceFiles(workspaceManifests, staticPath)\n\n const manifest: CreateManifest = {\n /**\n * Version history:\n * 1: Initial release.\n * 2: Added tools file.\n */\n version: 2,\n createdAt: new Date().toISOString(),\n workspaces: workspaceFiles,\n }\n\n await writeFile(path, JSON.stringify(manifest, null, 2))\n const manifestDuration = timer.end(CREATE_TIMER)\n\n spinner.succeed(`Extracted manifest (${manifestDuration.toFixed()}ms)`)\n } catch (err) {\n spinner.fail(err.message)\n output.print(chalk.gray(EXTRACT_FAILURE_MESSAGE))\n throw err\n }\n}\n\nasync function getWorkspaceManifests({\n rootPkgPath,\n workDir,\n}: {\n rootPkgPath: string\n workDir: string\n}): Promise<CreateWorkspaceManifest[]> {\n const workerPath = join(\n dirname(rootPkgPath),\n 'lib',\n '_internal',\n 'cli',\n 'threads',\n 'extractManifest.js',\n )\n\n const worker = new Worker(workerPath, {\n workerData: {workDir} satisfies ExtractManifestWorkerData,\n // eslint-disable-next-line no-process-env\n env: process.env,\n })\n\n let timeout = false\n const timeoutId = setTimeout(() => {\n timeout = true\n worker.terminate()\n }, EXTRACT_TASK_TIMEOUT_MS)\n\n try {\n return await new Promise<CreateWorkspaceManifest[]>((resolveWorkspaces, reject) => {\n const buffer: CreateWorkspaceManifest[] = []\n worker.addListener('message', (message) => buffer.push(message))\n worker.addListener('exit', (exitCode) => {\n if (exitCode === 0) {\n resolveWorkspaces(buffer)\n } else if (timeout) {\n reject(new Error(`Extract manifest was aborted after ${EXTRACT_TASK_TIMEOUT_MS}ms`))\n }\n })\n worker.addListener('error', reject)\n })\n } finally {\n clearTimeout(timeoutId)\n }\n}\n\nfunction writeWorkspaceFiles(\n manifestWorkspaces: CreateWorkspaceManifest[],\n staticPath: string,\n): Promise<ManifestWorkspaceFile[]> {\n const output = manifestWorkspaces.reduce<Promise<ManifestWorkspaceFile>[]>(\n (workspaces, workspace) => {\n return [...workspaces, writeWorkspaceFile(workspace, staticPath)]\n },\n [],\n )\n return Promise.all(output)\n}\n\nasync function writeWorkspaceFile(\n workspace: CreateWorkspaceManifest,\n staticPath: string,\n): Promise<ManifestWorkspaceFile> {\n const [schemaFilename, toolsFilename] = await Promise.all([\n createFile(staticPath, workspace.schema, SCHEMA_FILENAME_SUFFIX),\n createFile(staticPath, workspace.tools, TOOLS_FILENAME_SUFFIX),\n ])\n\n return {\n ...workspace,\n schema: schemaFilename,\n tools: toolsFilename,\n }\n}\n\nconst createFile = async (path: string, content: any, filenameSuffix: string) => {\n const stringifiedContent = JSON.stringify(content, null, 2)\n const hash = createHash('sha1').update(stringifiedContent).digest('hex')\n const filename = `${hash.slice(0, 8)}${filenameSuffix}`\n\n // workspaces with identical data will overwrite each others file. This is ok, since they are identical and can be shared\n await writeFile(join(path, filename), stringifiedContent)\n\n return filename\n}\n"],"names":["MANIFEST_FILENAME","SCHEMA_FILENAME_SUFFIX","TOOLS_FILENAME_SUFFIX","FEATURE_ENABLED_ENV_NAME","EXTRACT_MANIFEST_ENABLED","process","env","EXTRACT_MANIFEST_LOG_ERRORS","SANITY_CLI_EXTRACT_MANIFEST_LOG_ERRORS","CREATE_TIMER","EXTRACT_TASK_TIMEOUT_MS","minutesToMilliseconds","EXTRACT_FAILURE_MESSAGE","extractManifestSafe","args","context","extractManifest","err","output","error","workDir","flags","extOptions","defaultOutputDir","resolve","join","outputDir","defaultStaticPath","staticPath","path","rootPkgPath","readPkgUp","sync","cwd","__dirname","Error","timer","getTimer","start","spinner","workspaceManifests","getWorkspaceManifests","mkdir","recursive","workspaceFiles","writeWorkspaceFiles","manifest","version","createdAt","Date","toISOString","workspaces","writeFile","JSON","stringify","manifestDuration","end","succeed","toFixed","fail","message","print","chalk","gray","workerPath","dirname","worker","Worker","workerData","timeout","timeoutId","setTimeout","terminate","Promise","resolveWorkspaces","reject","buffer","addListener","push","exitCode","clearTimeout","manifestWorkspaces","reduce","workspace","writeWorkspaceFile","all","schemaFilename","toolsFilename","createFile","schema","tools","content","filenameSuffix","stringifiedContent","filename","createHash","update","digest","slice"],"mappings":"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"}
@@ -49,7 +49,7 @@ async function fetchSchemaAction(args, context) {
49
49
  output.error("No schemas found");
50
50
  return;
51
51
  }
52
- flags.json ? output.print(`${JSON.stringify(schemas, null, 2)}`) : printSchemaList({
52
+ flags.json ? output.print(`${JSON.stringify(flags.id ? schemas[0] : schemas, null, 2)}`) : printSchemaList({
53
53
  schemas,
54
54
  output
55
55
  });
@@ -1 +1 @@
1
- {"version":3,"file":"storeSchemasAction.js","sources":["../../src/_internal/cli/actions/schema/schemaListAction.ts","../../src/_internal/cli/actions/schema/storeSchemasAction.ts"],"sourcesContent":["import {type CliCommandArguments, type CliCommandContext, type CliOutputter} from '@sanity/cli'\nimport {type SanityDocument} from '@sanity/client'\nimport chalk from 'chalk'\nimport {size, sortBy, uniqBy} from 'lodash'\n\nimport {type ManifestWorkspaceFile} from '../../../manifest/manifestTypes'\nimport {getManifestPath, readManifest, throwIfProjectIdMismatch} from './storeSchemasAction'\n\nexport interface SchemaListFlags {\n json: boolean\n id: string\n path: string\n}\n\ntype PrintSchemaListArgs = {\n schemas: SanityDocument[]\n output: CliOutputter\n dataset: string\n projectId: string\n path: string\n}\n\nexport const SANITY_WORKSPACE_SCHEMA_TYPE = 'sanity.workspace.schema'\n\nconst printSchemaList = ({\n schemas,\n output,\n}: Omit<PrintSchemaListArgs, 'path' | 'dataset' | 'projectId'>) => {\n const ordered = sortBy(\n schemas.map(({_createdAt: createdAt, _id: id, workspace}) => {\n return [id, workspace.name, workspace.dataset, workspace.projectId, createdAt].map(String)\n }),\n ['createdAt'],\n )\n const headings = ['Id', 'Workspace', 'Dataset', 'ProjectId', 'CreatedAt']\n const rows = ordered.reverse()\n\n const maxWidths = rows.reduce(\n (max, row) => row.map((current, index) => Math.max(size(current), max[index])),\n headings.map((str) => size(str)),\n )\n\n const printRow = (row: string[]) => row.map((col, i) => `${col}`.padEnd(maxWidths[i])).join(' ')\n\n output.print(chalk.cyan(printRow(headings)))\n rows.forEach((row) => output.print(printRow(row)))\n}\n\nexport default async function fetchSchemaAction(\n args: CliCommandArguments<SchemaListFlags>,\n context: CliCommandContext,\n): Promise<void> {\n const flags = args.extOptions\n const {apiClient, output} = context\n const client = apiClient({\n requireUser: true,\n requireProject: true,\n }).withConfig({apiVersion: 'v2024-08-01'})\n\n const projectId = client.config().projectId\n\n if (!projectId) {\n output.error('Project ID must be defined.')\n return\n }\n\n const manifestPath = getManifestPath(context, flags.path)\n const manifest = readManifest(manifestPath, output)\n\n // Gather all schemas\n const results = await Promise.allSettled(\n uniqBy<ManifestWorkspaceFile>(manifest.workspaces, 'dataset').map(async (workspace) => {\n throwIfProjectIdMismatch(workspace, projectId)\n if (flags.id) {\n // Fetch a specific schema by id\n return await client\n .withConfig({\n dataset: workspace.dataset,\n projectId: workspace.projectId,\n })\n .getDocument(flags.id)\n }\n // Fetch all schemas\n return await client\n .withConfig({\n dataset: workspace.dataset,\n projectId: workspace.projectId,\n useCdn: false,\n })\n .fetch<SanityDocument[]>(`*[_type == $type]`, {\n type: SANITY_WORKSPACE_SCHEMA_TYPE,\n })\n }),\n )\n\n // Log errors and collect successful results\n const schemas = results\n .map((result, index) => {\n if (result.status === 'rejected') {\n const workspace = manifest.workspaces[index]\n output.error(\n chalk.red(\n `Failed to fetch schemas for workspace '${workspace.name}': ${result.reason.message}`,\n ),\n )\n return []\n }\n return result.value\n })\n .flat()\n\n if (schemas.length === 0) {\n output.error(`No schemas found`)\n return\n }\n\n if (flags.json) {\n output.print(`${JSON.stringify(schemas, null, 2)}`)\n } else {\n printSchemaList({schemas: schemas as SanityDocument[], output})\n }\n}\n","import {readFileSync} from 'node:fs'\nimport path, {join, resolve} from 'node:path'\n\nimport {type CliCommandArguments, type CliCommandContext, type CliOutputter} from '@sanity/cli'\nimport chalk from 'chalk'\nimport {type Ora} from 'ora'\n\nimport {type ManifestSchemaType, type ManifestWorkspaceFile} from '../../../manifest/manifestTypes'\nimport {MANIFEST_FILENAME} from '../manifest/extractManifestAction'\nimport {SANITY_WORKSPACE_SCHEMA_TYPE} from './schemaListAction'\n\nexport interface StoreManifestSchemasFlags {\n 'path'?: string\n 'workspace'?: string\n 'id-prefix'?: string\n 'schema-required'?: boolean\n 'verbose'?: boolean\n}\n\nexport const getManifestPath = (context: CliCommandContext, customPath?: string) => {\n const defaultOutputDir = resolve(join(context.workDir, 'dist'))\n\n const outputDir = resolve(defaultOutputDir)\n const defaultStaticPath = join(outputDir, 'static')\n\n const staticPath = customPath ?? defaultStaticPath\n const manifestPath = path.resolve(process.cwd(), staticPath)\n return manifestPath\n}\n\nexport const readManifest = (readPath: string, output?: CliOutputter, spinner?: Ora) => {\n try {\n return JSON.parse(readFileSync(`${readPath}/${MANIFEST_FILENAME}`, 'utf-8'))\n } catch (error) {\n const errorMessage = `Manifest not found at ${readPath}/${MANIFEST_FILENAME}`\n if (spinner) spinner.fail(errorMessage)\n if (output) output.error(errorMessage)\n throw error\n }\n}\n\n// At the moment schema store deos not support studios where workspaces have multiple projects\nexport const throwIfProjectIdMismatch = (\n workspace: ManifestWorkspaceFile,\n projectId: string,\n): void => {\n if (workspace.projectId !== projectId) {\n throw new Error(\n `↳ No permissions to store schema for workspace ${workspace.name} with projectId: ${workspace.projectId}`,\n )\n }\n}\n\nexport default async function storeSchemasAction(\n args: CliCommandArguments<StoreManifestSchemasFlags>,\n context: CliCommandContext,\n): Promise<Error | undefined> {\n const flags = args.extOptions\n\n const schemaRequired = flags['schema-required']\n const workspaceName = flags.workspace\n const idPrefix = flags['id-prefix']\n const verbose = flags.verbose\n\n if (typeof flags.path === 'boolean') throw new Error('Path is empty')\n if (typeof idPrefix === 'boolean') throw new Error('Id prefix is empty')\n if (typeof workspaceName === 'boolean') throw new Error('Workspace is empty')\n\n const {output, apiClient} = context\n\n const spinner = output.spinner({}).start('Storing schemas')\n\n const manifestPath = getManifestPath(context, flags.path)\n\n try {\n const client = apiClient({\n requireUser: true,\n requireProject: true,\n }).withConfig({apiVersion: 'v2024-08-01'})\n\n const projectId = client.config().projectId\n if (!projectId) throw new Error('Project ID is not defined')\n\n const manifest = readManifest(manifestPath, output, spinner)\n\n let storedCount = 0\n\n let error: Error | undefined\n\n const saveSchema = async (workspace: ManifestWorkspaceFile) => {\n const id = `${idPrefix ? `${idPrefix}.` : ''}${SANITY_WORKSPACE_SCHEMA_TYPE}.${workspace.name}`\n try {\n throwIfProjectIdMismatch(workspace, projectId)\n const schema = JSON.parse(\n readFileSync(`${manifestPath}/${workspace.schema}`, 'utf-8'),\n ) as ManifestSchemaType\n await client\n .withConfig({\n dataset: workspace.dataset,\n projectId: workspace.projectId,\n })\n .transaction()\n .createOrReplace({_type: SANITY_WORKSPACE_SCHEMA_TYPE, _id: id, workspace, schema})\n .commit()\n storedCount++\n spinner.text = `Stored ${storedCount} schemas so far...`\n if (verbose) spinner.succeed(`Schema stored for workspace '${workspace.name}'`)\n } catch (err) {\n error = err\n spinner.fail(\n `Error storing schema for workspace '${workspace.name}':\\n${chalk.red(`${err.message}`)}`,\n )\n if (schemaRequired) throw err\n } finally {\n if (verbose) {\n output.print(\n chalk.gray(`↳ schemaId: ${id}, projectId: ${projectId}, dataset: ${workspace.dataset}`),\n )\n }\n }\n }\n\n // If a workspace name is provided, only save the schema for that workspace\n if (workspaceName) {\n const workspaceToSave = manifest.workspaces.find(\n (workspace: ManifestWorkspaceFile) => workspace.name === workspaceName,\n )\n if (!workspaceToSave) {\n spinner.fail(`Workspace ${workspaceName} not found in manifest`)\n throw new Error(`Workspace ${workspaceName} not found in manifest: projectID: ${projectId}`)\n }\n await saveSchema(workspaceToSave as ManifestWorkspaceFile)\n spinner.succeed(`Stored 1 schemas`)\n } else {\n await Promise.all(\n manifest.workspaces.map(async (workspace: ManifestWorkspaceFile): Promise<void> => {\n await saveSchema(workspace)\n }),\n )\n spinner.succeed(`Stored ${storedCount}/${manifest.workspaces.length} schemas`)\n }\n\n if (error) throw error\n return undefined\n } catch (err) {\n // if this flag is set, throw the error and exit without deploying otherwise just log the error\n if (schemaRequired) throw err\n return err\n } finally {\n output.print(`${chalk.gray('↳ List stored schemas with:')} ${chalk.cyan('sanity schema list')}`)\n }\n}\n"],"names":["SANITY_WORKSPACE_SCHEMA_TYPE","printSchemaList","schemas","output","ordered","sortBy","map","_createdAt","createdAt","_id","id","workspace","name","dataset","projectId","String","headings","rows","reverse","maxWidths","reduce","max","row","current","index","Math","size","str","printRow","col","i","padEnd","join","print","chalk","cyan","forEach","fetchSchemaAction","args","context","flags","extOptions","apiClient","client","requireUser","requireProject","withConfig","apiVersion","config","error","manifestPath","getManifestPath","path","manifest","readManifest","Promise","allSettled","uniqBy","workspaces","throwIfProjectIdMismatch","getDocument","useCdn","fetch","type","result","status","red","reason","message","value","flat","length","json","JSON","stringify","customPath","defaultOutputDir","resolve","workDir","outputDir","defaultStaticPath","staticPath","process","cwd","readPath","spinner","parse","readFileSync","MANIFEST_FILENAME","errorMessage","fail","Error","storeSchemasAction","schemaRequired","workspaceName","idPrefix","verbose","start","storedCount","saveSchema","schema","transaction","createOrReplace","_type","commit","text","succeed","err","gray","workspaceToSave","find","all"],"mappings":";;;;;;AAsBO,MAAMA,+BAA+B,2BAEtCC,kBAAkBA,CAAC;AAAA,EACvBC;AAAAA,EACAC;AAC2D,MAAM;AACjE,QAAMC,UAAUC,gBAAAA,QACdH,QAAQI,IAAI,CAAC;AAAA,IAACC,YAAYC;AAAAA,IAAWC,KAAKC;AAAAA,IAAIC;AAAAA,EAAAA,MACrC,CAACD,IAAIC,UAAUC,MAAMD,UAAUE,SAASF,UAAUG,WAAWN,SAAS,EAAEF,IAAIS,MAAM,CAC1F,GACD,CAAC,WAAW,CACd,GACMC,WAAW,CAAC,MAAM,aAAa,WAAW,aAAa,WAAW,GAClEC,OAAOb,QAAQc,WAEfC,YAAYF,KAAKG,OACrB,CAACC,KAAKC,QAAQA,IAAIhB,IAAI,CAACiB,SAASC,UAAUC,KAAKJ,IAAIK,cAAAA,QAAKH,OAAO,GAAGF,IAAIG,KAAK,CAAC,CAAC,GAC7ER,SAASV,IAAKqB,CAAAA,QAAQD,cAAAA,QAAKC,GAAG,CAAC,CACjC,GAEMC,WAAYN,CAAkBA,QAAAA,IAAIhB,IAAI,CAACuB,KAAKC,MAAM,GAAGD,GAAG,GAAGE,OAAOZ,UAAUW,CAAC,CAAC,CAAC,EAAEE,KAAK,KAAK;AAEjG7B,SAAO8B,MAAMC,eAAMC,QAAAA,KAAKP,SAASZ,QAAQ,CAAC,CAAC,GAC3CC,KAAKmB,QAASd,SAAQnB,OAAO8B,MAAML,SAASN,GAAG,CAAC,CAAC;AACnD;AAE8Be,eAAAA,kBAC5BC,MACAC,SACe;AACTC,QAAAA,QAAQF,KAAKG,YACb;AAAA,IAACC;AAAAA,IAAWvC;AAAAA,EAAAA,IAAUoC,SACtBI,SAASD,UAAU;AAAA,IACvBE,aAAa;AAAA,IACbC,gBAAgB;AAAA,EACjB,CAAA,EAAEC,WAAW;AAAA,IAACC,YAAY;AAAA,EAAc,CAAA,GAEnCjC,YAAY6B,OAAOK,OAASlC,EAAAA;AAElC,MAAI,CAACA,WAAW;AACdX,WAAO8C,MAAM,6BAA6B;AAC1C;AAAA,EAAA;AAGF,QAAMC,eAAeC,gBAAgBZ,SAASC,MAAMY,IAAI,GAClDC,WAAWC,aAAaJ,cAAc/C,MAAM,GA6B5CD,WA1BU,MAAMqD,QAAQC,WAC5BC,wBAA8BJ,SAASK,YAAY,SAAS,EAAEpD,IAAI,OAAOK,eACvEgD,yBAAyBhD,WAAWG,SAAS,GACzC0B,MAAM9B,KAED,MAAMiC,OACVG,WAAW;AAAA,IACVjC,SAASF,UAAUE;AAAAA,IACnBC,WAAWH,UAAUG;AAAAA,EAAAA,CACtB,EACA8C,YAAYpB,MAAM9B,EAAE,IAGlB,MAAMiC,OACVG,WAAW;AAAA,IACVjC,SAASF,UAAUE;AAAAA,IACnBC,WAAWH,UAAUG;AAAAA,IACrB+C,QAAQ;AAAA,EAAA,CACT,EACAC,MAAwB,qBAAqB;AAAA,IAC5CC,MAAM/D;AAAAA,EACP,CAAA,EACJ,CACH,GAIGM,IAAI,CAAC0D,QAAQxC,UAAU;AAClBwC,QAAAA,OAAOC,WAAW,YAAY;AAC1BtD,YAAAA,YAAY0C,SAASK,WAAWlC,KAAK;AAC3CrB,aAAAA,OAAO8C,MACLf,eAAAA,QAAMgC,IACJ,0CAA0CvD,UAAUC,IAAI,MAAMoD,OAAOG,OAAOC,OAAO,EACrF,CACF,GACO,CAAE;AAAA,IAAA;AAEX,WAAOJ,OAAOK;AAAAA,EACf,CAAA,EACAC,KAAK;AAEJpE,MAAAA,QAAQqE,WAAW,GAAG;AACxBpE,WAAO8C,MAAM,kBAAkB;AAC/B;AAAA,EAAA;AAGET,QAAMgC,OACRrE,OAAO8B,MAAM,GAAGwC,KAAKC,UAAUxE,SAAS,MAAM,CAAC,CAAC,EAAE,IAElDD,gBAAgB;AAAA,IAACC;AAAAA,IAAsCC;AAAAA,EAAAA,CAAO;AAElE;;;;;;ACtGagD,MAAAA,kBAAkBA,CAACZ,SAA4BoC,eAAwB;AAClF,QAAMC,mBAAmBC,KAAAA,QAAQ7C,KAAAA,KAAKO,QAAQuC,SAAS,MAAM,CAAC,GAExDC,YAAYF,KAAQD,QAAAA,gBAAgB,GACpCI,oBAAoBhD,UAAK+C,WAAW,QAAQ,GAE5CE,aAAaN,cAAcK;AAEjC,SADqB5B,cAAKyB,QAAAA,QAAQK,QAAQC,IAAAA,GAAOF,UAAU;AAE7D,GAEa3B,eAAeA,CAAC8B,UAAkBjF,QAAuBkF,YAAkB;AAClF,MAAA;AACKZ,WAAAA,KAAKa,MAAMC,GAAAA,aAAa,GAAGH,QAAQ,IAAII,sBAAiB,iBAAA,IAAI,OAAO,CAAC;AAAA,WACpEvC,OAAO;AACd,UAAMwC,eAAe,yBAAyBL,QAAQ,IAAII,sBAAiB,iBAAA;AACvEH,UAAAA,WAASA,QAAQK,KAAKD,YAAY,GAClCtF,UAAQA,OAAO8C,MAAMwC,YAAY,GAC/BxC;AAAAA,EAAAA;AAEV,GAGaU,2BAA2BA,CACtChD,WACAG,cACS;AACT,MAAIH,UAAUG,cAAcA;AACpB,UAAA,IAAI6E,MACR,uDAAkDhF,UAAUC,IAAI,oBAAoBD,UAAUG,SAAS,EACzG;AAEJ;AAE8B8E,eAAAA,mBAC5BtD,MACAC,SAC4B;AAC5B,QAAMC,QAAQF,KAAKG,YAEboD,iBAAiBrD,MAAM,iBAAiB,GACxCsD,gBAAgBtD,MAAM7B,WACtBoF,WAAWvD,MAAM,WAAW,GAC5BwD,UAAUxD,MAAMwD;AAEtB,MAAI,OAAOxD,MAAMY,QAAS,UAAiB,OAAA,IAAIuC,MAAM,eAAe;AACpE,MAAI,OAAOI,YAAa,UAAiB,OAAA,IAAIJ,MAAM,oBAAoB;AACvE,MAAI,OAAOG,iBAAkB,UAAiB,OAAA,IAAIH,MAAM,oBAAoB;AAEtE,QAAA;AAAA,IAACxF;AAAAA,IAAQuC;AAAAA,EAAaH,IAAAA,SAEtB8C,UAAUlF,OAAOkF,QAAQ,CAAE,CAAA,EAAEY,MAAM,iBAAiB,GAEpD/C,eAAeC,gBAAgBZ,SAASC,MAAMY,IAAI;AAEpD,MAAA;AACF,UAAMT,SAASD,UAAU;AAAA,MACvBE,aAAa;AAAA,MACbC,gBAAgB;AAAA,IACjB,CAAA,EAAEC,WAAW;AAAA,MAACC,YAAY;AAAA,IAAc,CAAA,GAEnCjC,YAAY6B,OAAOK,OAASlC,EAAAA;AAClC,QAAI,CAACA,UAAiB,OAAA,IAAI6E,MAAM,2BAA2B;AAE3D,UAAMtC,WAAWC,aAAaJ,cAAc/C,QAAQkF,OAAO;AAE3D,QAAIa,cAAc,GAEdjD;AAEEkD,UAAAA,aAAa,OAAOxF,cAAqC;AACvDD,YAAAA,KAAK,GAAGqF,WAAW,GAAGA,QAAQ,MAAM,EAAE,GAAG/F,4BAA4B,IAAIW,UAAUC,IAAI;AACzF,UAAA;AACF+C,iCAAyBhD,WAAWG,SAAS;AACvCsF,cAAAA,SAAS3B,KAAKa,MAClBC,GAAa,aAAA,GAAGrC,YAAY,IAAIvC,UAAUyF,MAAM,IAAI,OAAO,CAC7D;AACA,cAAMzD,OACHG,WAAW;AAAA,UACVjC,SAASF,UAAUE;AAAAA,UACnBC,WAAWH,UAAUG;AAAAA,QAAAA,CACtB,EACAuF,YAAY,EACZC,gBAAgB;AAAA,UAACC,OAAOvG;AAAAA,UAA8BS,KAAKC;AAAAA,UAAIC;AAAAA,UAAWyF;AAAAA,QAAAA,CAAO,EACjFI,OAAAA,GACHN,eACAb,QAAQoB,OAAO,UAAUP,WAAW,sBAChCF,WAASX,QAAQqB,QAAQ,gCAAgC/F,UAAUC,IAAI,GAAG;AAAA,eACvE+F,KAAK;AAKZ,YAJA1D,QAAQ0D,KACRtB,QAAQK,KACN,uCAAuC/E,UAAUC,IAAI;AAAA,EAAOsB,uBAAMgC,IAAI,GAAGyC,IAAIvC,OAAO,EAAE,CAAC,EACzF,GACIyB,eAAsBc,OAAAA;AAAAA,MAAAA,UAClB;AACJX,mBACF7F,OAAO8B,MACLC,eAAAA,QAAM0E,KAAK,oBAAelG,EAAE,gBAAgBI,SAAS,cAAcH,UAAUE,OAAO,EAAE,CACxF;AAAA,MAAA;AAAA,IAGN;AAGA,QAAIiF,eAAe;AACjB,YAAMe,kBAAkBxD,SAASK,WAAWoD,KACzCnG,CAAqCA,cAAAA,UAAUC,SAASkF,aAC3D;AACA,UAAI,CAACe;AACKnB,cAAAA,QAAAA,KAAK,aAAaI,aAAa,wBAAwB,GACzD,IAAIH,MAAM,aAAaG,aAAa,sCAAsChF,SAAS,EAAE;AAE7F,YAAMqF,WAAWU,eAAwC,GACzDxB,QAAQqB,QAAQ,kBAAkB;AAAA,IACpC;AACE,YAAMnD,QAAQwD,IACZ1D,SAASK,WAAWpD,IAAI,OAAOK,cAAoD;AACjF,cAAMwF,WAAWxF,SAAS;AAAA,MAC3B,CAAA,CACH,GACA0E,QAAQqB,QAAQ,UAAUR,WAAW,IAAI7C,SAASK,WAAWa,MAAM,UAAU;AAG/E,QAAItB,MAAaA,OAAAA;AACjB;AAAA,WACO0D,KAAK;AAEZ,QAAId,eAAsBc,OAAAA;AACnBA,WAAAA;AAAAA,EAAAA,UACC;AACD1E,WAAAA,MAAM,GAAGC,eAAAA,QAAM0E,KAAK,kCAA6B,CAAC,IAAI1E,eAAAA,QAAMC,KAAK,oBAAoB,CAAC,EAAE;AAAA,EAAA;AAEnG;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"storeSchemasAction.js","sources":["../../src/_internal/cli/actions/schema/schemaListAction.ts","../../src/_internal/cli/actions/schema/storeSchemasAction.ts"],"sourcesContent":["import {type CliCommandArguments, type CliCommandContext, type CliOutputter} from '@sanity/cli'\nimport {type SanityDocument} from '@sanity/client'\nimport chalk from 'chalk'\nimport {size, sortBy, uniqBy} from 'lodash'\n\nimport {type ManifestWorkspaceFile} from '../../../manifest/manifestTypes'\nimport {getManifestPath, readManifest, throwIfProjectIdMismatch} from './storeSchemasAction'\n\nexport interface SchemaListFlags {\n json: boolean\n id: string\n path: string\n}\n\ntype PrintSchemaListArgs = {\n schemas: SanityDocument[]\n output: CliOutputter\n dataset: string\n projectId: string\n path: string\n}\n\nexport const SANITY_WORKSPACE_SCHEMA_TYPE = 'sanity.workspace.schema'\n\nconst printSchemaList = ({\n schemas,\n output,\n}: Omit<PrintSchemaListArgs, 'path' | 'dataset' | 'projectId'>) => {\n const ordered = sortBy(\n schemas.map(({_createdAt: createdAt, _id: id, workspace}) => {\n return [id, workspace.name, workspace.dataset, workspace.projectId, createdAt].map(String)\n }),\n ['createdAt'],\n )\n const headings = ['Id', 'Workspace', 'Dataset', 'ProjectId', 'CreatedAt']\n const rows = ordered.reverse()\n\n const maxWidths = rows.reduce(\n (max, row) => row.map((current, index) => Math.max(size(current), max[index])),\n headings.map((str) => size(str)),\n )\n\n const printRow = (row: string[]) => row.map((col, i) => `${col}`.padEnd(maxWidths[i])).join(' ')\n\n output.print(chalk.cyan(printRow(headings)))\n rows.forEach((row) => output.print(printRow(row)))\n}\n\nexport default async function fetchSchemaAction(\n args: CliCommandArguments<SchemaListFlags>,\n context: CliCommandContext,\n): Promise<void> {\n const flags = args.extOptions\n const {apiClient, output} = context\n const client = apiClient({\n requireUser: true,\n requireProject: true,\n }).withConfig({apiVersion: 'v2024-08-01'})\n\n const projectId = client.config().projectId\n\n if (!projectId) {\n output.error('Project ID must be defined.')\n return\n }\n\n const manifestPath = getManifestPath(context, flags.path)\n const manifest = readManifest(manifestPath, output)\n\n // Gather all schemas\n const results = await Promise.allSettled(\n uniqBy<ManifestWorkspaceFile>(manifest.workspaces, 'dataset').map(async (workspace) => {\n throwIfProjectIdMismatch(workspace, projectId)\n if (flags.id) {\n // Fetch a specific schema by id\n return await client\n .withConfig({\n dataset: workspace.dataset,\n projectId: workspace.projectId,\n })\n .getDocument(flags.id)\n }\n // Fetch all schemas\n return await client\n .withConfig({\n dataset: workspace.dataset,\n projectId: workspace.projectId,\n useCdn: false,\n })\n .fetch<SanityDocument[]>(`*[_type == $type]`, {\n type: SANITY_WORKSPACE_SCHEMA_TYPE,\n })\n }),\n )\n\n // Log errors and collect successful results\n const schemas = results\n .map((result, index) => {\n if (result.status === 'rejected') {\n const workspace = manifest.workspaces[index]\n output.error(\n chalk.red(\n `Failed to fetch schemas for workspace '${workspace.name}': ${result.reason.message}`,\n ),\n )\n return []\n }\n return result.value\n })\n .flat()\n\n if (schemas.length === 0) {\n output.error(`No schemas found`)\n return\n }\n\n if (flags.json) {\n output.print(`${JSON.stringify(flags.id ? schemas[0] : schemas, null, 2)}`)\n } else {\n printSchemaList({schemas: schemas as SanityDocument[], output})\n }\n}\n","import {readFileSync} from 'node:fs'\nimport path, {join, resolve} from 'node:path'\n\nimport {type CliCommandArguments, type CliCommandContext, type CliOutputter} from '@sanity/cli'\nimport chalk from 'chalk'\nimport {type Ora} from 'ora'\n\nimport {type ManifestSchemaType, type ManifestWorkspaceFile} from '../../../manifest/manifestTypes'\nimport {MANIFEST_FILENAME} from '../manifest/extractManifestAction'\nimport {SANITY_WORKSPACE_SCHEMA_TYPE} from './schemaListAction'\n\nexport interface StoreManifestSchemasFlags {\n 'path'?: string\n 'workspace'?: string\n 'id-prefix'?: string\n 'schema-required'?: boolean\n 'verbose'?: boolean\n}\n\nexport const getManifestPath = (context: CliCommandContext, customPath?: string) => {\n const defaultOutputDir = resolve(join(context.workDir, 'dist'))\n\n const outputDir = resolve(defaultOutputDir)\n const defaultStaticPath = join(outputDir, 'static')\n\n const staticPath = customPath ?? defaultStaticPath\n const manifestPath = path.resolve(process.cwd(), staticPath)\n return manifestPath\n}\n\nexport const readManifest = (readPath: string, output?: CliOutputter, spinner?: Ora) => {\n try {\n return JSON.parse(readFileSync(`${readPath}/${MANIFEST_FILENAME}`, 'utf-8'))\n } catch (error) {\n const errorMessage = `Manifest not found at ${readPath}/${MANIFEST_FILENAME}`\n if (spinner) spinner.fail(errorMessage)\n if (output) output.error(errorMessage)\n throw error\n }\n}\n\n// At the moment schema store deos not support studios where workspaces have multiple projects\nexport const throwIfProjectIdMismatch = (\n workspace: ManifestWorkspaceFile,\n projectId: string,\n): void => {\n if (workspace.projectId !== projectId) {\n throw new Error(\n `↳ No permissions to store schema for workspace ${workspace.name} with projectId: ${workspace.projectId}`,\n )\n }\n}\n\nexport default async function storeSchemasAction(\n args: CliCommandArguments<StoreManifestSchemasFlags>,\n context: CliCommandContext,\n): Promise<Error | undefined> {\n const flags = args.extOptions\n\n const schemaRequired = flags['schema-required']\n const workspaceName = flags.workspace\n const idPrefix = flags['id-prefix']\n const verbose = flags.verbose\n\n if (typeof flags.path === 'boolean') throw new Error('Path is empty')\n if (typeof idPrefix === 'boolean') throw new Error('Id prefix is empty')\n if (typeof workspaceName === 'boolean') throw new Error('Workspace is empty')\n\n const {output, apiClient} = context\n\n const spinner = output.spinner({}).start('Storing schemas')\n\n const manifestPath = getManifestPath(context, flags.path)\n\n try {\n const client = apiClient({\n requireUser: true,\n requireProject: true,\n }).withConfig({apiVersion: 'v2024-08-01'})\n\n const projectId = client.config().projectId\n if (!projectId) throw new Error('Project ID is not defined')\n\n const manifest = readManifest(manifestPath, output, spinner)\n\n let storedCount = 0\n\n let error: Error | undefined\n\n const saveSchema = async (workspace: ManifestWorkspaceFile) => {\n const id = `${idPrefix ? `${idPrefix}.` : ''}${SANITY_WORKSPACE_SCHEMA_TYPE}.${workspace.name}`\n try {\n throwIfProjectIdMismatch(workspace, projectId)\n const schema = JSON.parse(\n readFileSync(`${manifestPath}/${workspace.schema}`, 'utf-8'),\n ) as ManifestSchemaType\n await client\n .withConfig({\n dataset: workspace.dataset,\n projectId: workspace.projectId,\n })\n .transaction()\n .createOrReplace({_type: SANITY_WORKSPACE_SCHEMA_TYPE, _id: id, workspace, schema})\n .commit()\n storedCount++\n spinner.text = `Stored ${storedCount} schemas so far...`\n if (verbose) spinner.succeed(`Schema stored for workspace '${workspace.name}'`)\n } catch (err) {\n error = err\n spinner.fail(\n `Error storing schema for workspace '${workspace.name}':\\n${chalk.red(`${err.message}`)}`,\n )\n if (schemaRequired) throw err\n } finally {\n if (verbose) {\n output.print(\n chalk.gray(`↳ schemaId: ${id}, projectId: ${projectId}, dataset: ${workspace.dataset}`),\n )\n }\n }\n }\n\n // If a workspace name is provided, only save the schema for that workspace\n if (workspaceName) {\n const workspaceToSave = manifest.workspaces.find(\n (workspace: ManifestWorkspaceFile) => workspace.name === workspaceName,\n )\n if (!workspaceToSave) {\n spinner.fail(`Workspace ${workspaceName} not found in manifest`)\n throw new Error(`Workspace ${workspaceName} not found in manifest: projectID: ${projectId}`)\n }\n await saveSchema(workspaceToSave as ManifestWorkspaceFile)\n spinner.succeed(`Stored 1 schemas`)\n } else {\n await Promise.all(\n manifest.workspaces.map(async (workspace: ManifestWorkspaceFile): Promise<void> => {\n await saveSchema(workspace)\n }),\n )\n spinner.succeed(`Stored ${storedCount}/${manifest.workspaces.length} schemas`)\n }\n\n if (error) throw error\n return undefined\n } catch (err) {\n // if this flag is set, throw the error and exit without deploying otherwise just log the error\n if (schemaRequired) throw err\n return err\n } finally {\n output.print(`${chalk.gray('↳ List stored schemas with:')} ${chalk.cyan('sanity schema list')}`)\n }\n}\n"],"names":["SANITY_WORKSPACE_SCHEMA_TYPE","printSchemaList","schemas","output","ordered","sortBy","map","_createdAt","createdAt","_id","id","workspace","name","dataset","projectId","String","headings","rows","reverse","maxWidths","reduce","max","row","current","index","Math","size","str","printRow","col","i","padEnd","join","print","chalk","cyan","forEach","fetchSchemaAction","args","context","flags","extOptions","apiClient","client","requireUser","requireProject","withConfig","apiVersion","config","error","manifestPath","getManifestPath","path","manifest","readManifest","Promise","allSettled","uniqBy","workspaces","throwIfProjectIdMismatch","getDocument","useCdn","fetch","type","result","status","red","reason","message","value","flat","length","json","JSON","stringify","customPath","defaultOutputDir","resolve","workDir","outputDir","defaultStaticPath","staticPath","process","cwd","readPath","spinner","parse","readFileSync","MANIFEST_FILENAME","errorMessage","fail","Error","storeSchemasAction","schemaRequired","workspaceName","idPrefix","verbose","start","storedCount","saveSchema","schema","transaction","createOrReplace","_type","commit","text","succeed","err","gray","workspaceToSave","find","all"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const SANITY_VERSION = "3.77.3-server-side-schemas.14+14138a1291";
2
+ const SANITY_VERSION = "3.77.3-server-side-schemas.15+9ffaf1fe9f";
3
3
  exports.SANITY_VERSION = SANITY_VERSION;
4
4
  //# sourceMappingURL=version.js.map
@@ -1,4 +1,4 @@
1
- const SANITY_VERSION = "3.77.3-server-side-schemas.14+14138a1291";
1
+ const SANITY_VERSION = "3.77.3-server-side-schemas.15+9ffaf1fe9f";
2
2
  export {
3
3
  SANITY_VERSION
4
4
  };
@@ -1,4 +1,4 @@
1
- const SANITY_VERSION = "3.77.3-server-side-schemas.14+14138a1291";
1
+ const SANITY_VERSION = "3.77.3-server-side-schemas.15+9ffaf1fe9f";
2
2
  export {
3
3
  SANITY_VERSION
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity",
3
- "version": "3.77.3-server-side-schemas.14+14138a1291",
3
+ "version": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
4
4
  "description": "Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches",
5
5
  "keywords": [
6
6
  "sanity",
@@ -160,11 +160,11 @@
160
160
  "@rexxars/react-json-inspector": "^9.0.1",
161
161
  "@sanity/asset-utils": "^2.0.6",
162
162
  "@sanity/bifur-client": "^0.4.1",
163
- "@sanity/cli": "3.77.3-server-side-schemas.14+14138a1291",
163
+ "@sanity/cli": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
164
164
  "@sanity/client": "^6.28.1",
165
165
  "@sanity/color": "^3.0.0",
166
166
  "@sanity/comlink": "^3.0.1",
167
- "@sanity/diff": "3.77.3-server-side-schemas.14+14138a1291",
167
+ "@sanity/diff": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
168
168
  "@sanity/diff-match-patch": "^3.1.1",
169
169
  "@sanity/diff-patch": "^5.0.0",
170
170
  "@sanity/eventsource": "^5.0.0",
@@ -174,15 +174,15 @@
174
174
  "@sanity/import": "^3.37.9",
175
175
  "@sanity/insert-menu": "^1.1.3",
176
176
  "@sanity/logos": "^2.1.13",
177
- "@sanity/migrate": "3.77.3-server-side-schemas.14+14138a1291",
178
- "@sanity/mutator": "3.77.3-server-side-schemas.14+14138a1291",
177
+ "@sanity/migrate": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
178
+ "@sanity/mutator": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
179
179
  "@sanity/presentation-comlink": "^1.0.8",
180
180
  "@sanity/preview-url-secret": "^2.1.4",
181
- "@sanity/schema": "3.77.3-server-side-schemas.14+14138a1291",
181
+ "@sanity/schema": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
182
182
  "@sanity/telemetry": "^0.7.7",
183
- "@sanity/types": "3.77.3-server-side-schemas.14+14138a1291",
183
+ "@sanity/types": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
184
184
  "@sanity/ui": "^2.14.3",
185
- "@sanity/util": "3.77.3-server-side-schemas.14+14138a1291",
185
+ "@sanity/util": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
186
186
  "@sanity/uuid": "^3.0.2",
187
187
  "@sentry/react": "^8.33.0",
188
188
  "@tanstack/react-table": "^8.16.0",
@@ -280,7 +280,7 @@
280
280
  "@repo/dev-aliases": "3.77.2",
281
281
  "@repo/package.config": "3.77.2",
282
282
  "@repo/test-config": "3.77.2",
283
- "@sanity/codegen": "3.77.3-server-side-schemas.14+14138a1291",
283
+ "@sanity/codegen": "3.77.3-server-side-schemas.15+9ffaf1fe9f",
284
284
  "@sanity/generate-help-url": "^3.0.0",
285
285
  "@sanity/pkg-utils": "6.13.4",
286
286
  "@sanity/tsdoc": "1.0.169",
@@ -325,5 +325,5 @@
325
325
  "engines": {
326
326
  "node": ">=18"
327
327
  },
328
- "gitHead": "14138a1291b2e06cc98ad3b444a6d8f041bbe3e5"
328
+ "gitHead": "9ffaf1fe9f0b8eecb91741bc04a8ebdd13190ec7"
329
329
  }
@@ -107,7 +107,7 @@ async function extractManifest(
107
107
 
108
108
  spinner.succeed(`Extracted manifest (${manifestDuration.toFixed()}ms)`)
109
109
  } catch (err) {
110
- spinner.fail(err)
110
+ spinner.fail(err.message)
111
111
  output.print(chalk.gray(EXTRACT_FAILURE_MESSAGE))
112
112
  throw err
113
113
  }
@@ -115,7 +115,7 @@ export default async function fetchSchemaAction(
115
115
  }
116
116
 
117
117
  if (flags.json) {
118
- output.print(`${JSON.stringify(schemas, null, 2)}`)
118
+ output.print(`${JSON.stringify(flags.id ? schemas[0] : schemas, null, 2)}`)
119
119
  } else {
120
120
  printSchemaList({schemas: schemas as SanityDocument[], output})
121
121
  }