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

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