@sanity/cli 6.0.0-alpha.4 → 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 (608) 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/dev/startStudioDevServer.js +3 -8
  14. package/dist/actions/dev/startStudioDevServer.js.map +1 -1
  15. package/dist/actions/dev/types.d.ts +1 -3
  16. package/dist/actions/dev/types.js.map +1 -1
  17. package/dist/actions/documents/validate.d.ts +0 -2
  18. package/dist/actions/documents/validate.js +21 -1
  19. package/dist/actions/documents/validate.js.map +1 -1
  20. package/dist/actions/exec/execScript.js +1 -1
  21. package/dist/actions/exec/execScript.js.map +1 -1
  22. package/dist/actions/graphql/getGraphQLAPIs.js +1 -1
  23. package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
  24. package/dist/actions/init/remoteTemplate.js +1 -1
  25. package/dist/actions/init/remoteTemplate.js.map +1 -1
  26. package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
  27. package/dist/actions/manifest/extractAppManifest.js +51 -0
  28. package/dist/actions/manifest/extractAppManifest.js.map +1 -0
  29. package/dist/actions/manifest/extractManifest.js +2 -5
  30. package/dist/actions/manifest/extractManifest.js.map +1 -1
  31. package/dist/actions/manifest/types.d.ts +6 -1
  32. package/dist/actions/manifest/types.js.map +1 -1
  33. package/dist/actions/media/importAspects.js +2 -1
  34. package/dist/actions/media/importAspects.js.map +1 -1
  35. package/dist/actions/schema/deleteSchemaAction.d.ts +13 -5
  36. package/dist/actions/schema/deleteSchemaAction.js +12 -17
  37. package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
  38. package/dist/actions/schema/deploySchemas.d.ts +15 -0
  39. package/dist/actions/schema/deploySchemas.js +98 -0
  40. package/dist/actions/schema/deploySchemas.js.map +1 -0
  41. package/dist/actions/schema/listSchemas.d.ts +12 -0
  42. package/dist/actions/schema/listSchemas.js +119 -0
  43. package/dist/actions/schema/listSchemas.js.map +1 -0
  44. package/dist/actions/schema/schemaStoreTypes.d.ts +0 -11
  45. package/dist/actions/schema/schemaStoreTypes.js.map +1 -1
  46. package/dist/actions/schema/utils/debug.d.ts +2 -0
  47. package/dist/actions/schema/utils/debug.js +5 -0
  48. package/dist/actions/schema/utils/debug.js.map +1 -0
  49. package/dist/actions/schema/utils/manifestExtractor.d.ts +3 -8
  50. package/dist/actions/schema/utils/manifestExtractor.js +12 -17
  51. package/dist/actions/schema/utils/manifestExtractor.js.map +1 -1
  52. package/dist/actions/schema/utils/manifestReader.d.ts +2 -9
  53. package/dist/actions/schema/utils/manifestReader.js +6 -12
  54. package/dist/actions/schema/utils/manifestReader.js.map +1 -1
  55. package/dist/actions/schema/utils/schemaStoreOutStrings.d.ts +0 -1
  56. package/dist/actions/schema/utils/schemaStoreOutStrings.js +1 -1
  57. package/dist/actions/schema/utils/schemaStoreOutStrings.js.map +1 -1
  58. package/dist/actions/schema/utils/schemaStoreValidation.d.ts +10 -62
  59. package/dist/actions/schema/utils/schemaStoreValidation.js +38 -125
  60. package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
  61. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +14 -0
  62. package/dist/actions/schema/utils/uniqByProjectIdDataset.js +9 -0
  63. package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -0
  64. package/dist/actions/users/getMembersForProject.d.ts +1 -3
  65. package/dist/actions/users/getMembersForProject.js +6 -17
  66. package/dist/actions/users/getMembersForProject.js.map +1 -1
  67. package/dist/actions/users/types.d.ts +0 -11
  68. package/dist/actions/users/types.js.map +1 -1
  69. package/dist/commands/backup/disable.js +5 -11
  70. package/dist/commands/backup/disable.js.map +1 -1
  71. package/dist/commands/backup/enable.js +5 -11
  72. package/dist/commands/backup/enable.js.map +1 -1
  73. package/dist/commands/backup/list.js +7 -8
  74. package/dist/commands/backup/list.js.map +1 -1
  75. package/dist/commands/cors/add.js +5 -13
  76. package/dist/commands/cors/add.js.map +1 -1
  77. package/dist/commands/cors/delete.js +7 -15
  78. package/dist/commands/cors/delete.js.map +1 -1
  79. package/dist/commands/cors/list.js +2 -10
  80. package/dist/commands/cors/list.js.map +1 -1
  81. package/dist/commands/dataset/create.d.ts +0 -2
  82. package/dist/commands/dataset/create.js +8 -54
  83. package/dist/commands/dataset/create.js.map +1 -1
  84. package/dist/commands/dataset/export.js +4 -4
  85. package/dist/commands/dataset/export.js.map +1 -1
  86. package/dist/commands/debug.js +5 -9
  87. package/dist/commands/debug.js.map +1 -1
  88. package/dist/commands/dev.js +0 -1
  89. package/dist/commands/dev.js.map +1 -1
  90. package/dist/commands/documents/create.d.ts +1 -0
  91. package/dist/commands/documents/create.js +10 -9
  92. package/dist/commands/documents/create.js.map +1 -1
  93. package/dist/commands/documents/delete.js +2 -3
  94. package/dist/commands/documents/delete.js.map +1 -1
  95. package/dist/commands/documents/get.js +2 -3
  96. package/dist/commands/documents/get.js.map +1 -1
  97. package/dist/commands/documents/query.js +2 -3
  98. package/dist/commands/documents/query.js.map +1 -1
  99. package/dist/commands/documents/validate.js +0 -20
  100. package/dist/commands/documents/validate.js.map +1 -1
  101. package/dist/commands/graphql/list.js +2 -2
  102. package/dist/commands/graphql/list.js.map +1 -1
  103. package/dist/commands/graphql/undeploy.js +4 -9
  104. package/dist/commands/graphql/undeploy.js.map +1 -1
  105. package/dist/commands/hook/create.js +2 -6
  106. package/dist/commands/hook/create.js.map +1 -1
  107. package/dist/commands/hook/delete.js +5 -17
  108. package/dist/commands/hook/delete.js.map +1 -1
  109. package/dist/commands/hook/list.js +2 -8
  110. package/dist/commands/hook/list.js.map +1 -1
  111. package/dist/commands/init.d.ts +6 -1
  112. package/dist/commands/init.js +358 -20
  113. package/dist/commands/init.js.map +1 -1
  114. package/dist/commands/manifest/extract.js +7 -8
  115. package/dist/commands/manifest/extract.js.map +1 -1
  116. package/dist/commands/media/export.js +2 -2
  117. package/dist/commands/media/export.js.map +1 -1
  118. package/dist/commands/media/import.js +2 -2
  119. package/dist/commands/media/import.js.map +1 -1
  120. package/dist/commands/projects/list.js +2 -6
  121. package/dist/commands/projects/list.js.map +1 -1
  122. package/dist/commands/schema/delete.d.ts +1 -1
  123. package/dist/commands/schema/delete.js +20 -23
  124. package/dist/commands/schema/delete.js.map +1 -1
  125. package/dist/commands/schema/deploy.d.ts +16 -0
  126. package/dist/commands/schema/deploy.js +98 -0
  127. package/dist/commands/schema/deploy.js.map +1 -0
  128. package/dist/commands/schema/list.d.ts +15 -0
  129. package/dist/commands/schema/list.js +104 -0
  130. package/dist/commands/schema/list.js.map +1 -0
  131. package/dist/commands/tokens/add.js +3 -5
  132. package/dist/commands/tokens/add.js.map +1 -1
  133. package/dist/commands/users/invite.js +6 -17
  134. package/dist/commands/users/invite.js.map +1 -1
  135. package/dist/commands/users/list.js +4 -7
  136. package/dist/commands/users/list.js.map +1 -1
  137. package/dist/config/createCliConfig.d.ts +13 -4
  138. package/dist/prompts/init/promptForTypescript.d.ts +2 -0
  139. package/dist/prompts/init/promptForTypescript.js +15 -0
  140. package/dist/prompts/init/promptForTypescript.js.map +1 -0
  141. package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
  142. package/dist/prompts/promptForDatasetAclMode.js +27 -0
  143. package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
  144. package/dist/prompts/promptForDatasetName.d.ts +1 -1
  145. package/dist/prompts/promptForDatasetName.js +4 -1
  146. package/dist/prompts/promptForDatasetName.js.map +1 -1
  147. package/dist/services/backup.d.ts +8 -0
  148. package/dist/services/backup.js +19 -0
  149. package/dist/services/backup.js.map +1 -1
  150. package/dist/services/cors.d.ts +23 -0
  151. package/dist/services/cors.js +38 -0
  152. package/dist/services/cors.js.map +1 -0
  153. package/dist/services/graphql.d.ts +7 -0
  154. package/dist/services/graphql.js +11 -0
  155. package/dist/services/graphql.js.map +1 -1
  156. package/dist/services/hooks.d.ts +2 -0
  157. package/dist/services/hooks.js +19 -0
  158. package/dist/services/hooks.js.map +1 -1
  159. package/dist/services/organizations.d.ts +4 -2
  160. package/dist/services/organizations.js +3 -2
  161. package/dist/services/organizations.js.map +1 -1
  162. package/dist/services/projects.d.ts +11 -0
  163. package/dist/services/projects.js +41 -0
  164. package/dist/services/projects.js.map +1 -1
  165. package/dist/services/schemas.d.ts +4 -0
  166. package/dist/services/schemas.js +40 -0
  167. package/dist/services/schemas.js.map +1 -0
  168. package/dist/services/user.d.ts +13 -0
  169. package/dist/services/user.js +27 -3
  170. package/dist/services/user.js.map +1 -1
  171. package/dist/services/userApplications.d.ts +3 -1
  172. package/dist/services/userApplications.js +5 -1
  173. package/dist/services/userApplications.js.map +1 -1
  174. package/dist/util/errorMessages.d.ts +1 -0
  175. package/dist/util/errorMessages.js +1 -0
  176. package/dist/util/errorMessages.js.map +1 -1
  177. package/dist/util/getCliVersion.js +1 -1
  178. package/dist/util/getCliVersion.js.map +1 -1
  179. package/dist/util/readPackageJson.d.ts +1 -15
  180. package/dist/util/readPackageJson.js +1 -1
  181. package/dist/util/readPackageJson.js.map +1 -1
  182. package/dist/util/uniqBy.d.ts +1 -0
  183. package/dist/util/uniqBy.js +14 -0
  184. package/dist/util/uniqBy.js.map +1 -0
  185. package/oclif.manifest.json +284 -139
  186. package/package.json +36 -33
  187. package/templates/app-quickstart/src/App.css +20 -0
  188. package/templates/app-quickstart/src/App.tsx +25 -0
  189. package/templates/app-quickstart/src/ExampleComponent.css +90 -0
  190. package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
  191. package/templates/app-sanity-ui/src/App.tsx +34 -0
  192. package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
  193. package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
  194. package/templates/blog/README.md +11 -0
  195. package/templates/blog/schemaTypes/author.js +50 -0
  196. package/templates/blog/schemaTypes/blockContent.js +67 -0
  197. package/templates/blog/schemaTypes/category.js +19 -0
  198. package/templates/blog/schemaTypes/index.js +6 -0
  199. package/templates/blog/schemaTypes/post.js +65 -0
  200. package/templates/blog/static/.gitkeep +1 -0
  201. package/templates/clean/README.md +9 -0
  202. package/templates/clean/schemaTypes/index.js +1 -0
  203. package/templates/clean/static/.gitkeep +1 -0
  204. package/templates/ecommerce/README.md +11 -0
  205. package/templates/ecommerce/plugins/.gitkeep +1 -0
  206. package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
  207. package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
  208. package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
  209. package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
  210. package/templates/ecommerce/schemaTypes/category.js +39 -0
  211. package/templates/ecommerce/schemaTypes/index.js +23 -0
  212. package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
  213. package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
  214. package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
  215. package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
  216. package/templates/ecommerce/schemaTypes/product.js +83 -0
  217. package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
  218. package/templates/ecommerce/schemaTypes/vendor.js +39 -0
  219. package/templates/ecommerce/static/.gitkeep +1 -0
  220. package/templates/get-started/README.md +9 -0
  221. package/templates/get-started/plugins/.gitkeep +1 -0
  222. package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
  223. package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
  224. package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
  225. package/templates/get-started/schemaTypes/index.ts +1 -0
  226. package/templates/get-started/static/.gitkeep +1 -0
  227. package/templates/moviedb/README.md +10 -0
  228. package/templates/moviedb/schemaTypes/blockContent.js +67 -0
  229. package/templates/moviedb/schemaTypes/castMember.js +37 -0
  230. package/templates/moviedb/schemaTypes/crewMember.js +52 -0
  231. package/templates/moviedb/schemaTypes/index.js +22 -0
  232. package/templates/moviedb/schemaTypes/movie.js +85 -0
  233. package/templates/moviedb/schemaTypes/person.js +37 -0
  234. package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
  235. package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
  236. package/templates/moviedb/schemaTypes/screening.js +81 -0
  237. package/templates/moviedb/static/.gitkeep +1 -0
  238. package/templates/quickstart/README.md +9 -0
  239. package/templates/quickstart/schemaTypes/index.js +1 -0
  240. package/templates/quickstart/static/.gitkeep +1 -0
  241. package/templates/shared/gitignore.txt +29 -0
  242. package/templates/shared/tsconfig.json +17 -0
  243. package/templates/shopify/README.md +85 -0
  244. package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
  245. package/templates/shopify/components/icons/Shopify.tsx +20 -0
  246. package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
  247. package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
  248. package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
  249. package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
  250. package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
  251. package/templates/shopify/components/media/ColorTheme.tsx +38 -0
  252. package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
  253. package/templates/shopify/components/studio/Navbar.tsx +29 -0
  254. package/templates/shopify/constants.ts +61 -0
  255. package/templates/shopify/docs/features.md +158 -0
  256. package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
  257. package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
  258. package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
  259. package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
  260. package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
  261. package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
  262. package/templates/shopify/schemaTypes/documents/page.ts +70 -0
  263. package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
  264. package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
  265. package/templates/shopify/schemaTypes/index.ts +108 -0
  266. package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
  267. package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
  268. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
  269. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
  270. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
  271. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
  272. package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
  273. package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
  274. package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
  275. package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
  276. package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
  277. package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
  278. package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
  279. package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
  280. package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
  281. package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
  282. package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
  283. package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
  284. package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
  285. package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
  286. package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
  287. package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
  288. package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
  289. package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
  290. package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
  291. package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
  292. package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
  293. package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
  294. package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
  295. package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
  296. package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
  297. package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
  298. package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
  299. package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
  300. package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
  301. package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
  302. package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
  303. package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
  304. package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
  305. package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
  306. package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
  307. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
  308. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
  309. package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
  310. package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
  311. package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
  312. package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
  313. package/templates/shopify/static/.gitkeep +1 -0
  314. package/templates/shopify/structure/collectionStructure.ts +9 -0
  315. package/templates/shopify/structure/colorThemeStructure.ts +9 -0
  316. package/templates/shopify/structure/homeStructure.ts +9 -0
  317. package/templates/shopify/structure/index.ts +57 -0
  318. package/templates/shopify/structure/pageStructure.ts +11 -0
  319. package/templates/shopify/structure/productStructure.ts +51 -0
  320. package/templates/shopify/structure/settingStructure.ts +9 -0
  321. package/templates/shopify/utils/blocksToText.ts +20 -0
  322. package/templates/shopify/utils/defineStructure.ts +11 -0
  323. package/templates/shopify/utils/getPriceRange.ts +24 -0
  324. package/templates/shopify/utils/shopifyUrls.ts +22 -0
  325. package/templates/shopify/utils/validateSlug.ts +18 -0
  326. package/templates/shopify-online-storefront/README.md +54 -0
  327. package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
  328. package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
  329. package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
  330. package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
  331. package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
  332. package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
  333. package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
  334. package/templates/shopify-online-storefront/constants.ts +18 -0
  335. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
  336. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
  337. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
  338. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
  339. package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
  340. package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
  341. package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
  342. package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
  343. package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
  344. package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
  345. package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
  346. package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
  347. package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
  348. package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
  349. package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
  350. package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
  351. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
  352. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
  353. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
  354. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
  355. package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
  356. package/templates/shopify-online-storefront/structure/index.ts +37 -0
  357. package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
  358. package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
  359. package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
  360. package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
  361. package/dist/actions/build/__tests__/buildApp.test.js +0 -367
  362. package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
  363. package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
  364. package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
  365. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
  366. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
  367. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
  368. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
  369. package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
  370. package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
  371. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
  372. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
  373. package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
  374. package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
  375. package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
  376. package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
  377. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
  378. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
  379. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
  380. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
  381. package/dist/actions/cors/constants.d.ts +0 -1
  382. package/dist/actions/cors/constants.js +0 -3
  383. package/dist/actions/cors/constants.js.map +0 -1
  384. package/dist/actions/cors/types.d.ts +0 -9
  385. package/dist/actions/cors/types.js +0 -3
  386. package/dist/actions/cors/types.js.map +0 -1
  387. package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
  388. package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
  389. package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
  390. package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
  391. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
  392. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
  393. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
  394. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
  395. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
  396. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
  397. package/dist/actions/media/__tests__/importMedia.test.js +0 -182
  398. package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
  399. package/dist/actions/schema/__tests__/deleteSchemaAction.test.js +0 -294
  400. package/dist/actions/schema/__tests__/deleteSchemaAction.test.js.map +0 -1
  401. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
  402. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
  403. package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
  404. package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
  405. package/dist/actions/schema/schemaStoreConstants.d.ts +0 -1
  406. package/dist/actions/schema/schemaStoreConstants.js +0 -4
  407. package/dist/actions/schema/schemaStoreConstants.js.map +0 -1
  408. package/dist/actions/schema/utils/schemaActionHelpers.d.ts +0 -1
  409. package/dist/actions/schema/utils/schemaActionHelpers.js +0 -5
  410. package/dist/actions/schema/utils/schemaActionHelpers.js.map +0 -1
  411. package/dist/actions/schema/utils/schemaApiClient.d.ts +0 -6
  412. package/dist/actions/schema/utils/schemaApiClient.js +0 -17
  413. package/dist/actions/schema/utils/schemaApiClient.js.map +0 -1
  414. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
  415. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
  416. package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
  417. package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
  418. package/dist/actions/users/apiVersion.d.ts +0 -6
  419. package/dist/actions/users/apiVersion.js +0 -7
  420. package/dist/actions/users/apiVersion.js.map +0 -1
  421. package/dist/commands/__tests__/blueprints.test.js +0 -54
  422. package/dist/commands/__tests__/blueprints.test.js.map +0 -1
  423. package/dist/commands/__tests__/build.test.js +0 -132
  424. package/dist/commands/__tests__/build.test.js.map +0 -1
  425. package/dist/commands/__tests__/codemod.test.js +0 -271
  426. package/dist/commands/__tests__/codemod.test.js.map +0 -1
  427. package/dist/commands/__tests__/debug.test.js +0 -697
  428. package/dist/commands/__tests__/debug.test.js.map +0 -1
  429. package/dist/commands/__tests__/deploy.test.js +0 -1913
  430. package/dist/commands/__tests__/deploy.test.js.map +0 -1
  431. package/dist/commands/__tests__/dev.test.js +0 -410
  432. package/dist/commands/__tests__/dev.test.js.map +0 -1
  433. package/dist/commands/__tests__/exec.test.js +0 -207
  434. package/dist/commands/__tests__/exec.test.js.map +0 -1
  435. package/dist/commands/__tests__/init/init.authentication.test.js +0 -60
  436. package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
  437. package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -196
  438. package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
  439. package/dist/commands/__tests__/init/init.plan.test.js +0 -220
  440. package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
  441. package/dist/commands/__tests__/init/init.setup.test.js +0 -279
  442. package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
  443. package/dist/commands/__tests__/install.test.js +0 -258
  444. package/dist/commands/__tests__/install.test.js.map +0 -1
  445. package/dist/commands/__tests__/learn.test.js +0 -29
  446. package/dist/commands/__tests__/learn.test.js.map +0 -1
  447. package/dist/commands/__tests__/logout.test.js +0 -88
  448. package/dist/commands/__tests__/logout.test.js.map +0 -1
  449. package/dist/commands/__tests__/manage.test.js +0 -105
  450. package/dist/commands/__tests__/manage.test.js.map +0 -1
  451. package/dist/commands/__tests__/migration.test.js +0 -119
  452. package/dist/commands/__tests__/migration.test.js.map +0 -1
  453. package/dist/commands/__tests__/preview.test.js +0 -261
  454. package/dist/commands/__tests__/preview.test.js.map +0 -1
  455. package/dist/commands/__tests__/start.test.js +0 -253
  456. package/dist/commands/__tests__/start.test.js.map +0 -1
  457. package/dist/commands/__tests__/undeploy.test.js +0 -382
  458. package/dist/commands/__tests__/undeploy.test.js.map +0 -1
  459. package/dist/commands/__tests__/versions.test.js +0 -134
  460. package/dist/commands/__tests__/versions.test.js.map +0 -1
  461. package/dist/commands/backup/__tests__/disable.test.js +0 -207
  462. package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
  463. package/dist/commands/backup/__tests__/download.test.js +0 -679
  464. package/dist/commands/backup/__tests__/download.test.js.map +0 -1
  465. package/dist/commands/backup/__tests__/enable.test.js +0 -317
  466. package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
  467. package/dist/commands/backup/__tests__/list.test.js +0 -321
  468. package/dist/commands/backup/__tests__/list.test.js.map +0 -1
  469. package/dist/commands/cors/__tests__/add.test.js +0 -346
  470. package/dist/commands/cors/__tests__/add.test.js.map +0 -1
  471. package/dist/commands/cors/__tests__/delete.test.js +0 -293
  472. package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
  473. package/dist/commands/cors/__tests__/list.test.js +0 -218
  474. package/dist/commands/cors/__tests__/list.test.js.map +0 -1
  475. package/dist/commands/dataset/__tests__/copy.test.js +0 -520
  476. package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
  477. package/dist/commands/dataset/__tests__/create.test.js +0 -312
  478. package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
  479. package/dist/commands/dataset/__tests__/delete.test.js +0 -224
  480. package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
  481. package/dist/commands/dataset/__tests__/export.test.js +0 -561
  482. package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
  483. package/dist/commands/dataset/__tests__/import.test.js +0 -53
  484. package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
  485. package/dist/commands/dataset/__tests__/list.test.js +0 -174
  486. package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
  487. package/dist/commands/dataset/alias/__tests__/create.test.js +0 -299
  488. package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
  489. package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -236
  490. package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
  491. package/dist/commands/dataset/alias/__tests__/link.test.js +0 -336
  492. package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
  493. package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -298
  494. package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
  495. package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -147
  496. package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
  497. package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -245
  498. package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
  499. package/dist/commands/docs/__tests__/browse.test.js +0 -29
  500. package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
  501. package/dist/commands/docs/__tests__/read.test.js +0 -78
  502. package/dist/commands/docs/__tests__/read.test.js.map +0 -1
  503. package/dist/commands/docs/__tests__/search.test.js +0 -254
  504. package/dist/commands/docs/__tests__/search.test.js.map +0 -1
  505. package/dist/commands/documents/__tests__/create.test.js +0 -967
  506. package/dist/commands/documents/__tests__/create.test.js.map +0 -1
  507. package/dist/commands/documents/__tests__/delete.test.js +0 -268
  508. package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
  509. package/dist/commands/documents/__tests__/get.test.js +0 -209
  510. package/dist/commands/documents/__tests__/get.test.js.map +0 -1
  511. package/dist/commands/documents/__tests__/query.test.js +0 -405
  512. package/dist/commands/documents/__tests__/query.test.js.map +0 -1
  513. package/dist/commands/documents/__tests__/validate.test.js +0 -226
  514. package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
  515. package/dist/commands/graphql/__tests__/list.test.js +0 -228
  516. package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
  517. package/dist/commands/graphql/__tests__/undeploy.test.js +0 -384
  518. package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
  519. package/dist/commands/hook/__tests__/attempt.test.js +0 -260
  520. package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
  521. package/dist/commands/hook/__tests__/create.test.js +0 -121
  522. package/dist/commands/hook/__tests__/create.test.js.map +0 -1
  523. package/dist/commands/hook/__tests__/delete.test.js +0 -220
  524. package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
  525. package/dist/commands/hook/__tests__/list.test.js +0 -138
  526. package/dist/commands/hook/__tests__/list.test.js.map +0 -1
  527. package/dist/commands/hook/__tests__/logs.test.js +0 -770
  528. package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
  529. package/dist/commands/manifest/__tests__/extract.test.js +0 -123
  530. package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
  531. package/dist/commands/mcp/__tests__/configure.test.js +0 -397
  532. package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
  533. package/dist/commands/media/__tests__/create-aspect.test.js +0 -160
  534. package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
  535. package/dist/commands/media/__tests__/delete-aspect.test.js +0 -333
  536. package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
  537. package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -632
  538. package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
  539. package/dist/commands/media/__tests__/export.test.js +0 -398
  540. package/dist/commands/media/__tests__/export.test.js.map +0 -1
  541. package/dist/commands/media/__tests__/import.test.js +0 -281
  542. package/dist/commands/media/__tests__/import.test.js.map +0 -1
  543. package/dist/commands/openapi/__tests__/get.test.js +0 -149
  544. package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
  545. package/dist/commands/openapi/__tests__/list.test.js +0 -113
  546. package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
  547. package/dist/commands/projects/__tests__/list.test.js +0 -153
  548. package/dist/commands/projects/__tests__/list.test.js.map +0 -1
  549. package/dist/commands/schema/__tests__/delete.test.js +0 -209
  550. package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
  551. package/dist/commands/schema/__tests__/extract.test.js +0 -113
  552. package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
  553. package/dist/commands/schema/__tests__/validate.test.js +0 -104
  554. package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
  555. package/dist/commands/telemetry/__tests__/disable.test.js +0 -145
  556. package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
  557. package/dist/commands/telemetry/__tests__/enable.test.js +0 -131
  558. package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
  559. package/dist/commands/telemetry/__tests__/status.test.js +0 -153
  560. package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
  561. package/dist/commands/tokens/__tests__/add.test.js +0 -420
  562. package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
  563. package/dist/commands/tokens/__tests__/delete.test.js +0 -375
  564. package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
  565. package/dist/commands/tokens/__tests__/list.test.js +0 -368
  566. package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
  567. package/dist/commands/users/__tests__/invite.test.js +0 -341
  568. package/dist/commands/users/__tests__/invite.test.js.map +0 -1
  569. package/dist/commands/users/__tests__/list.test.js +0 -401
  570. package/dist/commands/users/__tests__/list.test.js.map +0 -1
  571. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
  572. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
  573. package/dist/services/__tests__/datasetAliases.test.js +0 -131
  574. package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
  575. package/dist/services/__tests__/datasets.test.js +0 -436
  576. package/dist/services/__tests__/datasets.test.js.map +0 -1
  577. package/dist/services/__tests__/graphql.test.js +0 -43
  578. package/dist/services/__tests__/graphql.test.js.map +0 -1
  579. package/dist/services/__tests__/mediaLibraries.test.js +0 -88
  580. package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
  581. package/dist/services/__tests__/projects.test.js +0 -41
  582. package/dist/services/__tests__/projects.test.js.map +0 -1
  583. package/dist/services/__tests__/userApplications.test.js +0 -113
  584. package/dist/services/__tests__/userApplications.test.js.map +0 -1
  585. package/dist/util/__tests__/appId.test.js +0 -31
  586. package/dist/util/__tests__/appId.test.js.map +0 -1
  587. package/dist/util/__tests__/cliClient.test.js +0 -184
  588. package/dist/util/__tests__/cliClient.test.js.map +0 -1
  589. package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
  590. package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
  591. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
  592. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
  593. package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
  594. package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
  595. package/dist/util/__tests__/getCliVersion.test.js +0 -28
  596. package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
  597. package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
  598. package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
  599. package/dist/util/__tests__/getWorkspace.test.js +0 -37
  600. package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
  601. package/dist/util/__tests__/readPackageJson.test.js +0 -69
  602. package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
  603. package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
  604. package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
  605. package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
  606. package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
  607. package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
  608. package/dist/util/validation/ __tests__/validateDocuments.test.js.map +0 -1
@@ -1,245 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { getCliConfig, getProjectCliClient } from '@sanity/cli-core';
3
- import { testCommand } from '@sanity/cli-test';
4
- import { afterEach, describe, expect, test, vi } from 'vitest';
5
- import { NO_PROJECT_ID } from '../../../../util/errorMessages.js';
6
- import { DatasetVisibilitySetCommand } from '../set.js';
7
- vi.mock('../../../../../../cli-core/src/config/findProjectRoot.js', ()=>({
8
- findProjectRoot: vi.fn().mockResolvedValue({
9
- directory: '/test/path',
10
- root: '/test/path',
11
- type: 'studio'
12
- })
13
- }));
14
- vi.mock('../../../../../../cli-core/src/config/cli/getCliConfig.js', ()=>({
15
- getCliConfig: vi.fn()
16
- }));
17
- vi.mock('../../../../../../cli-core/src/services/getCliToken.js', ()=>({
18
- getCliToken: vi.fn().mockResolvedValue('test-token')
19
- }));
20
- vi.mock('../../../../../../cli-core/src/services/apiClient.js', ()=>({
21
- getProjectCliClient: vi.fn()
22
- }));
23
- const mockGetCliConfig = vi.mocked(getCliConfig);
24
- const mockGetProjectCliClient = vi.mocked(getProjectCliClient);
25
- describe('#dataset:visibility:set', ()=>{
26
- const mockEdit = vi.fn();
27
- afterEach(()=>{
28
- vi.clearAllMocks();
29
- });
30
- test('--help works', async ()=>{
31
- const { stdout } = await runCommand([
32
- 'dataset visibility set',
33
- '--help'
34
- ]);
35
- expect(stdout).toMatchInlineSnapshot(`
36
- "Set the visibility of a dataset
37
-
38
- USAGE
39
- $ sanity dataset visibility set DATASET MODE
40
-
41
- ARGUMENTS
42
- DATASET The name of the dataset to set visibility for
43
- MODE (public|private) The visibility mode to set
44
-
45
- DESCRIPTION
46
- Set the visibility of a dataset
47
-
48
- EXAMPLES
49
- Make a dataset private
50
-
51
- $ sanity dataset visibility set my-dataset private
52
-
53
- Make a dataset public
54
-
55
- $ sanity dataset visibility set my-dataset public
56
-
57
- "
58
- `);
59
- });
60
- test('sets dataset visibility to public successfully', async ()=>{
61
- const mockDatasets = [
62
- {
63
- aclMode: 'private',
64
- name: 'my-dataset'
65
- }
66
- ];
67
- mockGetCliConfig.mockResolvedValue({
68
- api: {
69
- projectId: 'test-project'
70
- }
71
- });
72
- mockGetProjectCliClient.mockResolvedValue({
73
- datasets: {
74
- edit: mockEdit.mockResolvedValue({}),
75
- list: vi.fn().mockResolvedValue(mockDatasets)
76
- }
77
- });
78
- const { stdout } = await testCommand(DatasetVisibilitySetCommand, [
79
- 'my-dataset',
80
- 'public'
81
- ]);
82
- expect(stdout).toContain('Dataset visibility changed');
83
- expect(mockEdit).toHaveBeenCalledWith('my-dataset', {
84
- aclMode: 'public'
85
- });
86
- });
87
- test('sets dataset visibility to private successfully with warning', async ()=>{
88
- const mockDatasets = [
89
- {
90
- aclMode: 'public',
91
- name: 'my-dataset'
92
- }
93
- ];
94
- mockGetCliConfig.mockResolvedValue({
95
- api: {
96
- projectId: 'test-project'
97
- }
98
- });
99
- // Mock the client used by listDatasets action
100
- mockGetProjectCliClient.mockResolvedValue({
101
- datasets: {
102
- edit: mockEdit.mockResolvedValue({}),
103
- list: vi.fn().mockResolvedValue(mockDatasets)
104
- }
105
- });
106
- const { stdout } = await testCommand(DatasetVisibilitySetCommand, [
107
- 'my-dataset',
108
- 'private'
109
- ]);
110
- expect(stdout).toContain('Please note that while documents are private, assets (files and images) are still public');
111
- expect(stdout).toContain('Dataset visibility changed');
112
- expect(mockEdit).toHaveBeenCalledWith('my-dataset', {
113
- aclMode: 'private'
114
- });
115
- });
116
- test('shows message when dataset is already in the specified mode', async ()=>{
117
- const mockDatasets = [
118
- {
119
- aclMode: 'private',
120
- name: 'my-dataset'
121
- }
122
- ];
123
- mockGetCliConfig.mockResolvedValue({
124
- api: {
125
- projectId: 'test-project'
126
- }
127
- });
128
- // Mock the client used by listDatasets action
129
- mockGetProjectCliClient.mockResolvedValue({
130
- datasets: {
131
- edit: mockEdit,
132
- list: vi.fn().mockResolvedValue(mockDatasets)
133
- }
134
- });
135
- const { stdout } = await testCommand(DatasetVisibilitySetCommand, [
136
- 'my-dataset',
137
- 'private'
138
- ]);
139
- expect(stdout).toContain('Dataset already in "private" mode');
140
- expect(mockEdit).not.toHaveBeenCalled();
141
- });
142
- test('shows error when dataset is not found', async ()=>{
143
- const mockDatasets = [
144
- {
145
- aclMode: 'public',
146
- name: 'other-dataset'
147
- }
148
- ];
149
- mockGetCliConfig.mockResolvedValue({
150
- api: {
151
- projectId: 'test-project'
152
- }
153
- });
154
- // Mock the client used by listDatasets action
155
- mockGetProjectCliClient.mockResolvedValue({
156
- datasets: {
157
- edit: mockEdit,
158
- list: vi.fn().mockResolvedValue(mockDatasets)
159
- }
160
- });
161
- const { error } = await testCommand(DatasetVisibilitySetCommand, [
162
- 'not-found',
163
- 'private'
164
- ]);
165
- expect(error?.message).toContain('Dataset "not-found" not found');
166
- expect(mockEdit).not.toHaveBeenCalled();
167
- expect(error?.oclif?.exit).toBe(1);
168
- });
169
- test('shows error for invalid dataset name', async ()=>{
170
- const invalidDatasetName = 'invalid-dataset-name!';
171
- mockGetCliConfig.mockResolvedValue({
172
- api: {
173
- projectId: 'test-project'
174
- }
175
- });
176
- const { error } = await testCommand(DatasetVisibilitySetCommand, [
177
- invalidDatasetName,
178
- 'private'
179
- ]);
180
- expect(error?.message).toContain('Dataset name must only contain');
181
- expect(error?.oclif?.exit).toBe(1);
182
- });
183
- test('handles error when listing datasets fails', async ()=>{
184
- const listError = new Error('Failed to fetch datasets');
185
- mockGetCliConfig.mockResolvedValue({
186
- api: {
187
- projectId: 'test-project'
188
- }
189
- });
190
- // Mock the client used by listDatasets action to throw an error
191
- mockGetProjectCliClient.mockResolvedValue({
192
- datasets: {
193
- edit: mockEdit,
194
- list: vi.fn().mockRejectedValue(listError)
195
- }
196
- });
197
- const { error } = await testCommand(DatasetVisibilitySetCommand, [
198
- 'my-dataset',
199
- 'private'
200
- ]);
201
- expect(error?.message).toContain('Failed to list datasets: Failed to fetch datasets');
202
- expect(error?.oclif?.exit).toBe(1);
203
- });
204
- test('handles error when editing dataset fails', async ()=>{
205
- const mockDatasets = [
206
- {
207
- aclMode: 'public',
208
- name: 'my-dataset'
209
- }
210
- ];
211
- const editError = new Error('Failed to update dataset');
212
- mockGetCliConfig.mockResolvedValue({
213
- api: {
214
- projectId: 'test-project'
215
- }
216
- });
217
- mockGetProjectCliClient.mockResolvedValue({
218
- datasets: {
219
- edit: mockEdit.mockRejectedValue(editError),
220
- list: vi.fn().mockResolvedValue(mockDatasets)
221
- }
222
- });
223
- const { error } = await testCommand(DatasetVisibilitySetCommand, [
224
- 'my-dataset',
225
- 'private'
226
- ]);
227
- expect(error?.message).toContain('Failed to edit dataset: Failed to update dataset');
228
- expect(error?.oclif?.exit).toBe(1);
229
- });
230
- test('shows error when no project ID is available', async ()=>{
231
- mockGetCliConfig.mockResolvedValue({
232
- api: {
233
- projectId: undefined
234
- }
235
- });
236
- const { error } = await testCommand(DatasetVisibilitySetCommand, [
237
- 'my-dataset',
238
- 'private'
239
- ]);
240
- expect(error?.message).toContain(NO_PROJECT_ID);
241
- expect(error?.oclif?.exit).toBe(1);
242
- });
243
- });
244
-
245
- //# sourceMappingURL=set.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/commands/dataset/visibility/__tests__/set.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {getCliConfig, getProjectCliClient} from '@sanity/cli-core'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {NO_PROJECT_ID} from '../../../../util/errorMessages.js'\nimport {DatasetVisibilitySetCommand} from '../set.js'\n\nvi.mock('../../../../../../cli-core/src/config/findProjectRoot.js', () => ({\n findProjectRoot: vi.fn().mockResolvedValue({\n directory: '/test/path',\n root: '/test/path',\n type: 'studio',\n }),\n}))\n\nvi.mock('../../../../../../cli-core/src/config/cli/getCliConfig.js', () => ({\n getCliConfig: vi.fn(),\n}))\n\nvi.mock('../../../../../../cli-core/src/services/getCliToken.js', () => ({\n getCliToken: vi.fn().mockResolvedValue('test-token'),\n}))\n\nvi.mock('../../../../../../cli-core/src/services/apiClient.js', () => ({\n getProjectCliClient: vi.fn(),\n}))\n\nconst mockGetCliConfig = vi.mocked(getCliConfig)\nconst mockGetProjectCliClient = vi.mocked(getProjectCliClient)\n\ndescribe('#dataset:visibility:set', () => {\n const mockEdit = vi.fn()\n\n afterEach(() => {\n vi.clearAllMocks()\n })\n\n test('--help works', async () => {\n const {stdout} = await runCommand(['dataset visibility set', '--help'])\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Set the visibility of a dataset\n\n USAGE\n $ sanity dataset visibility set DATASET MODE\n\n ARGUMENTS\n DATASET The name of the dataset to set visibility for\n MODE (public|private) The visibility mode to set\n\n DESCRIPTION\n Set the visibility of a dataset\n\n EXAMPLES\n Make a dataset private\n\n $ sanity dataset visibility set my-dataset private\n\n Make a dataset public\n\n $ sanity dataset visibility set my-dataset public\n\n \"\n `)\n })\n\n test('sets dataset visibility to public successfully', async () => {\n const mockDatasets = [{aclMode: 'private', name: 'my-dataset'}]\n\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n mockGetProjectCliClient.mockResolvedValue({\n datasets: {\n edit: mockEdit.mockResolvedValue({}),\n list: vi.fn().mockResolvedValue(mockDatasets),\n },\n } as never)\n\n const {stdout} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'public'])\n\n expect(stdout).toContain('Dataset visibility changed')\n expect(mockEdit).toHaveBeenCalledWith('my-dataset', {aclMode: 'public'})\n })\n\n test('sets dataset visibility to private successfully with warning', async () => {\n const mockDatasets = [{aclMode: 'public', name: 'my-dataset'}]\n\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n // Mock the client used by listDatasets action\n mockGetProjectCliClient.mockResolvedValue({\n datasets: {\n edit: mockEdit.mockResolvedValue({}),\n list: vi.fn().mockResolvedValue(mockDatasets),\n },\n } as never)\n\n const {stdout} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'])\n\n expect(stdout).toContain(\n 'Please note that while documents are private, assets (files and images) are still public',\n )\n expect(stdout).toContain('Dataset visibility changed')\n expect(mockEdit).toHaveBeenCalledWith('my-dataset', {aclMode: 'private'})\n })\n\n test('shows message when dataset is already in the specified mode', async () => {\n const mockDatasets = [{aclMode: 'private', name: 'my-dataset'}]\n\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n // Mock the client used by listDatasets action\n mockGetProjectCliClient.mockResolvedValue({\n datasets: {\n edit: mockEdit,\n list: vi.fn().mockResolvedValue(mockDatasets),\n },\n } as never)\n\n const {stdout} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'])\n\n expect(stdout).toContain('Dataset already in \"private\" mode')\n expect(mockEdit).not.toHaveBeenCalled()\n })\n\n test('shows error when dataset is not found', async () => {\n const mockDatasets = [{aclMode: 'public', name: 'other-dataset'}]\n\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n // Mock the client used by listDatasets action\n mockGetProjectCliClient.mockResolvedValue({\n datasets: {\n edit: mockEdit,\n list: vi.fn().mockResolvedValue(mockDatasets),\n },\n } as never)\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['not-found', 'private'])\n\n expect(error?.message).toContain('Dataset \"not-found\" not found')\n expect(mockEdit).not.toHaveBeenCalled()\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 mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, [invalidDatasetName, 'private'])\n\n expect(error?.message).toContain('Dataset name must only contain')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles error when listing datasets fails', async () => {\n const listError = new Error('Failed to fetch datasets')\n\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n // Mock the client used by listDatasets action to throw an error\n mockGetProjectCliClient.mockResolvedValue({\n datasets: {\n edit: mockEdit,\n list: vi.fn().mockRejectedValue(listError),\n },\n } as never)\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'])\n\n expect(error?.message).toContain('Failed to list datasets: Failed to fetch datasets')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles error when editing dataset fails', async () => {\n const mockDatasets = [{aclMode: 'public', name: 'my-dataset'}]\n const editError = new Error('Failed to update dataset')\n\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: 'test-project',\n },\n })\n\n mockGetProjectCliClient.mockResolvedValue({\n datasets: {\n edit: mockEdit.mockRejectedValue(editError),\n list: vi.fn().mockResolvedValue(mockDatasets),\n },\n } as never)\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'])\n\n expect(error?.message).toContain('Failed to edit dataset: Failed to update dataset')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when no project ID is available', async () => {\n mockGetCliConfig.mockResolvedValue({\n api: {\n projectId: undefined,\n },\n })\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'])\n\n expect(error?.message).toContain(NO_PROJECT_ID)\n expect(error?.oclif?.exit).toBe(1)\n })\n})\n"],"names":["runCommand","getCliConfig","getProjectCliClient","testCommand","afterEach","describe","expect","test","vi","NO_PROJECT_ID","DatasetVisibilitySetCommand","mock","findProjectRoot","fn","mockResolvedValue","directory","root","type","getCliToken","mockGetCliConfig","mocked","mockGetProjectCliClient","mockEdit","clearAllMocks","stdout","toMatchInlineSnapshot","mockDatasets","aclMode","name","api","projectId","datasets","edit","list","toContain","toHaveBeenCalledWith","not","toHaveBeenCalled","error","message","oclif","exit","toBe","invalidDatasetName","listError","Error","mockRejectedValue","editError","undefined"],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { testCommand } from '@sanity/cli-test';
3
- import open from 'open';
4
- import { describe, expect, test } from 'vitest';
5
- import { DocsBrowseCommand } from '../browse.js';
6
- describe('#docs:browse', ()=>{
7
- test('command runs and opens docs URL', async ()=>{
8
- const { stdout } = await testCommand(DocsBrowseCommand);
9
- expect(stdout).toContain('Opening https://www.sanity.io/docs');
10
- // Mocked in test setup
11
- expect(open).toHaveBeenCalledWith('https://www.sanity.io/docs');
12
- });
13
- test('help text is correct', async ()=>{
14
- const { stdout } = await runCommand('docs browse --help');
15
- expect(stdout).toMatchInlineSnapshot(`
16
- "Open Sanity docs in a web browser
17
-
18
- USAGE
19
- $ sanity docs browse
20
-
21
- DESCRIPTION
22
- Open Sanity docs in a web browser
23
-
24
- "
25
- `);
26
- });
27
- });
28
-
29
- //# sourceMappingURL=browse.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/commands/docs/__tests__/browse.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport open from 'open'\nimport {describe, expect, test} from 'vitest'\n\nimport {DocsBrowseCommand} from '../browse.js'\n\ndescribe('#docs:browse', () => {\n test('command runs and opens docs URL', async () => {\n const {stdout} = await testCommand(DocsBrowseCommand)\n\n expect(stdout).toContain('Opening https://www.sanity.io/docs')\n // Mocked in test setup\n expect(open).toHaveBeenCalledWith('https://www.sanity.io/docs')\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand('docs browse --help')\n expect(stdout).toMatchInlineSnapshot(`\n \"Open Sanity docs in a web browser\n\n USAGE\n $ sanity docs browse\n\n DESCRIPTION\n Open Sanity docs in a web browser\n\n \"\n `)\n })\n})\n"],"names":["runCommand","testCommand","open","describe","expect","test","DocsBrowseCommand","stdout","toContain","toHaveBeenCalledWith","toMatchInlineSnapshot"],"mappings":"AAAA,SAAQA,UAAU,QAAO,cAAa;AACtC,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,OAAOC,UAAU,OAAM;AACvB,SAAQC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,QAAO,SAAQ;AAE7C,SAAQC,iBAAiB,QAAO,eAAc;AAE9CH,SAAS,gBAAgB;IACvBE,KAAK,mCAAmC;QACtC,MAAM,EAACE,MAAM,EAAC,GAAG,MAAMN,YAAYK;QAEnCF,OAAOG,QAAQC,SAAS,CAAC;QACzB,uBAAuB;QACvBJ,OAAOF,MAAMO,oBAAoB,CAAC;IACpC;IAEAJ,KAAK,wBAAwB;QAC3B,MAAM,EAACE,MAAM,EAAC,GAAG,MAAMP,WAAW;QAClCI,OAAOG,QAAQG,qBAAqB,CAAC,CAAC;;;;;;;;;;IAUtC,CAAC;IACH;AACF"}
@@ -1,78 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { testCommand } from '@sanity/cli-test';
3
- import nock from 'nock';
4
- import open from 'open';
5
- import { afterEach, describe, expect, test, vi } from 'vitest';
6
- import { DocsReadCommand } from '../read.js';
7
- vi.mock('open');
8
- const mockOpen = vi.mocked(open);
9
- afterEach(()=>{
10
- const pending = nock.pendingMocks();
11
- nock.cleanAll();
12
- expect(pending, 'pending mocks').toEqual([]);
13
- });
14
- describe('#docs:read', ()=>{
15
- test('reads article and displays content', async ()=>{
16
- const markdownContent = '# Installation\n\nThis is the installation guide.';
17
- nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {
18
- 'Content-Type': 'text/plain'
19
- });
20
- const { stdout } = await testCommand(DocsReadCommand, [
21
- '/docs/studio/installation'
22
- ]);
23
- expect(stdout).toContain('Reading article: /docs/studio/installation');
24
- expect(stdout).toContain('---');
25
- expect(stdout).toContain('# Installation');
26
- expect(stdout).toContain('This is the installation guide.');
27
- });
28
- test('opens in web browser with --web flag', async ()=>{
29
- const { stdout } = await testCommand(DocsReadCommand, [
30
- '/docs/studio/installation',
31
- '--web'
32
- ]);
33
- expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation');
34
- expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation');
35
- // Note: readDoc might be called due to import, so we don't check for not called
36
- });
37
- test('opens in web browser with -w flag', async ()=>{
38
- const { stdout } = await testCommand(DocsReadCommand, [
39
- '/docs/studio/installation',
40
- '-w'
41
- ]);
42
- expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation');
43
- expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation');
44
- });
45
- test('normalizes full URLs', async ()=>{
46
- const markdownContent = '# Installation\n\nContent here.';
47
- nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {
48
- 'Content-Type': 'text/plain'
49
- });
50
- const { stdout } = await testCommand(DocsReadCommand, [
51
- 'https://www.sanity.io/docs/studio/installation'
52
- ]);
53
- expect(stdout).toContain('Reading article: /docs/studio/installation');
54
- expect(stdout).toContain('# Installation');
55
- });
56
- test('handles invalid paths', async ()=>{
57
- const result = await testCommand(DocsReadCommand, [
58
- 'invalid-path'
59
- ]).catch((err)=>err);
60
- expect(result.error.message).toContain('Invalid path or URL. Expected a Sanity docs path or URL.');
61
- });
62
- test('handles API errors', async ()=>{
63
- nock('https://www.sanity.io').get('/docs/nonexistent.md').reply(404, 'Not Found');
64
- const result = await testCommand(DocsReadCommand, [
65
- '/docs/nonexistent'
66
- ]).catch((err)=>err);
67
- expect(result.error.message).toBe('Article not found: /docs/nonexistent');
68
- });
69
- test('help text is correct', async ()=>{
70
- const { stdout } = await runCommand('docs read --help');
71
- expect(stdout).toContain('Read an article in terminal');
72
- expect(stdout).toContain('ARGUMENTS');
73
- expect(stdout).toContain('FLAGS');
74
- expect(stdout).toContain('--web');
75
- });
76
- });
77
-
78
- //# sourceMappingURL=read.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/commands/docs/__tests__/read.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport nock from 'nock'\nimport open from 'open'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {DocsReadCommand} from '../read.js'\n\nvi.mock('open')\n\nconst mockOpen = vi.mocked(open)\n\nafterEach(() => {\n const pending = nock.pendingMocks()\n nock.cleanAll()\n expect(pending, 'pending mocks').toEqual([])\n})\n\ndescribe('#docs:read', () => {\n test('reads article and displays content', async () => {\n const markdownContent = '# Installation\\n\\nThis is the installation guide.'\n\n nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {\n 'Content-Type': 'text/plain',\n })\n\n const {stdout} = await testCommand(DocsReadCommand, ['/docs/studio/installation'])\n\n expect(stdout).toContain('Reading article: /docs/studio/installation')\n expect(stdout).toContain('---')\n expect(stdout).toContain('# Installation')\n expect(stdout).toContain('This is the installation guide.')\n })\n\n test('opens in web browser with --web flag', async () => {\n const {stdout} = await testCommand(DocsReadCommand, ['/docs/studio/installation', '--web'])\n\n expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation')\n expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation')\n // Note: readDoc might be called due to import, so we don't check for not called\n })\n\n test('opens in web browser with -w flag', async () => {\n const {stdout} = await testCommand(DocsReadCommand, ['/docs/studio/installation', '-w'])\n\n expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation')\n expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation')\n })\n\n test('normalizes full URLs', async () => {\n const markdownContent = '# Installation\\n\\nContent here.'\n\n nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {\n 'Content-Type': 'text/plain',\n })\n\n const {stdout} = await testCommand(DocsReadCommand, [\n 'https://www.sanity.io/docs/studio/installation',\n ])\n\n expect(stdout).toContain('Reading article: /docs/studio/installation')\n expect(stdout).toContain('# Installation')\n })\n\n test('handles invalid paths', async () => {\n const result = await testCommand(DocsReadCommand, ['invalid-path']).catch((err) => err)\n expect(result.error.message).toContain(\n 'Invalid path or URL. Expected a Sanity docs path or URL.',\n )\n })\n\n test('handles API errors', async () => {\n nock('https://www.sanity.io').get('/docs/nonexistent.md').reply(404, 'Not Found')\n\n const result = await testCommand(DocsReadCommand, ['/docs/nonexistent']).catch((err) => err)\n expect(result.error.message).toBe('Article not found: /docs/nonexistent')\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand('docs read --help')\n expect(stdout).toContain('Read an article in terminal')\n expect(stdout).toContain('ARGUMENTS')\n expect(stdout).toContain('FLAGS')\n expect(stdout).toContain('--web')\n })\n})\n"],"names":["runCommand","testCommand","nock","open","afterEach","describe","expect","test","vi","DocsReadCommand","mock","mockOpen","mocked","pending","pendingMocks","cleanAll","toEqual","markdownContent","get","reply","stdout","toContain","toHaveBeenCalledWith","result","catch","err","error","message","toBe"],"mappings":"AAAA,SAAQA,UAAU,QAAO,cAAa;AACtC,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,OAAOC,UAAU,OAAM;AACvB,OAAOC,UAAU,OAAM;AACvB,SAAQC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAE5D,SAAQC,eAAe,QAAO,aAAY;AAE1CD,GAAGE,IAAI,CAAC;AAER,MAAMC,WAAWH,GAAGI,MAAM,CAACT;AAE3BC,UAAU;IACR,MAAMS,UAAUX,KAAKY,YAAY;IACjCZ,KAAKa,QAAQ;IACbT,OAAOO,SAAS,iBAAiBG,OAAO,CAAC,EAAE;AAC7C;AAEAX,SAAS,cAAc;IACrBE,KAAK,sCAAsC;QACzC,MAAMU,kBAAkB;QAExBf,KAAK,yBAAyBgB,GAAG,CAAC,gCAAgCC,KAAK,CAAC,KAAKF,iBAAiB;YAC5F,gBAAgB;QAClB;QAEA,MAAM,EAACG,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAAC;SAA4B;QAEjFH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;IAC3B;IAEAd,KAAK,wCAAwC;QAC3C,MAAM,EAACa,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAAC;YAA6B;SAAQ;QAE1FH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOK,UAAUW,oBAAoB,CAAC;IACtC,gFAAgF;IAClF;IAEAf,KAAK,qCAAqC;QACxC,MAAM,EAACa,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAAC;YAA6B;SAAK;QAEvFH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOK,UAAUW,oBAAoB,CAAC;IACxC;IAEAf,KAAK,wBAAwB;QAC3B,MAAMU,kBAAkB;QAExBf,KAAK,yBAAyBgB,GAAG,CAAC,gCAAgCC,KAAK,CAAC,KAAKF,iBAAiB;YAC5F,gBAAgB;QAClB;QAEA,MAAM,EAACG,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAClD;SACD;QAEDH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;IAC3B;IAEAd,KAAK,yBAAyB;QAC5B,MAAMgB,SAAS,MAAMtB,YAAYQ,iBAAiB;YAAC;SAAe,EAAEe,KAAK,CAAC,CAACC,MAAQA;QACnFnB,OAAOiB,OAAOG,KAAK,CAACC,OAAO,EAAEN,SAAS,CACpC;IAEJ;IAEAd,KAAK,sBAAsB;QACzBL,KAAK,yBAAyBgB,GAAG,CAAC,wBAAwBC,KAAK,CAAC,KAAK;QAErE,MAAMI,SAAS,MAAMtB,YAAYQ,iBAAiB;YAAC;SAAoB,EAAEe,KAAK,CAAC,CAACC,MAAQA;QACxFnB,OAAOiB,OAAOG,KAAK,CAACC,OAAO,EAAEC,IAAI,CAAC;IACpC;IAEArB,KAAK,wBAAwB;QAC3B,MAAM,EAACa,MAAM,EAAC,GAAG,MAAMpB,WAAW;QAClCM,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;IAC3B;AACF"}
@@ -1,254 +0,0 @@
1
- import { runCommand } from '@oclif/test';
2
- import { isInteractive } from '@sanity/cli-core';
3
- import { select } from '@sanity/cli-core/ux';
4
- import { testCommand } from '@sanity/cli-test';
5
- import nock from 'nock';
6
- import { afterEach, describe, expect, test, vi } from 'vitest';
7
- import { DocsSearchCommand } from '../search.js';
8
- vi.mock('@sanity/cli-core/ux', async ()=>{
9
- const actual = await vi.importActual('@sanity/cli-core/ux');
10
- return {
11
- ...actual,
12
- select: vi.fn()
13
- };
14
- });
15
- vi.mock('../../../../../cli-core/src/util/isInteractive.js', async ()=>{
16
- return {
17
- isInteractive: vi.fn()
18
- };
19
- });
20
- const mockedSelect = vi.mocked(select);
21
- const mockedIsInteractive = vi.mocked(isInteractive);
22
- afterEach(()=>{
23
- const pending = nock.pendingMocks();
24
- nock.cleanAll();
25
- expect(pending, 'pending mocks').toEqual([]);
26
- vi.resetAllMocks();
27
- });
28
- describe('#docs:search', ()=>{
29
- test('--help works', async ()=>{
30
- const { stdout } = await runCommand('docs search --help');
31
- expect(stdout).toMatchInlineSnapshot(`
32
- "Search Sanity docs
33
-
34
- USAGE
35
- $ sanity docs search QUERY [--limit <value>]
36
-
37
- ARGUMENTS
38
- QUERY Search query for documentation
39
-
40
- FLAGS
41
- --limit=<value> [default: 10] Maximum number of results to return
42
-
43
- DESCRIPTION
44
- Search Sanity docs
45
-
46
- EXAMPLES
47
- Search for documentation about schemas
48
-
49
- $ sanity docs search schema
50
-
51
- Search with phrase
52
-
53
- $ sanity docs search "groq functions"
54
-
55
- Limit search results
56
-
57
- $ sanity docs search "deployment" --limit=5
58
-
59
- "
60
- `);
61
- });
62
- test('searches and displays results', async ()=>{
63
- const searchResponse = [
64
- {
65
- description: 'Learn how to install Sanity Studio',
66
- path: '/docs/studio/installation',
67
- title: 'Studio Installation Guide'
68
- },
69
- {
70
- description: 'Understanding Sanity schemas',
71
- path: '/docs/schemas/overview',
72
- title: 'Schema Overview'
73
- }
74
- ];
75
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
76
- query: 'studio'
77
- }).reply(200, searchResponse);
78
- const { stdout } = await testCommand(DocsSearchCommand, [
79
- 'studio'
80
- ]);
81
- expect(stdout).toContain('Searching documentation for: "studio"');
82
- expect(stdout).toContain('Found 2 result(s):');
83
- expect(stdout).toContain('1. Studio Installation Guide');
84
- expect(stdout).toContain('URL: https://www.sanity.io/docs/studio/installation');
85
- expect(stdout).toContain('Learn how to install Sanity Studio');
86
- expect(stdout).toContain('2. Schema Overview');
87
- });
88
- test('handles no results', async ()=>{
89
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
90
- query: 'nonexistent'
91
- }).reply(200, []);
92
- const { stdout } = await testCommand(DocsSearchCommand, [
93
- 'nonexistent'
94
- ]);
95
- expect(stdout).toContain('Searching documentation for: "nonexistent"');
96
- expect(stdout).toContain('No results found. Try a different search term.');
97
- });
98
- test('handles API errors', async ()=>{
99
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
100
- query: 'test'
101
- }).reply(500, 'Internal Server Error');
102
- const { error } = await testCommand(DocsSearchCommand, [
103
- 'test'
104
- ]).catch((err)=>err);
105
- expect(error.message).toBe('The documentation search API is currently unavailable. Please try again later.');
106
- expect(error.oclif?.exit).toBe(1);
107
- });
108
- test('respects limit flag', async ()=>{
109
- const searchResponse = [
110
- {
111
- description: 'Learn how to install Sanity Studio 1',
112
- path: '/docs/studio/installation',
113
- title: 'Studio Installation Guide'
114
- },
115
- {
116
- description: 'Learn how to install Sanity Studio 2',
117
- path: '/docs/studio/installation',
118
- title: 'Studio Installation Guide'
119
- },
120
- {
121
- description: 'Learn how to install Sanity Studio 3',
122
- path: '/docs/studio/installation',
123
- title: 'Studio Installation Guide'
124
- },
125
- {
126
- description: 'Learn how to install Sanity Studio 4',
127
- path: '/docs/studio/installation',
128
- title: 'Studio Installation Guide'
129
- },
130
- {
131
- description: 'Learn how to install Sanity Studio 5',
132
- path: '/docs/studio/installation',
133
- title: 'Studio Installation Guide'
134
- },
135
- {
136
- description: 'Learn how to install Sanity Studio 6',
137
- path: '/docs/studio/installation',
138
- title: 'Studio Installation Guide'
139
- }
140
- ];
141
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
142
- query: 'studio'
143
- }).reply(200, searchResponse);
144
- const { stdout } = await testCommand(DocsSearchCommand, [
145
- 'studio',
146
- '--limit=3'
147
- ]);
148
- expect(stdout).toContain('Found 3 result(s):');
149
- expect(stdout).toContain('1. Studio Installation Guide');
150
- expect(stdout).toContain('2. Studio Installation Guide');
151
- expect(stdout).toContain('3. Studio Installation Guide');
152
- });
153
- test('handles results with empty descriptions', async ()=>{
154
- const searchResponse = [
155
- {
156
- description: '',
157
- path: '/docs/studio/installation',
158
- title: 'Studio Installation Guide'
159
- },
160
- {
161
- description: '',
162
- path: '/docs/schemas/overview',
163
- title: 'Schema Overview'
164
- }
165
- ];
166
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
167
- query: 'studio'
168
- }).reply(200, searchResponse);
169
- const { stdout } = await testCommand(DocsSearchCommand, [
170
- 'studio'
171
- ]);
172
- expect(stdout).toContain('Searching documentation for: "studio"');
173
- expect(stdout).toContain('Found 2 result(s):');
174
- expect(stdout).toContain('1. Studio Installation Guide');
175
- expect(stdout).toContain('URL: https://www.sanity.io/docs/studio/installation');
176
- expect(stdout).toContain('2. Schema Overview');
177
- // Should not show empty description lines
178
- expect(stdout).not.toContain('Learn how to install');
179
- expect(stdout).not.toContain('Understanding Sanity schemas');
180
- });
181
- test('shows usage hints in non-interactive mode', async ()=>{
182
- mockedIsInteractive.mockReturnValue(false);
183
- const searchResponse = [
184
- {
185
- description: 'Learn how to install Sanity Studio',
186
- path: '/docs/studio/installation',
187
- title: 'Studio Installation Guide'
188
- }
189
- ];
190
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
191
- query: 'studio'
192
- }).reply(200, searchResponse);
193
- const { stdout } = await testCommand(DocsSearchCommand, [
194
- 'studio'
195
- ]);
196
- expect(stdout).toContain('Found 1 result(s):');
197
- expect(stdout).toContain('Use `sanity docs read <url>` to read an article in terminal.');
198
- expect(stdout).toContain('Use `sanity docs read <path>` to follow links found within articles.');
199
- });
200
- test('handles network errors with default message', async ()=>{
201
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
202
- query: 'test'
203
- }).reply(500, 'Internal Server Error');
204
- const { error } = await testCommand(DocsSearchCommand, [
205
- 'test'
206
- ]).catch((err)=>err);
207
- expect(error.message).toBe('The documentation search API is currently unavailable. Please try again later.');
208
- expect(error.oclif?.exit).toBe(1);
209
- });
210
- test('handles interactive mode article selection', async ()=>{
211
- mockedIsInteractive.mockReturnValue(true);
212
- mockedSelect.mockResolvedValue(0);
213
- const searchResponse = [
214
- {
215
- description: 'Learn how to install Sanity Studio',
216
- path: '/docs/studio/installation',
217
- title: 'Studio Installation Guide'
218
- }
219
- ];
220
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
221
- query: 'studio'
222
- }).reply(200, searchResponse);
223
- nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, '# Studio Installation\n\nThis is how you install the studio.');
224
- const { stdout } = await testCommand(DocsSearchCommand, [
225
- 'studio'
226
- ]);
227
- expect(stdout).toContain('Found 1 result(s):');
228
- expect(stdout).toContain('---');
229
- expect(stdout).toContain('# Studio Installation');
230
- expect(stdout).toContain('This is how you install the studio.');
231
- });
232
- test('handles interactive mode exit selection', async ()=>{
233
- mockedIsInteractive.mockReturnValue(true);
234
- mockedSelect.mockResolvedValue(-1); // User selects exit option
235
- const searchResponse = [
236
- {
237
- description: 'Learn how to install Sanity Studio',
238
- path: '/docs/studio/installation',
239
- title: 'Studio Installation Guide'
240
- }
241
- ];
242
- nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
243
- query: 'studio'
244
- }).reply(200, searchResponse);
245
- const { stdout } = await testCommand(DocsSearchCommand, [
246
- 'studio'
247
- ]);
248
- expect(stdout).toContain('Found 1 result(s):');
249
- expect(stdout).not.toContain('---'); // Should not show article content
250
- expect(stdout).not.toContain('# Studio Installation');
251
- });
252
- });
253
-
254
- //# sourceMappingURL=search.test.js.map