@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,147 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { getCliToken, isCi } from '@sanity/cli-core';
3
- import { mockApi, testCommand } from '@sanity/cli-test';
4
- import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
5
- import { fetchTelemetryConsent } from '../../../actions/telemetry/fetchTelemetryConsent.js';
6
- import { Disable } from '../disable.js';
7
- vi.mock('@sanity/cli-core', async ()=>{
8
- const actual = await vi.importActual('@sanity/cli-core');
9
- return {
10
- ...actual,
11
- getCliToken: vi.fn(),
12
- isCi: vi.fn(()=>false)
13
- };
14
- });
15
- vi.mock('../../../actions/telemetry/fetchTelemetryConsent.js', ()=>({
16
- fetchTelemetryConsent: vi.fn()
17
- }));
18
- const mockGetCliToken = vi.mocked(getCliToken);
19
- const mockFetchTelemetryConsent = vi.mocked(fetchTelemetryConsent);
20
- const mockIsCi = vi.mocked(isCi);
21
- describe('#disable', ()=>{
22
- beforeEach(()=>{
23
- vi.clearAllMocks();
24
- });
25
- afterEach(()=>{
26
- vi.unstubAllEnvs();
27
- });
28
- test('help text is correct', async ()=>{
29
- const { stdout } = await runCommand([
30
- 'telemetry',
31
- 'disable',
32
- '--help'
33
- ]);
34
- expect(stdout).toMatchInlineSnapshot(`
35
- "Disable telemetry for your logged in user
36
-
37
- USAGE
38
- $ sanity telemetry disable
39
-
40
- DESCRIPTION
41
- Disable telemetry for your logged in user
42
-
43
- EXAMPLES
44
- Disable telemetry for your logged in user
45
-
46
- $ sanity telemetry telemetry disable
47
-
48
- "
49
- `);
50
- });
51
- test('disables telemetry when user is authenticated and status is different', async ()=>{
52
- // Ensure user is authenticated
53
- mockGetCliToken.mockResolvedValue('test-token');
54
- // Mock current status as granted
55
- mockFetchTelemetryConsent.mockResolvedValueOnce({
56
- status: 'granted'
57
- });
58
- // Mock disable API call
59
- mockApi({
60
- apiVersion: 'v2023-12-18',
61
- method: 'put',
62
- uri: '/users/me/consents/telemetry/status/denied'
63
- }).reply(200);
64
- // Mock updated status fetch
65
- mockFetchTelemetryConsent.mockResolvedValueOnce({
66
- status: 'denied'
67
- });
68
- const { stdout } = await testCommand(Disable, []);
69
- expect(stdout).toContain("You've opted out of telemetry data collection.\nNo data will be collected from your Sanity account.");
70
- expect(stdout).toContain('Learn more here:');
71
- expect(stdout).toContain('https://www.sanity.io/telemetry');
72
- });
73
- test('shows already disabled message when telemetry is already denied', async ()=>{
74
- // Ensure user is authenticated
75
- mockGetCliToken.mockResolvedValue('test-token');
76
- // Mock current status as already denied
77
- mockFetchTelemetryConsent.mockResolvedValueOnce({
78
- status: 'denied'
79
- });
80
- const { stdout } = await testCommand(Disable, []);
81
- expect(stdout).toContain("You've already opted out of telemetry data collection.\nNo data is collected from your Sanity account.");
82
- expect(stdout).not.toContain('Learn more here:');
83
- });
84
- test('shows already disabled message with DO_NOT_TRACK when local override is active', async ()=>{
85
- // Set DO_NOT_TRACK environment variable
86
- vi.stubEnv('DO_NOT_TRACK', '1');
87
- const { stdout } = await testCommand(Disable, []);
88
- expect(stdout).toContain("You've already opted out of telemetry data collection.\nNo data is collected from your machine.\n\nUsing DO_NOT_TRACK environment variable.");
89
- });
90
- test('shows cannot set message in CI environment', async ()=>{
91
- mockIsCi.mockReturnValue(true);
92
- mockFetchTelemetryConsent.mockResolvedValueOnce({
93
- status: 'granted'
94
- });
95
- const { stdout } = await testCommand(Disable, []);
96
- expect(stdout).toContain('Cannot set telemetry consent in CI environment');
97
- mockIsCi.mockRestore();
98
- });
99
- test('shows login required message when user is not authenticated', async ()=>{
100
- // User is not authenticated
101
- mockGetCliToken.mockResolvedValue(undefined);
102
- const { stdout } = await testCommand(Disable, []);
103
- expect(stdout).toContain('You need to log in first to set telemetry preferences.');
104
- });
105
- test('shows error message when API call fails with 403', async ()=>{
106
- // Ensure user is authenticated
107
- mockGetCliToken.mockResolvedValue('test-token');
108
- // Mock current status as granted
109
- mockFetchTelemetryConsent.mockResolvedValueOnce({
110
- status: 'granted'
111
- });
112
- // Mock disable API call to fail with 403
113
- mockApi({
114
- apiVersion: 'v2023-12-18',
115
- method: 'put',
116
- uri: '/users/me/consents/telemetry/status/denied'
117
- }).reply(403, {
118
- message: 'Permission denied'
119
- });
120
- const result = await testCommand(Disable, []);
121
- expect(result.error).toMatchObject({
122
- message: 'Failed to disable telemetry: Permission denied'
123
- });
124
- });
125
- test('shows error message when API call fails with other error', async ()=>{
126
- // Ensure user is authenticated
127
- mockGetCliToken.mockResolvedValue('test-token');
128
- // Mock current status as granted
129
- mockFetchTelemetryConsent.mockResolvedValueOnce({
130
- status: 'granted'
131
- });
132
- // Mock disable API call to fail with 500
133
- mockApi({
134
- apiVersion: 'v2023-12-18',
135
- method: 'put',
136
- uri: '/users/me/consents/telemetry/status/denied'
137
- }).reply(500, {
138
- message: 'Internal server error'
139
- });
140
- const result = await testCommand(Disable, []);
141
- expect(result.error).toMatchObject({
142
- message: 'Failed to disable telemetry: Internal server error'
143
- });
144
- });
145
- });
146
-
147
- //# sourceMappingURL=disable.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/commands/telemetry/__tests__/disable.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {getCliToken, isCi} from '@sanity/cli-core'\nimport {mockApi, testCommand} from '@sanity/cli-test'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {fetchTelemetryConsent} from '../../../actions/telemetry/fetchTelemetryConsent.js'\nimport {Disable} from '../disable.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 getCliToken: vi.fn(),\n isCi: vi.fn(() => false),\n }\n})\n\nvi.mock('../../../actions/telemetry/fetchTelemetryConsent.js', () => ({\n fetchTelemetryConsent: vi.fn(),\n}))\n\nconst mockGetCliToken = vi.mocked(getCliToken)\nconst mockFetchTelemetryConsent = vi.mocked(fetchTelemetryConsent)\nconst mockIsCi = vi.mocked(isCi)\n\ndescribe('#disable', () => {\n beforeEach(() => {\n vi.clearAllMocks()\n })\n\n afterEach(() => {\n vi.unstubAllEnvs()\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand(['telemetry', 'disable', '--help'])\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Disable telemetry for your logged in user\n\n USAGE\n $ sanity telemetry disable\n\n DESCRIPTION\n Disable telemetry for your logged in user\n\n EXAMPLES\n Disable telemetry for your logged in user\n\n $ sanity telemetry telemetry disable\n\n \"\n `)\n })\n\n test('disables telemetry when user is authenticated and status is different', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n // Mock current status as granted\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'granted'})\n\n // Mock disable API call\n mockApi({\n apiVersion: 'v2023-12-18',\n method: 'put',\n uri: '/users/me/consents/telemetry/status/denied',\n }).reply(200)\n\n // Mock updated status fetch\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'denied'})\n\n const {stdout} = await testCommand(Disable, [])\n\n expect(stdout).toContain(\n \"You've opted out of telemetry data collection.\\nNo data will be collected from your Sanity account.\",\n )\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows already disabled message when telemetry is already denied', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n // Mock current status as already denied\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'denied'})\n\n const {stdout} = await testCommand(Disable, [])\n\n expect(stdout).toContain(\n \"You've already opted out of telemetry data collection.\\nNo data is collected from your Sanity account.\",\n )\n expect(stdout).not.toContain('Learn more here:')\n })\n\n test('shows already disabled message with DO_NOT_TRACK when local override is active', async () => {\n // Set DO_NOT_TRACK environment variable\n vi.stubEnv('DO_NOT_TRACK', '1')\n\n const {stdout} = await testCommand(Disable, [])\n\n expect(stdout).toContain(\n \"You've already opted out of telemetry data collection.\\nNo data is collected from your machine.\\n\\nUsing DO_NOT_TRACK environment variable.\",\n )\n })\n\n test('shows cannot set message in CI environment', async () => {\n mockIsCi.mockReturnValue(true)\n\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'granted'})\n\n const {stdout} = await testCommand(Disable, [])\n\n expect(stdout).toContain('Cannot set telemetry consent in CI environment')\n mockIsCi.mockRestore()\n })\n\n test('shows login required message when user is not authenticated', async () => {\n // User is not authenticated\n mockGetCliToken.mockResolvedValue(undefined)\n\n const {stdout} = await testCommand(Disable, [])\n\n expect(stdout).toContain('You need to log in first to set telemetry preferences.')\n })\n\n test('shows error message when API call fails with 403', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n // Mock current status as granted\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'granted'})\n\n // Mock disable API call to fail with 403\n mockApi({\n apiVersion: 'v2023-12-18',\n method: 'put',\n uri: '/users/me/consents/telemetry/status/denied',\n }).reply(403, {message: 'Permission denied'})\n\n const result = await testCommand(Disable, [])\n\n expect(result.error).toMatchObject({\n message: 'Failed to disable telemetry: Permission denied',\n })\n })\n\n test('shows error message when API call fails with other error', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n // Mock current status as granted\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'granted'})\n\n // Mock disable API call to fail with 500\n mockApi({\n apiVersion: 'v2023-12-18',\n method: 'put',\n uri: '/users/me/consents/telemetry/status/denied',\n }).reply(500, {message: 'Internal server error'})\n\n const result = await testCommand(Disable, [])\n\n expect(result.error).toMatchObject({\n message: 'Failed to disable telemetry: Internal server error',\n })\n })\n})\n"],"names":["runCommand","getCliToken","isCi","mockApi","testCommand","afterEach","beforeEach","describe","expect","test","vi","fetchTelemetryConsent","Disable","mock","actual","importActual","fn","mockGetCliToken","mocked","mockFetchTelemetryConsent","mockIsCi","clearAllMocks","unstubAllEnvs","stdout","toMatchInlineSnapshot","mockResolvedValue","mockResolvedValueOnce","status","apiVersion","method","uri","reply","toContain","not","stubEnv","mockReturnValue","mockRestore","undefined","message","result","error","toMatchObject"],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { getCliToken } from '@sanity/cli-core';
3
- import { mockApi, testCommand } from '@sanity/cli-test';
4
- import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
5
- import { fetchTelemetryConsent } from '../../../actions/telemetry/fetchTelemetryConsent.js';
6
- import { Enable } from '../enable.js';
7
- vi.mock('@sanity/cli-core', async ()=>{
8
- const actual = await vi.importActual('@sanity/cli-core');
9
- return {
10
- ...actual,
11
- getCliToken: vi.fn(),
12
- isCi: ()=>false
13
- };
14
- });
15
- vi.mock('../../../actions/telemetry/fetchTelemetryConsent.js', ()=>({
16
- fetchTelemetryConsent: vi.fn()
17
- }));
18
- const mockGetCliToken = vi.mocked(getCliToken);
19
- const mockFetchTelemetryConsent = vi.mocked(fetchTelemetryConsent);
20
- describe('#enable', ()=>{
21
- beforeEach(()=>{
22
- vi.clearAllMocks();
23
- });
24
- afterEach(()=>{
25
- vi.unstubAllEnvs();
26
- });
27
- test('help text is correct', async ()=>{
28
- const { stdout } = await runCommand([
29
- 'telemetry',
30
- 'enable',
31
- '--help'
32
- ]);
33
- expect(stdout).toMatchInlineSnapshot(`
34
- "Enable telemetry for your logged in user
35
-
36
- USAGE
37
- $ sanity telemetry enable
38
-
39
- DESCRIPTION
40
- Enable telemetry for your logged in user
41
-
42
- EXAMPLES
43
- Enable telemetry for your logged in user
44
-
45
- $ sanity telemetry telemetry enable
46
-
47
- "
48
- `);
49
- });
50
- test('enables telemetry when user is authenticated and status is different', async ()=>{
51
- // Ensure user is authenticated
52
- mockGetCliToken.mockResolvedValue('test-token');
53
- mockFetchTelemetryConsent.mockResolvedValueOnce({
54
- status: 'denied'
55
- });
56
- // Mock enable API call
57
- mockApi({
58
- apiVersion: 'v2023-12-18',
59
- method: 'put',
60
- uri: '/users/me/consents/telemetry/status/granted'
61
- }).reply(200);
62
- mockFetchTelemetryConsent.mockResolvedValueOnce({
63
- status: 'granted'
64
- });
65
- const { stdout } = await testCommand(Enable, []);
66
- expect(stdout).toContain("You've now enabled telemetry data collection to help us improve Sanity.");
67
- expect(stdout).toContain('Learn more about the data being collected here:');
68
- expect(stdout).toContain('https://www.sanity.io/telemetry');
69
- });
70
- test('shows already enabled message when telemetry is already granted', async ()=>{
71
- // Ensure user is authenticated
72
- mockGetCliToken.mockResolvedValue('test-token');
73
- mockFetchTelemetryConsent.mockResolvedValueOnce({
74
- status: 'granted'
75
- });
76
- const { stdout } = await testCommand(Enable, []);
77
- expect(stdout).toContain("You've already enabled telemetry data collection to help us improve Sanity.");
78
- expect(stdout).not.toContain('Learn more about the data being collected here:');
79
- });
80
- test('shows login required message when user is not authenticated', async ()=>{
81
- // User is not authenticated
82
- mockGetCliToken.mockResolvedValue(undefined);
83
- const { stdout } = await testCommand(Enable, []);
84
- expect(stdout).toContain('You need to log in first to set telemetry preferences.');
85
- });
86
- test('shows error when DO_NOT_TRACK is set and trying to enable', async ()=>{
87
- // Set DO_NOT_TRACK environment variable
88
- vi.stubEnv('DO_NOT_TRACK', '1');
89
- const { stdout } = await testCommand(Enable, []);
90
- expect(stdout).toContain('Cannot enable telemetry while DO_NOT_TRACK environment variable is set. Unset DO_NOT_TRACK to enable telemetry.');
91
- });
92
- test('shows error message when API call fails with 403', async ()=>{
93
- // Ensure user is authenticated
94
- mockGetCliToken.mockResolvedValue('test-token');
95
- // Mock current status as denied
96
- mockFetchTelemetryConsent.mockResolvedValueOnce({
97
- status: 'denied'
98
- });
99
- // Mock enable API call to fail with 403
100
- mockApi({
101
- apiVersion: 'v2023-12-18',
102
- method: 'put',
103
- uri: '/users/me/consents/telemetry/status/granted'
104
- }).reply(403, {
105
- message: 'Permission denied'
106
- });
107
- const result = await testCommand(Enable, []);
108
- expect(result.error).toMatchObject({
109
- message: 'Failed to enable telemetry: Permission denied'
110
- });
111
- });
112
- test('shows error message when API call fails with other error', async ()=>{
113
- // Ensure user is authenticated
114
- mockGetCliToken.mockResolvedValue('test-token');
115
- mockFetchTelemetryConsent.mockResolvedValueOnce({
116
- status: 'denied'
117
- });
118
- // Mock enable API call to fail with 500
119
- mockApi({
120
- apiVersion: 'v2023-12-18',
121
- method: 'put',
122
- uri: '/users/me/consents/telemetry/status/granted'
123
- }).reply(500, {
124
- message: 'Internal server error'
125
- });
126
- const result = await testCommand(Enable, []);
127
- expect(result.error).toMatchObject({
128
- message: 'Failed to enable telemetry: Internal server error'
129
- });
130
- });
131
- });
132
-
133
- //# sourceMappingURL=enable.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/commands/telemetry/__tests__/enable.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {getCliToken} from '@sanity/cli-core'\nimport {mockApi, testCommand} from '@sanity/cli-test'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {fetchTelemetryConsent} from '../../../actions/telemetry/fetchTelemetryConsent.js'\nimport {Enable} from '../enable.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 getCliToken: vi.fn(),\n isCi: () => false,\n }\n})\n\nvi.mock('../../../actions/telemetry/fetchTelemetryConsent.js', () => ({\n fetchTelemetryConsent: vi.fn(),\n}))\n\nconst mockGetCliToken = vi.mocked(getCliToken)\nconst mockFetchTelemetryConsent = vi.mocked(fetchTelemetryConsent)\n\ndescribe('#enable', () => {\n beforeEach(() => {\n vi.clearAllMocks()\n })\n\n afterEach(() => {\n vi.unstubAllEnvs()\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand(['telemetry', 'enable', '--help'])\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Enable telemetry for your logged in user\n\n USAGE\n $ sanity telemetry enable\n\n DESCRIPTION\n Enable telemetry for your logged in user\n\n EXAMPLES\n Enable telemetry for your logged in user\n\n $ sanity telemetry telemetry enable\n\n \"\n `)\n })\n\n test('enables telemetry when user is authenticated and status is different', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'denied'})\n\n // Mock enable API call\n mockApi({\n apiVersion: 'v2023-12-18',\n method: 'put',\n uri: '/users/me/consents/telemetry/status/granted',\n }).reply(200)\n\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'granted'})\n\n const {stdout} = await testCommand(Enable, [])\n\n expect(stdout).toContain(\n \"You've now enabled telemetry data collection to help us improve Sanity.\",\n )\n expect(stdout).toContain('Learn more about the data being collected here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows already enabled message when telemetry is already granted', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'granted'})\n\n const {stdout} = await testCommand(Enable, [])\n\n expect(stdout).toContain(\n \"You've already enabled telemetry data collection to help us improve Sanity.\",\n )\n expect(stdout).not.toContain('Learn more about the data being collected here:')\n })\n\n test('shows login required message when user is not authenticated', async () => {\n // User is not authenticated\n mockGetCliToken.mockResolvedValue(undefined)\n\n const {stdout} = await testCommand(Enable, [])\n\n expect(stdout).toContain('You need to log in first to set telemetry preferences.')\n })\n\n test('shows error when DO_NOT_TRACK is set and trying to enable', async () => {\n // Set DO_NOT_TRACK environment variable\n vi.stubEnv('DO_NOT_TRACK', '1')\n\n const {stdout} = await testCommand(Enable, [])\n\n expect(stdout).toContain(\n 'Cannot enable telemetry while DO_NOT_TRACK environment variable is set. Unset DO_NOT_TRACK to enable telemetry.',\n )\n })\n\n test('shows error message when API call fails with 403', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n // Mock current status as denied\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'denied'})\n\n // Mock enable API call to fail with 403\n mockApi({\n apiVersion: 'v2023-12-18',\n method: 'put',\n uri: '/users/me/consents/telemetry/status/granted',\n }).reply(403, {message: 'Permission denied'})\n\n const result = await testCommand(Enable, [])\n\n expect(result.error).toMatchObject({\n message: 'Failed to enable telemetry: Permission denied',\n })\n })\n\n test('shows error message when API call fails with other error', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValueOnce({status: 'denied'})\n\n // Mock enable API call to fail with 500\n mockApi({\n apiVersion: 'v2023-12-18',\n method: 'put',\n uri: '/users/me/consents/telemetry/status/granted',\n }).reply(500, {message: 'Internal server error'})\n\n const result = await testCommand(Enable, [])\n\n expect(result.error).toMatchObject({\n message: 'Failed to enable telemetry: Internal server error',\n })\n })\n})\n"],"names":["runCommand","getCliToken","mockApi","testCommand","afterEach","beforeEach","describe","expect","test","vi","fetchTelemetryConsent","Enable","mock","actual","importActual","fn","isCi","mockGetCliToken","mocked","mockFetchTelemetryConsent","clearAllMocks","unstubAllEnvs","stdout","toMatchInlineSnapshot","mockResolvedValue","mockResolvedValueOnce","status","apiVersion","method","uri","reply","toContain","not","undefined","stubEnv","message","result","error","toMatchObject"],"mappings":"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"}
@@ -1,155 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { getCliToken, isCi } from '@sanity/cli-core';
3
- import { testCommand } from '@sanity/cli-test';
4
- import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
5
- import { fetchTelemetryConsent } from '../../../actions/telemetry/fetchTelemetryConsent.js';
6
- import { Status } from '../status.js';
7
- vi.mock('@sanity/cli-core', async ()=>{
8
- const actual = await vi.importActual('@sanity/cli-core');
9
- return {
10
- ...actual,
11
- getCliToken: vi.fn(),
12
- isCi: vi.fn(()=>false)
13
- };
14
- });
15
- vi.mock('../../../actions/telemetry/fetchTelemetryConsent.js', ()=>({
16
- fetchTelemetryConsent: vi.fn()
17
- }));
18
- const mockGetCliToken = vi.mocked(getCliToken);
19
- const mockFetchTelemetryConsent = vi.mocked(fetchTelemetryConsent);
20
- const mockIsCi = vi.mocked(isCi);
21
- describe('telemetry status', ()=>{
22
- beforeEach(()=>{
23
- vi.clearAllMocks();
24
- });
25
- afterEach(()=>{
26
- vi.unstubAllEnvs();
27
- });
28
- test('help text is correct', async ()=>{
29
- const { stdout } = await runCommand([
30
- 'telemetry',
31
- 'status',
32
- '--help'
33
- ]);
34
- expect(stdout).toMatchInlineSnapshot(`
35
- "Check telemetry consent status for your logged in user
36
-
37
- USAGE
38
- $ sanity telemetry status
39
-
40
- DESCRIPTION
41
- Check telemetry consent status for your logged in user
42
-
43
- EXAMPLES
44
- Check telemetry consent status for your logged in user
45
-
46
- $ sanity telemetry telemetry status
47
-
48
- "
49
- `);
50
- });
51
- test('command handles no flags correctly', async ()=>{
52
- const { error } = await testCommand(Status, [
53
- '--invalid'
54
- ]);
55
- expect(error?.message).toContain('Nonexistent flag: --invalid');
56
- });
57
- test('shows disabled status with DO_NOT_TRACK environment variable', async ()=>{
58
- // Set DO_NOT_TRACK environment variable
59
- vi.stubEnv('DO_NOT_TRACK', '1');
60
- const { stdout } = await testCommand(Status, []);
61
- expect(stdout).toContain('Status: Disabled');
62
- expect(stdout).toContain("You've opted out of telemetry data collection.");
63
- expect(stdout).toContain('No data will be collected from your machine.');
64
- expect(stdout).toContain('Using DO_NOT_TRACK environment variable.');
65
- expect(stdout).toContain('Learn more here:');
66
- expect(stdout).toContain('https://www.sanity.io/telemetry');
67
- });
68
- test('shows status when DO_NOT_TRACK is not set', async ()=>{
69
- // Explicitly ensure DO_NOT_TRACK is not set
70
- vi.stubEnv('DO_NOT_TRACK', undefined);
71
- const { stdout } = await testCommand(Status, []);
72
- // Should show telemetry status or appropriate message
73
- expect(stdout).toContain('Learn more here:');
74
- expect(stdout).toContain('https://www.sanity.io/telemetry');
75
- });
76
- test('shows cannot set message in CI environment', async ()=>{
77
- mockGetCliToken.mockResolvedValue('test-token');
78
- mockIsCi.mockReturnValueOnce(true);
79
- const { stdout } = await testCommand(Status, []);
80
- expect(stdout).toContain('Status: Disabled');
81
- });
82
- // Additional tests for better coverage (using working patterns)
83
- test('ensures unauthenticated case works when no token available', async ()=>{
84
- // Mock no authentication token
85
- mockGetCliToken.mockResolvedValue(undefined);
86
- const { stdout } = await testCommand(Status, []);
87
- expect(stdout).toContain('You need to log in first to see telemetry status.');
88
- expect(stdout).toContain('Learn more here:');
89
- expect(stdout).toContain('https://www.sanity.io/telemetry');
90
- });
91
- // Integration tests with API mocking for different status responses
92
- test('shows granted status when API returns granted', async ()=>{
93
- mockGetCliToken.mockResolvedValue('test-token');
94
- mockFetchTelemetryConsent.mockResolvedValue({
95
- status: 'granted'
96
- });
97
- const { stdout } = await testCommand(Status, []);
98
- expect(stdout).toContain('Status: Enabled');
99
- expect(stdout).toContain('Telemetry data on general usage and errors is collected to help us improve Sanity.');
100
- expect(stdout).toContain('Learn more about the data being collected here:');
101
- expect(stdout).toContain('https://www.sanity.io/telemetry');
102
- });
103
- test('shows unset status when API returns unset', async ()=>{
104
- // Ensure user is authenticated
105
- mockGetCliToken.mockResolvedValue('test-token');
106
- mockFetchTelemetryConsent.mockResolvedValue({
107
- status: 'unset'
108
- });
109
- const { stdout } = await testCommand(Status, []);
110
- expect(stdout).toContain('Status: Not set');
111
- expect(stdout).toContain("You've not set your preference for telemetry collection.");
112
- expect(stdout).toContain("Run 'npx sanity telemetry enable/disable' to opt in or out.");
113
- expect(stdout).toContain('You can also use the DO_NOT_TRACK environment variable to opt out.');
114
- expect(stdout).toContain('Learn more here:');
115
- expect(stdout).toContain('https://www.sanity.io/telemetry');
116
- });
117
- test('shows denied status when API returns denied (without local override)', async ()=>{
118
- // Ensure user is authenticated
119
- mockGetCliToken.mockResolvedValue('test-token');
120
- mockFetchTelemetryConsent.mockResolvedValue({
121
- status: 'denied'
122
- });
123
- const { stdout } = await testCommand(Status, []);
124
- expect(stdout).toContain('Status: Disabled');
125
- expect(stdout).toContain("You've opted out of telemetry data collection.");
126
- expect(stdout).toContain('No data will be collected from your Sanity account.');
127
- expect(stdout).not.toContain('Using DO_NOT_TRACK environment variable.');
128
- expect(stdout).toContain('Learn more here:');
129
- expect(stdout).toContain('https://www.sanity.io/telemetry');
130
- });
131
- test('shows fetch error when API call fails', async ()=>{
132
- // Ensure user is authenticated
133
- mockGetCliToken.mockResolvedValue('test-token');
134
- // Mock the telemetry status API to return an error
135
- mockFetchTelemetryConsent.mockRejectedValue(new Error('API error'));
136
- const { stdout } = await testCommand(Status, []);
137
- expect(stdout).toContain('Could not fetch telemetry consent status.');
138
- expect(stdout).toContain('Learn more here:');
139
- expect(stdout).toContain('https://www.sanity.io/telemetry');
140
- });
141
- test('handles invalid API response gracefully', async ()=>{
142
- // Ensure user is authenticated
143
- mockGetCliToken.mockResolvedValue('test-token');
144
- mockFetchTelemetryConsent.mockResolvedValue({
145
- status: 'invalid-status'
146
- });
147
- const { stdout } = await testCommand(Status, []);
148
- // Invalid API response should be handled as a fetch error
149
- expect(stdout).toContain('Could not fetch telemetry consent status.');
150
- expect(stdout).toContain('Learn more here:');
151
- expect(stdout).toContain('https://www.sanity.io/telemetry');
152
- });
153
- });
154
-
155
- //# sourceMappingURL=status.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/commands/telemetry/__tests__/status.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {getCliToken, isCi} from '@sanity/cli-core'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {fetchTelemetryConsent} from '../../../actions/telemetry/fetchTelemetryConsent.js'\nimport {type ValidApiConsentStatus} from '../../../actions/telemetry/isValidApiConsentStatus.js'\nimport {Status} from '../status.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 getCliToken: vi.fn(),\n isCi: vi.fn(() => false),\n }\n})\n\nvi.mock('../../../actions/telemetry/fetchTelemetryConsent.js', () => ({\n fetchTelemetryConsent: vi.fn(),\n}))\n\nconst mockGetCliToken = vi.mocked(getCliToken)\nconst mockFetchTelemetryConsent = vi.mocked(fetchTelemetryConsent)\nconst mockIsCi = vi.mocked(isCi)\n\ndescribe('telemetry status', () => {\n beforeEach(() => {\n vi.clearAllMocks()\n })\n\n afterEach(() => {\n vi.unstubAllEnvs()\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand(['telemetry', 'status', '--help'])\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Check telemetry consent status for your logged in user\n\n USAGE\n $ sanity telemetry status\n\n DESCRIPTION\n Check telemetry consent status for your logged in user\n\n EXAMPLES\n Check telemetry consent status for your logged in user\n\n $ sanity telemetry telemetry status\n\n \"\n `)\n })\n\n test('command handles no flags correctly', async () => {\n const {error} = await testCommand(Status, ['--invalid'])\n\n expect(error?.message).toContain('Nonexistent flag: --invalid')\n })\n\n test('shows disabled status with DO_NOT_TRACK environment variable', async () => {\n // Set DO_NOT_TRACK environment variable\n vi.stubEnv('DO_NOT_TRACK', '1')\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('Status: Disabled')\n expect(stdout).toContain(\"You've opted out of telemetry data collection.\")\n expect(stdout).toContain('No data will be collected from your machine.')\n expect(stdout).toContain('Using DO_NOT_TRACK environment variable.')\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows status when DO_NOT_TRACK is not set', async () => {\n // Explicitly ensure DO_NOT_TRACK is not set\n vi.stubEnv('DO_NOT_TRACK', undefined)\n\n const {stdout} = await testCommand(Status, [])\n\n // Should show telemetry status or appropriate message\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows cannot set message in CI environment', async () => {\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockIsCi.mockReturnValueOnce(true)\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('Status: Disabled')\n })\n\n // Additional tests for better coverage (using working patterns)\n test('ensures unauthenticated case works when no token available', async () => {\n // Mock no authentication token\n mockGetCliToken.mockResolvedValue(undefined)\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('You need to log in first to see telemetry status.')\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n // Integration tests with API mocking for different status responses\n test('shows granted status when API returns granted', async () => {\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValue({status: 'granted'})\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('Status: Enabled')\n expect(stdout).toContain(\n 'Telemetry data on general usage and errors is collected to help us improve Sanity.',\n )\n expect(stdout).toContain('Learn more about the data being collected here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows unset status when API returns unset', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValue({status: 'unset'})\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('Status: Not set')\n expect(stdout).toContain(\"You've not set your preference for telemetry collection.\")\n expect(stdout).toContain(\"Run 'npx sanity telemetry enable/disable' to opt in or out.\")\n expect(stdout).toContain('You can also use the DO_NOT_TRACK environment variable to opt out.')\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows denied status when API returns denied (without local override)', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValue({status: 'denied'})\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('Status: Disabled')\n expect(stdout).toContain(\"You've opted out of telemetry data collection.\")\n expect(stdout).toContain('No data will be collected from your Sanity account.')\n expect(stdout).not.toContain('Using DO_NOT_TRACK environment variable.')\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('shows fetch error when API call fails', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n // Mock the telemetry status API to return an error\n mockFetchTelemetryConsent.mockRejectedValue(new Error('API error'))\n\n const {stdout} = await testCommand(Status, [])\n\n expect(stdout).toContain('Could not fetch telemetry consent status.')\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n\n test('handles invalid API response gracefully', async () => {\n // Ensure user is authenticated\n mockGetCliToken.mockResolvedValue('test-token')\n\n mockFetchTelemetryConsent.mockResolvedValue({status: 'invalid-status' as ValidApiConsentStatus})\n\n const {stdout} = await testCommand(Status, [])\n\n // Invalid API response should be handled as a fetch error\n expect(stdout).toContain('Could not fetch telemetry consent status.')\n expect(stdout).toContain('Learn more here:')\n expect(stdout).toContain('https://www.sanity.io/telemetry')\n })\n})\n"],"names":["runCommand","getCliToken","isCi","testCommand","afterEach","beforeEach","describe","expect","test","vi","fetchTelemetryConsent","Status","mock","actual","importActual","fn","mockGetCliToken","mocked","mockFetchTelemetryConsent","mockIsCi","clearAllMocks","unstubAllEnvs","stdout","toMatchInlineSnapshot","error","message","toContain","stubEnv","undefined","mockResolvedValue","mockReturnValueOnce","status","not","mockRejectedValue","Error"],"mappings":"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"}