@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,233 +0,0 @@
1
- import { beforeEach, describe, expect, test, vi } from 'vitest';
2
- // Imported mocks
3
- import { determineIsApp } from '../../../util/determineIsApp';
4
- import { readModuleVersion } from '../../../util/readModuleVersion';
5
- import { readPackageManifest } from '../../../util/readPackageManifest';
6
- import { checkRequiredDependencies } from '../checkRequiredDependencies';
7
- // Mocks
8
- vi.mock('../../../util/determineIsApp');
9
- vi.mock('../../../util/readModuleVersion');
10
- vi.mock('../../../util/readPackageManifest');
11
- const mockedDetermineIsApp = vi.mocked(determineIsApp);
12
- const mockedReadModuleVersion = vi.mocked(readModuleVersion);
13
- const mockedReadPackageManifest = vi.mocked(readPackageManifest);
14
- describe('#checkRequiredDependencies', ()=>{
15
- const workDir = '/tmp/test-studio';
16
- const mockOutput = {
17
- error: vi.fn(),
18
- log: vi.fn(),
19
- print: vi.fn(),
20
- warn: vi.fn()
21
- };
22
- const mockCliConfig = {};
23
- beforeEach(()=>{
24
- vi.resetAllMocks();
25
- });
26
- test('should return early if the project is an app', async ()=>{
27
- mockedDetermineIsApp.mockReturnValue(true);
28
- const result = await checkRequiredDependencies({
29
- cliConfig: mockCliConfig,
30
- output: mockOutput,
31
- workDir
32
- });
33
- expect(result).toEqual({
34
- installedSanityVersion: ''
35
- });
36
- expect(mockedReadPackageManifest).not.toHaveBeenCalled();
37
- });
38
- test('should call output.error and return empty string if sanity is not installed', async ()=>{
39
- mockedDetermineIsApp.mockReturnValue(false);
40
- mockedReadPackageManifest.mockResolvedValue({
41
- dependencies: {},
42
- devDependencies: {},
43
- name: 'test-studio',
44
- version: '1.0.0'
45
- });
46
- mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
47
- if (module === 'sanity') {
48
- return null;
49
- }
50
- return '6.1.15';
51
- });
52
- const result = await checkRequiredDependencies({
53
- cliConfig: mockCliConfig,
54
- output: mockOutput,
55
- workDir
56
- });
57
- expect(mockOutput.error).toHaveBeenCalledWith('Failed to read the installed sanity version.', {
58
- exit: 1
59
- });
60
- expect(result).toEqual({
61
- installedSanityVersion: ''
62
- });
63
- });
64
- test('should call output.error and return sanity version if styled-components is not declared', async ()=>{
65
- mockedDetermineIsApp.mockReturnValue(false);
66
- mockedReadPackageManifest.mockResolvedValue({
67
- dependencies: {},
68
- devDependencies: {},
69
- name: 'test-studio',
70
- version: '1.0.0'
71
- });
72
- mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
73
- if (module === 'sanity') {
74
- return '3.0.0';
75
- }
76
- return null // styled-components not installed
77
- ;
78
- });
79
- const result = await checkRequiredDependencies({
80
- cliConfig: mockCliConfig,
81
- output: mockOutput,
82
- workDir
83
- });
84
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Declared dependency `styled-components` is not installed'), {
85
- exit: 1
86
- });
87
- expect(result).toEqual({
88
- installedSanityVersion: '3.0.0'
89
- });
90
- });
91
- test('should call output.error and return sanity version for invalid styled-components version range', async ()=>{
92
- mockedDetermineIsApp.mockReturnValue(false);
93
- mockedReadPackageManifest.mockResolvedValue({
94
- dependencies: {
95
- 'styled-components': 'some-invalid-range'
96
- },
97
- devDependencies: {},
98
- name: 'test-studio',
99
- version: '1.0.0'
100
- });
101
- mockedReadModuleVersion.mockResolvedValue('3.0.0'); // for sanity
102
- const result = await checkRequiredDependencies({
103
- cliConfig: mockCliConfig,
104
- output: mockOutput,
105
- workDir
106
- });
107
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Declared dependency `styled-components` has an invalid version range: `some-invalid-range`'), {
108
- exit: 1
109
- });
110
- expect(result).toEqual({
111
- installedSanityVersion: '3.0.0'
112
- });
113
- });
114
- test('should warn on incompatible declared styled-components version', async ()=>{
115
- mockedDetermineIsApp.mockReturnValue(false);
116
- mockedReadPackageManifest.mockResolvedValue({
117
- dependencies: {
118
- 'styled-components': '^5.0.0'
119
- },
120
- devDependencies: {},
121
- name: 'test-studio',
122
- version: '1.0.0'
123
- });
124
- mockedReadModuleVersion.mockImplementation(async (_dir, _module)=>{
125
- return '6.1.15' // both sanity and styled-components installed
126
- ;
127
- });
128
- await checkRequiredDependencies({
129
- cliConfig: mockCliConfig,
130
- output: mockOutput,
131
- workDir
132
- });
133
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('Declared version of styled-components (^5.0.0) is not compatible with the version required by sanity (^6.1.15)'));
134
- });
135
- test('should not warn on complex but valid styled-components version range', async ()=>{
136
- mockedDetermineIsApp.mockReturnValue(false);
137
- mockedReadPackageManifest.mockResolvedValue({
138
- dependencies: {
139
- 'styled-components': '>=6.0.0 <7.0.0'
140
- },
141
- devDependencies: {},
142
- name: 'test-studio',
143
- version: '1.0.0'
144
- });
145
- mockedReadModuleVersion.mockResolvedValue('6.1.15');
146
- await checkRequiredDependencies({
147
- cliConfig: mockCliConfig,
148
- output: mockOutput,
149
- workDir
150
- });
151
- expect(mockOutput.warn).not.toHaveBeenCalled();
152
- });
153
- test('should call output.error and return sanity version if styled-components is declared but not installed', async ()=>{
154
- mockedDetermineIsApp.mockReturnValue(false);
155
- mockedReadPackageManifest.mockResolvedValue({
156
- dependencies: {
157
- 'styled-components': '^6.1.15'
158
- },
159
- devDependencies: {},
160
- name: 'test-studio',
161
- version: '1.0.0'
162
- });
163
- mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
164
- if (module === 'styled-components') {
165
- return null;
166
- }
167
- return '3.0.0' // sanity version
168
- ;
169
- });
170
- const result = await checkRequiredDependencies({
171
- cliConfig: mockCliConfig,
172
- output: mockOutput,
173
- workDir
174
- });
175
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Declared dependency `styled-components` is not installed'), {
176
- exit: 1
177
- });
178
- expect(result).toEqual({
179
- installedSanityVersion: '3.0.0'
180
- });
181
- });
182
- test('should warn on incompatible installed styled-components version', async ()=>{
183
- mockedDetermineIsApp.mockReturnValue(false);
184
- mockedReadPackageManifest.mockResolvedValue({
185
- dependencies: {
186
- 'styled-components': '^6.1.15'
187
- },
188
- devDependencies: {},
189
- name: 'test-studio',
190
- version: '1.0.0'
191
- });
192
- mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
193
- if (module === 'styled-components') {
194
- return '5.3.6';
195
- }
196
- return '3.0.0' // sanity version
197
- ;
198
- });
199
- await checkRequiredDependencies({
200
- cliConfig: mockCliConfig,
201
- output: mockOutput,
202
- workDir
203
- });
204
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('Installed version of styled-components (5.3.6) is not compatible with the version required by sanity (^6.1.15)'));
205
- });
206
- test('should succeed on happy path', async ()=>{
207
- mockedDetermineIsApp.mockReturnValue(false);
208
- mockedReadPackageManifest.mockResolvedValue({
209
- dependencies: {
210
- 'styled-components': '^6.1.15'
211
- },
212
- devDependencies: {},
213
- name: 'test-studio',
214
- version: '1.0.0'
215
- });
216
- mockedReadModuleVersion.mockImplementation(async (workDir, name)=>{
217
- if (name === 'sanity') return '3.2.0';
218
- if (name === 'styled-components') return '6.1.15';
219
- return null;
220
- });
221
- const result = await checkRequiredDependencies({
222
- cliConfig: mockCliConfig,
223
- output: mockOutput,
224
- workDir
225
- });
226
- expect(result).toEqual({
227
- installedSanityVersion: '3.2.0'
228
- });
229
- expect(mockOutput.warn).not.toHaveBeenCalled();
230
- });
231
- });
232
-
233
- //# sourceMappingURL=checkRequiredDependencies.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/actions/build/__tests__/checkRequiredDependencies.test.ts"],"sourcesContent":["import {type CliConfig, type Output} from '@sanity/cli-core'\nimport {beforeEach, describe, expect, test, vi} from 'vitest'\n\n// Imported mocks\nimport {determineIsApp} from '../../../util/determineIsApp'\nimport {readModuleVersion} from '../../../util/readModuleVersion'\nimport {readPackageManifest} from '../../../util/readPackageManifest'\nimport {checkRequiredDependencies} from '../checkRequiredDependencies'\n\n// Mocks\nvi.mock('../../../util/determineIsApp')\nvi.mock('../../../util/readModuleVersion')\nvi.mock('../../../util/readPackageManifest')\n\nconst mockedDetermineIsApp = vi.mocked(determineIsApp)\nconst mockedReadModuleVersion = vi.mocked(readModuleVersion)\nconst mockedReadPackageManifest = vi.mocked(readPackageManifest)\n\ndescribe('#checkRequiredDependencies', () => {\n const workDir = '/tmp/test-studio'\n const mockOutput = {\n error: vi.fn(),\n log: vi.fn(),\n print: vi.fn(),\n warn: vi.fn(),\n } as unknown as Output\n const mockCliConfig: Partial<CliConfig> = {}\n\n beforeEach(() => {\n vi.resetAllMocks()\n })\n\n test('should return early if the project is an app', async () => {\n mockedDetermineIsApp.mockReturnValue(true)\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n expect(result).toEqual({installedSanityVersion: ''})\n expect(mockedReadPackageManifest).not.toHaveBeenCalled()\n })\n\n test('should call output.error and return empty string if sanity is not installed', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'sanity') {\n return null\n }\n return '6.1.15'\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith('Failed to read the installed sanity version.', {\n exit: 1,\n })\n expect(result).toEqual({installedSanityVersion: ''})\n })\n\n test('should call output.error and return sanity version if styled-components is not declared', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'sanity') {\n return '3.0.0'\n }\n return null // styled-components not installed\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('Declared dependency `styled-components` is not installed'),\n {exit: 1},\n )\n expect(result).toEqual({installedSanityVersion: '3.0.0'})\n })\n\n test('should call output.error and return sanity version for invalid styled-components version range', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': 'some-invalid-range'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockResolvedValue('3.0.0') // for sanity\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining(\n 'Declared dependency `styled-components` has an invalid version range: `some-invalid-range`',\n ),\n {exit: 1},\n )\n expect(result).toEqual({installedSanityVersion: '3.0.0'})\n })\n\n test('should warn on incompatible declared styled-components version', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^5.0.0'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (_dir: string, _module: string) => {\n return '6.1.15' // both sanity and styled-components installed\n })\n\n await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'Declared version of styled-components (^5.0.0) is not compatible with the version required by sanity (^6.1.15)',\n ),\n )\n })\n\n test('should not warn on complex but valid styled-components version range', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '>=6.0.0 <7.0.0'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockResolvedValue('6.1.15')\n\n await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n })\n\n test('should call output.error and return sanity version if styled-components is declared but not installed', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^6.1.15'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'styled-components') {\n return null\n }\n return '3.0.0' // sanity version\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('Declared dependency `styled-components` is not installed'),\n {exit: 1},\n )\n expect(result).toEqual({installedSanityVersion: '3.0.0'})\n })\n\n test('should warn on incompatible installed styled-components version', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^6.1.15'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'styled-components') {\n return '5.3.6'\n }\n return '3.0.0' // sanity version\n })\n\n await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'Installed version of styled-components (5.3.6) is not compatible with the version required by sanity (^6.1.15)',\n ),\n )\n })\n\n test('should succeed on happy path', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^6.1.15'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n\n mockedReadModuleVersion.mockImplementation(async (workDir: string, name: string) => {\n if (name === 'sanity') return '3.2.0'\n if (name === 'styled-components') return '6.1.15'\n return null\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(result).toEqual({installedSanityVersion: '3.2.0'})\n expect(mockOutput.warn).not.toHaveBeenCalled()\n })\n})\n"],"names":["beforeEach","describe","expect","test","vi","determineIsApp","readModuleVersion","readPackageManifest","checkRequiredDependencies","mock","mockedDetermineIsApp","mocked","mockedReadModuleVersion","mockedReadPackageManifest","workDir","mockOutput","error","fn","log","print","warn","mockCliConfig","resetAllMocks","mockReturnValue","result","cliConfig","output","toEqual","installedSanityVersion","not","toHaveBeenCalled","mockResolvedValue","dependencies","devDependencies","name","version","mockImplementation","dir","module","toHaveBeenCalledWith","exit","stringContaining","_dir","_module"],"mappings":"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"}
@@ -1,414 +0,0 @@
1
- import path from 'node:path';
2
- import resolveFrom from 'resolve-from';
3
- import semver from 'semver';
4
- import { beforeEach, describe, expect, test, vi } from 'vitest';
5
- import { readPackageJson } from '../../../util/readPackageJson';
6
- import { checkStudioDependencyVersions } from '../checkStudioDependencyVersions';
7
- // Mock dependencies
8
- vi.mock('node:path');
9
- vi.mock('resolve-from');
10
- vi.mock('../../../util/readPackageJson');
11
- const mockedPath = vi.mocked(path);
12
- const mockedResolveFrom = vi.mocked(resolveFrom);
13
- const mockedResolveFromSilent = vi.fn().mockReturnValue(null);
14
- const mockedReadPackageJson = vi.mocked(readPackageJson);
15
- describe('checkStudioDependencyVersions', ()=>{
16
- const workDir = '/test/work/dir';
17
- const packageJsonPath = '/test/work/dir/package.json';
18
- let mockOutput;
19
- beforeEach(()=>{
20
- vi.resetAllMocks();
21
- // Create mock output
22
- mockOutput = {
23
- error: vi.fn().mockImplementation((message, options)=>{
24
- if (options?.exit !== false) {
25
- throw new Error('process.exit called');
26
- }
27
- }),
28
- log: vi.fn(),
29
- warn: vi.fn()
30
- };
31
- // Mock console methods (keeping for backwards compatibility if needed)
32
- vi.spyOn(console, 'warn').mockImplementation(()=>{});
33
- vi.spyOn(console, 'error').mockImplementation(()=>{});
34
- vi.spyOn(process, 'exit').mockImplementation(()=>{
35
- throw new Error('process.exit called');
36
- });
37
- // Setup default mocks
38
- mockedPath.join.mockReturnValue(packageJsonPath);
39
- mockedResolveFromSilent.mockReturnValue(null);
40
- mockedResolveFrom.silent = mockedResolveFromSilent;
41
- });
42
- describe('when no dependencies are installed', ()=>{
43
- test('should not warn or error when no tracked packages are installed', async ()=>{
44
- mockedReadPackageJson.mockResolvedValue({
45
- dependencies: {},
46
- devDependencies: {},
47
- name: 'test-project',
48
- version: '1.0.0'
49
- });
50
- await checkStudioDependencyVersions(workDir, mockOutput);
51
- expect(mockOutput.warn).not.toHaveBeenCalled();
52
- expect(mockOutput.error).not.toHaveBeenCalled();
53
- });
54
- });
55
- describe('when dependencies are installed', ()=>{
56
- test('should handle packages with valid versions', async ()=>{
57
- mockedReadPackageJson.mockResolvedValueOnce({
58
- dependencies: {
59
- react: '^18.0.0',
60
- 'react-dom': '^18.0.0'
61
- },
62
- name: 'test-project',
63
- version: '1.0.0'
64
- }).mockResolvedValueOnce({
65
- name: 'react',
66
- version: '18.2.0'
67
- }).mockResolvedValueOnce({
68
- name: 'react-dom',
69
- version: '18.2.0'
70
- });
71
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json');
72
- await checkStudioDependencyVersions(workDir, mockOutput);
73
- expect(mockOutput.warn).not.toHaveBeenCalled();
74
- expect(mockOutput.error).not.toHaveBeenCalled();
75
- });
76
- test('should handle packages with untested versions (newer than supported)', async ()=>{
77
- mockedReadPackageJson.mockResolvedValueOnce({
78
- dependencies: {
79
- react: '^20.0.0'
80
- },
81
- name: 'test-project',
82
- version: '1.0.0'
83
- }).mockResolvedValueOnce({
84
- name: 'react',
85
- version: '20.0.0'
86
- });
87
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
88
- await checkStudioDependencyVersions(workDir, mockOutput);
89
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have not yet been marked as supported:'));
90
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('react (installed: 20.0.0, want: ^18 || ^19)'));
91
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('To downgrade, run either:'));
92
- });
93
- test('should handle packages with unsupported versions (older than supported)', async ()=>{
94
- mockedReadPackageJson.mockResolvedValueOnce({
95
- dependencies: {
96
- react: '^16.0.0'
97
- },
98
- name: 'test-project',
99
- version: '1.0.0'
100
- }).mockResolvedValueOnce({
101
- name: 'react',
102
- version: '16.14.0'
103
- });
104
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
105
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
106
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('The following package versions are no longer supported and needs to be upgraded:'), {
107
- exit: 1
108
- });
109
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
110
- exit: 1
111
- });
112
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('To upgrade, run either:'), {
113
- exit: 1
114
- });
115
- });
116
- test('should handle deprecated packages when deprecatedBelow is set', async ()=>{
117
- // We can't easily test this with the current PACKAGES structure since they all have
118
- // deprecatedBelow: null. However, we can at least test that a scenario where
119
- // deprecatedBelow would be used would create the correct PackageInfo structure
120
- // and would trigger a deprecation warning through the filtered array logic
121
- // This test ensures that if the deprecated code path were to be triggered,
122
- // the function would behave correctly
123
- const mockPackageInfo = {
124
- deprecatedBelow: '18.0.0',
125
- installed: semver.coerce('17.0.2'),
126
- isDeprecated: true,
127
- isUnsupported: false,
128
- isUntested: false,
129
- name: 'react',
130
- supported: [
131
- '^18 || ^19'
132
- ]
133
- };
134
- // Manually trigger the deprecated path by simulating the filtered array
135
- const deprecated = [
136
- mockPackageInfo
137
- ];
138
- if (deprecated.length > 0) {
139
- mockOutput.warn(`The following package versions have been deprecated and should be upgraded:
140
-
141
- react (installed: 17.0.2, want: 18.0.0)
142
-
143
- Support for these will be removed in a future release!
144
-
145
- To upgrade, run either:
146
-
147
- npm install "react@18.0.0"
148
-
149
- or
150
-
151
- yarn add "react@18.0.0"
152
-
153
- or
154
-
155
- pnpm add "react@18.0.0"
156
-
157
-
158
- Read more at https://help.sanity.io/upgrade-packages
159
- `);
160
- }
161
- expect(deprecated.length).toBe(1);
162
- expect(deprecated[0].isDeprecated).toBe(true);
163
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have been deprecated and should be upgraded:'));
164
- });
165
- test('should handle packages installed in devDependencies', async ()=>{
166
- mockedReadPackageJson.mockResolvedValueOnce({
167
- dependencies: {},
168
- devDependencies: {
169
- react: '^18.0.0'
170
- },
171
- name: 'test-project',
172
- version: '1.0.0'
173
- }).mockResolvedValueOnce({
174
- name: 'react',
175
- version: '18.2.0'
176
- });
177
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
178
- await checkStudioDependencyVersions(workDir, mockOutput);
179
- expect(mockOutput.warn).not.toHaveBeenCalled();
180
- expect(mockOutput.error).not.toHaveBeenCalled();
181
- });
182
- test('should handle packages where manifest path cannot be resolved', async ()=>{
183
- mockedReadPackageJson.mockResolvedValueOnce({
184
- dependencies: {
185
- react: '^18.0.0'
186
- },
187
- name: 'test-project',
188
- version: '1.0.0'
189
- });
190
- mockedResolveFromSilent.mockReturnValue(null);
191
- await checkStudioDependencyVersions(workDir, mockOutput);
192
- // When manifest path cannot be resolved, the function falls back to using the dependency version
193
- // which gets stripped of non-digit/dot characters, resulting in "1800" which is treated as 1800.0.0
194
- // This is much higher than the supported range, so it becomes "untested"
195
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have not yet been marked as supported:'));
196
- });
197
- test('should handle packages where version cannot be coerced', async ()=>{
198
- mockedReadPackageJson.mockResolvedValueOnce({
199
- dependencies: {
200
- react: 'invalid-version'
201
- },
202
- name: 'test-project',
203
- version: '1.0.0'
204
- });
205
- mockedResolveFromSilent.mockReturnValue(null);
206
- await checkStudioDependencyVersions(workDir, mockOutput);
207
- expect(mockOutput.warn).not.toHaveBeenCalled();
208
- expect(mockOutput.error).not.toHaveBeenCalled();
209
- });
210
- test('should handle mixed package states correctly', async ()=>{
211
- mockedReadPackageJson.mockResolvedValueOnce({
212
- dependencies: {
213
- react: '^16.0.0',
214
- 'react-dom': '^20.0.0',
215
- 'styled-components': '^6.0.0'
216
- },
217
- name: 'test-project',
218
- version: '1.0.0'
219
- }).mockResolvedValueOnce({
220
- name: 'react',
221
- version: '16.14.0'
222
- }).mockResolvedValueOnce({
223
- name: 'react-dom',
224
- version: '20.0.0'
225
- }).mockResolvedValueOnce({
226
- name: 'styled-components',
227
- version: '6.1.0'
228
- });
229
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json').mockReturnValueOnce('/node_modules/styled-components/package.json');
230
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
231
- // Should warn about untested versions
232
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('react-dom (installed: 20.0.0, want: ^18 || ^19)'));
233
- // Should error about unsupported versions
234
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
235
- exit: 1
236
- });
237
- });
238
- });
239
- describe('helper functions edge cases', ()=>{
240
- test('should handle invalid version ranges in helper functions', async ()=>{
241
- // Test the edge case where semver.coerce returns null and falls back to {version: ''}
242
- const originalCoerce = semver.coerce;
243
- let coerceCallCount = 0;
244
- vi.spyOn(semver, 'coerce').mockImplementation((version)=>{
245
- coerceCallCount++;
246
- // Return null for the version in getUpgradeInstructions to test the fallback
247
- if (coerceCallCount > 2 && version && typeof version === 'string' && version.includes('^')) {
248
- return null;
249
- }
250
- return originalCoerce(version);
251
- });
252
- mockedReadPackageJson.mockResolvedValueOnce({
253
- dependencies: {
254
- react: '^16.0.0'
255
- },
256
- name: 'test-project',
257
- version: '1.0.0'
258
- }).mockResolvedValueOnce({
259
- name: 'react',
260
- version: '16.14.0'
261
- });
262
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
263
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
264
- // Should still generate instructions even with invalid version range
265
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('To upgrade, run either:'), {
266
- exit: 1
267
- });
268
- });
269
- });
270
- describe('helper functions', ()=>{
271
- test('should generate correct upgrade instructions', async ()=>{
272
- mockedReadPackageJson.mockResolvedValueOnce({
273
- dependencies: {
274
- react: '^16.0.0'
275
- },
276
- name: 'test-project',
277
- version: '1.0.0'
278
- }).mockResolvedValueOnce({
279
- name: 'react',
280
- version: '16.14.0'
281
- });
282
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
283
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
284
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('npm install "react@18.0.0"'), {
285
- exit: 1
286
- });
287
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('yarn add "react@18.0.0"'), {
288
- exit: 1
289
- });
290
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('pnpm add "react@18.0.0"'), {
291
- exit: 1
292
- });
293
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Read more at https://www.sanity.io/docs/help/upgrade-packages'), {
294
- exit: 1
295
- });
296
- });
297
- test('should generate correct downgrade instructions', async ()=>{
298
- mockedReadPackageJson.mockResolvedValueOnce({
299
- dependencies: {
300
- react: '^20.0.0'
301
- },
302
- name: 'test-project',
303
- version: '1.0.0'
304
- }).mockResolvedValueOnce({
305
- name: 'react',
306
- version: '20.0.0'
307
- });
308
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
309
- await checkStudioDependencyVersions(workDir, mockOutput);
310
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('yarn add "react@18.0.0"'));
311
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('npm install "react@18.0.0"'));
312
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('pnpm install "react@18.0.0"'));
313
- });
314
- test('should list multiple packages correctly', async ()=>{
315
- mockedReadPackageJson.mockResolvedValueOnce({
316
- dependencies: {
317
- react: '^16.0.0',
318
- 'react-dom': '^16.0.0'
319
- },
320
- name: 'test-project',
321
- version: '1.0.0'
322
- }).mockResolvedValueOnce({
323
- name: 'react',
324
- version: '16.14.0'
325
- }).mockResolvedValueOnce({
326
- name: 'react-dom',
327
- version: '16.14.0'
328
- });
329
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json');
330
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
331
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
332
- exit: 1
333
- });
334
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react-dom (installed: 16.14.0, want: ^18 || ^19)'), {
335
- exit: 1
336
- });
337
- });
338
- });
339
- describe('edge cases', ()=>{
340
- test('should handle readPackageJson throwing an error', async ()=>{
341
- mockedReadPackageJson.mockRejectedValue(new Error('Failed to read package.json'));
342
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('Failed to read package.json');
343
- });
344
- test('should handle packages with no dependencies property', async ()=>{
345
- mockedReadPackageJson.mockResolvedValue({
346
- name: 'test-project',
347
- version: '1.0.0'
348
- });
349
- await checkStudioDependencyVersions(workDir, mockOutput);
350
- expect(mockOutput.warn).not.toHaveBeenCalled();
351
- expect(mockOutput.error).not.toHaveBeenCalled();
352
- });
353
- test('should handle packages with empty dependencies', async ()=>{
354
- mockedReadPackageJson.mockResolvedValue({
355
- dependencies: {},
356
- devDependencies: {},
357
- name: 'test-project',
358
- version: '1.0.0'
359
- });
360
- await checkStudioDependencyVersions(workDir, mockOutput);
361
- expect(mockOutput.warn).not.toHaveBeenCalled();
362
- expect(mockOutput.error).not.toHaveBeenCalled();
363
- });
364
- test('should handle semver.coerce returning null', async ()=>{
365
- mockedReadPackageJson.mockResolvedValueOnce({
366
- dependencies: {
367
- react: 'invalid-version'
368
- },
369
- name: 'test-project',
370
- version: '1.0.0'
371
- });
372
- mockedResolveFromSilent.mockReturnValue(null);
373
- // Mock semver.coerce to return null
374
- vi.spyOn(semver, 'coerce').mockReturnValue(null);
375
- await checkStudioDependencyVersions(workDir, mockOutput);
376
- expect(mockOutput.warn).not.toHaveBeenCalled();
377
- expect(mockOutput.error).not.toHaveBeenCalled();
378
- });
379
- test('should handle @sanity/ui package correctly', async ()=>{
380
- mockedReadPackageJson.mockResolvedValueOnce({
381
- dependencies: {
382
- '@sanity/ui': '^2.0.0'
383
- },
384
- name: 'test-project',
385
- version: '1.0.0'
386
- }).mockResolvedValueOnce({
387
- name: '@sanity/ui',
388
- version: '2.0.0'
389
- });
390
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/@sanity/ui/package.json');
391
- await checkStudioDependencyVersions(workDir, mockOutput);
392
- expect(mockOutput.warn).not.toHaveBeenCalled();
393
- expect(mockOutput.error).not.toHaveBeenCalled();
394
- });
395
- test('should handle styled-components package correctly', async ()=>{
396
- mockedReadPackageJson.mockResolvedValueOnce({
397
- dependencies: {
398
- 'styled-components': '^6.0.0'
399
- },
400
- name: 'test-project',
401
- version: '1.0.0'
402
- }).mockResolvedValueOnce({
403
- name: 'styled-components',
404
- version: '6.1.0'
405
- });
406
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/styled-components/package.json');
407
- await checkStudioDependencyVersions(workDir, mockOutput);
408
- expect(mockOutput.warn).not.toHaveBeenCalled();
409
- expect(mockOutput.error).not.toHaveBeenCalled();
410
- });
411
- });
412
- });
413
-
414
- //# sourceMappingURL=checkStudioDependencyVersions.test.js.map