@sanity/plugin-kit

10.0.1010.0.11
dist/verify-package-Cm62CGGp.js.map
~dist/verify-package-Cm62CGGp.js.mapModified
+1−1
Index: package/dist/verify-package-Cm62CGGp.js.map
===================================================================
--- package/dist/verify-package-Cm62CGGp.js.map
+++ package/dist/verify-package-Cm62CGGp.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"verify-package-Cm62CGGp.js","names":["sharedFlags"],"sources":["../src/util/ts.ts","../src/actions/verify/verify-common.ts","../src/actions/verify-package.ts","../src/cmds/verify-package.ts"],"sourcesContent":["import path from 'path'\n\n// The JS compiler API is loaded from the official `@typescript/typescript6` compat package\n// instead of the `typescript` peer dependency, as TypeScript 7 (the Go-native compiler) no longer\n// ships it\nimport * as ts from '@typescript/typescript6'\n\nimport {fileExists} from './files'\n\nexport async function readTSConfig(options: {basePath: string; filename: string}) {\n  const {basePath, filename} = options\n  const filePath = path.resolve(basePath, filename)\n  const exists = await fileExists(filePath)\n\n  if (!exists) return undefined\n\n  const {config} = ts.readConfigFile(filePath, ts.sys.readFile)\n\n  if (!config) return undefined\n\n  return ts.parseJsonConfigFileContent(config, ts.sys, basePath)\n}\n","import {styleText} from 'node:util'\n\nimport type {TypedFlags} from 'meow'\n\nimport sharedFlags from '../../sharedFlags'\nimport log from '../../util/log'\nimport {outdent} from '../../util/outdent'\n\nconst splitLine = `\\n----------------------------------------------------------`\n\nexport const verifyPackageConfigDefaults = {\n  'packageName': true,\n  'esmOnly': true,\n  'tsconfig': true,\n  'deprecatedDependencies': true,\n  'babelConfig': true,\n  'scripts': true,\n  'pkg-utils': true,\n  'nodeEngine': true,\n  'srcIndex': true,\n  'bannedFiles': true,\n  'oxfmt': true,\n  'oxlint': true,\n} as const\n\nexport type VerifyPackageConfig = Partial<Record<keyof typeof verifyPackageConfigDefaults, boolean>>\n\nexport const verifyFlags = {\n  ...sharedFlags,\n  single: {\n    default: false,\n    type: 'boolean',\n  },\n} as const\n\nexport type VerifyFlags = TypedFlags<typeof verifyFlags>\n\nfunction disableCheckText(checkKey: string) {\n  return styleText(\n    'grey',\n    outdent`\n              To skip this validation add the following to your package.json:\n              \"sanityPlugin\": {\n                 \"verifyPackage\": {\n                    \"${checkKey}\": false\n                 }\n              }\n          `.trimStart(),\n  )\n}\n\nexport function createValidator(\n  verifyConfig: VerifyPackageConfig,\n  flags: VerifyFlags,\n  errors: string[],\n) {\n  return async function validation(\n    checkKey: keyof VerifyPackageConfig,\n    task: () => Promise<string[] | undefined>,\n  ) {\n    if (verifyConfig[checkKey] !== false) {\n      const result = await task()\n      if (result?.length) {\n        result.push(disableCheckText(checkKey))\n        const errorMessage = result.join('\\n\\n')\n        errors.push(errorMessage)\n        log.error(`\\n` + errorMessage + splitLine)\n      }\n    }\n\n    if (flags.single && errors.length) {\n      throw new Error(\n        outdent`Detected outstanding package validation issues.\n\n        Fail-fast (--single) mode enabled, stopping validation here.\n        `,\n      )\n    }\n  }\n}\n","import {styleText} from 'node:util'\n\nimport {cliName, defaultOutDir, urls} from '../constants'\nimport {getPackage} from '../npm/package'\nimport {loadPackageConfig} from '../util/load-package-config'\nimport log from '../util/log'\nimport {outdent} from '../util/outdent'\nimport {readTSConfig} from '../util/ts'\nimport type {PackageJson} from './verify/types'\nimport {\n  validateBabelConfig,\n  validateEsmOnly,\n  validateNodeEngine,\n  validatePackageName,\n  validatePackageType,\n  validatePkgUtilsDependency,\n  validatePkgUtilsVersion,\n  validateDeprecatedDependencies,\n  validateScripts,\n  validateTsConfig,\n  validateSrcIndexFile,\n  validateBannedFiles,\n  validateOxfmtConfig,\n  validateOxlintConfig,\n} from './verify/validations'\nimport {createValidator, type VerifyFlags, type VerifyPackageConfig} 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('esmOnly', async () => validateEsmOnly(packageJson))\n  await validation('pkg-utils', async () => validatePkgUtilsDependency(packageJson))\n  await validation('srcIndex', async () => validateSrcIndexFile(basePath))\n  await validation('bannedFiles', async () => validateBannedFiles(packageJson))\n  await validation('scripts', async () => validateScripts(packageJson))\n  await validation('nodeEngine', async () => validateNodeEngine(packageJson))\n  await validation('oxfmt', async () => validateOxfmtConfig(basePath, packageJson))\n  await validation('oxlint', async () => validateOxlintConfig(basePath, packageJson))\n\n  if (ts) {\n    await validation('tsconfig', async () => validateTsConfig(ts, {basePath, outDir, tsconfig}))\n  }\n\n  await validation('babelConfig', async () => validateBabelConfig({basePath}))\n\n  await validation('deprecatedDependencies', async () =>\n    validateDeprecatedDependencies(packageJson),\n  )\n\n  if (errors.length) {\n    throw new Error(\n      outdent`\n        Detected validation issues!\n        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        - Reference documentation: ${urls.refDocs}\n\n        ${styleText(\n          'grey',\n          `To fail-fast on first detected issue run:\\nnpx ${cliName} verify-package --single`,\n        )}\n      `.trimStart(),\n    )\n  }\n\n  log.success(\n    outdent`\n    No outstanding package validation 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 follows plugin-kit conventions.`\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, {importMeta: import.meta, 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"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"verify-package-Cm62CGGp.js","names":["sharedFlags"],"sources":["../src/util/ts.ts","../src/actions/verify/verify-common.ts","../src/actions/verify-package.ts","../src/cmds/verify-package.ts"],"sourcesContent":["import path from 'path'\n\n// The JS compiler API is loaded from the official `@typescript/typescript6` compat package\n// instead of the `typescript` peer dependency, as TypeScript 7 (the Go-native compiler) no longer\n// ships it\nimport * as ts from '@typescript/typescript6'\n\nimport {fileExists} from './files'\n\nexport async function readTSConfig(options: {basePath: string; filename: string}) {\n  const {basePath, filename} = options\n  const filePath = path.resolve(basePath, filename)\n  const exists = await fileExists(filePath)\n\n  if (!exists) return undefined\n\n  const {config} = ts.readConfigFile(filePath, ts.sys.readFile)\n\n  if (!config) return undefined\n\n  return ts.parseJsonConfigFileContent(config, ts.sys, basePath)\n}\n","import {styleText} from 'node:util'\n\nimport type {TypedFlags} from 'meow'\n\nimport sharedFlags from '../../sharedFlags'\nimport log from '../../util/log'\nimport {outdent} from '../../util/outdent'\n\nconst splitLine = `\\n----------------------------------------------------------`\n\nexport const verifyPackageConfigDefaults = {\n  'packageName': true,\n  'esmOnly': true,\n  'tsconfig': true,\n  'deprecatedDependencies': true,\n  'babelConfig': true,\n  'scripts': true,\n  'pkg-utils': true,\n  'nodeEngine': true,\n  'srcIndex': true,\n  'bannedFiles': true,\n  'oxfmt': true,\n  'oxlint': true,\n} as const\n\nexport type VerifyPackageConfig = Partial<Record<keyof typeof verifyPackageConfigDefaults, boolean>>\n\nexport const verifyFlags = {\n  ...sharedFlags,\n  single: {\n    default: false,\n    type: 'boolean',\n  },\n} as const\n\nexport type VerifyFlags = TypedFlags<typeof verifyFlags>\n\nfunction disableCheckText(checkKey: string) {\n  return styleText(\n    'grey',\n    outdent`\n              To skip this validation add the following to your package.json:\n              \"sanityPlugin\": {\n                 \"verifyPackage\": {\n                    \"${checkKey}\": false\n                 }\n              }\n          `.trimStart(),\n  )\n}\n\nexport function createValidator(\n  verifyConfig: VerifyPackageConfig,\n  flags: VerifyFlags,\n  errors: string[],\n) {\n  return async function validation(\n    checkKey: keyof VerifyPackageConfig,\n    task: () => Promise<string[] | undefined>,\n  ) {\n    if (verifyConfig[checkKey] !== false) {\n      const result = await task()\n      if (result?.length) {\n        result.push(disableCheckText(checkKey))\n        const errorMessage = result.join('\\n\\n')\n        errors.push(errorMessage)\n        log.error(`\\n` + errorMessage + splitLine)\n      }\n    }\n\n    if (flags.single && errors.length) {\n      throw new Error(\n        outdent`Detected outstanding package validation issues.\n\n        Fail-fast (--single) mode enabled, stopping validation here.\n        `,\n      )\n    }\n  }\n}\n","import {styleText} from 'node:util'\n\nimport {cliName, defaultOutDir, urls} from '../constants'\nimport {getPackage} from '../npm/package'\nimport {loadPackageConfig} from '../util/load-package-config'\nimport log from '../util/log'\nimport {outdent} from '../util/outdent'\nimport {readTSConfig} from '../util/ts'\nimport type {PackageJson} from './verify/types'\nimport {\n  validateBabelConfig,\n  validateEsmOnly,\n  validateNodeEngine,\n  validatePackageName,\n  validatePackageType,\n  validatePkgUtilsDependency,\n  validatePkgUtilsVersion,\n  validateDeprecatedDependencies,\n  validateScripts,\n  validateTsConfig,\n  validateSrcIndexFile,\n  validateBannedFiles,\n  validateOxfmtConfig,\n  validateOxlintConfig,\n} from './verify/validations'\nimport {createValidator, type VerifyFlags, type VerifyPackageConfig} 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('esmOnly', async () => validateEsmOnly(packageJson))\n  await validation('pkg-utils', async () => validatePkgUtilsDependency(packageJson))\n  await validation('srcIndex', async () => validateSrcIndexFile(basePath))\n  await validation('bannedFiles', async () => validateBannedFiles(packageJson))\n  await validation('scripts', async () => validateScripts(packageJson))\n  await validation('nodeEngine', async () => validateNodeEngine(packageJson))\n  await validation('oxfmt', async () => validateOxfmtConfig(basePath, packageJson))\n  await validation('oxlint', async () => validateOxlintConfig(basePath, packageJson))\n\n  if (ts) {\n    await validation('tsconfig', async () => validateTsConfig(ts, {basePath, outDir, tsconfig}))\n  }\n\n  await validation('babelConfig', async () => validateBabelConfig({basePath}))\n\n  await validation('deprecatedDependencies', async () =>\n    validateDeprecatedDependencies(packageJson),\n  )\n\n  if (errors.length) {\n    throw new Error(\n      outdent`\n        Detected validation issues!\n        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        - Reference documentation: ${urls.refDocs}\n\n        ${styleText(\n          'grey',\n          `To fail-fast on first detected issue run:\\nnpx ${cliName} verify-package --single`,\n        )}\n      `.trimStart(),\n    )\n  }\n\n  log.success(\n    outdent`\n    No outstanding package validation 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 follows plugin-kit conventions.`\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, {importMeta: import.meta, 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"],"mappings":"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"}
\ No newline at end of file