@sanity/cli 6.0.0-alpha.9 → 6.1.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 (613) hide show
  1. package/README.md +602 -291
  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 +12 -33
  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 +55 -18
  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 +72 -44
  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/getViteConfig.js +47 -4
  35. package/dist/actions/build/getViteConfig.js.map +1 -1
  36. package/dist/actions/build/handlePrereleaseVersions.js +44 -0
  37. package/dist/actions/build/handlePrereleaseVersions.js.map +1 -0
  38. package/dist/actions/build/renderDocument.js +6 -10
  39. package/dist/actions/build/renderDocument.js.map +1 -1
  40. package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js +4 -4
  41. package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js.map +1 -1
  42. package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js +3 -3
  43. package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js.map +1 -1
  44. package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js +1 -0
  45. package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js.map +1 -1
  46. package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js +2 -2
  47. package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js.map +1 -1
  48. package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js +1 -1
  49. package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js.map +1 -1
  50. package/dist/actions/build/shouldAutoUpdate.js +2 -0
  51. package/dist/actions/build/shouldAutoUpdate.js.map +1 -1
  52. package/dist/actions/build/types.js.map +1 -1
  53. package/dist/actions/build/writeFavicons.js +3 -5
  54. package/dist/actions/build/writeFavicons.js.map +1 -1
  55. package/dist/actions/build/writeSanityRuntime.js +4 -3
  56. package/dist/actions/build/writeSanityRuntime.js.map +1 -1
  57. package/dist/actions/codemods/reactIconsV3.js +2 -2
  58. package/dist/actions/codemods/reactIconsV3.js.map +1 -1
  59. package/dist/actions/dataset/create.js +7 -1
  60. package/dist/actions/dataset/create.js.map +1 -1
  61. package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -1
  62. package/dist/actions/dataset/resolveDataset.js +26 -0
  63. package/dist/actions/dataset/resolveDataset.js.map +1 -0
  64. package/dist/actions/debug/formatters.js +22 -0
  65. package/dist/actions/debug/formatters.js.map +1 -0
  66. package/dist/actions/deploy/createStudioUserApplication.js +17 -4
  67. package/dist/actions/deploy/createStudioUserApplication.js.map +1 -1
  68. package/dist/actions/deploy/deployApp.js +41 -15
  69. package/dist/actions/deploy/deployApp.js.map +1 -1
  70. package/dist/actions/deploy/deployStudio.js +92 -44
  71. package/dist/actions/deploy/deployStudio.js.map +1 -1
  72. package/dist/actions/deploy/deployStudioSchemasAndManifests.js +55 -0
  73. package/dist/actions/deploy/deployStudioSchemasAndManifests.js.map +1 -0
  74. package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js +120 -0
  75. package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js.map +1 -0
  76. package/dist/actions/deploy/findUserApplicationForStudio.js +35 -12
  77. package/dist/actions/deploy/findUserApplicationForStudio.js.map +1 -1
  78. package/dist/actions/deploy/types.js +10 -1
  79. package/dist/actions/deploy/types.js.map +1 -1
  80. package/dist/actions/deploy/urlUtils.js +21 -0
  81. package/dist/actions/deploy/urlUtils.js.map +1 -0
  82. package/dist/actions/dev/getDashboardAppUrl.js +48 -0
  83. package/dist/actions/dev/getDashboardAppUrl.js.map +1 -0
  84. package/dist/actions/dev/getDevServerConfig.js +7 -3
  85. package/dist/actions/dev/getDevServerConfig.js.map +1 -1
  86. package/dist/actions/dev/startAppDevServer.js +3 -3
  87. package/dist/actions/dev/startAppDevServer.js.map +1 -1
  88. package/dist/actions/dev/startStudioDevServer.js +14 -14
  89. package/dist/actions/dev/startStudioDevServer.js.map +1 -1
  90. package/dist/actions/doctor/checks/cliInstallation.js +56 -0
  91. package/dist/actions/doctor/checks/cliInstallation.js.map +1 -0
  92. package/dist/actions/doctor/checks/index.js +16 -0
  93. package/dist/actions/doctor/checks/index.js.map +1 -0
  94. package/dist/actions/doctor/runDoctorChecks.js +56 -0
  95. package/dist/actions/doctor/runDoctorChecks.js.map +1 -0
  96. package/dist/actions/doctor/types.js +3 -0
  97. package/dist/actions/doctor/types.js.map +1 -0
  98. package/dist/actions/documents/types.js.map +1 -1
  99. package/dist/actions/documents/validate.js +11 -2
  100. package/dist/actions/documents/validate.js.map +1 -1
  101. package/dist/actions/documents/validateDocuments.worker.js +4 -4
  102. package/dist/actions/documents/validateDocuments.worker.js.map +1 -1
  103. package/dist/actions/documents/validation/reporters/jsonReporter.js +1 -1
  104. package/dist/actions/documents/validation/reporters/jsonReporter.js.map +1 -1
  105. package/dist/actions/documents/validation/reporters/ndjsonReporter.js +1 -1
  106. package/dist/actions/documents/validation/reporters/ndjsonReporter.js.map +1 -1
  107. package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js +1 -1
  108. package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js.map +1 -1
  109. package/dist/actions/documents/validation/reporters/prettyReporter/tree.js +108 -0
  110. package/dist/actions/documents/validation/reporters/prettyReporter/tree.js.map +1 -0
  111. package/dist/actions/graphql/SchemaError.js +4 -26
  112. package/dist/actions/graphql/SchemaError.js.map +1 -1
  113. package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js +540 -0
  114. package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js.map +1 -0
  115. package/dist/actions/graphql/__tests__/fixtures/test-studio.js +1143 -0
  116. package/dist/actions/graphql/__tests__/fixtures/test-studio.js.map +1 -0
  117. package/dist/actions/graphql/__tests__/fixtures/union-refs.js +591 -0
  118. package/dist/actions/graphql/__tests__/fixtures/union-refs.js.map +1 -0
  119. package/dist/actions/graphql/__tests__/helpers.js +23 -0
  120. package/dist/actions/graphql/__tests__/helpers.js.map +1 -0
  121. package/dist/actions/graphql/extractFromSanitySchema.js +5 -5
  122. package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -1
  123. package/dist/actions/graphql/extractGraphQLAPIs.js +150 -0
  124. package/dist/actions/graphql/extractGraphQLAPIs.js.map +1 -0
  125. package/dist/actions/graphql/extractGraphQLAPIs.worker.js +12 -0
  126. package/dist/actions/graphql/extractGraphQLAPIs.worker.js.map +1 -0
  127. package/dist/actions/graphql/gen1/generateTypeFilters.js +1 -1
  128. package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -1
  129. package/dist/actions/graphql/gen1/generateTypeQueries.js +2 -1
  130. package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -1
  131. package/dist/actions/graphql/gen1/index.js +5 -5
  132. package/dist/actions/graphql/gen1/index.js.map +1 -1
  133. package/dist/actions/graphql/gen2/generateTypeQueries.js +1 -1
  134. package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -1
  135. package/dist/actions/graphql/gen2/index.js +6 -6
  136. package/dist/actions/graphql/gen2/index.js.map +1 -1
  137. package/dist/actions/graphql/gen3/generateTypeQueries.js +3 -4
  138. package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -1
  139. package/dist/actions/graphql/gen3/index.js +6 -7
  140. package/dist/actions/graphql/gen3/index.js.map +1 -1
  141. package/dist/actions/graphql/getGraphQLAPIs.js +15 -57
  142. package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
  143. package/dist/actions/graphql/getGraphQLAPIs.worker.js +75 -106
  144. package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -1
  145. package/dist/actions/graphql/helpers.js +13 -0
  146. package/dist/actions/graphql/helpers.js.map +1 -1
  147. package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js +187 -0
  148. package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js.map +1 -0
  149. package/dist/actions/graphql/types.js +1 -1
  150. package/dist/actions/graphql/types.js.map +1 -1
  151. package/dist/actions/init/bootstrapLocalTemplate.js +10 -8
  152. package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
  153. package/dist/actions/init/bootstrapRemoteTemplate.js +6 -5
  154. package/dist/actions/init/bootstrapRemoteTemplate.js.map +1 -1
  155. package/dist/actions/init/bootstrapTemplate.js.map +1 -1
  156. package/dist/actions/init/checkNextJsReactCompatibility.js +1 -1
  157. package/dist/actions/init/checkNextJsReactCompatibility.js.map +1 -1
  158. package/dist/actions/init/createAppCliConfig.js.map +1 -1
  159. package/dist/actions/init/createCliConfig.js.map +1 -1
  160. package/dist/actions/init/createPackageManifest.js +21 -9
  161. package/dist/actions/init/createPackageManifest.js.map +1 -1
  162. package/dist/actions/init/remoteTemplate.js +1 -2
  163. package/dist/actions/init/remoteTemplate.js.map +1 -1
  164. package/dist/actions/init/sdkAppDependencies.js +19 -0
  165. package/dist/actions/init/sdkAppDependencies.js.map +1 -0
  166. package/dist/actions/init/studioDependencies.js.map +1 -0
  167. package/dist/actions/init/templates/appQuickstart.js +1 -22
  168. package/dist/actions/init/templates/appQuickstart.js.map +1 -1
  169. package/dist/actions/init/templates/appSanityUi.js +3 -22
  170. package/dist/actions/init/templates/appSanityUi.js.map +1 -1
  171. package/dist/actions/init/types.js.map +1 -1
  172. package/dist/actions/manifest/SchemaIcon.js +6 -4
  173. package/dist/actions/manifest/SchemaIcon.js.map +1 -1
  174. package/dist/actions/manifest/blockTypeTransformer.js +67 -0
  175. package/dist/actions/manifest/blockTypeTransformer.js.map +1 -0
  176. package/dist/actions/manifest/debug.js +4 -0
  177. package/dist/actions/manifest/debug.js.map +1 -0
  178. package/dist/actions/manifest/extractAppManifest.js +39 -22
  179. package/dist/actions/manifest/extractAppManifest.js.map +1 -1
  180. package/dist/actions/manifest/extractManifest.js +27 -78
  181. package/dist/actions/manifest/extractManifest.js.map +1 -1
  182. package/dist/actions/manifest/extractManifest.worker.js +30 -0
  183. package/dist/actions/manifest/extractManifest.worker.js.map +1 -0
  184. package/dist/actions/manifest/extractWorkspaceManifest.js +31 -372
  185. package/dist/actions/manifest/extractWorkspaceManifest.js.map +1 -1
  186. package/dist/actions/manifest/iconResolver.js +30 -0
  187. package/dist/actions/manifest/iconResolver.js.map +1 -0
  188. package/dist/actions/manifest/referenceTransformer.js +51 -0
  189. package/dist/actions/manifest/referenceTransformer.js.map +1 -0
  190. package/dist/actions/manifest/schemaTypeHelpers.js +2 -2
  191. package/dist/actions/manifest/schemaTypeHelpers.js.map +1 -1
  192. package/dist/actions/manifest/schemaTypeTransformer.js +168 -0
  193. package/dist/actions/manifest/schemaTypeTransformer.js.map +1 -0
  194. package/dist/actions/manifest/transformerUtils.js +40 -0
  195. package/dist/actions/manifest/transformerUtils.js.map +1 -0
  196. package/dist/actions/manifest/types.js +5 -0
  197. package/dist/actions/manifest/types.js.map +1 -1
  198. package/dist/actions/manifest/validationTransformer.js +84 -0
  199. package/dist/actions/manifest/validationTransformer.js.map +1 -0
  200. package/dist/actions/manifest/writeManifestFile.js +30 -0
  201. package/dist/actions/manifest/writeManifestFile.js.map +1 -0
  202. package/dist/actions/manifest/writeWorkspaceFiles.js +30 -0
  203. package/dist/actions/manifest/writeWorkspaceFiles.js.map +1 -0
  204. package/dist/actions/mcp/detectAvailableEditors.js +34 -13
  205. package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
  206. package/dist/actions/mcp/editorConfigs.js +231 -109
  207. package/dist/actions/mcp/editorConfigs.js.map +1 -1
  208. package/dist/actions/mcp/promptForMCPSetup.js +16 -7
  209. package/dist/actions/mcp/promptForMCPSetup.js.map +1 -1
  210. package/dist/actions/mcp/setupMCP.js +62 -23
  211. package/dist/actions/mcp/setupMCP.js.map +1 -1
  212. package/dist/actions/mcp/types.js.map +1 -1
  213. package/dist/actions/mcp/validateEditorTokens.js +56 -0
  214. package/dist/actions/mcp/validateEditorTokens.js.map +1 -0
  215. package/dist/actions/mcp/writeMCPConfig.js +27 -15
  216. package/dist/actions/mcp/writeMCPConfig.js.map +1 -1
  217. package/dist/actions/media/buildNdjsonIndex.js +32 -0
  218. package/dist/actions/media/buildNdjsonIndex.js.map +1 -0
  219. package/dist/actions/media/importAspects.js +2 -11
  220. package/dist/actions/media/importAspects.js.map +1 -1
  221. package/dist/actions/media/importMedia.js +22 -18
  222. package/dist/actions/media/importMedia.js.map +1 -1
  223. package/dist/actions/organizations/findOrganizationByUserName.js +5 -0
  224. package/dist/actions/organizations/findOrganizationByUserName.js.map +1 -0
  225. package/dist/actions/organizations/getOrganization.js +3 -2
  226. package/dist/actions/organizations/getOrganization.js.map +1 -1
  227. package/dist/actions/organizations/getOrganizationChoices.js +27 -19
  228. package/dist/actions/organizations/getOrganizationChoices.js.map +1 -1
  229. package/dist/actions/organizations/types.js +3 -0
  230. package/dist/actions/organizations/types.js.map +1 -0
  231. package/dist/actions/projects/getManageUrl.js +1 -2
  232. package/dist/actions/projects/getManageUrl.js.map +1 -1
  233. package/dist/actions/schema/deleteSchemaAction.js +14 -30
  234. package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
  235. package/dist/actions/schema/deploySchemas.js +22 -91
  236. package/dist/actions/schema/deploySchemas.js.map +1 -1
  237. package/dist/actions/schema/extractSanitySchema.worker.js +0 -5
  238. package/dist/actions/schema/extractSanitySchema.worker.js.map +1 -1
  239. package/dist/actions/schema/extractSanityWorkspace.worker.js +24 -0
  240. package/dist/actions/schema/extractSanityWorkspace.worker.js.map +1 -0
  241. package/dist/actions/schema/extractSchema.js +8 -40
  242. package/dist/actions/schema/extractSchema.js.map +1 -1
  243. package/dist/actions/schema/extractSchemaWatcher.js +128 -0
  244. package/dist/actions/schema/extractSchemaWatcher.js.map +1 -0
  245. package/dist/actions/schema/formatSchemaValidation.js +5 -1
  246. package/dist/actions/schema/formatSchemaValidation.js.map +1 -1
  247. package/dist/actions/schema/getExtractOptions.js +16 -0
  248. package/dist/actions/schema/getExtractOptions.js.map +1 -0
  249. package/dist/actions/schema/listSchemas.js +53 -56
  250. package/dist/actions/schema/listSchemas.js.map +1 -1
  251. package/dist/actions/schema/matchSchemaPattern.js +22 -0
  252. package/dist/actions/schema/matchSchemaPattern.js.map +1 -0
  253. package/dist/actions/schema/runSchemaExtraction.js +39 -0
  254. package/dist/actions/schema/runSchemaExtraction.js.map +1 -0
  255. package/dist/actions/schema/types.js +8 -0
  256. package/dist/actions/schema/types.js.map +1 -1
  257. package/dist/actions/schema/uniqueWorkspaces.worker.js +24 -0
  258. package/dist/actions/schema/uniqueWorkspaces.worker.js.map +1 -0
  259. package/dist/actions/schema/updateWorkspaceSchema.js +63 -0
  260. package/dist/actions/schema/updateWorkspaceSchema.js.map +1 -0
  261. package/dist/actions/schema/uploadSchemaToLexicon.js +87 -0
  262. package/dist/actions/schema/uploadSchemaToLexicon.js.map +1 -0
  263. package/dist/actions/schema/utils/SchemaExtractionError.js +10 -0
  264. package/dist/actions/schema/utils/SchemaExtractionError.js.map +1 -0
  265. package/dist/actions/schema/utils/schemaStoreValidation.js +1 -15
  266. package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
  267. package/dist/actions/schema/utils/uniqByProjectIdDataset.js +1 -1
  268. package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -1
  269. package/dist/actions/schema/validateSchema.worker.js +1 -8
  270. package/dist/actions/schema/validateSchema.worker.js.map +1 -1
  271. package/dist/actions/schema/watchExtractSchema.js +72 -0
  272. package/dist/actions/schema/watchExtractSchema.js.map +1 -0
  273. package/dist/actions/telemetry/isTrueish.js +10 -0
  274. package/dist/actions/telemetry/isTrueish.js.map +1 -0
  275. package/dist/actions/telemetry/resolveConsent.js +2 -1
  276. package/dist/actions/telemetry/resolveConsent.js.map +1 -1
  277. package/dist/actions/telemetry/setConsent.js +2 -1
  278. package/dist/actions/telemetry/setConsent.js.map +1 -1
  279. package/dist/actions/telemetry/telemetryDebug.js +2 -2
  280. package/dist/actions/telemetry/telemetryDebug.js.map +1 -1
  281. package/dist/actions/users/getMembersForProject.js.map +1 -1
  282. package/dist/actions/users/getPendingInvitations.js +1 -1
  283. package/dist/actions/users/getPendingInvitations.js.map +1 -1
  284. package/dist/actions/users/types.js.map +1 -1
  285. package/dist/actions/versions/filterSanityModules.js.map +1 -1
  286. package/dist/actions/versions/findSanityModulesVersions.js +2 -3
  287. package/dist/actions/versions/findSanityModulesVersions.js.map +1 -1
  288. package/dist/actions/versions/getFormatters.js +1 -1
  289. package/dist/actions/versions/getFormatters.js.map +1 -1
  290. package/dist/actions/versions/tryFindLatestVersion.js +1 -1
  291. package/dist/actions/versions/tryFindLatestVersion.js.map +1 -1
  292. package/dist/commands/backup/disable.js +22 -7
  293. package/dist/commands/backup/disable.js.map +1 -1
  294. package/dist/commands/backup/download.js +19 -10
  295. package/dist/commands/backup/download.js.map +1 -1
  296. package/dist/commands/backup/enable.js +22 -7
  297. package/dist/commands/backup/enable.js.map +1 -1
  298. package/dist/commands/backup/list.js +20 -8
  299. package/dist/commands/backup/list.js.map +1 -1
  300. package/dist/commands/build.js +2 -5
  301. package/dist/commands/build.js.map +1 -1
  302. package/dist/commands/cors/add.js +20 -7
  303. package/dist/commands/cors/add.js.map +1 -1
  304. package/dist/commands/cors/delete.js +22 -7
  305. package/dist/commands/cors/delete.js.map +1 -1
  306. package/dist/commands/cors/list.js +22 -7
  307. package/dist/commands/cors/list.js.map +1 -1
  308. package/dist/commands/dataset/alias/create.js +26 -7
  309. package/dist/commands/dataset/alias/create.js.map +1 -1
  310. package/dist/commands/dataset/alias/delete.js +20 -7
  311. package/dist/commands/dataset/alias/delete.js.map +1 -1
  312. package/dist/commands/dataset/alias/link.js +20 -7
  313. package/dist/commands/dataset/alias/link.js.map +1 -1
  314. package/dist/commands/dataset/alias/unlink.js +20 -7
  315. package/dist/commands/dataset/alias/unlink.js.map +1 -1
  316. package/dist/commands/dataset/copy.js +45 -30
  317. package/dist/commands/dataset/copy.js.map +1 -1
  318. package/dist/commands/dataset/create.js +32 -7
  319. package/dist/commands/dataset/create.js.map +1 -1
  320. package/dist/commands/dataset/delete.js +16 -7
  321. package/dist/commands/dataset/delete.js.map +1 -1
  322. package/dist/commands/dataset/embeddings/disable.js +77 -0
  323. package/dist/commands/dataset/embeddings/disable.js.map +1 -0
  324. package/dist/commands/dataset/embeddings/enable.js +141 -0
  325. package/dist/commands/dataset/embeddings/enable.js.map +1 -0
  326. package/dist/commands/dataset/embeddings/status.js +72 -0
  327. package/dist/commands/dataset/embeddings/status.js.map +1 -0
  328. package/dist/commands/dataset/export.js +25 -16
  329. package/dist/commands/dataset/export.js.map +1 -1
  330. package/dist/commands/dataset/import.js +306 -1
  331. package/dist/commands/dataset/import.js.map +1 -1
  332. package/dist/commands/dataset/list.js +22 -7
  333. package/dist/commands/dataset/list.js.map +1 -1
  334. package/dist/commands/dataset/visibility/get.js +18 -7
  335. package/dist/commands/dataset/visibility/get.js.map +1 -1
  336. package/dist/commands/dataset/visibility/set.js +22 -7
  337. package/dist/commands/dataset/visibility/set.js.map +1 -1
  338. package/dist/commands/debug.js +4 -2
  339. package/dist/commands/debug.js.map +1 -1
  340. package/dist/commands/deploy.js +22 -11
  341. package/dist/commands/deploy.js.map +1 -1
  342. package/dist/commands/dev.js +2 -4
  343. package/dist/commands/dev.js.map +1 -1
  344. package/dist/commands/doctor.js +125 -0
  345. package/dist/commands/doctor.js.map +1 -0
  346. package/dist/commands/documents/create.js +19 -12
  347. package/dist/commands/documents/create.js.map +1 -1
  348. package/dist/commands/documents/delete.js +19 -12
  349. package/dist/commands/documents/delete.js.map +1 -1
  350. package/dist/commands/documents/get.js +17 -12
  351. package/dist/commands/documents/get.js.map +1 -1
  352. package/dist/commands/documents/query.js +26 -18
  353. package/dist/commands/documents/query.js.map +1 -1
  354. package/dist/commands/documents/validate.js +32 -10
  355. package/dist/commands/documents/validate.js.map +1 -1
  356. package/dist/commands/graphql/deploy.js +58 -30
  357. package/dist/commands/graphql/deploy.js.map +1 -1
  358. package/dist/commands/graphql/list.js +15 -7
  359. package/dist/commands/graphql/list.js.map +1 -1
  360. package/dist/commands/graphql/undeploy.js +37 -19
  361. package/dist/commands/graphql/undeploy.js.map +1 -1
  362. package/dist/commands/hook/attempt.js +22 -7
  363. package/dist/commands/hook/attempt.js.map +1 -1
  364. package/dist/commands/hook/create.js +23 -8
  365. package/dist/commands/hook/create.js.map +1 -1
  366. package/dist/commands/hook/delete.js +22 -7
  367. package/dist/commands/hook/delete.js.map +1 -1
  368. package/dist/commands/hook/list.js +22 -7
  369. package/dist/commands/hook/list.js.map +1 -1
  370. package/dist/commands/hook/logs.js +21 -8
  371. package/dist/commands/hook/logs.js.map +1 -1
  372. package/dist/commands/init.js +55 -32
  373. package/dist/commands/init.js.map +1 -1
  374. package/dist/commands/login.js +19 -6
  375. package/dist/commands/login.js.map +1 -1
  376. package/dist/commands/logout.js +8 -6
  377. package/dist/commands/logout.js.map +1 -1
  378. package/dist/commands/manage.js +0 -1
  379. package/dist/commands/manage.js.map +1 -1
  380. package/dist/commands/manifest/extract.js +14 -10
  381. package/dist/commands/manifest/extract.js.map +1 -1
  382. package/dist/commands/mcp/configure.js +4 -2
  383. package/dist/commands/mcp/configure.js.map +1 -1
  384. package/dist/commands/media/create-aspect.js +4 -4
  385. package/dist/commands/media/create-aspect.js.map +1 -1
  386. package/dist/commands/media/delete-aspect.js +9 -7
  387. package/dist/commands/media/delete-aspect.js.map +1 -1
  388. package/dist/commands/media/deploy-aspect.js +22 -9
  389. package/dist/commands/media/deploy-aspect.js.map +1 -1
  390. package/dist/commands/media/export.js +9 -7
  391. package/dist/commands/media/export.js.map +1 -1
  392. package/dist/commands/media/import.js +10 -8
  393. package/dist/commands/media/import.js.map +1 -1
  394. package/dist/commands/preview.js +5 -8
  395. package/dist/commands/preview.js.map +1 -1
  396. package/dist/commands/projects/list.js +2 -1
  397. package/dist/commands/projects/list.js.map +1 -1
  398. package/dist/commands/schema/delete.js +33 -34
  399. package/dist/commands/schema/delete.js.map +1 -1
  400. package/dist/commands/schema/deploy.js +19 -30
  401. package/dist/commands/schema/deploy.js.map +1 -1
  402. package/dist/commands/schema/extract.js +32 -4
  403. package/dist/commands/schema/extract.js.map +1 -1
  404. package/dist/commands/schema/list.js +10 -31
  405. package/dist/commands/schema/list.js.map +1 -1
  406. package/dist/commands/tokens/add.js +24 -7
  407. package/dist/commands/tokens/add.js.map +1 -1
  408. package/dist/commands/tokens/delete.js +20 -7
  409. package/dist/commands/tokens/delete.js.map +1 -1
  410. package/dist/commands/tokens/list.js +20 -7
  411. package/dist/commands/tokens/list.js.map +1 -1
  412. package/dist/commands/users/invite.js +24 -7
  413. package/dist/commands/users/invite.js.map +1 -1
  414. package/dist/commands/users/list.js +76 -33
  415. package/dist/commands/users/list.js.map +1 -1
  416. package/dist/commands/versions.js +1 -1
  417. package/dist/commands/versions.js.map +1 -1
  418. package/dist/config/createCliConfig.js +1 -2
  419. package/dist/config/createCliConfig.js.map +1 -1
  420. package/dist/exports/_internal.d.ts +132 -0
  421. package/dist/exports/_internal.js +4 -0
  422. package/dist/exports/_internal.js.map +1 -0
  423. package/dist/exports/index.d.ts +113 -0
  424. package/dist/exports/index.js +6 -0
  425. package/dist/exports/index.js.map +1 -0
  426. package/dist/hooks/init/checkForUpdates.js +14 -0
  427. package/dist/hooks/init/checkForUpdates.js.map +1 -0
  428. package/dist/hooks/prerun/flushTelemetry.worker.js +1 -1
  429. package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -1
  430. package/dist/hooks/prerun/injectEnvVariables.js +9 -1
  431. package/dist/hooks/prerun/injectEnvVariables.js.map +1 -1
  432. package/dist/hooks/prerun/setupTelemetry.js +16 -10
  433. package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
  434. package/dist/prompts/promptForProject.js +64 -0
  435. package/dist/prompts/promptForProject.js.map +1 -0
  436. package/dist/{actions/auth/login/promptProviders.js → prompts/promptForProviders.js} +3 -3
  437. package/dist/prompts/promptForProviders.js.map +1 -0
  438. package/dist/prompts/selectMediaLibrary.js +1 -1
  439. package/dist/prompts/selectMediaLibrary.js.map +1 -1
  440. package/dist/server/devServer.js +4 -2
  441. package/dist/server/devServer.js.map +1 -1
  442. package/dist/server/previewServer.js +2 -2
  443. package/dist/server/previewServer.js.map +1 -1
  444. package/dist/server/vite/plugin-schema-extraction.js +201 -0
  445. package/dist/server/vite/plugin-schema-extraction.js.map +1 -0
  446. package/dist/server/vite/plugin-typegen.js +217 -0
  447. package/dist/server/vite/plugin-typegen.js.map +1 -0
  448. package/dist/services/auth.js +42 -3
  449. package/dist/services/auth.js.map +1 -1
  450. package/dist/services/datasets.js +7 -5
  451. package/dist/services/datasets.js.map +1 -1
  452. package/dist/services/docs.js +2 -2
  453. package/dist/services/docs.js.map +1 -1
  454. package/dist/services/embeddings.js +25 -0
  455. package/dist/services/embeddings.js.map +1 -0
  456. package/dist/services/getUrlHeaders.js +7 -18
  457. package/dist/services/getUrlHeaders.js.map +1 -1
  458. package/dist/services/grants.js +13 -0
  459. package/dist/services/grants.js.map +1 -0
  460. package/dist/services/graphql.js +1 -1
  461. package/dist/services/graphql.js.map +1 -1
  462. package/dist/services/mcp.js +55 -1
  463. package/dist/services/mcp.js.map +1 -1
  464. package/dist/services/projects.js +4 -2
  465. package/dist/services/projects.js.map +1 -1
  466. package/dist/services/schemas.js +1 -1
  467. package/dist/services/schemas.js.map +1 -1
  468. package/dist/services/telemetry.js +2 -1
  469. package/dist/services/telemetry.js.map +1 -1
  470. package/dist/services/userApplications.js +21 -6
  471. package/dist/services/userApplications.js.map +1 -1
  472. package/dist/telemetry/extractSchema.telemetry.js +10 -0
  473. package/dist/telemetry/extractSchema.telemetry.js.map +1 -1
  474. package/dist/types/grants.js +3 -0
  475. package/dist/types/grants.js.map +1 -0
  476. package/dist/types.js +3 -0
  477. package/dist/types.js.map +1 -1
  478. package/dist/util/checkProjectPermissions.js +21 -0
  479. package/dist/util/checkProjectPermissions.js.map +1 -0
  480. package/dist/util/cliClient.js +5 -3
  481. package/dist/util/cliClient.js.map +1 -1
  482. package/dist/util/compareDependencyVersions.js +74 -38
  483. package/dist/util/compareDependencyVersions.js.map +1 -1
  484. package/dist/util/createExpiringConfig.js +64 -0
  485. package/dist/util/createExpiringConfig.js.map +1 -0
  486. package/dist/util/detectFramework.js +135 -0
  487. package/dist/util/detectFramework.js.map +1 -0
  488. package/dist/util/errorMessages.js +0 -1
  489. package/dist/util/errorMessages.js.map +1 -1
  490. package/dist/util/extractDocumentsFromNdjsonOrTarball.js +1 -2
  491. package/dist/util/extractDocumentsFromNdjsonOrTarball.js.map +1 -1
  492. package/dist/util/getCliVersion.js +1 -1
  493. package/dist/util/getCliVersion.js.map +1 -1
  494. package/dist/util/getLocalPackageVersion.js +33 -23
  495. package/dist/util/getLocalPackageVersion.js.map +1 -1
  496. package/dist/util/getProjectDefaults.js +22 -28
  497. package/dist/util/getProjectDefaults.js.map +1 -1
  498. package/dist/util/getSharedServerConfig.js +1 -0
  499. package/dist/util/getSharedServerConfig.js.map +1 -1
  500. package/dist/util/getWorkspace.js +1 -1
  501. package/dist/util/getWorkspace.js.map +1 -1
  502. package/dist/util/gitConfig.js +45 -0
  503. package/dist/util/gitConfig.js.map +1 -0
  504. package/dist/util/isSchemaError.js +11 -0
  505. package/dist/util/isSchemaError.js.map +1 -0
  506. package/dist/util/isTar.js +8 -0
  507. package/dist/util/isTar.js.map +1 -0
  508. package/dist/util/packageManager/getPeerDependencies.js +44 -0
  509. package/dist/util/packageManager/getPeerDependencies.js.map +1 -0
  510. package/dist/util/packageManager/installationInfo/analyzeIssues.js +225 -0
  511. package/dist/util/packageManager/installationInfo/analyzeIssues.js.map +1 -0
  512. package/dist/util/packageManager/installationInfo/commands.js +73 -0
  513. package/dist/util/packageManager/installationInfo/commands.js.map +1 -0
  514. package/dist/util/packageManager/installationInfo/detectCliInstallation.js +66 -0
  515. package/dist/util/packageManager/installationInfo/detectCliInstallation.js.map +1 -0
  516. package/dist/util/packageManager/installationInfo/detectGlobals.js +295 -0
  517. package/dist/util/packageManager/installationInfo/detectGlobals.js.map +1 -0
  518. package/dist/util/packageManager/installationInfo/detectPackages.js +190 -0
  519. package/dist/util/packageManager/installationInfo/detectPackages.js.map +1 -0
  520. package/dist/util/packageManager/installationInfo/detectWorkspace.js +192 -0
  521. package/dist/util/packageManager/installationInfo/detectWorkspace.js.map +1 -0
  522. package/dist/util/packageManager/installationInfo/index.js +4 -0
  523. package/dist/util/packageManager/installationInfo/index.js.map +1 -0
  524. package/dist/util/packageManager/installationInfo/readJsonFile.js +14 -0
  525. package/dist/util/packageManager/installationInfo/readJsonFile.js.map +1 -0
  526. package/dist/util/packageManager/installationInfo/resolveVersionRange.js +42 -0
  527. package/dist/util/packageManager/installationInfo/resolveVersionRange.js.map +1 -0
  528. package/dist/util/packageManager/installationInfo/types.js +3 -0
  529. package/dist/util/packageManager/installationInfo/types.js.map +1 -0
  530. package/dist/util/packageManager/packageManagerChoice.js +1 -20
  531. package/dist/util/packageManager/packageManagerChoice.js.map +1 -1
  532. package/dist/util/packageManager/upgradePackages.js +4 -1
  533. package/dist/util/packageManager/upgradePackages.js.map +1 -1
  534. package/dist/util/promiseRaceWithTimeout.js +28 -0
  535. package/dist/util/promiseRaceWithTimeout.js.map +1 -0
  536. package/dist/util/readdirRecursive.js.map +1 -1
  537. package/dist/util/resolveLatestVersions.js +2 -2
  538. package/dist/util/resolveLatestVersions.js.map +1 -1
  539. package/dist/util/sharedFlags.js +54 -0
  540. package/dist/util/sharedFlags.js.map +1 -0
  541. package/dist/util/telemetry/cleanupOldTelemetryFiles.js +30 -0
  542. package/dist/util/telemetry/cleanupOldTelemetryFiles.js.map +1 -0
  543. package/dist/util/telemetry/createTelemetryStore.js +95 -0
  544. package/dist/util/telemetry/createTelemetryStore.js.map +1 -0
  545. package/dist/util/telemetry/createTraceId.js +10 -0
  546. package/dist/util/telemetry/createTraceId.js.map +1 -0
  547. package/dist/util/telemetry/findTelemetryFiles.js +35 -0
  548. package/dist/util/telemetry/findTelemetryFiles.js.map +1 -0
  549. package/dist/util/telemetry/flushTelemetryFiles.js +118 -0
  550. package/dist/util/telemetry/flushTelemetryFiles.js.map +1 -0
  551. package/dist/util/telemetry/generateTelemetryFilePath.js +30 -0
  552. package/dist/util/telemetry/generateTelemetryFilePath.js.map +1 -0
  553. package/dist/util/telemetry/logger.js +59 -0
  554. package/dist/util/telemetry/logger.js.map +1 -0
  555. package/dist/util/telemetry/readNDJSON.js +28 -0
  556. package/dist/util/telemetry/readNDJSON.js.map +1 -0
  557. package/dist/util/telemetry/telemetryStoreDebug.js +7 -0
  558. package/dist/util/telemetry/telemetryStoreDebug.js.map +1 -0
  559. package/dist/util/telemetry/trace.js +150 -0
  560. package/dist/util/telemetry/trace.js.map +1 -0
  561. package/dist/util/toForwardSlashes.js +8 -0
  562. package/dist/util/toForwardSlashes.js.map +1 -0
  563. package/dist/util/update/fetchLatestVersion.js +21 -0
  564. package/dist/util/update/fetchLatestVersion.js.map +1 -0
  565. package/dist/util/update/getUpdateCommand.js +20 -0
  566. package/dist/util/update/getUpdateCommand.js.map +1 -0
  567. package/dist/util/update/isInstalledUsingYarn.js +17 -0
  568. package/dist/util/update/isInstalledUsingYarn.js.map +1 -0
  569. package/dist/util/update/showNotificationUpdate.js +31 -0
  570. package/dist/util/update/showNotificationUpdate.js.map +1 -0
  571. package/dist/util/update/updateChecker.js +60 -0
  572. package/dist/util/update/updateChecker.js.map +1 -0
  573. package/dist/util/update/updateCheckerDebug.js +4 -0
  574. package/dist/util/update/updateCheckerDebug.js.map +1 -0
  575. package/oclif.config.js +1 -0
  576. package/oclif.manifest.json +1285 -492
  577. package/package.json +72 -73
  578. package/static/favicons/apple-touch-icon.png +0 -0
  579. package/static/favicons/favicon-192.png +0 -0
  580. package/static/favicons/favicon-512.png +0 -0
  581. package/static/favicons/favicon-96.png +0 -0
  582. package/static/favicons/favicon.ico +0 -0
  583. package/static/favicons/favicon.svg +12 -0
  584. package/dist/actions/auth/login/promptProviders.js.map +0 -1
  585. package/dist/actions/dev/getCoreAppUrl.js +0 -10
  586. package/dist/actions/dev/getCoreAppUrl.js.map +0 -1
  587. package/dist/actions/schema/schemaStoreTypes.js +0 -19
  588. package/dist/actions/schema/schemaStoreTypes.js.map +0 -1
  589. package/dist/actions/schema/utils/manifestExtractor.js +0 -33
  590. package/dist/actions/schema/utils/manifestExtractor.js.map +0 -1
  591. package/dist/actions/schema/utils/manifestReader.js +0 -71
  592. package/dist/actions/schema/utils/manifestReader.js.map +0 -1
  593. package/dist/index.d.ts +0 -2326
  594. package/dist/index.js +0 -6
  595. package/dist/index.js.map +0 -1
  596. package/dist/studioDependencies.js.map +0 -1
  597. package/dist/typings/deepSortObject.d.js +0 -2
  598. package/dist/typings/deepSortObject.d.js.map +0 -1
  599. package/dist/util/findNdjsonEntry.js +0 -21
  600. package/dist/util/findNdjsonEntry.js.map +0 -1
  601. package/dist/util/importStudioConfig.js +0 -40
  602. package/dist/util/importStudioConfig.js.map +0 -1
  603. package/dist/util/readModuleVersion.js +0 -15
  604. package/dist/util/readModuleVersion.js.map +0 -1
  605. package/dist/util/readPackageJson.js +0 -44
  606. package/dist/util/readPackageJson.js.map +0 -1
  607. package/dist/util/readPackageManifest.js +0 -46
  608. package/dist/util/readPackageManifest.js.map +0 -1
  609. package/dist/util/uniqBy.js +0 -14
  610. package/dist/util/uniqBy.js.map +0 -1
  611. package/dist/util/workerChannels.js +0 -172
  612. package/dist/util/workerChannels.js.map +0 -1
  613. /package/dist/{studioDependencies.js → actions/init/studioDependencies.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config/createCliConfig.ts"],"sourcesContent":["import {type CliConfig, cliConfigSchema} from '@sanity/cli-core'\n\n/**\n * @deprecated Use `defineCliConfig` instead\n * @public\n */\nexport function createCliConfig(config: CliConfig) {\n return cliConfigSchema.parse(config)\n}\n"],"names":["cliConfigSchema","createCliConfig","config","parse"],"mappings":"AAAA,SAAwBA,eAAe,QAAO,mBAAkB;AAEhE;;;CAGC,GACD,OAAO,SAASC,gBAAgBC,MAAiB;IAC/C,OAAOF,gBAAgBG,KAAK,CAACD;AAC/B"}
1
+ {"version":3,"sources":["../../src/config/createCliConfig.ts"],"sourcesContent":["import {type CliConfig} from '@sanity/cli-core'\n\n/**\n * @deprecated Use `defineCliConfig` instead\n * @public\n */\nexport function createCliConfig(config: CliConfig): CliConfig {\n return config\n}\n"],"names":["createCliConfig","config"],"mappings":"AAEA;;;CAGC,GACD,OAAO,SAASA,gBAAgBC,MAAiB;IAC/C,OAAOA;AACT"}
@@ -0,0 +1,132 @@
1
+ import { Schema } from "@sanity/types";
2
+
3
+ /**
4
+ * Extracts all serializable properties from userland schema types,
5
+ * so they best-effort can be used as definitions for Schema.compile.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare function extractManifestSchemaTypes(
10
+ schema: Schema,
11
+ workDir: string,
12
+ ): Promise<ManifestSchemaType[]>;
13
+
14
+ /**
15
+ * Get environment variables prefixed with SANITY_STUDIO_, as an object.
16
+ *
17
+ * @param options - Options for the environment variable loading
18
+ * {@link StudioEnvVariablesOptions}
19
+ * @returns Object of studio environment variables
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * getStudioEnvironmentVariables({prefix: 'process.env.', jsonEncode: true})
24
+ * ```
25
+ *
26
+ * @public
27
+ */
28
+ export declare function getStudioEnvironmentVariables(
29
+ options?: StudioEnvVariablesOptions,
30
+ ): Record<string, string>;
31
+
32
+ declare type ManifestArrayMember = Omit<ManifestSchemaType, "name"> & {
33
+ name?: string;
34
+ };
35
+
36
+ declare type ManifestField = ManifestSchemaType & {
37
+ fieldset?: string;
38
+ };
39
+
40
+ declare interface ManifestFieldset {
41
+ [index: string]: ManifestSerializable | undefined;
42
+ name: string;
43
+ title?: string;
44
+ }
45
+
46
+ declare type ManifestReferenceMember = Omit<ManifestSchemaType, "name"> & {
47
+ name?: string;
48
+ };
49
+
50
+ declare interface ManifestSchemaType {
51
+ name: string;
52
+ type: string;
53
+ deprecated?: {
54
+ reason: string;
55
+ };
56
+ fields?: ManifestField[];
57
+ fieldsets?: ManifestFieldset[];
58
+ hidden?: "conditional" | boolean;
59
+ lists?: ManifestTitledValue[];
60
+ marks?: {
61
+ annotations?: ManifestArrayMember[];
62
+ decorators?: ManifestTitledValue[];
63
+ };
64
+ of?: ManifestArrayMember[];
65
+ options?: Record<string, ManifestSerializable>;
66
+ preview?: {
67
+ select: Record<string, string>;
68
+ };
69
+ readOnly?: "conditional" | boolean;
70
+ styles?: ManifestTitledValue[];
71
+ title?: string;
72
+ to?: ManifestReferenceMember[];
73
+ validation?: ManifestValidationGroup[];
74
+ }
75
+
76
+ declare type ManifestSerializable =
77
+ | boolean
78
+ | ManifestSerializable[]
79
+ | number
80
+ | string
81
+ | {
82
+ [k: string]: ManifestSerializable;
83
+ };
84
+
85
+ declare interface ManifestTitledValue {
86
+ value: string;
87
+ title?: string;
88
+ }
89
+
90
+ declare interface ManifestValidationGroup {
91
+ rules: ManifestValidationRule[];
92
+ level?: "error" | "info" | "warning";
93
+ message?: string;
94
+ }
95
+
96
+ declare type ManifestValidationRule = {
97
+ [index: string]: ManifestSerializable | undefined;
98
+ constraint?: ManifestSerializable;
99
+ flag: string;
100
+ };
101
+
102
+ /**
103
+ * The params for the `getStudioEnvironmentVariables` function that gets Studio focused environment variables.
104
+ *
105
+ * @public
106
+ */
107
+ export declare interface StudioEnvVariablesOptions {
108
+ /**
109
+ * When specified includes environment variables from dotenv files (`.env`), in the same way the studio does.
110
+ * A `mode` must be specified, usually `development`
111
+ * or `production`, which will load the corresponding `.env.development` or `.env.production`.
112
+ * To specify where to look for the dotenv files, specify `options.envFile.envDir`.
113
+ */
114
+ envFile?:
115
+ | false
116
+ | {
117
+ envDir?: string;
118
+ mode: string;
119
+ };
120
+ /**
121
+ * When specified, JSON-encodes the values, which is handy if you want to pass
122
+ * this to a bundlers hardcoded defines, such as Vite's `define` or Webpack's `DefinePlugin`.
123
+ */
124
+ jsonEncode?: boolean;
125
+ /**
126
+ * When specified adds a prefix to the environment variable keys,
127
+ * eg: `getStudioEnvironmentVariables({prefix: 'process.env.'})`
128
+ */
129
+ prefix?: string;
130
+ }
131
+
132
+ export {};
@@ -0,0 +1,4 @@
1
+ export { getStudioEnvironmentVariables } from '../actions/build/getStudioEnvironmentVariables.js';
2
+ export { extractManifestSchemaTypes } from '../actions/manifest/extractWorkspaceManifest.js';
3
+
4
+ //# sourceMappingURL=_internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/_internal.ts"],"sourcesContent":["export {getStudioEnvironmentVariables} from '../actions/build/getStudioEnvironmentVariables.js'\nexport type {StudioEnvVariablesOptions} from '../actions/build/getStudioEnvironmentVariables.js'\nexport {extractManifestSchemaTypes} from '../actions/manifest/extractWorkspaceManifest.js'\n"],"names":["getStudioEnvironmentVariables","extractManifestSchemaTypes"],"mappings":"AAAA,SAAQA,6BAA6B,QAAO,oDAAmD;AAE/F,SAAQC,0BAA0B,QAAO,kDAAiD"}
@@ -0,0 +1,113 @@
1
+ import { CliConfig } from "@sanity/cli-core";
2
+ import { ClientConfig } from "@sanity/client";
3
+ import { loadEnv } from "vite";
4
+ import { SanityClient } from "@sanity/client";
5
+ import { UserViteConfig } from "@sanity/cli-core";
6
+
7
+ /**
8
+ * @public
9
+ */
10
+ export declare interface CliApiConfig {
11
+ dataset?: string;
12
+ projectId?: string;
13
+ }
14
+
15
+ declare type CliClientGetter = ((
16
+ options?: CliClientOptions,
17
+ ) => SanityClient) & {
18
+ /**
19
+ * @deprecated This is only for INTERNAL use, and should not be relied upon outside of official Sanity modules
20
+ * @returns A token to use when constructing a client without a `token` explicitly defined, or undefined
21
+ * @internal
22
+ */
23
+ __internal__getToken: () => string | undefined;
24
+ };
25
+
26
+ /**
27
+ * @public
28
+ */
29
+ export declare interface CliClientOptions extends ClientConfig {
30
+ /**
31
+ * If no `projectId` or `dataset` is provided, `getCliClient` will try to
32
+ * resolve these from the `sanity.cli.ts` configuration file. Use this option
33
+ * to specify the directory to look for this file.
34
+ */
35
+ cwd?: string;
36
+ }
37
+
38
+ export { CliConfig };
39
+
40
+ /**
41
+ * @deprecated Use `defineCliConfig` instead
42
+ * @public
43
+ */
44
+ export declare function createCliConfig(config: CliConfig): CliConfig;
45
+
46
+ /** @beta */
47
+ export declare function defineCliConfig(config: CliConfig): CliConfig;
48
+
49
+ /**
50
+ * @public
51
+ *
52
+ * @param options - The options to use for the client.
53
+ * @returns A configured Sanity API client.
54
+ */
55
+ export declare const getCliClient: CliClientGetter;
56
+
57
+ /**
58
+ * @public
59
+ */
60
+ export declare interface GraphQLAPIConfig {
61
+ /**
62
+ * Suffix to use for generated filter types.
63
+ *
64
+ * Optional, Defaults to `Filter`.
65
+ *
66
+ */
67
+ filterSuffix?: string;
68
+ /**
69
+ * Generation of API to deploy
70
+ *
71
+ * Optional, defaults to `gen3` (which is the only option, currently)
72
+ */
73
+ generation?: "gen1" | "gen2" | "gen3";
74
+ /**
75
+ * ID of GraphQL API. Only (currently) required when using the `--api` flag
76
+ * for `sanity graphql deploy`, in order to only deploy a specific API.
77
+ */
78
+ id?: string;
79
+ /**
80
+ * Whether or not to enable the GraphQL v2021-10-21 query semantics
81
+ */
82
+ nonNullDocumentFields?: boolean;
83
+ /**
84
+ * Whether or not to enable the GraphQL Playground for this API
85
+ *
86
+ * Optional, defaults to `true` in development mode, `false` otherwise
87
+ */
88
+ playground?: boolean;
89
+ /**
90
+ * Name of source containing the schema to deploy, within the configured workspace
91
+ *
92
+ * Optional, defaults to `default` (eg the one used if no `name` is defined)
93
+ */
94
+ source?: string;
95
+ /**
96
+ * API tag for this API - allows deploying multiple different APIs to a single dataset
97
+ *
98
+ * Optional, defaults to `default`
99
+ */
100
+ tag?: string;
101
+ /**
102
+ * Name of workspace containing the schema to deploy
103
+ *
104
+ * Optional, defaults to `default` (eg the one used if no `name` is defined)
105
+ */
106
+ workspace?: string;
107
+ }
108
+
109
+ export { loadEnv };
110
+
111
+ export { UserViteConfig };
112
+
113
+ export {};
@@ -0,0 +1,6 @@
1
+ export { createCliConfig } from '../config/createCliConfig.js';
2
+ export { defineCliConfig } from '../config/defineCliConfig.js';
3
+ export { getCliClient } from '../util/cliClient.js';
4
+ export { loadEnv } from '../util/loadEnv.js';
5
+
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/exports/index.ts"],"sourcesContent":["export type {GraphQLAPIConfig} from '../actions/graphql/types.js'\nexport {createCliConfig} from '../config/createCliConfig.js'\nexport {defineCliConfig} from '../config/defineCliConfig.js'\nexport type {CliApiConfig} from '../types.js'\nexport {type CliClientOptions, getCliClient} from '../util/cliClient.js'\nexport {loadEnv} from '../util/loadEnv.js'\nexport type {CliConfig, UserViteConfig} from '@sanity/cli-core'\n"],"names":["createCliConfig","defineCliConfig","getCliClient","loadEnv"],"mappings":"AACA,SAAQA,eAAe,QAAO,+BAA8B;AAC5D,SAAQC,eAAe,QAAO,+BAA8B;AAE5D,SAA+BC,YAAY,QAAO,uBAAsB;AACxE,SAAQC,OAAO,QAAO,qBAAoB"}
@@ -0,0 +1,14 @@
1
+ import { updateChecker } from '../../util/update/updateChecker.js';
2
+ import { updateCheckerDebug } from '../../util/update/updateCheckerDebug.js';
3
+ /**
4
+ * Init hook that checks for CLI updates and notifies the user if a new version is available.
5
+ * This is non-blocking and will silently fail if anything goes wrong.
6
+ */ export const checkForUpdates = async function({ config }) {
7
+ try {
8
+ await updateChecker(config);
9
+ } catch (err) {
10
+ updateCheckerDebug(`Error checking for updates: ${err}`);
11
+ }
12
+ };
13
+
14
+ //# sourceMappingURL=checkForUpdates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/init/checkForUpdates.ts"],"sourcesContent":["import {type Hook} from '@oclif/core'\n\nimport {updateChecker} from '../../util/update/updateChecker.js'\nimport {updateCheckerDebug} from '../../util/update/updateCheckerDebug.js'\n\n/**\n * Init hook that checks for CLI updates and notifies the user if a new version is available.\n * This is non-blocking and will silently fail if anything goes wrong.\n */\nexport const checkForUpdates: Hook.Init = async function ({config}) {\n try {\n await updateChecker(config)\n } catch (err) {\n updateCheckerDebug(`Error checking for updates: ${err}`)\n }\n}\n"],"names":["updateChecker","updateCheckerDebug","checkForUpdates","config","err"],"mappings":"AAEA,SAAQA,aAAa,QAAO,qCAAoC;AAChE,SAAQC,kBAAkB,QAAO,0CAAyC;AAE1E;;;CAGC,GACD,OAAO,MAAMC,kBAA6B,eAAgB,EAACC,MAAM,EAAC;IAChE,IAAI;QACF,MAAMH,cAAcG;IACtB,EAAE,OAAOC,KAAK;QACZH,mBAAmB,CAAC,4BAA4B,EAAEG,KAAK;IACzD;AACF,EAAC"}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { flushTelemetryFiles } from '@sanity/cli-core';
3
2
  import { resolveConsent } from '../../actions/telemetry/resolveConsent.js';
4
3
  import { sendEvents } from '../../services/telemetry.js';
4
+ import { flushTelemetryFiles } from '../../util/telemetry/flushTelemetryFiles.js';
5
5
  export async function runFlushWorker() {
6
6
  await flushTelemetryFiles({
7
7
  resolveConsent,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/prerun/flushTelemetry.worker.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport {flushTelemetryFiles} from '@sanity/cli-core'\n\nimport {resolveConsent} from '../../actions/telemetry/resolveConsent.js'\nimport {sendEvents} from '../../services/telemetry.js'\n\nexport async function runFlushWorker() {\n await flushTelemetryFiles({resolveConsent, sendEvents})\n}\n\n// Only run if executed directly (not imported)\nif (import.meta.url === `file://${process.argv[1]}`) {\n try {\n await runFlushWorker()\n process.exit(0)\n } catch {\n // Silently exit - don't block parent process\n process.exit(1)\n }\n}\n"],"names":["flushTelemetryFiles","resolveConsent","sendEvents","runFlushWorker","url","process","argv","exit"],"mappings":";AAEA,SAAQA,mBAAmB,QAAO,mBAAkB;AAEpD,SAAQC,cAAc,QAAO,4CAA2C;AACxE,SAAQC,UAAU,QAAO,8BAA6B;AAEtD,OAAO,eAAeC;IACpB,MAAMH,oBAAoB;QAACC;QAAgBC;IAAU;AACvD;AAEA,+CAA+C;AAC/C,IAAI,YAAYE,GAAG,KAAK,CAAC,OAAO,EAAEC,QAAQC,IAAI,CAAC,EAAE,EAAE,EAAE;IACnD,IAAI;QACF,MAAMH;QACNE,QAAQE,IAAI,CAAC;IACf,EAAE,OAAM;QACN,6CAA6C;QAC7CF,QAAQE,IAAI,CAAC;IACf;AACF"}
1
+ {"version":3,"sources":["../../../src/hooks/prerun/flushTelemetry.worker.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport {resolveConsent} from '../../actions/telemetry/resolveConsent.js'\nimport {sendEvents} from '../../services/telemetry.js'\nimport {flushTelemetryFiles} from '../../util/telemetry/flushTelemetryFiles.js'\n\nexport async function runFlushWorker() {\n await flushTelemetryFiles({resolveConsent, sendEvents})\n}\n\n// Only run if executed directly (not imported)\nif (import.meta.url === `file://${process.argv[1]}`) {\n try {\n await runFlushWorker()\n process.exit(0)\n } catch {\n // Silently exit - don't block parent process\n process.exit(1)\n }\n}\n"],"names":["resolveConsent","sendEvents","flushTelemetryFiles","runFlushWorker","url","process","argv","exit"],"mappings":";AAEA,SAAQA,cAAc,QAAO,4CAA2C;AACxE,SAAQC,UAAU,QAAO,8BAA6B;AACtD,SAAQC,mBAAmB,QAAO,8CAA6C;AAE/E,OAAO,eAAeC;IACpB,MAAMD,oBAAoB;QAACF;QAAgBC;IAAU;AACvD;AAEA,+CAA+C;AAC/C,IAAI,YAAYG,GAAG,KAAK,CAAC,OAAO,EAAEC,QAAQC,IAAI,CAAC,EAAE,EAAE,EAAE;IACnD,IAAI;QACF,MAAMH;QACNE,QAAQE,IAAI,CAAC;IACf,EAAE,OAAM;QACN,6CAA6C;QAC7CF,QAAQE,IAAI,CAAC;IACf;AACF"}
@@ -4,7 +4,15 @@ import { debug, findProjectRoot } from '@sanity/cli-core';
4
4
  import { loadEnv } from 'vite';
5
5
  import { getSanityEnv } from '../../util/getSanityEnv.js';
6
6
  export const injectEnvVariables = async function({ Command }) {
7
- const workDir = await findProjectRoot(process.cwd());
7
+ let workDir;
8
+ try {
9
+ workDir = await findProjectRoot(process.cwd());
10
+ } catch {
11
+ // Accept not finding a project root
12
+ }
13
+ if (!workDir) {
14
+ return;
15
+ }
8
16
  // Use `production` for `sanity build` / `sanity deploy`,
9
17
  // but default to `development` for everything else unless `SANITY_ACTIVE_ENV` is set
10
18
  const isProdCmd = [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/prerun/injectEnvVariables.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {type Hook} from '@oclif/core'\nimport {warn} from '@oclif/core/ux'\nimport {debug, findProjectRoot} from '@sanity/cli-core'\nimport {loadEnv} from 'vite'\n\nimport {getSanityEnv} from '../../util/getSanityEnv.js'\n\nexport const injectEnvVariables: Hook.Prerun = async function ({Command}) {\n const workDir = await findProjectRoot(process.cwd())\n\n // Use `production` for `sanity build` / `sanity deploy`,\n // but default to `development` for everything else unless `SANITY_ACTIVE_ENV` is set\n const isProdCmd = ['build', 'deploy'].includes(Command.id)\n let mode = process.env.SANITY_ACTIVE_ENV\n if (!mode && (isProdCmd || process.env.NODE_ENV === 'production')) {\n mode = 'production'\n } else if (!mode) {\n mode = 'development'\n }\n\n if (mode === 'production' && !isProdCmd) {\n warn(styleText('yellow', `Running in ${getSanityEnv()} environment mode\\n`))\n }\n\n const isApp = workDir.type === 'app'\n debug('Loading environment files using %s mode', mode)\n\n const studioEnv = loadEnv(mode, workDir.directory, [isApp ? 'SANITY_APP_' : 'SANITY_STUDIO_'])\n Object.assign(process.env, studioEnv)\n}\n"],"names":["styleText","warn","debug","findProjectRoot","loadEnv","getSanityEnv","injectEnvVariables","Command","workDir","process","cwd","isProdCmd","includes","id","mode","env","SANITY_ACTIVE_ENV","NODE_ENV","isApp","type","studioEnv","directory","Object","assign"],"mappings":"AAAA,SAAQA,SAAS,QAAO,YAAW;AAGnC,SAAQC,IAAI,QAAO,iBAAgB;AACnC,SAAQC,KAAK,EAAEC,eAAe,QAAO,mBAAkB;AACvD,SAAQC,OAAO,QAAO,OAAM;AAE5B,SAAQC,YAAY,QAAO,6BAA4B;AAEvD,OAAO,MAAMC,qBAAkC,eAAgB,EAACC,OAAO,EAAC;IACtE,MAAMC,UAAU,MAAML,gBAAgBM,QAAQC,GAAG;IAEjD,yDAAyD;IACzD,qFAAqF;IACrF,MAAMC,YAAY;QAAC;QAAS;KAAS,CAACC,QAAQ,CAACL,QAAQM,EAAE;IACzD,IAAIC,OAAOL,QAAQM,GAAG,CAACC,iBAAiB;IACxC,IAAI,CAACF,QAASH,CAAAA,aAAaF,QAAQM,GAAG,CAACE,QAAQ,KAAK,YAAW,GAAI;QACjEH,OAAO;IACT,OAAO,IAAI,CAACA,MAAM;QAChBA,OAAO;IACT;IAEA,IAAIA,SAAS,gBAAgB,CAACH,WAAW;QACvCV,KAAKD,UAAU,UAAU,CAAC,WAAW,EAAEK,eAAe,mBAAmB,CAAC;IAC5E;IAEA,MAAMa,QAAQV,QAAQW,IAAI,KAAK;IAC/BjB,MAAM,2CAA2CY;IAEjD,MAAMM,YAAYhB,QAAQU,MAAMN,QAAQa,SAAS,EAAE;QAACH,QAAQ,gBAAgB;KAAiB;IAC7FI,OAAOC,MAAM,CAACd,QAAQM,GAAG,EAAEK;AAC7B,EAAC"}
1
+ {"version":3,"sources":["../../../src/hooks/prerun/injectEnvVariables.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {type Hook} from '@oclif/core'\nimport {warn} from '@oclif/core/ux'\nimport {debug, findProjectRoot, type ProjectRootResult} from '@sanity/cli-core'\nimport {loadEnv} from 'vite'\n\nimport {getSanityEnv} from '../../util/getSanityEnv.js'\n\nexport const injectEnvVariables: Hook.Prerun = async function ({Command}) {\n let workDir: ProjectRootResult | undefined\n try {\n workDir = await findProjectRoot(process.cwd())\n } catch {\n // Accept not finding a project root\n }\n\n if (!workDir) {\n return\n }\n\n // Use `production` for `sanity build` / `sanity deploy`,\n // but default to `development` for everything else unless `SANITY_ACTIVE_ENV` is set\n const isProdCmd = ['build', 'deploy'].includes(Command.id)\n let mode = process.env.SANITY_ACTIVE_ENV\n if (!mode && (isProdCmd || process.env.NODE_ENV === 'production')) {\n mode = 'production'\n } else if (!mode) {\n mode = 'development'\n }\n\n if (mode === 'production' && !isProdCmd) {\n warn(styleText('yellow', `Running in ${getSanityEnv()} environment mode\\n`))\n }\n\n const isApp = workDir.type === 'app'\n debug('Loading environment files using %s mode', mode)\n\n const studioEnv = loadEnv(mode, workDir.directory, [isApp ? 'SANITY_APP_' : 'SANITY_STUDIO_'])\n Object.assign(process.env, studioEnv)\n}\n"],"names":["styleText","warn","debug","findProjectRoot","loadEnv","getSanityEnv","injectEnvVariables","Command","workDir","process","cwd","isProdCmd","includes","id","mode","env","SANITY_ACTIVE_ENV","NODE_ENV","isApp","type","studioEnv","directory","Object","assign"],"mappings":"AAAA,SAAQA,SAAS,QAAO,YAAW;AAGnC,SAAQC,IAAI,QAAO,iBAAgB;AACnC,SAAQC,KAAK,EAAEC,eAAe,QAA+B,mBAAkB;AAC/E,SAAQC,OAAO,QAAO,OAAM;AAE5B,SAAQC,YAAY,QAAO,6BAA4B;AAEvD,OAAO,MAAMC,qBAAkC,eAAgB,EAACC,OAAO,EAAC;IACtE,IAAIC;IACJ,IAAI;QACFA,UAAU,MAAML,gBAAgBM,QAAQC,GAAG;IAC7C,EAAE,OAAM;IACN,oCAAoC;IACtC;IAEA,IAAI,CAACF,SAAS;QACZ;IACF;IAEA,yDAAyD;IACzD,qFAAqF;IACrF,MAAMG,YAAY;QAAC;QAAS;KAAS,CAACC,QAAQ,CAACL,QAAQM,EAAE;IACzD,IAAIC,OAAOL,QAAQM,GAAG,CAACC,iBAAiB;IACxC,IAAI,CAACF,QAASH,CAAAA,aAAaF,QAAQM,GAAG,CAACE,QAAQ,KAAK,YAAW,GAAI;QACjEH,OAAO;IACT,OAAO,IAAI,CAACA,MAAM;QAChBA,OAAO;IACT;IAEA,IAAIA,SAAS,gBAAgB,CAACH,WAAW;QACvCV,KAAKD,UAAU,UAAU,CAAC,WAAW,EAAEK,eAAe,mBAAmB,CAAC;IAC5E;IAEA,MAAMa,QAAQV,QAAQW,IAAI,KAAK;IAC/BjB,MAAM,2CAA2CY;IAEjD,MAAMM,YAAYhB,QAAQU,MAAMN,QAAQa,SAAS,EAAE;QAACH,QAAQ,gBAAgB;KAAiB;IAC7FI,OAAOC,MAAM,CAACd,QAAQM,GAAG,EAAEK;AAC7B,EAAC"}
@@ -1,6 +1,6 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { fileURLToPath } from 'node:url';
3
- import { createTelemetryStore, debug, findProjectRoot, getCliConfig, setCliTelemetry } from '@sanity/cli-core';
3
+ import { debug, findProjectRoot, getCliConfig, setCliTelemetry } from '@sanity/cli-core';
4
4
  import { createSessionId } from '@sanity/telemetry';
5
5
  import { resolveConsent } from '../../actions/telemetry/resolveConsent.js';
6
6
  import { telemetryDebug } from '../../actions/telemetry/telemetryDebug.js';
@@ -8,6 +8,7 @@ import { telemetryDisclosure } from '../../actions/telemetry/telemetryDisclosure
8
8
  import { CliCommandTelemetry } from '../../telemetry/cli.telemetry.js';
9
9
  import { detectRuntime } from '../../util/detectRuntime.js';
10
10
  import { parseArguments } from '../../util/parseArguments.js';
11
+ import { createTelemetryStore } from '../../util/telemetry/createTelemetryStore.js';
11
12
  export const setupTelemetry = async function({ config }) {
12
13
  // Show telemetry disclosure
13
14
  telemetryDisclosure();
@@ -15,8 +16,13 @@ export const setupTelemetry = async function({ config }) {
15
16
  const telemetry = createTelemetryStore(sessionId, {
16
17
  resolveConsent
17
18
  });
18
- const projectRoot = await findProjectRoot(process.cwd());
19
- const cliConfig = await getCliConfig(projectRoot.directory);
19
+ let cliConfig;
20
+ try {
21
+ const projectRoot = await findProjectRoot(process.cwd());
22
+ cliConfig = await getCliConfig(projectRoot.directory);
23
+ } catch {
24
+ // Accept not finding a project root and/or CLI config
25
+ }
20
26
  telemetry.updateUserProperties({
21
27
  cliVersion: config.version,
22
28
  cpuArchitecture: process.arch,
@@ -40,16 +46,16 @@ export const setupTelemetry = async function({ config }) {
40
46
  telemetryDebug('Starting command trace', traceOptions);
41
47
  const cliCommandTrace = telemetry.trace(CliCommandTelemetry, traceOptions);
42
48
  cliCommandTrace.start();
43
- // Set the global telemetry store with new context
44
- setCliTelemetry(cliCommandTrace.newContext(args.groupOrCommand));
45
- // Handle process exit - complete trace and spawn worker to flush all telemetry
49
+ // Set the global telemetry store and trace error reporter
50
+ setCliTelemetry(cliCommandTrace.newContext(args.groupOrCommand), {
51
+ reportTraceError: (error)=>cliCommandTrace.error(error)
52
+ });
53
+ // Handle process exit - complete trace on success, spawn worker to flush telemetry.
54
+ // On non-zero exit, the trace is either already errored (from SanityCommand.catch)
55
+ // or it was a user abort (SIGINT/ctrl+c) — left incomplete, matching old CLI behavior.
46
56
  process.once('exit', (status)=>{
47
57
  if (status === 0) {
48
58
  cliCommandTrace.complete();
49
- } else {
50
- // TODO: Properly handle errors
51
- // https://oclif.io/docs/error_handling/#error-handling-in-the-catch-method
52
- cliCommandTrace.error(new Error('Process exited with status ' + status));
53
59
  }
54
60
  const workerPath = fileURLToPath(new URL('flushTelemetry.worker.js', import.meta.url));
55
61
  telemetryDebug(`Spawning "${process.execPath} ${workerPath}"`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/prerun/setupTelemetry.ts"],"sourcesContent":["import {spawn} from 'node:child_process'\nimport {fileURLToPath} from 'node:url'\n\nimport {type Hook} from '@oclif/core'\nimport {\n createTelemetryStore,\n debug,\n findProjectRoot,\n getCliConfig,\n setCliTelemetry,\n} from '@sanity/cli-core'\nimport {createSessionId} from '@sanity/telemetry'\n\nimport {resolveConsent} from '../../actions/telemetry/resolveConsent.js'\nimport {telemetryDebug} from '../../actions/telemetry/telemetryDebug.js'\nimport {telemetryDisclosure} from '../../actions/telemetry/telemetryDisclosure.js'\nimport {CliCommandTelemetry, type CLITraceData} from '../../telemetry/cli.telemetry.js'\nimport {detectRuntime} from '../../util/detectRuntime.js'\nimport {parseArguments} from '../../util/parseArguments.js'\n\nexport const setupTelemetry: Hook.Prerun = async function ({config}) {\n // Show telemetry disclosure\n telemetryDisclosure()\n\n const sessionId = createSessionId()\n\n const telemetry = createTelemetryStore(sessionId, {\n resolveConsent,\n })\n\n const projectRoot = await findProjectRoot(process.cwd())\n const cliConfig = await getCliConfig(projectRoot.directory)\n\n telemetry.updateUserProperties({\n cliVersion: config.version,\n cpuArchitecture: process.arch,\n dataset: cliConfig?.api?.dataset,\n machinePlatform: process.platform,\n projectId: cliConfig?.api?.projectId,\n runtime: detectRuntime(),\n runtimeVersion: process.version,\n })\n\n const args = parseArguments()\n\n const traceOptions: CLITraceData = {\n commandArguments: args.argsWithoutOptions,\n coreOptions: {\n debug: args.coreOptions.debug ?? undefined,\n help: args.coreOptions.help ?? undefined,\n version: args.coreOptions.version ?? undefined,\n },\n extraArguments: args.extraArguments,\n groupOrCommand: args.groupOrCommand,\n }\n\n telemetryDebug('Starting command trace', traceOptions)\n\n const cliCommandTrace = telemetry.trace(CliCommandTelemetry, traceOptions)\n cliCommandTrace.start()\n\n // Set the global telemetry store with new context\n setCliTelemetry(cliCommandTrace.newContext(args.groupOrCommand))\n\n // Handle process exit - complete trace and spawn worker to flush all telemetry\n process.once('exit', (status) => {\n if (status === 0) {\n cliCommandTrace.complete()\n } else {\n // TODO: Properly handle errors\n // https://oclif.io/docs/error_handling/#error-handling-in-the-catch-method\n cliCommandTrace.error(new Error('Process exited with status ' + status))\n }\n\n const workerPath = fileURLToPath(new URL('flushTelemetry.worker.js', import.meta.url))\n telemetryDebug(`Spawning \"${process.execPath} ${workerPath}\"`)\n\n // Spawn detached worker to flush all telemetry files\n // unref will ensure the child process can keep doing work even after the parent process exits\n spawn(process.execPath, [workerPath], {\n detached: true,\n env: {\n ...process.env,\n SANITY_TELEMETRY_PROJECT_ID: cliConfig?.api?.projectId || '',\n },\n // If debug is enabled, spawn the worker with stdio inherit to see the output\n stdio: debug.enabled ? 'inherit' : 'ignore',\n }).unref()\n })\n}\n"],"names":["spawn","fileURLToPath","createTelemetryStore","debug","findProjectRoot","getCliConfig","setCliTelemetry","createSessionId","resolveConsent","telemetryDebug","telemetryDisclosure","CliCommandTelemetry","detectRuntime","parseArguments","setupTelemetry","config","sessionId","telemetry","projectRoot","process","cwd","cliConfig","directory","updateUserProperties","cliVersion","version","cpuArchitecture","arch","dataset","api","machinePlatform","platform","projectId","runtime","runtimeVersion","args","traceOptions","commandArguments","argsWithoutOptions","coreOptions","undefined","help","extraArguments","groupOrCommand","cliCommandTrace","trace","start","newContext","once","status","complete","error","Error","workerPath","URL","url","execPath","detached","env","SANITY_TELEMETRY_PROJECT_ID","stdio","enabled","unref"],"mappings":"AAAA,SAAQA,KAAK,QAAO,qBAAoB;AACxC,SAAQC,aAAa,QAAO,WAAU;AAGtC,SACEC,oBAAoB,EACpBC,KAAK,EACLC,eAAe,EACfC,YAAY,EACZC,eAAe,QACV,mBAAkB;AACzB,SAAQC,eAAe,QAAO,oBAAmB;AAEjD,SAAQC,cAAc,QAAO,4CAA2C;AACxE,SAAQC,cAAc,QAAO,4CAA2C;AACxE,SAAQC,mBAAmB,QAAO,iDAAgD;AAClF,SAAQC,mBAAmB,QAA0B,mCAAkC;AACvF,SAAQC,aAAa,QAAO,8BAA6B;AACzD,SAAQC,cAAc,QAAO,+BAA8B;AAE3D,OAAO,MAAMC,iBAA8B,eAAgB,EAACC,MAAM,EAAC;IACjE,4BAA4B;IAC5BL;IAEA,MAAMM,YAAYT;IAElB,MAAMU,YAAYf,qBAAqBc,WAAW;QAChDR;IACF;IAEA,MAAMU,cAAc,MAAMd,gBAAgBe,QAAQC,GAAG;IACrD,MAAMC,YAAY,MAAMhB,aAAaa,YAAYI,SAAS;IAE1DL,UAAUM,oBAAoB,CAAC;QAC7BC,YAAYT,OAAOU,OAAO;QAC1BC,iBAAiBP,QAAQQ,IAAI;QAC7BC,SAASP,WAAWQ,KAAKD;QACzBE,iBAAiBX,QAAQY,QAAQ;QACjCC,WAAWX,WAAWQ,KAAKG;QAC3BC,SAASrB;QACTsB,gBAAgBf,QAAQM,OAAO;IACjC;IAEA,MAAMU,OAAOtB;IAEb,MAAMuB,eAA6B;QACjCC,kBAAkBF,KAAKG,kBAAkB;QACzCC,aAAa;YACXpC,OAAOgC,KAAKI,WAAW,CAACpC,KAAK,IAAIqC;YACjCC,MAAMN,KAAKI,WAAW,CAACE,IAAI,IAAID;YAC/Bf,SAASU,KAAKI,WAAW,CAACd,OAAO,IAAIe;QACvC;QACAE,gBAAgBP,KAAKO,cAAc;QACnCC,gBAAgBR,KAAKQ,cAAc;IACrC;IAEAlC,eAAe,0BAA0B2B;IAEzC,MAAMQ,kBAAkB3B,UAAU4B,KAAK,CAAClC,qBAAqByB;IAC7DQ,gBAAgBE,KAAK;IAErB,kDAAkD;IAClDxC,gBAAgBsC,gBAAgBG,UAAU,CAACZ,KAAKQ,cAAc;IAE9D,+EAA+E;IAC/ExB,QAAQ6B,IAAI,CAAC,QAAQ,CAACC;QACpB,IAAIA,WAAW,GAAG;YAChBL,gBAAgBM,QAAQ;QAC1B,OAAO;YACL,+BAA+B;YAC/B,2EAA2E;YAC3EN,gBAAgBO,KAAK,CAAC,IAAIC,MAAM,gCAAgCH;QAClE;QAEA,MAAMI,aAAapD,cAAc,IAAIqD,IAAI,4BAA4B,YAAYC,GAAG;QACpF9C,eAAe,CAAC,UAAU,EAAEU,QAAQqC,QAAQ,CAAC,CAAC,EAAEH,WAAW,CAAC,CAAC;QAE7D,qDAAqD;QACrD,8FAA8F;QAC9FrD,MAAMmB,QAAQqC,QAAQ,EAAE;YAACH;SAAW,EAAE;YACpCI,UAAU;YACVC,KAAK;gBACH,GAAGvC,QAAQuC,GAAG;gBACdC,6BAA6BtC,WAAWQ,KAAKG,aAAa;YAC5D;YACA,6EAA6E;YAC7E4B,OAAOzD,MAAM0D,OAAO,GAAG,YAAY;QACrC,GAAGC,KAAK;IACV;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/hooks/prerun/setupTelemetry.ts"],"sourcesContent":["import {spawn} from 'node:child_process'\nimport {fileURLToPath} from 'node:url'\n\nimport {type Hook} from '@oclif/core'\nimport {\n type CliConfig,\n debug,\n findProjectRoot,\n getCliConfig,\n setCliTelemetry,\n} from '@sanity/cli-core'\nimport {createSessionId} from '@sanity/telemetry'\n\nimport {resolveConsent} from '../../actions/telemetry/resolveConsent.js'\nimport {telemetryDebug} from '../../actions/telemetry/telemetryDebug.js'\nimport {telemetryDisclosure} from '../../actions/telemetry/telemetryDisclosure.js'\nimport {CliCommandTelemetry, type CLITraceData} from '../../telemetry/cli.telemetry.js'\nimport {detectRuntime} from '../../util/detectRuntime.js'\nimport {parseArguments} from '../../util/parseArguments.js'\nimport {createTelemetryStore} from '../../util/telemetry/createTelemetryStore.js'\n\nexport const setupTelemetry: Hook.Prerun = async function ({config}) {\n // Show telemetry disclosure\n telemetryDisclosure()\n\n const sessionId = createSessionId()\n\n const telemetry = createTelemetryStore(sessionId, {\n resolveConsent,\n })\n\n let cliConfig: CliConfig | undefined\n try {\n const projectRoot = await findProjectRoot(process.cwd())\n cliConfig = await getCliConfig(projectRoot.directory)\n } catch {\n // Accept not finding a project root and/or CLI config\n }\n\n telemetry.updateUserProperties({\n cliVersion: config.version,\n cpuArchitecture: process.arch,\n dataset: cliConfig?.api?.dataset,\n machinePlatform: process.platform,\n projectId: cliConfig?.api?.projectId,\n runtime: detectRuntime(),\n runtimeVersion: process.version,\n })\n\n const args = parseArguments()\n\n const traceOptions: CLITraceData = {\n commandArguments: args.argsWithoutOptions,\n coreOptions: {\n debug: args.coreOptions.debug ?? undefined,\n help: args.coreOptions.help ?? undefined,\n version: args.coreOptions.version ?? undefined,\n },\n extraArguments: args.extraArguments,\n groupOrCommand: args.groupOrCommand,\n }\n\n telemetryDebug('Starting command trace', traceOptions)\n\n const cliCommandTrace = telemetry.trace(CliCommandTelemetry, traceOptions)\n cliCommandTrace.start()\n\n // Set the global telemetry store and trace error reporter\n setCliTelemetry(cliCommandTrace.newContext(args.groupOrCommand), {\n reportTraceError: (error) => cliCommandTrace.error(error),\n })\n\n // Handle process exit - complete trace on success, spawn worker to flush telemetry.\n // On non-zero exit, the trace is either already errored (from SanityCommand.catch)\n // or it was a user abort (SIGINT/ctrl+c) — left incomplete, matching old CLI behavior.\n process.once('exit', (status) => {\n if (status === 0) {\n cliCommandTrace.complete()\n }\n\n const workerPath = fileURLToPath(new URL('flushTelemetry.worker.js', import.meta.url))\n telemetryDebug(`Spawning \"${process.execPath} ${workerPath}\"`)\n\n // Spawn detached worker to flush all telemetry files\n // unref will ensure the child process can keep doing work even after the parent process exits\n spawn(process.execPath, [workerPath], {\n detached: true,\n env: {\n ...process.env,\n SANITY_TELEMETRY_PROJECT_ID: cliConfig?.api?.projectId || '',\n },\n // If debug is enabled, spawn the worker with stdio inherit to see the output\n stdio: debug.enabled ? 'inherit' : 'ignore',\n }).unref()\n })\n}\n"],"names":["spawn","fileURLToPath","debug","findProjectRoot","getCliConfig","setCliTelemetry","createSessionId","resolveConsent","telemetryDebug","telemetryDisclosure","CliCommandTelemetry","detectRuntime","parseArguments","createTelemetryStore","setupTelemetry","config","sessionId","telemetry","cliConfig","projectRoot","process","cwd","directory","updateUserProperties","cliVersion","version","cpuArchitecture","arch","dataset","api","machinePlatform","platform","projectId","runtime","runtimeVersion","args","traceOptions","commandArguments","argsWithoutOptions","coreOptions","undefined","help","extraArguments","groupOrCommand","cliCommandTrace","trace","start","newContext","reportTraceError","error","once","status","complete","workerPath","URL","url","execPath","detached","env","SANITY_TELEMETRY_PROJECT_ID","stdio","enabled","unref"],"mappings":"AAAA,SAAQA,KAAK,QAAO,qBAAoB;AACxC,SAAQC,aAAa,QAAO,WAAU;AAGtC,SAEEC,KAAK,EACLC,eAAe,EACfC,YAAY,EACZC,eAAe,QACV,mBAAkB;AACzB,SAAQC,eAAe,QAAO,oBAAmB;AAEjD,SAAQC,cAAc,QAAO,4CAA2C;AACxE,SAAQC,cAAc,QAAO,4CAA2C;AACxE,SAAQC,mBAAmB,QAAO,iDAAgD;AAClF,SAAQC,mBAAmB,QAA0B,mCAAkC;AACvF,SAAQC,aAAa,QAAO,8BAA6B;AACzD,SAAQC,cAAc,QAAO,+BAA8B;AAC3D,SAAQC,oBAAoB,QAAO,+CAA8C;AAEjF,OAAO,MAAMC,iBAA8B,eAAgB,EAACC,MAAM,EAAC;IACjE,4BAA4B;IAC5BN;IAEA,MAAMO,YAAYV;IAElB,MAAMW,YAAYJ,qBAAqBG,WAAW;QAChDT;IACF;IAEA,IAAIW;IACJ,IAAI;QACF,MAAMC,cAAc,MAAMhB,gBAAgBiB,QAAQC,GAAG;QACrDH,YAAY,MAAMd,aAAae,YAAYG,SAAS;IACtD,EAAE,OAAM;IACN,sDAAsD;IACxD;IAEAL,UAAUM,oBAAoB,CAAC;QAC7BC,YAAYT,OAAOU,OAAO;QAC1BC,iBAAiBN,QAAQO,IAAI;QAC7BC,SAASV,WAAWW,KAAKD;QACzBE,iBAAiBV,QAAQW,QAAQ;QACjCC,WAAWd,WAAWW,KAAKG;QAC3BC,SAAStB;QACTuB,gBAAgBd,QAAQK,OAAO;IACjC;IAEA,MAAMU,OAAOvB;IAEb,MAAMwB,eAA6B;QACjCC,kBAAkBF,KAAKG,kBAAkB;QACzCC,aAAa;YACXrC,OAAOiC,KAAKI,WAAW,CAACrC,KAAK,IAAIsC;YACjCC,MAAMN,KAAKI,WAAW,CAACE,IAAI,IAAID;YAC/Bf,SAASU,KAAKI,WAAW,CAACd,OAAO,IAAIe;QACvC;QACAE,gBAAgBP,KAAKO,cAAc;QACnCC,gBAAgBR,KAAKQ,cAAc;IACrC;IAEAnC,eAAe,0BAA0B4B;IAEzC,MAAMQ,kBAAkB3B,UAAU4B,KAAK,CAACnC,qBAAqB0B;IAC7DQ,gBAAgBE,KAAK;IAErB,0DAA0D;IAC1DzC,gBAAgBuC,gBAAgBG,UAAU,CAACZ,KAAKQ,cAAc,GAAG;QAC/DK,kBAAkB,CAACC,QAAUL,gBAAgBK,KAAK,CAACA;IACrD;IAEA,oFAAoF;IACpF,mFAAmF;IACnF,uFAAuF;IACvF7B,QAAQ8B,IAAI,CAAC,QAAQ,CAACC;QACpB,IAAIA,WAAW,GAAG;YAChBP,gBAAgBQ,QAAQ;QAC1B;QAEA,MAAMC,aAAapD,cAAc,IAAIqD,IAAI,4BAA4B,YAAYC,GAAG;QACpF/C,eAAe,CAAC,UAAU,EAAEY,QAAQoC,QAAQ,CAAC,CAAC,EAAEH,WAAW,CAAC,CAAC;QAE7D,qDAAqD;QACrD,8FAA8F;QAC9FrD,MAAMoB,QAAQoC,QAAQ,EAAE;YAACH;SAAW,EAAE;YACpCI,UAAU;YACVC,KAAK;gBACH,GAAGtC,QAAQsC,GAAG;gBACdC,6BAA6BzC,WAAWW,KAAKG,aAAa;YAC5D;YACA,6EAA6E;YAC7E4B,OAAO1D,MAAM2D,OAAO,GAAG,YAAY;QACrC,GAAGC,KAAK;IACV;AACF,EAAC"}
@@ -0,0 +1,64 @@
1
+ import { isInteractive, NonInteractiveError, subdebug } from '@sanity/cli-core';
2
+ import { select, Separator, spinner } from '@sanity/cli-core/ux';
3
+ import { getUserGrants } from '../services/grants.js';
4
+ import { listProjects } from '../services/projects.js';
5
+ import { getProjectsWithPermissions } from '../util/checkProjectPermissions.js';
6
+ const debug = subdebug('prompt:project');
7
+ /**
8
+ * Prompt the user to select a project from their available projects.
9
+ *
10
+ * When `requiredPermissions` is provided, projects are filtered by grants:
11
+ * only permitted projects are shown as selectable, with a single disabled
12
+ * summary item indicating how many projects were hidden due to insufficient permissions.
13
+ */ export async function promptForProject(options = {}) {
14
+ if (!isInteractive()) {
15
+ throw new NonInteractiveError('select');
16
+ }
17
+ const { requiredPermissions } = options;
18
+ debug('Fetching projects and grants');
19
+ const spin = spinner('Fetching available projects').start();
20
+ const [projects, grants] = await Promise.all([
21
+ listProjects(),
22
+ requiredPermissions ? getUserGrants() : undefined
23
+ ]).catch((error)=>{
24
+ spin.fail(requiredPermissions ? 'Failed to fetch projects or permissions' : 'Failed to fetch projects');
25
+ throw error;
26
+ });
27
+ if (projects.length === 0) {
28
+ spin.fail('No projects found');
29
+ throw new Error('No projects found. Create a project at https://www.sanity.io/manage');
30
+ }
31
+ spin.succeed();
32
+ const permittedIds = grants && requiredPermissions ? getProjectsWithPermissions(grants, requiredPermissions) : undefined;
33
+ const sorted = projects.toSorted((a, b)=>b.createdAt.localeCompare(a.createdAt));
34
+ const choices = [];
35
+ let insufficientCount = 0;
36
+ for (const project of sorted){
37
+ const label = `${project.displayName} (${project.id})`;
38
+ if (permittedIds && !permittedIds.has(project.id)) {
39
+ insufficientCount++;
40
+ } else {
41
+ choices.push({
42
+ name: label,
43
+ value: project.id
44
+ });
45
+ }
46
+ }
47
+ if (insufficientCount > 0) {
48
+ if (choices.length === 0) {
49
+ throw new Error('None of your projects have sufficient permissions for this operation');
50
+ }
51
+ const suffix = insufficientCount === 1 ? 'project' : 'projects';
52
+ choices.push(new Separator(), {
53
+ disabled: '(insufficient permissions)',
54
+ name: `${insufficientCount} other ${suffix} hidden`,
55
+ value: ''
56
+ });
57
+ }
58
+ return select({
59
+ choices,
60
+ message: 'Select project'
61
+ });
62
+ }
63
+
64
+ //# sourceMappingURL=promptForProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/prompts/promptForProject.ts"],"sourcesContent":["import {isInteractive, NonInteractiveError, subdebug} from '@sanity/cli-core'\nimport {select, Separator, spinner} from '@sanity/cli-core/ux'\n\nimport {getUserGrants} from '../services/grants.js'\nimport {listProjects} from '../services/projects.js'\nimport {type RequiredPermission} from '../types/grants.js'\nimport {getProjectsWithPermissions} from '../util/checkProjectPermissions.js'\n\nconst debug = subdebug('prompt:project')\n\ninterface PromptForProjectOptions {\n requiredPermissions?: RequiredPermission[]\n}\n\n/**\n * Prompt the user to select a project from their available projects.\n *\n * When `requiredPermissions` is provided, projects are filtered by grants:\n * only permitted projects are shown as selectable, with a single disabled\n * summary item indicating how many projects were hidden due to insufficient permissions.\n */\nexport async function promptForProject(options: PromptForProjectOptions = {}): Promise<string> {\n if (!isInteractive()) {\n throw new NonInteractiveError('select')\n }\n\n const {requiredPermissions} = options\n\n debug('Fetching projects and grants')\n const spin = spinner('Fetching available projects').start()\n\n const [projects, grants] = await Promise.all([\n listProjects(),\n requiredPermissions ? getUserGrants() : undefined,\n ]).catch((error) => {\n spin.fail(\n requiredPermissions ? 'Failed to fetch projects or permissions' : 'Failed to fetch projects',\n )\n throw error\n })\n\n if (projects.length === 0) {\n spin.fail('No projects found')\n throw new Error('No projects found. Create a project at https://www.sanity.io/manage')\n }\n\n spin.succeed()\n\n const permittedIds =\n grants && requiredPermissions\n ? getProjectsWithPermissions(grants, requiredPermissions)\n : undefined\n\n const sorted = projects.toSorted((a, b) => b.createdAt.localeCompare(a.createdAt))\n\n const choices: Array<Separator | {disabled?: string; name: string; value: string}> = []\n let insufficientCount = 0\n\n for (const project of sorted) {\n const label = `${project.displayName} (${project.id})`\n if (permittedIds && !permittedIds.has(project.id)) {\n insufficientCount++\n } else {\n choices.push({name: label, value: project.id})\n }\n }\n\n if (insufficientCount > 0) {\n if (choices.length === 0) {\n throw new Error('None of your projects have sufficient permissions for this operation')\n }\n\n const suffix = insufficientCount === 1 ? 'project' : 'projects'\n choices.push(new Separator(), {\n disabled: '(insufficient permissions)',\n name: `${insufficientCount} other ${suffix} hidden`,\n value: '',\n })\n }\n\n return select({\n choices,\n message: 'Select project',\n })\n}\n"],"names":["isInteractive","NonInteractiveError","subdebug","select","Separator","spinner","getUserGrants","listProjects","getProjectsWithPermissions","debug","promptForProject","options","requiredPermissions","spin","start","projects","grants","Promise","all","undefined","catch","error","fail","length","Error","succeed","permittedIds","sorted","toSorted","a","b","createdAt","localeCompare","choices","insufficientCount","project","label","displayName","id","has","push","name","value","suffix","disabled","message"],"mappings":"AAAA,SAAQA,aAAa,EAAEC,mBAAmB,EAAEC,QAAQ,QAAO,mBAAkB;AAC7E,SAAQC,MAAM,EAAEC,SAAS,EAAEC,OAAO,QAAO,sBAAqB;AAE9D,SAAQC,aAAa,QAAO,wBAAuB;AACnD,SAAQC,YAAY,QAAO,0BAAyB;AAEpD,SAAQC,0BAA0B,QAAO,qCAAoC;AAE7E,MAAMC,QAAQP,SAAS;AAMvB;;;;;;CAMC,GACD,OAAO,eAAeQ,iBAAiBC,UAAmC,CAAC,CAAC;IAC1E,IAAI,CAACX,iBAAiB;QACpB,MAAM,IAAIC,oBAAoB;IAChC;IAEA,MAAM,EAACW,mBAAmB,EAAC,GAAGD;IAE9BF,MAAM;IACN,MAAMI,OAAOR,QAAQ,+BAA+BS,KAAK;IAEzD,MAAM,CAACC,UAAUC,OAAO,GAAG,MAAMC,QAAQC,GAAG,CAAC;QAC3CX;QACAK,sBAAsBN,kBAAkBa;KACzC,EAAEC,KAAK,CAAC,CAACC;QACRR,KAAKS,IAAI,CACPV,sBAAsB,4CAA4C;QAEpE,MAAMS;IACR;IAEA,IAAIN,SAASQ,MAAM,KAAK,GAAG;QACzBV,KAAKS,IAAI,CAAC;QACV,MAAM,IAAIE,MAAM;IAClB;IAEAX,KAAKY,OAAO;IAEZ,MAAMC,eACJV,UAAUJ,sBACNJ,2BAA2BQ,QAAQJ,uBACnCO;IAEN,MAAMQ,SAASZ,SAASa,QAAQ,CAAC,CAACC,GAAGC,IAAMA,EAAEC,SAAS,CAACC,aAAa,CAACH,EAAEE,SAAS;IAEhF,MAAME,UAA+E,EAAE;IACvF,IAAIC,oBAAoB;IAExB,KAAK,MAAMC,WAAWR,OAAQ;QAC5B,MAAMS,QAAQ,GAAGD,QAAQE,WAAW,CAAC,EAAE,EAAEF,QAAQG,EAAE,CAAC,CAAC,CAAC;QACtD,IAAIZ,gBAAgB,CAACA,aAAaa,GAAG,CAACJ,QAAQG,EAAE,GAAG;YACjDJ;QACF,OAAO;YACLD,QAAQO,IAAI,CAAC;gBAACC,MAAML;gBAAOM,OAAOP,QAAQG,EAAE;YAAA;QAC9C;IACF;IAEA,IAAIJ,oBAAoB,GAAG;QACzB,IAAID,QAAQV,MAAM,KAAK,GAAG;YACxB,MAAM,IAAIC,MAAM;QAClB;QAEA,MAAMmB,SAAST,sBAAsB,IAAI,YAAY;QACrDD,QAAQO,IAAI,CAAC,IAAIpC,aAAa;YAC5BwC,UAAU;YACVH,MAAM,GAAGP,kBAAkB,OAAO,EAAES,OAAO,OAAO,CAAC;YACnDD,OAAO;QACT;IACF;IAEA,OAAOvC,OAAO;QACZ8B;QACAY,SAAS;IACX;AACF"}
@@ -6,7 +6,7 @@ import { select } from '@sanity/cli-core/ux';
6
6
  * @param providers - The list of login providers
7
7
  * @returns The selected login provider
8
8
  * @internal
9
- */ export async function promptProviders(providers) {
9
+ */ export async function promptForProviders(providers) {
10
10
  if (providers.length === 1) {
11
11
  return providers[0];
12
12
  }
@@ -17,7 +17,7 @@ import { select } from '@sanity/cli-core/ux';
17
17
  })),
18
18
  message: 'Please log in or create a new account'
19
19
  });
20
- return provider || providers[0];
20
+ return provider;
21
21
  }
22
22
 
23
- //# sourceMappingURL=promptProviders.js.map
23
+ //# sourceMappingURL=promptForProviders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/prompts/promptForProviders.ts"],"sourcesContent":["import {select} from '@sanity/cli-core/ux'\n\nimport {type LoginProvider} from '../actions/auth/types.js'\n\n/**\n * Prompts the user to select a provider from the given list of providers,\n * or if only one provider is available, returns that provider.\n *\n * @param providers - The list of login providers\n * @returns The selected login provider\n * @internal\n */\nexport async function promptForProviders(providers: LoginProvider[]): Promise<LoginProvider> {\n if (providers.length === 1) {\n return providers[0]\n }\n\n const provider = await select({\n choices: providers.map((choice) => ({name: choice.title, value: choice})),\n message: 'Please log in or create a new account',\n })\n\n return provider\n}\n"],"names":["select","promptForProviders","providers","length","provider","choices","map","choice","name","title","value","message"],"mappings":"AAAA,SAAQA,MAAM,QAAO,sBAAqB;AAI1C;;;;;;;CAOC,GACD,OAAO,eAAeC,mBAAmBC,SAA0B;IACjE,IAAIA,UAAUC,MAAM,KAAK,GAAG;QAC1B,OAAOD,SAAS,CAAC,EAAE;IACrB;IAEA,MAAME,WAAW,MAAMJ,OAAO;QAC5BK,SAASH,UAAUI,GAAG,CAAC,CAACC,SAAY,CAAA;gBAACC,MAAMD,OAAOE,KAAK;gBAAEC,OAAOH;YAAM,CAAA;QACtEI,SAAS;IACX;IAEA,OAAOP;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { subdebug } from '@sanity/cli-core';
2
2
  import { select, Separator, spinner } from '@sanity/cli-core/ux';
3
- import { groupBy } from 'lodash-es';
3
+ import groupBy from 'lodash-es/groupBy.js';
4
4
  import { getMediaLibraries } from '../services/mediaLibraries.js';
5
5
  const debug = subdebug('media:determine-target-library');
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/prompts/selectMediaLibrary.ts"],"sourcesContent":["import {subdebug} from '@sanity/cli-core'\nimport {select, Separator, spinner} from '@sanity/cli-core/ux'\nimport {groupBy} from 'lodash-es'\n\nimport {getMediaLibraries} from '../services/mediaLibraries.js'\n\nconst debug = subdebug('media:determine-target-library')\n\n/**\n * Fetch a list of available media libraries and present them to the user in a list prompt. The items\n * in the list prompt are grouped by organization id.\n */\nexport async function selectMediaLibrary(projectId: string): Promise<string> {\n debug('Fetching available media libraries')\n const spin = spinner('Fetching available media libraries').start()\n\n try {\n const activeLibraries = await getMediaLibraries(projectId)\n\n const byOrg = groupBy(activeLibraries, 'organizationId')\n\n spin.succeed()\n\n // Create flat choices array with separators\n const choices: Array<Separator | {name: string; value: string}> = []\n for (const [orgId, libs] of Object.entries(byOrg)) {\n choices.push(\n new Separator(`Organization: ${orgId}`),\n ...libs.map((lib) => ({name: lib.id, value: lib.id})),\n )\n }\n\n return select({\n choices,\n message: 'Select media library',\n })\n } catch (error) {\n spin.fail('Failed to fetch media libraries')\n throw error\n }\n}\n"],"names":["subdebug","select","Separator","spinner","groupBy","getMediaLibraries","debug","selectMediaLibrary","projectId","spin","start","activeLibraries","byOrg","succeed","choices","orgId","libs","Object","entries","push","map","lib","name","id","value","message","error","fail"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AACzC,SAAQC,MAAM,EAAEC,SAAS,EAAEC,OAAO,QAAO,sBAAqB;AAC9D,SAAQC,OAAO,QAAO,YAAW;AAEjC,SAAQC,iBAAiB,QAAO,gCAA+B;AAE/D,MAAMC,QAAQN,SAAS;AAEvB;;;CAGC,GACD,OAAO,eAAeO,mBAAmBC,SAAiB;IACxDF,MAAM;IACN,MAAMG,OAAON,QAAQ,sCAAsCO,KAAK;IAEhE,IAAI;QACF,MAAMC,kBAAkB,MAAMN,kBAAkBG;QAEhD,MAAMI,QAAQR,QAAQO,iBAAiB;QAEvCF,KAAKI,OAAO;QAEZ,4CAA4C;QAC5C,MAAMC,UAA4D,EAAE;QACpE,KAAK,MAAM,CAACC,OAAOC,KAAK,IAAIC,OAAOC,OAAO,CAACN,OAAQ;YACjDE,QAAQK,IAAI,CACV,IAAIjB,UAAU,CAAC,cAAc,EAAEa,OAAO,MACnCC,KAAKI,GAAG,CAAC,CAACC,MAAS,CAAA;oBAACC,MAAMD,IAAIE,EAAE;oBAAEC,OAAOH,IAAIE,EAAE;gBAAA,CAAA;QAEtD;QAEA,OAAOtB,OAAO;YACZa;YACAW,SAAS;QACX;IACF,EAAE,OAAOC,OAAO;QACdjB,KAAKkB,IAAI,CAAC;QACV,MAAMD;IACR;AACF"}
1
+ {"version":3,"sources":["../../src/prompts/selectMediaLibrary.ts"],"sourcesContent":["import {subdebug} from '@sanity/cli-core'\nimport {select, Separator, spinner} from '@sanity/cli-core/ux'\nimport groupBy from 'lodash-es/groupBy.js'\n\nimport {getMediaLibraries} from '../services/mediaLibraries.js'\n\nconst debug = subdebug('media:determine-target-library')\n\n/**\n * Fetch a list of available media libraries and present them to the user in a list prompt. The items\n * in the list prompt are grouped by organization id.\n */\nexport async function selectMediaLibrary(projectId: string): Promise<string> {\n debug('Fetching available media libraries')\n const spin = spinner('Fetching available media libraries').start()\n\n try {\n const activeLibraries = await getMediaLibraries(projectId)\n\n const byOrg = groupBy(activeLibraries, 'organizationId')\n\n spin.succeed()\n\n // Create flat choices array with separators\n const choices: Array<Separator | {name: string; value: string}> = []\n for (const [orgId, libs] of Object.entries(byOrg)) {\n choices.push(\n new Separator(`Organization: ${orgId}`),\n ...libs.map((lib) => ({name: lib.id, value: lib.id})),\n )\n }\n\n return select({\n choices,\n message: 'Select media library',\n })\n } catch (error) {\n spin.fail('Failed to fetch media libraries')\n throw error\n }\n}\n"],"names":["subdebug","select","Separator","spinner","groupBy","getMediaLibraries","debug","selectMediaLibrary","projectId","spin","start","activeLibraries","byOrg","succeed","choices","orgId","libs","Object","entries","push","map","lib","name","id","value","message","error","fail"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AACzC,SAAQC,MAAM,EAAEC,SAAS,EAAEC,OAAO,QAAO,sBAAqB;AAC9D,OAAOC,aAAa,uBAAsB;AAE1C,SAAQC,iBAAiB,QAAO,gCAA+B;AAE/D,MAAMC,QAAQN,SAAS;AAEvB;;;CAGC,GACD,OAAO,eAAeO,mBAAmBC,SAAiB;IACxDF,MAAM;IACN,MAAMG,OAAON,QAAQ,sCAAsCO,KAAK;IAEhE,IAAI;QACF,MAAMC,kBAAkB,MAAMN,kBAAkBG;QAEhD,MAAMI,QAAQR,QAAQO,iBAAiB;QAEvCF,KAAKI,OAAO;QAEZ,4CAA4C;QAC5C,MAAMC,UAA4D,EAAE;QACpE,KAAK,MAAM,CAACC,OAAOC,KAAK,IAAIC,OAAOC,OAAO,CAACN,OAAQ;YACjDE,QAAQK,IAAI,CACV,IAAIjB,UAAU,CAAC,cAAc,EAAEa,OAAO,MACnCC,KAAKI,GAAG,CAAC,CAACC,MAAS,CAAA;oBAACC,MAAMD,IAAIE,EAAE;oBAAEC,OAAOH,IAAIE,EAAE;gBAAA,CAAA;QAEtD;QAEA,OAAOtB,OAAO;YACZa;YACAW,SAAS;QACX;IACF,EAAE,OAAOC,OAAO;QACdjB,KAAKkB,IAAI,CAAC;QACV,MAAMD;IACR;AACF"}
@@ -4,7 +4,7 @@ import { writeSanityRuntime } from '../actions/build/writeSanityRuntime.js';
4
4
  import { serverDebug } from './serverDebug.js';
5
5
  const debug = serverDebug.extend('dev');
6
6
  export async function startDevServer(options) {
7
- const { basePath, cwd, entry, httpHost, httpPort, isApp, reactCompiler, reactStrictMode, vite: extendViteConfig } = options;
7
+ const { basePath, cwd, entry, httpHost, httpPort, isApp, reactCompiler, reactStrictMode, schemaExtraction, typegen, vite: extendViteConfig } = options;
8
8
  debug('Writing Sanity runtime files');
9
9
  const watcher = await writeSanityRuntime({
10
10
  basePath,
@@ -22,10 +22,12 @@ export async function startDevServer(options) {
22
22
  isApp,
23
23
  mode: 'development',
24
24
  reactCompiler,
25
+ schemaExtraction,
25
26
  server: {
26
27
  host: httpHost,
27
28
  port: httpPort
28
- }
29
+ },
30
+ typegen
29
31
  });
30
32
  // Extend Vite configuration with user-provided config
31
33
  if (extendViteConfig) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/devServer.ts"],"sourcesContent":["import {type UserViteConfig} from '@sanity/cli-core'\nimport {type PluginOptions as ReactCompilerConfig} from 'babel-plugin-react-compiler'\nimport {type FSWatcher} from 'chokidar'\nimport {createServer, type InlineConfig, type ViteDevServer} from 'vite'\n\nimport {extendViteConfigWithUserConfig, getViteConfig} from '../actions/build/getViteConfig.js'\nimport {writeSanityRuntime} from '../actions/build/writeSanityRuntime.js'\nimport {serverDebug} from './serverDebug.js'\n\nconst debug = serverDebug.extend('dev')\n\nexport interface DevServerOptions {\n basePath: string\n cwd: string\n httpPort: number\n\n reactCompiler: ReactCompilerConfig | undefined\n reactStrictMode: boolean\n\n staticPath: string\n\n entry?: string\n httpHost?: string\n isApp?: boolean\n projectName?: string\n vite?: UserViteConfig\n}\n\ninterface DevServer {\n close(): Promise<void>\n server: ViteDevServer\n\n watcher?: FSWatcher\n}\n\nexport async function startDevServer(options: DevServerOptions): Promise<DevServer> {\n const {\n basePath,\n cwd,\n entry,\n httpHost,\n httpPort,\n isApp,\n reactCompiler,\n reactStrictMode,\n vite: extendViteConfig,\n } = options\n\n debug('Writing Sanity runtime files')\n const watcher = await writeSanityRuntime({\n basePath,\n cwd,\n entry,\n isApp,\n reactStrictMode,\n watch: true,\n })\n\n debug('Resolving vite config')\n const mode = 'development'\n\n let viteConfig: InlineConfig = await getViteConfig({\n basePath,\n cwd,\n isApp,\n mode: 'development',\n reactCompiler,\n server: {host: httpHost, port: httpPort},\n })\n\n // Extend Vite configuration with user-provided config\n if (extendViteConfig) {\n viteConfig = await extendViteConfigWithUserConfig(\n {command: 'serve', mode},\n viteConfig,\n extendViteConfig,\n )\n }\n\n debug('Creating vite server')\n const server = await createServer(viteConfig)\n\n debug('Listening on specified port')\n await server.listen()\n\n return {\n close: async () => {\n if (watcher) {\n await watcher.close()\n }\n await server.close()\n },\n server,\n watcher,\n }\n}\n"],"names":["createServer","extendViteConfigWithUserConfig","getViteConfig","writeSanityRuntime","serverDebug","debug","extend","startDevServer","options","basePath","cwd","entry","httpHost","httpPort","isApp","reactCompiler","reactStrictMode","vite","extendViteConfig","watcher","watch","mode","viteConfig","server","host","port","command","listen","close"],"mappings":"AAGA,SAAQA,YAAY,QAA8C,OAAM;AAExE,SAAQC,8BAA8B,EAAEC,aAAa,QAAO,oCAAmC;AAC/F,SAAQC,kBAAkB,QAAO,yCAAwC;AACzE,SAAQC,WAAW,QAAO,mBAAkB;AAE5C,MAAMC,QAAQD,YAAYE,MAAM,CAAC;AA0BjC,OAAO,eAAeC,eAAeC,OAAyB;IAC5D,MAAM,EACJC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,aAAa,EACbC,eAAe,EACfC,MAAMC,gBAAgB,EACvB,GAAGV;IAEJH,MAAM;IACN,MAAMc,UAAU,MAAMhB,mBAAmB;QACvCM;QACAC;QACAC;QACAG;QACAE;QACAI,OAAO;IACT;IAEAf,MAAM;IACN,MAAMgB,OAAO;IAEb,IAAIC,aAA2B,MAAMpB,cAAc;QACjDO;QACAC;QACAI;QACAO,MAAM;QACNN;QACAQ,QAAQ;YAACC,MAAMZ;YAAUa,MAAMZ;QAAQ;IACzC;IAEA,sDAAsD;IACtD,IAAIK,kBAAkB;QACpBI,aAAa,MAAMrB,+BACjB;YAACyB,SAAS;YAASL;QAAI,GACvBC,YACAJ;IAEJ;IAEAb,MAAM;IACN,MAAMkB,SAAS,MAAMvB,aAAasB;IAElCjB,MAAM;IACN,MAAMkB,OAAOI,MAAM;IAEnB,OAAO;QACLC,OAAO;YACL,IAAIT,SAAS;gBACX,MAAMA,QAAQS,KAAK;YACrB;YACA,MAAML,OAAOK,KAAK;QACpB;QACAL;QACAJ;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/server/devServer.ts"],"sourcesContent":["import {CliConfig, type UserViteConfig} from '@sanity/cli-core'\nimport {type PluginOptions as ReactCompilerConfig} from 'babel-plugin-react-compiler'\nimport {type FSWatcher} from 'chokidar'\nimport {createServer, type InlineConfig, type ViteDevServer} from 'vite'\n\nimport {extendViteConfigWithUserConfig, getViteConfig} from '../actions/build/getViteConfig.js'\nimport {writeSanityRuntime} from '../actions/build/writeSanityRuntime.js'\nimport {serverDebug} from './serverDebug.js'\n\nconst debug = serverDebug.extend('dev')\n\nexport interface DevServerOptions {\n basePath: string\n cwd: string\n httpPort: number\n\n reactCompiler: ReactCompilerConfig | undefined\n reactStrictMode: boolean\n\n staticPath: string\n\n entry?: string\n httpHost?: string\n isApp?: boolean\n projectName?: string\n schemaExtraction?: CliConfig['schemaExtraction']\n typegen?: CliConfig['typegen']\n vite?: UserViteConfig\n}\n\ninterface DevServer {\n close(): Promise<void>\n server: ViteDevServer\n\n watcher?: FSWatcher\n}\n\nexport async function startDevServer(options: DevServerOptions): Promise<DevServer> {\n const {\n basePath,\n cwd,\n entry,\n httpHost,\n httpPort,\n isApp,\n reactCompiler,\n reactStrictMode,\n schemaExtraction,\n typegen,\n vite: extendViteConfig,\n } = options\n\n debug('Writing Sanity runtime files')\n const watcher = await writeSanityRuntime({\n basePath,\n cwd,\n entry,\n isApp,\n reactStrictMode,\n watch: true,\n })\n\n debug('Resolving vite config')\n const mode = 'development'\n\n let viteConfig: InlineConfig = await getViteConfig({\n basePath,\n cwd,\n isApp,\n mode: 'development',\n reactCompiler,\n schemaExtraction,\n server: {host: httpHost, port: httpPort},\n typegen,\n })\n\n // Extend Vite configuration with user-provided config\n if (extendViteConfig) {\n viteConfig = await extendViteConfigWithUserConfig(\n {command: 'serve', mode},\n viteConfig,\n extendViteConfig,\n )\n }\n\n debug('Creating vite server')\n const server = await createServer(viteConfig)\n\n debug('Listening on specified port')\n await server.listen()\n\n return {\n close: async () => {\n if (watcher) {\n await watcher.close()\n }\n await server.close()\n },\n server,\n watcher,\n }\n}\n"],"names":["createServer","extendViteConfigWithUserConfig","getViteConfig","writeSanityRuntime","serverDebug","debug","extend","startDevServer","options","basePath","cwd","entry","httpHost","httpPort","isApp","reactCompiler","reactStrictMode","schemaExtraction","typegen","vite","extendViteConfig","watcher","watch","mode","viteConfig","server","host","port","command","listen","close"],"mappings":"AAGA,SAAQA,YAAY,QAA8C,OAAM;AAExE,SAAQC,8BAA8B,EAAEC,aAAa,QAAO,oCAAmC;AAC/F,SAAQC,kBAAkB,QAAO,yCAAwC;AACzE,SAAQC,WAAW,QAAO,mBAAkB;AAE5C,MAAMC,QAAQD,YAAYE,MAAM,CAAC;AA4BjC,OAAO,eAAeC,eAAeC,OAAyB;IAC5D,MAAM,EACJC,QAAQ,EACRC,GAAG,EACHC,KAAK,EACLC,QAAQ,EACRC,QAAQ,EACRC,KAAK,EACLC,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,OAAO,EACPC,MAAMC,gBAAgB,EACvB,GAAGZ;IAEJH,MAAM;IACN,MAAMgB,UAAU,MAAMlB,mBAAmB;QACvCM;QACAC;QACAC;QACAG;QACAE;QACAM,OAAO;IACT;IAEAjB,MAAM;IACN,MAAMkB,OAAO;IAEb,IAAIC,aAA2B,MAAMtB,cAAc;QACjDO;QACAC;QACAI;QACAS,MAAM;QACNR;QACAE;QACAQ,QAAQ;YAACC,MAAMd;YAAUe,MAAMd;QAAQ;QACvCK;IACF;IAEA,sDAAsD;IACtD,IAAIE,kBAAkB;QACpBI,aAAa,MAAMvB,+BACjB;YAAC2B,SAAS;YAASL;QAAI,GACvBC,YACAJ;IAEJ;IAEAf,MAAM;IACN,MAAMoB,SAAS,MAAMzB,aAAawB;IAElCnB,MAAM;IACN,MAAMoB,OAAOI,MAAM;IAEnB,OAAO;QACLC,OAAO;YACL,IAAIT,SAAS;gBACX,MAAMA,QAAQS,KAAK;YACrB;YACA,MAAML,OAAOK,KAAK;QACpB;QACAL;QACAJ;IACF;AACF"}
@@ -3,7 +3,7 @@ import path from 'node:path';
3
3
  import { styleText } from 'node:util';
4
4
  import { preview } from 'vite';
5
5
  import { extendViteConfigWithUserConfig } from '../actions/build/getViteConfig.js';
6
- import { readModuleVersion } from '../util/readModuleVersion.js';
6
+ import { getLocalPackageVersion } from '../util/getLocalPackageVersion.js';
7
7
  import { serverDebug } from './serverDebug.js';
8
8
  import { sanityBasePathRedirectPlugin } from './vite/plugin-sanity-basepath-redirect.js';
9
9
  const debug = serverDebug.extend('preview');
@@ -66,7 +66,7 @@ const debug = serverDebug.extend('preview');
66
66
  info(`Using resolved base path from static build: ${styleText('cyan', basePath)}`);
67
67
  }
68
68
  const startupDuration = Date.now() - startTime;
69
- const viteVersion = await readModuleVersion(import.meta.url, 'vite');
69
+ const viteVersion = await getLocalPackageVersion('vite', import.meta.url);
70
70
  info(`Sanity ${isApp ? 'application' : 'Studio'} ` + `using ${styleText('cyan', `vite@${viteVersion}`)} ` + `ready in ${styleText('cyan', `${Math.ceil(startupDuration)}ms`)} ` + `and running at ${styleText('cyan', url)} (production preview mode)`);
71
71
  return {
72
72
  close: ()=>new Promise((resolve, reject)=>server.httpServer.close((err)=>err ? reject(err) : resolve())),