@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 +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"}