@sanity/cli 6.0.0-alpha.8 → 6.0.0

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 (1124) hide show
  1. package/README.md +728 -258
  2. package/bin/run.js +2 -0
  3. package/dist/SanityHelp.js +51 -23
  4. package/dist/SanityHelp.js.map +1 -1
  5. package/dist/actions/auth/authServer.js +28 -22
  6. package/dist/actions/auth/authServer.js.map +1 -1
  7. package/dist/actions/auth/login/getProvider.js +49 -38
  8. package/dist/actions/auth/login/getProvider.js.map +1 -1
  9. package/dist/actions/auth/login/getSSOProvider.js +25 -19
  10. package/dist/actions/auth/login/getSSOProvider.js.map +1 -1
  11. package/dist/actions/auth/login/login.js +24 -37
  12. package/dist/actions/auth/login/login.js.map +1 -1
  13. package/dist/actions/auth/types.js.map +1 -1
  14. package/dist/actions/backup/downloadAsset.js +9 -9
  15. package/dist/actions/backup/downloadAsset.js.map +1 -1
  16. package/dist/actions/backup/downloadDocument.js +8 -8
  17. package/dist/actions/backup/downloadDocument.js.map +1 -1
  18. package/dist/actions/build/buildApp.js +65 -28
  19. package/dist/actions/build/buildApp.js.map +1 -1
  20. package/dist/actions/build/buildStaticFiles.js +3 -2
  21. package/dist/actions/build/buildStaticFiles.js.map +1 -1
  22. package/dist/actions/build/buildStudio.js +82 -54
  23. package/dist/actions/build/buildStudio.js.map +1 -1
  24. package/dist/actions/build/buildVendorDependencies.js +18 -52
  25. package/dist/actions/build/buildVendorDependencies.js.map +1 -1
  26. package/dist/actions/build/checkRequiredDependencies.js +13 -8
  27. package/dist/actions/build/checkRequiredDependencies.js.map +1 -1
  28. package/dist/actions/build/checkStudioDependencyVersions.js +19 -17
  29. package/dist/actions/build/checkStudioDependencyVersions.js.map +1 -1
  30. package/dist/actions/build/createExternalFromImportMap.js +1 -1
  31. package/dist/actions/build/createExternalFromImportMap.js.map +1 -1
  32. package/dist/actions/build/determineBasePath.js +5 -2
  33. package/dist/actions/build/determineBasePath.js.map +1 -1
  34. package/dist/actions/build/getStudioEnvironmentVariables.js +1 -1
  35. package/dist/actions/build/getStudioEnvironmentVariables.js.map +1 -1
  36. package/dist/actions/build/getViteConfig.js +48 -5
  37. package/dist/actions/build/getViteConfig.js.map +1 -1
  38. package/dist/actions/build/handlePrereleaseVersions.js +44 -0
  39. package/dist/actions/build/handlePrereleaseVersions.js.map +1 -0
  40. package/dist/actions/build/renderDocument.js +6 -10
  41. package/dist/actions/build/renderDocument.js.map +1 -1
  42. package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js +4 -4
  43. package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js.map +1 -1
  44. package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js +3 -3
  45. package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js.map +1 -1
  46. package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js +1 -0
  47. package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js.map +1 -1
  48. package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js +2 -2
  49. package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js.map +1 -1
  50. package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js +1 -1
  51. package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js.map +1 -1
  52. package/dist/actions/build/shouldAutoUpdate.js +5 -3
  53. package/dist/actions/build/shouldAutoUpdate.js.map +1 -1
  54. package/dist/actions/build/types.js.map +1 -1
  55. package/dist/actions/build/writeFavicons.js +3 -5
  56. package/dist/actions/build/writeFavicons.js.map +1 -1
  57. package/dist/actions/build/writeSanityRuntime.js +6 -5
  58. package/dist/actions/build/writeSanityRuntime.js.map +1 -1
  59. package/dist/actions/codemods/reactIconsV3.js +2 -2
  60. package/dist/actions/codemods/reactIconsV3.js.map +1 -1
  61. package/dist/actions/dataset/create.js +10 -6
  62. package/dist/actions/dataset/create.js.map +1 -1
  63. package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -1
  64. package/dist/actions/dataset/resolveDataset.js +26 -0
  65. package/dist/actions/dataset/resolveDataset.js.map +1 -0
  66. package/dist/actions/debug/formatters.js +22 -0
  67. package/dist/actions/debug/formatters.js.map +1 -0
  68. package/dist/actions/deploy/createStudioUserApplication.js +17 -4
  69. package/dist/actions/deploy/createStudioUserApplication.js.map +1 -1
  70. package/dist/actions/deploy/deployApp.js +52 -22
  71. package/dist/actions/deploy/deployApp.js.map +1 -1
  72. package/dist/actions/deploy/deployStudio.js +95 -46
  73. package/dist/actions/deploy/deployStudio.js.map +1 -1
  74. package/dist/actions/deploy/deployStudioSchemasAndManifests.js +55 -0
  75. package/dist/actions/deploy/deployStudioSchemasAndManifests.js.map +1 -0
  76. package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js +120 -0
  77. package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js.map +1 -0
  78. package/dist/actions/deploy/findUserApplicationForStudio.js +35 -12
  79. package/dist/actions/deploy/findUserApplicationForStudio.js.map +1 -1
  80. package/dist/actions/deploy/types.js +10 -1
  81. package/dist/actions/deploy/types.js.map +1 -1
  82. package/dist/actions/deploy/urlUtils.js +21 -0
  83. package/dist/actions/deploy/urlUtils.js.map +1 -0
  84. package/dist/actions/dev/getDashboardAppUrl.js +48 -0
  85. package/dist/actions/dev/getDashboardAppUrl.js.map +1 -0
  86. package/dist/actions/dev/getDevServerConfig.js +7 -3
  87. package/dist/actions/dev/getDevServerConfig.js.map +1 -1
  88. package/dist/actions/dev/startAppDevServer.js +7 -4
  89. package/dist/actions/dev/startAppDevServer.js.map +1 -1
  90. package/dist/actions/dev/startStudioDevServer.js +23 -19
  91. package/dist/actions/dev/startStudioDevServer.js.map +1 -1
  92. package/dist/actions/doctor/checks/cliInstallation.js +56 -0
  93. package/dist/actions/doctor/checks/cliInstallation.js.map +1 -0
  94. package/dist/actions/doctor/checks/index.js +16 -0
  95. package/dist/actions/doctor/checks/index.js.map +1 -0
  96. package/dist/actions/doctor/runDoctorChecks.js +56 -0
  97. package/dist/actions/doctor/runDoctorChecks.js.map +1 -0
  98. package/dist/actions/doctor/types.js.map +1 -0
  99. package/dist/actions/documents/types.js.map +1 -1
  100. package/dist/actions/documents/validate.js +15 -17
  101. package/dist/actions/documents/validate.js.map +1 -1
  102. package/dist/{threads/validateDocuments.js → actions/documents/validateDocuments.worker.js} +37 -37
  103. package/dist/actions/documents/validateDocuments.worker.js.map +1 -0
  104. package/dist/actions/documents/validation/reporters/jsonReporter.js +1 -1
  105. package/dist/actions/documents/validation/reporters/jsonReporter.js.map +1 -1
  106. package/dist/actions/documents/validation/reporters/ndjsonReporter.js +1 -1
  107. package/dist/actions/documents/validation/reporters/ndjsonReporter.js.map +1 -1
  108. package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js +9 -8
  109. package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js.map +1 -1
  110. package/dist/actions/documents/validation/reporters/prettyReporter/prettyReporter.js.map +1 -1
  111. package/dist/actions/documents/validation/reporters/prettyReporter/tree.js +108 -0
  112. package/dist/actions/documents/validation/reporters/prettyReporter/tree.js.map +1 -0
  113. package/dist/{threads/configClient.js → actions/exec/configClient.worker.js} +2 -2
  114. package/dist/actions/exec/configClient.worker.js.map +1 -0
  115. package/dist/actions/exec/execScript.js +29 -25
  116. package/dist/actions/exec/execScript.js.map +1 -1
  117. package/dist/{threads/registerBrowserEnv.js → actions/exec/registerBrowserEnv.worker.js} +1 -1
  118. package/dist/actions/exec/registerBrowserEnv.worker.js.map +1 -0
  119. package/dist/actions/graphql/SchemaError.js +15 -0
  120. package/dist/actions/graphql/SchemaError.js.map +1 -0
  121. package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js +540 -0
  122. package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js.map +1 -0
  123. package/dist/actions/graphql/__tests__/fixtures/test-studio.js +1143 -0
  124. package/dist/actions/graphql/__tests__/fixtures/test-studio.js.map +1 -0
  125. package/dist/actions/graphql/__tests__/fixtures/union-refs.js +591 -0
  126. package/dist/actions/graphql/__tests__/fixtures/union-refs.js.map +1 -0
  127. package/dist/actions/graphql/__tests__/helpers.js +23 -0
  128. package/dist/actions/graphql/__tests__/helpers.js.map +1 -0
  129. package/dist/actions/graphql/extractFromSanitySchema.js +659 -0
  130. package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -0
  131. package/dist/actions/graphql/extractGraphQLAPIs.js +150 -0
  132. package/dist/actions/graphql/extractGraphQLAPIs.js.map +1 -0
  133. package/dist/actions/graphql/extractGraphQLAPIs.worker.js +12 -0
  134. package/dist/actions/graphql/extractGraphQLAPIs.worker.js.map +1 -0
  135. package/dist/actions/graphql/gen1/generateTypeFilters.js +226 -0
  136. package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -0
  137. package/dist/actions/graphql/gen1/generateTypeQueries.js +86 -0
  138. package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -0
  139. package/dist/actions/graphql/gen1/index.js +19 -0
  140. package/dist/actions/graphql/gen1/index.js.map +1 -0
  141. package/dist/actions/graphql/gen2/filters/booleanFilters.js +26 -0
  142. package/dist/actions/graphql/gen2/filters/booleanFilters.js.map +1 -0
  143. package/dist/actions/graphql/gen2/filters/dateFilters.js +46 -0
  144. package/dist/actions/graphql/gen2/filters/dateFilters.js.map +1 -0
  145. package/dist/actions/graphql/gen2/filters/dateTimeFilters.js +46 -0
  146. package/dist/actions/graphql/gen2/filters/dateTimeFilters.js.map +1 -0
  147. package/dist/actions/graphql/gen2/filters/documentFilters.js +21 -0
  148. package/dist/actions/graphql/gen2/filters/documentFilters.js.map +1 -0
  149. package/dist/actions/graphql/gen2/filters/floatFilters.js +46 -0
  150. package/dist/actions/graphql/gen2/filters/floatFilters.js.map +1 -0
  151. package/dist/actions/graphql/gen2/filters/idFilters.js +44 -0
  152. package/dist/actions/graphql/gen2/filters/idFilters.js.map +1 -0
  153. package/dist/actions/graphql/gen2/filters/integerFilters.js +46 -0
  154. package/dist/actions/graphql/gen2/filters/integerFilters.js.map +1 -0
  155. package/dist/actions/graphql/gen2/filters/stringFilters.js +49 -0
  156. package/dist/actions/graphql/gen2/filters/stringFilters.js.map +1 -0
  157. package/dist/actions/graphql/gen2/generateTypeFilters.js +85 -0
  158. package/dist/actions/graphql/gen2/generateTypeFilters.js.map +1 -0
  159. package/dist/actions/graphql/gen2/generateTypeQueries.js +107 -0
  160. package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -0
  161. package/dist/actions/graphql/gen2/generateTypeSortings.js +70 -0
  162. package/dist/actions/graphql/gen2/generateTypeSortings.js.map +1 -0
  163. package/dist/actions/graphql/gen2/index.js +22 -0
  164. package/dist/actions/graphql/gen2/index.js.map +1 -0
  165. package/dist/actions/graphql/gen3/filters/documentFilters.js +21 -0
  166. package/dist/actions/graphql/gen3/filters/documentFilters.js.map +1 -0
  167. package/dist/actions/graphql/gen3/generateTypeFilters.js +101 -0
  168. package/dist/actions/graphql/gen3/generateTypeFilters.js.map +1 -0
  169. package/dist/actions/graphql/gen3/generateTypeQueries.js +103 -0
  170. package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -0
  171. package/dist/actions/graphql/gen3/generateTypeSortings.js +70 -0
  172. package/dist/actions/graphql/gen3/generateTypeSortings.js.map +1 -0
  173. package/dist/actions/graphql/gen3/index.js +30 -0
  174. package/dist/actions/graphql/gen3/index.js.map +1 -0
  175. package/dist/actions/graphql/gen3/utils.js +12 -0
  176. package/dist/actions/graphql/gen3/utils.js.map +1 -0
  177. package/dist/actions/graphql/getGraphQLAPIs.js +15 -57
  178. package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
  179. package/dist/actions/graphql/getGraphQLAPIs.worker.js +75 -106
  180. package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -1
  181. package/dist/actions/graphql/graphqlDebug.js +4 -0
  182. package/dist/actions/graphql/graphqlDebug.js.map +1 -0
  183. package/dist/actions/graphql/helpUrls.js +3 -0
  184. package/dist/actions/graphql/helpUrls.js.map +1 -0
  185. package/dist/actions/graphql/helpers.js +24 -0
  186. package/dist/actions/graphql/helpers.js.map +1 -0
  187. package/dist/actions/graphql/resolveApiGeneration.js +43 -0
  188. package/dist/actions/graphql/resolveApiGeneration.js.map +1 -0
  189. package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js +187 -0
  190. package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js.map +1 -0
  191. package/dist/actions/graphql/types.js.map +1 -1
  192. package/dist/actions/init/bootstrapLocalTemplate.js +13 -10
  193. package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
  194. package/dist/actions/init/bootstrapRemoteTemplate.js +6 -5
  195. package/dist/actions/init/bootstrapRemoteTemplate.js.map +1 -1
  196. package/dist/actions/init/bootstrapTemplate.js.map +1 -1
  197. package/dist/actions/init/checkNextJsReactCompatibility.js +1 -1
  198. package/dist/actions/init/checkNextJsReactCompatibility.js.map +1 -1
  199. package/dist/actions/init/createAppCliConfig.js.map +1 -1
  200. package/dist/actions/init/createCliConfig.js.map +1 -1
  201. package/dist/actions/init/createPackageManifest.js +21 -9
  202. package/dist/actions/init/createPackageManifest.js.map +1 -1
  203. package/dist/actions/init/env/createOrAppendEnvVars.js +2 -2
  204. package/dist/actions/init/env/createOrAppendEnvVars.js.map +1 -1
  205. package/dist/actions/init/env/writeEnvVarsToFile.js +2 -2
  206. package/dist/actions/init/env/writeEnvVarsToFile.js.map +1 -1
  207. package/dist/actions/init/fetchPostInitPrompt.js +2 -2
  208. package/dist/actions/init/fetchPostInitPrompt.js.map +1 -1
  209. package/dist/actions/init/remoteTemplate.js +1 -2
  210. package/dist/actions/init/remoteTemplate.js.map +1 -1
  211. package/dist/actions/init/resolvePackageManager.js +2 -2
  212. package/dist/actions/init/resolvePackageManager.js.map +1 -1
  213. package/dist/actions/init/sdkAppDependencies.js +19 -0
  214. package/dist/actions/init/sdkAppDependencies.js.map +1 -0
  215. package/dist/actions/init/studioDependencies.js.map +1 -0
  216. package/dist/actions/init/templates/appQuickstart.js +1 -22
  217. package/dist/actions/init/templates/appQuickstart.js.map +1 -1
  218. package/dist/actions/init/templates/appSanityUi.js +3 -22
  219. package/dist/actions/init/templates/appSanityUi.js.map +1 -1
  220. package/dist/actions/init/types.js.map +1 -1
  221. package/dist/actions/manifest/SchemaIcon.js +6 -4
  222. package/dist/actions/manifest/SchemaIcon.js.map +1 -1
  223. package/dist/actions/manifest/blockTypeTransformer.js +67 -0
  224. package/dist/actions/manifest/blockTypeTransformer.js.map +1 -0
  225. package/dist/actions/manifest/debug.js +4 -0
  226. package/dist/actions/manifest/debug.js.map +1 -0
  227. package/dist/actions/manifest/extractAppManifest.js +39 -22
  228. package/dist/actions/manifest/extractAppManifest.js.map +1 -1
  229. package/dist/actions/manifest/extractManifest.js +27 -78
  230. package/dist/actions/manifest/extractManifest.js.map +1 -1
  231. package/dist/actions/manifest/extractManifest.worker.js +30 -0
  232. package/dist/actions/manifest/extractManifest.worker.js.map +1 -0
  233. package/dist/actions/manifest/extractWorkspaceManifest.js +31 -372
  234. package/dist/actions/manifest/extractWorkspaceManifest.js.map +1 -1
  235. package/dist/actions/manifest/iconResolver.js +30 -0
  236. package/dist/actions/manifest/iconResolver.js.map +1 -0
  237. package/dist/actions/manifest/referenceTransformer.js +51 -0
  238. package/dist/actions/manifest/referenceTransformer.js.map +1 -0
  239. package/dist/actions/manifest/schemaTypeHelpers.js +2 -2
  240. package/dist/actions/manifest/schemaTypeHelpers.js.map +1 -1
  241. package/dist/actions/manifest/schemaTypeTransformer.js +168 -0
  242. package/dist/actions/manifest/schemaTypeTransformer.js.map +1 -0
  243. package/dist/actions/manifest/transformerUtils.js +40 -0
  244. package/dist/actions/manifest/transformerUtils.js.map +1 -0
  245. package/dist/actions/manifest/types.js +5 -0
  246. package/dist/actions/manifest/types.js.map +1 -1
  247. package/dist/actions/manifest/validationTransformer.js +84 -0
  248. package/dist/actions/manifest/validationTransformer.js.map +1 -0
  249. package/dist/actions/manifest/writeManifestFile.js +30 -0
  250. package/dist/actions/manifest/writeManifestFile.js.map +1 -0
  251. package/dist/actions/manifest/writeWorkspaceFiles.js +30 -0
  252. package/dist/actions/manifest/writeWorkspaceFiles.js.map +1 -0
  253. package/dist/actions/mcp/detectAvailableEditors.js +75 -58
  254. package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
  255. package/dist/actions/mcp/editorConfigs.js +205 -0
  256. package/dist/actions/mcp/editorConfigs.js.map +1 -0
  257. package/dist/actions/mcp/promptForMCPSetup.js +24 -0
  258. package/dist/actions/mcp/promptForMCPSetup.js.map +1 -0
  259. package/dist/actions/mcp/setupMCP.js +88 -0
  260. package/dist/actions/mcp/setupMCP.js.map +1 -0
  261. package/dist/actions/mcp/types.js +3 -0
  262. package/dist/actions/mcp/types.js.map +1 -0
  263. package/dist/actions/mcp/writeMCPConfig.js +35 -28
  264. package/dist/actions/mcp/writeMCPConfig.js.map +1 -1
  265. package/dist/actions/media/buildNdjsonIndex.js +32 -0
  266. package/dist/actions/media/buildNdjsonIndex.js.map +1 -0
  267. package/dist/actions/media/importAspects.js +2 -11
  268. package/dist/actions/media/importAspects.js.map +1 -1
  269. package/dist/actions/media/importMedia.js +24 -20
  270. package/dist/actions/media/importMedia.js.map +1 -1
  271. package/dist/actions/organizations/findOrganizationByUserName.js +5 -0
  272. package/dist/actions/organizations/findOrganizationByUserName.js.map +1 -0
  273. package/dist/actions/organizations/getOrganization.js +68 -0
  274. package/dist/actions/organizations/getOrganization.js.map +1 -0
  275. package/dist/actions/organizations/getOrganizationChoices.js +27 -19
  276. package/dist/actions/organizations/getOrganizationChoices.js.map +1 -1
  277. package/dist/actions/organizations/hasProjectAttachGrant.js +1 -1
  278. package/dist/actions/organizations/hasProjectAttachGrant.js.map +1 -1
  279. package/dist/actions/organizations/types.js +3 -0
  280. package/dist/actions/organizations/types.js.map +1 -0
  281. package/dist/actions/organizations/validateOrganizationName.js +10 -0
  282. package/dist/actions/organizations/validateOrganizationName.js.map +1 -0
  283. package/dist/actions/preview/previewAction.js +2 -1
  284. package/dist/actions/preview/previewAction.js.map +1 -1
  285. package/dist/actions/projects/getManageUrl.js +6 -0
  286. package/dist/actions/projects/getManageUrl.js.map +1 -0
  287. package/dist/actions/projects/validateProjectName.js +11 -0
  288. package/dist/actions/projects/validateProjectName.js.map +1 -0
  289. package/dist/actions/schema/deleteSchemaAction.js +16 -32
  290. package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
  291. package/dist/actions/schema/deploySchemas.js +22 -91
  292. package/dist/actions/schema/deploySchemas.js.map +1 -1
  293. package/dist/actions/schema/extractSanitySchema.worker.js +33 -0
  294. package/dist/actions/schema/extractSanitySchema.worker.js.map +1 -0
  295. package/dist/actions/schema/extractSanityWorkspace.worker.js +24 -0
  296. package/dist/actions/schema/extractSanityWorkspace.worker.js.map +1 -0
  297. package/dist/actions/schema/extractSchema.js +45 -0
  298. package/dist/actions/schema/extractSchema.js.map +1 -0
  299. package/dist/actions/schema/extractSchemaWatcher.js +128 -0
  300. package/dist/actions/schema/extractSchemaWatcher.js.map +1 -0
  301. package/dist/actions/schema/formatSchemaValidation.js +22 -6
  302. package/dist/actions/schema/formatSchemaValidation.js.map +1 -1
  303. package/dist/actions/schema/getExtractOptions.js +16 -0
  304. package/dist/actions/schema/getExtractOptions.js.map +1 -0
  305. package/dist/actions/schema/listSchemas.js +54 -57
  306. package/dist/actions/schema/listSchemas.js.map +1 -1
  307. package/dist/actions/schema/matchSchemaPattern.js +22 -0
  308. package/dist/actions/schema/matchSchemaPattern.js.map +1 -0
  309. package/dist/actions/schema/metafile.js.map +1 -1
  310. package/dist/actions/schema/runSchemaExtraction.js +39 -0
  311. package/dist/actions/schema/runSchemaExtraction.js.map +1 -0
  312. package/dist/actions/schema/types.js +17 -0
  313. package/dist/actions/schema/types.js.map +1 -0
  314. package/dist/actions/schema/uniqueWorkspaces.worker.js +24 -0
  315. package/dist/actions/schema/uniqueWorkspaces.worker.js.map +1 -0
  316. package/dist/actions/schema/updateWorkspaceSchema.js +63 -0
  317. package/dist/actions/schema/updateWorkspaceSchema.js.map +1 -0
  318. package/dist/actions/schema/uploadSchemaToLexicon.js +87 -0
  319. package/dist/actions/schema/uploadSchemaToLexicon.js.map +1 -0
  320. package/dist/actions/schema/utils/SchemaExtractionError.js +10 -0
  321. package/dist/actions/schema/utils/SchemaExtractionError.js.map +1 -0
  322. package/dist/actions/schema/utils/debug.js +1 -0
  323. package/dist/actions/schema/utils/debug.js.map +1 -1
  324. package/dist/actions/schema/utils/extractValidationFromSchemaError.js +12 -0
  325. package/dist/actions/schema/utils/extractValidationFromSchemaError.js.map +1 -0
  326. package/dist/actions/schema/utils/schemaStoreValidation.js +1 -15
  327. package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
  328. package/dist/actions/schema/utils/uniqByProjectIdDataset.js +1 -1
  329. package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -1
  330. package/dist/actions/schema/validateAction.js +7 -17
  331. package/dist/actions/schema/validateAction.js.map +1 -1
  332. package/dist/{threads/validateSchema.js → actions/schema/validateSchema.worker.js} +28 -26
  333. package/dist/actions/schema/validateSchema.worker.js.map +1 -0
  334. package/dist/actions/schema/watchExtractSchema.js +72 -0
  335. package/dist/actions/schema/watchExtractSchema.js.map +1 -0
  336. package/dist/actions/telemetry/getLearnMoreMessage.js.map +1 -1
  337. package/dist/actions/telemetry/getStatusDisplay.js.map +1 -1
  338. package/dist/actions/telemetry/getStatusMessage.js.map +1 -1
  339. package/dist/actions/telemetry/isTrueish.js +10 -0
  340. package/dist/actions/telemetry/isTrueish.js.map +1 -0
  341. package/dist/actions/telemetry/resolveConsent.js +3 -3
  342. package/dist/actions/telemetry/resolveConsent.js.map +1 -1
  343. package/dist/actions/telemetry/setConsent.js +3 -2
  344. package/dist/actions/telemetry/setConsent.js.map +1 -1
  345. package/dist/actions/telemetry/telemetryDisclosure.js +3 -3
  346. package/dist/actions/telemetry/telemetryDisclosure.js.map +1 -1
  347. package/dist/actions/users/getMembersForProject.js.map +1 -1
  348. package/dist/actions/users/getPendingInvitations.js +1 -1
  349. package/dist/actions/users/getPendingInvitations.js.map +1 -1
  350. package/dist/actions/users/types.js.map +1 -1
  351. package/dist/actions/versions/filterSanityModules.js.map +1 -1
  352. package/dist/actions/versions/findSanityModulesVersions.js +2 -3
  353. package/dist/actions/versions/findSanityModulesVersions.js.map +1 -1
  354. package/dist/actions/versions/getFormatters.js +3 -3
  355. package/dist/actions/versions/getFormatters.js.map +1 -1
  356. package/dist/actions/versions/tryFindLatestVersion.js +1 -1
  357. package/dist/actions/versions/tryFindLatestVersion.js.map +1 -1
  358. package/dist/commands/backup/disable.js +26 -10
  359. package/dist/commands/backup/disable.js.map +1 -1
  360. package/dist/commands/backup/download.js +26 -17
  361. package/dist/commands/backup/download.js.map +1 -1
  362. package/dist/commands/backup/enable.js +25 -10
  363. package/dist/commands/backup/enable.js.map +1 -1
  364. package/dist/commands/backup/list.js +20 -8
  365. package/dist/commands/backup/list.js.map +1 -1
  366. package/dist/commands/build.js +2 -5
  367. package/dist/commands/build.js.map +1 -1
  368. package/dist/commands/cors/add.js +33 -16
  369. package/dist/commands/cors/add.js.map +1 -1
  370. package/dist/commands/cors/delete.js +22 -7
  371. package/dist/commands/cors/delete.js.map +1 -1
  372. package/dist/commands/cors/list.js +22 -7
  373. package/dist/commands/cors/list.js.map +1 -1
  374. package/dist/commands/dataset/alias/create.js +26 -7
  375. package/dist/commands/dataset/alias/create.js.map +1 -1
  376. package/dist/commands/dataset/alias/delete.js +20 -7
  377. package/dist/commands/dataset/alias/delete.js.map +1 -1
  378. package/dist/commands/dataset/alias/link.js +20 -7
  379. package/dist/commands/dataset/alias/link.js.map +1 -1
  380. package/dist/commands/dataset/alias/unlink.js +20 -7
  381. package/dist/commands/dataset/alias/unlink.js.map +1 -1
  382. package/dist/commands/dataset/copy.js +51 -35
  383. package/dist/commands/dataset/copy.js.map +1 -1
  384. package/dist/commands/dataset/create.js +46 -14
  385. package/dist/commands/dataset/create.js.map +1 -1
  386. package/dist/commands/dataset/delete.js +28 -9
  387. package/dist/commands/dataset/delete.js.map +1 -1
  388. package/dist/commands/dataset/embeddings/disable.js +77 -0
  389. package/dist/commands/dataset/embeddings/disable.js.map +1 -0
  390. package/dist/commands/dataset/embeddings/enable.js +141 -0
  391. package/dist/commands/dataset/embeddings/enable.js.map +1 -0
  392. package/dist/commands/dataset/embeddings/status.js +72 -0
  393. package/dist/commands/dataset/embeddings/status.js.map +1 -0
  394. package/dist/commands/dataset/export.js +26 -18
  395. package/dist/commands/dataset/export.js.map +1 -1
  396. package/dist/commands/dataset/import.js +306 -1
  397. package/dist/commands/dataset/import.js.map +1 -1
  398. package/dist/commands/dataset/list.js +22 -7
  399. package/dist/commands/dataset/list.js.map +1 -1
  400. package/dist/commands/dataset/visibility/get.js +18 -7
  401. package/dist/commands/dataset/visibility/get.js.map +1 -1
  402. package/dist/commands/dataset/visibility/set.js +22 -7
  403. package/dist/commands/dataset/visibility/set.js.map +1 -1
  404. package/dist/commands/debug.js +9 -7
  405. package/dist/commands/debug.js.map +1 -1
  406. package/dist/commands/deploy.js +22 -11
  407. package/dist/commands/deploy.js.map +1 -1
  408. package/dist/commands/dev.js +7 -6
  409. package/dist/commands/dev.js.map +1 -1
  410. package/dist/commands/docs/search.js +3 -2
  411. package/dist/commands/docs/search.js.map +1 -1
  412. package/dist/commands/doctor.js +125 -0
  413. package/dist/commands/doctor.js.map +1 -0
  414. package/dist/commands/documents/create.js +19 -12
  415. package/dist/commands/documents/create.js.map +1 -1
  416. package/dist/commands/documents/delete.js +19 -12
  417. package/dist/commands/documents/delete.js.map +1 -1
  418. package/dist/commands/documents/get.js +17 -12
  419. package/dist/commands/documents/get.js.map +1 -1
  420. package/dist/commands/documents/query.js +26 -18
  421. package/dist/commands/documents/query.js.map +1 -1
  422. package/dist/commands/documents/validate.js +74 -48
  423. package/dist/commands/documents/validate.js.map +1 -1
  424. package/dist/commands/graphql/deploy.js +457 -0
  425. package/dist/commands/graphql/deploy.js.map +1 -0
  426. package/dist/commands/graphql/list.js +21 -13
  427. package/dist/commands/graphql/list.js.map +1 -1
  428. package/dist/commands/graphql/undeploy.js +37 -19
  429. package/dist/commands/graphql/undeploy.js.map +1 -1
  430. package/dist/commands/hook/attempt.js +22 -7
  431. package/dist/commands/hook/attempt.js.map +1 -1
  432. package/dist/commands/hook/create.js +23 -8
  433. package/dist/commands/hook/create.js.map +1 -1
  434. package/dist/commands/hook/delete.js +22 -7
  435. package/dist/commands/hook/delete.js.map +1 -1
  436. package/dist/commands/hook/list.js +22 -7
  437. package/dist/commands/hook/list.js.map +1 -1
  438. package/dist/commands/hook/logs.js +25 -12
  439. package/dist/commands/hook/logs.js.map +1 -1
  440. package/dist/commands/init.js +164 -143
  441. package/dist/commands/init.js.map +1 -1
  442. package/dist/commands/login.js +19 -6
  443. package/dist/commands/login.js.map +1 -1
  444. package/dist/commands/logout.js +8 -6
  445. package/dist/commands/logout.js.map +1 -1
  446. package/dist/commands/manage.js +2 -2
  447. package/dist/commands/manage.js.map +1 -1
  448. package/dist/commands/manifest/extract.js +14 -10
  449. package/dist/commands/manifest/extract.js.map +1 -1
  450. package/dist/commands/mcp/configure.js +14 -75
  451. package/dist/commands/mcp/configure.js.map +1 -1
  452. package/dist/commands/media/create-aspect.js +11 -10
  453. package/dist/commands/media/create-aspect.js.map +1 -1
  454. package/dist/commands/media/delete-aspect.js +14 -11
  455. package/dist/commands/media/delete-aspect.js.map +1 -1
  456. package/dist/commands/media/deploy-aspect.js +31 -17
  457. package/dist/commands/media/deploy-aspect.js.map +1 -1
  458. package/dist/commands/media/export.js +10 -9
  459. package/dist/commands/media/export.js.map +1 -1
  460. package/dist/commands/media/import.js +14 -12
  461. package/dist/commands/media/import.js.map +1 -1
  462. package/dist/commands/preview.js +12 -28
  463. package/dist/commands/preview.js.map +1 -1
  464. package/dist/commands/projects/create.js +181 -0
  465. package/dist/commands/projects/create.js.map +1 -0
  466. package/dist/commands/projects/list.js +4 -3
  467. package/dist/commands/projects/list.js.map +1 -1
  468. package/dist/commands/schema/delete.js +33 -34
  469. package/dist/commands/schema/delete.js.map +1 -1
  470. package/dist/commands/schema/deploy.js +19 -30
  471. package/dist/commands/schema/deploy.js.map +1 -1
  472. package/dist/commands/schema/extract.js +34 -11
  473. package/dist/commands/schema/extract.js.map +1 -1
  474. package/dist/commands/schema/list.js +10 -31
  475. package/dist/commands/schema/list.js.map +1 -1
  476. package/dist/commands/schema/validate.js +10 -2
  477. package/dist/commands/schema/validate.js.map +1 -1
  478. package/dist/commands/tokens/add.js +24 -7
  479. package/dist/commands/tokens/add.js.map +1 -1
  480. package/dist/commands/tokens/delete.js +20 -7
  481. package/dist/commands/tokens/delete.js.map +1 -1
  482. package/dist/commands/tokens/list.js +20 -7
  483. package/dist/commands/tokens/list.js.map +1 -1
  484. package/dist/commands/undeploy.js +9 -8
  485. package/dist/commands/undeploy.js.map +1 -1
  486. package/dist/commands/users/invite.js +24 -7
  487. package/dist/commands/users/invite.js.map +1 -1
  488. package/dist/commands/users/list.js +77 -34
  489. package/dist/commands/users/list.js.map +1 -1
  490. package/dist/commands/versions.js +3 -3
  491. package/dist/commands/versions.js.map +1 -1
  492. package/dist/config/createCliConfig.js +2 -2
  493. package/dist/config/createCliConfig.js.map +1 -1
  494. package/dist/exports/_internal.d.ts +132 -0
  495. package/dist/exports/_internal.js +4 -0
  496. package/dist/exports/_internal.js.map +1 -0
  497. package/dist/exports/index.d.ts +113 -0
  498. package/dist/exports/index.js +6 -0
  499. package/dist/exports/index.js.map +1 -0
  500. package/dist/hooks/init/checkForUpdates.js +14 -0
  501. package/dist/hooks/init/checkForUpdates.js.map +1 -0
  502. package/dist/hooks/prerun/flushTelemetry.worker.js +1 -1
  503. package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -1
  504. package/dist/hooks/prerun/injectEnvVariables.js +39 -0
  505. package/dist/hooks/prerun/injectEnvVariables.js.map +1 -0
  506. package/dist/hooks/prerun/setupTelemetry.js +14 -7
  507. package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
  508. package/dist/hooks/prerun/warnings.js +6 -0
  509. package/dist/hooks/prerun/warnings.js.map +1 -0
  510. package/dist/prompts/promptForDefaultConfig.js +12 -0
  511. package/dist/prompts/promptForDefaultConfig.js.map +1 -0
  512. package/dist/prompts/promptForOrganizationName.js +11 -0
  513. package/dist/prompts/promptForOrganizationName.js.map +1 -0
  514. package/dist/prompts/promptForProject.js +64 -0
  515. package/dist/prompts/promptForProject.js.map +1 -0
  516. package/dist/prompts/promptForProjectName.js +11 -0
  517. package/dist/prompts/promptForProjectName.js.map +1 -0
  518. package/dist/{actions/auth/login/promptProviders.js → prompts/promptForProviders.js} +3 -3
  519. package/dist/prompts/promptForProviders.js.map +1 -0
  520. package/dist/prompts/selectMediaLibrary.js +1 -1
  521. package/dist/prompts/selectMediaLibrary.js.map +1 -1
  522. package/dist/server/devServer.js +4 -2
  523. package/dist/server/devServer.js.map +1 -1
  524. package/dist/server/previewServer.js +17 -11
  525. package/dist/server/previewServer.js.map +1 -1
  526. package/dist/server/vite/plugin-schema-extraction.js +201 -0
  527. package/dist/server/vite/plugin-schema-extraction.js.map +1 -0
  528. package/dist/server/vite/plugin-typegen.js +217 -0
  529. package/dist/server/vite/plugin-typegen.js.map +1 -0
  530. package/dist/services/auth.js +42 -3
  531. package/dist/services/auth.js.map +1 -1
  532. package/dist/services/datasets.js +7 -5
  533. package/dist/services/datasets.js.map +1 -1
  534. package/dist/services/docs.js +2 -2
  535. package/dist/services/docs.js.map +1 -1
  536. package/dist/services/documents.js +56 -0
  537. package/dist/services/documents.js.map +1 -0
  538. package/dist/services/embeddings.js +25 -0
  539. package/dist/services/embeddings.js.map +1 -0
  540. package/dist/services/getUrlHeaders.js +25 -0
  541. package/dist/services/getUrlHeaders.js.map +1 -0
  542. package/dist/services/grants.js +13 -0
  543. package/dist/services/grants.js.map +1 -0
  544. package/dist/services/graphql.js +64 -0
  545. package/dist/services/graphql.js.map +1 -1
  546. package/dist/services/mcp.js.map +1 -1
  547. package/dist/services/organizations.js +1 -1
  548. package/dist/services/organizations.js.map +1 -1
  549. package/dist/services/projects.js +4 -2
  550. package/dist/services/projects.js.map +1 -1
  551. package/dist/services/schemas.js +1 -1
  552. package/dist/services/schemas.js.map +1 -1
  553. package/dist/services/telemetry.js +63 -2
  554. package/dist/services/telemetry.js.map +1 -1
  555. package/dist/services/userApplications.js +21 -6
  556. package/dist/services/userApplications.js.map +1 -1
  557. package/dist/telemetry/build.telemetry.js +13 -0
  558. package/dist/telemetry/build.telemetry.js.map +1 -0
  559. package/dist/telemetry/extractSchema.telemetry.js +18 -0
  560. package/dist/telemetry/extractSchema.telemetry.js.map +1 -0
  561. package/dist/telemetry/init.telemetry.js +8 -0
  562. package/dist/telemetry/init.telemetry.js.map +1 -0
  563. package/dist/telemetry/login.telemetry.js +8 -0
  564. package/dist/telemetry/login.telemetry.js.map +1 -0
  565. package/dist/telemetry/mcp.telemetry.js +8 -0
  566. package/dist/telemetry/mcp.telemetry.js.map +1 -0
  567. package/dist/types/grants.js +3 -0
  568. package/dist/types/grants.js.map +1 -0
  569. package/dist/types.js +6 -1
  570. package/dist/types.js.map +1 -1
  571. package/dist/util/appId.js +5 -5
  572. package/dist/util/appId.js.map +1 -1
  573. package/dist/util/checkProjectPermissions.js +21 -0
  574. package/dist/util/checkProjectPermissions.js.map +1 -0
  575. package/dist/util/cliClient.js +13 -10
  576. package/dist/util/cliClient.js.map +1 -1
  577. package/dist/util/compareDependencyVersions.js +74 -38
  578. package/dist/util/compareDependencyVersions.js.map +1 -1
  579. package/dist/util/createExpiringConfig.js +64 -0
  580. package/dist/util/createExpiringConfig.js.map +1 -0
  581. package/dist/util/detectFramework.js +135 -0
  582. package/dist/util/detectFramework.js.map +1 -0
  583. package/dist/util/errorMessages.js +0 -1
  584. package/dist/util/errorMessages.js.map +1 -1
  585. package/dist/util/extractDocumentsFromNdjsonOrTarball.js +1 -2
  586. package/dist/util/extractDocumentsFromNdjsonOrTarball.js.map +1 -1
  587. package/dist/util/formatSize.js +2 -2
  588. package/dist/util/formatSize.js.map +1 -1
  589. package/dist/util/getCliVersion.js +1 -1
  590. package/dist/util/getCliVersion.js.map +1 -1
  591. package/dist/util/getLocalPackageVersion.js +31 -23
  592. package/dist/util/getLocalPackageVersion.js.map +1 -1
  593. package/dist/util/getProjectDefaults.js.map +1 -1
  594. package/dist/util/getSanityEnv.js +3 -0
  595. package/dist/util/getSanityEnv.js.map +1 -0
  596. package/dist/util/getSharedServerConfig.js +1 -0
  597. package/dist/util/getSharedServerConfig.js.map +1 -1
  598. package/dist/util/getWorkspace.js +1 -1
  599. package/dist/util/getWorkspace.js.map +1 -1
  600. package/dist/util/isSchemaError.js +11 -0
  601. package/dist/util/isSchemaError.js.map +1 -0
  602. package/dist/util/isTar.js +8 -0
  603. package/dist/util/isTar.js.map +1 -0
  604. package/dist/util/loadEnv.js +1 -6
  605. package/dist/util/loadEnv.js.map +1 -1
  606. package/dist/util/packageManager/getPeerDependencies.js +44 -0
  607. package/dist/util/packageManager/getPeerDependencies.js.map +1 -0
  608. package/dist/util/packageManager/installationInfo/analyzeIssues.js +225 -0
  609. package/dist/util/packageManager/installationInfo/analyzeIssues.js.map +1 -0
  610. package/dist/util/packageManager/installationInfo/commands.js +73 -0
  611. package/dist/util/packageManager/installationInfo/commands.js.map +1 -0
  612. package/dist/util/packageManager/installationInfo/detectCliInstallation.js +66 -0
  613. package/dist/util/packageManager/installationInfo/detectCliInstallation.js.map +1 -0
  614. package/dist/util/packageManager/installationInfo/detectGlobals.js +295 -0
  615. package/dist/util/packageManager/installationInfo/detectGlobals.js.map +1 -0
  616. package/dist/util/packageManager/installationInfo/detectPackages.js +190 -0
  617. package/dist/util/packageManager/installationInfo/detectPackages.js.map +1 -0
  618. package/dist/util/packageManager/installationInfo/detectWorkspace.js +192 -0
  619. package/dist/util/packageManager/installationInfo/detectWorkspace.js.map +1 -0
  620. package/dist/util/packageManager/installationInfo/index.js +4 -0
  621. package/dist/util/packageManager/installationInfo/index.js.map +1 -0
  622. package/dist/util/packageManager/installationInfo/readJsonFile.js +14 -0
  623. package/dist/util/packageManager/installationInfo/readJsonFile.js.map +1 -0
  624. package/dist/util/packageManager/installationInfo/resolveVersionRange.js +42 -0
  625. package/dist/util/packageManager/installationInfo/resolveVersionRange.js.map +1 -0
  626. package/dist/util/packageManager/installationInfo/types.js +3 -0
  627. package/dist/util/packageManager/installationInfo/types.js.map +1 -0
  628. package/dist/util/packageManager/packageManagerChoice.js +1 -20
  629. package/dist/util/packageManager/packageManagerChoice.js.map +1 -1
  630. package/dist/util/packageManager/upgradePackages.js +4 -1
  631. package/dist/util/packageManager/upgradePackages.js.map +1 -1
  632. package/dist/util/promiseRaceWithTimeout.js +28 -0
  633. package/dist/util/promiseRaceWithTimeout.js.map +1 -0
  634. package/dist/util/readdirRecursive.js.map +1 -1
  635. package/dist/util/resolveLatestVersions.js +2 -2
  636. package/dist/util/resolveLatestVersions.js.map +1 -1
  637. package/dist/util/sharedFlags.js +54 -0
  638. package/dist/util/sharedFlags.js.map +1 -0
  639. package/dist/{telemetry/store → util/telemetry}/cleanupOldTelemetryFiles.js +1 -1
  640. package/dist/util/telemetry/cleanupOldTelemetryFiles.js.map +1 -0
  641. package/dist/{telemetry/store → util/telemetry}/createTelemetryStore.js +4 -4
  642. package/dist/util/telemetry/createTelemetryStore.js.map +1 -0
  643. package/dist/util/telemetry/createTraceId.js.map +1 -0
  644. package/dist/{telemetry/store → util/telemetry}/findTelemetryFiles.js +4 -3
  645. package/dist/util/telemetry/findTelemetryFiles.js.map +1 -0
  646. package/dist/{telemetry/store → util/telemetry}/flushTelemetryFiles.js +29 -18
  647. package/dist/util/telemetry/flushTelemetryFiles.js.map +1 -0
  648. package/dist/{telemetry/store → util/telemetry}/generateTelemetryFilePath.js +2 -2
  649. package/dist/util/telemetry/generateTelemetryFilePath.js.map +1 -0
  650. package/dist/{telemetry/store → util/telemetry}/logger.js +7 -2
  651. package/dist/util/telemetry/logger.js.map +1 -0
  652. package/dist/util/telemetry/readNDJSON.js +28 -0
  653. package/dist/util/telemetry/readNDJSON.js.map +1 -0
  654. package/dist/util/telemetry/telemetryStoreDebug.js +7 -0
  655. package/dist/util/telemetry/telemetryStoreDebug.js.map +1 -0
  656. package/dist/{telemetry/store → util/telemetry}/trace.js +2 -2
  657. package/dist/util/telemetry/trace.js.map +1 -0
  658. package/dist/util/toForwardSlashes.js +8 -0
  659. package/dist/util/toForwardSlashes.js.map +1 -0
  660. package/dist/util/update/fetchLatestVersion.js +21 -0
  661. package/dist/util/update/fetchLatestVersion.js.map +1 -0
  662. package/dist/util/update/getUpdateCommand.js +20 -0
  663. package/dist/util/update/getUpdateCommand.js.map +1 -0
  664. package/dist/util/update/isInstalledUsingYarn.js +17 -0
  665. package/dist/util/update/isInstalledUsingYarn.js.map +1 -0
  666. package/dist/util/update/showNotificationUpdate.js +31 -0
  667. package/dist/util/update/showNotificationUpdate.js.map +1 -0
  668. package/dist/util/update/updateChecker.js +60 -0
  669. package/dist/util/update/updateChecker.js.map +1 -0
  670. package/dist/util/update/updateCheckerDebug.js +4 -0
  671. package/dist/util/update/updateCheckerDebug.js.map +1 -0
  672. package/dist/util/warnAboutMissingAppId.js +6 -2
  673. package/dist/util/warnAboutMissingAppId.js.map +1 -1
  674. package/dist/util/warnOnNonProductionEnvironment.js +18 -0
  675. package/dist/util/warnOnNonProductionEnvironment.js.map +1 -0
  676. package/oclif.config.js +7 -1
  677. package/oclif.manifest.json +1129 -146
  678. package/package.json +83 -78
  679. package/static/favicons/apple-touch-icon.png +0 -0
  680. package/static/favicons/favicon-192.png +0 -0
  681. package/static/favicons/favicon-512.png +0 -0
  682. package/static/favicons/favicon-96.png +0 -0
  683. package/static/favicons/favicon.ico +0 -0
  684. package/static/favicons/favicon.svg +12 -0
  685. package/dist/SanityHelp.d.ts +0 -4
  686. package/dist/actions/auth/authServer.d.ts +0 -33
  687. package/dist/actions/auth/getProviderName.d.ts +0 -8
  688. package/dist/actions/auth/login/getProvider.d.ts +0 -15
  689. package/dist/actions/auth/login/getSSOProvider.d.ts +0 -13
  690. package/dist/actions/auth/login/login.d.ts +0 -20
  691. package/dist/actions/auth/login/promptProviders.d.ts +0 -10
  692. package/dist/actions/auth/login/promptProviders.js.map +0 -1
  693. package/dist/actions/auth/login/samlProviderToLoginProvider.d.ts +0 -9
  694. package/dist/actions/auth/types.d.ts +0 -26
  695. package/dist/actions/backup/archiveDir.d.ts +0 -10
  696. package/dist/actions/backup/assertDatasetExist.d.ts +0 -8
  697. package/dist/actions/backup/backupDownloadDebug.d.ts +0 -1
  698. package/dist/actions/backup/cleanupTmpDir.d.ts +0 -6
  699. package/dist/actions/backup/constants.d.ts +0 -1
  700. package/dist/actions/backup/downloadAsset.d.ts +0 -9
  701. package/dist/actions/backup/downloadDocument.d.ts +0 -7
  702. package/dist/actions/backup/fetchNextBackupPage.d.ts +0 -23
  703. package/dist/actions/backup/progressSpinner.d.ts +0 -14
  704. package/dist/actions/build/buildApp.d.ts +0 -7
  705. package/dist/actions/build/buildDebug.d.ts +0 -1
  706. package/dist/actions/build/buildStaticFiles.d.ts +0 -35
  707. package/dist/actions/build/buildStudio.d.ts +0 -7
  708. package/dist/actions/build/buildVendorDependencies.d.ts +0 -11
  709. package/dist/actions/build/checkRequiredDependencies.d.ts +0 -22
  710. package/dist/actions/build/checkStudioDependencyVersions.d.ts +0 -2
  711. package/dist/actions/build/createExternalFromImportMap.d.ts +0 -11
  712. package/dist/actions/build/decorateIndexWithAutoGeneratedWarning.d.ts +0 -6
  713. package/dist/actions/build/decorateIndexWithBridgeScript.d.ts +0 -8
  714. package/dist/actions/build/determineBasePath.d.ts +0 -7
  715. package/dist/actions/build/generateWebManifest.d.ts +0 -15
  716. package/dist/actions/build/getAppEnvVars.d.ts +0 -6
  717. package/dist/actions/build/getAutoUpdatesImportMap.d.ts +0 -21
  718. package/dist/actions/build/getEntryModule.d.ts +0 -7
  719. package/dist/actions/build/getPossibleDocumentComponentLocations.d.ts +0 -4
  720. package/dist/actions/build/getStudioEnvVars.d.ts +0 -6
  721. package/dist/actions/build/getStudioEnvironmentVariables.d.ts +0 -52
  722. package/dist/actions/build/getViteConfig.d.ts +0 -66
  723. package/dist/actions/build/normalizeBasePath.d.ts +0 -6
  724. package/dist/actions/build/renderDocument.d.ts +0 -15
  725. package/dist/actions/build/renderDocument.worker.d.ts +0 -1
  726. package/dist/actions/build/renderDocumentWorker/addTimestampImportMapScriptToHtml.d.ts +0 -6
  727. package/dist/actions/build/renderDocumentWorker/components/BasicDocument.d.ts +0 -19
  728. package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.d.ts +0 -13
  729. package/dist/actions/build/renderDocumentWorker/components/Favicons.d.ts +0 -2
  730. package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.d.ts +0 -3
  731. package/dist/actions/build/renderDocumentWorker/components/NoJavascript.d.ts +0 -3
  732. package/dist/actions/build/renderDocumentWorker/getDocumentComponent.d.ts +0 -5
  733. package/dist/actions/build/renderDocumentWorker/getDocumentHtml.d.ts +0 -8
  734. package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.d.ts +0 -21
  735. package/dist/actions/build/renderDocumentWorker/tryLoadDocumentComponent.d.ts +0 -8
  736. package/dist/actions/build/renderDocumentWorker/types.d.ts +0 -8
  737. package/dist/actions/build/shouldAutoUpdate.d.ts +0 -16
  738. package/dist/actions/build/types.d.ts +0 -13
  739. package/dist/actions/build/writeFavicons.d.ts +0 -1
  740. package/dist/actions/build/writeSanityRuntime.d.ts +0 -19
  741. package/dist/actions/build/writeWebManifest.d.ts +0 -4
  742. package/dist/actions/codemods/deskRename.d.ts +0 -2
  743. package/dist/actions/codemods/index.d.ts +0 -5
  744. package/dist/actions/codemods/partsTypeDirective.d.ts +0 -2
  745. package/dist/actions/codemods/reactIconsV3.d.ts +0 -2
  746. package/dist/actions/codemods/types.d.ts +0 -8
  747. package/dist/actions/cors/filterAndValidateOrigin.d.ts +0 -7
  748. package/dist/actions/dataset/create.d.ts +0 -49
  749. package/dist/actions/dataset/determineDatasetAclMode.d.ts +0 -37
  750. package/dist/actions/dataset/processAliasName.d.ts +0 -9
  751. package/dist/actions/dataset/validateDatasetAliasName.d.ts +0 -1
  752. package/dist/actions/dataset/validateDatasetName.d.ts +0 -13
  753. package/dist/actions/debug/gatherDebugInfo.d.ts +0 -2
  754. package/dist/actions/debug/getGlobalConfigLocation.d.ts +0 -1
  755. package/dist/actions/debug/types.d.ts +0 -30
  756. package/dist/actions/deploy/checkDir.d.ts +0 -8
  757. package/dist/actions/deploy/createStudioUserApplication.d.ts +0 -2
  758. package/dist/actions/deploy/createUserApplicationForApp.d.ts +0 -2
  759. package/dist/actions/deploy/deployApp.d.ts +0 -7
  760. package/dist/actions/deploy/deployDebug.d.ts +0 -1
  761. package/dist/actions/deploy/deployStudio.d.ts +0 -2
  762. package/dist/actions/deploy/findUserApplicationForApp.d.ts +0 -15
  763. package/dist/actions/deploy/findUserApplicationForStudio.d.ts +0 -13
  764. package/dist/actions/deploy/types.d.ts +0 -11
  765. package/dist/actions/dev/devAction.d.ts +0 -4
  766. package/dist/actions/dev/devDebug.d.ts +0 -1
  767. package/dist/actions/dev/getCoreAppUrl.d.ts +0 -5
  768. package/dist/actions/dev/getCoreAppUrl.js +0 -10
  769. package/dist/actions/dev/getCoreAppUrl.js.map +0 -1
  770. package/dist/actions/dev/getDevServerConfig.d.ts +0 -9
  771. package/dist/actions/dev/startAppDevServer.d.ts +0 -4
  772. package/dist/actions/dev/startStudioDevServer.d.ts +0 -4
  773. package/dist/actions/dev/types.d.ts +0 -10
  774. package/dist/actions/docs/normalizeDocsPath.d.ts +0 -8
  775. package/dist/actions/documents/constants.d.ts +0 -1
  776. package/dist/actions/documents/editor.d.ts +0 -11
  777. package/dist/actions/documents/types.d.ts +0 -2
  778. package/dist/actions/documents/validate.d.ts +0 -26
  779. package/dist/actions/documents/validation/reporters/index.d.ts +0 -5
  780. package/dist/actions/documents/validation/reporters/jsonReporter.d.ts +0 -2
  781. package/dist/actions/documents/validation/reporters/ndjsonReporter.d.ts +0 -2
  782. package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.d.ts +0 -10
  783. package/dist/actions/documents/validation/reporters/prettyReporter/index.d.ts +0 -1
  784. package/dist/actions/documents/validation/reporters/prettyReporter/prettyReporter.d.ts +0 -5
  785. package/dist/actions/documents/validation/reporters/prettyReporter/util.d.ts +0 -53
  786. package/dist/actions/exec/execScript.d.ts +0 -11
  787. package/dist/actions/graphql/getGraphQLAPIs.d.ts +0 -2
  788. package/dist/actions/graphql/getGraphQLAPIs.worker.d.ts +0 -1
  789. package/dist/actions/graphql/types.d.ts +0 -68
  790. package/dist/actions/hook/constants.d.ts +0 -1
  791. package/dist/actions/hook/formatFailure.d.ts +0 -4
  792. package/dist/actions/hook/types.d.ts +0 -78
  793. package/dist/actions/init/bootstrapLocalTemplate.d.ts +0 -13
  794. package/dist/actions/init/bootstrapRemoteTemplate.d.ts +0 -12
  795. package/dist/actions/init/bootstrapTemplate.d.ts +0 -18
  796. package/dist/actions/init/checkNextJsReactCompatibility.d.ts +0 -9
  797. package/dist/actions/init/constants.d.ts +0 -1
  798. package/dist/actions/init/countNestedFolders.d.ts +0 -1
  799. package/dist/actions/init/createAppCliConfig.d.ts +0 -5
  800. package/dist/actions/init/createCliConfig.d.ts +0 -6
  801. package/dist/actions/init/createPackageManifest.d.ts +0 -6
  802. package/dist/actions/init/createStudioConfig.d.ts +0 -13
  803. package/dist/actions/init/determineAppTemplate.d.ts +0 -9
  804. package/dist/actions/init/env/createOrAppendEnvVars.d.ts +0 -12
  805. package/dist/actions/init/env/parseAndUpdateEnvVars.d.ts +0 -9
  806. package/dist/actions/init/env/writeEnvVarsToFile.d.ts +0 -12
  807. package/dist/actions/init/fetchPostInitPrompt.d.ts +0 -6
  808. package/dist/actions/init/git.d.ts +0 -1
  809. package/dist/actions/init/processTemplate.d.ts +0 -7
  810. package/dist/actions/init/remoteTemplate.d.ts +0 -20
  811. package/dist/actions/init/resolvePackageManager.d.ts +0 -10
  812. package/dist/actions/init/setupMCP.d.ts +0 -21
  813. package/dist/actions/init/setupMCP.js +0 -258
  814. package/dist/actions/init/setupMCP.js.map +0 -1
  815. package/dist/actions/init/templates/appQuickstart.d.ts +0 -3
  816. package/dist/actions/init/templates/appSanityUi.d.ts +0 -3
  817. package/dist/actions/init/templates/blog.d.ts +0 -3
  818. package/dist/actions/init/templates/clean.d.ts +0 -3
  819. package/dist/actions/init/templates/getStarted.d.ts +0 -3
  820. package/dist/actions/init/templates/index.d.ts +0 -3
  821. package/dist/actions/init/templates/moviedb.d.ts +0 -3
  822. package/dist/actions/init/templates/nextjs/index.d.ts +0 -6
  823. package/dist/actions/init/templates/nextjs/schemaTypes/blog.d.ts +0 -3
  824. package/dist/actions/init/templates/quickstart.d.ts +0 -3
  825. package/dist/actions/init/templates/shopify.d.ts +0 -3
  826. package/dist/actions/init/templates/shopifyOnline.d.ts +0 -3
  827. package/dist/actions/init/types.d.ts +0 -15
  828. package/dist/actions/init/updateInitialTemplateMetadata.d.ts +0 -1
  829. package/dist/actions/manifest/SchemaIcon.d.ts +0 -9
  830. package/dist/actions/manifest/extractAppManifest.d.ts +0 -20
  831. package/dist/actions/manifest/extractManifest.d.ts +0 -14
  832. package/dist/actions/manifest/extractWorkspaceManifest.d.ts +0 -3
  833. package/dist/actions/manifest/purifyConfig.d.ts +0 -10
  834. package/dist/actions/manifest/schemaTypeHelpers.d.ts +0 -17
  835. package/dist/actions/manifest/types.d.ts +0 -119
  836. package/dist/actions/mcp/detectAvailableEditors.d.ts +0 -8
  837. package/dist/actions/mcp/getEditorsWithExistingConfig.d.ts +0 -8
  838. package/dist/actions/mcp/getEditorsWithExistingConfig.js +0 -29
  839. package/dist/actions/mcp/getEditorsWithExistingConfig.js.map +0 -1
  840. package/dist/actions/mcp/writeMCPConfig.d.ts +0 -9
  841. package/dist/actions/media/getMediaLibraryConfig.d.ts +0 -2
  842. package/dist/actions/media/importAspects.d.ts +0 -52
  843. package/dist/actions/media/importMedia.d.ts +0 -55
  844. package/dist/actions/media/importMediaDebug.d.ts +0 -1
  845. package/dist/actions/organizations/getOrganizationChoices.d.ts +0 -6
  846. package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.d.ts +0 -2
  847. package/dist/actions/organizations/hasProjectAttachGrant.d.ts +0 -1
  848. package/dist/actions/preview/getPreviewServerConfig.d.ts +0 -15
  849. package/dist/actions/preview/previewAction.d.ts +0 -10
  850. package/dist/actions/preview/types.d.ts +0 -2
  851. package/dist/actions/schema/deleteSchemaAction.d.ts +0 -23
  852. package/dist/actions/schema/deploySchemas.d.ts +0 -15
  853. package/dist/actions/schema/extract.d.ts +0 -7
  854. package/dist/actions/schema/extract.js +0 -38
  855. package/dist/actions/schema/extract.js.map +0 -1
  856. package/dist/actions/schema/formatSchemaValidation.d.ts +0 -3
  857. package/dist/actions/schema/listSchemas.d.ts +0 -12
  858. package/dist/actions/schema/metafile.d.ts +0 -21
  859. package/dist/actions/schema/schemaStoreTypes.d.ts +0 -18
  860. package/dist/actions/schema/schemaStoreTypes.js +0 -19
  861. package/dist/actions/schema/schemaStoreTypes.js.map +0 -1
  862. package/dist/actions/schema/utils/debug.d.ts +0 -2
  863. package/dist/actions/schema/utils/manifestExtractor.d.ts +0 -9
  864. package/dist/actions/schema/utils/manifestExtractor.js +0 -33
  865. package/dist/actions/schema/utils/manifestExtractor.js.map +0 -1
  866. package/dist/actions/schema/utils/manifestReader.d.ts +0 -17
  867. package/dist/actions/schema/utils/manifestReader.js +0 -71
  868. package/dist/actions/schema/utils/manifestReader.js.map +0 -1
  869. package/dist/actions/schema/utils/schemaStoreOutStrings.d.ts +0 -2
  870. package/dist/actions/schema/utils/schemaStoreValidation.d.ts +0 -29
  871. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +0 -14
  872. package/dist/actions/schema/utils/workspaceSchemaId.d.ts +0 -8
  873. package/dist/actions/schema/validateAction.d.ts +0 -11
  874. package/dist/actions/telemetry/fetchTelemetryConsent.d.ts +0 -11
  875. package/dist/actions/telemetry/fetchTelemetryConsent.js +0 -38
  876. package/dist/actions/telemetry/fetchTelemetryConsent.js.map +0 -1
  877. package/dist/actions/telemetry/getLearnMoreMessage.d.ts +0 -2
  878. package/dist/actions/telemetry/getStatusDisplay.d.ts +0 -2
  879. package/dist/actions/telemetry/getStatusMessage.d.ts +0 -2
  880. package/dist/actions/telemetry/isValidApiConsentStatus.d.ts +0 -20
  881. package/dist/actions/telemetry/isValidApiConsentStatus.js +0 -25
  882. package/dist/actions/telemetry/isValidApiConsentStatus.js.map +0 -1
  883. package/dist/actions/telemetry/resolveConsent.d.ts +0 -2
  884. package/dist/actions/telemetry/setConsent.d.ts +0 -13
  885. package/dist/actions/telemetry/telemetryDebug.d.ts +0 -1
  886. package/dist/actions/telemetry/telemetryDisclosure.d.ts +0 -1
  887. package/dist/actions/telemetry/telemetryLearnMoreMessage.d.ts +0 -2
  888. package/dist/actions/telemetry/types.d.ts +0 -14
  889. package/dist/actions/telemetry/types.js.map +0 -1
  890. package/dist/actions/tokens/constants.d.ts +0 -4
  891. package/dist/actions/tokens/types.d.ts +0 -32
  892. package/dist/actions/tokens/validateRole.d.ts +0 -9
  893. package/dist/actions/undeploy/getStudioOrAppUserApplication.d.ts +0 -9
  894. package/dist/actions/users/getMembersForProject.d.ts +0 -24
  895. package/dist/actions/users/getPendingInvitations.d.ts +0 -13
  896. package/dist/actions/users/types.d.ts +0 -39
  897. package/dist/actions/users/usersDebug.d.ts +0 -1
  898. package/dist/actions/users/validateEmail.d.ts +0 -1
  899. package/dist/actions/versions/buildPackageArray.d.ts +0 -18
  900. package/dist/actions/versions/filterSanityModules.d.ts +0 -8
  901. package/dist/actions/versions/findSanityModulesVersions.d.ts +0 -14
  902. package/dist/actions/versions/getFormatters.d.ts +0 -17
  903. package/dist/actions/versions/tryFindLatestVersion.d.ts +0 -8
  904. package/dist/actions/versions/types.d.ts +0 -14
  905. package/dist/actions/versions/versionsDebug.d.ts +0 -1
  906. package/dist/commands/backup/disable.d.ts +0 -13
  907. package/dist/commands/backup/download.d.ts +0 -21
  908. package/dist/commands/backup/enable.d.ts +0 -12
  909. package/dist/commands/backup/list.d.ts +0 -19
  910. package/dist/commands/build.d.ts +0 -18
  911. package/dist/commands/codemod.d.ts +0 -19
  912. package/dist/commands/cors/add.d.ts +0 -29
  913. package/dist/commands/cors/delete.d.ts +0 -13
  914. package/dist/commands/cors/list.d.ts +0 -9
  915. package/dist/commands/dataset/alias/create.d.ts +0 -13
  916. package/dist/commands/dataset/alias/delete.d.ts +0 -16
  917. package/dist/commands/dataset/alias/link.d.ts +0 -17
  918. package/dist/commands/dataset/alias/unlink.d.ts +0 -16
  919. package/dist/commands/dataset/copy.d.ts +0 -27
  920. package/dist/commands/dataset/create.d.ts +0 -15
  921. package/dist/commands/dataset/delete.d.ts +0 -15
  922. package/dist/commands/dataset/export.d.ts +0 -26
  923. package/dist/commands/dataset/import.d.ts +0 -1
  924. package/dist/commands/dataset/list.d.ts +0 -9
  925. package/dist/commands/dataset/visibility/get.d.ts +0 -12
  926. package/dist/commands/dataset/visibility/set.d.ts +0 -13
  927. package/dist/commands/debug.d.ts +0 -9
  928. package/dist/commands/deploy.d.ts +0 -23
  929. package/dist/commands/dev.d.ts +0 -14
  930. package/dist/commands/docs/browse.d.ts +0 -6
  931. package/dist/commands/docs/read.d.ts +0 -15
  932. package/dist/commands/docs/search.d.ts +0 -15
  933. package/dist/commands/documents/create.d.ts +0 -39
  934. package/dist/commands/documents/delete.d.ts +0 -17
  935. package/dist/commands/documents/get.d.ts +0 -16
  936. package/dist/commands/documents/query.d.ts +0 -19
  937. package/dist/commands/documents/validate.d.ts +0 -29
  938. package/dist/commands/exec.d.ts +0 -19
  939. package/dist/commands/graphql/list.d.ts +0 -9
  940. package/dist/commands/graphql/undeploy.d.ts +0 -16
  941. package/dist/commands/hook/attempt.d.ts +0 -13
  942. package/dist/commands/hook/create.d.ts +0 -9
  943. package/dist/commands/hook/delete.d.ts +0 -13
  944. package/dist/commands/hook/list.d.ts +0 -9
  945. package/dist/commands/hook/logs.d.ts +0 -19
  946. package/dist/commands/init.d.ts +0 -65
  947. package/dist/commands/install.d.ts +0 -10
  948. package/dist/commands/learn.d.ts +0 -6
  949. package/dist/commands/login.d.ts +0 -13
  950. package/dist/commands/logout.d.ts +0 -6
  951. package/dist/commands/manage.d.ts +0 -6
  952. package/dist/commands/manifest/extract.d.ts +0 -12
  953. package/dist/commands/mcp/configure.d.ts +0 -9
  954. package/dist/commands/media/create-aspect.d.ts +0 -9
  955. package/dist/commands/media/delete-aspect.d.ts +0 -16
  956. package/dist/commands/media/deploy-aspect.d.ts +0 -20
  957. package/dist/commands/media/export.d.ts +0 -21
  958. package/dist/commands/media/import.d.ts +0 -18
  959. package/dist/commands/openapi/get.d.ts +0 -17
  960. package/dist/commands/openapi/list.d.ts +0 -14
  961. package/dist/commands/preview.d.ts +0 -17
  962. package/dist/commands/projects/list.d.ts +0 -13
  963. package/dist/commands/schema/delete.d.ts +0 -16
  964. package/dist/commands/schema/deploy.d.ts +0 -16
  965. package/dist/commands/schema/extract.d.ts +0 -15
  966. package/dist/commands/schema/list.d.ts +0 -15
  967. package/dist/commands/schema/validate.d.ts +0 -15
  968. package/dist/commands/telemetry/disable.d.ts +0 -8
  969. package/dist/commands/telemetry/enable.d.ts +0 -8
  970. package/dist/commands/telemetry/status.d.ts +0 -8
  971. package/dist/commands/tokens/add.d.ts +0 -19
  972. package/dist/commands/tokens/delete.d.ts +0 -17
  973. package/dist/commands/tokens/list.d.ts +0 -12
  974. package/dist/commands/undeploy.d.ts +0 -8
  975. package/dist/commands/users/invite.d.ts +0 -17
  976. package/dist/commands/users/list.d.ts +0 -16
  977. package/dist/commands/versions.d.ts +0 -6
  978. package/dist/config/createCliConfig.d.ts +0 -73
  979. package/dist/config/defineCliConfig.d.ts +0 -3
  980. package/dist/hooks/prerun/flushTelemetry.worker.d.ts +0 -2
  981. package/dist/hooks/prerun/setupTelemetry.d.ts +0 -2
  982. package/dist/index.d.ts +0 -6
  983. package/dist/index.js +0 -7
  984. package/dist/index.js.map +0 -1
  985. package/dist/prompts/init/nextjs.d.ts +0 -5
  986. package/dist/prompts/init/promptForTypescript.d.ts +0 -1
  987. package/dist/prompts/promptForDataset.d.ts +0 -17
  988. package/dist/prompts/promptForDatasetAclMode.d.ts +0 -9
  989. package/dist/prompts/promptForDatasetAliasName.d.ts +0 -4
  990. package/dist/prompts/promptForDatasetName.d.ts +0 -4
  991. package/dist/prompts/promptForMediaLibrary.d.ts +0 -15
  992. package/dist/prompts/selectDataset.d.ts +0 -3
  993. package/dist/prompts/selectMediaLibrary.d.ts +0 -5
  994. package/dist/server/devServer.d.ts +0 -24
  995. package/dist/server/gracefulServerDeath.d.ts +0 -3
  996. package/dist/server/previewServer.d.ts +0 -19
  997. package/dist/server/serverDebug.d.ts +0 -1
  998. package/dist/server/vite/plugin-sanity-basepath-redirect.d.ts +0 -2
  999. package/dist/server/vite/plugin-sanity-build-entries.d.ts +0 -9
  1000. package/dist/server/vite/plugin-sanity-favicons.d.ts +0 -17
  1001. package/dist/server/vite/plugin-sanity-runtime-rewrite.d.ts +0 -2
  1002. package/dist/services/auth.d.ts +0 -2
  1003. package/dist/services/backup.d.ts +0 -37
  1004. package/dist/services/cors.d.ts +0 -23
  1005. package/dist/services/datasetAliases.d.ts +0 -31
  1006. package/dist/services/datasets.d.ts +0 -64
  1007. package/dist/services/docs.d.ts +0 -15
  1008. package/dist/services/getProjectFeatures.d.ts +0 -5
  1009. package/dist/services/graphql.d.ts +0 -23
  1010. package/dist/services/hooks.d.ts +0 -16
  1011. package/dist/services/mcp.d.ts +0 -39
  1012. package/dist/services/mediaLibraries.d.ts +0 -52
  1013. package/dist/services/organizations.d.ts +0 -42
  1014. package/dist/services/plans.d.ts +0 -2
  1015. package/dist/services/projects.d.ts +0 -36
  1016. package/dist/services/schemas.d.ts +0 -4
  1017. package/dist/services/telemetry.d.ts +0 -2
  1018. package/dist/services/tokens.d.ts +0 -43
  1019. package/dist/services/user.d.ts +0 -15
  1020. package/dist/services/userApplications.d.ts +0 -77
  1021. package/dist/studioDependencies.d.ts +0 -16
  1022. package/dist/studioDependencies.js.map +0 -1
  1023. package/dist/telemetry/cli.telemetry.d.ts +0 -20
  1024. package/dist/telemetry/store/cleanupOldTelemetryFiles.d.ts +0 -5
  1025. package/dist/telemetry/store/cleanupOldTelemetryFiles.js.map +0 -1
  1026. package/dist/telemetry/store/createTelemetryStore.d.ts +0 -39
  1027. package/dist/telemetry/store/createTelemetryStore.js.map +0 -1
  1028. package/dist/telemetry/store/createTraceId.d.ts +0 -10
  1029. package/dist/telemetry/store/createTraceId.js.map +0 -1
  1030. package/dist/telemetry/store/debug.d.ts +0 -5
  1031. package/dist/telemetry/store/debug.js +0 -7
  1032. package/dist/telemetry/store/debug.js.map +0 -1
  1033. package/dist/telemetry/store/findTelemetryFiles.d.ts +0 -13
  1034. package/dist/telemetry/store/findTelemetryFiles.js.map +0 -1
  1035. package/dist/telemetry/store/flushTelemetryFiles.d.ts +0 -20
  1036. package/dist/telemetry/store/flushTelemetryFiles.js.map +0 -1
  1037. package/dist/telemetry/store/generateTelemetryFilePath.d.ts +0 -17
  1038. package/dist/telemetry/store/generateTelemetryFilePath.js.map +0 -1
  1039. package/dist/telemetry/store/getTelemetryBaseInfo.d.ts +0 -27
  1040. package/dist/telemetry/store/getTelemetryBaseInfo.js +0 -34
  1041. package/dist/telemetry/store/getTelemetryBaseInfo.js.map +0 -1
  1042. package/dist/telemetry/store/logger.d.ts +0 -6
  1043. package/dist/telemetry/store/logger.js.map +0 -1
  1044. package/dist/telemetry/store/trace.d.ts +0 -6
  1045. package/dist/telemetry/store/trace.js.map +0 -1
  1046. package/dist/telemetry/utils/readNDJSON.d.ts +0 -10
  1047. package/dist/telemetry/utils/readNDJSON.js +0 -18
  1048. package/dist/telemetry/utils/readNDJSON.js.map +0 -1
  1049. package/dist/threads/configClient.d.ts +0 -1
  1050. package/dist/threads/configClient.js.map +0 -1
  1051. package/dist/threads/registerBrowserEnv.d.ts +0 -1
  1052. package/dist/threads/registerBrowserEnv.js.map +0 -1
  1053. package/dist/threads/validateDocuments.d.ts +0 -45
  1054. package/dist/threads/validateDocuments.js.map +0 -1
  1055. package/dist/threads/validateSchema.d.ts +0 -35
  1056. package/dist/threads/validateSchema.js.map +0 -1
  1057. package/dist/types.d.ts +0 -49
  1058. package/dist/typings/deepSortObject.d.js +0 -2
  1059. package/dist/typings/deepSortObject.d.js.map +0 -1
  1060. package/dist/util/absolutify.d.ts +0 -6
  1061. package/dist/util/appId.d.ts +0 -18
  1062. package/dist/util/canLaunchBrowser.d.ts +0 -1
  1063. package/dist/util/cliClient.d.ts +0 -13
  1064. package/dist/util/compareDependencyVersions.d.ts +0 -35
  1065. package/dist/util/copy.d.ts +0 -5
  1066. package/dist/util/copyDir.d.ts +0 -20
  1067. package/dist/util/detectRuntime.d.ts +0 -8
  1068. package/dist/util/determineIsApp.d.ts +0 -7
  1069. package/dist/util/dirIsEmptyOrNonExistent.d.ts +0 -1
  1070. package/dist/util/ensureTrailingSlash.d.ts +0 -9
  1071. package/dist/util/errorMessages.d.ts +0 -4
  1072. package/dist/util/extractDocumentsFromNdjsonOrTarball.d.ts +0 -6
  1073. package/dist/util/findNdjsonEntry.d.ts +0 -7
  1074. package/dist/util/findNdjsonEntry.js +0 -21
  1075. package/dist/util/findNdjsonEntry.js.map +0 -1
  1076. package/dist/util/formatSize.d.ts +0 -6
  1077. package/dist/util/frameworkPort.d.ts +0 -12
  1078. package/dist/util/fsUtils.d.ts +0 -2
  1079. package/dist/util/getCliVersion.d.ts +0 -7
  1080. package/dist/util/getErrorMessage.d.ts +0 -8
  1081. package/dist/util/getLocalPackageVersion.d.ts +0 -9
  1082. package/dist/util/getProjectDefaults.d.ts +0 -11
  1083. package/dist/util/getSharedServerConfig.d.ts +0 -30
  1084. package/dist/util/getWorkspace.d.ts +0 -3
  1085. package/dist/util/humanFileSize.d.ts +0 -1
  1086. package/dist/util/importStudioConfig.d.ts +0 -1
  1087. package/dist/util/importStudioConfig.js +0 -43
  1088. package/dist/util/importStudioConfig.js.map +0 -1
  1089. package/dist/util/isPathDirName.d.ts +0 -1
  1090. package/dist/util/isSanityDocumentish.d.ts +0 -19
  1091. package/dist/util/isStaging.d.ts +0 -7
  1092. package/dist/util/isStaging.js +0 -10
  1093. package/dist/util/isStaging.js.map +0 -1
  1094. package/dist/util/loadEnv.d.ts +0 -1
  1095. package/dist/util/moduleFormatUtils.d.ts +0 -3
  1096. package/dist/util/packageManager/installPackages.d.ts +0 -18
  1097. package/dist/util/packageManager/packageManagerChoice.d.ts +0 -31
  1098. package/dist/util/packageManager/upgradePackages.d.ts +0 -17
  1099. package/dist/util/parseArguments.d.ts +0 -35
  1100. package/dist/util/pluralize.d.ts +0 -8
  1101. package/dist/util/readModuleVersion.d.ts +0 -8
  1102. package/dist/util/readModuleVersion.js +0 -15
  1103. package/dist/util/readModuleVersion.js.map +0 -1
  1104. package/dist/util/readPackageJson.d.ts +0 -31
  1105. package/dist/util/readPackageJson.js +0 -42
  1106. package/dist/util/readPackageJson.js.map +0 -1
  1107. package/dist/util/readPackageManifest.d.ts +0 -21
  1108. package/dist/util/readPackageManifest.js +0 -46
  1109. package/dist/util/readPackageManifest.js.map +0 -1
  1110. package/dist/util/readdirRecursive.d.ts +0 -5
  1111. package/dist/util/resolveLatestVersions.d.ts +0 -7
  1112. package/dist/util/toInt.d.ts +0 -1
  1113. package/dist/util/trimHashFromVersion.d.ts +0 -5
  1114. package/dist/util/uniqBy.d.ts +0 -1
  1115. package/dist/util/uniqBy.js +0 -14
  1116. package/dist/util/uniqBy.js.map +0 -1
  1117. package/dist/util/validation/validateDocumentsUtils.d.ts +0 -12
  1118. package/dist/util/warnAboutMissingAppId.d.ts +0 -7
  1119. package/dist/util/workerChannels.d.ts +0 -59
  1120. package/dist/util/workerChannels.js +0 -172
  1121. package/dist/util/workerChannels.js.map +0 -1
  1122. /package/dist/actions/{telemetry → doctor}/types.js +0 -0
  1123. /package/dist/{studioDependencies.js → actions/init/studioDependencies.js} +0 -0
  1124. /package/dist/{telemetry/store → util/telemetry}/createTraceId.js +0 -0
@@ -2,14 +2,14 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { getProjectCliClient, SanityCommand, subdebug } from '@sanity/cli-core';
5
- import { input, spinner } from '@sanity/cli-core/ux';
5
+ import { boxen, input, spinner } from '@sanity/cli-core/ux';
6
6
  import { exportDataset } from '@sanity/export';
7
- import boxen from 'boxen';
8
7
  import prettyMs from 'pretty-ms';
9
8
  import { promptForMediaLibrary } from '../../prompts/promptForMediaLibrary.js';
9
+ import { promptForProject } from '../../prompts/promptForProject.js';
10
10
  import { getMediaLibraries } from '../../services/mediaLibraries.js';
11
11
  import { absolutify } from '../../util/absolutify.js';
12
- import { NO_PROJECT_ID } from '../../util/errorMessages.js';
12
+ import { getProjectIdFlag } from '../../util/sharedFlags.js';
13
13
  const noop = ()=>null;
14
14
  const exportDebug = subdebug('media:export');
15
15
  export class MediaExportCommand extends SanityCommand {
@@ -34,6 +34,10 @@ export class MediaExportCommand extends SanityCommand {
34
34
  }
35
35
  ];
36
36
  static flags = {
37
+ ...getProjectIdFlag({
38
+ description: 'Project ID to export media from',
39
+ semantics: 'override'
40
+ }),
37
41
  'asset-concurrency': Flags.integer({
38
42
  default: 8,
39
43
  description: 'Concurrent number of asset downloads'
@@ -53,12 +57,9 @@ export class MediaExportCommand extends SanityCommand {
53
57
  async run() {
54
58
  const { args, flags } = await this.parse(MediaExportCommand);
55
59
  const { destination: targetDestination } = args;
56
- const projectId = await this.getProjectId();
57
- if (!projectId) {
58
- this.error(NO_PROJECT_ID, {
59
- exit: 1
60
- });
61
- }
60
+ const projectId = await this.getProjectId({
61
+ fallback: ()=>promptForProject({})
62
+ });
62
63
  const projectClient = await getProjectCliClient({
63
64
  apiVersion: 'v2025-02-19',
64
65
  projectId,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/media/export.ts"],"sourcesContent":["import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport {type Writable} from 'node:stream'\n\nimport {Args, Flags} from '@oclif/core'\nimport {getProjectCliClient, SanityCommand, subdebug} from '@sanity/cli-core'\nimport {input, spinner} from '@sanity/cli-core/ux'\nimport {exportDataset, type ExportOptions, type ExportProgress} from '@sanity/export'\nimport boxen from 'boxen'\nimport prettyMs from 'pretty-ms'\n\nimport {promptForMediaLibrary} from '../../prompts/promptForMediaLibrary.js'\nimport {getMediaLibraries} from '../../services/mediaLibraries.js'\nimport {absolutify} from '../../util/absolutify.js'\nimport {NO_PROJECT_ID} from '../../util/errorMessages.js'\n\nconst noop = () => null\nconst exportDebug = subdebug('media:export')\n\nexport class MediaExportCommand extends SanityCommand<typeof MediaExportCommand> {\n static override args = {\n destination: Args.string({\n description: 'Output destination file path',\n }),\n }\n\n static override description =\n 'Export an archive of all file and image assets including their aspect data from the target media library. Video assets are excluded from the export.'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Export media library interactively',\n },\n {\n command: '<%= config.bin %> <%= command.id %> output.tar.gz',\n description: 'Export media library to output.tar.gz',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --media-library-id my-library-id',\n description: 'Export specific media library',\n },\n ]\n\n static override flags = {\n 'asset-concurrency': Flags.integer({\n default: 8,\n description: 'Concurrent number of asset downloads',\n }),\n 'media-library-id': Flags.string({\n description: 'The id of the target media library',\n }),\n 'no-compress': Flags.boolean({\n default: false,\n description: 'Skips compressing tarball entries (still generates a gzip file)',\n }),\n overwrite: Flags.boolean({\n default: false,\n description: 'Overwrite any file with the same name',\n }),\n }\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(MediaExportCommand)\n const {destination: targetDestination} = args\n\n const projectId = await this.getProjectId()\n\n if (!projectId) {\n this.error(NO_PROJECT_ID, {\n exit: 1,\n })\n }\n\n const projectClient = await getProjectCliClient({\n apiVersion: 'v2025-02-19',\n projectId,\n requireUser: true,\n })\n\n let mediaLibraries\n try {\n mediaLibraries = await getMediaLibraries(projectId)\n } catch (error) {\n exportDebug('Error listing media libraries', error)\n this.error(\n `Failed to list media libraries:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n\n if (mediaLibraries.length === 0) {\n this.error('No active media libraries found in this project', {exit: 1})\n }\n\n let mediaLibraryId = flags['media-library-id']\n if (!mediaLibraryId) {\n try {\n mediaLibraryId = await promptForMediaLibrary({mediaLibraries})\n } catch (error) {\n exportDebug('Error selecting media library', error)\n this.error(\n `Failed to select media library:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n }\n\n if (!mediaLibraries.some((library) => library.id === mediaLibraryId)) {\n this.error(`Media library with id \"${mediaLibraryId}\" not found`, {exit: 1})\n }\n\n this.log(\n boxen(\n `Exporting from:\nprojectId: ${projectId.padEnd(44)}\nmediaLibraryId: ${mediaLibraryId.padEnd(37)}`,\n {\n borderColor: 'yellow',\n borderStyle: 'round',\n },\n ),\n )\n\n let destinationPath = targetDestination\n if (!destinationPath) {\n destinationPath = await this.promptForDestination({mediaLibraryId})\n }\n\n const outputPath = await this.getOutputPath(destinationPath, mediaLibraryId, flags)\n if (!outputPath) {\n this.error('Cancelled', {exit: 1})\n }\n\n const {fail, onProgress, succeed} = this.createProgressHandler()\n const exportOptions: ExportOptions = {\n assetConcurrency: flags['asset-concurrency'],\n client: projectClient,\n compress: !flags['no-compress'],\n mediaLibraryId,\n onProgress,\n outputPath,\n }\n\n const start = Date.now()\n try {\n await exportDataset(exportOptions)\n succeed()\n this.log(`Export finished (${prettyMs(Date.now() - start)})`)\n } catch (error) {\n fail()\n const err = error instanceof Error ? error : new Error(String(error))\n exportDebug('Export failed', err)\n this.error(`Export failed: ${err.message}`, {exit: 1})\n }\n }\n\n private createProgressHandler() {\n let currentSpinner: ReturnType<typeof spinner> | null = null\n let currentStep = ''\n\n const onProgress = (progress: ExportProgress) => {\n if (progress.step !== currentStep) {\n succeed()\n\n currentStep = progress.step\n currentSpinner = spinner(progress.step).start()\n } else if (progress.step === currentStep && progress.update && currentSpinner) {\n currentSpinner.text = `${progress.step} (${progress.current}/${progress.total})`\n }\n }\n\n const succeed = () => {\n currentSpinner?.succeed()\n }\n\n const fail = () => {\n currentSpinner?.fail()\n }\n\n return {fail, onProgress, succeed}\n }\n\n private async getOutputPath(\n destination: string,\n mediaLibraryId: string,\n flags: {overwrite?: boolean},\n ): Promise<string | Writable> {\n if (destination === '-') {\n return process.stdout\n }\n\n const dstPath = path.isAbsolute(destination)\n ? destination\n : path.resolve(process.cwd(), destination)\n\n const dstStats = await fs.stat(dstPath).catch(noop)\n const looksLikeFile = dstStats ? dstStats.isFile() : path.basename(dstPath).includes('.')\n\n if (!dstStats) {\n const createPath = looksLikeFile ? path.dirname(dstPath) : dstPath\n try {\n await fs.mkdir(createPath, {recursive: true})\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error))\n this.error(`Failed to create directory \"${createPath}\": ${err.message}`, {\n exit: 1,\n })\n }\n }\n\n const finalPath = looksLikeFile\n ? dstPath\n : path.join(dstPath, `${mediaLibraryId}-export.tar.gz`)\n const finalPathStats = await fs.stat(finalPath).catch(noop)\n\n if (!flags.overwrite && finalPathStats && finalPathStats.isFile()) {\n this.error(`File \"${finalPath}\" already exists. Use --overwrite flag to overwrite it.`, {\n exit: 1,\n })\n }\n\n return finalPath\n }\n\n private promptForDestination(options: {\n mediaLibraryId: string\n workDir?: string\n }): Promise<string> {\n const {mediaLibraryId, workDir = process.cwd()} = options\n\n const defaultPath = path.join(workDir, `${mediaLibraryId}-export.tar.gz`)\n\n return input({\n default: defaultPath,\n message: 'Output path:',\n transformer: (value: string) => absolutify(value.trim()),\n validate: (value: string) => {\n const trimmed = value.trim()\n if (!trimmed) {\n return 'Please provide a valid output path'\n }\n return true\n },\n })\n }\n}\n"],"names":["fs","path","Args","Flags","getProjectCliClient","SanityCommand","subdebug","input","spinner","exportDataset","boxen","prettyMs","promptForMediaLibrary","getMediaLibraries","absolutify","NO_PROJECT_ID","noop","exportDebug","MediaExportCommand","args","destination","string","description","examples","command","flags","integer","default","boolean","overwrite","run","parse","targetDestination","projectId","getProjectId","error","exit","projectClient","apiVersion","requireUser","mediaLibraries","Error","message","length","mediaLibraryId","some","library","id","log","padEnd","borderColor","borderStyle","destinationPath","promptForDestination","outputPath","getOutputPath","fail","onProgress","succeed","createProgressHandler","exportOptions","assetConcurrency","client","compress","start","Date","now","err","String","currentSpinner","currentStep","progress","step","update","text","current","total","process","stdout","dstPath","isAbsolute","resolve","cwd","dstStats","stat","catch","looksLikeFile","isFile","basename","includes","createPath","dirname","mkdir","recursive","finalPath","join","finalPathStats","options","workDir","defaultPath","transformer","value","trim","validate","trimmed"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/commands/media/export.ts"],"sourcesContent":["import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport {type Writable} from 'node:stream'\n\nimport {Args, Flags} from '@oclif/core'\nimport {getProjectCliClient, SanityCommand, subdebug} from '@sanity/cli-core'\nimport {boxen, input, spinner} from '@sanity/cli-core/ux'\nimport {exportDataset, type ExportOptions, type ExportProgress} from '@sanity/export'\nimport prettyMs from 'pretty-ms'\n\nimport {promptForMediaLibrary} from '../../prompts/promptForMediaLibrary.js'\nimport {promptForProject} from '../../prompts/promptForProject.js'\nimport {getMediaLibraries} from '../../services/mediaLibraries.js'\nimport {absolutify} from '../../util/absolutify.js'\nimport {getProjectIdFlag} from '../../util/sharedFlags.js'\n\nconst noop = () => null\nconst exportDebug = subdebug('media:export')\n\nexport class MediaExportCommand extends SanityCommand<typeof MediaExportCommand> {\n static override args = {\n destination: Args.string({\n description: 'Output destination file path',\n }),\n }\n\n static override description =\n 'Export an archive of all file and image assets including their aspect data from the target media library. Video assets are excluded from the export.'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Export media library interactively',\n },\n {\n command: '<%= config.bin %> <%= command.id %> output.tar.gz',\n description: 'Export media library to output.tar.gz',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --media-library-id my-library-id',\n description: 'Export specific media library',\n },\n ]\n\n static override flags = {\n ...getProjectIdFlag({\n description: 'Project ID to export media from',\n semantics: 'override',\n }),\n 'asset-concurrency': Flags.integer({\n default: 8,\n description: 'Concurrent number of asset downloads',\n }),\n 'media-library-id': Flags.string({\n description: 'The id of the target media library',\n }),\n 'no-compress': Flags.boolean({\n default: false,\n description: 'Skips compressing tarball entries (still generates a gzip file)',\n }),\n overwrite: Flags.boolean({\n default: false,\n description: 'Overwrite any file with the same name',\n }),\n }\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(MediaExportCommand)\n const {destination: targetDestination} = args\n\n const projectId = await this.getProjectId({fallback: () => promptForProject({})})\n\n const projectClient = await getProjectCliClient({\n apiVersion: 'v2025-02-19',\n projectId,\n requireUser: true,\n })\n\n let mediaLibraries\n try {\n mediaLibraries = await getMediaLibraries(projectId)\n } catch (error) {\n exportDebug('Error listing media libraries', error)\n this.error(\n `Failed to list media libraries:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n\n if (mediaLibraries.length === 0) {\n this.error('No active media libraries found in this project', {exit: 1})\n }\n\n let mediaLibraryId = flags['media-library-id']\n if (!mediaLibraryId) {\n try {\n mediaLibraryId = await promptForMediaLibrary({mediaLibraries})\n } catch (error) {\n exportDebug('Error selecting media library', error)\n this.error(\n `Failed to select media library:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n }\n\n if (!mediaLibraries.some((library) => library.id === mediaLibraryId)) {\n this.error(`Media library with id \"${mediaLibraryId}\" not found`, {exit: 1})\n }\n\n this.log(\n boxen(\n `Exporting from:\nprojectId: ${projectId.padEnd(44)}\nmediaLibraryId: ${mediaLibraryId.padEnd(37)}`,\n {\n borderColor: 'yellow',\n borderStyle: 'round',\n },\n ),\n )\n\n let destinationPath = targetDestination\n if (!destinationPath) {\n destinationPath = await this.promptForDestination({mediaLibraryId})\n }\n\n const outputPath = await this.getOutputPath(destinationPath, mediaLibraryId, flags)\n if (!outputPath) {\n this.error('Cancelled', {exit: 1})\n }\n\n const {fail, onProgress, succeed} = this.createProgressHandler()\n const exportOptions: ExportOptions = {\n assetConcurrency: flags['asset-concurrency'],\n client: projectClient,\n compress: !flags['no-compress'],\n mediaLibraryId,\n onProgress,\n outputPath,\n }\n\n const start = Date.now()\n try {\n await exportDataset(exportOptions)\n succeed()\n this.log(`Export finished (${prettyMs(Date.now() - start)})`)\n } catch (error) {\n fail()\n const err = error instanceof Error ? error : new Error(String(error))\n exportDebug('Export failed', err)\n this.error(`Export failed: ${err.message}`, {exit: 1})\n }\n }\n\n private createProgressHandler() {\n let currentSpinner: ReturnType<typeof spinner> | null = null\n let currentStep = ''\n\n const onProgress = (progress: ExportProgress) => {\n if (progress.step !== currentStep) {\n succeed()\n\n currentStep = progress.step\n currentSpinner = spinner(progress.step).start()\n } else if (progress.step === currentStep && progress.update && currentSpinner) {\n currentSpinner.text = `${progress.step} (${progress.current}/${progress.total})`\n }\n }\n\n const succeed = () => {\n currentSpinner?.succeed()\n }\n\n const fail = () => {\n currentSpinner?.fail()\n }\n\n return {fail, onProgress, succeed}\n }\n\n private async getOutputPath(\n destination: string,\n mediaLibraryId: string,\n flags: {overwrite?: boolean},\n ): Promise<string | Writable> {\n if (destination === '-') {\n return process.stdout\n }\n\n const dstPath = path.isAbsolute(destination)\n ? destination\n : path.resolve(process.cwd(), destination)\n\n const dstStats = await fs.stat(dstPath).catch(noop)\n const looksLikeFile = dstStats ? dstStats.isFile() : path.basename(dstPath).includes('.')\n\n if (!dstStats) {\n const createPath = looksLikeFile ? path.dirname(dstPath) : dstPath\n try {\n await fs.mkdir(createPath, {recursive: true})\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error))\n this.error(`Failed to create directory \"${createPath}\": ${err.message}`, {\n exit: 1,\n })\n }\n }\n\n const finalPath = looksLikeFile\n ? dstPath\n : path.join(dstPath, `${mediaLibraryId}-export.tar.gz`)\n const finalPathStats = await fs.stat(finalPath).catch(noop)\n\n if (!flags.overwrite && finalPathStats && finalPathStats.isFile()) {\n this.error(`File \"${finalPath}\" already exists. Use --overwrite flag to overwrite it.`, {\n exit: 1,\n })\n }\n\n return finalPath\n }\n\n private promptForDestination(options: {\n mediaLibraryId: string\n workDir?: string\n }): Promise<string> {\n const {mediaLibraryId, workDir = process.cwd()} = options\n\n const defaultPath = path.join(workDir, `${mediaLibraryId}-export.tar.gz`)\n\n return input({\n default: defaultPath,\n message: 'Output path:',\n transformer: (value: string) => absolutify(value.trim()),\n validate: (value: string) => {\n const trimmed = value.trim()\n if (!trimmed) {\n return 'Please provide a valid output path'\n }\n return true\n },\n })\n }\n}\n"],"names":["fs","path","Args","Flags","getProjectCliClient","SanityCommand","subdebug","boxen","input","spinner","exportDataset","prettyMs","promptForMediaLibrary","promptForProject","getMediaLibraries","absolutify","getProjectIdFlag","noop","exportDebug","MediaExportCommand","args","destination","string","description","examples","command","flags","semantics","integer","default","boolean","overwrite","run","parse","targetDestination","projectId","getProjectId","fallback","projectClient","apiVersion","requireUser","mediaLibraries","error","Error","message","exit","length","mediaLibraryId","some","library","id","log","padEnd","borderColor","borderStyle","destinationPath","promptForDestination","outputPath","getOutputPath","fail","onProgress","succeed","createProgressHandler","exportOptions","assetConcurrency","client","compress","start","Date","now","err","String","currentSpinner","currentStep","progress","step","update","text","current","total","process","stdout","dstPath","isAbsolute","resolve","cwd","dstStats","stat","catch","looksLikeFile","isFile","basename","includes","createPath","dirname","mkdir","recursive","finalPath","join","finalPathStats","options","workDir","defaultPath","transformer","value","trim","validate","trimmed"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
+ import { styleText } from 'node:util';
1
2
  import { Args, Flags } from '@oclif/core';
2
3
  import { getProjectCliClient, SanityCommand } from '@sanity/cli-core';
3
- import { chalk, spinner } from '@sanity/cli-core/ux';
4
- import boxen from 'boxen';
4
+ import { boxen, spinner } from '@sanity/cli-core/ux';
5
5
  import { pipe, scan, tap } from 'rxjs';
6
6
  import { importer } from '../../actions/media/importMedia.js';
7
7
  import { importMediaDebug } from '../../actions/media/importMediaDebug.js';
8
8
  import { promptForMediaLibrary } from '../../prompts/promptForMediaLibrary.js';
9
+ import { promptForProject } from '../../prompts/promptForProject.js';
9
10
  import { getMediaLibraries } from '../../services/mediaLibraries.js';
10
- import { NO_PROJECT_ID } from '../../util/errorMessages.js';
11
+ import { getProjectIdFlag } from '../../util/sharedFlags.js';
11
12
  export class MediaImportCommand extends SanityCommand {
12
13
  static args = {
13
14
  source: Args.string({
@@ -31,6 +32,10 @@ export class MediaImportCommand extends SanityCommand {
31
32
  }
32
33
  ];
33
34
  static flags = {
35
+ ...getProjectIdFlag({
36
+ description: 'Project ID to import media to',
37
+ semantics: 'override'
38
+ }),
34
39
  'media-library-id': Flags.string({
35
40
  description: 'The id of the target media library'
36
41
  }),
@@ -42,14 +47,11 @@ export class MediaImportCommand extends SanityCommand {
42
47
  const { args, flags } = await this.parse(MediaImportCommand);
43
48
  const { source } = args;
44
49
  const replaceAspects = flags['replace-aspects'];
45
- const projectId = await this.getProjectId();
46
- const cliConfig = await this.getCliConfig();
50
+ const projectId = await this.getProjectId({
51
+ fallback: ()=>promptForProject({})
52
+ });
53
+ const cliConfig = await this.tryGetCliConfig();
47
54
  const dataset = cliConfig.api?.dataset;
48
- if (!projectId) {
49
- this.error(NO_PROJECT_ID, {
50
- exit: 1
51
- });
52
- }
53
55
  let mediaLibraries;
54
56
  try {
55
57
  mediaLibraries = await getMediaLibraries(projectId);
@@ -134,7 +136,7 @@ export class MediaImportCommand extends SanityCommand {
134
136
  process.exit(130);
135
137
  });
136
138
  }).catch((error)=>{
137
- this.error(chalk.red(error.message), {
139
+ this.error(styleText('red', error.message), {
138
140
  exit: 1
139
141
  });
140
142
  });
@@ -151,7 +153,7 @@ export class MediaImportCommand extends SanityCommand {
151
153
  complete: ()=>spin.succeed(`Imported ${previousState?.fileCount} assets`),
152
154
  next: ([processedAssetsCount, state])=>{
153
155
  previousState = state;
154
- spin.text = `${processedAssetsCount} of ${state?.fileCount} assets imported ${chalk.dim(state?.asset.originalFilename)}`;
156
+ spin.text = `${processedAssetsCount} of ${state?.fileCount} assets imported ${styleText('dim', state?.asset.originalFilename ?? '')}`;
155
157
  }
156
158
  }));
157
159
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/media/import.ts"],"sourcesContent":["import {Args, Flags} from '@oclif/core'\nimport {getProjectCliClient, SanityCommand} from '@sanity/cli-core'\nimport {chalk, spinner} from '@sanity/cli-core/ux'\nimport {SanityClient} from '@sanity/client'\nimport boxen from 'boxen'\nimport {type OperatorFunction, pipe, scan, tap} from 'rxjs'\n\nimport {importer, type State} from '../../actions/media/importMedia.js'\nimport {importMediaDebug} from '../../actions/media/importMediaDebug.js'\nimport {promptForMediaLibrary} from '../../prompts/promptForMediaLibrary.js'\nimport {getMediaLibraries} from '../../services/mediaLibraries.js'\nimport {NO_PROJECT_ID} from '../../util/errorMessages.js'\n\nexport class MediaImportCommand extends SanityCommand<typeof MediaImportCommand> {\n static override args = {\n source: Args.string({\n description: 'Image file or folder to import from',\n required: true,\n }),\n }\n\n static override description = 'Import a set of assets to the target media library.'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %> products',\n description: 'Import all assets from the \"products\" directory',\n },\n {\n command: '<%= config.bin %> <%= command.id %> gallery.tar.gz',\n description: 'Import all assets from \"gallery\" archive',\n },\n {\n command: '<%= config.bin %> <%= command.id %> products --replace-aspects',\n description: 'Import all assets from the \"products\" directory and replace aspects',\n },\n ]\n\n static override flags = {\n 'media-library-id': Flags.string({\n description: 'The id of the target media library',\n }),\n 'replace-aspects': Flags.boolean({\n description:\n 'Replace existing aspect data. All versions will be replaced (e.g. published and draft aspect data)',\n }),\n }\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(MediaImportCommand)\n const {source} = args\n const replaceAspects = flags['replace-aspects']\n\n const projectId = await this.getProjectId()\n const cliConfig = await this.getCliConfig()\n const dataset = cliConfig.api?.dataset\n\n if (!projectId) {\n this.error(NO_PROJECT_ID, {\n exit: 1,\n })\n }\n\n let mediaLibraries\n try {\n mediaLibraries = await getMediaLibraries(projectId)\n } catch (error) {\n importMediaDebug('Error listing media libraries', error)\n this.error(\n `Failed to list media libraries:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n\n if (mediaLibraries.length === 0) {\n this.error('No active media libraries found in this project', {exit: 1})\n }\n\n let mediaLibraryId = flags['media-library-id']\n if (!mediaLibraryId) {\n try {\n mediaLibraryId = await promptForMediaLibrary({mediaLibraries})\n } catch (error) {\n importMediaDebug('Error selecting media library', error)\n this.error(\n `Failed to select media library:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n }\n\n if (!mediaLibraries.some((library) => library.id === mediaLibraryId)) {\n this.error(`Media library with id \"${mediaLibraryId}\" not found`, {exit: 1})\n }\n\n const projectClient = await getProjectCliClient({\n apiVersion: 'v2025-02-19',\n dataset,\n perspective: 'drafts',\n projectId,\n requestTagPrefix: 'sanity.mediaLibraryCli.import',\n requireUser: true,\n '~experimental_resource': {\n id: mediaLibraryId,\n type: 'media-library',\n },\n })\n\n this.log(\n boxen(\n `\n Importing to media library: ${mediaLibraryId.padEnd(37)}\n Importing from path: ${source}\n `,\n {\n borderColor: 'yellow',\n borderStyle: 'round',\n },\n ),\n )\n\n const spin = spinner('Beginning import…').start()\n\n await this.importAssets({projectClient, replaceAspects, source, spin})\n }\n\n private async importAssets(options: {\n projectClient: SanityClient\n replaceAspects: boolean\n source: string\n spin: ReturnType<typeof spinner>\n }): Promise<void> {\n const {projectClient, replaceAspects, source, spin} = options\n\n return new Promise<void>((resolve, reject) => {\n const subscription = importer({\n client: projectClient,\n replaceAspects,\n sourcePath: source,\n spinner: spin,\n })\n .pipe(this.reportResult(spin))\n .subscribe({\n complete: () => {\n resolve()\n },\n error: (error: unknown) => {\n const message = error instanceof Error ? error.message : String(error)\n spin.stop()\n reject(new Error(message))\n },\n })\n\n // Cleanup on Ctrl+C\n process.once('SIGINT', () => {\n subscription.unsubscribe()\n spin.fail('Import interrupted.')\n process.exit(130)\n })\n }).catch((error) => {\n this.error(chalk.red(error.message), {exit: 1})\n })\n }\n\n private reportResult(\n spin: ReturnType<typeof spinner>,\n ): OperatorFunction<State, [number, State | undefined]> {\n let previousState: State | undefined\n\n return pipe(\n scan<State, [number, State | undefined]>(\n (processedAssetsCount, state) => [processedAssetsCount[0] + 1, state],\n [0, undefined],\n ),\n tap({\n complete: () => spin.succeed(`Imported ${previousState?.fileCount} assets`),\n next: ([processedAssetsCount, state]) => {\n previousState = state\n spin.text = `${processedAssetsCount} of ${state?.fileCount} assets imported ${chalk.dim(state?.asset.originalFilename)}`\n },\n }),\n )\n }\n}\n"],"names":["Args","Flags","getProjectCliClient","SanityCommand","chalk","spinner","boxen","pipe","scan","tap","importer","importMediaDebug","promptForMediaLibrary","getMediaLibraries","NO_PROJECT_ID","MediaImportCommand","args","source","string","description","required","examples","command","flags","boolean","run","parse","replaceAspects","projectId","getProjectId","cliConfig","getCliConfig","dataset","api","error","exit","mediaLibraries","Error","message","length","mediaLibraryId","some","library","id","projectClient","apiVersion","perspective","requestTagPrefix","requireUser","type","log","padEnd","borderColor","borderStyle","spin","start","importAssets","options","Promise","resolve","reject","subscription","client","sourcePath","reportResult","subscribe","complete","String","stop","process","once","unsubscribe","fail","catch","red","previousState","processedAssetsCount","state","undefined","succeed","fileCount","next","text","dim","asset","originalFilename"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/commands/media/import.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {Args, Flags} from '@oclif/core'\nimport {getProjectCliClient, SanityCommand} from '@sanity/cli-core'\nimport {boxen, spinner} from '@sanity/cli-core/ux'\nimport {SanityClient} from '@sanity/client'\nimport {type OperatorFunction, pipe, scan, tap} from 'rxjs'\n\nimport {importer, type State} from '../../actions/media/importMedia.js'\nimport {importMediaDebug} from '../../actions/media/importMediaDebug.js'\nimport {promptForMediaLibrary} from '../../prompts/promptForMediaLibrary.js'\nimport {promptForProject} from '../../prompts/promptForProject.js'\nimport {getMediaLibraries} from '../../services/mediaLibraries.js'\nimport {getProjectIdFlag} from '../../util/sharedFlags.js'\n\nexport class MediaImportCommand extends SanityCommand<typeof MediaImportCommand> {\n static override args = {\n source: Args.string({\n description: 'Image file or folder to import from',\n required: true,\n }),\n }\n\n static override description = 'Import a set of assets to the target media library.'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %> products',\n description: 'Import all assets from the \"products\" directory',\n },\n {\n command: '<%= config.bin %> <%= command.id %> gallery.tar.gz',\n description: 'Import all assets from \"gallery\" archive',\n },\n {\n command: '<%= config.bin %> <%= command.id %> products --replace-aspects',\n description: 'Import all assets from the \"products\" directory and replace aspects',\n },\n ]\n\n static override flags = {\n ...getProjectIdFlag({\n description: 'Project ID to import media to',\n semantics: 'override',\n }),\n 'media-library-id': Flags.string({\n description: 'The id of the target media library',\n }),\n 'replace-aspects': Flags.boolean({\n description:\n 'Replace existing aspect data. All versions will be replaced (e.g. published and draft aspect data)',\n }),\n }\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(MediaImportCommand)\n const {source} = args\n const replaceAspects = flags['replace-aspects']\n\n const projectId = await this.getProjectId({fallback: () => promptForProject({})})\n\n const cliConfig = await this.tryGetCliConfig()\n const dataset = cliConfig.api?.dataset\n\n let mediaLibraries\n try {\n mediaLibraries = await getMediaLibraries(projectId)\n } catch (error) {\n importMediaDebug('Error listing media libraries', error)\n this.error(\n `Failed to list media libraries:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n\n if (mediaLibraries.length === 0) {\n this.error('No active media libraries found in this project', {exit: 1})\n }\n\n let mediaLibraryId = flags['media-library-id']\n if (!mediaLibraryId) {\n try {\n mediaLibraryId = await promptForMediaLibrary({mediaLibraries})\n } catch (error) {\n importMediaDebug('Error selecting media library', error)\n this.error(\n `Failed to select media library:\\n${error instanceof Error ? error.message : error}`,\n {\n exit: 1,\n },\n )\n }\n }\n\n if (!mediaLibraries.some((library) => library.id === mediaLibraryId)) {\n this.error(`Media library with id \"${mediaLibraryId}\" not found`, {exit: 1})\n }\n\n const projectClient = await getProjectCliClient({\n apiVersion: 'v2025-02-19',\n dataset,\n perspective: 'drafts',\n projectId,\n requestTagPrefix: 'sanity.mediaLibraryCli.import',\n requireUser: true,\n '~experimental_resource': {\n id: mediaLibraryId,\n type: 'media-library',\n },\n })\n\n this.log(\n boxen(\n `\n Importing to media library: ${mediaLibraryId.padEnd(37)}\n Importing from path: ${source}\n `,\n {\n borderColor: 'yellow',\n borderStyle: 'round',\n },\n ),\n )\n\n const spin = spinner('Beginning import…').start()\n\n await this.importAssets({projectClient, replaceAspects, source, spin})\n }\n\n private async importAssets(options: {\n projectClient: SanityClient\n replaceAspects: boolean\n source: string\n spin: ReturnType<typeof spinner>\n }): Promise<void> {\n const {projectClient, replaceAspects, source, spin} = options\n\n return new Promise<void>((resolve, reject) => {\n const subscription = importer({\n client: projectClient,\n replaceAspects,\n sourcePath: source,\n spinner: spin,\n })\n .pipe(this.reportResult(spin))\n .subscribe({\n complete: () => {\n resolve()\n },\n error: (error: unknown) => {\n const message = error instanceof Error ? error.message : String(error)\n spin.stop()\n reject(new Error(message))\n },\n })\n\n // Cleanup on Ctrl+C\n process.once('SIGINT', () => {\n subscription.unsubscribe()\n spin.fail('Import interrupted.')\n process.exit(130)\n })\n }).catch((error) => {\n this.error(styleText('red', error.message), {exit: 1})\n })\n }\n\n private reportResult(\n spin: ReturnType<typeof spinner>,\n ): OperatorFunction<State, [number, State | undefined]> {\n let previousState: State | undefined\n\n return pipe(\n scan<State, [number, State | undefined]>(\n (processedAssetsCount, state) => [processedAssetsCount[0] + 1, state],\n [0, undefined],\n ),\n tap({\n complete: () => spin.succeed(`Imported ${previousState?.fileCount} assets`),\n next: ([processedAssetsCount, state]) => {\n previousState = state\n spin.text = `${processedAssetsCount} of ${state?.fileCount} assets imported ${styleText('dim', state?.asset.originalFilename ?? '')}`\n },\n }),\n )\n }\n}\n"],"names":["styleText","Args","Flags","getProjectCliClient","SanityCommand","boxen","spinner","pipe","scan","tap","importer","importMediaDebug","promptForMediaLibrary","promptForProject","getMediaLibraries","getProjectIdFlag","MediaImportCommand","args","source","string","description","required","examples","command","flags","semantics","boolean","run","parse","replaceAspects","projectId","getProjectId","fallback","cliConfig","tryGetCliConfig","dataset","api","mediaLibraries","error","Error","message","exit","length","mediaLibraryId","some","library","id","projectClient","apiVersion","perspective","requestTagPrefix","requireUser","type","log","padEnd","borderColor","borderStyle","spin","start","importAssets","options","Promise","resolve","reject","subscription","client","sourcePath","reportResult","subscribe","complete","String","stop","process","once","unsubscribe","fail","catch","previousState","processedAssetsCount","state","undefined","succeed","fileCount","next","text","asset","originalFilename"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import path from 'node:path';
2
2
  import { Args, Flags } from '@oclif/core';
3
- import { isInteractive, SanityCommand, subdebug } from '@sanity/cli-core';
4
- import { chalk, confirm } from '@sanity/cli-core/ux';
3
+ import { SanityCommand, subdebug } from '@sanity/cli-core';
5
4
  import { previewAction } from '../actions/preview/previewAction.js';
6
5
  export const previewDebug = subdebug('preview');
7
6
  export class PreviewCommand extends SanityCommand {
@@ -22,12 +21,10 @@ export class PreviewCommand extends SanityCommand {
22
21
  ];
23
22
  static flags = {
24
23
  host: Flags.string({
25
- default: 'localhost',
26
- description: 'The local network interface at which to listen.'
24
+ description: '[default: localhost] The local network interface at which to listen.'
27
25
  }),
28
26
  port: Flags.string({
29
- default: '3333',
30
- description: 'TCP port to start server on.'
27
+ description: '[default: 3333] TCP port to start server on.'
31
28
  })
32
29
  };
33
30
  async run() {
@@ -38,35 +35,22 @@ export class PreviewCommand extends SanityCommand {
38
35
  const defaultRootDir = path.resolve(path.join(workDir, 'dist'));
39
36
  const outDir = path.resolve(outputDir || defaultRootDir);
40
37
  try {
41
- await previewAction({
38
+ return await previewAction({
42
39
  cliConfig,
43
40
  flags,
44
41
  outDir,
45
42
  workDir
46
43
  });
47
44
  } catch (error) {
48
- if (error.name !== 'BUILD_NOT_FOUND') {
49
- previewDebug(`Failed to start preview server`, {
50
- error
51
- });
52
- this.output.error(error.message, {
53
- exit: 1
54
- });
55
- }
56
- this.output.log(chalk.red.bgBlack(error.message));
57
- this.output.log(chalk.red.bgBlack('\n'));
58
- const shouldRunDevServer = isInteractive() && await confirm({
59
- message: 'Do you want to start a development server instead?'
45
+ const suggestions = error instanceof Error && error.name === 'BUILD_NOT_FOUND' ? [
46
+ '`sanity build` to create a production build',
47
+ '`sanity dev` to run a development server'
48
+ ] : undefined;
49
+ const message = error instanceof Error ? error.message : String(error);
50
+ this.output.error(`Failed to start preview server: ${message}`, {
51
+ exit: 1,
52
+ suggestions
60
53
  });
61
- if (shouldRunDevServer) {
62
- // TODO: Implement dev server
63
- this.output.log(chalk.green.bgBlack('Starting development server...'));
64
- } else {
65
- // Indicate that this isn't an expected exit
66
- this.output.error(`Failed to start preview server`, {
67
- exit: 1
68
- });
69
- }
70
54
  }
71
55
  }
72
56
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/preview.ts"],"sourcesContent":["import path from 'node:path'\n\nimport {Args, Flags} from '@oclif/core'\nimport {isInteractive, SanityCommand, subdebug} from '@sanity/cli-core'\nimport {chalk, confirm} from '@sanity/cli-core/ux'\n\nimport {previewAction} from '../actions/preview/previewAction.js'\n\nexport const previewDebug = subdebug('preview')\n\nexport class PreviewCommand extends SanityCommand<typeof PreviewCommand> {\n // sanity start is an alias for sanity preview\n static override aliases: string[] = ['start']\n\n static override args = {\n outputDir: Args.directory({description: 'Output directory'}),\n }\n\n static override description = 'Starts a server to preview a production build'\n\n static override examples = [\n '<%= config.bin %> <%= command.id %> --host=0.0.0.0',\n '<%= config.bin %> <%= command.id %> --port=1942',\n '<%= config.bin %> <%= command.id %> some/build-output-dir',\n ]\n\n static override flags = {\n host: Flags.string({\n default: 'localhost',\n description: 'The local network interface at which to listen.',\n }),\n port: Flags.string({\n default: '3333',\n description: 'TCP port to start server on.',\n }),\n }\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(PreviewCommand)\n\n const workDir = (await this.getProjectRoot()).directory\n const cliConfig = await this.getCliConfig()\n\n const {outputDir} = args\n\n const defaultRootDir = path.resolve(path.join(workDir, 'dist'))\n const outDir = path.resolve(outputDir || defaultRootDir)\n\n try {\n await previewAction({cliConfig, flags, outDir, workDir})\n } catch (error) {\n if (error.name !== 'BUILD_NOT_FOUND') {\n previewDebug(`Failed to start preview server`, {error})\n this.output.error(error.message, {exit: 1})\n }\n\n this.output.log(chalk.red.bgBlack(error.message))\n this.output.log(chalk.red.bgBlack('\\n'))\n\n const shouldRunDevServer =\n isInteractive() &&\n (await confirm({\n message: 'Do you want to start a development server instead?',\n }))\n\n if (shouldRunDevServer) {\n // TODO: Implement dev server\n this.output.log(chalk.green.bgBlack('Starting development server...'))\n } else {\n // Indicate that this isn't an expected exit\n this.output.error(`Failed to start preview server`, {exit: 1})\n }\n }\n }\n}\n"],"names":["path","Args","Flags","isInteractive","SanityCommand","subdebug","chalk","confirm","previewAction","previewDebug","PreviewCommand","aliases","args","outputDir","directory","description","examples","flags","host","string","default","port","run","parse","workDir","getProjectRoot","cliConfig","getCliConfig","defaultRootDir","resolve","join","outDir","error","name","output","message","exit","log","red","bgBlack","shouldRunDevServer","green"],"mappings":"AAAA,OAAOA,UAAU,YAAW;AAE5B,SAAQC,IAAI,EAAEC,KAAK,QAAO,cAAa;AACvC,SAAQC,aAAa,EAAEC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACvE,SAAQC,KAAK,EAAEC,OAAO,QAAO,sBAAqB;AAElD,SAAQC,aAAa,QAAO,sCAAqC;AAEjE,OAAO,MAAMC,eAAeJ,SAAS,WAAU;AAE/C,OAAO,MAAMK,uBAAuBN;IAClC,8CAA8C;IAC9C,OAAgBO,UAAoB;QAAC;KAAQ,CAAA;IAE7C,OAAgBC,OAAO;QACrBC,WAAWZ,KAAKa,SAAS,CAAC;YAACC,aAAa;QAAkB;IAC5D,EAAC;IAED,OAAgBA,cAAc,gDAA+C;IAE7E,OAAgBC,WAAW;QACzB;QACA;QACA;KACD,CAAA;IAED,OAAgBC,QAAQ;QACtBC,MAAMhB,MAAMiB,MAAM,CAAC;YACjBC,SAAS;YACTL,aAAa;QACf;QACAM,MAAMnB,MAAMiB,MAAM,CAAC;YACjBC,SAAS;YACTL,aAAa;QACf;IACF,EAAC;IAED,MAAaO,MAAqB;QAChC,MAAM,EAACV,IAAI,EAAEK,KAAK,EAAC,GAAG,MAAM,IAAI,CAACM,KAAK,CAACb;QAEvC,MAAMc,UAAU,AAAC,CAAA,MAAM,IAAI,CAACC,cAAc,EAAC,EAAGX,SAAS;QACvD,MAAMY,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,MAAM,EAACd,SAAS,EAAC,GAAGD;QAEpB,MAAMgB,iBAAiB5B,KAAK6B,OAAO,CAAC7B,KAAK8B,IAAI,CAACN,SAAS;QACvD,MAAMO,SAAS/B,KAAK6B,OAAO,CAAChB,aAAae;QAEzC,IAAI;YACF,MAAMpB,cAAc;gBAACkB;gBAAWT;gBAAOc;gBAAQP;YAAO;QACxD,EAAE,OAAOQ,OAAO;YACd,IAAIA,MAAMC,IAAI,KAAK,mBAAmB;gBACpCxB,aAAa,CAAC,8BAA8B,CAAC,EAAE;oBAACuB;gBAAK;gBACrD,IAAI,CAACE,MAAM,CAACF,KAAK,CAACA,MAAMG,OAAO,EAAE;oBAACC,MAAM;gBAAC;YAC3C;YAEA,IAAI,CAACF,MAAM,CAACG,GAAG,CAAC/B,MAAMgC,GAAG,CAACC,OAAO,CAACP,MAAMG,OAAO;YAC/C,IAAI,CAACD,MAAM,CAACG,GAAG,CAAC/B,MAAMgC,GAAG,CAACC,OAAO,CAAC;YAElC,MAAMC,qBACJrC,mBACC,MAAMI,QAAQ;gBACb4B,SAAS;YACX;YAEF,IAAIK,oBAAoB;gBACtB,6BAA6B;gBAC7B,IAAI,CAACN,MAAM,CAACG,GAAG,CAAC/B,MAAMmC,KAAK,CAACF,OAAO,CAAC;YACtC,OAAO;gBACL,4CAA4C;gBAC5C,IAAI,CAACL,MAAM,CAACF,KAAK,CAAC,CAAC,8BAA8B,CAAC,EAAE;oBAACI,MAAM;gBAAC;YAC9D;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/commands/preview.ts"],"sourcesContent":["import path from 'node:path'\n\nimport {Args, Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {previewAction} from '../actions/preview/previewAction.js'\nimport {type PreviewServer} from '../server/previewServer.js'\n\nexport const previewDebug = subdebug('preview')\n\nexport class PreviewCommand extends SanityCommand<typeof PreviewCommand> {\n // sanity start is an alias for sanity preview\n static override aliases: string[] = ['start']\n\n static override args = {\n outputDir: Args.directory({description: 'Output directory'}),\n }\n\n static override description = 'Starts a server to preview a production build'\n\n static override examples = [\n '<%= config.bin %> <%= command.id %> --host=0.0.0.0',\n '<%= config.bin %> <%= command.id %> --port=1942',\n '<%= config.bin %> <%= command.id %> some/build-output-dir',\n ]\n\n static override flags = {\n host: Flags.string({\n description: '[default: localhost] The local network interface at which to listen.',\n }),\n port: Flags.string({\n description: '[default: 3333] TCP port to start server on.',\n }),\n }\n\n public async run(): Promise<PreviewServer | void> {\n const {args, flags} = await this.parse(PreviewCommand)\n\n const workDir = (await this.getProjectRoot()).directory\n const cliConfig = await this.getCliConfig()\n\n const {outputDir} = args\n\n const defaultRootDir = path.resolve(path.join(workDir, 'dist'))\n const outDir = path.resolve(outputDir || defaultRootDir)\n\n try {\n return await previewAction({cliConfig, flags, outDir, workDir})\n } catch (error: unknown) {\n const suggestions =\n error instanceof Error && error.name === 'BUILD_NOT_FOUND'\n ? [\n '`sanity build` to create a production build',\n '`sanity dev` to run a development server',\n ]\n : undefined\n\n const message = error instanceof Error ? error.message : String(error)\n this.output.error(`Failed to start preview server: ${message}`, {\n exit: 1,\n suggestions,\n })\n }\n }\n}\n"],"names":["path","Args","Flags","SanityCommand","subdebug","previewAction","previewDebug","PreviewCommand","aliases","args","outputDir","directory","description","examples","flags","host","string","port","run","parse","workDir","getProjectRoot","cliConfig","getCliConfig","defaultRootDir","resolve","join","outDir","error","suggestions","Error","name","undefined","message","String","output","exit"],"mappings":"AAAA,OAAOA,UAAU,YAAW;AAE5B,SAAQC,IAAI,EAAEC,KAAK,QAAO,cAAa;AACvC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AAExD,SAAQC,aAAa,QAAO,sCAAqC;AAGjE,OAAO,MAAMC,eAAeF,SAAS,WAAU;AAE/C,OAAO,MAAMG,uBAAuBJ;IAClC,8CAA8C;IAC9C,OAAgBK,UAAoB;QAAC;KAAQ,CAAA;IAE7C,OAAgBC,OAAO;QACrBC,WAAWT,KAAKU,SAAS,CAAC;YAACC,aAAa;QAAkB;IAC5D,EAAC;IAED,OAAgBA,cAAc,gDAA+C;IAE7E,OAAgBC,WAAW;QACzB;QACA;QACA;KACD,CAAA;IAED,OAAgBC,QAAQ;QACtBC,MAAMb,MAAMc,MAAM,CAAC;YACjBJ,aAAa;QACf;QACAK,MAAMf,MAAMc,MAAM,CAAC;YACjBJ,aAAa;QACf;IACF,EAAC;IAED,MAAaM,MAAqC;QAChD,MAAM,EAACT,IAAI,EAAEK,KAAK,EAAC,GAAG,MAAM,IAAI,CAACK,KAAK,CAACZ;QAEvC,MAAMa,UAAU,AAAC,CAAA,MAAM,IAAI,CAACC,cAAc,EAAC,EAAGV,SAAS;QACvD,MAAMW,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,MAAM,EAACb,SAAS,EAAC,GAAGD;QAEpB,MAAMe,iBAAiBxB,KAAKyB,OAAO,CAACzB,KAAK0B,IAAI,CAACN,SAAS;QACvD,MAAMO,SAAS3B,KAAKyB,OAAO,CAACf,aAAac;QAEzC,IAAI;YACF,OAAO,MAAMnB,cAAc;gBAACiB;gBAAWR;gBAAOa;gBAAQP;YAAO;QAC/D,EAAE,OAAOQ,OAAgB;YACvB,MAAMC,cACJD,iBAAiBE,SAASF,MAAMG,IAAI,KAAK,oBACrC;gBACE;gBACA;aACD,GACDC;YAEN,MAAMC,UAAUL,iBAAiBE,QAAQF,MAAMK,OAAO,GAAGC,OAAON;YAChE,IAAI,CAACO,MAAM,CAACP,KAAK,CAAC,CAAC,gCAAgC,EAAEK,SAAS,EAAE;gBAC9DG,MAAM;gBACNP;YACF;QACF;IACF;AACF"}
@@ -0,0 +1,181 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { CLIError } from '@oclif/core/errors';
3
+ import { SanityCommand, subdebug } from '@sanity/cli-core';
4
+ import { confirm, spinner } from '@sanity/cli-core/ux';
5
+ import { createDataset } from '../../actions/dataset/create.js';
6
+ import { validateDatasetName } from '../../actions/dataset/validateDatasetName.js';
7
+ import { getOrganization } from '../../actions/organizations/getOrganization.js';
8
+ import { getManageUrl } from '../../actions/projects/getManageUrl.js';
9
+ import { promptForDatasetName } from '../../prompts/promptForDatasetName.js';
10
+ import { promptForDefaultConfig } from '../../prompts/promptForDefaultConfig.js';
11
+ import { promptForProjectName } from '../../prompts/promptForProjectName.js';
12
+ import { listDatasets } from '../../services/datasets.js';
13
+ import { getProjectFeatures } from '../../services/getProjectFeatures.js';
14
+ import { createProject } from '../../services/projects.js';
15
+ import { getCliUser } from '../../services/user.js';
16
+ const debug = subdebug('projects:create');
17
+ export class CreateProjectCommand extends SanityCommand {
18
+ static args = {
19
+ projectName: Args.string({
20
+ description: 'Name of the project to create',
21
+ required: false
22
+ })
23
+ };
24
+ static description = 'Create a new Sanity project';
25
+ static examples = [
26
+ {
27
+ command: '<%= config.bin %> <%= command.id %>',
28
+ description: 'Interactively create a project'
29
+ },
30
+ {
31
+ command: '<%= config.bin %> <%= command.id %> "My New Project"',
32
+ description: 'Create a project named "My New Project"'
33
+ },
34
+ {
35
+ command: '<%= config.bin %> <%= command.id %> "My Project" --organization=my-org',
36
+ description: 'Create a project in a specific organization'
37
+ },
38
+ {
39
+ command: '<%= config.bin %> <%= command.id %> "My Project" --dataset=staging --dataset-visibility=private',
40
+ description: 'Create a project with a private dataset named "staging"'
41
+ },
42
+ {
43
+ command: '<%= config.bin %> <%= command.id %> "CI Project" --yes --json',
44
+ description: 'Create a project non-interactively with JSON output'
45
+ }
46
+ ];
47
+ static flags = {
48
+ dataset: Flags.string({
49
+ description: 'Create a dataset. Prompts for visibility unless specified or --yes used',
50
+ parse: async (input)=>{
51
+ const datasetNameError = validateDatasetName(input);
52
+ if (datasetNameError) {
53
+ throw new CLIError(datasetNameError, {
54
+ exit: 1
55
+ });
56
+ }
57
+ return input;
58
+ }
59
+ }),
60
+ 'dataset-visibility': Flags.string({
61
+ description: 'Dataset visibility: public or private',
62
+ options: [
63
+ 'private',
64
+ 'public'
65
+ ]
66
+ }),
67
+ json: Flags.boolean({
68
+ default: false,
69
+ description: 'Output in JSON format'
70
+ }),
71
+ organization: Flags.string({
72
+ description: 'Organization to create the project in',
73
+ helpValue: '<slug|id>'
74
+ }),
75
+ yes: Flags.boolean({
76
+ char: 'y',
77
+ default: false,
78
+ description: 'Skip prompts and use defaults (project: "My Sanity Project", dataset: production, visibility: public)'
79
+ })
80
+ };
81
+ async run() {
82
+ const { args, flags } = await this.parse(CreateProjectCommand);
83
+ const { projectName } = args;
84
+ const { dataset, 'dataset-visibility': datasetVisibility, organization, yes } = flags;
85
+ const user = await getCliUser();
86
+ const finalProjectName = projectName || (yes || this.isUnattended() ? 'My Sanity Project' : await promptForProjectName());
87
+ debug('Creating project with options: %O', {
88
+ dataset,
89
+ datasetVisibility,
90
+ organizationId: organization,
91
+ projectName,
92
+ unattended: yes
93
+ });
94
+ let chosenOrganization;
95
+ try {
96
+ chosenOrganization = await getOrganization({
97
+ isUnattended: this.isUnattended(),
98
+ output: this.output,
99
+ requestedId: organization,
100
+ user
101
+ });
102
+ } catch (error) {
103
+ const errorText = organization ? `Failed to retrieve organization ${organization}` : 'Failed to retrieve an organization';
104
+ this.error(`${errorText}: ${error}`, {
105
+ exit: 1
106
+ });
107
+ }
108
+ const spin = spinner('Creating project').start();
109
+ let newProject;
110
+ try {
111
+ newProject = await createProject({
112
+ displayName: finalProjectName,
113
+ metadata: {
114
+ integration: 'cli'
115
+ },
116
+ organizationId: chosenOrganization?.id
117
+ });
118
+ spin.succeed('Project created successfully');
119
+ } catch (error) {
120
+ spin.fail();
121
+ debug(`Failed to create project: ${error}`);
122
+ this.error(`Failed to create project: ${error}`, {
123
+ exit: 1
124
+ });
125
+ }
126
+ const newDataset = await this.handleDatasetCreation(newProject.projectId, dataset, datasetVisibility);
127
+ this.printProjectCreationSuccess(chosenOrganization, newProject, newDataset);
128
+ }
129
+ async handleDatasetCreation(projectId, datasetFromFlag, datasetVisibility) {
130
+ try {
131
+ let datasetName = datasetFromFlag;
132
+ const existingDatasets = await listDatasets(projectId);
133
+ const existingDatasetNames = existingDatasets.map((ds)=>ds.name);
134
+ // Prompt for dataset in interactive mode if not provided
135
+ if (!datasetName && !this.isUnattended()) {
136
+ const wantsDataset = await confirm({
137
+ default: true,
138
+ message: 'Would you like to create a dataset?'
139
+ });
140
+ if (wantsDataset) {
141
+ const defaultConfig = await promptForDefaultConfig();
142
+ datasetName = defaultConfig ? 'production' : await promptForDatasetName({}, existingDatasetNames);
143
+ }
144
+ }
145
+ // Create dataset if we have a name
146
+ if (datasetName) {
147
+ const projectFeatures = await getProjectFeatures(projectId);
148
+ return await createDataset({
149
+ datasetName,
150
+ isUnattended: this.isUnattended(),
151
+ output: this.output,
152
+ projectFeatures,
153
+ projectId,
154
+ visibility: datasetVisibility
155
+ });
156
+ }
157
+ return;
158
+ } catch (error) {
159
+ debug(`Error creating dataset: ${error}`);
160
+ this.warn(`Project created but dataset creation failed: ${error}`);
161
+ return;
162
+ }
163
+ }
164
+ async printProjectCreationSuccess(organization, project, dataset) {
165
+ if (this.flags.json) {
166
+ this.log(JSON.stringify(project, null, 2));
167
+ return;
168
+ }
169
+ this.log(`Project created successfully!`);
170
+ this.log(`ID: ${project.projectId}`);
171
+ this.log(`Name: ${project.displayName}`);
172
+ this.log(`Organization: ${organization?.name || 'Personal'}`);
173
+ if (dataset) {
174
+ this.log(`Dataset: ${dataset.datasetName} (${dataset.aclMode})`);
175
+ }
176
+ this.log(``);
177
+ this.log(`Manage your project: ${getManageUrl(project.projectId)}`);
178
+ }
179
+ }
180
+
181
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/commands/projects/create.ts"],"sourcesContent":["import {Args, Flags} from '@oclif/core'\nimport {CLIError} from '@oclif/core/errors'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {confirm, spinner} from '@sanity/cli-core/ux'\nimport {DatasetResponse} from '@sanity/client'\n\nimport {createDataset} from '../../actions/dataset/create.js'\nimport {validateDatasetName} from '../../actions/dataset/validateDatasetName.js'\nimport {getOrganization} from '../../actions/organizations/getOrganization.js'\nimport {getManageUrl} from '../../actions/projects/getManageUrl.js'\nimport {promptForDatasetName} from '../../prompts/promptForDatasetName.js'\nimport {promptForDefaultConfig} from '../../prompts/promptForDefaultConfig.js'\nimport {promptForProjectName} from '../../prompts/promptForProjectName.js'\nimport {listDatasets} from '../../services/datasets.js'\nimport {getProjectFeatures} from '../../services/getProjectFeatures.js'\nimport {OrganizationCreateResponse, ProjectOrganization} from '../../services/organizations.js'\nimport {createProject, CreateProjectResult} from '../../services/projects.js'\nimport {getCliUser} from '../../services/user.js'\n\nconst debug = subdebug('projects:create')\n\nexport class CreateProjectCommand extends SanityCommand<typeof CreateProjectCommand> {\n static override args = {\n projectName: Args.string({\n description: 'Name of the project to create',\n required: false,\n }),\n }\n\n static override description = 'Create a new Sanity project'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Interactively create a project',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"My New Project\"',\n description: 'Create a project named \"My New Project\"',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"My Project\" --organization=my-org',\n description: 'Create a project in a specific organization',\n },\n {\n command:\n '<%= config.bin %> <%= command.id %> \"My Project\" --dataset=staging --dataset-visibility=private',\n description: 'Create a project with a private dataset named \"staging\"',\n },\n {\n command: '<%= config.bin %> <%= command.id %> \"CI Project\" --yes --json',\n description: 'Create a project non-interactively with JSON output',\n },\n ]\n\n static override flags = {\n dataset: Flags.string({\n description: 'Create a dataset. Prompts for visibility unless specified or --yes used',\n parse: async (input) => {\n const datasetNameError = validateDatasetName(input)\n if (datasetNameError) {\n throw new CLIError(datasetNameError, {exit: 1})\n }\n\n return input\n },\n }),\n 'dataset-visibility': Flags.string({\n description: 'Dataset visibility: public or private',\n options: ['private', 'public'],\n }),\n json: Flags.boolean({\n default: false,\n description: 'Output in JSON format',\n }),\n organization: Flags.string({\n description: 'Organization to create the project in',\n helpValue: '<slug|id>',\n }),\n yes: Flags.boolean({\n char: 'y',\n default: false,\n description:\n 'Skip prompts and use defaults (project: \"My Sanity Project\", dataset: production, visibility: public)',\n }),\n }\n\n public async run(): Promise<void> {\n const {args, flags} = await this.parse(CreateProjectCommand)\n const {projectName} = args\n const {dataset, 'dataset-visibility': datasetVisibility, organization, yes} = flags\n const user = await getCliUser()\n\n const finalProjectName =\n projectName ||\n (yes || this.isUnattended() ? 'My Sanity Project' : await promptForProjectName())\n\n debug('Creating project with options: %O', {\n dataset,\n datasetVisibility,\n organizationId: organization,\n projectName,\n unattended: yes,\n })\n\n let chosenOrganization: OrganizationCreateResponse | ProjectOrganization | undefined\n try {\n chosenOrganization = await getOrganization({\n isUnattended: this.isUnattended(),\n output: this.output,\n requestedId: organization,\n user,\n })\n } catch (error) {\n const errorText = organization\n ? `Failed to retrieve organization ${organization}`\n : 'Failed to retrieve an organization'\n this.error(`${errorText}: ${error}`, {exit: 1})\n }\n\n const spin = spinner('Creating project').start()\n let newProject\n try {\n newProject = await createProject({\n displayName: finalProjectName,\n metadata: {\n integration: 'cli',\n },\n organizationId: chosenOrganization?.id,\n })\n spin.succeed('Project created successfully')\n } catch (error) {\n spin.fail()\n debug(`Failed to create project: ${error}`)\n this.error(`Failed to create project: ${error}`, {exit: 1})\n }\n\n const newDataset = await this.handleDatasetCreation(\n newProject.projectId,\n dataset,\n datasetVisibility,\n )\n\n this.printProjectCreationSuccess(chosenOrganization, newProject, newDataset)\n }\n\n private async handleDatasetCreation(\n projectId: string,\n datasetFromFlag?: string,\n datasetVisibility?: string,\n ): Promise<DatasetResponse | undefined> {\n try {\n let datasetName: string | undefined = datasetFromFlag\n const existingDatasets = await listDatasets(projectId)\n const existingDatasetNames = existingDatasets.map((ds) => ds.name)\n\n // Prompt for dataset in interactive mode if not provided\n if (!datasetName && !this.isUnattended()) {\n const wantsDataset = await confirm({\n default: true,\n message: 'Would you like to create a dataset?',\n })\n\n if (wantsDataset) {\n const defaultConfig = await promptForDefaultConfig()\n\n datasetName = defaultConfig\n ? 'production'\n : await promptForDatasetName({}, existingDatasetNames)\n }\n }\n\n // Create dataset if we have a name\n if (datasetName) {\n const projectFeatures = await getProjectFeatures(projectId)\n return await createDataset({\n datasetName,\n isUnattended: this.isUnattended(),\n output: this.output,\n projectFeatures,\n projectId,\n visibility: datasetVisibility,\n })\n }\n\n return\n } catch (error) {\n debug(`Error creating dataset: ${error}`)\n this.warn(`Project created but dataset creation failed: ${error}`)\n return\n }\n }\n\n private async printProjectCreationSuccess(\n organization: OrganizationCreateResponse | ProjectOrganization | undefined,\n project: CreateProjectResult,\n dataset: DatasetResponse | undefined,\n ) {\n if (this.flags.json) {\n this.log(JSON.stringify(project, null, 2))\n return\n }\n\n this.log(`Project created successfully!`)\n this.log(`ID: ${project.projectId}`)\n this.log(`Name: ${project.displayName}`)\n this.log(`Organization: ${organization?.name || 'Personal'}`)\n\n if (dataset) {\n this.log(`Dataset: ${dataset.datasetName} (${dataset.aclMode})`)\n }\n\n this.log(``)\n this.log(`Manage your project: ${getManageUrl(project.projectId)}`)\n }\n}\n"],"names":["Args","Flags","CLIError","SanityCommand","subdebug","confirm","spinner","createDataset","validateDatasetName","getOrganization","getManageUrl","promptForDatasetName","promptForDefaultConfig","promptForProjectName","listDatasets","getProjectFeatures","createProject","getCliUser","debug","CreateProjectCommand","args","projectName","string","description","required","examples","command","flags","dataset","parse","input","datasetNameError","exit","options","json","boolean","default","organization","helpValue","yes","char","run","datasetVisibility","user","finalProjectName","isUnattended","organizationId","unattended","chosenOrganization","output","requestedId","error","errorText","spin","start","newProject","displayName","metadata","integration","id","succeed","fail","newDataset","handleDatasetCreation","projectId","printProjectCreationSuccess","datasetFromFlag","datasetName","existingDatasets","existingDatasetNames","map","ds","name","wantsDataset","message","defaultConfig","projectFeatures","visibility","warn","project","log","JSON","stringify","aclMode"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import { styleText } from 'node:util';
1
2
  import { Flags } from '@oclif/core';
2
3
  import { SanityCommand, subdebug } from '@sanity/cli-core';
3
- import { chalk } from '@sanity/cli-core/ux';
4
- import { size, sortBy } from 'lodash-es';
4
+ import size from 'lodash-es/size.js';
5
+ import sortBy from 'lodash-es/sortBy.js';
5
6
  import { listProjects } from '../../services/projects.js';
6
7
  const sortFields = [
7
8
  'id',
@@ -62,7 +63,7 @@ export class List extends SanityCommand {
62
63
  }
63
64
  }
64
65
  const printRow = (row)=>row.map((col, i)=>`${col}`.padEnd(maxWidths[i])).join(' ');
65
- this.log(chalk.cyan(printRow(sortFields)));
66
+ this.log(styleText('cyan', printRow(sortFields)));
66
67
  for (const row of rows)this.log(printRow(row));
67
68
  } catch (error) {
68
69
  projectsDebug('Error listing projects', error);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/commands/projects/list.ts"],"sourcesContent":["import {Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {chalk} from '@sanity/cli-core/ux'\nimport {size, sortBy} from 'lodash-es'\n\nimport {listProjects} from '../../services/projects.js'\n\nconst sortFields = ['id', 'members', 'name', 'url', 'created']\n\nconst projectsDebug = subdebug('projects')\n\nexport class List extends SanityCommand<typeof List> {\n static override description = 'Lists projects connected to your user'\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'List projects',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --sort=members --order=asc',\n description: 'List all users of the project, but exclude pending invitations and robots',\n },\n ]\n\n static override flags = {\n order: Flags.string({\n default: 'desc',\n options: ['asc', 'desc'],\n }),\n sort: Flags.string({\n default: 'created',\n options: sortFields,\n }),\n }\n\n public async run() {\n const {order, sort} = this.flags\n\n try {\n const projects = await listProjects()\n const ordered = sortBy(\n projects.map(({createdAt, displayName, id, members = []}) => {\n const manage = `https://www.sanity.io/manage/project/${id}`\n return [id, members.length, displayName, manage, createdAt].map(String)\n }),\n [sortFields.indexOf(sort)],\n )\n\n const rows = order === 'asc' ? ordered : ordered.toReversed()\n\n // Initialize maxWidths with the width of each header\n const maxWidths = sortFields.map((str) => size(str))\n\n // Calculate maximum width for each column\n for (const row of rows) {\n for (const [i, element] of row.entries()) {\n maxWidths[i] = Math.max(size(element), maxWidths[i])\n }\n }\n\n const printRow = (row: string[]) =>\n row.map((col, i) => `${col}`.padEnd(maxWidths[i])).join(' ')\n\n this.log(chalk.cyan(printRow(sortFields)))\n for (const row of rows) this.log(printRow(row))\n } catch (error) {\n projectsDebug('Error listing projects', error)\n this.error('Failed to list projects', {exit: 1})\n }\n }\n}\n"],"names":["Flags","SanityCommand","subdebug","chalk","size","sortBy","listProjects","sortFields","projectsDebug","List","description","examples","command","flags","order","string","default","options","sort","run","projects","ordered","map","createdAt","displayName","id","members","manage","length","String","indexOf","rows","toReversed","maxWidths","str","row","i","element","entries","Math","max","printRow","col","padEnd","join","log","cyan","error","exit"],"mappings":"AAAA,SAAQA,KAAK,QAAO,cAAa;AACjC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACxD,SAAQC,KAAK,QAAO,sBAAqB;AACzC,SAAQC,IAAI,EAAEC,MAAM,QAAO,YAAW;AAEtC,SAAQC,YAAY,QAAO,6BAA4B;AAEvD,MAAMC,aAAa;IAAC;IAAM;IAAW;IAAQ;IAAO;CAAU;AAE9D,MAAMC,gBAAgBN,SAAS;AAE/B,OAAO,MAAMO,aAAaR;IACxB,OAAgBS,cAAc,wCAAuC;IACrE,OAAgBC,WAAW;QACzB;YACEC,SAAS;YACTF,aAAa;QACf;QACA;YACEE,SAAS;YACTF,aAAa;QACf;KACD,CAAA;IAED,OAAgBG,QAAQ;QACtBC,OAAOd,MAAMe,MAAM,CAAC;YAClBC,SAAS;YACTC,SAAS;gBAAC;gBAAO;aAAO;QAC1B;QACAC,MAAMlB,MAAMe,MAAM,CAAC;YACjBC,SAAS;YACTC,SAASV;QACX;IACF,EAAC;IAED,MAAaY,MAAM;QACjB,MAAM,EAACL,KAAK,EAAEI,IAAI,EAAC,GAAG,IAAI,CAACL,KAAK;QAEhC,IAAI;YACF,MAAMO,WAAW,MAAMd;YACvB,MAAMe,UAAUhB,OACde,SAASE,GAAG,CAAC,CAAC,EAACC,SAAS,EAAEC,WAAW,EAAEC,EAAE,EAAEC,UAAU,EAAE,EAAC;gBACtD,MAAMC,SAAS,CAAC,qCAAqC,EAAEF,IAAI;gBAC3D,OAAO;oBAACA;oBAAIC,QAAQE,MAAM;oBAAEJ;oBAAaG;oBAAQJ;iBAAU,CAACD,GAAG,CAACO;YAClE,IACA;gBAACtB,WAAWuB,OAAO,CAACZ;aAAM;YAG5B,MAAMa,OAAOjB,UAAU,QAAQO,UAAUA,QAAQW,UAAU;YAE3D,qDAAqD;YACrD,MAAMC,YAAY1B,WAAWe,GAAG,CAAC,CAACY,MAAQ9B,KAAK8B;YAE/C,0CAA0C;YAC1C,KAAK,MAAMC,OAAOJ,KAAM;gBACtB,KAAK,MAAM,CAACK,GAAGC,QAAQ,IAAIF,IAAIG,OAAO,GAAI;oBACxCL,SAAS,CAACG,EAAE,GAAGG,KAAKC,GAAG,CAACpC,KAAKiC,UAAUJ,SAAS,CAACG,EAAE;gBACrD;YACF;YAEA,MAAMK,WAAW,CAACN,MAChBA,IAAIb,GAAG,CAAC,CAACoB,KAAKN,IAAM,GAAGM,KAAK,CAACC,MAAM,CAACV,SAAS,CAACG,EAAE,GAAGQ,IAAI,CAAC;YAE1D,IAAI,CAACC,GAAG,CAAC1C,MAAM2C,IAAI,CAACL,SAASlC;YAC7B,KAAK,MAAM4B,OAAOJ,KAAM,IAAI,CAACc,GAAG,CAACJ,SAASN;QAC5C,EAAE,OAAOY,OAAO;YACdvC,cAAc,0BAA0BuC;YACxC,IAAI,CAACA,KAAK,CAAC,2BAA2B;gBAACC,MAAM;YAAC;QAChD;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/commands/projects/list.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport size from 'lodash-es/size.js'\nimport sortBy from 'lodash-es/sortBy.js'\n\nimport {listProjects} from '../../services/projects.js'\n\nconst sortFields = ['id', 'members', 'name', 'url', 'created']\n\nconst projectsDebug = subdebug('projects')\n\nexport class List extends SanityCommand<typeof List> {\n static override description = 'Lists projects connected to your user'\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'List projects',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --sort=members --order=asc',\n description: 'List all users of the project, but exclude pending invitations and robots',\n },\n ]\n\n static override flags = {\n order: Flags.string({\n default: 'desc',\n options: ['asc', 'desc'],\n }),\n sort: Flags.string({\n default: 'created',\n options: sortFields,\n }),\n }\n\n public async run() {\n const {order, sort} = this.flags\n\n try {\n const projects = await listProjects()\n const ordered = sortBy(\n projects.map(({createdAt, displayName, id, members = []}) => {\n const manage = `https://www.sanity.io/manage/project/${id}`\n return [id, members.length, displayName, manage, createdAt].map(String)\n }),\n [sortFields.indexOf(sort)],\n )\n\n const rows = order === 'asc' ? ordered : ordered.toReversed()\n\n // Initialize maxWidths with the width of each header\n const maxWidths = sortFields.map((str) => size(str))\n\n // Calculate maximum width for each column\n for (const row of rows) {\n for (const [i, element] of row.entries()) {\n maxWidths[i] = Math.max(size(element), maxWidths[i])\n }\n }\n\n const printRow = (row: string[]) =>\n row.map((col, i) => `${col}`.padEnd(maxWidths[i])).join(' ')\n\n this.log(styleText('cyan', printRow(sortFields)))\n for (const row of rows) this.log(printRow(row))\n } catch (error) {\n projectsDebug('Error listing projects', error)\n this.error('Failed to list projects', {exit: 1})\n }\n }\n}\n"],"names":["styleText","Flags","SanityCommand","subdebug","size","sortBy","listProjects","sortFields","projectsDebug","List","description","examples","command","flags","order","string","default","options","sort","run","projects","ordered","map","createdAt","displayName","id","members","manage","length","String","indexOf","rows","toReversed","maxWidths","str","row","i","element","entries","Math","max","printRow","col","padEnd","join","log","error","exit"],"mappings":"AAAA,SAAQA,SAAS,QAAO,YAAW;AAEnC,SAAQC,KAAK,QAAO,cAAa;AACjC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACxD,OAAOC,UAAU,oBAAmB;AACpC,OAAOC,YAAY,sBAAqB;AAExC,SAAQC,YAAY,QAAO,6BAA4B;AAEvD,MAAMC,aAAa;IAAC;IAAM;IAAW;IAAQ;IAAO;CAAU;AAE9D,MAAMC,gBAAgBL,SAAS;AAE/B,OAAO,MAAMM,aAAaP;IACxB,OAAgBQ,cAAc,wCAAuC;IACrE,OAAgBC,WAAW;QACzB;YACEC,SAAS;YACTF,aAAa;QACf;QACA;YACEE,SAAS;YACTF,aAAa;QACf;KACD,CAAA;IAED,OAAgBG,QAAQ;QACtBC,OAAOb,MAAMc,MAAM,CAAC;YAClBC,SAAS;YACTC,SAAS;gBAAC;gBAAO;aAAO;QAC1B;QACAC,MAAMjB,MAAMc,MAAM,CAAC;YACjBC,SAAS;YACTC,SAASV;QACX;IACF,EAAC;IAED,MAAaY,MAAM;QACjB,MAAM,EAACL,KAAK,EAAEI,IAAI,EAAC,GAAG,IAAI,CAACL,KAAK;QAEhC,IAAI;YACF,MAAMO,WAAW,MAAMd;YACvB,MAAMe,UAAUhB,OACde,SAASE,GAAG,CAAC,CAAC,EAACC,SAAS,EAAEC,WAAW,EAAEC,EAAE,EAAEC,UAAU,EAAE,EAAC;gBACtD,MAAMC,SAAS,CAAC,qCAAqC,EAAEF,IAAI;gBAC3D,OAAO;oBAACA;oBAAIC,QAAQE,MAAM;oBAAEJ;oBAAaG;oBAAQJ;iBAAU,CAACD,GAAG,CAACO;YAClE,IACA;gBAACtB,WAAWuB,OAAO,CAACZ;aAAM;YAG5B,MAAMa,OAAOjB,UAAU,QAAQO,UAAUA,QAAQW,UAAU;YAE3D,qDAAqD;YACrD,MAAMC,YAAY1B,WAAWe,GAAG,CAAC,CAACY,MAAQ9B,KAAK8B;YAE/C,0CAA0C;YAC1C,KAAK,MAAMC,OAAOJ,KAAM;gBACtB,KAAK,MAAM,CAACK,GAAGC,QAAQ,IAAIF,IAAIG,OAAO,GAAI;oBACxCL,SAAS,CAACG,EAAE,GAAGG,KAAKC,GAAG,CAACpC,KAAKiC,UAAUJ,SAAS,CAACG,EAAE;gBACrD;YACF;YAEA,MAAMK,WAAW,CAACN,MAChBA,IAAIb,GAAG,CAAC,CAACoB,KAAKN,IAAM,GAAGM,KAAK,CAACC,MAAM,CAACV,SAAS,CAACG,EAAE,GAAGQ,IAAI,CAAC;YAE1D,IAAI,CAACC,GAAG,CAAC7C,UAAU,QAAQyC,SAASlC;YACpC,KAAK,MAAM4B,OAAOJ,KAAM,IAAI,CAACc,GAAG,CAACJ,SAASN;QAC5C,EAAE,OAAOW,OAAO;YACdtC,cAAc,0BAA0BsC;YACxC,IAAI,CAACA,KAAK,CAAC,2BAA2B;gBAACC,MAAM;YAAC;QAChD;IACF;AACF"}