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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/dist/actions/dataset/create.d.ts +49 -0
  2. package/dist/actions/dataset/create.js +48 -0
  3. package/dist/actions/dataset/create.js.map +1 -0
  4. package/dist/actions/dataset/determineDatasetAclMode.d.ts +37 -0
  5. package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
  6. package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
  7. package/dist/actions/debug/gatherDebugInfo.js +15 -21
  8. package/dist/actions/debug/gatherDebugInfo.js.map +1 -1
  9. package/dist/actions/debug/types.d.ts +0 -2
  10. package/dist/actions/debug/types.js.map +1 -1
  11. package/dist/actions/deploy/deployApp.js +13 -0
  12. package/dist/actions/deploy/deployApp.js.map +1 -1
  13. package/dist/actions/init/remoteTemplate.js +1 -1
  14. package/dist/actions/init/remoteTemplate.js.map +1 -1
  15. package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
  16. package/dist/actions/manifest/extractAppManifest.js +51 -0
  17. package/dist/actions/manifest/extractAppManifest.js.map +1 -0
  18. package/dist/actions/manifest/extractManifest.js +1 -1
  19. package/dist/actions/manifest/extractManifest.js.map +1 -1
  20. package/dist/actions/manifest/types.d.ts +6 -1
  21. package/dist/actions/manifest/types.js.map +1 -1
  22. package/dist/actions/media/importAspects.js +2 -1
  23. package/dist/actions/media/importAspects.js.map +1 -1
  24. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
  25. package/dist/commands/dataset/create.d.ts +0 -2
  26. package/dist/commands/dataset/create.js +8 -54
  27. package/dist/commands/dataset/create.js.map +1 -1
  28. package/dist/commands/debug.js +5 -9
  29. package/dist/commands/debug.js.map +1 -1
  30. package/dist/commands/init.d.ts +6 -1
  31. package/dist/commands/init.js +358 -20
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/manifest/extract.js +7 -8
  34. package/dist/commands/manifest/extract.js.map +1 -1
  35. package/dist/config/createCliConfig.d.ts +9 -0
  36. package/dist/prompts/init/promptForTypescript.d.ts +2 -0
  37. package/dist/prompts/init/promptForTypescript.js +15 -0
  38. package/dist/prompts/init/promptForTypescript.js.map +1 -0
  39. package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
  40. package/dist/prompts/promptForDatasetAclMode.js +27 -0
  41. package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
  42. package/dist/prompts/promptForDatasetName.d.ts +1 -1
  43. package/dist/prompts/promptForDatasetName.js +4 -1
  44. package/dist/prompts/promptForDatasetName.js.map +1 -1
  45. package/dist/services/organizations.d.ts +3 -1
  46. package/dist/services/organizations.js +2 -1
  47. package/dist/services/organizations.js.map +1 -1
  48. package/dist/services/user.d.ts +5 -0
  49. package/dist/services/user.js +12 -1
  50. package/dist/services/user.js.map +1 -1
  51. package/dist/services/userApplications.d.ts +3 -1
  52. package/dist/services/userApplications.js +5 -1
  53. package/dist/services/userApplications.js.map +1 -1
  54. package/oclif.manifest.json +113 -113
  55. package/package.json +16 -12
  56. package/templates/app-quickstart/src/App.css +20 -0
  57. package/templates/app-quickstart/src/App.tsx +25 -0
  58. package/templates/app-quickstart/src/ExampleComponent.css +90 -0
  59. package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
  60. package/templates/app-sanity-ui/src/App.tsx +34 -0
  61. package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
  62. package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
  63. package/templates/blog/README.md +11 -0
  64. package/templates/blog/schemaTypes/author.js +50 -0
  65. package/templates/blog/schemaTypes/blockContent.js +67 -0
  66. package/templates/blog/schemaTypes/category.js +19 -0
  67. package/templates/blog/schemaTypes/index.js +6 -0
  68. package/templates/blog/schemaTypes/post.js +65 -0
  69. package/templates/blog/static/.gitkeep +1 -0
  70. package/templates/clean/README.md +9 -0
  71. package/templates/clean/schemaTypes/index.js +1 -0
  72. package/templates/clean/static/.gitkeep +1 -0
  73. package/templates/ecommerce/README.md +11 -0
  74. package/templates/ecommerce/plugins/.gitkeep +1 -0
  75. package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
  76. package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
  77. package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
  78. package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
  79. package/templates/ecommerce/schemaTypes/category.js +39 -0
  80. package/templates/ecommerce/schemaTypes/index.js +23 -0
  81. package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
  82. package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
  83. package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
  84. package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
  85. package/templates/ecommerce/schemaTypes/product.js +83 -0
  86. package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
  87. package/templates/ecommerce/schemaTypes/vendor.js +39 -0
  88. package/templates/ecommerce/static/.gitkeep +1 -0
  89. package/templates/get-started/README.md +9 -0
  90. package/templates/get-started/plugins/.gitkeep +1 -0
  91. package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
  92. package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
  93. package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
  94. package/templates/get-started/schemaTypes/index.ts +1 -0
  95. package/templates/get-started/static/.gitkeep +1 -0
  96. package/templates/moviedb/README.md +10 -0
  97. package/templates/moviedb/schemaTypes/blockContent.js +67 -0
  98. package/templates/moviedb/schemaTypes/castMember.js +37 -0
  99. package/templates/moviedb/schemaTypes/crewMember.js +52 -0
  100. package/templates/moviedb/schemaTypes/index.js +22 -0
  101. package/templates/moviedb/schemaTypes/movie.js +85 -0
  102. package/templates/moviedb/schemaTypes/person.js +37 -0
  103. package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
  104. package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
  105. package/templates/moviedb/schemaTypes/screening.js +81 -0
  106. package/templates/moviedb/static/.gitkeep +1 -0
  107. package/templates/quickstart/README.md +9 -0
  108. package/templates/quickstart/schemaTypes/index.js +1 -0
  109. package/templates/quickstart/static/.gitkeep +1 -0
  110. package/templates/shared/gitignore.txt +29 -0
  111. package/templates/shared/tsconfig.json +17 -0
  112. package/templates/shopify/README.md +85 -0
  113. package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
  114. package/templates/shopify/components/icons/Shopify.tsx +20 -0
  115. package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
  116. package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
  117. package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
  118. package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
  119. package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
  120. package/templates/shopify/components/media/ColorTheme.tsx +38 -0
  121. package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
  122. package/templates/shopify/components/studio/Navbar.tsx +29 -0
  123. package/templates/shopify/constants.ts +61 -0
  124. package/templates/shopify/docs/features.md +158 -0
  125. package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
  126. package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
  127. package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
  128. package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
  129. package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
  130. package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
  131. package/templates/shopify/schemaTypes/documents/page.ts +70 -0
  132. package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
  133. package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
  134. package/templates/shopify/schemaTypes/index.ts +108 -0
  135. package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
  136. package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
  137. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
  138. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
  139. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
  140. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
  141. package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
  142. package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
  143. package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
  144. package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
  145. package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
  146. package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
  147. package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
  148. package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
  149. package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
  150. package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
  151. package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
  152. package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
  153. package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
  154. package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
  155. package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
  156. package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
  157. package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
  158. package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
  159. package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
  160. package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
  161. package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
  162. package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
  163. package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
  164. package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
  165. package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
  166. package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
  167. package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
  168. package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
  169. package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
  170. package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
  171. package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
  172. package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
  173. package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
  174. package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
  175. package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
  176. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
  177. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
  178. package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
  179. package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
  180. package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
  181. package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
  182. package/templates/shopify/static/.gitkeep +1 -0
  183. package/templates/shopify/structure/collectionStructure.ts +9 -0
  184. package/templates/shopify/structure/colorThemeStructure.ts +9 -0
  185. package/templates/shopify/structure/homeStructure.ts +9 -0
  186. package/templates/shopify/structure/index.ts +57 -0
  187. package/templates/shopify/structure/pageStructure.ts +11 -0
  188. package/templates/shopify/structure/productStructure.ts +51 -0
  189. package/templates/shopify/structure/settingStructure.ts +9 -0
  190. package/templates/shopify/utils/blocksToText.ts +20 -0
  191. package/templates/shopify/utils/defineStructure.ts +11 -0
  192. package/templates/shopify/utils/getPriceRange.ts +24 -0
  193. package/templates/shopify/utils/shopifyUrls.ts +22 -0
  194. package/templates/shopify/utils/validateSlug.ts +18 -0
  195. package/templates/shopify-online-storefront/README.md +54 -0
  196. package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
  197. package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
  198. package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
  199. package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
  200. package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
  201. package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
  202. package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
  203. package/templates/shopify-online-storefront/constants.ts +18 -0
  204. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
  205. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
  206. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
  207. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
  208. package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
  209. package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
  210. package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
  211. package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
  212. package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
  213. package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
  214. package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
  215. package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
  216. package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
  217. package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
  218. package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
  219. package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
  220. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
  221. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
  222. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
  223. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
  224. package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
  225. package/templates/shopify-online-storefront/structure/index.ts +37 -0
  226. package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
  227. package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
  228. package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
  229. package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
  230. package/dist/actions/build/__tests__/buildApp.test.js +0 -367
  231. package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
  232. package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
  233. package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
  234. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
  235. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
  236. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
  237. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
  238. package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
  239. package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
  240. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
  241. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
  242. package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
  243. package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
  244. package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
  245. package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
  246. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
  247. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
  248. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
  249. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
  250. package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
  251. package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
  252. package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
  253. package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
  254. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
  255. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
  256. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
  257. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
  258. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
  259. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
  260. package/dist/actions/media/__tests__/importMedia.test.js +0 -182
  261. package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
  262. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
  263. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
  264. package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
  265. package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
  266. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
  267. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
  268. package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
  269. package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
  270. package/dist/commands/__tests__/blueprints.test.js +0 -54
  271. package/dist/commands/__tests__/blueprints.test.js.map +0 -1
  272. package/dist/commands/__tests__/build.test.js +0 -132
  273. package/dist/commands/__tests__/build.test.js.map +0 -1
  274. package/dist/commands/__tests__/codemod.test.js +0 -271
  275. package/dist/commands/__tests__/codemod.test.js.map +0 -1
  276. package/dist/commands/__tests__/debug.test.js +0 -590
  277. package/dist/commands/__tests__/debug.test.js.map +0 -1
  278. package/dist/commands/__tests__/deploy.test.js +0 -1945
  279. package/dist/commands/__tests__/deploy.test.js.map +0 -1
  280. package/dist/commands/__tests__/dev.test.js +0 -453
  281. package/dist/commands/__tests__/dev.test.js.map +0 -1
  282. package/dist/commands/__tests__/exec.test.js +0 -207
  283. package/dist/commands/__tests__/exec.test.js.map +0 -1
  284. package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
  285. package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
  286. package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
  287. package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
  288. package/dist/commands/__tests__/init/init.plan.test.js +0 -279
  289. package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
  290. package/dist/commands/__tests__/init/init.setup.test.js +0 -335
  291. package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
  292. package/dist/commands/__tests__/install.test.js +0 -282
  293. package/dist/commands/__tests__/install.test.js.map +0 -1
  294. package/dist/commands/__tests__/learn.test.js +0 -29
  295. package/dist/commands/__tests__/learn.test.js.map +0 -1
  296. package/dist/commands/__tests__/logout.test.js +0 -91
  297. package/dist/commands/__tests__/logout.test.js.map +0 -1
  298. package/dist/commands/__tests__/manage.test.js +0 -110
  299. package/dist/commands/__tests__/manage.test.js.map +0 -1
  300. package/dist/commands/__tests__/migration.test.js +0 -119
  301. package/dist/commands/__tests__/migration.test.js.map +0 -1
  302. package/dist/commands/__tests__/preview.test.js +0 -261
  303. package/dist/commands/__tests__/preview.test.js.map +0 -1
  304. package/dist/commands/__tests__/start.test.js +0 -253
  305. package/dist/commands/__tests__/start.test.js.map +0 -1
  306. package/dist/commands/__tests__/undeploy.test.js +0 -382
  307. package/dist/commands/__tests__/undeploy.test.js.map +0 -1
  308. package/dist/commands/__tests__/versions.test.js +0 -142
  309. package/dist/commands/__tests__/versions.test.js.map +0 -1
  310. package/dist/commands/backup/__tests__/disable.test.js +0 -204
  311. package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
  312. package/dist/commands/backup/__tests__/download.test.js +0 -768
  313. package/dist/commands/backup/__tests__/download.test.js.map +0 -1
  314. package/dist/commands/backup/__tests__/enable.test.js +0 -286
  315. package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
  316. package/dist/commands/backup/__tests__/list.test.js +0 -330
  317. package/dist/commands/backup/__tests__/list.test.js.map +0 -1
  318. package/dist/commands/cors/__tests__/add.test.js +0 -376
  319. package/dist/commands/cors/__tests__/add.test.js.map +0 -1
  320. package/dist/commands/cors/__tests__/delete.test.js +0 -308
  321. package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
  322. package/dist/commands/cors/__tests__/list.test.js +0 -241
  323. package/dist/commands/cors/__tests__/list.test.js.map +0 -1
  324. package/dist/commands/dataset/__tests__/copy.test.js +0 -628
  325. package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
  326. package/dist/commands/dataset/__tests__/create.test.js +0 -342
  327. package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
  328. package/dist/commands/dataset/__tests__/delete.test.js +0 -231
  329. package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
  330. package/dist/commands/dataset/__tests__/export.test.js +0 -601
  331. package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
  332. package/dist/commands/dataset/__tests__/import.test.js +0 -53
  333. package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
  334. package/dist/commands/dataset/__tests__/list.test.js +0 -216
  335. package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
  336. package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
  337. package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
  338. package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
  339. package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
  340. package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
  341. package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
  342. package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
  343. package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
  344. package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
  345. package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
  346. package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
  347. package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
  348. package/dist/commands/docs/__tests__/browse.test.js +0 -29
  349. package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
  350. package/dist/commands/docs/__tests__/read.test.js +0 -78
  351. package/dist/commands/docs/__tests__/read.test.js.map +0 -1
  352. package/dist/commands/docs/__tests__/search.test.js +0 -255
  353. package/dist/commands/docs/__tests__/search.test.js.map +0 -1
  354. package/dist/commands/documents/__tests__/create.test.js +0 -1030
  355. package/dist/commands/documents/__tests__/create.test.js.map +0 -1
  356. package/dist/commands/documents/__tests__/delete.test.js +0 -300
  357. package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
  358. package/dist/commands/documents/__tests__/get.test.js +0 -182
  359. package/dist/commands/documents/__tests__/get.test.js.map +0 -1
  360. package/dist/commands/documents/__tests__/query.test.js +0 -300
  361. package/dist/commands/documents/__tests__/query.test.js.map +0 -1
  362. package/dist/commands/documents/__tests__/validate.test.js +0 -249
  363. package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
  364. package/dist/commands/graphql/__tests__/list.test.js +0 -240
  365. package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
  366. package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
  367. package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
  368. package/dist/commands/hook/__tests__/attempt.test.js +0 -275
  369. package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
  370. package/dist/commands/hook/__tests__/create.test.js +0 -119
  371. package/dist/commands/hook/__tests__/create.test.js.map +0 -1
  372. package/dist/commands/hook/__tests__/delete.test.js +0 -233
  373. package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
  374. package/dist/commands/hook/__tests__/list.test.js +0 -145
  375. package/dist/commands/hook/__tests__/list.test.js.map +0 -1
  376. package/dist/commands/hook/__tests__/logs.test.js +0 -798
  377. package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
  378. package/dist/commands/manifest/__tests__/extract.test.js +0 -132
  379. package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
  380. package/dist/commands/mcp/__tests__/configure.test.js +0 -397
  381. package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
  382. package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
  383. package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
  384. package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
  385. package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
  386. package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
  387. package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
  388. package/dist/commands/media/__tests__/export.test.js +0 -697
  389. package/dist/commands/media/__tests__/export.test.js.map +0 -1
  390. package/dist/commands/media/__tests__/import.test.js +0 -347
  391. package/dist/commands/media/__tests__/import.test.js.map +0 -1
  392. package/dist/commands/openapi/__tests__/get.test.js +0 -149
  393. package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
  394. package/dist/commands/openapi/__tests__/list.test.js +0 -113
  395. package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
  396. package/dist/commands/projects/__tests__/list.test.js +0 -154
  397. package/dist/commands/projects/__tests__/list.test.js.map +0 -1
  398. package/dist/commands/schema/__tests__/delete.test.js +0 -454
  399. package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
  400. package/dist/commands/schema/__tests__/deploy.test.js +0 -348
  401. package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
  402. package/dist/commands/schema/__tests__/extract.test.js +0 -121
  403. package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
  404. package/dist/commands/schema/__tests__/list.test.js +0 -399
  405. package/dist/commands/schema/__tests__/list.test.js.map +0 -1
  406. package/dist/commands/schema/__tests__/validate.test.js +0 -121
  407. package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
  408. package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
  409. package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
  410. package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
  411. package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
  412. package/dist/commands/telemetry/__tests__/status.test.js +0 -155
  413. package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
  414. package/dist/commands/tokens/__tests__/add.test.js +0 -435
  415. package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
  416. package/dist/commands/tokens/__tests__/delete.test.js +0 -405
  417. package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
  418. package/dist/commands/tokens/__tests__/list.test.js +0 -395
  419. package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
  420. package/dist/commands/users/__tests__/invite.test.js +0 -362
  421. package/dist/commands/users/__tests__/invite.test.js.map +0 -1
  422. package/dist/commands/users/__tests__/list.test.js +0 -407
  423. package/dist/commands/users/__tests__/list.test.js.map +0 -1
  424. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
  425. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
  426. package/dist/services/__tests__/datasetAliases.test.js +0 -131
  427. package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
  428. package/dist/services/__tests__/datasets.test.js +0 -436
  429. package/dist/services/__tests__/datasets.test.js.map +0 -1
  430. package/dist/services/__tests__/graphql.test.js +0 -43
  431. package/dist/services/__tests__/graphql.test.js.map +0 -1
  432. package/dist/services/__tests__/mediaLibraries.test.js +0 -88
  433. package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
  434. package/dist/services/__tests__/projects.test.js +0 -41
  435. package/dist/services/__tests__/projects.test.js.map +0 -1
  436. package/dist/services/__tests__/userApplications.test.js +0 -113
  437. package/dist/services/__tests__/userApplications.test.js.map +0 -1
  438. package/dist/util/__tests__/appId.test.js +0 -31
  439. package/dist/util/__tests__/appId.test.js.map +0 -1
  440. package/dist/util/__tests__/cliClient.test.js +0 -184
  441. package/dist/util/__tests__/cliClient.test.js.map +0 -1
  442. package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
  443. package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
  444. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
  445. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
  446. package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
  447. package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
  448. package/dist/util/__tests__/getCliVersion.test.js +0 -28
  449. package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
  450. package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
  451. package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
  452. package/dist/util/__tests__/getWorkspace.test.js +0 -37
  453. package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
  454. package/dist/util/__tests__/readPackageJson.test.js +0 -69
  455. package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
  456. package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
  457. package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
  458. package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
  459. package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
  460. package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
  461. package/dist/util/validation/ __tests__/validateDocuments.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/commands/dataset/alias/__tests__/link.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {createTestClient, mockApi, testCommand} from '@sanity/cli-test'\nimport nock from 'nock'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {DATASET_API_VERSION} from '../../../../services/datasets.js'\nimport {NO_PROJECT_ID} from '../../../../util/errorMessages.js'\nimport {LinkAliasCommand} from '../link.js'\n\nconst mockListDatasets = vi.hoisted(() => vi.fn())\nconst testProjectId = vi.hoisted(() => 'test-project')\nconst testToken = vi.hoisted(() => 'test-token')\n\nvi.mock('@sanity/cli-core', async (importOriginal) => {\n const actual = await importOriginal<typeof import('@sanity/cli-core')>()\n const testClient = createTestClient({\n apiVersion: 'v2025-09-16',\n projectId: testProjectId,\n token: testToken,\n })\n\n return {\n ...actual,\n getProjectCliClient: vi.fn().mockResolvedValue({\n datasets: {\n list: mockListDatasets,\n } as never,\n request: testClient.request,\n }),\n }\n})\n\nconst defaultMocks = {\n cliConfig: {api: {projectId: testProjectId}},\n projectRoot: {\n directory: '/test/path',\n path: '/test/path/sanity.config.ts',\n type: 'studio' as const,\n },\n token: testToken,\n}\n\ndescribe('#dataset:alias:link', () => {\n afterEach(() => {\n vi.clearAllMocks()\n const pending = nock.pendingMocks()\n nock.cleanAll()\n expect(pending, 'pending mocks').toEqual([])\n })\n\n test('help works correctly', async () => {\n const {stdout} = await runCommand(['dataset alias link', '--help'])\n expect(stdout).toMatchInlineSnapshot(`\n \"Link a dataset alias to a dataset within your project\n\n USAGE\n $ sanity dataset alias link [ALIASNAME] [TARGETDATASET] [--force]\n\n ARGUMENTS\n [ALIASNAME] Dataset alias name to link\n [TARGETDATASET] Target dataset name to link the alias to\n\n FLAGS\n --force Skip confirmation prompt when relinking existing alias\n\n DESCRIPTION\n Link a dataset alias to a dataset within your project\n\n EXAMPLES\n Link an alias with interactive prompts\n\n $ sanity dataset alias link\n\n Link alias named \"conference\" with interactive dataset selection\n\n $ sanity dataset alias link conference\n\n Link alias \"conference\" to \"conf-2025\" dataset\n\n $ sanity dataset alias link conference conf-2025\n\n Link alias with explicit ~ prefix\n\n $ sanity dataset alias link ~conference conf-2025\n\n Force link without confirmation (skip relink prompt)\n\n $ sanity dataset alias link conference conf-2025 --force\n\n \"\n `)\n })\n\n test('links alias with valid arguments', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}, {name: 'development'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: null, name: 'staging'}])\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'patch',\n uri: `/aliases/staging`,\n }).reply(200, {aliasName: 'staging', datasetName: 'production'})\n\n const {stdout} = await testCommand(LinkAliasCommand, ['staging', 'production'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain('Dataset alias ~staging linked to production successfully')\n })\n\n test('re-links already-linked alias when using force flag', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}, {name: 'development'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: 'development', name: 'staging'}])\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'patch',\n uri: `/aliases/staging`,\n }).reply(200, {aliasName: 'staging', datasetName: 'production'})\n\n const {stderr, stdout} = await testCommand(\n LinkAliasCommand,\n ['staging', 'production', '--force'],\n {mocks: defaultMocks},\n )\n\n expect(stderr).toContain(\"'--force' used: skipping confirmation, linking alias to\")\n expect(stdout).toContain('Dataset alias ~staging linked to production successfully')\n })\n\n test('links unlinked alias without requiring confirmation', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: null, name: 'staging'}])\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'patch',\n uri: `/aliases/staging`,\n }).reply(200, {aliasName: 'staging', datasetName: 'production'})\n\n const {stdout} = await testCommand(LinkAliasCommand, ['staging', 'production'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain('Dataset alias ~staging linked to production successfully')\n expect(stdout).not.toContain('confirmation')\n })\n\n test.each([\n [\n 'invalid-alias-name-that-is-way-too-long-and-exceeds-the-maximum-allowed-length',\n 'production',\n 'Alias name must be at most 64 characters',\n ],\n ['staging', 'Invalid-Dataset', 'Dataset name must be all lowercase characters'],\n ])('fails with invalid input: alias=%s, dataset=%s', async (alias, dataset, expectedError) => {\n const {error} = await testCommand(LinkAliasCommand, [alias, dataset], {mocks: defaultMocks})\n\n expect(error?.message).toContain(expectedError)\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('fails when no project ID', async () => {\n const {error} = await testCommand(LinkAliasCommand, ['staging', 'production'], {\n mocks: {\n ...defaultMocks,\n cliConfig: {api: {}},\n },\n })\n\n expect(error?.message).toContain(NO_PROJECT_ID)\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('fails when alias does not exist', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: null, name: 'staging'}])\n\n const {error} = await testCommand(LinkAliasCommand, ['nonexistent', 'production'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset alias \"~nonexistent\" does not exist')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('fails when dataset does not exist', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: null, name: 'staging'}])\n\n const {error} = await testCommand(LinkAliasCommand, ['staging', 'nonexistent'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset \"nonexistent\" does not exist')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('fails when alias already linked to same dataset', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: 'production', name: 'staging'}])\n\n const {error} = await testCommand(LinkAliasCommand, ['staging', 'production'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset alias ~staging already linked to production')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('fails when no datasets available', async () => {\n mockListDatasets.mockResolvedValue([] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: null, name: 'staging'}])\n\n const {error} = await testCommand(LinkAliasCommand, ['staging'], {mocks: defaultMocks})\n\n expect(error?.message).toContain('No datasets available to link to')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles API error gracefully', async () => {\n mockListDatasets.mockResolvedValue([{name: 'production'}] as never)\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'get',\n uri: `/aliases`,\n }).reply(200, [{datasetName: null, name: 'staging'}])\n\n mockApi({\n apiHost: `https://${testProjectId}.api.sanity.io`,\n apiVersion: DATASET_API_VERSION,\n method: 'patch',\n uri: `/aliases/staging`,\n }).reply(500, {error: 'API Error', message: 'API Error'})\n\n const {error} = await testCommand(LinkAliasCommand, ['staging', 'production'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset alias linking failed: API Error')\n expect(error?.oclif?.exit).toBe(1)\n })\n})\n"],"names":["runCommand","createTestClient","mockApi","testCommand","nock","afterEach","describe","expect","test","vi","DATASET_API_VERSION","NO_PROJECT_ID","LinkAliasCommand","mockListDatasets","hoisted","fn","testProjectId","testToken","mock","importOriginal","actual","testClient","apiVersion","projectId","token","getProjectCliClient","mockResolvedValue","datasets","list","request","defaultMocks","cliConfig","api","projectRoot","directory","path","type","clearAllMocks","pending","pendingMocks","cleanAll","toEqual","stdout","toMatchInlineSnapshot","name","apiHost","method","uri","reply","datasetName","aliasName","mocks","toContain","stderr","not","each","alias","dataset","expectedError","error","message","oclif","exit","toBe"],"mappings":"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"}
@@ -1,313 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { input } from '@sanity/cli-core/ux';
3
- import { mockApi, testCommand } from '@sanity/cli-test';
4
- import nock from 'nock';
5
- import { afterEach, describe, expect, test, vi } from 'vitest';
6
- import { DATASET_ALIASES_API_VERSION } from '../../../../services/datasetAliases.js';
7
- import { NO_PROJECT_ID } from '../../../../util/errorMessages.js';
8
- import { UnlinkAliasCommand } from '../unlink.js';
9
- vi.mock('@sanity/cli-core/ux', async ()=>{
10
- const actual = await vi.importActual('@sanity/cli-core/ux');
11
- return {
12
- ...actual,
13
- input: vi.fn()
14
- };
15
- });
16
- const testProjectId = 'test-project';
17
- const defaultMocks = {
18
- cliConfig: {
19
- api: {
20
- projectId: testProjectId
21
- }
22
- },
23
- projectRoot: {
24
- directory: '/test/path',
25
- path: '/test/path/sanity.config.ts',
26
- type: 'studio'
27
- },
28
- token: 'test-token'
29
- };
30
- const mockInput = vi.mocked(input);
31
- describe('#dataset:alias:unlink', ()=>{
32
- afterEach(()=>{
33
- vi.clearAllMocks();
34
- const pending = nock.pendingMocks();
35
- nock.cleanAll();
36
- expect(pending, 'pending mocks').toEqual([]);
37
- });
38
- test('help works correctly', async ()=>{
39
- const { stdout } = await runCommand([
40
- 'dataset alias unlink',
41
- '--help'
42
- ]);
43
- expect(stdout).toMatchInlineSnapshot(`
44
- "Unlink a dataset alias from its dataset within your project
45
-
46
- USAGE
47
- $ sanity dataset alias unlink [ALIASNAME] [--force]
48
-
49
- ARGUMENTS
50
- [ALIASNAME] Dataset alias name to unlink
51
-
52
- FLAGS
53
- --force Skip confirmation prompt and unlink immediately
54
-
55
- DESCRIPTION
56
- Unlink a dataset alias from its dataset within your project
57
-
58
- EXAMPLES
59
- Unlink an alias with interactive selection
60
-
61
- $ sanity dataset alias unlink
62
-
63
- Unlink alias "conference" with confirmation prompt
64
-
65
- $ sanity dataset alias unlink conference
66
-
67
- Unlink alias with explicit ~ prefix
68
-
69
- $ sanity dataset alias unlink ~conference
70
-
71
- Unlink alias "conference" without confirmation prompt
72
-
73
- $ sanity dataset alias unlink conference --force
74
-
75
- "
76
- `);
77
- });
78
- test.each([
79
- [
80
- 'staging',
81
- 'without ~ prefix'
82
- ],
83
- [
84
- '~staging',
85
- 'with ~ prefix'
86
- ]
87
- ])('unlinks alias with confirmation: %s (%s)', async (aliasInput)=>{
88
- mockApi({
89
- apiHost: 'https://test-project.api.sanity.io',
90
- apiVersion: DATASET_ALIASES_API_VERSION,
91
- uri: '/aliases'
92
- }).reply(200, [
93
- {
94
- datasetName: 'production',
95
- name: 'staging'
96
- },
97
- {
98
- datasetName: null,
99
- name: 'unlinked'
100
- }
101
- ]);
102
- mockApi({
103
- apiHost: 'https://test-project.api.sanity.io',
104
- apiVersion: DATASET_ALIASES_API_VERSION,
105
- method: 'patch',
106
- uri: '/aliases/staging/unlink'
107
- }).reply(200, {
108
- aliasName: 'staging',
109
- datasetName: 'production'
110
- });
111
- mockInput.mockResolvedValueOnce('yes');
112
- const { stdout } = await testCommand(UnlinkAliasCommand, [
113
- aliasInput
114
- ], {
115
- mocks: defaultMocks
116
- });
117
- expect(stdout).toContain('Dataset alias ~staging unlinked from production successfully');
118
- expect(mockInput).toHaveBeenCalledWith({
119
- message: expect.stringContaining('Are you ABSOLUTELY sure you want to unlink this alias from the "production" dataset?'),
120
- validate: expect.any(Function)
121
- });
122
- });
123
- test('unlinks alias with force flag (skips confirmation)', async ()=>{
124
- mockApi({
125
- apiHost: 'https://test-project.api.sanity.io',
126
- apiVersion: DATASET_ALIASES_API_VERSION,
127
- uri: '/aliases'
128
- }).reply(200, [
129
- {
130
- datasetName: 'production',
131
- name: 'staging'
132
- },
133
- {
134
- datasetName: null,
135
- name: 'unlinked'
136
- }
137
- ]);
138
- mockApi({
139
- apiHost: 'https://test-project.api.sanity.io',
140
- apiVersion: DATASET_ALIASES_API_VERSION,
141
- method: 'patch',
142
- uri: '/aliases/staging/unlink'
143
- }).reply(200, {
144
- aliasName: 'staging',
145
- datasetName: 'production'
146
- });
147
- const { stderr, stdout } = await testCommand(UnlinkAliasCommand, [
148
- 'staging',
149
- '--force'
150
- ], {
151
- mocks: defaultMocks
152
- });
153
- expect(stdout).toContain('Dataset alias ~staging unlinked from production successfully');
154
- expect(stderr).toContain('\'--force\' used: skipping confirmation, unlinking alias "~staging"');
155
- expect(mockInput).not.toHaveBeenCalled();
156
- });
157
- test('prompts for alias name when no alias provided', async ()=>{
158
- mockApi({
159
- apiHost: 'https://test-project.api.sanity.io',
160
- apiVersion: DATASET_ALIASES_API_VERSION,
161
- uri: '/aliases'
162
- }).reply(200, [
163
- {
164
- datasetName: 'production',
165
- name: 'staging'
166
- },
167
- {
168
- datasetName: null,
169
- name: 'unlinked'
170
- }
171
- ]);
172
- mockApi({
173
- apiHost: 'https://test-project.api.sanity.io',
174
- apiVersion: DATASET_ALIASES_API_VERSION,
175
- method: 'patch',
176
- uri: '/aliases/staging/unlink'
177
- }).reply(200, {
178
- aliasName: 'staging',
179
- datasetName: 'production'
180
- });
181
- mockInput.mockResolvedValueOnce('staging') // alias name prompt
182
- .mockResolvedValueOnce('yes'); // confirmation prompt
183
- const { stdout } = await testCommand(UnlinkAliasCommand, [], {
184
- mocks: defaultMocks
185
- });
186
- expect(stdout).toContain('Dataset alias ~staging unlinked from production successfully');
187
- expect(mockInput).toHaveBeenCalledWith({
188
- message: 'Alias name:',
189
- validate: expect.any(Function)
190
- });
191
- });
192
- test('handles user cancellation during confirmation', async ()=>{
193
- mockApi({
194
- apiHost: 'https://test-project.api.sanity.io',
195
- apiVersion: DATASET_ALIASES_API_VERSION,
196
- uri: '/aliases'
197
- }).reply(200, [
198
- {
199
- datasetName: 'production',
200
- name: 'staging'
201
- },
202
- {
203
- datasetName: null,
204
- name: 'unlinked'
205
- }
206
- ]);
207
- mockInput.mockRejectedValueOnce(new Error('User cancelled'));
208
- const { error } = await testCommand(UnlinkAliasCommand, [
209
- 'staging'
210
- ], {
211
- mocks: defaultMocks
212
- });
213
- expect(error?.message).toContain('Dataset alias unlink failed: User cancelled');
214
- expect(error?.oclif?.exit).toBe(1);
215
- });
216
- test('shows error when no project ID available', async ()=>{
217
- const { error } = await testCommand(UnlinkAliasCommand, [
218
- 'staging'
219
- ], {
220
- mocks: {
221
- ...defaultMocks,
222
- cliConfig: {}
223
- }
224
- });
225
- expect(error?.message).toContain(NO_PROJECT_ID);
226
- expect(error?.oclif?.exit).toBe(1);
227
- });
228
- test('shows error when alias name is invalid', async ()=>{
229
- const { error } = await testCommand(UnlinkAliasCommand, [
230
- 'invalid-alias!'
231
- ], {
232
- mocks: defaultMocks
233
- });
234
- expect(error?.message).toContain('Alias name must only contain letters, numbers, dashes and underscores');
235
- expect(error?.oclif?.exit).toBe(1);
236
- });
237
- test('shows error when alias does not exist', async ()=>{
238
- mockApi({
239
- apiHost: 'https://test-project.api.sanity.io',
240
- apiVersion: DATASET_ALIASES_API_VERSION,
241
- uri: '/aliases'
242
- }).reply(200, [
243
- {
244
- datasetName: 'production',
245
- name: 'staging'
246
- },
247
- {
248
- datasetName: null,
249
- name: 'unlinked'
250
- }
251
- ]);
252
- const { error } = await testCommand(UnlinkAliasCommand, [
253
- 'nonexistent'
254
- ], {
255
- mocks: defaultMocks
256
- });
257
- expect(error?.message).toContain('Dataset alias "~nonexistent" does not exist');
258
- expect(error?.oclif?.exit).toBe(1);
259
- });
260
- test('shows error when alias exists but is not linked', async ()=>{
261
- mockApi({
262
- apiHost: 'https://test-project.api.sanity.io',
263
- apiVersion: DATASET_ALIASES_API_VERSION,
264
- uri: '/aliases'
265
- }).reply(200, [
266
- {
267
- datasetName: 'production',
268
- name: 'staging'
269
- },
270
- {
271
- datasetName: null,
272
- name: 'unlinked'
273
- }
274
- ]);
275
- const { error } = await testCommand(UnlinkAliasCommand, [
276
- 'unlinked'
277
- ], {
278
- mocks: defaultMocks
279
- });
280
- expect(error?.message).toContain('Dataset alias "~unlinked" is not linked to a dataset');
281
- expect(error?.oclif?.exit).toBe(1);
282
- });
283
- test('handles API error during unlink', async ()=>{
284
- mockApi({
285
- apiHost: 'https://test-project.api.sanity.io',
286
- apiVersion: DATASET_ALIASES_API_VERSION,
287
- uri: '/aliases'
288
- }).reply(200, [
289
- {
290
- datasetName: 'production',
291
- name: 'staging'
292
- }
293
- ]);
294
- mockApi({
295
- apiHost: 'https://test-project.api.sanity.io',
296
- apiVersion: DATASET_ALIASES_API_VERSION,
297
- method: 'patch',
298
- uri: '/aliases/staging/unlink'
299
- }).reply(500, {
300
- message: 'API Error'
301
- });
302
- mockInput.mockResolvedValueOnce('yes');
303
- const { error } = await testCommand(UnlinkAliasCommand, [
304
- 'staging'
305
- ], {
306
- mocks: defaultMocks
307
- });
308
- expect(error?.message).toContain('Dataset alias unlink failed: API Error');
309
- expect(error?.oclif?.exit).toBe(1);
310
- });
311
- });
312
-
313
- //# sourceMappingURL=unlink.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/commands/dataset/alias/__tests__/unlink.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {input} from '@sanity/cli-core/ux'\nimport {mockApi, testCommand} from '@sanity/cli-test'\nimport nock from 'nock'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {DATASET_ALIASES_API_VERSION} from '../../../../services/datasetAliases.js'\nimport {NO_PROJECT_ID} from '../../../../util/errorMessages.js'\nimport {UnlinkAliasCommand} from '../unlink.js'\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 input: vi.fn(),\n }\n})\n\nconst testProjectId = 'test-project'\n\nconst defaultMocks = {\n cliConfig: {api: {projectId: testProjectId}},\n projectRoot: {\n directory: '/test/path',\n path: '/test/path/sanity.config.ts',\n type: 'studio' as const,\n },\n token: 'test-token',\n}\n\nconst mockInput = vi.mocked(input)\n\ndescribe('#dataset:alias:unlink', () => {\n afterEach(() => {\n vi.clearAllMocks()\n const pending = nock.pendingMocks()\n nock.cleanAll()\n expect(pending, 'pending mocks').toEqual([])\n })\n\n test('help works correctly', async () => {\n const {stdout} = await runCommand(['dataset alias unlink', '--help'])\n expect(stdout).toMatchInlineSnapshot(`\n \"Unlink a dataset alias from its dataset within your project\n\n USAGE\n $ sanity dataset alias unlink [ALIASNAME] [--force]\n\n ARGUMENTS\n [ALIASNAME] Dataset alias name to unlink\n\n FLAGS\n --force Skip confirmation prompt and unlink immediately\n\n DESCRIPTION\n Unlink a dataset alias from its dataset within your project\n\n EXAMPLES\n Unlink an alias with interactive selection\n\n $ sanity dataset alias unlink\n\n Unlink alias \"conference\" with confirmation prompt\n\n $ sanity dataset alias unlink conference\n\n Unlink alias with explicit ~ prefix\n\n $ sanity dataset alias unlink ~conference\n\n Unlink alias \"conference\" without confirmation prompt\n\n $ sanity dataset alias unlink conference --force\n\n \"\n `)\n })\n\n test.each([\n ['staging', 'without ~ prefix'],\n ['~staging', 'with ~ prefix'],\n ])('unlinks alias with confirmation: %s (%s)', async (aliasInput) => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [\n {datasetName: 'production', name: 'staging'},\n {datasetName: null, name: 'unlinked'},\n ])\n\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n method: 'patch',\n uri: '/aliases/staging/unlink',\n }).reply(200, {aliasName: 'staging', datasetName: 'production'})\n\n mockInput.mockResolvedValueOnce('yes')\n\n const {stdout} = await testCommand(UnlinkAliasCommand, [aliasInput], {mocks: defaultMocks})\n\n expect(stdout).toContain('Dataset alias ~staging unlinked from production successfully')\n expect(mockInput).toHaveBeenCalledWith({\n message: expect.stringContaining(\n 'Are you ABSOLUTELY sure you want to unlink this alias from the \"production\" dataset?',\n ),\n validate: expect.any(Function),\n })\n })\n\n test('unlinks alias with force flag (skips confirmation)', async () => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [\n {datasetName: 'production', name: 'staging'},\n {datasetName: null, name: 'unlinked'},\n ])\n\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n method: 'patch',\n uri: '/aliases/staging/unlink',\n }).reply(200, {aliasName: 'staging', datasetName: 'production'})\n\n const {stderr, stdout} = await testCommand(UnlinkAliasCommand, ['staging', '--force'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain('Dataset alias ~staging unlinked from production successfully')\n expect(stderr).toContain('\\'--force\\' used: skipping confirmation, unlinking alias \"~staging\"')\n expect(mockInput).not.toHaveBeenCalled()\n })\n\n test('prompts for alias name when no alias provided', async () => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [\n {datasetName: 'production', name: 'staging'},\n {datasetName: null, name: 'unlinked'},\n ])\n\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n method: 'patch',\n uri: '/aliases/staging/unlink',\n }).reply(200, {aliasName: 'staging', datasetName: 'production'})\n\n mockInput\n .mockResolvedValueOnce('staging') // alias name prompt\n .mockResolvedValueOnce('yes') // confirmation prompt\n\n const {stdout} = await testCommand(UnlinkAliasCommand, [], {mocks: defaultMocks})\n\n expect(stdout).toContain('Dataset alias ~staging unlinked from production successfully')\n expect(mockInput).toHaveBeenCalledWith({\n message: 'Alias name:',\n validate: expect.any(Function),\n })\n })\n\n test('handles user cancellation during confirmation', async () => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [\n {datasetName: 'production', name: 'staging'},\n {datasetName: null, name: 'unlinked'},\n ])\n\n mockInput.mockRejectedValueOnce(new Error('User cancelled'))\n\n const {error} = await testCommand(UnlinkAliasCommand, ['staging'], {mocks: defaultMocks})\n\n expect(error?.message).toContain('Dataset alias unlink failed: User cancelled')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when no project ID available', async () => {\n const {error} = await testCommand(UnlinkAliasCommand, ['staging'], {\n mocks: {\n ...defaultMocks,\n cliConfig: {},\n },\n })\n\n expect(error?.message).toContain(NO_PROJECT_ID)\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when alias name is invalid', async () => {\n const {error} = await testCommand(UnlinkAliasCommand, ['invalid-alias!'], {mocks: defaultMocks})\n\n expect(error?.message).toContain(\n 'Alias name must only contain letters, numbers, dashes and underscores',\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when alias does not exist', async () => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [\n {datasetName: 'production', name: 'staging'},\n {datasetName: null, name: 'unlinked'},\n ])\n\n const {error} = await testCommand(UnlinkAliasCommand, ['nonexistent'], {mocks: defaultMocks})\n\n expect(error?.message).toContain('Dataset alias \"~nonexistent\" does not exist')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when alias exists but is not linked', async () => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [\n {datasetName: 'production', name: 'staging'},\n {datasetName: null, name: 'unlinked'},\n ])\n\n const {error} = await testCommand(UnlinkAliasCommand, ['unlinked'], {mocks: defaultMocks})\n\n expect(error?.message).toContain('Dataset alias \"~unlinked\" is not linked to a dataset')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles API error during unlink', async () => {\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n uri: '/aliases',\n }).reply(200, [{datasetName: 'production', name: 'staging'}])\n\n mockApi({\n apiHost: 'https://test-project.api.sanity.io',\n apiVersion: DATASET_ALIASES_API_VERSION,\n method: 'patch',\n uri: '/aliases/staging/unlink',\n }).reply(500, {message: 'API Error'})\n\n mockInput.mockResolvedValueOnce('yes')\n\n const {error} = await testCommand(UnlinkAliasCommand, ['staging'], {mocks: defaultMocks})\n\n expect(error?.message).toContain('Dataset alias unlink failed: API Error')\n expect(error?.oclif?.exit).toBe(1)\n })\n})\n"],"names":["runCommand","input","mockApi","testCommand","nock","afterEach","describe","expect","test","vi","DATASET_ALIASES_API_VERSION","NO_PROJECT_ID","UnlinkAliasCommand","mock","actual","importActual","fn","testProjectId","defaultMocks","cliConfig","api","projectId","projectRoot","directory","path","type","token","mockInput","mocked","clearAllMocks","pending","pendingMocks","cleanAll","toEqual","stdout","toMatchInlineSnapshot","each","aliasInput","apiHost","apiVersion","uri","reply","datasetName","name","method","aliasName","mockResolvedValueOnce","mocks","toContain","toHaveBeenCalledWith","message","stringContaining","validate","any","Function","stderr","not","toHaveBeenCalled","mockRejectedValueOnce","Error","error","oclif","exit","toBe"],"mappings":"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"}
@@ -1,128 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { testCommand } from '@sanity/cli-test';
3
- import { afterEach, describe, expect, test, vi } from 'vitest';
4
- import { NO_PROJECT_ID } from '../../../../util/errorMessages.js';
5
- import { DatasetVisibilityGetCommand } from '../get.js';
6
- const mockListDatasets = vi.hoisted(()=>vi.fn());
7
- vi.mock('@sanity/cli-core', async (importOriginal)=>{
8
- const actual = await importOriginal();
9
- return {
10
- ...actual,
11
- getProjectCliClient: vi.fn().mockResolvedValue({
12
- datasets: {
13
- list: mockListDatasets
14
- }
15
- })
16
- };
17
- });
18
- const testProjectId = 'test-project';
19
- const defaultMocks = {
20
- cliConfig: {
21
- api: {
22
- projectId: testProjectId
23
- }
24
- },
25
- projectRoot: {
26
- directory: '/test/path',
27
- path: '/test/path/sanity.config.ts',
28
- type: 'studio'
29
- },
30
- token: 'test-token'
31
- };
32
- describe('#dataset:visibility:get', ()=>{
33
- afterEach(()=>{
34
- vi.clearAllMocks();
35
- });
36
- test('--help works', async ()=>{
37
- const { stdout } = await runCommand([
38
- 'dataset visibility get',
39
- '--help'
40
- ]);
41
- expect(stdout).toMatchInlineSnapshot(`
42
- "Get the visibility of a dataset
43
-
44
- USAGE
45
- $ sanity dataset visibility get DATASET
46
-
47
- ARGUMENTS
48
- DATASET The name of the dataset to get visibility for
49
-
50
- DESCRIPTION
51
- Get the visibility of a dataset
52
-
53
- EXAMPLES
54
- Check the visibility of a dataset
55
-
56
- $ sanity dataset visibility get my-dataset
57
-
58
- "
59
- `);
60
- });
61
- test('gets dataset visibility successfully', async ()=>{
62
- mockListDatasets.mockResolvedValue([
63
- {
64
- aclMode: 'private',
65
- name: 'my-dataset'
66
- }
67
- ]);
68
- const { stdout } = await testCommand(DatasetVisibilityGetCommand, [
69
- 'my-dataset'
70
- ], {
71
- mocks: defaultMocks
72
- });
73
- expect(stdout).toContain('private');
74
- });
75
- test('shows error when dataset is not found', async ()=>{
76
- mockListDatasets.mockResolvedValue([
77
- {
78
- aclMode: 'public',
79
- name: 'other-dataset'
80
- }
81
- ]);
82
- const { error } = await testCommand(DatasetVisibilityGetCommand, [
83
- 'not-found'
84
- ], {
85
- mocks: defaultMocks
86
- });
87
- expect(error?.message).toContain('Dataset not found: not-found');
88
- expect(error?.oclif?.exit).toBe(1);
89
- });
90
- test('shows error for invalid dataset name', async ()=>{
91
- const invalidDatasetName = 'invalid-dataset-name!';
92
- const { error } = await testCommand(DatasetVisibilityGetCommand, [
93
- invalidDatasetName
94
- ], {
95
- mocks: defaultMocks
96
- });
97
- expect(error?.message).toContain('Dataset name must only contain');
98
- expect(error?.oclif?.exit).toBe(1);
99
- });
100
- test('shows error when no project ID is available', async ()=>{
101
- const { error } = await testCommand(DatasetVisibilityGetCommand, [
102
- 'my-dataset'
103
- ], {
104
- mocks: {
105
- ...defaultMocks,
106
- cliConfig: {
107
- api: {
108
- projectId: undefined
109
- }
110
- }
111
- }
112
- });
113
- expect(error?.message).toContain(NO_PROJECT_ID);
114
- expect(error?.oclif?.exit).toBe(1);
115
- });
116
- test('handles error when listing datasets', async ()=>{
117
- mockListDatasets.mockRejectedValue(new Error('Network error'));
118
- const { error } = await testCommand(DatasetVisibilityGetCommand, [
119
- 'my-dataset'
120
- ], {
121
- mocks: defaultMocks
122
- });
123
- expect(error?.message).toContain('Failed to list datasets');
124
- expect(error?.oclif?.exit).toBe(1);
125
- });
126
- });
127
-
128
- //# sourceMappingURL=get.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/commands/dataset/visibility/__tests__/get.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {NO_PROJECT_ID} from '../../../../util/errorMessages.js'\nimport {DatasetVisibilityGetCommand} from '../get.js'\n\nconst mockListDatasets = vi.hoisted(() => vi.fn())\n\nvi.mock('@sanity/cli-core', async (importOriginal) => {\n const actual = await importOriginal<typeof import('@sanity/cli-core')>()\n return {\n ...actual,\n getProjectCliClient: vi.fn().mockResolvedValue({\n datasets: {\n list: mockListDatasets,\n } as never,\n }),\n }\n})\n\nconst testProjectId = 'test-project'\n\nconst defaultMocks = {\n cliConfig: {api: {projectId: testProjectId}},\n projectRoot: {\n directory: '/test/path',\n path: '/test/path/sanity.config.ts',\n type: 'studio' as const,\n },\n token: 'test-token',\n}\n\ndescribe('#dataset:visibility:get', () => {\n afterEach(() => {\n vi.clearAllMocks()\n })\n\n test('--help works', async () => {\n const {stdout} = await runCommand(['dataset visibility get', '--help'])\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Get the visibility of a dataset\n\n USAGE\n $ sanity dataset visibility get DATASET\n\n ARGUMENTS\n DATASET The name of the dataset to get visibility for\n\n DESCRIPTION\n Get the visibility of a dataset\n\n EXAMPLES\n Check the visibility of a dataset\n\n $ sanity dataset visibility get my-dataset\n\n \"\n `)\n })\n\n test('gets dataset visibility successfully', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'private', name: 'my-dataset'}] as never)\n\n const {stdout} = await testCommand(DatasetVisibilityGetCommand, ['my-dataset'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain('private')\n })\n\n test('shows error when dataset is not found', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'public', name: 'other-dataset'}] as never)\n\n const {error} = await testCommand(DatasetVisibilityGetCommand, ['not-found'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset not found: not-found')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error for invalid dataset name', async () => {\n const invalidDatasetName = 'invalid-dataset-name!'\n\n const {error} = await testCommand(DatasetVisibilityGetCommand, [invalidDatasetName], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset name must only contain')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when no project ID is available', async () => {\n const {error} = await testCommand(DatasetVisibilityGetCommand, ['my-dataset'], {\n mocks: {\n ...defaultMocks,\n cliConfig: {api: {projectId: undefined}},\n },\n })\n\n expect(error?.message).toContain(NO_PROJECT_ID)\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles error when listing datasets', async () => {\n mockListDatasets.mockRejectedValue(new Error('Network error'))\n\n const {error} = await testCommand(DatasetVisibilityGetCommand, ['my-dataset'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Failed to list datasets')\n expect(error?.oclif?.exit).toBe(1)\n })\n})\n"],"names":["runCommand","testCommand","afterEach","describe","expect","test","vi","NO_PROJECT_ID","DatasetVisibilityGetCommand","mockListDatasets","hoisted","fn","mock","importOriginal","actual","getProjectCliClient","mockResolvedValue","datasets","list","testProjectId","defaultMocks","cliConfig","api","projectId","projectRoot","directory","path","type","token","clearAllMocks","stdout","toMatchInlineSnapshot","aclMode","name","mocks","toContain","error","message","oclif","exit","toBe","invalidDatasetName","undefined","mockRejectedValue","Error"],"mappings":"AAAA,SAAQA,UAAU,QAAO,cAAa;AACtC,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,SAAQC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAE5D,SAAQC,aAAa,QAAO,oCAAmC;AAC/D,SAAQC,2BAA2B,QAAO,YAAW;AAErD,MAAMC,mBAAmBH,GAAGI,OAAO,CAAC,IAAMJ,GAAGK,EAAE;AAE/CL,GAAGM,IAAI,CAAC,oBAAoB,OAAOC;IACjC,MAAMC,SAAS,MAAMD;IACrB,OAAO;QACL,GAAGC,MAAM;QACTC,qBAAqBT,GAAGK,EAAE,GAAGK,iBAAiB,CAAC;YAC7CC,UAAU;gBACRC,MAAMT;YACR;QACF;IACF;AACF;AAEA,MAAMU,gBAAgB;AAEtB,MAAMC,eAAe;IACnBC,WAAW;QAACC,KAAK;YAACC,WAAWJ;QAAa;IAAC;IAC3CK,aAAa;QACXC,WAAW;QACXC,MAAM;QACNC,MAAM;IACR;IACAC,OAAO;AACT;AAEAzB,SAAS,2BAA2B;IAClCD,UAAU;QACRI,GAAGuB,aAAa;IAClB;IAEAxB,KAAK,gBAAgB;QACnB,MAAM,EAACyB,MAAM,EAAC,GAAG,MAAM9B,WAAW;YAAC;YAA0B;SAAS;QAEtEI,OAAO0B,QAAQC,qBAAqB,CAAC,CAAC;;;;;;;;;;;;;;;;;;IAkBtC,CAAC;IACH;IAEA1B,KAAK,wCAAwC;QAC3CI,iBAAiBO,iBAAiB,CAAC;YAAC;gBAACgB,SAAS;gBAAWC,MAAM;YAAY;SAAE;QAE7E,MAAM,EAACH,MAAM,EAAC,GAAG,MAAM7B,YAAYO,6BAA6B;YAAC;SAAa,EAAE;YAC9E0B,OAAOd;QACT;QAEAhB,OAAO0B,QAAQK,SAAS,CAAC;IAC3B;IAEA9B,KAAK,yCAAyC;QAC5CI,iBAAiBO,iBAAiB,CAAC;YAAC;gBAACgB,SAAS;gBAAUC,MAAM;YAAe;SAAE;QAE/E,MAAM,EAACG,KAAK,EAAC,GAAG,MAAMnC,YAAYO,6BAA6B;YAAC;SAAY,EAAE;YAC5E0B,OAAOd;QACT;QAEAhB,OAAOgC,OAAOC,SAASF,SAAS,CAAC;QACjC/B,OAAOgC,OAAOE,OAAOC,MAAMC,IAAI,CAAC;IAClC;IAEAnC,KAAK,wCAAwC;QAC3C,MAAMoC,qBAAqB;QAE3B,MAAM,EAACL,KAAK,EAAC,GAAG,MAAMnC,YAAYO,6BAA6B;YAACiC;SAAmB,EAAE;YACnFP,OAAOd;QACT;QAEAhB,OAAOgC,OAAOC,SAASF,SAAS,CAAC;QACjC/B,OAAOgC,OAAOE,OAAOC,MAAMC,IAAI,CAAC;IAClC;IAEAnC,KAAK,+CAA+C;QAClD,MAAM,EAAC+B,KAAK,EAAC,GAAG,MAAMnC,YAAYO,6BAA6B;YAAC;SAAa,EAAE;YAC7E0B,OAAO;gBACL,GAAGd,YAAY;gBACfC,WAAW;oBAACC,KAAK;wBAACC,WAAWmB;oBAAS;gBAAC;YACzC;QACF;QAEAtC,OAAOgC,OAAOC,SAASF,SAAS,CAAC5B;QACjCH,OAAOgC,OAAOE,OAAOC,MAAMC,IAAI,CAAC;IAClC;IAEAnC,KAAK,uCAAuC;QAC1CI,iBAAiBkC,iBAAiB,CAAC,IAAIC,MAAM;QAE7C,MAAM,EAACR,KAAK,EAAC,GAAG,MAAMnC,YAAYO,6BAA6B;YAAC;SAAa,EAAE;YAC7E0B,OAAOd;QACT;QAEAhB,OAAOgC,OAAOC,SAASF,SAAS,CAAC;QACjC/B,OAAOgC,OAAOE,OAAOC,MAAMC,IAAI,CAAC;IAClC;AACF"}