@sanity/cli 3.95.1-next.60.fa00c5fdaf → 3.95.1-next.7.d41f20209f

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.
@@ -79013,6 +79013,208 @@ function prompt(questions) {
79013
79013
  }
79014
79014
  prompt.Separator = inquirer.Separator;
79015
79015
  prompt.single = (question) => prompt([{ ...question, name: "value" }]).then((answers) => answers.value);
79016
+ class CommandRunner {
79017
+ handlers;
79018
+ commands;
79019
+ commandGroups;
79020
+ constructor(handlers, commands = baseCommands) {
79021
+ this.handlers = handlers, this.commands = lodashExports.sortBy(commands, "name"), this.commandGroups = {};
79022
+ for (const cmd of this.commands) {
79023
+ const group = "group" in cmd && cmd.group || "default";
79024
+ this.commandGroups[group] = this.commandGroups[group] || [], this.commandGroups[group].push(cmd);
79025
+ }
79026
+ if (!handlers.outputter || !handlers.prompter)
79027
+ throw new Error("`prompter` and `outputter` handlers must be defined");
79028
+ }
79029
+ async runCommand(commandOrGroup, args, options2) {
79030
+ if (!commandOrGroup)
79031
+ return this.handlers.outputter.print(generateCommandsDocumentation(this.commandGroups)), Promise.resolve();
79032
+ const cmdArgs = lodashExports.cloneDeep(args), subCommandName = args.argsWithoutOptions[0], commandInfo = this.resolveCommand(commandOrGroup, subCommandName);
79033
+ if (!commandInfo)
79034
+ throw new Error(getNoSuchCommandText(commandOrGroup, subCommandName, this.commandGroups));
79035
+ const command2 = commandInfo.command;
79036
+ !isCommandGroup(command2) && command2.group && command2.group !== "default" && (cmdArgs.argsWithoutOptions = args.argsWithoutOptions.slice(1));
79037
+ const output = this.handlers.outputter, prompt2 = this.handlers.prompter, { cliConfig, ...commandOptions } = options2, apiClient = getClientWrapper(
79038
+ cliConfig?.config?.api || null,
79039
+ cliConfig?.path || (cliConfig?.version === 2 ? "sanity.json" : "sanity.cli.js")
79040
+ ), context = {
79041
+ output,
79042
+ prompt: prompt2,
79043
+ apiClient,
79044
+ chalk: chalk__default.default,
79045
+ cliPackageManager,
79046
+ ...commandOptions,
79047
+ commandRunner: this,
79048
+ ...getVersionedContextParams(cliConfig)
79049
+ };
79050
+ if (isCommandGroup(command2))
79051
+ return context.output.print(generateCommandsDocumentation(this.commandGroups, command2.name));
79052
+ if (typeof command2.action != "function") {
79053
+ const cmdName = command2.name || commandOrGroup || "<unknown>";
79054
+ loadEnv.debug(`Command "${cmdName}" doesnt have a valid "action"-property, showing help`);
79055
+ const groupName = command2.group && command2.group !== "default" ? command2.group : null;
79056
+ return context.output.print(generateCommandDocumentation(command2, groupName, subCommandName));
79057
+ }
79058
+ return loadEnv.debug(`Running command "${command2.name}"`), command2.action(cmdArgs, context);
79059
+ }
79060
+ resolveCommand(commandOrGroup, subCommandName) {
79061
+ if (this.commandGroups[commandOrGroup] && subCommandName) {
79062
+ loadEnv.debug(`Found group for name "${commandOrGroup}", resolving subcommand`);
79063
+ const subCommand = this.resolveSubcommand(
79064
+ this.commandGroups[commandOrGroup],
79065
+ subCommandName,
79066
+ commandOrGroup
79067
+ );
79068
+ return loadEnv.debug(
79069
+ subCommand ? `Subcommand resolved to "${subCommand.commandName}"` : `Subcommand with name "${subCommandName}" not found`
79070
+ ), subCommand;
79071
+ }
79072
+ loadEnv.debug(`No group found with name "${commandOrGroup}", looking for command`);
79073
+ const command2 = this.commandGroups.default.find((cmd) => cmd.name === commandOrGroup);
79074
+ return command2 ? (loadEnv.debug(`Found command in default group with name "${commandOrGroup}"`), {
79075
+ command: command2,
79076
+ commandName: command2.name,
79077
+ parentName: "default",
79078
+ isGroup: !1,
79079
+ isCommand: !0
79080
+ }) : (loadEnv.debug(`No default command with name "${commandOrGroup}" found, giving up`), null);
79081
+ }
79082
+ resolveSubcommand(group, subCommandName, parentGroupName) {
79083
+ if (!subCommandName)
79084
+ return null;
79085
+ const subCommand = group.find((cmd) => cmd.name === subCommandName);
79086
+ if (!subCommand)
79087
+ throw new Error(getNoSuchCommandText(subCommandName, parentGroupName, this.commandGroups));
79088
+ return {
79089
+ command: subCommand,
79090
+ commandName: subCommandName,
79091
+ parentName: parentGroupName,
79092
+ isGroup: !1,
79093
+ isCommand: !0
79094
+ };
79095
+ }
79096
+ resolveHelpForGroup() {
79097
+ const command2 = this.commandGroups.default.find((cmd) => cmd.name === "help");
79098
+ if (!command2)
79099
+ throw new Error("Failed to find default `help` command");
79100
+ return {
79101
+ command: command2,
79102
+ commandName: "help",
79103
+ isGroup: !1,
79104
+ isCommand: !0
79105
+ };
79106
+ }
79107
+ }
79108
+ function getCliRunner(commands) {
79109
+ return new CommandRunner(
79110
+ {
79111
+ outputter: cliOutputter,
79112
+ prompter: prompt
79113
+ },
79114
+ commands
79115
+ );
79116
+ }
79117
+ function getVersionedContextParams(cliConfig) {
79118
+ return cliConfig?.version === 2 ? {
79119
+ sanityMajorVersion: 2,
79120
+ cliConfig: cliConfig?.config || void 0,
79121
+ cliConfigPath: cliConfig?.path || void 0
79122
+ } : {
79123
+ sanityMajorVersion: 3,
79124
+ cliConfig: cliConfig?.config || void 0,
79125
+ cliConfigPath: cliConfig?.path || void 0
79126
+ };
79127
+ }
79128
+ function detectRuntime() {
79129
+ return "Deno" in globalThis ? "deno" : "Bun" in globalThis ? "bun" : "node";
79130
+ }
79131
+ async function mergeCommands(baseCommands2, corePath, options2) {
79132
+ if (!corePath)
79133
+ return baseCommands2;
79134
+ const { cliVersion } = options2, coreImport = getCliConfig.dynamicRequire(corePath);
79135
+ semver__default.default.coerce(cliVersion);
79136
+ const core2 = "cliProjectCommands" in coreImport ? coreImport.cliProjectCommands : coreImport;
79137
+ return baseCommands2.concat(core2.commands).map(addDefaultGroup).reverse().reduce(
79138
+ (cmds, cmd) => {
79139
+ const group = isCommandGroup(cmd) ? void 0 : cmd.group;
79140
+ return lodashExports.find(cmds, { name: cmd.name, group }) || cmds.push(cmd), cmds;
79141
+ },
79142
+ []
79143
+ );
79144
+ }
79145
+ function addDefaultGroup(cmd) {
79146
+ return !isCommandGroup(cmd) && !cmd.group && (cmd.group = "default"), cmd;
79147
+ }
79148
+ var escapeStringRegexp, hasRequiredEscapeStringRegexp;
79149
+ function requireEscapeStringRegexp() {
79150
+ return hasRequiredEscapeStringRegexp || (hasRequiredEscapeStringRegexp = 1, escapeStringRegexp = (string) => {
79151
+ if (typeof string != "string")
79152
+ throw new TypeError("Expected a string");
79153
+ return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
79154
+ }), escapeStringRegexp;
79155
+ }
79156
+ var cleanStack$1, hasRequiredCleanStack;
79157
+ function requireCleanStack() {
79158
+ if (hasRequiredCleanStack) return cleanStack$1;
79159
+ hasRequiredCleanStack = 1;
79160
+ const os2 = require$$0__default$2.default, escapeStringRegexp2 = requireEscapeStringRegexp(), extractPathRegex = /\s+at.*[(\s](.*)\)?/, pathRegex = /^(?:(?:(?:node|(?:(?:node:)?internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)(?:\.js)?:\d+:\d+)|native)/, homeDir = typeof os2.homedir > "u" ? "" : os2.homedir();
79161
+ return cleanStack$1 = (stack2, { pretty = !1, basePath } = {}) => {
79162
+ const basePathRegex = basePath && new RegExp(`(at | \\()${escapeStringRegexp2(basePath)}`, "g");
79163
+ return stack2.replace(/\\/g, "/").split(`
79164
+ `).filter((line3) => {
79165
+ const pathMatches = line3.match(extractPathRegex);
79166
+ if (pathMatches === null || !pathMatches[1])
79167
+ return !0;
79168
+ const match2 = pathMatches[1];
79169
+ return match2.includes(".app/Contents/Resources/electron.asar") || match2.includes(".app/Contents/Resources/default_app.asar") ? !1 : !pathRegex.test(match2);
79170
+ }).filter((line3) => line3.trim() !== "").map((line3) => (basePathRegex && (line3 = line3.replace(basePathRegex, "$1")), pretty && (line3 = line3.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, "~")))), line3)).join(`
79171
+ `);
79172
+ }, cleanStack$1;
79173
+ }
79174
+ var cleanStackExports = requireCleanStack(), cleanStack = /* @__PURE__ */ loadEnv.getDefaultExportFromCjs(cleanStackExports);
79175
+ const options = { pretty: process.platform !== "win32" };
79176
+ function neatStack(error2) {
79177
+ if (typeof error2 == "string")
79178
+ return chalk.red(cleanStack(error2, options));
79179
+ if (error2 === null || typeof error2 != "object" || typeof error2.stack != "string")
79180
+ return chalk.red(util$4.inspect(error2));
79181
+ const title = error2.toString(), stack2 = cleanStack(error2.stack, options);
79182
+ return stack2.startsWith(title) ? chalk.red(`${title}${chalk.dim(cleanStack(error2.stack, options).slice(title.length))}`) : chalk.red(stack2);
79183
+ }
79184
+ var minimistExports = requireMinimist(), minimist = /* @__PURE__ */ loadEnv.getDefaultExportFromCjs(minimistExports);
79185
+ function parseArguments(argv = process.argv) {
79186
+ const {
79187
+ _,
79188
+ h,
79189
+ help: help2,
79190
+ d,
79191
+ debug: debug2,
79192
+ v,
79193
+ version: version2,
79194
+ "--": extraArguments,
79195
+ ...extOptions
79196
+ } = minimist(argv.slice(2), {
79197
+ "--": !0,
79198
+ boolean: ["h", "help", "d", "debug", "v", "version"],
79199
+ string: ["_"]
79200
+ }), [groupOrCommand, ...argsWithoutOptions] = _;
79201
+ return {
79202
+ groupOrCommand,
79203
+ argv,
79204
+ extOptions,
79205
+ argsWithoutOptions,
79206
+ extraArguments: extraArguments || [],
79207
+ // prettier-ignore
79208
+ coreOptions: {
79209
+ h,
79210
+ help: help2,
79211
+ d,
79212
+ debug: debug2,
79213
+ v,
79214
+ version: version2
79215
+ }
79216
+ };
79217
+ }
79016
79218
  var boxen$1 = { exports: {} }, stringWidth = { exports: {} }, ansiRegex, hasRequiredAnsiRegex;
79017
79219
  function requireAnsiRegex() {
79018
79220
  return hasRequiredAnsiRegex || (hasRequiredAnsiRegex = 1, ansiRegex = ({ onlyFirst = !1 } = {}) => {
@@ -79338,219 +79540,6 @@ function requireBoxen() {
79338
79540
  }, boxen$1.exports._borderStyles = cliBoxes2, boxen$1.exports;
79339
79541
  }
79340
79542
  var boxenExports = requireBoxen(), boxen = /* @__PURE__ */ loadEnv.getDefaultExportFromCjs(boxenExports);
79341
- function printNewMajorVersionMessage(context) {
79342
- const { chalk: chalk2 } = context, message = `${chalk2.yellow.bold(
79343
- "The `sanity` package is moving to v4 on July 15 and will require Node.js 20+."
79344
- )}
79345
- Learn what this means for your apps at https://www.sanity.io/blog/a-major-version-bump-for-a-minor-reason`, boxedMessage = boxen(message, {
79346
- padding: 1,
79347
- margin: 1
79348
- });
79349
- context.output.print(boxedMessage);
79350
- }
79351
- class CommandRunner {
79352
- handlers;
79353
- commands;
79354
- commandGroups;
79355
- constructor(handlers, commands = baseCommands) {
79356
- this.handlers = handlers, this.commands = lodashExports.sortBy(commands, "name"), this.commandGroups = {};
79357
- for (const cmd of this.commands) {
79358
- const group = "group" in cmd && cmd.group || "default";
79359
- this.commandGroups[group] = this.commandGroups[group] || [], this.commandGroups[group].push(cmd);
79360
- }
79361
- if (!handlers.outputter || !handlers.prompter)
79362
- throw new Error("`prompter` and `outputter` handlers must be defined");
79363
- }
79364
- // eslint-disable-next-line complexity
79365
- async runCommand(commandOrGroup, args, options2) {
79366
- if (!commandOrGroup)
79367
- return this.handlers.outputter.print(generateCommandsDocumentation(this.commandGroups)), Promise.resolve();
79368
- const cmdArgs = lodashExports.cloneDeep(args), subCommandName = args.argsWithoutOptions[0], commandInfo = this.resolveCommand(commandOrGroup, subCommandName);
79369
- if (!commandInfo)
79370
- throw new Error(getNoSuchCommandText(commandOrGroup, subCommandName, this.commandGroups));
79371
- const command2 = commandInfo.command;
79372
- !isCommandGroup(command2) && command2.group && command2.group !== "default" && (cmdArgs.argsWithoutOptions = args.argsWithoutOptions.slice(1));
79373
- const output = this.handlers.outputter, prompt2 = this.handlers.prompter, { cliConfig, ...commandOptions } = options2, apiClient = getClientWrapper(
79374
- cliConfig?.config?.api || null,
79375
- cliConfig?.path || (cliConfig?.version === 2 ? "sanity.json" : "sanity.cli.js")
79376
- ), context = {
79377
- output,
79378
- prompt: prompt2,
79379
- apiClient,
79380
- chalk: chalk__default.default,
79381
- cliPackageManager,
79382
- ...commandOptions,
79383
- commandRunner: this,
79384
- ...getVersionedContextParams(cliConfig)
79385
- };
79386
- if (isCommandGroup(command2))
79387
- return context.output.print(generateCommandsDocumentation(this.commandGroups, command2.name));
79388
- if (typeof command2.action != "function") {
79389
- const cmdName = command2.name || commandOrGroup || "<unknown>";
79390
- loadEnv.debug(`Command "${cmdName}" doesnt have a valid "action"-property, showing help`);
79391
- const groupName = command2.group && command2.group !== "default" ? command2.group : null;
79392
- return context.output.print(generateCommandDocumentation(command2, groupName, subCommandName));
79393
- }
79394
- return loadEnv.debug(`Running command "${command2.name}"`), cmdArgs.extOptions["hide-major-message"] || printNewMajorVersionMessage(context), command2.action(cmdArgs, context);
79395
- }
79396
- resolveCommand(commandOrGroup, subCommandName) {
79397
- if (this.commandGroups[commandOrGroup] && subCommandName) {
79398
- loadEnv.debug(`Found group for name "${commandOrGroup}", resolving subcommand`);
79399
- const subCommand = this.resolveSubcommand(
79400
- this.commandGroups[commandOrGroup],
79401
- subCommandName,
79402
- commandOrGroup
79403
- );
79404
- return loadEnv.debug(
79405
- subCommand ? `Subcommand resolved to "${subCommand.commandName}"` : `Subcommand with name "${subCommandName}" not found`
79406
- ), subCommand;
79407
- }
79408
- loadEnv.debug(`No group found with name "${commandOrGroup}", looking for command`);
79409
- const command2 = this.commandGroups.default.find((cmd) => cmd.name === commandOrGroup);
79410
- return command2 ? (loadEnv.debug(`Found command in default group with name "${commandOrGroup}"`), {
79411
- command: command2,
79412
- commandName: command2.name,
79413
- parentName: "default",
79414
- isGroup: !1,
79415
- isCommand: !0
79416
- }) : (loadEnv.debug(`No default command with name "${commandOrGroup}" found, giving up`), null);
79417
- }
79418
- resolveSubcommand(group, subCommandName, parentGroupName) {
79419
- if (!subCommandName)
79420
- return null;
79421
- const subCommand = group.find((cmd) => cmd.name === subCommandName);
79422
- if (!subCommand)
79423
- throw new Error(getNoSuchCommandText(subCommandName, parentGroupName, this.commandGroups));
79424
- return {
79425
- command: subCommand,
79426
- commandName: subCommandName,
79427
- parentName: parentGroupName,
79428
- isGroup: !1,
79429
- isCommand: !0
79430
- };
79431
- }
79432
- resolveHelpForGroup() {
79433
- const command2 = this.commandGroups.default.find((cmd) => cmd.name === "help");
79434
- if (!command2)
79435
- throw new Error("Failed to find default `help` command");
79436
- return {
79437
- command: command2,
79438
- commandName: "help",
79439
- isGroup: !1,
79440
- isCommand: !0
79441
- };
79442
- }
79443
- }
79444
- function getCliRunner(commands) {
79445
- return new CommandRunner(
79446
- {
79447
- outputter: cliOutputter,
79448
- prompter: prompt
79449
- },
79450
- commands
79451
- );
79452
- }
79453
- function getVersionedContextParams(cliConfig) {
79454
- return cliConfig?.version === 2 ? {
79455
- sanityMajorVersion: 2,
79456
- cliConfig: cliConfig?.config || void 0,
79457
- cliConfigPath: cliConfig?.path || void 0
79458
- } : {
79459
- sanityMajorVersion: 3,
79460
- cliConfig: cliConfig?.config || void 0,
79461
- cliConfigPath: cliConfig?.path || void 0
79462
- };
79463
- }
79464
- function detectRuntime() {
79465
- return "Deno" in globalThis ? "deno" : "Bun" in globalThis ? "bun" : "node";
79466
- }
79467
- async function mergeCommands(baseCommands2, corePath, options2) {
79468
- if (!corePath)
79469
- return baseCommands2;
79470
- const { cliVersion } = options2, coreImport = getCliConfig.dynamicRequire(corePath);
79471
- semver__default.default.coerce(cliVersion);
79472
- const core2 = "cliProjectCommands" in coreImport ? coreImport.cliProjectCommands : coreImport;
79473
- return baseCommands2.concat(core2.commands).map(addDefaultGroup).reverse().reduce(
79474
- (cmds, cmd) => {
79475
- const group = isCommandGroup(cmd) ? void 0 : cmd.group;
79476
- return lodashExports.find(cmds, { name: cmd.name, group }) || cmds.push(cmd), cmds;
79477
- },
79478
- []
79479
- );
79480
- }
79481
- function addDefaultGroup(cmd) {
79482
- return !isCommandGroup(cmd) && !cmd.group && (cmd.group = "default"), cmd;
79483
- }
79484
- var escapeStringRegexp, hasRequiredEscapeStringRegexp;
79485
- function requireEscapeStringRegexp() {
79486
- return hasRequiredEscapeStringRegexp || (hasRequiredEscapeStringRegexp = 1, escapeStringRegexp = (string) => {
79487
- if (typeof string != "string")
79488
- throw new TypeError("Expected a string");
79489
- return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
79490
- }), escapeStringRegexp;
79491
- }
79492
- var cleanStack$1, hasRequiredCleanStack;
79493
- function requireCleanStack() {
79494
- if (hasRequiredCleanStack) return cleanStack$1;
79495
- hasRequiredCleanStack = 1;
79496
- const os2 = require$$0__default$2.default, escapeStringRegexp2 = requireEscapeStringRegexp(), extractPathRegex = /\s+at.*[(\s](.*)\)?/, pathRegex = /^(?:(?:(?:node|(?:(?:node:)?internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)(?:\.js)?:\d+:\d+)|native)/, homeDir = typeof os2.homedir > "u" ? "" : os2.homedir();
79497
- return cleanStack$1 = (stack2, { pretty = !1, basePath } = {}) => {
79498
- const basePathRegex = basePath && new RegExp(`(at | \\()${escapeStringRegexp2(basePath)}`, "g");
79499
- return stack2.replace(/\\/g, "/").split(`
79500
- `).filter((line3) => {
79501
- const pathMatches = line3.match(extractPathRegex);
79502
- if (pathMatches === null || !pathMatches[1])
79503
- return !0;
79504
- const match2 = pathMatches[1];
79505
- return match2.includes(".app/Contents/Resources/electron.asar") || match2.includes(".app/Contents/Resources/default_app.asar") ? !1 : !pathRegex.test(match2);
79506
- }).filter((line3) => line3.trim() !== "").map((line3) => (basePathRegex && (line3 = line3.replace(basePathRegex, "$1")), pretty && (line3 = line3.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, "~")))), line3)).join(`
79507
- `);
79508
- }, cleanStack$1;
79509
- }
79510
- var cleanStackExports = requireCleanStack(), cleanStack = /* @__PURE__ */ loadEnv.getDefaultExportFromCjs(cleanStackExports);
79511
- const options = { pretty: process.platform !== "win32" };
79512
- function neatStack(error2) {
79513
- if (typeof error2 == "string")
79514
- return chalk.red(cleanStack(error2, options));
79515
- if (error2 === null || typeof error2 != "object" || typeof error2.stack != "string")
79516
- return chalk.red(util$4.inspect(error2));
79517
- const title = error2.toString(), stack2 = cleanStack(error2.stack, options);
79518
- return stack2.startsWith(title) ? chalk.red(`${title}${chalk.dim(cleanStack(error2.stack, options).slice(title.length))}`) : chalk.red(stack2);
79519
- }
79520
- var minimistExports = requireMinimist(), minimist = /* @__PURE__ */ loadEnv.getDefaultExportFromCjs(minimistExports);
79521
- function parseArguments(argv = process.argv) {
79522
- const {
79523
- _,
79524
- h,
79525
- help: help2,
79526
- d,
79527
- debug: debug2,
79528
- v,
79529
- version: version2,
79530
- "--": extraArguments,
79531
- ...extOptions
79532
- } = minimist(argv.slice(2), {
79533
- "--": !0,
79534
- boolean: ["h", "help", "d", "debug", "v", "version"],
79535
- string: ["_"]
79536
- }), [groupOrCommand, ...argsWithoutOptions] = _;
79537
- return {
79538
- groupOrCommand,
79539
- argv,
79540
- extOptions,
79541
- argsWithoutOptions,
79542
- extraArguments: extraArguments || [],
79543
- // prettier-ignore
79544
- coreOptions: {
79545
- h,
79546
- help: help2,
79547
- d,
79548
- debug: debug2,
79549
- v,
79550
- version: version2
79551
- }
79552
- };
79553
- }
79554
79543
  const TELEMETRY_DISCLOSED_CONFIG_KEY = "telemetryDisclosed";
79555
79544
  function telemetryDisclosure() {
79556
79545
  const userConfig = getUserConfig();