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

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 (527) hide show
  1. package/README.md +2907 -109
  2. package/dist/actions/dataset/create.d.ts +49 -0
  3. package/dist/actions/dataset/create.js +48 -0
  4. package/dist/actions/dataset/create.js.map +1 -0
  5. package/dist/actions/dataset/determineDatasetAclMode.d.ts +37 -0
  6. package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
  7. package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
  8. package/dist/actions/debug/gatherDebugInfo.js +15 -21
  9. package/dist/actions/debug/gatherDebugInfo.js.map +1 -1
  10. package/dist/actions/debug/types.d.ts +0 -2
  11. package/dist/actions/debug/types.js.map +1 -1
  12. package/dist/actions/deploy/deployApp.js +13 -0
  13. package/dist/actions/deploy/deployApp.js.map +1 -1
  14. package/dist/actions/init/remoteTemplate.js +1 -1
  15. package/dist/actions/init/remoteTemplate.js.map +1 -1
  16. package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
  17. package/dist/actions/manifest/extractAppManifest.js +51 -0
  18. package/dist/actions/manifest/extractAppManifest.js.map +1 -0
  19. package/dist/actions/manifest/extractManifest.js +1 -1
  20. package/dist/actions/manifest/extractManifest.js.map +1 -1
  21. package/dist/actions/manifest/types.d.ts +6 -1
  22. package/dist/actions/manifest/types.js.map +1 -1
  23. package/dist/actions/media/importAspects.js +2 -1
  24. package/dist/actions/media/importAspects.js.map +1 -1
  25. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
  26. package/dist/actions/telemetry/resolveConsent.d.ts +1 -9
  27. package/dist/actions/telemetry/resolveConsent.js +2 -2
  28. package/dist/actions/telemetry/resolveConsent.js.map +1 -1
  29. package/dist/actions/telemetry/setConsent.d.ts +1 -4
  30. package/dist/actions/telemetry/setConsent.js +4 -8
  31. package/dist/actions/telemetry/setConsent.js.map +1 -1
  32. package/dist/commands/dataset/create.d.ts +0 -2
  33. package/dist/commands/dataset/create.js +8 -54
  34. package/dist/commands/dataset/create.js.map +1 -1
  35. package/dist/commands/debug.js +5 -9
  36. package/dist/commands/debug.js.map +1 -1
  37. package/dist/commands/init.d.ts +6 -1
  38. package/dist/commands/init.js +358 -20
  39. package/dist/commands/init.js.map +1 -1
  40. package/dist/commands/manifest/extract.js +7 -8
  41. package/dist/commands/manifest/extract.js.map +1 -1
  42. package/dist/commands/telemetry/disable.js +0 -1
  43. package/dist/commands/telemetry/disable.js.map +1 -1
  44. package/dist/commands/telemetry/enable.js +0 -1
  45. package/dist/commands/telemetry/enable.js.map +1 -1
  46. package/dist/commands/telemetry/status.js +1 -3
  47. package/dist/commands/telemetry/status.js.map +1 -1
  48. package/dist/config/createCliConfig.d.ts +9 -0
  49. package/dist/hooks/prerun/flushTelemetry.worker.d.ts +2 -0
  50. package/dist/hooks/prerun/flushTelemetry.worker.js +22 -0
  51. package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -0
  52. package/dist/hooks/prerun/setupTelemetry.js +65 -1
  53. package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
  54. package/dist/prompts/init/promptForTypescript.d.ts +2 -0
  55. package/dist/prompts/init/promptForTypescript.js +15 -0
  56. package/dist/prompts/init/promptForTypescript.js.map +1 -0
  57. package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
  58. package/dist/prompts/promptForDatasetAclMode.js +27 -0
  59. package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
  60. package/dist/prompts/promptForDatasetName.d.ts +1 -1
  61. package/dist/prompts/promptForDatasetName.js +4 -1
  62. package/dist/prompts/promptForDatasetName.js.map +1 -1
  63. package/dist/services/organizations.d.ts +3 -1
  64. package/dist/services/organizations.js +2 -1
  65. package/dist/services/organizations.js.map +1 -1
  66. package/dist/services/telemetry.d.ts +2 -0
  67. package/dist/services/telemetry.js +20 -0
  68. package/dist/services/telemetry.js.map +1 -0
  69. package/dist/services/user.d.ts +5 -0
  70. package/dist/services/user.js +12 -1
  71. package/dist/services/user.js.map +1 -1
  72. package/dist/services/userApplications.d.ts +3 -1
  73. package/dist/services/userApplications.js +5 -1
  74. package/dist/services/userApplications.js.map +1 -1
  75. package/dist/telemetry/cli.telemetry.d.ts +20 -0
  76. package/dist/telemetry/cli.telemetry.js +8 -0
  77. package/dist/telemetry/cli.telemetry.js.map +1 -0
  78. package/dist/telemetry/store/cleanupOldTelemetryFiles.d.ts +5 -0
  79. package/dist/telemetry/store/cleanupOldTelemetryFiles.js +30 -0
  80. package/dist/telemetry/store/cleanupOldTelemetryFiles.js.map +1 -0
  81. package/dist/telemetry/store/createTelemetryStore.d.ts +39 -0
  82. package/dist/telemetry/store/createTelemetryStore.js +95 -0
  83. package/dist/telemetry/store/createTelemetryStore.js.map +1 -0
  84. package/dist/telemetry/store/createTraceId.d.ts +10 -0
  85. package/dist/telemetry/store/createTraceId.js +10 -0
  86. package/dist/telemetry/store/createTraceId.js.map +1 -0
  87. package/dist/telemetry/store/debug.d.ts +5 -0
  88. package/dist/telemetry/store/debug.js +7 -0
  89. package/dist/telemetry/store/debug.js.map +1 -0
  90. package/dist/telemetry/store/findTelemetryFiles.d.ts +13 -0
  91. package/dist/telemetry/store/findTelemetryFiles.js +34 -0
  92. package/dist/telemetry/store/findTelemetryFiles.js.map +1 -0
  93. package/dist/telemetry/store/flushTelemetryFiles.d.ts +20 -0
  94. package/dist/telemetry/store/flushTelemetryFiles.js +107 -0
  95. package/dist/telemetry/store/flushTelemetryFiles.js.map +1 -0
  96. package/dist/telemetry/store/generateTelemetryFilePath.d.ts +17 -0
  97. package/dist/telemetry/store/generateTelemetryFilePath.js +30 -0
  98. package/dist/telemetry/store/generateTelemetryFilePath.js.map +1 -0
  99. package/dist/telemetry/store/getTelemetryBaseInfo.d.ts +27 -0
  100. package/dist/telemetry/store/getTelemetryBaseInfo.js +34 -0
  101. package/dist/telemetry/store/getTelemetryBaseInfo.js.map +1 -0
  102. package/dist/telemetry/store/logger.d.ts +6 -0
  103. package/dist/telemetry/store/logger.js +54 -0
  104. package/dist/telemetry/store/logger.js.map +1 -0
  105. package/dist/telemetry/store/trace.d.ts +6 -0
  106. package/dist/telemetry/store/trace.js +150 -0
  107. package/dist/telemetry/store/trace.js.map +1 -0
  108. package/dist/telemetry/utils/readNDJSON.d.ts +10 -0
  109. package/dist/telemetry/utils/readNDJSON.js +18 -0
  110. package/dist/telemetry/utils/readNDJSON.js.map +1 -0
  111. package/dist/util/detectRuntime.d.ts +8 -0
  112. package/dist/util/detectRuntime.js +20 -0
  113. package/dist/util/detectRuntime.js.map +1 -0
  114. package/dist/util/isStaging.d.ts +7 -0
  115. package/dist/util/isStaging.js +10 -0
  116. package/dist/util/isStaging.js.map +1 -0
  117. package/dist/util/parseArguments.d.ts +35 -0
  118. package/dist/util/parseArguments.js +42 -0
  119. package/dist/util/parseArguments.js.map +1 -0
  120. package/oclif.manifest.json +7 -1
  121. package/package.json +25 -18
  122. package/templates/app-quickstart/src/App.css +20 -0
  123. package/templates/app-quickstart/src/App.tsx +25 -0
  124. package/templates/app-quickstart/src/ExampleComponent.css +90 -0
  125. package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
  126. package/templates/app-sanity-ui/src/App.tsx +34 -0
  127. package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
  128. package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
  129. package/templates/blog/README.md +11 -0
  130. package/templates/blog/schemaTypes/author.js +50 -0
  131. package/templates/blog/schemaTypes/blockContent.js +67 -0
  132. package/templates/blog/schemaTypes/category.js +19 -0
  133. package/templates/blog/schemaTypes/index.js +6 -0
  134. package/templates/blog/schemaTypes/post.js +65 -0
  135. package/templates/blog/static/.gitkeep +1 -0
  136. package/templates/clean/README.md +9 -0
  137. package/templates/clean/schemaTypes/index.js +1 -0
  138. package/templates/clean/static/.gitkeep +1 -0
  139. package/templates/ecommerce/README.md +11 -0
  140. package/templates/ecommerce/plugins/.gitkeep +1 -0
  141. package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
  142. package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
  143. package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
  144. package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
  145. package/templates/ecommerce/schemaTypes/category.js +39 -0
  146. package/templates/ecommerce/schemaTypes/index.js +23 -0
  147. package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
  148. package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
  149. package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
  150. package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
  151. package/templates/ecommerce/schemaTypes/product.js +83 -0
  152. package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
  153. package/templates/ecommerce/schemaTypes/vendor.js +39 -0
  154. package/templates/ecommerce/static/.gitkeep +1 -0
  155. package/templates/get-started/README.md +9 -0
  156. package/templates/get-started/plugins/.gitkeep +1 -0
  157. package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
  158. package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
  159. package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
  160. package/templates/get-started/schemaTypes/index.ts +1 -0
  161. package/templates/get-started/static/.gitkeep +1 -0
  162. package/templates/moviedb/README.md +10 -0
  163. package/templates/moviedb/schemaTypes/blockContent.js +67 -0
  164. package/templates/moviedb/schemaTypes/castMember.js +37 -0
  165. package/templates/moviedb/schemaTypes/crewMember.js +52 -0
  166. package/templates/moviedb/schemaTypes/index.js +22 -0
  167. package/templates/moviedb/schemaTypes/movie.js +85 -0
  168. package/templates/moviedb/schemaTypes/person.js +37 -0
  169. package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
  170. package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
  171. package/templates/moviedb/schemaTypes/screening.js +81 -0
  172. package/templates/moviedb/static/.gitkeep +1 -0
  173. package/templates/quickstart/README.md +9 -0
  174. package/templates/quickstart/schemaTypes/index.js +1 -0
  175. package/templates/quickstart/static/.gitkeep +1 -0
  176. package/templates/shared/gitignore.txt +29 -0
  177. package/templates/shared/tsconfig.json +17 -0
  178. package/templates/shopify/README.md +85 -0
  179. package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
  180. package/templates/shopify/components/icons/Shopify.tsx +20 -0
  181. package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
  182. package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
  183. package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
  184. package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
  185. package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
  186. package/templates/shopify/components/media/ColorTheme.tsx +38 -0
  187. package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
  188. package/templates/shopify/components/studio/Navbar.tsx +29 -0
  189. package/templates/shopify/constants.ts +61 -0
  190. package/templates/shopify/docs/features.md +158 -0
  191. package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
  192. package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
  193. package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
  194. package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
  195. package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
  196. package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
  197. package/templates/shopify/schemaTypes/documents/page.ts +70 -0
  198. package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
  199. package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
  200. package/templates/shopify/schemaTypes/index.ts +108 -0
  201. package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
  202. package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
  203. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
  204. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
  205. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
  206. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
  207. package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
  208. package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
  209. package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
  210. package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
  211. package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
  212. package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
  213. package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
  214. package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
  215. package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
  216. package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
  217. package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
  218. package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
  219. package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
  220. package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
  221. package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
  222. package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
  223. package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
  224. package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
  225. package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
  226. package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
  227. package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
  228. package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
  229. package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
  230. package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
  231. package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
  232. package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
  233. package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
  234. package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
  235. package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
  236. package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
  237. package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
  238. package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
  239. package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
  240. package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
  241. package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
  242. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
  243. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
  244. package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
  245. package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
  246. package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
  247. package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
  248. package/templates/shopify/static/.gitkeep +1 -0
  249. package/templates/shopify/structure/collectionStructure.ts +9 -0
  250. package/templates/shopify/structure/colorThemeStructure.ts +9 -0
  251. package/templates/shopify/structure/homeStructure.ts +9 -0
  252. package/templates/shopify/structure/index.ts +57 -0
  253. package/templates/shopify/structure/pageStructure.ts +11 -0
  254. package/templates/shopify/structure/productStructure.ts +51 -0
  255. package/templates/shopify/structure/settingStructure.ts +9 -0
  256. package/templates/shopify/utils/blocksToText.ts +20 -0
  257. package/templates/shopify/utils/defineStructure.ts +11 -0
  258. package/templates/shopify/utils/getPriceRange.ts +24 -0
  259. package/templates/shopify/utils/shopifyUrls.ts +22 -0
  260. package/templates/shopify/utils/validateSlug.ts +18 -0
  261. package/templates/shopify-online-storefront/README.md +54 -0
  262. package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
  263. package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
  264. package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
  265. package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
  266. package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
  267. package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
  268. package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
  269. package/templates/shopify-online-storefront/constants.ts +18 -0
  270. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
  271. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
  272. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
  273. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
  274. package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
  275. package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
  276. package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
  277. package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
  278. package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
  279. package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
  280. package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
  281. package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
  282. package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
  283. package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
  284. package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
  285. package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
  286. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
  287. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
  288. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
  289. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
  290. package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
  291. package/templates/shopify-online-storefront/structure/index.ts +37 -0
  292. package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
  293. package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
  294. package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
  295. package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
  296. package/dist/actions/build/__tests__/buildApp.test.js +0 -367
  297. package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
  298. package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
  299. package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
  300. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
  301. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
  302. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
  303. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
  304. package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
  305. package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
  306. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
  307. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
  308. package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
  309. package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
  310. package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
  311. package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
  312. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
  313. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
  314. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
  315. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
  316. package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
  317. package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
  318. package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
  319. package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
  320. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
  321. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
  322. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
  323. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
  324. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
  325. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
  326. package/dist/actions/media/__tests__/importMedia.test.js +0 -182
  327. package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
  328. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
  329. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
  330. package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
  331. package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
  332. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
  333. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
  334. package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
  335. package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
  336. package/dist/commands/__tests__/blueprints.test.js +0 -54
  337. package/dist/commands/__tests__/blueprints.test.js.map +0 -1
  338. package/dist/commands/__tests__/build.test.js +0 -132
  339. package/dist/commands/__tests__/build.test.js.map +0 -1
  340. package/dist/commands/__tests__/codemod.test.js +0 -271
  341. package/dist/commands/__tests__/codemod.test.js.map +0 -1
  342. package/dist/commands/__tests__/debug.test.js +0 -590
  343. package/dist/commands/__tests__/debug.test.js.map +0 -1
  344. package/dist/commands/__tests__/deploy.test.js +0 -1945
  345. package/dist/commands/__tests__/deploy.test.js.map +0 -1
  346. package/dist/commands/__tests__/dev.test.js +0 -453
  347. package/dist/commands/__tests__/dev.test.js.map +0 -1
  348. package/dist/commands/__tests__/exec.test.js +0 -207
  349. package/dist/commands/__tests__/exec.test.js.map +0 -1
  350. package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
  351. package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
  352. package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
  353. package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
  354. package/dist/commands/__tests__/init/init.plan.test.js +0 -279
  355. package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
  356. package/dist/commands/__tests__/init/init.setup.test.js +0 -335
  357. package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
  358. package/dist/commands/__tests__/install.test.js +0 -282
  359. package/dist/commands/__tests__/install.test.js.map +0 -1
  360. package/dist/commands/__tests__/learn.test.js +0 -29
  361. package/dist/commands/__tests__/learn.test.js.map +0 -1
  362. package/dist/commands/__tests__/logout.test.js +0 -91
  363. package/dist/commands/__tests__/logout.test.js.map +0 -1
  364. package/dist/commands/__tests__/manage.test.js +0 -110
  365. package/dist/commands/__tests__/manage.test.js.map +0 -1
  366. package/dist/commands/__tests__/migration.test.js +0 -119
  367. package/dist/commands/__tests__/migration.test.js.map +0 -1
  368. package/dist/commands/__tests__/preview.test.js +0 -261
  369. package/dist/commands/__tests__/preview.test.js.map +0 -1
  370. package/dist/commands/__tests__/start.test.js +0 -253
  371. package/dist/commands/__tests__/start.test.js.map +0 -1
  372. package/dist/commands/__tests__/undeploy.test.js +0 -382
  373. package/dist/commands/__tests__/undeploy.test.js.map +0 -1
  374. package/dist/commands/__tests__/versions.test.js +0 -142
  375. package/dist/commands/__tests__/versions.test.js.map +0 -1
  376. package/dist/commands/backup/__tests__/disable.test.js +0 -204
  377. package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
  378. package/dist/commands/backup/__tests__/download.test.js +0 -768
  379. package/dist/commands/backup/__tests__/download.test.js.map +0 -1
  380. package/dist/commands/backup/__tests__/enable.test.js +0 -286
  381. package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
  382. package/dist/commands/backup/__tests__/list.test.js +0 -330
  383. package/dist/commands/backup/__tests__/list.test.js.map +0 -1
  384. package/dist/commands/cors/__tests__/add.test.js +0 -376
  385. package/dist/commands/cors/__tests__/add.test.js.map +0 -1
  386. package/dist/commands/cors/__tests__/delete.test.js +0 -308
  387. package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
  388. package/dist/commands/cors/__tests__/list.test.js +0 -241
  389. package/dist/commands/cors/__tests__/list.test.js.map +0 -1
  390. package/dist/commands/dataset/__tests__/copy.test.js +0 -628
  391. package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
  392. package/dist/commands/dataset/__tests__/create.test.js +0 -342
  393. package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
  394. package/dist/commands/dataset/__tests__/delete.test.js +0 -231
  395. package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
  396. package/dist/commands/dataset/__tests__/export.test.js +0 -601
  397. package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
  398. package/dist/commands/dataset/__tests__/import.test.js +0 -53
  399. package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
  400. package/dist/commands/dataset/__tests__/list.test.js +0 -216
  401. package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
  402. package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
  403. package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
  404. package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
  405. package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
  406. package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
  407. package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
  408. package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
  409. package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
  410. package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
  411. package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
  412. package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
  413. package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
  414. package/dist/commands/docs/__tests__/browse.test.js +0 -29
  415. package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
  416. package/dist/commands/docs/__tests__/read.test.js +0 -78
  417. package/dist/commands/docs/__tests__/read.test.js.map +0 -1
  418. package/dist/commands/docs/__tests__/search.test.js +0 -255
  419. package/dist/commands/docs/__tests__/search.test.js.map +0 -1
  420. package/dist/commands/documents/__tests__/create.test.js +0 -1030
  421. package/dist/commands/documents/__tests__/create.test.js.map +0 -1
  422. package/dist/commands/documents/__tests__/delete.test.js +0 -300
  423. package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
  424. package/dist/commands/documents/__tests__/get.test.js +0 -182
  425. package/dist/commands/documents/__tests__/get.test.js.map +0 -1
  426. package/dist/commands/documents/__tests__/query.test.js +0 -300
  427. package/dist/commands/documents/__tests__/query.test.js.map +0 -1
  428. package/dist/commands/documents/__tests__/validate.test.js +0 -249
  429. package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
  430. package/dist/commands/graphql/__tests__/list.test.js +0 -240
  431. package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
  432. package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
  433. package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
  434. package/dist/commands/hook/__tests__/attempt.test.js +0 -275
  435. package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
  436. package/dist/commands/hook/__tests__/create.test.js +0 -119
  437. package/dist/commands/hook/__tests__/create.test.js.map +0 -1
  438. package/dist/commands/hook/__tests__/delete.test.js +0 -233
  439. package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
  440. package/dist/commands/hook/__tests__/list.test.js +0 -145
  441. package/dist/commands/hook/__tests__/list.test.js.map +0 -1
  442. package/dist/commands/hook/__tests__/logs.test.js +0 -798
  443. package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
  444. package/dist/commands/manifest/__tests__/extract.test.js +0 -132
  445. package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
  446. package/dist/commands/mcp/__tests__/configure.test.js +0 -397
  447. package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
  448. package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
  449. package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
  450. package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
  451. package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
  452. package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
  453. package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
  454. package/dist/commands/media/__tests__/export.test.js +0 -697
  455. package/dist/commands/media/__tests__/export.test.js.map +0 -1
  456. package/dist/commands/media/__tests__/import.test.js +0 -347
  457. package/dist/commands/media/__tests__/import.test.js.map +0 -1
  458. package/dist/commands/openapi/__tests__/get.test.js +0 -149
  459. package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
  460. package/dist/commands/openapi/__tests__/list.test.js +0 -113
  461. package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
  462. package/dist/commands/projects/__tests__/list.test.js +0 -154
  463. package/dist/commands/projects/__tests__/list.test.js.map +0 -1
  464. package/dist/commands/schema/__tests__/delete.test.js +0 -454
  465. package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
  466. package/dist/commands/schema/__tests__/deploy.test.js +0 -348
  467. package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
  468. package/dist/commands/schema/__tests__/extract.test.js +0 -121
  469. package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
  470. package/dist/commands/schema/__tests__/list.test.js +0 -399
  471. package/dist/commands/schema/__tests__/list.test.js.map +0 -1
  472. package/dist/commands/schema/__tests__/validate.test.js +0 -121
  473. package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
  474. package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
  475. package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
  476. package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
  477. package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
  478. package/dist/commands/telemetry/__tests__/status.test.js +0 -155
  479. package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
  480. package/dist/commands/tokens/__tests__/add.test.js +0 -435
  481. package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
  482. package/dist/commands/tokens/__tests__/delete.test.js +0 -405
  483. package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
  484. package/dist/commands/tokens/__tests__/list.test.js +0 -395
  485. package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
  486. package/dist/commands/users/__tests__/invite.test.js +0 -362
  487. package/dist/commands/users/__tests__/invite.test.js.map +0 -1
  488. package/dist/commands/users/__tests__/list.test.js +0 -407
  489. package/dist/commands/users/__tests__/list.test.js.map +0 -1
  490. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
  491. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
  492. package/dist/services/__tests__/datasetAliases.test.js +0 -131
  493. package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
  494. package/dist/services/__tests__/datasets.test.js +0 -436
  495. package/dist/services/__tests__/datasets.test.js.map +0 -1
  496. package/dist/services/__tests__/graphql.test.js +0 -43
  497. package/dist/services/__tests__/graphql.test.js.map +0 -1
  498. package/dist/services/__tests__/mediaLibraries.test.js +0 -88
  499. package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
  500. package/dist/services/__tests__/projects.test.js +0 -41
  501. package/dist/services/__tests__/projects.test.js.map +0 -1
  502. package/dist/services/__tests__/userApplications.test.js +0 -113
  503. package/dist/services/__tests__/userApplications.test.js.map +0 -1
  504. package/dist/util/__tests__/appId.test.js +0 -31
  505. package/dist/util/__tests__/appId.test.js.map +0 -1
  506. package/dist/util/__tests__/cliClient.test.js +0 -184
  507. package/dist/util/__tests__/cliClient.test.js.map +0 -1
  508. package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
  509. package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
  510. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
  511. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
  512. package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
  513. package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
  514. package/dist/util/__tests__/getCliVersion.test.js +0 -28
  515. package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
  516. package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
  517. package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
  518. package/dist/util/__tests__/getWorkspace.test.js +0 -37
  519. package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
  520. package/dist/util/__tests__/readPackageJson.test.js +0 -69
  521. package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
  522. package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
  523. package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
  524. package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
  525. package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
  526. package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
  527. 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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"}