@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,453 +0,0 @@
1
- import { readFile, writeFile } from 'node:fs/promises';
2
- import { createServer } from 'node:http';
3
- import { join } from 'node:path';
4
- import { runCommand } from '@oclif/test';
5
- import { getProjectCliClient } from '@sanity/cli-core';
6
- import { confirm } from '@sanity/cli-core/ux';
7
- import { testCommand } from '@sanity/cli-test';
8
- import { afterEach, describe, expect, test, vi } from 'vitest';
9
- import { testExample } from '~test/helpers/testExample.js';
10
- import { checkRequiredDependencies } from '../../actions/build/checkRequiredDependencies.js';
11
- import { compareDependencyVersions } from '../../util/compareDependencyVersions.js';
12
- import { getPackageManagerChoice } from '../../util/packageManager/packageManagerChoice.js';
13
- import { upgradePackages } from '../../util/packageManager/upgradePackages.js';
14
- import { DevCommand } from '../dev.js';
15
- vi.mock('../../actions/build/checkRequiredDependencies.js', ()=>({
16
- checkRequiredDependencies: vi.fn().mockResolvedValue({
17
- installedSanityVersion: '3.0.0'
18
- })
19
- }));
20
- vi.mock('../../util/compareDependencyVersions.js', ()=>({
21
- compareDependencyVersions: vi.fn().mockResolvedValue([])
22
- }));
23
- vi.mock('@sanity/cli-core/ux', async ()=>{
24
- const actual = await vi.importActual('@sanity/cli-core/ux');
25
- return {
26
- ...actual,
27
- confirm: vi.fn()
28
- };
29
- });
30
- vi.mock('../../util/packageManager/upgradePackages.js');
31
- vi.mock('../../util/packageManager/packageManagerChoice.js');
32
- vi.mock('@sanity/cli-core', async ()=>{
33
- const actual = await vi.importActual('@sanity/cli-core');
34
- return {
35
- ...actual,
36
- getProjectCliClient: vi.fn(),
37
- isInteractive: vi.fn(()=>true)
38
- };
39
- });
40
- const mockCheckRequiredDependencies = vi.mocked(checkRequiredDependencies);
41
- const mockCompareDependencyVersions = vi.mocked(compareDependencyVersions);
42
- const mockConfirm = vi.mocked(confirm);
43
- const mockUpgradePackages = vi.mocked(upgradePackages);
44
- const mockGetPackageManagerChoice = vi.mocked(getPackageManagerChoice);
45
- const mockGetProjectCliClient = vi.mocked(getProjectCliClient);
46
- describe('#dev', ()=>{
47
- afterEach(()=>{
48
- vi.clearAllMocks();
49
- });
50
- test('help text is correct', async ()=>{
51
- const { stdout } = await runCommand([
52
- 'dev',
53
- '--help'
54
- ]);
55
- expect(stdout).toMatchInlineSnapshot(`
56
- "Starts a local development server for Sanity Studio with live reloading
57
-
58
- USAGE
59
- $ sanity dev [--auto-updates] [--host <value>]
60
- [--load-in-dashboard] [--port <value>]
61
-
62
- FLAGS
63
- --[no-]auto-updates Automatically update Sanity Studio dependencies.
64
- --host=<value> [default: localhost] The local network interface at
65
- which to listen.
66
- --[no-]load-in-dashboard Load the app/studio in the Sanity dashboard.
67
- --port=<value> [default: 3333] TCP port to start server on.
68
-
69
- DESCRIPTION
70
- Starts a local development server for Sanity Studio with live reloading
71
-
72
- EXAMPLES
73
- $ sanity dev --host=0.0.0.0
74
-
75
- $ sanity dev --port=1942
76
-
77
- $ sanity dev --load-in-dashboard
78
-
79
- "
80
- `);
81
- });
82
- test('shows an error for invalid flags', async ()=>{
83
- const { error } = await testCommand(DevCommand, [
84
- '--invalid'
85
- ], {
86
- mocks: {
87
- isInteractive: true
88
- }
89
- });
90
- expect(error?.message).toContain('Nonexistent flag: --invalid');
91
- });
92
- describe('basic-app', ()=>{
93
- test('should start the dev server for app', async ()=>{
94
- const cwd = await testExample('basic-app');
95
- process.cwd = ()=>cwd;
96
- const { error, result, stderr, stdout } = await testCommand(DevCommand, [
97
- '--port',
98
- '5333'
99
- ], {
100
- config: {
101
- root: cwd
102
- },
103
- mocks: {
104
- isInteractive: true
105
- }
106
- });
107
- expect(error).toBeUndefined();
108
- expect(stdout).toContain('Dev server started on port 5333');
109
- expect(stdout).toContain('View your app in the Sanity dashboard here:');
110
- expect(stderr).toContain('Checking configuration files');
111
- await result.close?.();
112
- });
113
- test('should warn when --no-load-in-dashboard is used with app', async ()=>{
114
- const cwd = await testExample('basic-app');
115
- process.cwd = ()=>cwd;
116
- const { error, result, stderr, stdout } = await testCommand(DevCommand, [
117
- '--no-load-in-dashboard',
118
- '--port',
119
- '5334'
120
- ], {
121
- config: {
122
- root: cwd
123
- },
124
- mocks: {
125
- isInteractive: true
126
- }
127
- });
128
- expect(error).toBeUndefined();
129
- expect(stderr).toContain('Apps cannot run without the Sanity dashboard');
130
- expect(stderr).toContain('Starting dev server with the --load-in-dashboard flag set to true');
131
- expect(stdout).toContain('Dev server started on port 5334');
132
- await result.close?.();
133
- });
134
- test('should automatically change port if conflicted', async ()=>{
135
- const cwd = await testExample('basic-app');
136
- process.cwd = ()=>cwd;
137
- // Create a server on port 5338 to block it
138
- const server = createServer();
139
- await new Promise((resolve)=>{
140
- server.listen(5338, 'localhost', resolve);
141
- });
142
- try {
143
- const { error, result, stdout } = await testCommand(DevCommand, [
144
- '--port',
145
- '5338'
146
- ], {
147
- config: {
148
- root: cwd
149
- },
150
- mocks: {
151
- isInteractive: true
152
- }
153
- });
154
- expect(error).toBeUndefined();
155
- // Should automatically pick a different port
156
- expect(stdout).toMatch(/Dev server started on port \d{4}/);
157
- expect(stdout).not.toContain('Dev server started on port 5338');
158
- expect(stdout).toContain('View your app in the Sanity dashboard here:');
159
- await result.close?.();
160
- } finally{
161
- // Clean up the server
162
- await new Promise((resolve, reject)=>{
163
- server.close((err)=>{
164
- if (err) reject(err);
165
- else resolve();
166
- });
167
- });
168
- }
169
- });
170
- test('should error when organizationId is missing from config', async ()=>{
171
- const cwd = await testExample('basic-app');
172
- process.cwd = ()=>cwd;
173
- // Modify the config to remove organizationId
174
- const configPath = join(cwd, 'sanity.cli.ts');
175
- const existingConfig = await readFile(configPath, 'utf8');
176
- const modifiedConfig = existingConfig.replace(/organizationId: '[^']*',?/, '');
177
- await writeFile(configPath, modifiedConfig);
178
- const { error } = await testCommand(DevCommand, [
179
- '--port',
180
- '5341'
181
- ], {
182
- config: {
183
- root: cwd
184
- },
185
- mocks: {
186
- isInteractive: true
187
- }
188
- });
189
- expect(error).toBeDefined();
190
- expect(error?.message).toContain('Apps require an organization ID (orgId)');
191
- expect(error?.oclif?.exit).toBe(1);
192
- });
193
- });
194
- describe('basic-studio', ()=>{
195
- test('should start the dev server for studio', async ()=>{
196
- const cwd = await testExample('basic-studio');
197
- process.cwd = ()=>cwd;
198
- const { error, result, stderr, stdout } = await testCommand(DevCommand, [
199
- '--port',
200
- '5335'
201
- ], {
202
- config: {
203
- root: cwd
204
- },
205
- mocks: {
206
- isInteractive: true
207
- }
208
- });
209
- expect(error).toBeUndefined();
210
- expect(stdout).toContain('Sanity Studio using vite@');
211
- expect(stdout).toContain('ready in');
212
- expect(stdout).toContain('ms and running at http://localhost:5335');
213
- expect(stderr).toContain('Checking configuration files');
214
- await result.close?.();
215
- });
216
- test('should start with custom host configuration', async ()=>{
217
- const cwd = await testExample('basic-studio');
218
- process.cwd = ()=>cwd;
219
- const { error, result, stdout } = await testCommand(DevCommand, [
220
- '--host',
221
- '127.0.0.1',
222
- '--port',
223
- '5336'
224
- ], {
225
- config: {
226
- root: cwd
227
- },
228
- mocks: {
229
- isInteractive: true
230
- }
231
- });
232
- expect(error).toBeUndefined();
233
- expect(stdout).toContain('http://127.0.0.1:5336');
234
- await result.close?.();
235
- });
236
- test('should start with load-in-dashboard', async ()=>{
237
- const cwd = await testExample('basic-studio');
238
- process.cwd = ()=>cwd;
239
- const projectId = 'test-project';
240
- // Need to modify the sanity config to include projectId for this test
241
- const configPath = join(cwd, 'sanity.cli.ts');
242
- const existingConfig = await readFile(configPath, 'utf8');
243
- // Add projectId to the config
244
- const modifiedConfig = existingConfig.replace(/projectId: '.*',/, `projectId: '${projectId}',`);
245
- await writeFile(configPath, modifiedConfig);
246
- mockGetProjectCliClient.mockResolvedValue({
247
- projects: {
248
- getById: vi.fn().mockResolvedValue({
249
- organizationId: 'test-org'
250
- })
251
- }
252
- });
253
- const { error, result, stderr, stdout } = await testCommand(DevCommand, [
254
- '--load-in-dashboard',
255
- '--port',
256
- '5340'
257
- ], {
258
- config: {
259
- root: cwd
260
- },
261
- mocks: {
262
- isInteractive: true
263
- }
264
- });
265
- expect(error).toBeUndefined();
266
- expect(stdout).toContain('Dev server started on port 5340');
267
- expect(stdout).toContain('View your studio in the Sanity dashboard here:');
268
- expect(stdout).toContain('https://www.sanity.io/@test-org?dev=http%3A%2F%2Flocalhost%3A5340');
269
- expect(stderr).toContain('Checking configuration files');
270
- await result.close?.();
271
- });
272
- test('should error when projectId is missing with --load-in-dashboard', async ()=>{
273
- const cwd = await testExample('basic-studio');
274
- process.cwd = ()=>cwd;
275
- // Modify config to remove projectId
276
- const configPath = join(cwd, 'sanity.cli.ts');
277
- const existingConfig = await readFile(configPath, 'utf8');
278
- const modifiedConfig = existingConfig.replace(/projectId: '[^']*',/, '');
279
- await writeFile(configPath, modifiedConfig);
280
- const { error } = await testCommand(DevCommand, [
281
- '--load-in-dashboard',
282
- '--port',
283
- '5343'
284
- ], {
285
- config: {
286
- root: cwd
287
- },
288
- mocks: {
289
- isInteractive: true
290
- }
291
- });
292
- expect(error).toBeDefined();
293
- expect(error?.message).toContain('Project Id is required to load in dashboard');
294
- expect(error?.oclif?.exit).toBe(1);
295
- });
296
- test('should error when API fails to fetch organizationId', async ()=>{
297
- const cwd = await testExample('basic-studio');
298
- process.cwd = ()=>cwd;
299
- const projectId = 'test-project';
300
- const configPath = join(cwd, 'sanity.cli.ts');
301
- const existingConfig = await readFile(configPath, 'utf8');
302
- const modifiedConfig = existingConfig.replace(/projectId: '.*',/, `projectId: '${projectId}',`);
303
- await writeFile(configPath, modifiedConfig);
304
- mockGetProjectCliClient.mockResolvedValue({
305
- projects: {
306
- getById: vi.fn().mockRejectedValue(new Error('Project not found'))
307
- }
308
- });
309
- const { error } = await testCommand(DevCommand, [
310
- '--load-in-dashboard',
311
- '--port',
312
- '5344'
313
- ], {
314
- config: {
315
- root: cwd
316
- },
317
- mocks: {
318
- isInteractive: true
319
- }
320
- });
321
- expect(error).toBeDefined();
322
- expect(error?.message).toContain('Failed to get organization id from project id');
323
- expect(error?.oclif?.exit).toBe(1);
324
- });
325
- test('should start dev server successfully when user declines auto-updates', async ()=>{
326
- const cwd = await testExample('basic-studio');
327
- process.cwd = ()=>cwd;
328
- mockCompareDependencyVersions.mockResolvedValueOnce([
329
- {
330
- installed: '3.0.0',
331
- pkg: 'sanity',
332
- remote: '3.1.0'
333
- }
334
- ]);
335
- mockConfirm.mockResolvedValueOnce(false); // User declines upgrade
336
- const { error, result, stderr, stdout } = await testCommand(DevCommand, [
337
- '--auto-updates',
338
- '--port',
339
- '5346'
340
- ], {
341
- config: {
342
- root: cwd
343
- }
344
- });
345
- expect(error).toBeUndefined();
346
- // Check that the server started successfully with auto-updates flag
347
- expect(stdout).toMatch(/running at http:\/\/localhost:5346/);
348
- expect(stderr).toContain('Checking configuration files');
349
- await result.close?.();
350
- });
351
- test('should handle auto-updates with version mismatch and user accepts upgrade', async ()=>{
352
- const cwd = await testExample('basic-studio');
353
- process.cwd = ()=>cwd;
354
- mockCompareDependencyVersions.mockResolvedValueOnce([
355
- {
356
- installed: '3.0.0',
357
- pkg: 'sanity',
358
- remote: '3.1.0'
359
- }
360
- ]);
361
- mockConfirm.mockResolvedValueOnce(true); // User accepts upgrade
362
- mockUpgradePackages.mockResolvedValueOnce(undefined);
363
- mockGetPackageManagerChoice.mockResolvedValueOnce({
364
- chosen: 'npm',
365
- mostOptimal: 'npm'
366
- });
367
- const { error, result, stderr, stdout } = await testCommand(DevCommand, [
368
- '--auto-updates',
369
- '--port',
370
- '5348'
371
- ], {
372
- config: {
373
- root: cwd
374
- },
375
- mocks: {
376
- isInteractive: true
377
- }
378
- });
379
- expect(error).toBeUndefined();
380
- expect(stdout).toMatch(/running at http:\/\/localhost:5348/);
381
- expect(stderr).toContain('Checking configuration files');
382
- expect(mockUpgradePackages).toHaveBeenCalledWith({
383
- packageManager: 'npm',
384
- packages: [
385
- [
386
- 'sanity',
387
- '3.1.0'
388
- ]
389
- ]
390
- }, {
391
- output: expect.any(Object),
392
- workDir: cwd
393
- });
394
- await result.close?.();
395
- });
396
- test('should handle invalid Sanity version during auto-updates', async ()=>{
397
- const cwd = await testExample('basic-studio');
398
- process.cwd = ()=>cwd;
399
- mockCheckRequiredDependencies.mockResolvedValueOnce({
400
- installedSanityVersion: 'invalid-version'
401
- });
402
- const { error } = await testCommand(DevCommand, [
403
- '--auto-updates',
404
- '--port',
405
- '5347'
406
- ], {
407
- config: {
408
- root: cwd
409
- },
410
- mocks: {
411
- isInteractive: true
412
- }
413
- });
414
- expect(error).toBeDefined();
415
- expect(error?.message).toContain('Failed to parse installed Sanity version');
416
- });
417
- });
418
- test('should throw an error if port is already in use', async ()=>{
419
- const cwd = await testExample('basic-studio');
420
- process.cwd = ()=>cwd;
421
- // Create a server on port 5337 to block it
422
- const server = createServer();
423
- await new Promise((resolve)=>{
424
- server.listen(5337, 'localhost', resolve);
425
- });
426
- try {
427
- const { error } = await testCommand(DevCommand, [
428
- '--port',
429
- '5337'
430
- ], {
431
- config: {
432
- root: cwd
433
- },
434
- mocks: {
435
- isInteractive: true
436
- }
437
- });
438
- expect(error).toBeDefined();
439
- expect(error?.message).toContain('Port 5337 is already in use');
440
- expect(error?.oclif?.exit).toBe(1);
441
- } finally{
442
- // Clean up the server
443
- await new Promise((resolve, reject)=>{
444
- server.close((err)=>{
445
- if (err) reject(err);
446
- else resolve();
447
- });
448
- });
449
- }
450
- });
451
- });
452
-
453
- //# sourceMappingURL=dev.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/commands/__tests__/dev.test.ts"],"sourcesContent":["import {readFile, writeFile} from 'node:fs/promises'\nimport {createServer} from 'node:http'\nimport {join} from 'node:path'\n\nimport {runCommand} from '@oclif/test'\nimport {getProjectCliClient} from '@sanity/cli-core'\nimport {confirm} from '@sanity/cli-core/ux'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\nimport {testExample} from '~test/helpers/testExample.js'\n\nimport {checkRequiredDependencies} from '../../actions/build/checkRequiredDependencies.js'\nimport {compareDependencyVersions} from '../../util/compareDependencyVersions.js'\nimport {getPackageManagerChoice} from '../../util/packageManager/packageManagerChoice.js'\nimport {upgradePackages} from '../../util/packageManager/upgradePackages.js'\nimport {DevCommand} from '../dev.js'\n\nvi.mock('../../actions/build/checkRequiredDependencies.js', () => ({\n checkRequiredDependencies: vi.fn().mockResolvedValue({\n installedSanityVersion: '3.0.0',\n }),\n}))\n\nvi.mock('../../util/compareDependencyVersions.js', () => ({\n compareDependencyVersions: vi.fn().mockResolvedValue([]),\n}))\n\nvi.mock('@sanity/cli-core/ux', async () => {\n const actual = await vi.importActual<typeof import('@sanity/cli-core/ux')>('@sanity/cli-core/ux')\n return {\n ...actual,\n confirm: vi.fn(),\n }\n})\n\nvi.mock('../../util/packageManager/upgradePackages.js')\nvi.mock('../../util/packageManager/packageManagerChoice.js')\n\nvi.mock('@sanity/cli-core', async () => {\n const actual = await vi.importActual<typeof import('@sanity/cli-core')>('@sanity/cli-core')\n return {\n ...actual,\n getProjectCliClient: vi.fn(),\n isInteractive: vi.fn(() => true),\n }\n})\n\nconst mockCheckRequiredDependencies = vi.mocked(checkRequiredDependencies)\nconst mockCompareDependencyVersions = vi.mocked(compareDependencyVersions)\nconst mockConfirm = vi.mocked(confirm)\nconst mockUpgradePackages = vi.mocked(upgradePackages)\nconst mockGetPackageManagerChoice = vi.mocked(getPackageManagerChoice)\nconst mockGetProjectCliClient = vi.mocked(getProjectCliClient)\n\ntype Result = {\n close?: () => Promise<void>\n}\n\ndescribe('#dev', () => {\n afterEach(() => {\n vi.clearAllMocks()\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand(['dev', '--help'])\n expect(stdout).toMatchInlineSnapshot(`\n \"Starts a local development server for Sanity Studio with live reloading\n\n USAGE\n $ sanity dev [--auto-updates] [--host <value>]\n [--load-in-dashboard] [--port <value>]\n\n FLAGS\n --[no-]auto-updates Automatically update Sanity Studio dependencies.\n --host=<value> [default: localhost] The local network interface at\n which to listen.\n --[no-]load-in-dashboard Load the app/studio in the Sanity dashboard.\n --port=<value> [default: 3333] TCP port to start server on.\n\n DESCRIPTION\n Starts a local development server for Sanity Studio with live reloading\n\n EXAMPLES\n $ sanity dev --host=0.0.0.0\n\n $ sanity dev --port=1942\n\n $ sanity dev --load-in-dashboard\n\n \"\n `)\n })\n\n test('shows an error for invalid flags', async () => {\n const {error} = await testCommand(DevCommand, ['--invalid'], {\n mocks: {isInteractive: true},\n })\n\n expect(error?.message).toContain('Nonexistent flag: --invalid')\n })\n\n describe('basic-app', () => {\n test('should start the dev server for app', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const {error, result, stderr, stdout} = await testCommand(DevCommand, ['--port', '5333'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Dev server started on port 5333')\n expect(stdout).toContain('View your app in the Sanity dashboard here:')\n expect(stderr).toContain('Checking configuration files')\n await (result as Result).close?.()\n })\n\n test('should warn when --no-load-in-dashboard is used with app', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const {error, result, stderr, stdout} = await testCommand(\n DevCommand,\n ['--no-load-in-dashboard', '--port', '5334'],\n {\n config: {root: cwd},\n mocks: {isInteractive: true},\n },\n )\n\n expect(error).toBeUndefined()\n expect(stderr).toContain('Apps cannot run without the Sanity dashboard')\n expect(stderr).toContain('Starting dev server with the --load-in-dashboard flag set to true')\n expect(stdout).toContain('Dev server started on port 5334')\n await (result as Result).close?.()\n })\n\n test('should automatically change port if conflicted', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n // Create a server on port 5338 to block it\n const server = createServer()\n await new Promise<void>((resolve) => {\n server.listen(5338, 'localhost', resolve)\n })\n\n try {\n const {error, result, stdout} = await testCommand(DevCommand, ['--port', '5338'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeUndefined()\n // Should automatically pick a different port\n expect(stdout).toMatch(/Dev server started on port \\d{4}/)\n expect(stdout).not.toContain('Dev server started on port 5338')\n expect(stdout).toContain('View your app in the Sanity dashboard here:')\n await (result as Result).close?.()\n } finally {\n // Clean up the server\n await new Promise<void>((resolve, reject) => {\n server.close((err) => {\n if (err) reject(err)\n else resolve()\n })\n })\n }\n })\n\n test('should error when organizationId is missing from config', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n // Modify the config to remove organizationId\n const configPath = join(cwd, 'sanity.cli.ts')\n const existingConfig = await readFile(configPath, 'utf8')\n const modifiedConfig = existingConfig.replace(/organizationId: '[^']*',?/, '')\n await writeFile(configPath, modifiedConfig)\n\n const {error} = await testCommand(DevCommand, ['--port', '5341'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeDefined()\n expect(error?.message).toContain('Apps require an organization ID (orgId)')\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n\n describe('basic-studio', () => {\n test('should start the dev server for studio', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const {error, result, stderr, stdout} = await testCommand(DevCommand, ['--port', '5335'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Sanity Studio using vite@')\n expect(stdout).toContain('ready in')\n expect(stdout).toContain('ms and running at http://localhost:5335')\n expect(stderr).toContain('Checking configuration files')\n await (result as Result).close?.()\n })\n\n test('should start with custom host configuration', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const {error, result, stdout} = await testCommand(\n DevCommand,\n ['--host', '127.0.0.1', '--port', '5336'],\n {\n config: {root: cwd},\n mocks: {isInteractive: true},\n },\n )\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('http://127.0.0.1:5336')\n await (result as Result).close?.()\n })\n\n test('should start with load-in-dashboard', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project'\n\n // Need to modify the sanity config to include projectId for this test\n const configPath = join(cwd, 'sanity.cli.ts')\n const existingConfig = await readFile(configPath, 'utf8')\n\n // Add projectId to the config\n const modifiedConfig = existingConfig.replace(\n /projectId: '.*',/,\n `projectId: '${projectId}',`,\n )\n\n await writeFile(configPath, modifiedConfig)\n\n mockGetProjectCliClient.mockResolvedValue({\n projects: {\n getById: vi.fn().mockResolvedValue({organizationId: 'test-org'}),\n },\n } as never)\n\n const {error, result, stderr, stdout} = await testCommand(\n DevCommand,\n ['--load-in-dashboard', '--port', '5340'],\n {\n config: {root: cwd},\n mocks: {isInteractive: true},\n },\n )\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Dev server started on port 5340')\n expect(stdout).toContain('View your studio in the Sanity dashboard here:')\n expect(stdout).toContain('https://www.sanity.io/@test-org?dev=http%3A%2F%2Flocalhost%3A5340')\n expect(stderr).toContain('Checking configuration files')\n\n await (result as Result).close?.()\n })\n\n test('should error when projectId is missing with --load-in-dashboard', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n // Modify config to remove projectId\n const configPath = join(cwd, 'sanity.cli.ts')\n const existingConfig = await readFile(configPath, 'utf8')\n const modifiedConfig = existingConfig.replace(/projectId: '[^']*',/, '')\n await writeFile(configPath, modifiedConfig)\n\n const {error} = await testCommand(DevCommand, ['--load-in-dashboard', '--port', '5343'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeDefined()\n expect(error?.message).toContain('Project Id is required to load in dashboard')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should error when API fails to fetch organizationId', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project'\n const configPath = join(cwd, 'sanity.cli.ts')\n const existingConfig = await readFile(configPath, 'utf8')\n const modifiedConfig = existingConfig.replace(\n /projectId: '.*',/,\n `projectId: '${projectId}',`,\n )\n await writeFile(configPath, modifiedConfig)\n\n mockGetProjectCliClient.mockResolvedValue({\n projects: {\n getById: vi.fn().mockRejectedValue(new Error('Project not found')),\n },\n } as never)\n\n const {error} = await testCommand(DevCommand, ['--load-in-dashboard', '--port', '5344'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeDefined()\n expect(error?.message).toContain('Failed to get organization id from project id')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should start dev server successfully when user declines auto-updates', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n mockCompareDependencyVersions.mockResolvedValueOnce([\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ])\n mockConfirm.mockResolvedValueOnce(false) // User declines upgrade\n\n const {error, result, stderr, stdout} = await testCommand(\n DevCommand,\n ['--auto-updates', '--port', '5346'],\n {\n config: {root: cwd},\n },\n )\n\n expect(error).toBeUndefined()\n // Check that the server started successfully with auto-updates flag\n expect(stdout).toMatch(/running at http:\\/\\/localhost:5346/)\n expect(stderr).toContain('Checking configuration files')\n await (result as Result).close?.()\n })\n\n test('should handle auto-updates with version mismatch and user accepts upgrade', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n mockCompareDependencyVersions.mockResolvedValueOnce([\n {\n installed: '3.0.0',\n pkg: 'sanity',\n remote: '3.1.0',\n },\n ])\n mockConfirm.mockResolvedValueOnce(true) // User accepts upgrade\n\n mockUpgradePackages.mockResolvedValueOnce(undefined)\n mockGetPackageManagerChoice.mockResolvedValueOnce({\n chosen: 'npm',\n mostOptimal: 'npm',\n })\n\n const {error, result, stderr, stdout} = await testCommand(\n DevCommand,\n ['--auto-updates', '--port', '5348'],\n {\n config: {root: cwd},\n mocks: {isInteractive: true},\n },\n )\n\n expect(error).toBeUndefined()\n expect(stdout).toMatch(/running at http:\\/\\/localhost:5348/)\n expect(stderr).toContain('Checking configuration files')\n\n expect(mockUpgradePackages).toHaveBeenCalledWith(\n {\n packageManager: 'npm',\n packages: [['sanity', '3.1.0']],\n },\n {output: expect.any(Object), workDir: cwd},\n )\n\n await (result as Result).close?.()\n })\n\n test('should handle invalid Sanity version during auto-updates', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n mockCheckRequiredDependencies.mockResolvedValueOnce({\n installedSanityVersion: 'invalid-version',\n })\n\n const {error} = await testCommand(DevCommand, ['--auto-updates', '--port', '5347'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeDefined()\n expect(error?.message).toContain('Failed to parse installed Sanity version')\n })\n })\n\n test('should throw an error if port is already in use', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n // Create a server on port 5337 to block it\n const server = createServer()\n await new Promise<void>((resolve) => {\n server.listen(5337, 'localhost', resolve)\n })\n\n try {\n const {error} = await testCommand(DevCommand, ['--port', '5337'], {\n config: {root: cwd},\n mocks: {isInteractive: true},\n })\n\n expect(error).toBeDefined()\n expect(error?.message).toContain('Port 5337 is already in use')\n expect(error?.oclif?.exit).toBe(1)\n } finally {\n // Clean up the server\n await new Promise<void>((resolve, reject) => {\n server.close((err) => {\n if (err) reject(err)\n else resolve()\n })\n })\n }\n })\n})\n"],"names":["readFile","writeFile","createServer","join","runCommand","getProjectCliClient","confirm","testCommand","afterEach","describe","expect","test","vi","testExample","checkRequiredDependencies","compareDependencyVersions","getPackageManagerChoice","upgradePackages","DevCommand","mock","fn","mockResolvedValue","installedSanityVersion","actual","importActual","isInteractive","mockCheckRequiredDependencies","mocked","mockCompareDependencyVersions","mockConfirm","mockUpgradePackages","mockGetPackageManagerChoice","mockGetProjectCliClient","clearAllMocks","stdout","toMatchInlineSnapshot","error","mocks","message","toContain","cwd","process","result","stderr","config","root","toBeUndefined","close","server","Promise","resolve","listen","toMatch","not","reject","err","configPath","existingConfig","modifiedConfig","replace","toBeDefined","oclif","exit","toBe","projectId","projects","getById","organizationId","mockRejectedValue","Error","mockResolvedValueOnce","installed","pkg","remote","undefined","chosen","mostOptimal","toHaveBeenCalledWith","packageManager","packages","output","any","Object","workDir"],"mappings":"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"}