@sanity/plugin-kit 4.0.20 → 5.0.1

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.
Files changed (105) hide show
  1. package/assets/inject/semver-workflow/.github/workflows/main.yml +3 -3
  2. package/assets/inject/semver-workflow/.husky/commit-msg +0 -0
  3. package/assets/inject/semver-workflow/.husky/pre-commit +0 -0
  4. package/assets/inject/ui-workshop/src/__workshop__/props.tsx +2 -1
  5. package/bin/plugin-kit.js +3 -1
  6. package/dist/{_chunks-cjs/cli.js → _chunks-es/index.js} +53 -63
  7. package/dist/_chunks-es/index.js.map +1 -0
  8. package/dist/{_chunks-cjs/init2.js → _chunks-es/init.js} +25 -23
  9. package/dist/_chunks-es/init.js.map +1 -0
  10. package/dist/_chunks-es/init2.js +140 -0
  11. package/dist/_chunks-es/init2.js.map +1 -0
  12. package/{src/cmds/inject.ts → dist/_chunks-es/inject.js} +18 -32
  13. package/dist/{_chunks-cjs → _chunks-es}/inject.js.map +1 -1
  14. package/dist/_chunks-es/link-watch.js +91 -0
  15. package/dist/_chunks-es/link-watch.js.map +1 -0
  16. package/dist/_chunks-es/load-package-config.js +22 -0
  17. package/dist/_chunks-es/load-package-config.js.map +1 -0
  18. package/dist/_chunks-es/package.js +1759 -0
  19. package/dist/_chunks-es/package.js.map +1 -0
  20. package/dist/_chunks-es/package2.js +9 -0
  21. package/dist/{_chunks-cjs → _chunks-es}/package2.js.map +1 -1
  22. package/dist/_chunks-es/ts.js +171 -0
  23. package/dist/_chunks-es/ts.js.map +1 -0
  24. package/dist/_chunks-es/verify-package.js +92 -0
  25. package/dist/_chunks-es/verify-package.js.map +1 -0
  26. package/dist/_chunks-es/verify-studio.js +61 -0
  27. package/dist/_chunks-es/verify-studio.js.map +1 -0
  28. package/dist/_chunks-es/version.js +50 -0
  29. package/dist/_chunks-es/version.js.map +1 -0
  30. package/dist/index.d.ts +4 -1
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +4 -1
  33. package/dist/index.js.map +1 -1
  34. package/package.json +58 -116
  35. package/LICENSE +0 -21
  36. package/dist/_chunks-cjs/cli.js.map +0 -1
  37. package/dist/_chunks-cjs/init.js +0 -892
  38. package/dist/_chunks-cjs/init.js.map +0 -1
  39. package/dist/_chunks-cjs/init2.js.map +0 -1
  40. package/dist/_chunks-cjs/inject.js +0 -54
  41. package/dist/_chunks-cjs/link-watch.js +0 -84
  42. package/dist/_chunks-cjs/link-watch.js.map +0 -1
  43. package/dist/_chunks-cjs/package.js +0 -1809
  44. package/dist/_chunks-cjs/package.js.map +0 -1
  45. package/dist/_chunks-cjs/package2.js +0 -8
  46. package/dist/_chunks-cjs/ts.js +0 -160732
  47. package/dist/_chunks-cjs/ts.js.map +0 -1
  48. package/dist/_chunks-cjs/verify-package.js +0 -75
  49. package/dist/_chunks-cjs/verify-package.js.map +0 -1
  50. package/dist/_chunks-cjs/verify-studio.js +0 -57
  51. package/dist/_chunks-cjs/verify-studio.js.map +0 -1
  52. package/dist/_chunks-cjs/version.js +0 -51
  53. package/dist/_chunks-cjs/version.js.map +0 -1
  54. package/dist/cli.d.ts +0 -4
  55. package/dist/cli.js +0 -6
  56. package/dist/cli.js.map +0 -1
  57. package/src/actions/init.ts +0 -95
  58. package/src/actions/inject.ts +0 -399
  59. package/src/actions/link-watch.ts +0 -98
  60. package/src/actions/verify/types.ts +0 -56
  61. package/src/actions/verify/validations.ts +0 -505
  62. package/src/actions/verify/verify-common.ts +0 -93
  63. package/src/actions/verify-package.ts +0 -103
  64. package/src/actions/verify-studio.ts +0 -58
  65. package/src/cli.ts +0 -77
  66. package/src/cmds/index.ts +0 -20
  67. package/src/cmds/init.ts +0 -90
  68. package/src/cmds/link-watch.ts +0 -50
  69. package/src/cmds/verify-package.ts +0 -36
  70. package/src/cmds/verify-studio.ts +0 -36
  71. package/src/cmds/version.ts +0 -67
  72. package/src/configs/banned-packages.ts +0 -27
  73. package/src/configs/buildExtensions.ts +0 -1
  74. package/src/configs/default-source.ts +0 -64
  75. package/src/configs/eslint.ts +0 -51
  76. package/src/configs/forced-package-versions.ts +0 -12
  77. package/src/configs/git.ts +0 -68
  78. package/src/configs/pkg-config.ts +0 -30
  79. package/src/configs/prettier.ts +0 -11
  80. package/src/configs/tsconfig.ts +0 -78
  81. package/src/configs/uselessFiles.ts +0 -29
  82. package/src/constants.ts +0 -15
  83. package/src/dependencies/find.ts +0 -193
  84. package/src/dependencies/import-linter.ts +0 -95
  85. package/src/index.ts +0 -1
  86. package/src/npm/manager.ts +0 -44
  87. package/src/npm/package.ts +0 -427
  88. package/src/npm/publish.ts +0 -9
  89. package/src/npm/resolveLatestVersions.ts +0 -31
  90. package/src/presets/presets.ts +0 -54
  91. package/src/presets/renovatebot.ts +0 -21
  92. package/src/presets/semver-workflow.ts +0 -186
  93. package/src/presets/ui-workshop.ts +0 -97
  94. package/src/presets/ui.ts +0 -67
  95. package/src/sanity/manifest.ts +0 -340
  96. package/src/sharedFlags.ts +0 -14
  97. package/src/util/command-parser.ts +0 -36
  98. package/src/util/errorToUndefined.ts +0 -7
  99. package/src/util/files.ts +0 -260
  100. package/src/util/log.ts +0 -44
  101. package/src/util/prompt.ts +0 -70
  102. package/src/util/readme.ts +0 -88
  103. package/src/util/request.ts +0 -11
  104. package/src/util/ts.ts +0 -19
  105. package/src/util/user.ts +0 -129
@@ -0,0 +1,92 @@
1
+ import path from "path";
2
+ import meow from "meow";
3
+ import chalk from "chalk";
4
+ import outdent from "outdent";
5
+ import { log, urls, cliName, defaultOutDir } from "./index.js";
6
+ import { readTSConfig, validateImports, runTscMaybe, createValidator, verifyFlags } from "./ts.js";
7
+ import { getPackage, validatePackageType, validatePkgUtilsVersion, validatePackageName, validatePkgUtilsDependency, validateSrcIndexFile, validateScripts, validateNodeEngine, disallowDuplicateEslintConfig, disallowDuplicatePrettierConfig, validateTsConfig, validatePluginSanityJson, validateBabelConfig, validateSanityDependencies, validateDeprecatedDependencies } from "./package.js";
8
+ import { loadPackageConfig } from "./load-package-config.js";
9
+ async function verifyPackage({ basePath, flags }) {
10
+ let errors = [];
11
+ const packageJson = await getPackage({ basePath, validate: !1 }), verifyConfig = packageJson.sanityPlugin?.verifyPackage || {};
12
+ for (const hardError of [
13
+ ...validatePackageType(packageJson),
14
+ ...validatePkgUtilsVersion({ basePath })
15
+ ])
16
+ errors.push(hardError), log.error(`
17
+ ${hardError}`);
18
+ let packageConfig;
19
+ try {
20
+ packageConfig = await loadPackageConfig({ basePath });
21
+ } catch (err) {
22
+ log.debug("Failed to load package.config: %s", err);
23
+ }
24
+ const outDir = packageConfig?.dist ?? defaultOutDir, tsconfig = packageConfig?.tsconfig ?? "tsconfig.json", validation = createValidator(verifyConfig, flags, errors), ts = await readTSConfig({ basePath, filename: tsconfig });
25
+ if (await validation("packageName", async () => validatePackageName(packageJson)), await validation("pkg-utils", async () => validatePkgUtilsDependency(packageJson)), await validation("srcIndex", async () => validateSrcIndexFile(basePath)), await validation("scripts", async () => validateScripts(packageJson)), await validation("nodeEngine", async () => validateNodeEngine(packageJson)), await validation(
26
+ "duplicateConfig",
27
+ async () => disallowDuplicateEslintConfig(basePath, packageJson)
28
+ ), await validation(
29
+ "duplicateConfig",
30
+ async () => disallowDuplicatePrettierConfig(basePath, packageJson)
31
+ ), ts && await validation("tsconfig", async () => validateTsConfig(ts, { basePath, outDir, tsconfig })), await validation("sanityV2Json", async () => validatePluginSanityJson({ basePath, packageJson })), await validation("babelConfig", async () => validateBabelConfig({ basePath })), await validation("dependencies", async () => validateSanityDependencies(packageJson)), await validation(
32
+ "deprecatedDependencies",
33
+ async () => validateDeprecatedDependencies(packageJson)
34
+ ), await validation("eslintImports", async () => validateImports({ basePath })), errors.length)
35
+ throw new Error(
36
+ outdent`
37
+ Detected validation issues!
38
+ To make this package Sanity v3 compatible, fix the issues starting from the top, or disable any checks you deem unnecessary.
39
+
40
+ These issues assume the package uses @sanity/plugin-kit defaults for development and building.
41
+ Refer to ${urls.pluginReadme} for configuration options.
42
+
43
+ More information is available here:
44
+ - Studio migration guide: ${urls.migrationGuideStudio}
45
+ - Plugin migration guide: ${urls.migrationGuidePlugin}
46
+ - Reference documentation: ${urls.refDocs}
47
+
48
+ ${chalk.grey(
49
+ `To fail-fast on first detected issue run:
50
+ npx ${cliName} verify-package' --single`
51
+ )}
52
+ `.trimStart()
53
+ );
54
+ await runTscMaybe(verifyConfig, ts), log.success(
55
+ outdent`
56
+ No outstanding upgrade issues detected.
57
+
58
+ Suggested next steps:
59
+ - Use plugin-kit to build and develop the plugin according to ${urls.pluginReadme}.
60
+ - Build the plugin and fix any compilation errors
61
+ - Test the plugin using the link-watch command
62
+ `.trim()
63
+ );
64
+ }
65
+ const description = "Verify that a Sanity plugin package is v3 compatible, and print upgrade steps if not.", help = `
66
+ Usage
67
+ $ ${cliName} verify-package [dir] [<args>]
68
+
69
+ Options
70
+ --single Enables fail-fast mode: Will only output the first validation that fails.
71
+ --silent Do not print info and warning messages
72
+ --verbose Log everything. This option conflicts with --silent
73
+ --version Output the version number
74
+ --help Output usage information
75
+
76
+ Each check will describe how they can be individually disabled.
77
+
78
+ Examples
79
+ # Verify Sanity plugin package in current directory
80
+ $ ${cliName} verify-package
81
+
82
+ # Verify Sanity plugin package in my-plugin directory in silent mode
83
+ $ ${cliName} verify-package my-plugin-directory --silent
84
+ `;
85
+ function run({ argv }) {
86
+ const cli = meow(help, { flags: verifyFlags, argv, description }), basePath = path.resolve(cli.input[0] || process.cwd());
87
+ return verifyPackage({ basePath, flags: cli.flags });
88
+ }
89
+ export {
90
+ run as default
91
+ };
92
+ //# sourceMappingURL=verify-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-package.js","sources":["../../src/actions/verify-package.ts","../../src/cmds/verify-package.ts"],"sourcesContent":["import chalk from 'chalk'\nimport outdent from 'outdent'\n\nimport {cliName, defaultOutDir, urls} from '../constants'\nimport {validateImports} from '../dependencies/import-linter'\nimport {getPackage} from '../npm/package'\nimport {loadPackageConfig} from '../util/load-package-config'\nimport log from '../util/log'\nimport {readTSConfig} from '../util/ts'\nimport {PackageJson} from './verify/types'\nimport {\n validateBabelConfig,\n validateNodeEngine,\n validatePackageName,\n validatePackageType,\n validatePkgUtilsDependency,\n validatePkgUtilsVersion,\n validatePluginSanityJson,\n validateDeprecatedDependencies,\n validateScripts,\n validateTsConfig,\n validateSanityDependencies,\n validateSrcIndexFile,\n disallowDuplicateEslintConfig,\n disallowDuplicatePrettierConfig,\n} from './verify/validations'\nimport {\n createValidator,\n runTscMaybe,\n VerifyFlags,\n VerifyPackageConfig,\n} from './verify/verify-common'\n\nexport async function verifyPackage({basePath, flags}: {basePath: string; flags: VerifyFlags}) {\n let errors: string[] = []\n\n const packageJson: PackageJson = await getPackage({basePath, validate: false})\n const verifyConfig: VerifyPackageConfig = packageJson.sanityPlugin?.verifyPackage || {}\n\n // Hard requirements (not configurable via sanityPlugin.verifyPackage): plugins must be ESM and\n // ship a compatible @sanity/pkg-utils, since plugin-kit loads package.config.ts through it.\n for (const hardError of [\n ...validatePackageType(packageJson),\n ...validatePkgUtilsVersion({basePath}),\n ]) {\n errors.push(hardError)\n log.error(`\\n${hardError}`)\n }\n\n // Load defensively: if the config can't be loaded (e.g. incompatible/missing pkg-utils), fall\n // back to defaults so the remaining checks still surface actionable issues.\n let packageConfig\n try {\n packageConfig = await loadPackageConfig({basePath})\n } catch (err) {\n log.debug('Failed to load package.config: %s', err)\n }\n const outDir = packageConfig?.dist ?? defaultOutDir\n const tsconfig = packageConfig?.tsconfig ?? 'tsconfig.json'\n\n const validation = createValidator(verifyConfig, flags, errors)\n\n const ts = await readTSConfig({basePath, filename: tsconfig})\n\n await validation('packageName', async () => validatePackageName(packageJson))\n await validation('pkg-utils', async () => validatePkgUtilsDependency(packageJson))\n await validation('srcIndex', async () => validateSrcIndexFile(basePath))\n await validation('scripts', async () => validateScripts(packageJson))\n await validation('nodeEngine', async () => validateNodeEngine(packageJson))\n await validation('duplicateConfig', async () =>\n disallowDuplicateEslintConfig(basePath, packageJson),\n )\n await validation('duplicateConfig', async () =>\n disallowDuplicatePrettierConfig(basePath, packageJson),\n )\n\n if (ts) {\n await validation('tsconfig', async () => validateTsConfig(ts, {basePath, outDir, tsconfig}))\n }\n\n await validation('sanityV2Json', async () => validatePluginSanityJson({basePath, packageJson}))\n\n await validation('babelConfig', async () => validateBabelConfig({basePath}))\n\n await validation('dependencies', async () => validateSanityDependencies(packageJson))\n await validation('deprecatedDependencies', async () =>\n validateDeprecatedDependencies(packageJson),\n )\n await validation('eslintImports', async () => validateImports({basePath}))\n\n if (errors.length) {\n throw new Error(\n outdent`\n Detected validation issues!\n To make this package Sanity v3 compatible, fix the issues starting from the top, or disable any checks you deem unnecessary.\n\n These issues assume the package uses @sanity/plugin-kit defaults for development and building.\n Refer to ${urls.pluginReadme} for configuration options.\n\n More information is available here:\n - Studio migration guide: ${urls.migrationGuideStudio}\n - Plugin migration guide: ${urls.migrationGuidePlugin}\n - Reference documentation: ${urls.refDocs}\n\n ${chalk.grey(\n `To fail-fast on first detected issue run:\\nnpx ${cliName} verify-package' --single`,\n )}\n `.trimStart(),\n )\n }\n\n await runTscMaybe(verifyConfig, ts)\n\n log.success(\n outdent`\n No outstanding upgrade issues detected.\n\n Suggested next steps:\n - Use plugin-kit to build and develop the plugin according to ${urls.pluginReadme}.\n - Build the plugin and fix any compilation errors\n - Test the plugin using the link-watch command\n `.trim(),\n )\n}\n","import path from 'path'\n\nimport meow from 'meow'\n\nimport {verifyPackage} from '../actions/verify-package'\nimport {verifyFlags} from '../actions/verify/verify-common'\nimport {cliName} from '../constants'\n\nconst description = `Verify that a Sanity plugin package is v3 compatible, and print upgrade steps if not.`\n\nconst help = `\nUsage\n $ ${cliName} verify-package [dir] [<args>]\n\nOptions\n --single Enables fail-fast mode: Will only output the first validation that fails.\n --silent Do not print info and warning messages\n --verbose Log everything. This option conflicts with --silent\n --version Output the version number\n --help Output usage information\n\nEach check will describe how they can be individually disabled.\n\nExamples\n # Verify Sanity plugin package in current directory\n $ ${cliName} verify-package\n\n # Verify Sanity plugin package in my-plugin directory in silent mode\n $ ${cliName} verify-package my-plugin-directory --silent\n`\n\nfunction run({argv}: {argv: string[]}) {\n const cli = meow(help, {flags: verifyFlags, argv, description})\n const basePath = path.resolve(cli.input[0] || process.cwd())\n return verifyPackage({basePath, flags: cli.flags})\n}\n\nexport default run\n"],"names":[],"mappings":";;;;;;;;AAiCA,eAAsB,cAAc,EAAC,UAAU,SAAgD;AAC7F,MAAI,SAAmB,CAAA;AAEvB,QAAM,cAA2B,MAAM,WAAW,EAAC,UAAU,UAAU,GAAA,CAAM,GACvE,eAAoC,YAAY,cAAc,iBAAiB,CAAA;AAIrF,aAAW,aAAa;AAAA,IACtB,GAAG,oBAAoB,WAAW;AAAA,IAClC,GAAG,wBAAwB,EAAC,SAAA,CAAS;AAAA,EAAA;AAErC,WAAO,KAAK,SAAS,GACrB,IAAI,MAAM;AAAA,EAAK,SAAS,EAAE;AAK5B,MAAI;AACJ,MAAI;AACF,oBAAgB,MAAM,kBAAkB,EAAC,UAAS;AAAA,EACpD,SAAS,KAAK;AACZ,QAAI,MAAM,qCAAqC,GAAG;AAAA,EACpD;AACA,QAAM,SAAS,eAAe,QAAQ,eAChC,WAAW,eAAe,YAAY,iBAEtC,aAAa,gBAAgB,cAAc,OAAO,MAAM,GAExD,KAAK,MAAM,aAAa,EAAC,UAAU,UAAU,UAAS;AA4B5D,MA1BA,MAAM,WAAW,eAAe,YAAY,oBAAoB,WAAW,CAAC,GAC5E,MAAM,WAAW,aAAa,YAAY,2BAA2B,WAAW,CAAC,GACjF,MAAM,WAAW,YAAY,YAAY,qBAAqB,QAAQ,CAAC,GACvE,MAAM,WAAW,WAAW,YAAY,gBAAgB,WAAW,CAAC,GACpE,MAAM,WAAW,cAAc,YAAY,mBAAmB,WAAW,CAAC,GAC1E,MAAM;AAAA,IAAW;AAAA,IAAmB,YAClC,8BAA8B,UAAU,WAAW;AAAA,EAAA,GAErD,MAAM;AAAA,IAAW;AAAA,IAAmB,YAClC,gCAAgC,UAAU,WAAW;AAAA,EAAA,GAGnD,MACF,MAAM,WAAW,YAAY,YAAY,iBAAiB,IAAI,EAAC,UAAU,QAAQ,SAAA,CAAS,CAAC,GAG7F,MAAM,WAAW,gBAAgB,YAAY,yBAAyB,EAAC,UAAU,aAAY,CAAC,GAE9F,MAAM,WAAW,eAAe,YAAY,oBAAoB,EAAC,SAAA,CAAS,CAAC,GAE3E,MAAM,WAAW,gBAAgB,YAAY,2BAA2B,WAAW,CAAC,GACpF,MAAM;AAAA,IAAW;AAAA,IAA0B,YACzC,+BAA+B,WAAW;AAAA,EAAA,GAE5C,MAAM,WAAW,iBAAiB,YAAY,gBAAgB,EAAC,SAAA,CAAS,CAAC,GAErE,OAAO;AACT,UAAM,IAAI;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKa,KAAK,YAAY;AAAA;AAAA;AAAA,oCAGA,KAAK,oBAAoB;AAAA,oCACzB,KAAK,oBAAoB;AAAA,qCACxB,KAAK,OAAO;AAAA;AAAA,UAEvC,MAAM;AAAA,QACN;AAAA,MAAkD,OAAO;AAAA,MAAA,CAC1D;AAAA,QACD,UAAA;AAAA,IAAU;AAIhB,QAAM,YAAY,cAAc,EAAE,GAElC,IAAI;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,sEAIkE,KAAK,YAAY;AAAA;AAAA;AAAA,IAGnF,KAAA;AAAA,EAAK;AAET;ACnHA,MAAM,cAAc,yFAEd,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaP,OAAO;AAAA;AAAA;AAAA,MAGP,OAAO;AAAA;AAGb,SAAS,IAAI,EAAC,QAAyB;AACrC,QAAM,MAAM,KAAK,MAAM,EAAC,OAAO,aAAa,MAAM,YAAA,CAAY,GACxD,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,QAAQ,KAAK;AAC3D,SAAO,cAAc,EAAC,UAAU,OAAO,IAAI,OAAM;AACnD;"}
@@ -0,0 +1,61 @@
1
+ import path from "path";
2
+ import meow from "meow";
3
+ import chalk from "chalk";
4
+ import outdent from "outdent";
5
+ import { urls, cliName, log } from "./index.js";
6
+ import { readTSConfig, validateImports, runTscMaybe, createValidator, verifyFlags } from "./ts.js";
7
+ import { getPackage, validateStudioConfig, validateSanityDependencies } from "./package.js";
8
+ import { loadPackageConfig } from "./load-package-config.js";
9
+ async function verifyStudio({ basePath, flags }) {
10
+ let errors = [];
11
+ const packageJson = await getPackage({ basePath, validate: !1 }), verifyConfig = packageJson.sanityPlugin?.verifyPackage || {}, tsconfig = (await loadPackageConfig({ basePath }))?.tsconfig ?? "tsconfig.json", validation = createValidator(verifyConfig, flags, errors), ts = await readTSConfig({ basePath, filename: tsconfig });
12
+ if (await validation("studioConfig", async () => validateStudioConfig({ basePath })), await validation("dependencies", async () => validateSanityDependencies(packageJson)), await validation("eslintImports", async () => validateImports({ basePath })), errors.length)
13
+ throw new Error(
14
+ outdent`
15
+ Detected validation issues!
16
+ This Sanity Studio is not completely V3 ready. Fix the issues starting from the top, or disable any checks you deem unnecessary.
17
+
18
+ More information is available here:
19
+ - Migration guide: ${urls.migrationGuideStudio}
20
+ - Reference documentation: ${urls.refDocs}
21
+
22
+ ${chalk.grey(
23
+ `To fail-fast on first detected issue run:
24
+ npx ${cliName} verify-studio --single`
25
+ )}
26
+ `.trimStart()
27
+ );
28
+ await runTscMaybe(verifyConfig, ts), log.success(
29
+ outdent`
30
+ No outstanding upgrade issues detected. Studio is V3 ready!
31
+ `.trim()
32
+ );
33
+ }
34
+ const description = "Verify that a Sanity Studio is configured correctly for v3, and print upgrade steps if not.", help = `
35
+ Usage
36
+ $ ${cliName} verify-studio [dir] [<args>]
37
+
38
+ Options
39
+ --single Enables fail-fast mode: Will only output the first validation that fails.
40
+ --silent Do not print info and warning messages
41
+ --verbose Log everything. This option conflicts with --silent
42
+ --version Output the version number
43
+ --help Output usage information
44
+
45
+ Each check will describe how they can be individually disabled.
46
+
47
+ Examples
48
+ # Verify Sanity Studio in current directory
49
+ $ ${cliName} verify-studio
50
+
51
+ # Verify Sanity Studio in my-sanity-studio directory in silent mode
52
+ $ ${cliName} verify-studio my-sanity-studio --silent
53
+ `;
54
+ function run({ argv }) {
55
+ const cli = meow(help, { flags: verifyFlags, argv, description }), basePath = path.resolve(cli.input[0] || process.cwd());
56
+ return verifyStudio({ basePath, flags: cli.flags });
57
+ }
58
+ export {
59
+ run as default
60
+ };
61
+ //# sourceMappingURL=verify-studio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-studio.js","sources":["../../src/actions/verify-studio.ts","../../src/cmds/verify-studio.ts"],"sourcesContent":["import chalk from 'chalk'\nimport outdent from 'outdent'\n\nimport {cliName, urls} from '../constants'\nimport {validateImports} from '../dependencies/import-linter'\nimport {getPackage} from '../npm/package'\nimport {loadPackageConfig} from '../util/load-package-config'\nimport log from '../util/log'\nimport {readTSConfig} from '../util/ts'\nimport {PackageJson} from './verify/types'\nimport {validateSanityDependencies, validateStudioConfig} from './verify/validations'\nimport {\n createValidator,\n runTscMaybe,\n VerifyFlags,\n VerifyPackageConfig,\n} from './verify/verify-common'\n\nexport async function verifyStudio({basePath, flags}: {basePath: string; flags: VerifyFlags}) {\n let errors: string[] = []\n\n const packageJson: PackageJson = await getPackage({basePath, validate: false})\n const verifyConfig: VerifyPackageConfig = packageJson.sanityPlugin?.verifyPackage || {}\n const packageConfig = await loadPackageConfig({basePath})\n const tsconfig = packageConfig?.tsconfig ?? 'tsconfig.json'\n\n const validation = createValidator(verifyConfig, flags, errors)\n\n const ts = await readTSConfig({basePath, filename: tsconfig})\n\n await validation('studioConfig', async () => validateStudioConfig({basePath}))\n await validation('dependencies', async () => validateSanityDependencies(packageJson))\n await validation('eslintImports', async () => validateImports({basePath}))\n\n if (errors.length) {\n throw new Error(\n outdent`\n Detected validation issues!\n This Sanity Studio is not completely V3 ready. Fix the issues starting from the top, or disable any checks you deem unnecessary.\n\n More information is available here:\n - Migration guide: ${urls.migrationGuideStudio}\n - Reference documentation: ${urls.refDocs}\n\n ${chalk.grey(\n `To fail-fast on first detected issue run:\\nnpx ${cliName} verify-studio --single`,\n )}\n `.trimStart(),\n )\n }\n\n await runTscMaybe(verifyConfig, ts)\n\n log.success(\n outdent`\n No outstanding upgrade issues detected. Studio is V3 ready!\n `.trim(),\n )\n}\n","import path from 'path'\n\nimport meow from 'meow'\n\nimport {verifyStudio} from '../actions/verify-studio'\nimport {verifyFlags} from '../actions/verify/verify-common'\nimport {cliName} from '../constants'\n\nconst description = `Verify that a Sanity Studio is configured correctly for v3, and print upgrade steps if not.`\n\nconst help = `\nUsage\n $ ${cliName} verify-studio [dir] [<args>]\n\nOptions\n --single Enables fail-fast mode: Will only output the first validation that fails.\n --silent Do not print info and warning messages\n --verbose Log everything. This option conflicts with --silent\n --version Output the version number\n --help Output usage information\n\nEach check will describe how they can be individually disabled.\n\nExamples\n # Verify Sanity Studio in current directory\n $ ${cliName} verify-studio\n\n # Verify Sanity Studio in my-sanity-studio directory in silent mode\n $ ${cliName} verify-studio my-sanity-studio --silent\n`\n\nfunction run({argv}: {argv: string[]}) {\n const cli = meow(help, {flags: verifyFlags, argv, description})\n const basePath = path.resolve(cli.input[0] || process.cwd())\n return verifyStudio({basePath, flags: cli.flags})\n}\n\nexport default run\n"],"names":[],"mappings":";;;;;;;;AAkBA,eAAsB,aAAa,EAAC,UAAU,SAAgD;AAC5F,MAAI,SAAmB,CAAA;AAEvB,QAAM,cAA2B,MAAM,WAAW,EAAC,UAAU,UAAU,GAAA,CAAM,GACvE,eAAoC,YAAY,cAAc,iBAAiB,CAAA,GAE/E,YADgB,MAAM,kBAAkB,EAAC,SAAA,CAAS,IACxB,YAAY,iBAEtC,aAAa,gBAAgB,cAAc,OAAO,MAAM,GAExD,KAAK,MAAM,aAAa,EAAC,UAAU,UAAU,UAAS;AAM5D,MAJA,MAAM,WAAW,gBAAgB,YAAY,qBAAqB,EAAC,SAAA,CAAS,CAAC,GAC7E,MAAM,WAAW,gBAAgB,YAAY,2BAA2B,WAAW,CAAC,GACpF,MAAM,WAAW,iBAAiB,YAAY,gBAAgB,EAAC,SAAA,CAAS,CAAC,GAErE,OAAO;AACT,UAAM,IAAI;AAAA,MACR;AAAA;AAAA;AAAA;AAAA;AAAA,6BAKuB,KAAK,oBAAoB;AAAA,qCACjB,KAAK,OAAO;AAAA;AAAA,UAEvC,MAAM;AAAA,QACN;AAAA,MAAkD,OAAO;AAAA,MAAA,CAC1D;AAAA,QACD,UAAA;AAAA,IAAU;AAIhB,QAAM,YAAY,cAAc,EAAE,GAElC,IAAI;AAAA,IACF;AAAA;AAAA,IAEA,KAAA;AAAA,EAAK;AAET;AClDA,MAAM,cAAc,+FAEd,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaP,OAAO;AAAA;AAAA;AAAA,MAGP,OAAO;AAAA;AAGb,SAAS,IAAI,EAAC,QAAyB;AACrC,QAAM,MAAM,KAAK,MAAM,EAAC,OAAO,aAAa,MAAM,YAAA,CAAY,GACxD,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,QAAQ,KAAK;AAC3D,SAAO,aAAa,EAAC,UAAU,OAAO,IAAI,OAAM;AAClD;"}
@@ -0,0 +1,50 @@
1
+ import meow from "meow";
2
+ import { pkg } from "./package2.js";
3
+ import { sharedFlags, log } from "./index.js";
4
+ const description = `Show the installed version of ${pkg.name}`, help = `
5
+ Usage
6
+ $ ${pkg.binname} version
7
+
8
+ Options
9
+ --major Show only the major version
10
+ --minor Show only the minor version
11
+ --patch Show only the patch version
12
+
13
+ Examples
14
+ $ ${pkg.binname} version
15
+ ${pkg.name} version ${pkg.version}
16
+
17
+ $ ${pkg.binname} version --major
18
+ ${pkg.version.split(".")[0]}
19
+ `, flags = {
20
+ ...sharedFlags,
21
+ major: {
22
+ type: "boolean",
23
+ default: !1
24
+ },
25
+ minor: {
26
+ type: "boolean",
27
+ default: !1
28
+ },
29
+ patch: {
30
+ type: "boolean",
31
+ default: !1
32
+ }
33
+ };
34
+ function run({ argv }) {
35
+ const cli = meow(help, { flags, argv, description }), versionParts = pkg.version.split("."), versionNames = ["major", "minor", "patch"], versionFlags = versionNames.filter((flagName) => cli.flags[flagName]), versionFlag = versionFlags[0], numVersionFlags = versionFlags.length;
36
+ if (numVersionFlags === 0) {
37
+ log.msg(`${pkg.name} version ${pkg.version}`);
38
+ return;
39
+ }
40
+ if (numVersionFlags > 1)
41
+ throw new Error(
42
+ "--major, --minor and --patch are mutually exclusive - only one can be used at a time"
43
+ );
44
+ const partIndex = versionNames.indexOf(versionFlag);
45
+ log.msg(versionParts[partIndex]);
46
+ }
47
+ export {
48
+ run as default
49
+ };
50
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sources":["../../src/cmds/version.ts"],"sourcesContent":["import meow from 'meow'\n\nimport pkg from '../../package.json'\nimport sharedFlags from '../sharedFlags'\nimport log from '../util/log'\n\nconst description = `Show the installed version of ${pkg.name}`\n\nconst help = `\nUsage\n $ ${pkg.binname} version\n\nOptions\n --major Show only the major version\n --minor Show only the minor version\n --patch Show only the patch version\n\nExamples\n $ ${pkg.binname} version\n ${pkg.name} version ${pkg.version}\n\n $ ${pkg.binname} version --major\n ${pkg.version.split('.')[0]}\n`\n\nconst flags = {\n ...sharedFlags,\n\n major: {\n type: 'boolean',\n default: false,\n },\n\n minor: {\n type: 'boolean',\n default: false,\n },\n\n patch: {\n type: 'boolean',\n default: false,\n },\n} as const\n\nfunction run({argv}: {argv: string[]}) {\n const cli = meow(help, {flags, argv, description})\n const versionParts = pkg.version.split('.')\n const versionNames = ['major', 'minor', 'patch']\n const versionFlags = versionNames.filter((flagName) => cli.flags[flagName])\n const versionFlag = versionFlags[0]\n const numVersionFlags = versionFlags.length\n\n if (numVersionFlags === 0) {\n log.msg(`${pkg.name} version ${pkg.version}`)\n return\n }\n\n if (numVersionFlags > 1) {\n throw new Error(\n `--major, --minor and --patch are mutually exclusive - only one can be used at a time`,\n )\n }\n\n const partIndex = versionNames.indexOf(versionFlag)\n log.msg(versionParts[partIndex])\n}\n\nexport default run\n"],"names":[],"mappings":";;;AAMA,MAAM,cAAc,iCAAiC,IAAI,IAAI,IAEvD,OAAO;AAAA;AAAA,MAEP,IAAI,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQX,IAAI,OAAO;AAAA,IACb,IAAI,IAAI,YAAY,IAAI,OAAO;AAAA;AAAA,MAE7B,IAAI,OAAO;AAAA,IACb,IAAI,QAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,GAGvB,QAAQ;AAAA,EACZ,GAAG;AAAA,EAEH,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAAA,EAGX,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAAA,EAGX,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb;AAEA,SAAS,IAAI,EAAC,QAAyB;AACrC,QAAM,MAAM,KAAK,MAAM,EAAC,OAAO,MAAM,YAAA,CAAY,GAC3C,eAAe,IAAI,QAAQ,MAAM,GAAG,GACpC,eAAe,CAAC,SAAS,SAAS,OAAO,GACzC,eAAe,aAAa,OAAO,CAAC,aAAa,IAAI,MAAM,QAAQ,CAAC,GACpE,cAAc,aAAa,CAAC,GAC5B,kBAAkB,aAAa;AAErC,MAAI,oBAAoB,GAAG;AACzB,QAAI,IAAI,GAAG,IAAI,IAAI,YAAY,IAAI,OAAO,EAAE;AAC5C;AAAA,EACF;AAEA,MAAI,kBAAkB;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,QAAM,YAAY,aAAa,QAAQ,WAAW;AAClD,MAAI,IAAI,aAAa,SAAS,CAAC;AACjC;"}
package/dist/index.d.ts CHANGED
@@ -1 +1,4 @@
1
- export {}
1
+ /** @public */
2
+ declare function cliEntry(argv?: string[]): Promise<void>;
3
+ export { cliEntry };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/cli.ts"],"mappings":"AAQA;AAAA,iBAAsB,QAAA,CAAS,IAAA,cAAmB,OAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,5 @@
1
- "use strict";
1
+ import { cliEntry } from "./_chunks-es/index.js";
2
+ export {
3
+ cliEntry
4
+ };
2
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json CHANGED
@@ -1,154 +1,96 @@
1
1
  {
2
2
  "name": "@sanity/plugin-kit",
3
- "version": "4.0.20",
3
+ "version": "5.0.1",
4
4
  "description": "Enhanced Sanity.io plugin development experience",
5
5
  "keywords": [
6
- "sanity-io",
7
- "sanity",
8
- "plugin",
6
+ "bootstrap",
9
7
  "development",
10
- "typescript",
11
- "bootstrap"
8
+ "plugin",
9
+ "sanity",
10
+ "sanity-io",
11
+ "typescript"
12
12
  ],
13
- "homepage": "https://github.com/sanity-io/plugin-kit#readme",
13
+ "homepage": "https://github.com/sanity-io/plugins/tree/main/packages/@sanity/plugin-kit#readme",
14
14
  "bugs": {
15
- "url": "https://github.com/sanity-io/plugin-kit/issues"
16
- },
17
- "repository": {
18
- "type": "git",
19
- "url": "git+ssh://git@github.com/sanity-io/plugin-kit.git"
15
+ "url": "https://github.com/sanity-io/plugins/issues"
20
16
  },
21
17
  "license": "MIT",
22
18
  "author": "Sanity.io <hello@sanity.io>",
23
- "sideEffects": false,
24
- "type": "commonjs",
25
- "exports": {
26
- ".": {
27
- "source": "./src/index.ts",
28
- "require": "./dist/index.js",
29
- "default": "./dist/index.js"
30
- },
31
- "./package.json": "./package.json"
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+ssh://git@github.com/sanity-io/plugins.git",
22
+ "directory": "packages/@sanity/plugin-kit"
32
23
  },
33
- "main": "./dist/index.js",
34
- "types": "./dist/index.d.ts",
35
24
  "bin": {
36
25
  "plugin-kit": "./bin/plugin-kit.js"
37
26
  },
38
27
  "files": [
39
28
  "assets",
40
29
  "bin",
41
- "dist",
42
- "src",
43
- "v2-incompatible.js"
30
+ "dist"
44
31
  ],
45
- "scripts": {
46
- "build": "pkg-utils build --strict --check --clean",
47
- "commit": "git-cz",
48
- "compile": "tsc --build",
49
- "format": "prettier src package.json -w",
50
- "lint": "eslint .",
51
- "prepare": "husky install",
52
- "prepublishOnly": "npm run build",
53
- "test": "tap",
54
- "test:update-snapshots": "tap --snapshot",
55
- "watch": "pkg-utils watch --strict"
56
- },
57
- "browserslist": "extends @sanity/browserslist-config",
58
- "tap": {
59
- "browser": false,
60
- "check-coverage": false,
61
- "coverage-report": [
62
- "html"
63
- ],
64
- "jobs": 2,
65
- "reporter": "spec",
66
- "test-ignore": "^dist/.*|.*ignore.*|.*run-test-command.*|.*fixture.utils.*",
67
- "timeout": 120,
68
- "ts": true
69
- },
70
- "overrides": {
71
- "@babel/helpers": "7.28.4",
72
- "brace-expansion": "1.1.12",
73
- "conventional-changelog-conventionalcommits": ">= 8.0.0",
74
- "esbuild": "0.25.0",
75
- "micromatch": "4.0.8",
76
- "prismjs": "1.30.0",
77
- "tap": {
78
- "@babel/helpers": "7.28.4",
79
- "brace-expansion": "1.1.12",
80
- "ws": "5.2.4"
81
- },
82
- "tmp": "0.2.4",
83
- "ws": "5.2.4"
32
+ "type": "module",
33
+ "types": "./dist/index.d.ts",
34
+ "exports": {
35
+ ".": "./dist/index.js",
36
+ "./package.json": "./package.json"
84
37
  },
85
38
  "dependencies": {
86
- "@rexxars/choosealicense-list": "1.1.2",
87
- "@sanity/pkg-utils": "8.1.12",
88
- "chalk": "4.1.2",
89
- "concurrently": "8.2.2",
90
- "discover-path": "1.0.0",
91
- "email-validator": "2.0.4",
92
- "execa": "5.1.1",
93
- "get-it": "8.6.3",
94
- "get-latest-version": "5.1.0",
95
- "git-remote-origin-url": "3.1.0",
96
- "github-url-to-object": "4.0.6",
97
- "inquirer": "8.2.6",
98
- "meow": "9.0.0",
39
+ "@rexxars/choosealicense-list": "^1.1.2",
40
+ "chalk": "^4.1.2",
41
+ "concurrently": "^8.2.2",
42
+ "email-validator": "^2.0.4",
43
+ "execa": "^5.1.1",
44
+ "get-it": "^8.8.0",
45
+ "get-latest-version": "^5.1.0",
46
+ "git-remote-origin-url": "^3.1.0",
47
+ "github-url-to-object": "^4.0.6",
48
+ "inquirer": "^8.2.6",
49
+ "json5": "^2.2.3",
50
+ "meow": "^9.0.0",
99
51
  "nodemon": "3.1.0",
100
- "npm-packlist": "8.0.2",
101
- "npm-run-path": "4.0.1",
102
- "outdent": "0.8.0",
103
- "p-any": "3.0.0",
104
- "p-props": "4.0.0",
105
- "postcss": "8.4.40",
106
- "semver": "7.5.4",
107
- "spdx-license-ids": "3.0.18",
108
- "validate-npm-package-name": "5.0.0",
109
- "xdg-basedir": "4.0.0",
52
+ "npm-run-path": "^4.0.1",
53
+ "outdent": "^0.8.0",
54
+ "p-any": "^3.0.0",
55
+ "p-props": "^4.0.0",
56
+ "validate-npm-package-name": "^5.0.0",
57
+ "xdg-basedir": "^4.0.0",
110
58
  "yalc": "1.0.0-pre.53"
111
59
  },
112
60
  "devDependencies": {
113
- "@commitlint/cli": "19.3.0",
114
- "@commitlint/config-conventional": "19.2.2",
115
- "@sanity/semantic-release-preset": "5.0.0",
116
- "@sanity/ui-workshop": "^3.3.2",
61
+ "@sanity/pkg-utils": "^10.5.7",
117
62
  "@types/eslint": "^8.56.11",
118
- "@types/fs-extra": "^11.0.4",
119
63
  "@types/inquirer": "^9.0.3",
120
- "@types/node": "^18.17.4",
121
- "@types/nodemon": "^1.19.6",
122
- "@types/tap": "^15.0.11",
64
+ "@types/node": "^24.13.2",
65
+ "@types/nodemon": "1.19.6",
66
+ "@types/react": "^19.2.17",
123
67
  "@typescript-eslint/eslint-plugin": "^8.26.0",
124
68
  "@typescript-eslint/parser": "^8.26.0",
125
69
  "eslint": "^8.57.0",
126
- "eslint-config-prettier": "^9.1.0",
70
+ "eslint-config-prettier": "^10.1.8",
127
71
  "eslint-config-sanity": "^7.1.2",
128
72
  "eslint-plugin-prettier": "^5.2.1",
73
+ "eslint-plugin-react": "^7.37.0",
129
74
  "eslint-plugin-react-hooks": "^4.6.2",
130
- "fs-extra": "^11.2.0",
131
- "husky": "^8.0.3",
132
- "json5": "2.2.3",
133
- "lint-staged": "^13.3.0",
134
75
  "prettier": "^3.3.3",
135
- "prettier-plugin-packagejson": "^2.5.1",
136
- "readdirp": "^3.6.0",
137
- "rimraf": "^4.4.1",
138
- "sanity": "^4.9.0",
139
- "sinon": "^17.0.2",
140
- "tap": "^16.3.10",
141
- "ts-node": "^10.9.2",
142
- "typescript": "5.8.3"
76
+ "react": "^19.2.7",
77
+ "react-dom": "^19.2.7",
78
+ "sanity": "^6.1.0",
79
+ "styled-components": "^6.4.2",
80
+ "typescript": "5.9.3",
81
+ "@repo/package.config": "0.0.0",
82
+ "@repo/tsconfig": "0.0.0"
143
83
  },
144
84
  "peerDependencies": {
145
- "eslint": ">=8.0.0"
85
+ "@sanity/pkg-utils": "^10.5.7",
86
+ "eslint": ">=8.0.0",
87
+ "typescript": "5.8.x || 5.9.x || 6.0.x"
146
88
  },
147
89
  "engines": {
148
- "node": ">=18"
90
+ "node": ">=20.19 <22 || >=22.12"
149
91
  },
150
- "publishConfig": {
151
- "access": "public"
152
- },
153
- "binname": "sanity-plugin"
154
- }
92
+ "binname": "plugin-kit",
93
+ "scripts": {
94
+ "build": "pkg build --strict --check --clean"
95
+ }
96
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2025 Sanity.io
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sources":["../../src/util/log.ts","../../src/cmds/index.ts","../../src/sharedFlags.ts","../../src/constants.ts","../../src/cli.ts"],"sourcesContent":["// Note: This is _specifically_ meant for CLI usage,\n// I realize that \"singletons\" are bad.\n\nimport chalk from 'chalk'\n\nlet beQuiet = false\nlet beVerbose = false\n\nfunction setVerbosity({verbose, silent}: {verbose: boolean; silent: boolean}) {\n if (silent) {\n beVerbose = false\n beQuiet = true\n } else if (verbose) {\n beVerbose = true\n beQuiet = false\n }\n}\n\nexport default {\n setVerbosity: setVerbosity,\n\n // Bypasses any checks, prints regardless (only use for things like `cli --version`)\n msg: (msg: any, ...args: any[]) => !beQuiet && console.log(msg, ...args),\n\n // Debug only printed on --verbose\n debug: (msg: any, ...args: any[]) =>\n !beQuiet && beVerbose && console.debug(`${chalk.bgBlack.white('[debug]')} ${msg}`, ...args),\n\n // Success messages only printed if not --silent\n success: (msg: any, ...args: any[]) =>\n !beQuiet && console.info(`${chalk.bgBlack.greenBright('[success]')} ${msg}`, ...args),\n\n // Info only printed if not --silent (\"standard\" level)\n info: (msg: any, ...args: any[]) =>\n !beQuiet && console.info(`${chalk.bgBlack.cyanBright('[info]')} ${msg}`, ...args),\n\n // Warning only printed if not --silent\n warn: (msg: any, ...args: any[]) =>\n !beQuiet && console.warn(`${chalk.bgBlack.yellowBright('[warn]')} ${msg}`, ...args),\n\n // Errors are always printed\n error: (msg: any, ...args: any[]) =>\n console.error(`${chalk.bgBlack.redBright('[error]')} ${msg}`, ...args),\n}\n","export default {\n init: async (options: {argv: string[]}) => {\n await (await import('./init')).default(options)\n },\n inject: async (options: {argv: string[]}) => {\n await (await import('./inject')).default(options)\n },\n 'link-watch': async (options: {argv: string[]}) => {\n await (await import('./link-watch')).default(options)\n },\n 'verify-package': async (options: {argv: string[]}) => {\n await (await import('./verify-package')).default(options)\n },\n 'verify-studio': async (options: {argv: string[]}) => {\n await (await import('./verify-studio')).default(options)\n },\n version: async (options: {argv: string[]}) => {\n await (await import('./version')).default(options)\n },\n}\n","export default {\n debug: {\n default: false,\n type: 'boolean',\n },\n silent: {\n type: 'boolean',\n default: false,\n },\n verbose: {\n type: 'boolean',\n default: false,\n },\n} as const\n","export const cliName = '@sanity/plugin-kit'\n\nexport const urls = {\n refDocs: 'https://beta.sanity.io/docs/reference',\n migrationGuideStudio: 'https://beta.sanity.io/docs/platform/v2-to-v3',\n migrationGuidePlugin: 'https://beta.sanity.io/docs/platform/v2-to-v3/plugins',\n pluginReadme: 'https://github.com/sanity-io/plugin-kit',\n incompatiblePlugin: 'https://github.com/sanity-io/incompatible-plugin',\n sanityExchange: 'https://www.sanity.io/exchange',\n linterPackage: 'https://github.com/sanity-io/eslint-config-no-v2-imports',\n}\n\nexport const incompatiblePluginPackage = '@sanity/incompatible-plugin'\n\nexport const defaultOutDir = 'dist'\n","import meow from 'meow'\nimport log from './util/log'\nimport commands from './cmds'\nimport sharedFlags from './sharedFlags'\nimport {cliName} from './constants'\n\n/** @public */\nexport async function cliEntry(argv = process.argv, autoExit = true) {\n const cli = meow(\n `\n\tUsage\n\t $ ${cliName} [--help] [--debug] <command> [<args>]\n\n These are common commands used in various situations:\n\n init Create a new Sanity plugin\n inject Inject config into an existing Sanity v3 plugin\n verify-package Check that a Sanity plugin package follows V3 conventions. Prints upgrade steps.\n verify-studio Check that a Sanity Studio follows V3 conventions. Prints upgrade steps.\n link-watch Recompiles plugin automatically on changes and runs yalc push --publish\n version Show the version of ${cliName} currently installed\n\n Options\n --silent Do not print info and warning messages\n --verbose Log everything. This option conflicts with --silent\n --debug Print stack trace on errors\n --version Output the version number\n --help Output usage information\n\n Examples\n # Init a new plugin in current directory\n $ ${cliName} init\n\n # Init a new plugin in my-sanity-plugin directory\n $ ${cliName} init my-sanity-plugin\n\n # Check that a Sanity plugin package in current directory follows V3 conventions\n $ ${cliName} verify-package\n\n # Check that a Sanity Studio in current directory follows V3 conventions\n $ ${cliName} verify-studio\n`,\n {\n autoHelp: false,\n flags: sharedFlags,\n argv: argv.slice(2),\n },\n )\n\n const commandName = cli.input[0]\n if (!commandName) {\n cli.showHelp() // Exits\n }\n\n if (!(commandName in commands)) {\n console.error(`Unknown command \"${commandName}\"`)\n cli.showHelp() // Exits\n }\n\n if (cli.flags.silent && cli.flags.verbose) {\n log.error(`--silent and --verbose are mutually exclusive`)\n cli.showHelp() // Exits\n }\n\n // Lazy-load command\n const cmd = commands[commandName as keyof typeof commands]\n\n try {\n log.setVerbosity(cli.flags)\n await cmd({argv: argv.slice(3)})\n } catch (err: any) {\n log.error(err instanceof TypeError || cli.flags.debug ? err.stack : err.message)\n\n // eslint-disable-next-line no-process-exit\n process.exit(1)\n }\n}\n"],"names":["chalk","meow"],"mappings":"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"}