@sanity/cli 6.0.0-alpha.5 → 6.0.0-alpha.6

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 (461) hide show
  1. package/dist/actions/dataset/create.d.ts +49 -0
  2. package/dist/actions/dataset/create.js +48 -0
  3. package/dist/actions/dataset/create.js.map +1 -0
  4. package/dist/actions/dataset/determineDatasetAclMode.d.ts +37 -0
  5. package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
  6. package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
  7. package/dist/actions/debug/gatherDebugInfo.js +15 -21
  8. package/dist/actions/debug/gatherDebugInfo.js.map +1 -1
  9. package/dist/actions/debug/types.d.ts +0 -2
  10. package/dist/actions/debug/types.js.map +1 -1
  11. package/dist/actions/deploy/deployApp.js +13 -0
  12. package/dist/actions/deploy/deployApp.js.map +1 -1
  13. package/dist/actions/init/remoteTemplate.js +1 -1
  14. package/dist/actions/init/remoteTemplate.js.map +1 -1
  15. package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
  16. package/dist/actions/manifest/extractAppManifest.js +51 -0
  17. package/dist/actions/manifest/extractAppManifest.js.map +1 -0
  18. package/dist/actions/manifest/extractManifest.js +1 -1
  19. package/dist/actions/manifest/extractManifest.js.map +1 -1
  20. package/dist/actions/manifest/types.d.ts +6 -1
  21. package/dist/actions/manifest/types.js.map +1 -1
  22. package/dist/actions/media/importAspects.js +2 -1
  23. package/dist/actions/media/importAspects.js.map +1 -1
  24. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
  25. package/dist/commands/dataset/create.d.ts +0 -2
  26. package/dist/commands/dataset/create.js +8 -54
  27. package/dist/commands/dataset/create.js.map +1 -1
  28. package/dist/commands/debug.js +5 -9
  29. package/dist/commands/debug.js.map +1 -1
  30. package/dist/commands/init.d.ts +6 -1
  31. package/dist/commands/init.js +358 -20
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/manifest/extract.js +7 -8
  34. package/dist/commands/manifest/extract.js.map +1 -1
  35. package/dist/config/createCliConfig.d.ts +9 -0
  36. package/dist/prompts/init/promptForTypescript.d.ts +2 -0
  37. package/dist/prompts/init/promptForTypescript.js +15 -0
  38. package/dist/prompts/init/promptForTypescript.js.map +1 -0
  39. package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
  40. package/dist/prompts/promptForDatasetAclMode.js +27 -0
  41. package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
  42. package/dist/prompts/promptForDatasetName.d.ts +1 -1
  43. package/dist/prompts/promptForDatasetName.js +4 -1
  44. package/dist/prompts/promptForDatasetName.js.map +1 -1
  45. package/dist/services/organizations.d.ts +3 -1
  46. package/dist/services/organizations.js +2 -1
  47. package/dist/services/organizations.js.map +1 -1
  48. package/dist/services/user.d.ts +5 -0
  49. package/dist/services/user.js +12 -1
  50. package/dist/services/user.js.map +1 -1
  51. package/dist/services/userApplications.d.ts +3 -1
  52. package/dist/services/userApplications.js +5 -1
  53. package/dist/services/userApplications.js.map +1 -1
  54. package/oclif.manifest.json +113 -113
  55. package/package.json +16 -12
  56. package/templates/app-quickstart/src/App.css +20 -0
  57. package/templates/app-quickstart/src/App.tsx +25 -0
  58. package/templates/app-quickstart/src/ExampleComponent.css +90 -0
  59. package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
  60. package/templates/app-sanity-ui/src/App.tsx +34 -0
  61. package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
  62. package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
  63. package/templates/blog/README.md +11 -0
  64. package/templates/blog/schemaTypes/author.js +50 -0
  65. package/templates/blog/schemaTypes/blockContent.js +67 -0
  66. package/templates/blog/schemaTypes/category.js +19 -0
  67. package/templates/blog/schemaTypes/index.js +6 -0
  68. package/templates/blog/schemaTypes/post.js +65 -0
  69. package/templates/blog/static/.gitkeep +1 -0
  70. package/templates/clean/README.md +9 -0
  71. package/templates/clean/schemaTypes/index.js +1 -0
  72. package/templates/clean/static/.gitkeep +1 -0
  73. package/templates/ecommerce/README.md +11 -0
  74. package/templates/ecommerce/plugins/.gitkeep +1 -0
  75. package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
  76. package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
  77. package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
  78. package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
  79. package/templates/ecommerce/schemaTypes/category.js +39 -0
  80. package/templates/ecommerce/schemaTypes/index.js +23 -0
  81. package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
  82. package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
  83. package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
  84. package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
  85. package/templates/ecommerce/schemaTypes/product.js +83 -0
  86. package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
  87. package/templates/ecommerce/schemaTypes/vendor.js +39 -0
  88. package/templates/ecommerce/static/.gitkeep +1 -0
  89. package/templates/get-started/README.md +9 -0
  90. package/templates/get-started/plugins/.gitkeep +1 -0
  91. package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
  92. package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
  93. package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
  94. package/templates/get-started/schemaTypes/index.ts +1 -0
  95. package/templates/get-started/static/.gitkeep +1 -0
  96. package/templates/moviedb/README.md +10 -0
  97. package/templates/moviedb/schemaTypes/blockContent.js +67 -0
  98. package/templates/moviedb/schemaTypes/castMember.js +37 -0
  99. package/templates/moviedb/schemaTypes/crewMember.js +52 -0
  100. package/templates/moviedb/schemaTypes/index.js +22 -0
  101. package/templates/moviedb/schemaTypes/movie.js +85 -0
  102. package/templates/moviedb/schemaTypes/person.js +37 -0
  103. package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
  104. package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
  105. package/templates/moviedb/schemaTypes/screening.js +81 -0
  106. package/templates/moviedb/static/.gitkeep +1 -0
  107. package/templates/quickstart/README.md +9 -0
  108. package/templates/quickstart/schemaTypes/index.js +1 -0
  109. package/templates/quickstart/static/.gitkeep +1 -0
  110. package/templates/shared/gitignore.txt +29 -0
  111. package/templates/shared/tsconfig.json +17 -0
  112. package/templates/shopify/README.md +85 -0
  113. package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
  114. package/templates/shopify/components/icons/Shopify.tsx +20 -0
  115. package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
  116. package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
  117. package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
  118. package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
  119. package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
  120. package/templates/shopify/components/media/ColorTheme.tsx +38 -0
  121. package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
  122. package/templates/shopify/components/studio/Navbar.tsx +29 -0
  123. package/templates/shopify/constants.ts +61 -0
  124. package/templates/shopify/docs/features.md +158 -0
  125. package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
  126. package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
  127. package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
  128. package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
  129. package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
  130. package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
  131. package/templates/shopify/schemaTypes/documents/page.ts +70 -0
  132. package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
  133. package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
  134. package/templates/shopify/schemaTypes/index.ts +108 -0
  135. package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
  136. package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
  137. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
  138. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
  139. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
  140. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
  141. package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
  142. package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
  143. package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
  144. package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
  145. package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
  146. package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
  147. package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
  148. package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
  149. package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
  150. package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
  151. package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
  152. package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
  153. package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
  154. package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
  155. package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
  156. package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
  157. package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
  158. package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
  159. package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
  160. package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
  161. package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
  162. package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
  163. package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
  164. package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
  165. package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
  166. package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
  167. package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
  168. package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
  169. package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
  170. package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
  171. package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
  172. package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
  173. package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
  174. package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
  175. package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
  176. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
  177. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
  178. package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
  179. package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
  180. package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
  181. package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
  182. package/templates/shopify/static/.gitkeep +1 -0
  183. package/templates/shopify/structure/collectionStructure.ts +9 -0
  184. package/templates/shopify/structure/colorThemeStructure.ts +9 -0
  185. package/templates/shopify/structure/homeStructure.ts +9 -0
  186. package/templates/shopify/structure/index.ts +57 -0
  187. package/templates/shopify/structure/pageStructure.ts +11 -0
  188. package/templates/shopify/structure/productStructure.ts +51 -0
  189. package/templates/shopify/structure/settingStructure.ts +9 -0
  190. package/templates/shopify/utils/blocksToText.ts +20 -0
  191. package/templates/shopify/utils/defineStructure.ts +11 -0
  192. package/templates/shopify/utils/getPriceRange.ts +24 -0
  193. package/templates/shopify/utils/shopifyUrls.ts +22 -0
  194. package/templates/shopify/utils/validateSlug.ts +18 -0
  195. package/templates/shopify-online-storefront/README.md +54 -0
  196. package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
  197. package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
  198. package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
  199. package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
  200. package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
  201. package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
  202. package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
  203. package/templates/shopify-online-storefront/constants.ts +18 -0
  204. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
  205. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
  206. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
  207. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
  208. package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
  209. package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
  210. package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
  211. package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
  212. package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
  213. package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
  214. package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
  215. package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
  216. package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
  217. package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
  218. package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
  219. package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
  220. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
  221. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
  222. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
  223. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
  224. package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
  225. package/templates/shopify-online-storefront/structure/index.ts +37 -0
  226. package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
  227. package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
  228. package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
  229. package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
  230. package/dist/actions/build/__tests__/buildApp.test.js +0 -367
  231. package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
  232. package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
  233. package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
  234. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
  235. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
  236. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
  237. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
  238. package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
  239. package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
  240. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
  241. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
  242. package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
  243. package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
  244. package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
  245. package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
  246. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
  247. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
  248. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
  249. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
  250. package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
  251. package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
  252. package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
  253. package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
  254. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
  255. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
  256. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
  257. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
  258. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
  259. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
  260. package/dist/actions/media/__tests__/importMedia.test.js +0 -182
  261. package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
  262. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
  263. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
  264. package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
  265. package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
  266. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
  267. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
  268. package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
  269. package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
  270. package/dist/commands/__tests__/blueprints.test.js +0 -54
  271. package/dist/commands/__tests__/blueprints.test.js.map +0 -1
  272. package/dist/commands/__tests__/build.test.js +0 -132
  273. package/dist/commands/__tests__/build.test.js.map +0 -1
  274. package/dist/commands/__tests__/codemod.test.js +0 -271
  275. package/dist/commands/__tests__/codemod.test.js.map +0 -1
  276. package/dist/commands/__tests__/debug.test.js +0 -590
  277. package/dist/commands/__tests__/debug.test.js.map +0 -1
  278. package/dist/commands/__tests__/deploy.test.js +0 -1945
  279. package/dist/commands/__tests__/deploy.test.js.map +0 -1
  280. package/dist/commands/__tests__/dev.test.js +0 -453
  281. package/dist/commands/__tests__/dev.test.js.map +0 -1
  282. package/dist/commands/__tests__/exec.test.js +0 -207
  283. package/dist/commands/__tests__/exec.test.js.map +0 -1
  284. package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
  285. package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
  286. package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
  287. package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
  288. package/dist/commands/__tests__/init/init.plan.test.js +0 -279
  289. package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
  290. package/dist/commands/__tests__/init/init.setup.test.js +0 -335
  291. package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
  292. package/dist/commands/__tests__/install.test.js +0 -282
  293. package/dist/commands/__tests__/install.test.js.map +0 -1
  294. package/dist/commands/__tests__/learn.test.js +0 -29
  295. package/dist/commands/__tests__/learn.test.js.map +0 -1
  296. package/dist/commands/__tests__/logout.test.js +0 -91
  297. package/dist/commands/__tests__/logout.test.js.map +0 -1
  298. package/dist/commands/__tests__/manage.test.js +0 -110
  299. package/dist/commands/__tests__/manage.test.js.map +0 -1
  300. package/dist/commands/__tests__/migration.test.js +0 -119
  301. package/dist/commands/__tests__/migration.test.js.map +0 -1
  302. package/dist/commands/__tests__/preview.test.js +0 -261
  303. package/dist/commands/__tests__/preview.test.js.map +0 -1
  304. package/dist/commands/__tests__/start.test.js +0 -253
  305. package/dist/commands/__tests__/start.test.js.map +0 -1
  306. package/dist/commands/__tests__/undeploy.test.js +0 -382
  307. package/dist/commands/__tests__/undeploy.test.js.map +0 -1
  308. package/dist/commands/__tests__/versions.test.js +0 -142
  309. package/dist/commands/__tests__/versions.test.js.map +0 -1
  310. package/dist/commands/backup/__tests__/disable.test.js +0 -204
  311. package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
  312. package/dist/commands/backup/__tests__/download.test.js +0 -768
  313. package/dist/commands/backup/__tests__/download.test.js.map +0 -1
  314. package/dist/commands/backup/__tests__/enable.test.js +0 -286
  315. package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
  316. package/dist/commands/backup/__tests__/list.test.js +0 -330
  317. package/dist/commands/backup/__tests__/list.test.js.map +0 -1
  318. package/dist/commands/cors/__tests__/add.test.js +0 -376
  319. package/dist/commands/cors/__tests__/add.test.js.map +0 -1
  320. package/dist/commands/cors/__tests__/delete.test.js +0 -308
  321. package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
  322. package/dist/commands/cors/__tests__/list.test.js +0 -241
  323. package/dist/commands/cors/__tests__/list.test.js.map +0 -1
  324. package/dist/commands/dataset/__tests__/copy.test.js +0 -628
  325. package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
  326. package/dist/commands/dataset/__tests__/create.test.js +0 -342
  327. package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
  328. package/dist/commands/dataset/__tests__/delete.test.js +0 -231
  329. package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
  330. package/dist/commands/dataset/__tests__/export.test.js +0 -601
  331. package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
  332. package/dist/commands/dataset/__tests__/import.test.js +0 -53
  333. package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
  334. package/dist/commands/dataset/__tests__/list.test.js +0 -216
  335. package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
  336. package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
  337. package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
  338. package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
  339. package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
  340. package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
  341. package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
  342. package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
  343. package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
  344. package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
  345. package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
  346. package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
  347. package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
  348. package/dist/commands/docs/__tests__/browse.test.js +0 -29
  349. package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
  350. package/dist/commands/docs/__tests__/read.test.js +0 -78
  351. package/dist/commands/docs/__tests__/read.test.js.map +0 -1
  352. package/dist/commands/docs/__tests__/search.test.js +0 -255
  353. package/dist/commands/docs/__tests__/search.test.js.map +0 -1
  354. package/dist/commands/documents/__tests__/create.test.js +0 -1030
  355. package/dist/commands/documents/__tests__/create.test.js.map +0 -1
  356. package/dist/commands/documents/__tests__/delete.test.js +0 -300
  357. package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
  358. package/dist/commands/documents/__tests__/get.test.js +0 -182
  359. package/dist/commands/documents/__tests__/get.test.js.map +0 -1
  360. package/dist/commands/documents/__tests__/query.test.js +0 -300
  361. package/dist/commands/documents/__tests__/query.test.js.map +0 -1
  362. package/dist/commands/documents/__tests__/validate.test.js +0 -249
  363. package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
  364. package/dist/commands/graphql/__tests__/list.test.js +0 -240
  365. package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
  366. package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
  367. package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
  368. package/dist/commands/hook/__tests__/attempt.test.js +0 -275
  369. package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
  370. package/dist/commands/hook/__tests__/create.test.js +0 -119
  371. package/dist/commands/hook/__tests__/create.test.js.map +0 -1
  372. package/dist/commands/hook/__tests__/delete.test.js +0 -233
  373. package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
  374. package/dist/commands/hook/__tests__/list.test.js +0 -145
  375. package/dist/commands/hook/__tests__/list.test.js.map +0 -1
  376. package/dist/commands/hook/__tests__/logs.test.js +0 -798
  377. package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
  378. package/dist/commands/manifest/__tests__/extract.test.js +0 -132
  379. package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
  380. package/dist/commands/mcp/__tests__/configure.test.js +0 -397
  381. package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
  382. package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
  383. package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
  384. package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
  385. package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
  386. package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
  387. package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
  388. package/dist/commands/media/__tests__/export.test.js +0 -697
  389. package/dist/commands/media/__tests__/export.test.js.map +0 -1
  390. package/dist/commands/media/__tests__/import.test.js +0 -347
  391. package/dist/commands/media/__tests__/import.test.js.map +0 -1
  392. package/dist/commands/openapi/__tests__/get.test.js +0 -149
  393. package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
  394. package/dist/commands/openapi/__tests__/list.test.js +0 -113
  395. package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
  396. package/dist/commands/projects/__tests__/list.test.js +0 -154
  397. package/dist/commands/projects/__tests__/list.test.js.map +0 -1
  398. package/dist/commands/schema/__tests__/delete.test.js +0 -454
  399. package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
  400. package/dist/commands/schema/__tests__/deploy.test.js +0 -348
  401. package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
  402. package/dist/commands/schema/__tests__/extract.test.js +0 -121
  403. package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
  404. package/dist/commands/schema/__tests__/list.test.js +0 -399
  405. package/dist/commands/schema/__tests__/list.test.js.map +0 -1
  406. package/dist/commands/schema/__tests__/validate.test.js +0 -121
  407. package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
  408. package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
  409. package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
  410. package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
  411. package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
  412. package/dist/commands/telemetry/__tests__/status.test.js +0 -155
  413. package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
  414. package/dist/commands/tokens/__tests__/add.test.js +0 -435
  415. package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
  416. package/dist/commands/tokens/__tests__/delete.test.js +0 -405
  417. package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
  418. package/dist/commands/tokens/__tests__/list.test.js +0 -395
  419. package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
  420. package/dist/commands/users/__tests__/invite.test.js +0 -362
  421. package/dist/commands/users/__tests__/invite.test.js.map +0 -1
  422. package/dist/commands/users/__tests__/list.test.js +0 -407
  423. package/dist/commands/users/__tests__/list.test.js.map +0 -1
  424. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
  425. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
  426. package/dist/services/__tests__/datasetAliases.test.js +0 -131
  427. package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
  428. package/dist/services/__tests__/datasets.test.js +0 -436
  429. package/dist/services/__tests__/datasets.test.js.map +0 -1
  430. package/dist/services/__tests__/graphql.test.js +0 -43
  431. package/dist/services/__tests__/graphql.test.js.map +0 -1
  432. package/dist/services/__tests__/mediaLibraries.test.js +0 -88
  433. package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
  434. package/dist/services/__tests__/projects.test.js +0 -41
  435. package/dist/services/__tests__/projects.test.js.map +0 -1
  436. package/dist/services/__tests__/userApplications.test.js +0 -113
  437. package/dist/services/__tests__/userApplications.test.js.map +0 -1
  438. package/dist/util/__tests__/appId.test.js +0 -31
  439. package/dist/util/__tests__/appId.test.js.map +0 -1
  440. package/dist/util/__tests__/cliClient.test.js +0 -184
  441. package/dist/util/__tests__/cliClient.test.js.map +0 -1
  442. package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
  443. package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
  444. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
  445. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
  446. package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
  447. package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
  448. package/dist/util/__tests__/getCliVersion.test.js +0 -28
  449. package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
  450. package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
  451. package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
  452. package/dist/util/__tests__/getWorkspace.test.js +0 -37
  453. package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
  454. package/dist/util/__tests__/readPackageJson.test.js +0 -69
  455. package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
  456. package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
  457. package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
  458. package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
  459. package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
  460. package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
  461. package/dist/util/validation/ __tests__/validateDocuments.test.js.map +0 -1
@@ -1,561 +0,0 @@
1
- import { rm } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { logSymbols } from '@sanity/cli-core/ux';
4
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
- import { buildStudio } from '../buildStudio.js';
6
- vi.mock('node:fs/promises');
7
- const mockedRm = rm;
8
- const mockedConfirm = vi.hoisted(()=>vi.fn());
9
- const mockedSelect = vi.hoisted(()=>vi.fn());
10
- const mockedGetAppId = vi.hoisted(()=>vi.fn());
11
- const mockedCompareDependencyVersions = vi.hoisted(()=>vi.fn());
12
- const mockedGetPackageManagerChoice = vi.hoisted(()=>vi.fn());
13
- const mockedUpgradePackages = vi.hoisted(()=>vi.fn());
14
- const mockedWarnAboutMissingAppId = vi.hoisted(()=>vi.fn());
15
- const mockedBuildStaticFiles = vi.hoisted(()=>vi.fn());
16
- const mockedBuildVendorDependencies = vi.hoisted(()=>vi.fn());
17
- const mockedCheckRequiredDependencies = vi.hoisted(()=>vi.fn());
18
- const mockedCheckStudioDependencyVersions = vi.hoisted(()=>vi.fn());
19
- const mockedDetermineBasePath = vi.hoisted(()=>vi.fn());
20
- const mockedGetAutoUpdatesImportMap = vi.hoisted(()=>vi.fn());
21
- const mockedGetStudioEnvVars = vi.hoisted(()=>vi.fn());
22
- const mockedShouldAutoUpdate = vi.hoisted(()=>vi.fn());
23
- vi.mock('@sanity/cli-core/ux', async ()=>{
24
- const original = await import('@sanity/cli-core/ux');
25
- return {
26
- ...original,
27
- confirm: mockedConfirm,
28
- select: mockedSelect,
29
- spinner: vi.fn(()=>({
30
- fail: vi.fn().mockReturnThis(),
31
- start: vi.fn().mockReturnThis(),
32
- succeed: vi.fn().mockReturnThis(),
33
- text: ''
34
- }))
35
- };
36
- });
37
- vi.mock('../../../util/appId.js', ()=>({
38
- getAppId: mockedGetAppId
39
- }));
40
- vi.mock('../../../util/compareDependencyVersions.js', ()=>({
41
- compareDependencyVersions: mockedCompareDependencyVersions
42
- }));
43
- vi.mock('../../../util/warnAboutMissingAppId.js', ()=>({
44
- warnAboutMissingAppId: mockedWarnAboutMissingAppId
45
- }));
46
- vi.mock('../../../util/packageManager/packageManagerChoice.js', ()=>({
47
- getPackageManagerChoice: mockedGetPackageManagerChoice
48
- }));
49
- vi.mock('../../../util/packageManager/upgradePackages.js', ()=>({
50
- upgradePackages: mockedUpgradePackages
51
- }));
52
- vi.mock('../buildStaticFiles.js', ()=>({
53
- buildStaticFiles: mockedBuildStaticFiles
54
- }));
55
- vi.mock('../buildVendorDependencies.js', ()=>({
56
- buildVendorDependencies: mockedBuildVendorDependencies
57
- }));
58
- vi.mock('../checkRequiredDependencies.js', ()=>({
59
- checkRequiredDependencies: mockedCheckRequiredDependencies
60
- }));
61
- vi.mock('../checkStudioDependencyVersions.js', ()=>({
62
- checkStudioDependencyVersions: mockedCheckStudioDependencyVersions
63
- }));
64
- vi.mock('../determineBasePath.js', ()=>({
65
- determineBasePath: mockedDetermineBasePath
66
- }));
67
- vi.mock('../getAutoUpdatesImportMap.js', ()=>({
68
- getAutoUpdatesImportMap: mockedGetAutoUpdatesImportMap
69
- }));
70
- vi.mock('../getStudioEnvVars.js', ()=>({
71
- getStudioEnvVars: mockedGetStudioEnvVars
72
- }));
73
- vi.mock('../shouldAutoUpdate.js', ()=>({
74
- shouldAutoUpdate: mockedShouldAutoUpdate
75
- }));
76
- describe('buildStudio', ()=>{
77
- const mockOutput = {
78
- error: vi.fn(),
79
- log: vi.fn(),
80
- warn: vi.fn()
81
- };
82
- const baseBuildOptions = {
83
- autoUpdatesEnabled: false,
84
- cliConfig: {},
85
- exit: vi.fn(),
86
- flags: {
87
- 'auto-updates': false,
88
- json: false,
89
- minify: false,
90
- 'source-maps': false,
91
- stats: false,
92
- yes: false
93
- },
94
- outDir: undefined,
95
- output: mockOutput,
96
- workDir: '/test/work/dir'
97
- };
98
- beforeEach(()=>{
99
- vi.clearAllMocks();
100
- // Default mocks
101
- mockedGetAppId.mockReturnValue(undefined);
102
- mockedWarnAboutMissingAppId.mockReturnValue(undefined);
103
- mockedCheckStudioDependencyVersions.mockResolvedValue(undefined);
104
- mockedCheckRequiredDependencies.mockResolvedValue({
105
- installedSanityVersion: '3.0.0'
106
- });
107
- mockedShouldAutoUpdate.mockReturnValue(false);
108
- mockedGetAutoUpdatesImportMap.mockReturnValue({});
109
- mockedCompareDependencyVersions.mockResolvedValue([]);
110
- mockedGetStudioEnvVars.mockReturnValue([]);
111
- mockedDetermineBasePath.mockReturnValue('/studio');
112
- mockedBuildVendorDependencies.mockResolvedValue({});
113
- mockedBuildStaticFiles.mockResolvedValue({
114
- chunks: []
115
- });
116
- mockedRm.mockResolvedValue(undefined);
117
- mockedGetPackageManagerChoice.mockResolvedValue({
118
- chosen: 'npm'
119
- });
120
- mockedUpgradePackages.mockResolvedValue(undefined);
121
- });
122
- afterEach(()=>{
123
- vi.restoreAllMocks();
124
- });
125
- it('should build studio successfully with basic options', async ()=>{
126
- await buildStudio(baseBuildOptions);
127
- expect(mockedCheckStudioDependencyVersions).toHaveBeenCalledWith('/test/work/dir', mockOutput);
128
- expect(mockedCheckRequiredDependencies).toHaveBeenCalledWith({
129
- cliConfig: {},
130
- output: mockOutput,
131
- workDir: '/test/work/dir'
132
- });
133
- expect(mockedBuildStaticFiles).toHaveBeenCalled();
134
- });
135
- it('should throw error when auto-updates enabled but cleanSanityVersion is invalid', async ()=>{
136
- mockedCheckRequiredDependencies.mockResolvedValue({
137
- installedSanityVersion: 'invalid-version'
138
- });
139
- mockedShouldAutoUpdate.mockReturnValue(true);
140
- const options = {
141
- ...baseBuildOptions,
142
- autoUpdatesEnabled: true
143
- };
144
- await expect(buildStudio(options)).rejects.toThrow('Failed to parse installed Sanity version: invalid-version');
145
- });
146
- it('should warn when auto updates are enabled but an appId has not been configured', async ()=>{
147
- mockedShouldAutoUpdate.mockReturnValue(true);
148
- const options = {
149
- ...baseBuildOptions,
150
- autoUpdatesEnabled: true,
151
- cliConfig: {
152
- api: {
153
- projectId: 'test-project'
154
- }
155
- }
156
- };
157
- await buildStudio(options);
158
- expect(mockedWarnAboutMissingAppId).toHaveBeenCalledWith({
159
- appType: 'studio',
160
- output: mockOutput,
161
- projectId: 'test-project'
162
- });
163
- });
164
- it('should handle auto-updates enabled with valid version', async ()=>{
165
- mockedShouldAutoUpdate.mockReturnValue(true);
166
- const options = {
167
- ...baseBuildOptions,
168
- autoUpdatesEnabled: true
169
- };
170
- await buildStudio(options);
171
- expect(mockOutput.log).toHaveBeenCalledWith(`${logSymbols.info} Building with auto-updates enabled`);
172
- const expectedPackages = [
173
- {
174
- name: 'sanity',
175
- version: '3.0.0'
176
- },
177
- {
178
- name: '@sanity/vision',
179
- version: '3.0.0'
180
- }
181
- ];
182
- expect(mockedGetAutoUpdatesImportMap).toHaveBeenCalledWith(expectedPackages, {
183
- appId: undefined
184
- });
185
- expect(mockedCompareDependencyVersions).toHaveBeenCalledWith(expectedPackages, '/test/work/dir');
186
- });
187
- it('should pass appId to getAutoUpdatesImportMap when configured', async ()=>{
188
- mockedShouldAutoUpdate.mockReturnValue(true);
189
- mockedGetAppId.mockReturnValue('test-app-id');
190
- const options = {
191
- ...baseBuildOptions,
192
- autoUpdatesEnabled: true,
193
- cliConfig: {
194
- deployment: {
195
- appId: 'test-app-id'
196
- }
197
- }
198
- };
199
- await buildStudio(options);
200
- const expectedPackages = [
201
- {
202
- name: 'sanity',
203
- version: '3.0.0'
204
- },
205
- {
206
- name: '@sanity/vision',
207
- version: '3.0.0'
208
- }
209
- ];
210
- expect(mockedGetAutoUpdatesImportMap).toHaveBeenCalledWith(expectedPackages, {
211
- appId: 'test-app-id'
212
- });
213
- expect(mockedCompareDependencyVersions).toHaveBeenCalledWith(expectedPackages, '/test/work/dir');
214
- // Should not warn about missing appId when appId is configured
215
- expect(mockedWarnAboutMissingAppId).not.toHaveBeenCalled();
216
- });
217
- it('should prompt user when version differences exist and not in unattended mode', async ()=>{
218
- const versionDifferences = [
219
- {
220
- installed: '3.0.0',
221
- pkg: 'sanity',
222
- remote: '3.1.0'
223
- }
224
- ];
225
- mockedShouldAutoUpdate.mockReturnValue(true);
226
- mockedCompareDependencyVersions.mockResolvedValue(versionDifferences);
227
- mockedSelect.mockResolvedValue('upgrade-and-proceed');
228
- const options = {
229
- ...baseBuildOptions,
230
- autoUpdatesEnabled: true,
231
- flags: {
232
- ...baseBuildOptions.flags,
233
- yes: false
234
- }
235
- };
236
- await buildStudio(options);
237
- expect(mockedSelect).toHaveBeenCalledWith({
238
- choices: [
239
- {
240
- name: `Upgrade and proceed with build`,
241
- value: 'upgrade-and-proceed'
242
- },
243
- {
244
- name: `Upgrade only. You will need to run the build command again`,
245
- value: 'upgrade'
246
- },
247
- {
248
- name: 'Cancel',
249
- value: 'cancel'
250
- }
251
- ],
252
- default: 'upgrade-and-proceed',
253
- message: expect.stringContaining('different from the versions currently served')
254
- });
255
- });
256
- it('should exit when user selects cancel for version differences', async ()=>{
257
- const versionDifferences = [
258
- {
259
- installed: '3.0.0',
260
- pkg: 'sanity',
261
- remote: '3.1.0'
262
- }
263
- ];
264
- mockedShouldAutoUpdate.mockReturnValue(true);
265
- mockedCompareDependencyVersions.mockResolvedValue(versionDifferences);
266
- mockedSelect.mockResolvedValue('cancel');
267
- const options = {
268
- ...baseBuildOptions,
269
- autoUpdatesEnabled: true,
270
- flags: {
271
- ...baseBuildOptions.flags,
272
- yes: false
273
- }
274
- };
275
- await buildStudio(options);
276
- expect(baseBuildOptions.exit).toHaveBeenCalledWith(1);
277
- expect(mockedUpgradePackages).not.toHaveBeenCalled();
278
- });
279
- it('should upgrade packages and exit when user selects upgrade only', async ()=>{
280
- const versionDifferences = [
281
- {
282
- installed: '3.0.0',
283
- pkg: 'sanity',
284
- remote: '3.1.0'
285
- }
286
- ];
287
- mockedShouldAutoUpdate.mockReturnValue(true);
288
- mockedCompareDependencyVersions.mockResolvedValue(versionDifferences);
289
- mockedSelect.mockResolvedValue('upgrade');
290
- const options = {
291
- ...baseBuildOptions,
292
- autoUpdatesEnabled: true,
293
- flags: {
294
- ...baseBuildOptions.flags,
295
- yes: false
296
- }
297
- };
298
- await buildStudio(options);
299
- expect(mockedUpgradePackages).toHaveBeenCalledWith({
300
- packageManager: 'npm',
301
- packages: [
302
- [
303
- 'sanity',
304
- '3.1.0'
305
- ]
306
- ]
307
- }, {
308
- output: mockOutput,
309
- workDir: '/test/work/dir'
310
- });
311
- expect(baseBuildOptions.exit).toHaveBeenCalledWith(1);
312
- });
313
- it('should upgrade packages and continue building when user selects upgrade-and-proceed', async ()=>{
314
- const versionDifferences = [
315
- {
316
- installed: '3.0.0',
317
- pkg: 'sanity',
318
- remote: '3.1.0'
319
- }
320
- ];
321
- mockedShouldAutoUpdate.mockReturnValue(true);
322
- mockedCompareDependencyVersions.mockResolvedValue(versionDifferences);
323
- mockedSelect.mockResolvedValue('upgrade-and-proceed');
324
- const options = {
325
- ...baseBuildOptions,
326
- autoUpdatesEnabled: true,
327
- flags: {
328
- ...baseBuildOptions.flags,
329
- yes: false
330
- }
331
- };
332
- await buildStudio(options);
333
- expect(mockedUpgradePackages).toHaveBeenCalled();
334
- expect(mockedBuildStaticFiles).toHaveBeenCalled();
335
- });
336
- it('should skip version confirmation in unattended mode', async ()=>{
337
- const versionDifferences = [
338
- {
339
- installed: '3.0.0',
340
- pkg: 'sanity',
341
- remote: '3.1.0'
342
- }
343
- ];
344
- mockedShouldAutoUpdate.mockReturnValue(true);
345
- mockedCompareDependencyVersions.mockResolvedValue(versionDifferences);
346
- const options = {
347
- ...baseBuildOptions,
348
- autoUpdatesEnabled: true,
349
- flags: {
350
- ...baseBuildOptions.flags,
351
- yes: true
352
- }
353
- };
354
- await buildStudio(options);
355
- expect(mockedSelect).not.toHaveBeenCalled();
356
- });
357
- it('should log environment variables when present', async ()=>{
358
- mockedGetStudioEnvVars.mockReturnValue([
359
- 'NODE_ENV',
360
- 'SANITY_STUDIO_API_URL'
361
- ]);
362
- await buildStudio(baseBuildOptions);
363
- expect(mockOutput.log).toHaveBeenCalledWith('\nIncluding the following environment variables as part of the JavaScript bundle:');
364
- expect(mockOutput.log).toHaveBeenCalledWith('- NODE_ENV');
365
- expect(mockOutput.log).toHaveBeenCalledWith('- SANITY_STUDIO_API_URL');
366
- expect(mockOutput.log).toHaveBeenCalledWith('');
367
- });
368
- it('should prompt for directory cleanup when using custom output directory in interactive mode', async ()=>{
369
- mockedConfirm.mockResolvedValue(true);
370
- const options = {
371
- ...baseBuildOptions,
372
- flags: {
373
- ...baseBuildOptions.flags,
374
- yes: false
375
- },
376
- outDir: '/custom/output/dir'
377
- };
378
- await buildStudio(options);
379
- expect(mockedConfirm).toHaveBeenCalledWith({
380
- default: true,
381
- message: expect.stringContaining('Do you want to delete the existing directory')
382
- });
383
- });
384
- it('should skip cleanup when user declines directory cleanup', async ()=>{
385
- mockedConfirm.mockResolvedValue(false);
386
- const options = {
387
- ...baseBuildOptions,
388
- flags: {
389
- ...baseBuildOptions.flags,
390
- yes: false
391
- },
392
- outDir: '/custom/output/dir'
393
- };
394
- await buildStudio(options);
395
- expect(mockedRm).not.toHaveBeenCalled();
396
- });
397
- it('should skip cleanup prompt in unattended mode with custom output directory', async ()=>{
398
- const options = {
399
- ...baseBuildOptions,
400
- flags: {
401
- ...baseBuildOptions.flags,
402
- yes: true
403
- },
404
- outDir: '/custom/output/dir'
405
- };
406
- await buildStudio(options);
407
- expect(mockedConfirm).not.toHaveBeenCalled();
408
- expect(mockedRm).toHaveBeenCalled();
409
- });
410
- it('should handle CLI config with react compiler', async ()=>{
411
- const reactCompilerConfig = {
412
- compilationMode: 'all',
413
- target: '19'
414
- };
415
- const options = {
416
- ...baseBuildOptions,
417
- cliConfig: {
418
- reactCompiler: reactCompilerConfig
419
- }
420
- };
421
- await buildStudio(options);
422
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
423
- reactCompiler: reactCompilerConfig
424
- }));
425
- });
426
- it('should handle CLI config with vite config', async ()=>{
427
- const viteConfig = {
428
- base: '/custom/'
429
- };
430
- const options = {
431
- ...baseBuildOptions,
432
- cliConfig: {
433
- vite: viteConfig
434
- }
435
- };
436
- await buildStudio(options);
437
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
438
- vite: viteConfig
439
- }));
440
- });
441
- it('should show stats when stats flag is enabled', async ()=>{
442
- const mockBundle = {
443
- chunks: [
444
- {
445
- modules: [
446
- {
447
- name: 'test',
448
- renderedLength: 1000
449
- }
450
- ]
451
- }
452
- ]
453
- };
454
- mockedBuildStaticFiles.mockResolvedValue(mockBundle);
455
- const options = {
456
- ...baseBuildOptions,
457
- flags: {
458
- ...baseBuildOptions.flags,
459
- stats: true
460
- }
461
- };
462
- await buildStudio(options);
463
- expect(mockOutput.log).toHaveBeenCalledWith('\nLargest module files:');
464
- expect(mockOutput.log).toHaveBeenCalledWith(' - test (1 kB)');
465
- });
466
- it('should handle build errors gracefully', async ()=>{
467
- const buildError = new Error('Build failed');
468
- mockedBuildStaticFiles.mockRejectedValue(buildError);
469
- await buildStudio(baseBuildOptions);
470
- expect(mockOutput.error).toHaveBeenCalledWith('Failed to build Sanity Studio: Build failed', {
471
- exit: 1
472
- });
473
- });
474
- it('should handle minify flag', async ()=>{
475
- const options = {
476
- ...baseBuildOptions,
477
- flags: {
478
- ...baseBuildOptions.flags,
479
- minify: true
480
- }
481
- };
482
- await buildStudio(options);
483
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
484
- minify: true
485
- }));
486
- });
487
- it('should handle source-maps flag', async ()=>{
488
- const options = {
489
- ...baseBuildOptions,
490
- flags: {
491
- ...baseBuildOptions.flags,
492
- 'source-maps': true
493
- }
494
- };
495
- await buildStudio(options);
496
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
497
- sourceMap: true
498
- }));
499
- });
500
- it('should pass basePath from determineBasePath to buildStaticFiles', async ()=>{
501
- mockedDetermineBasePath.mockReturnValue('/custom-base-path');
502
- await buildStudio(baseBuildOptions);
503
- expect(mockedDetermineBasePath).toHaveBeenCalledWith({}, 'studio');
504
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
505
- basePath: '/custom-base-path'
506
- }));
507
- });
508
- it('should build vendor dependencies when auto-updates enabled', async ()=>{
509
- mockedShouldAutoUpdate.mockReturnValue(true);
510
- mockedGetAutoUpdatesImportMap.mockReturnValue({
511
- test: 'import'
512
- });
513
- mockedBuildVendorDependencies.mockResolvedValue({
514
- 'vendor-dep': 'path'
515
- });
516
- const options = {
517
- ...baseBuildOptions,
518
- autoUpdatesEnabled: true
519
- };
520
- await buildStudio(options);
521
- expect(mockedBuildVendorDependencies).toHaveBeenCalledWith({
522
- basePath: '/studio',
523
- cwd: '/test/work/dir',
524
- outputDir: path.resolve('/test/work/dir/dist')
525
- });
526
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
527
- importMap: {
528
- imports: {
529
- test: 'import',
530
- 'vendor-dep': 'path'
531
- }
532
- }
533
- }));
534
- });
535
- it('should not build vendor dependencies when auto-updates disabled', async ()=>{
536
- mockedShouldAutoUpdate.mockReturnValue(false);
537
- await buildStudio(baseBuildOptions);
538
- expect(mockedBuildVendorDependencies).not.toHaveBeenCalled();
539
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
540
- importMap: undefined
541
- }));
542
- });
543
- it('should use default output directory when outDir is not provided', async ()=>{
544
- await buildStudio(baseBuildOptions);
545
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
546
- outputDir: path.resolve('/test/work/dir/dist')
547
- }));
548
- });
549
- it('should use custom output directory when outDir is provided', async ()=>{
550
- const options = {
551
- ...baseBuildOptions,
552
- outDir: '/custom/output'
553
- };
554
- await buildStudio(options);
555
- expect(mockedBuildStaticFiles).toHaveBeenCalledWith(expect.objectContaining({
556
- outputDir: path.resolve('/custom/output')
557
- }));
558
- });
559
- });
560
-
561
- //# sourceMappingURL=buildStudio.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/actions/build/__tests__/buildStudio.test.ts"],"sourcesContent":["import {rm} from 'node:fs/promises'\nimport path from 'node:path'\n\nimport {type Output} from '@sanity/cli-core'\nimport {logSymbols} from '@sanity/cli-core/ux'\nimport {afterEach, beforeEach, describe, expect, it, type MockedFunction, vi} from 'vitest'\n\nimport {buildStudio} from '../buildStudio.js'\nimport {type BuildOptions} from '../types.js'\n\nvi.mock('node:fs/promises')\n\nconst mockedRm = rm as MockedFunction<typeof rm>\nconst mockedConfirm = vi.hoisted(() => vi.fn())\nconst mockedSelect = vi.hoisted(() => vi.fn())\nconst mockedGetAppId = vi.hoisted(() => vi.fn())\nconst mockedCompareDependencyVersions = vi.hoisted(() => vi.fn())\nconst mockedGetPackageManagerChoice = vi.hoisted(() => vi.fn())\nconst mockedUpgradePackages = vi.hoisted(() => vi.fn())\nconst mockedWarnAboutMissingAppId = vi.hoisted(() => vi.fn())\nconst mockedBuildStaticFiles = vi.hoisted(() => vi.fn())\nconst mockedBuildVendorDependencies = vi.hoisted(() => vi.fn())\nconst mockedCheckRequiredDependencies = vi.hoisted(() => vi.fn())\nconst mockedCheckStudioDependencyVersions = vi.hoisted(() => vi.fn())\nconst mockedDetermineBasePath = vi.hoisted(() => vi.fn())\nconst mockedGetAutoUpdatesImportMap = vi.hoisted(() => vi.fn())\nconst mockedGetStudioEnvVars = vi.hoisted(() => vi.fn())\nconst mockedShouldAutoUpdate = vi.hoisted(() => vi.fn())\n\nvi.mock('@sanity/cli-core/ux', async () => {\n const original = await import('@sanity/cli-core/ux')\n return {\n ...original,\n confirm: mockedConfirm,\n select: mockedSelect,\n spinner: vi.fn(() => ({\n fail: vi.fn().mockReturnThis(),\n start: vi.fn().mockReturnThis(),\n succeed: vi.fn().mockReturnThis(),\n text: '',\n })),\n }\n})\n\nvi.mock('../../../util/appId.js', () => ({\n getAppId: mockedGetAppId,\n}))\n\nvi.mock('../../../util/compareDependencyVersions.js', () => ({\n compareDependencyVersions: mockedCompareDependencyVersions,\n}))\n\nvi.mock('../../../util/warnAboutMissingAppId.js', () => ({\n warnAboutMissingAppId: mockedWarnAboutMissingAppId,\n}))\n\nvi.mock('../../../util/packageManager/packageManagerChoice.js', () => ({\n getPackageManagerChoice: mockedGetPackageManagerChoice,\n}))\n\nvi.mock('../../../util/packageManager/upgradePackages.js', () => ({\n upgradePackages: mockedUpgradePackages,\n}))\n\nvi.mock('../buildStaticFiles.js', () => ({\n buildStaticFiles: mockedBuildStaticFiles,\n}))\n\nvi.mock('../buildVendorDependencies.js', () => ({\n buildVendorDependencies: mockedBuildVendorDependencies,\n}))\n\nvi.mock('../checkRequiredDependencies.js', () => ({\n checkRequiredDependencies: mockedCheckRequiredDependencies,\n}))\n\nvi.mock('../checkStudioDependencyVersions.js', () => ({\n checkStudioDependencyVersions: mockedCheckStudioDependencyVersions,\n}))\n\nvi.mock('../determineBasePath.js', () => ({\n determineBasePath: mockedDetermineBasePath,\n}))\n\nvi.mock('../getAutoUpdatesImportMap.js', () => ({\n getAutoUpdatesImportMap: mockedGetAutoUpdatesImportMap,\n}))\n\nvi.mock('../getStudioEnvVars.js', () => ({\n getStudioEnvVars: mockedGetStudioEnvVars,\n}))\n\nvi.mock('../shouldAutoUpdate.js', () => ({\n shouldAutoUpdate: mockedShouldAutoUpdate,\n}))\n\ndescribe('buildStudio', () => {\n const mockOutput = {\n error: vi.fn(),\n log: vi.fn(),\n warn: vi.fn(),\n } as unknown as Output\n\n const baseBuildOptions: BuildOptions = {\n autoUpdatesEnabled: false,\n cliConfig: {},\n exit: vi.fn(),\n flags: {\n 'auto-updates': false,\n json: false,\n minify: false,\n 'source-maps': false,\n stats: false,\n yes: false,\n },\n outDir: undefined,\n output: mockOutput,\n workDir: '/test/work/dir',\n }\n\n beforeEach(() => {\n vi.clearAllMocks()\n\n // Default mocks\n mockedGetAppId.mockReturnValue(undefined)\n mockedWarnAboutMissingAppId.mockReturnValue(undefined)\n mockedCheckStudioDependencyVersions.mockResolvedValue(undefined)\n mockedCheckRequiredDependencies.mockResolvedValue({\n installedSanityVersion: '3.0.0',\n })\n mockedShouldAutoUpdate.mockReturnValue(false)\n mockedGetAutoUpdatesImportMap.mockReturnValue({})\n mockedCompareDependencyVersions.mockResolvedValue([])\n mockedGetStudioEnvVars.mockReturnValue([])\n mockedDetermineBasePath.mockReturnValue('/studio')\n mockedBuildVendorDependencies.mockResolvedValue({})\n mockedBuildStaticFiles.mockResolvedValue({\n chunks: [],\n })\n mockedRm.mockResolvedValue(undefined)\n mockedGetPackageManagerChoice.mockResolvedValue({\n chosen: 'npm',\n })\n mockedUpgradePackages.mockResolvedValue(undefined)\n })\n\n afterEach(() => {\n vi.restoreAllMocks()\n })\n\n it('should build studio successfully with basic options', async () => {\n await buildStudio(baseBuildOptions)\n\n expect(mockedCheckStudioDependencyVersions).toHaveBeenCalledWith('/test/work/dir', mockOutput)\n expect(mockedCheckRequiredDependencies).toHaveBeenCalledWith({\n cliConfig: {},\n output: mockOutput,\n workDir: '/test/work/dir',\n })\n expect(mockedBuildStaticFiles).toHaveBeenCalled()\n })\n\n it('should throw error when auto-updates enabled but cleanSanityVersion is invalid', async () => {\n mockedCheckRequiredDependencies.mockResolvedValue({\n installedSanityVersion: 'invalid-version',\n })\n mockedShouldAutoUpdate.mockReturnValue(true)\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n }\n\n await expect(buildStudio(options)).rejects.toThrow(\n 'Failed to parse installed Sanity version: invalid-version',\n )\n })\n\n it('should warn when auto updates are enabled but an appId has not been configured', async () => {\n mockedShouldAutoUpdate.mockReturnValue(true)\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n cliConfig: {\n api: {\n projectId: 'test-project',\n },\n },\n }\n\n await buildStudio(options)\n\n expect(mockedWarnAboutMissingAppId).toHaveBeenCalledWith({\n appType: 'studio',\n output: mockOutput,\n projectId: 'test-project',\n })\n })\n\n it('should handle auto-updates enabled with valid version', async () => {\n mockedShouldAutoUpdate.mockReturnValue(true)\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n }\n\n await buildStudio(options)\n\n expect(mockOutput.log).toHaveBeenCalledWith(\n `${logSymbols.info} Building with auto-updates enabled`,\n )\n\n const expectedPackages = [\n {name: 'sanity', version: '3.0.0'},\n {name: '@sanity/vision', version: '3.0.0'},\n ]\n\n expect(mockedGetAutoUpdatesImportMap).toHaveBeenCalledWith(expectedPackages, {appId: undefined})\n expect(mockedCompareDependencyVersions).toHaveBeenCalledWith(expectedPackages, '/test/work/dir')\n })\n\n it('should pass appId to getAutoUpdatesImportMap when configured', async () => {\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedGetAppId.mockReturnValue('test-app-id')\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n cliConfig: {\n deployment: {\n appId: 'test-app-id',\n },\n },\n }\n\n await buildStudio(options)\n\n const expectedPackages = [\n {name: 'sanity', version: '3.0.0'},\n {name: '@sanity/vision', version: '3.0.0'},\n ]\n\n expect(mockedGetAutoUpdatesImportMap).toHaveBeenCalledWith(expectedPackages, {\n appId: 'test-app-id',\n })\n expect(mockedCompareDependencyVersions).toHaveBeenCalledWith(expectedPackages, '/test/work/dir')\n // Should not warn about missing appId when appId is configured\n expect(mockedWarnAboutMissingAppId).not.toHaveBeenCalled()\n })\n\n it('should prompt user when version differences exist and not in unattended mode', async () => {\n const versionDifferences = [\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ]\n\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedCompareDependencyVersions.mockResolvedValue(versionDifferences)\n mockedSelect.mockResolvedValue('upgrade-and-proceed')\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n flags: {...baseBuildOptions.flags, yes: false},\n }\n\n await buildStudio(options)\n\n expect(mockedSelect).toHaveBeenCalledWith({\n choices: [\n {\n name: `Upgrade and proceed with build`,\n value: 'upgrade-and-proceed',\n },\n {\n name: `Upgrade only. You will need to run the build command again`,\n value: 'upgrade',\n },\n {name: 'Cancel', value: 'cancel'},\n ],\n default: 'upgrade-and-proceed',\n message: expect.stringContaining('different from the versions currently served'),\n })\n })\n\n it('should exit when user selects cancel for version differences', async () => {\n const versionDifferences = [\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ]\n\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedCompareDependencyVersions.mockResolvedValue(versionDifferences)\n mockedSelect.mockResolvedValue('cancel')\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n flags: {...baseBuildOptions.flags, yes: false},\n }\n\n await buildStudio(options)\n\n expect(baseBuildOptions.exit).toHaveBeenCalledWith(1)\n expect(mockedUpgradePackages).not.toHaveBeenCalled()\n })\n\n it('should upgrade packages and exit when user selects upgrade only', async () => {\n const versionDifferences = [\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ]\n\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedCompareDependencyVersions.mockResolvedValue(versionDifferences)\n mockedSelect.mockResolvedValue('upgrade')\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n flags: {...baseBuildOptions.flags, yes: false},\n }\n\n await buildStudio(options)\n\n expect(mockedUpgradePackages).toHaveBeenCalledWith(\n {\n packageManager: 'npm',\n packages: [['sanity', '3.1.0']],\n },\n {output: mockOutput, workDir: '/test/work/dir'},\n )\n expect(baseBuildOptions.exit).toHaveBeenCalledWith(1)\n })\n\n it('should upgrade packages and continue building when user selects upgrade-and-proceed', async () => {\n const versionDifferences = [\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ]\n\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedCompareDependencyVersions.mockResolvedValue(versionDifferences)\n mockedSelect.mockResolvedValue('upgrade-and-proceed')\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n flags: {...baseBuildOptions.flags, yes: false},\n }\n\n await buildStudio(options)\n\n expect(mockedUpgradePackages).toHaveBeenCalled()\n expect(mockedBuildStaticFiles).toHaveBeenCalled()\n })\n\n it('should skip version confirmation in unattended mode', async () => {\n const versionDifferences = [\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ]\n\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedCompareDependencyVersions.mockResolvedValue(versionDifferences)\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n flags: {...baseBuildOptions.flags, yes: true},\n }\n\n await buildStudio(options)\n\n expect(mockedSelect).not.toHaveBeenCalled()\n })\n\n it('should log environment variables when present', async () => {\n mockedGetStudioEnvVars.mockReturnValue(['NODE_ENV', 'SANITY_STUDIO_API_URL'])\n\n await buildStudio(baseBuildOptions)\n\n expect(mockOutput.log).toHaveBeenCalledWith(\n '\\nIncluding the following environment variables as part of the JavaScript bundle:',\n )\n expect(mockOutput.log).toHaveBeenCalledWith('- NODE_ENV')\n expect(mockOutput.log).toHaveBeenCalledWith('- SANITY_STUDIO_API_URL')\n expect(mockOutput.log).toHaveBeenCalledWith('')\n })\n\n it('should prompt for directory cleanup when using custom output directory in interactive mode', async () => {\n mockedConfirm.mockResolvedValue(true)\n\n const options = {\n ...baseBuildOptions,\n flags: {...baseBuildOptions.flags, yes: false},\n outDir: '/custom/output/dir',\n }\n\n await buildStudio(options)\n\n expect(mockedConfirm).toHaveBeenCalledWith({\n default: true,\n message: expect.stringContaining('Do you want to delete the existing directory'),\n })\n })\n\n it('should skip cleanup when user declines directory cleanup', async () => {\n mockedConfirm.mockResolvedValue(false)\n\n const options = {\n ...baseBuildOptions,\n flags: {...baseBuildOptions.flags, yes: false},\n outDir: '/custom/output/dir',\n }\n\n await buildStudio(options)\n\n expect(mockedRm).not.toHaveBeenCalled()\n })\n\n it('should skip cleanup prompt in unattended mode with custom output directory', async () => {\n const options = {\n ...baseBuildOptions,\n flags: {...baseBuildOptions.flags, yes: true},\n outDir: '/custom/output/dir',\n }\n\n await buildStudio(options)\n\n expect(mockedConfirm).not.toHaveBeenCalled()\n expect(mockedRm).toHaveBeenCalled()\n })\n\n it('should handle CLI config with react compiler', async () => {\n const reactCompilerConfig = {\n compilationMode: 'all' as const,\n target: '19' as const,\n }\n\n const options = {\n ...baseBuildOptions,\n cliConfig: {\n reactCompiler: reactCompilerConfig,\n },\n }\n\n await buildStudio(options)\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n reactCompiler: reactCompilerConfig,\n }),\n )\n })\n\n it('should handle CLI config with vite config', async () => {\n const viteConfig = {base: '/custom/'}\n const options = {\n ...baseBuildOptions,\n cliConfig: {\n vite: viteConfig,\n },\n }\n\n await buildStudio(options)\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n vite: viteConfig,\n }),\n )\n })\n\n it('should show stats when stats flag is enabled', async () => {\n const mockBundle = {\n chunks: [\n {\n modules: [{name: 'test', renderedLength: 1000}],\n },\n ],\n }\n\n mockedBuildStaticFiles.mockResolvedValue(mockBundle)\n\n const options = {\n ...baseBuildOptions,\n flags: {...baseBuildOptions.flags, stats: true},\n }\n\n await buildStudio(options)\n\n expect(mockOutput.log).toHaveBeenCalledWith('\\nLargest module files:')\n expect(mockOutput.log).toHaveBeenCalledWith(' - test (1 kB)')\n })\n\n it('should handle build errors gracefully', async () => {\n const buildError = new Error('Build failed')\n mockedBuildStaticFiles.mockRejectedValue(buildError)\n\n await buildStudio(baseBuildOptions)\n expect(mockOutput.error).toHaveBeenCalledWith('Failed to build Sanity Studio: Build failed', {\n exit: 1,\n })\n })\n\n it('should handle minify flag', async () => {\n const options = {\n ...baseBuildOptions,\n flags: {...baseBuildOptions.flags, minify: true},\n }\n\n await buildStudio(options)\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n minify: true,\n }),\n )\n })\n\n it('should handle source-maps flag', async () => {\n const options = {\n ...baseBuildOptions,\n flags: {...baseBuildOptions.flags, 'source-maps': true},\n }\n\n await buildStudio(options)\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n sourceMap: true,\n }),\n )\n })\n\n it('should pass basePath from determineBasePath to buildStaticFiles', async () => {\n mockedDetermineBasePath.mockReturnValue('/custom-base-path')\n\n await buildStudio(baseBuildOptions)\n\n expect(mockedDetermineBasePath).toHaveBeenCalledWith({}, 'studio')\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n basePath: '/custom-base-path',\n }),\n )\n })\n\n it('should build vendor dependencies when auto-updates enabled', async () => {\n mockedShouldAutoUpdate.mockReturnValue(true)\n mockedGetAutoUpdatesImportMap.mockReturnValue({test: 'import'})\n mockedBuildVendorDependencies.mockResolvedValue({'vendor-dep': 'path'})\n\n const options = {\n ...baseBuildOptions,\n autoUpdatesEnabled: true,\n }\n\n await buildStudio(options)\n\n expect(mockedBuildVendorDependencies).toHaveBeenCalledWith({\n basePath: '/studio',\n cwd: '/test/work/dir',\n outputDir: path.resolve('/test/work/dir/dist'),\n })\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n importMap: {\n imports: {\n test: 'import',\n 'vendor-dep': 'path',\n },\n },\n }),\n )\n })\n\n it('should not build vendor dependencies when auto-updates disabled', async () => {\n mockedShouldAutoUpdate.mockReturnValue(false)\n\n await buildStudio(baseBuildOptions)\n\n expect(mockedBuildVendorDependencies).not.toHaveBeenCalled()\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n importMap: undefined,\n }),\n )\n })\n\n it('should use default output directory when outDir is not provided', async () => {\n await buildStudio(baseBuildOptions)\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n outputDir: path.resolve('/test/work/dir/dist'),\n }),\n )\n })\n\n it('should use custom output directory when outDir is provided', async () => {\n const options = {\n ...baseBuildOptions,\n outDir: '/custom/output',\n }\n\n await buildStudio(options)\n\n expect(mockedBuildStaticFiles).toHaveBeenCalledWith(\n expect.objectContaining({\n outputDir: path.resolve('/custom/output'),\n }),\n )\n })\n})\n"],"names":["rm","path","logSymbols","afterEach","beforeEach","describe","expect","it","vi","buildStudio","mock","mockedRm","mockedConfirm","hoisted","fn","mockedSelect","mockedGetAppId","mockedCompareDependencyVersions","mockedGetPackageManagerChoice","mockedUpgradePackages","mockedWarnAboutMissingAppId","mockedBuildStaticFiles","mockedBuildVendorDependencies","mockedCheckRequiredDependencies","mockedCheckStudioDependencyVersions","mockedDetermineBasePath","mockedGetAutoUpdatesImportMap","mockedGetStudioEnvVars","mockedShouldAutoUpdate","original","confirm","select","spinner","fail","mockReturnThis","start","succeed","text","getAppId","compareDependencyVersions","warnAboutMissingAppId","getPackageManagerChoice","upgradePackages","buildStaticFiles","buildVendorDependencies","checkRequiredDependencies","checkStudioDependencyVersions","determineBasePath","getAutoUpdatesImportMap","getStudioEnvVars","shouldAutoUpdate","mockOutput","error","log","warn","baseBuildOptions","autoUpdatesEnabled","cliConfig","exit","flags","json","minify","stats","yes","outDir","undefined","output","workDir","clearAllMocks","mockReturnValue","mockResolvedValue","installedSanityVersion","chunks","chosen","restoreAllMocks","toHaveBeenCalledWith","toHaveBeenCalled","options","rejects","toThrow","api","projectId","appType","info","expectedPackages","name","version","appId","deployment","not","versionDifferences","installed","pkg","remote","choices","value","default","message","stringContaining","packageManager","packages","reactCompilerConfig","compilationMode","target","reactCompiler","objectContaining","viteConfig","base","vite","mockBundle","modules","renderedLength","buildError","Error","mockRejectedValue","sourceMap","basePath","test","cwd","outputDir","resolve","importMap","imports"],"mappings":"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"}