@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,132 +0,0 @@
1
- import { readdir, readFile } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import { runCommand } from '@oclif/test';
4
- import { testCommand } from '@sanity/cli-test';
5
- import { describe, expect, test } from 'vitest';
6
- import { testExample } from '~test/helpers/testExample.js';
7
- import { BuildCommand } from '../build.js';
8
- describe('#build', // might help with speed of tests if not ran concurrently
9
- {
10
- concurrent: false
11
- }, ()=>{
12
- test('help text is correct', async ()=>{
13
- const { stdout } = await runCommand('build --help');
14
- expect(stdout).toMatchInlineSnapshot(`
15
- "Builds the Sanity Studio configuration into a static bundle
16
-
17
- USAGE
18
- $ sanity build [OUTPUTDIR] [--auto-updates] [--minify]
19
- [--source-maps] [--stats] [-y]
20
-
21
- ARGUMENTS
22
- [OUTPUTDIR] Output directory
23
-
24
- FLAGS
25
- -y, --yes Unattended mode, answers "yes" to any "yes/no" prompt
26
- and otherwise uses defaults
27
- --[no-]auto-updates Enable/disable auto updates of studio versions
28
- --[no-]minify Enable/disable minifying of built bundles
29
- --[no-]source-maps Enable source maps for built bundles (increases size
30
- of bundle)
31
- --stats Show stats about the built bundles
32
-
33
- DESCRIPTION
34
- Builds the Sanity Studio configuration into a static bundle
35
-
36
- EXAMPLES
37
- $ sanity build
38
-
39
- $ sanity build --no-minify --source-maps
40
-
41
- "
42
- `);
43
- });
44
- test('shows an error for invalid flags', async ()=>{
45
- const { error } = await testCommand(BuildCommand, [
46
- '--invalid'
47
- ]);
48
- expect(error?.message).toContain('Nonexistent flag: --invalid');
49
- });
50
- test('should build the "basic-studio" example', async ()=>{
51
- const cwd = await testExample('basic-studio');
52
- process.chdir(cwd);
53
- const { error, stderr, stdout } = await testCommand(BuildCommand, [
54
- '--yes'
55
- ], {
56
- config: {
57
- root: cwd
58
- }
59
- });
60
- // Assert things here
61
- expect(error).toBeUndefined();
62
- expect(stdout).toContain(`Building with auto-updates enabled`);
63
- expect(stderr).toContain('✔ Clean output folder');
64
- expect(stderr).toContain(`✔ Build Sanity Studio`);
65
- const outputFolder = join(cwd, 'dist');
66
- const files = await readdir(outputFolder);
67
- expect(files).toContain('index.html');
68
- expect(files).toContain('static');
69
- });
70
- test('should build the "basic-app" example', async ()=>{
71
- const cwd = await testExample('basic-app');
72
- process.chdir(cwd);
73
- const { error, stderr } = await testCommand(BuildCommand, [
74
- '--yes'
75
- ], {
76
- config: {
77
- root: cwd
78
- }
79
- });
80
- expect(error).toBeUndefined();
81
- expect(stderr).toContain('Clean output folder');
82
- expect(stderr).toContain(`Build Sanity application`);
83
- const outputFolder = join(cwd, 'dist');
84
- const files = await readdir(outputFolder);
85
- expect(files).toContain('index.html');
86
- expect(files).toContain('static');
87
- });
88
- test('should build the "basic-app" example with auto-updates', async ()=>{
89
- const cwd = await testExample('basic-app');
90
- process.chdir(cwd);
91
- const { error, stderr, stdout } = await testCommand(BuildCommand, [
92
- '--yes'
93
- ], {
94
- config: {
95
- root: cwd
96
- }
97
- });
98
- expect(error).toBeUndefined();
99
- expect(stdout).toContain(`Building with auto-updates enabled`);
100
- expect(stderr).toContain('Clean output folder');
101
- expect(stderr).toContain(`Build Sanity application`);
102
- const outputFolder = join(cwd, 'dist');
103
- const files = await readdir(outputFolder);
104
- expect(files).toContain('index.html');
105
- expect(files).toContain('static');
106
- const indexHtml = await readFile(join(outputFolder, 'index.html'), 'utf8');
107
- expect(indexHtml).toContain('importmap');
108
- });
109
- // TODO: Fix this so it works in CI
110
- test.skip("should build the 'worst-case-studio' example", {
111
- timeout: 15_000
112
- }, async ()=>{
113
- const cwd = await testExample('worst-case-studio');
114
- process.chdir(cwd);
115
- const { error, stderr } = await testCommand(BuildCommand, [
116
- '--yes'
117
- ], {
118
- config: {
119
- root: cwd
120
- }
121
- });
122
- expect(error).toBeUndefined();
123
- expect(stderr).toContain('Clean output folder');
124
- expect(stderr).toContain(`Build Sanity Studio`);
125
- const outputFolder = join(cwd, 'dist');
126
- const files = await readdir(outputFolder);
127
- expect(files).toContain('index.html');
128
- expect(files).toContain('static');
129
- });
130
- });
131
-
132
- //# sourceMappingURL=build.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/commands/__tests__/build.test.ts"],"sourcesContent":["import {readdir, readFile} from 'node:fs/promises'\nimport {join} from 'node:path'\n\nimport {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport {describe, expect, test} from 'vitest'\nimport {testExample} from '~test/helpers/testExample.js'\n\nimport {BuildCommand} from '../build.js'\n\ndescribe(\n '#build',\n // might help with speed of tests if not ran concurrently\n {concurrent: false},\n () => {\n test('help text is correct', async () => {\n const {stdout} = await runCommand('build --help')\n expect(stdout).toMatchInlineSnapshot(`\n \"Builds the Sanity Studio configuration into a static bundle\n\n USAGE\n $ sanity build [OUTPUTDIR] [--auto-updates] [--minify]\n [--source-maps] [--stats] [-y]\n\n ARGUMENTS\n [OUTPUTDIR] Output directory\n\n FLAGS\n -y, --yes Unattended mode, answers \"yes\" to any \"yes/no\" prompt\n and otherwise uses defaults\n --[no-]auto-updates Enable/disable auto updates of studio versions\n --[no-]minify Enable/disable minifying of built bundles\n --[no-]source-maps Enable source maps for built bundles (increases size\n of bundle)\n --stats Show stats about the built bundles\n\n DESCRIPTION\n Builds the Sanity Studio configuration into a static bundle\n\n EXAMPLES\n $ sanity build\n\n $ sanity build --no-minify --source-maps\n\n \"\n `)\n })\n test('shows an error for invalid flags', async () => {\n const {error} = await testCommand(BuildCommand, ['--invalid'])\n\n expect(error?.message).toContain('Nonexistent flag: --invalid')\n })\n\n test('should build the \"basic-studio\" example', async () => {\n const cwd = await testExample('basic-studio')\n process.chdir(cwd)\n\n const {error, stderr, stdout} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n // Assert things here\n expect(error).toBeUndefined()\n expect(stdout).toContain(`Building with auto-updates enabled`)\n expect(stderr).toContain('✔ Clean output folder')\n expect(stderr).toContain(`✔ Build Sanity Studio`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n })\n\n test('should build the \"basic-app\" example', async () => {\n const cwd = await testExample('basic-app')\n process.chdir(cwd)\n\n const {error, stderr} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n expect(error).toBeUndefined()\n expect(stderr).toContain('Clean output folder')\n expect(stderr).toContain(`Build Sanity application`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n })\n\n test('should build the \"basic-app\" example with auto-updates', async () => {\n const cwd = await testExample('basic-app')\n process.chdir(cwd)\n\n const {error, stderr, stdout} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain(`Building with auto-updates enabled`)\n expect(stderr).toContain('Clean output folder')\n expect(stderr).toContain(`Build Sanity application`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n\n const indexHtml = await readFile(join(outputFolder, 'index.html'), 'utf8')\n expect(indexHtml).toContain('importmap')\n })\n\n // TODO: Fix this so it works in CI\n test.skip(\"should build the 'worst-case-studio' example\", {timeout: 15_000}, async () => {\n const cwd = await testExample('worst-case-studio')\n process.chdir(cwd)\n\n const {error, stderr} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n expect(error).toBeUndefined()\n expect(stderr).toContain('Clean output folder')\n expect(stderr).toContain(`Build Sanity Studio`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n })\n },\n)\n"],"names":["readdir","readFile","join","runCommand","testCommand","describe","expect","test","testExample","BuildCommand","concurrent","stdout","toMatchInlineSnapshot","error","message","toContain","cwd","process","chdir","stderr","config","root","toBeUndefined","outputFolder","files","indexHtml","skip","timeout"],"mappings":"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"}
@@ -1,271 +0,0 @@
1
- import { execSync, spawn } from 'node:child_process';
2
- import { existsSync } from 'node:fs';
3
- import { runCommand } from '@oclif/test';
4
- import { testCommand } from '@sanity/cli-test';
5
- import { afterEach, describe, expect, test, vi } from 'vitest';
6
- import { getLocalPackageVersion } from '../../util/getLocalPackageVersion.js';
7
- import { CodemodCommand } from '../codemod.js';
8
- vi.mock('../../util/getLocalPackageVersion.js', ()=>({
9
- getLocalPackageVersion: vi.fn()
10
- }));
11
- vi.mock('node:child_process');
12
- vi.mock('node:fs');
13
- const mockGetLocalPackageVersion = vi.mocked(getLocalPackageVersion);
14
- const mockSpawn = vi.mocked(spawn);
15
- const mockExecSync = vi.mocked(execSync);
16
- const mockExistsSync = vi.mocked(existsSync);
17
- const createSpawnMock = (exitCode = 0)=>{
18
- const killMock = vi.fn();
19
- const onMock = vi.fn((event, cb)=>{
20
- if (event === 'close') cb(exitCode);
21
- });
22
- const childProcess = {
23
- kill: killMock,
24
- on: onMock
25
- };
26
- const spawnMock = vi.fn().mockReturnValue(childProcess);
27
- mockSpawn.mockImplementation(spawnMock);
28
- return {
29
- childProcess,
30
- killMock,
31
- onMock,
32
- spawnMock
33
- };
34
- };
35
- const setupBasicMocks = (options = {})=>{
36
- const defaults = {
37
- exitCode: 0,
38
- gitIgnoreExists: false,
39
- npxOutput: 'npm exec',
40
- packageVersion: '4.0.0'
41
- };
42
- const config = {
43
- ...defaults,
44
- ...options
45
- };
46
- if (config.packageVersion !== null) {
47
- mockGetLocalPackageVersion.mockResolvedValue(config.packageVersion);
48
- }
49
- mockExistsSync.mockReturnValue(config.gitIgnoreExists);
50
- mockExecSync.mockReturnValue(config.npxOutput);
51
- return createSpawnMock(config.exitCode);
52
- };
53
- describe('#codemod', ()=>{
54
- afterEach(()=>{
55
- vi.clearAllMocks();
56
- });
57
- test('outputs empty string for help command', async ()=>{
58
- const { stdout } = await runCommand('codemod --help');
59
- expect(stdout).toMatchInlineSnapshot(`
60
- "Updates Sanity Studio codebase with a code modification script
61
-
62
- USAGE
63
- $ sanity codemod [CODEMODNAME] [--dry] [--extensions <value>]
64
- [--no-verify]
65
-
66
- ARGUMENTS
67
- [CODEMODNAME] Name of the codemod to run
68
-
69
- FLAGS
70
- --dry Dry run (no changes are made to files)
71
- --extensions=<value> [default: js,ts,tsx] Transform files with these file
72
- extensions (comma separated)
73
- --no-verify Skip verification steps before running codemod
74
-
75
- DESCRIPTION
76
- Updates Sanity Studio codebase with a code modification script
77
-
78
- EXAMPLES
79
- Show available code mods
80
-
81
- $ sanity codemod
82
-
83
- Run codemod to transform react-icons imports (dry run)
84
-
85
- $ sanity codemod reactIconsV3 --dry
86
-
87
- "
88
- `);
89
- });
90
- test('lists available codemods when no name provided', async ()=>{
91
- const { stdout } = await testCommand(CodemodCommand, [
92
- ''
93
- ]);
94
- expect(stdout).toContain('Available code modifications:');
95
- expect(stdout).toContain('reactIconsV3');
96
- expect(stdout).toContain('partsTypeDirective');
97
- expect(stdout).toContain('deskRename');
98
- });
99
- test('validates codemod exists', async ()=>{
100
- const { error } = await testCommand(CodemodCommand, [
101
- 'nonexistent'
102
- ]);
103
- expect(error?.message).toContain('Codemod with name "nonexistent" not found');
104
- expect(error?.oclif?.exit).toBe(1);
105
- });
106
- test('handles case-insensitive codemod names', async ()=>{
107
- const { spawnMock } = setupBasicMocks();
108
- await testCommand(CodemodCommand, [
109
- 'REACTICONSV3'
110
- ]);
111
- expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
112
- 'jscodeshift',
113
- '-t',
114
- expect.stringContaining('reactIconsV3.js')
115
- ]), expect.any(Object));
116
- });
117
- test('runs codemod with dry flag', async ()=>{
118
- const { spawnMock } = setupBasicMocks();
119
- await testCommand(CodemodCommand, [
120
- 'reactIconsV3',
121
- '--dry'
122
- ]);
123
- expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
124
- 'jscodeshift',
125
- '--dry'
126
- ]), expect.any(Object));
127
- });
128
- test('skips verification when --no-verify flag is used', async ()=>{
129
- const { spawnMock } = setupBasicMocks({
130
- packageVersion: null
131
- });
132
- await testCommand(CodemodCommand, [
133
- 'reactIconsV3',
134
- '--no-verify'
135
- ]);
136
- expect(mockGetLocalPackageVersion).not.toHaveBeenCalled();
137
- expect(spawnMock).toHaveBeenCalled();
138
- });
139
- test('uses gitignore when present', async ()=>{
140
- const { spawnMock } = setupBasicMocks({
141
- gitIgnoreExists: true
142
- });
143
- await testCommand(CodemodCommand, [
144
- 'partsTypeDirective'
145
- ]);
146
- expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
147
- '--ignore-config',
148
- '.gitignore'
149
- ]), expect.any(Object));
150
- });
151
- describe('extension handling', ()=>{
152
- test.each([
153
- {
154
- description: 'handles custom extensions',
155
- expected: 'jsx,mjs',
156
- input: 'jsx,mjs'
157
- },
158
- {
159
- description: 'normalizes extension handling with dots',
160
- expected: 'tsx,ts',
161
- input: '.tsx,.ts'
162
- },
163
- {
164
- description: 'handles extensions with spaces and mixed formatting',
165
- expected: 'jsx,mjs,ts',
166
- input: ' .jsx , .mjs , ts '
167
- }
168
- ])('$description', async ({ expected, input })=>{
169
- const { spawnMock } = setupBasicMocks({
170
- packageVersion: null
171
- });
172
- await testCommand(CodemodCommand, [
173
- 'partsTypeDirective',
174
- '--extensions',
175
- input
176
- ]);
177
- expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
178
- '--extensions',
179
- expected
180
- ]), expect.any(Object));
181
- });
182
- });
183
- describe('npx availability', ()=>{
184
- test.each([
185
- {
186
- description: 'throws error when npx is not available',
187
- expectedError: 'Failed to run "npx"',
188
- mockImpl: ()=>{
189
- throw new Error('Command not found');
190
- }
191
- },
192
- {
193
- description: 'throws error when npx help output does not contain npm',
194
- expectedError: 'Failed to run "npx" - required to run codemods. Do you have a recent version of npm installed?',
195
- mockImpl: ()=>'some other tool help that does not include'
196
- }
197
- ])('$description', async ({ expectedError, mockImpl })=>{
198
- mockExecSync.mockImplementationOnce(mockImpl);
199
- const { error } = await testCommand(CodemodCommand, [
200
- 'partsTypeDirective'
201
- ]);
202
- expect(error?.message).toContain(expectedError);
203
- expect(error?.oclif?.exit).toBe(1);
204
- });
205
- });
206
- describe('react-icons verification', ()=>{
207
- test('runs verification for reactIconsV3 codemod', async ()=>{
208
- const { spawnMock } = setupBasicMocks();
209
- await testCommand(CodemodCommand, [
210
- 'reactIconsV3'
211
- ]);
212
- expect(mockGetLocalPackageVersion).toHaveBeenCalledWith('react-icons', process.cwd());
213
- expect(spawnMock).toHaveBeenCalled();
214
- });
215
- test.each([
216
- {
217
- description: 'throws error when react-icons is not found',
218
- expectedError: 'Could not find react-icons declared as dependency in package.json',
219
- version: undefined
220
- },
221
- {
222
- description: 'throws error when react-icons version is below 3.0.0',
223
- expectedError: 'react-icons declared in package.json dependencies is lower than 3.0.0',
224
- version: '2.8.0'
225
- }
226
- ])('$description', async ({ expectedError, version })=>{
227
- mockGetLocalPackageVersion.mockResolvedValue(version);
228
- const { error } = await testCommand(CodemodCommand, [
229
- 'reactIconsV3'
230
- ]);
231
- expect(error?.message).toContain(expectedError);
232
- expect(error?.oclif?.exit).toBe(1);
233
- });
234
- });
235
- describe('process management', ()=>{
236
- test('handles child process exit with non-zero code', async ()=>{
237
- setupBasicMocks({
238
- exitCode: 1
239
- });
240
- const { error } = await testCommand(CodemodCommand, [
241
- 'partsTypeDirective'
242
- ]);
243
- expect(error?.oclif?.exit).toBe(1);
244
- });
245
- test('handles SIGINT signal by killing child process', async ()=>{
246
- const { killMock } = setupBasicMocks();
247
- const originalProcessOn = process.on;
248
- const processOnMock = vi.fn((event, handler)=>{
249
- if (event === 'SIGINT') {
250
- // Immediately call the handler to simulate SIGINT
251
- ;
252
- handler();
253
- }
254
- return originalProcessOn.call(process, event, handler);
255
- });
256
- process.on = processOnMock;
257
- try {
258
- const { error } = await testCommand(CodemodCommand, [
259
- 'partsTypeDirective'
260
- ]);
261
- expect(killMock).toHaveBeenCalledWith(2);
262
- expect(error?.oclif?.exit).toBe(0);
263
- } finally{
264
- process.on = originalProcessOn;
265
- process.removeAllListeners('SIGINT');
266
- }
267
- });
268
- });
269
- });
270
-
271
- //# sourceMappingURL=codemod.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/commands/__tests__/codemod.test.ts"],"sourcesContent":["import {execSync, spawn} from 'node:child_process'\nimport {existsSync} from 'node:fs'\n\nimport {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {getLocalPackageVersion} from '../../util/getLocalPackageVersion.js'\nimport {CodemodCommand} from '../codemod.js'\n\nvi.mock('../../util/getLocalPackageVersion.js', () => ({\n getLocalPackageVersion: vi.fn(),\n}))\n\nvi.mock('node:child_process')\nvi.mock('node:fs')\n\nconst mockGetLocalPackageVersion = vi.mocked(getLocalPackageVersion)\nconst mockSpawn = vi.mocked(spawn)\nconst mockExecSync = vi.mocked(execSync)\nconst mockExistsSync = vi.mocked(existsSync)\n\nconst createSpawnMock = (exitCode = 0) => {\n const killMock = vi.fn()\n const onMock = vi.fn((event, cb) => {\n if (event === 'close') cb(exitCode)\n })\n const childProcess = {\n kill: killMock,\n on: onMock,\n }\n const spawnMock = vi.fn().mockReturnValue(childProcess)\n mockSpawn.mockImplementation(spawnMock)\n return {childProcess, killMock, onMock, spawnMock}\n}\n\nconst setupBasicMocks = (options = {}) => {\n const defaults = {\n exitCode: 0,\n gitIgnoreExists: false,\n npxOutput: 'npm exec',\n packageVersion: '4.0.0',\n }\n const config = {...defaults, ...options}\n\n if (config.packageVersion !== null) {\n mockGetLocalPackageVersion.mockResolvedValue(config.packageVersion)\n }\n mockExistsSync.mockReturnValue(config.gitIgnoreExists)\n mockExecSync.mockReturnValue(config.npxOutput)\n\n return createSpawnMock(config.exitCode)\n}\n\ndescribe('#codemod', () => {\n afterEach(() => {\n vi.clearAllMocks()\n })\n\n test('outputs empty string for help command', async () => {\n const {stdout} = await runCommand('codemod --help')\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Updates Sanity Studio codebase with a code modification script\n\n USAGE\n $ sanity codemod [CODEMODNAME] [--dry] [--extensions <value>]\n [--no-verify]\n\n ARGUMENTS\n [CODEMODNAME] Name of the codemod to run\n\n FLAGS\n --dry Dry run (no changes are made to files)\n --extensions=<value> [default: js,ts,tsx] Transform files with these file\n extensions (comma separated)\n --no-verify Skip verification steps before running codemod\n\n DESCRIPTION\n Updates Sanity Studio codebase with a code modification script\n\n EXAMPLES\n Show available code mods\n\n $ sanity codemod\n\n Run codemod to transform react-icons imports (dry run)\n\n $ sanity codemod reactIconsV3 --dry\n\n \"\n `)\n })\n\n test('lists available codemods when no name provided', async () => {\n const {stdout} = await testCommand(CodemodCommand, [''])\n\n expect(stdout).toContain('Available code modifications:')\n expect(stdout).toContain('reactIconsV3')\n expect(stdout).toContain('partsTypeDirective')\n expect(stdout).toContain('deskRename')\n })\n\n test('validates codemod exists', async () => {\n const {error} = await testCommand(CodemodCommand, ['nonexistent'])\n\n expect(error?.message).toContain('Codemod with name \"nonexistent\" not found')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles case-insensitive codemod names', async () => {\n const {spawnMock} = setupBasicMocks()\n\n await testCommand(CodemodCommand, ['REACTICONSV3'])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['jscodeshift', '-t', expect.stringContaining('reactIconsV3.js')]),\n expect.any(Object),\n )\n })\n\n test('runs codemod with dry flag', async () => {\n const {spawnMock} = setupBasicMocks()\n\n await testCommand(CodemodCommand, ['reactIconsV3', '--dry'])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['jscodeshift', '--dry']),\n expect.any(Object),\n )\n })\n\n test('skips verification when --no-verify flag is used', async () => {\n const {spawnMock} = setupBasicMocks({packageVersion: null})\n\n await testCommand(CodemodCommand, ['reactIconsV3', '--no-verify'])\n\n expect(mockGetLocalPackageVersion).not.toHaveBeenCalled()\n expect(spawnMock).toHaveBeenCalled()\n })\n\n test('uses gitignore when present', async () => {\n const {spawnMock} = setupBasicMocks({gitIgnoreExists: true})\n\n await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['--ignore-config', '.gitignore']),\n expect.any(Object),\n )\n })\n\n describe('extension handling', () => {\n test.each([\n {\n description: 'handles custom extensions',\n expected: 'jsx,mjs',\n input: 'jsx,mjs',\n },\n {\n description: 'normalizes extension handling with dots',\n expected: 'tsx,ts',\n input: '.tsx,.ts',\n },\n {\n description: 'handles extensions with spaces and mixed formatting',\n expected: 'jsx,mjs,ts',\n input: ' .jsx , .mjs , ts ',\n },\n ])('$description', async ({expected, input}) => {\n const {spawnMock} = setupBasicMocks({packageVersion: null})\n\n await testCommand(CodemodCommand, ['partsTypeDirective', '--extensions', input])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['--extensions', expected]),\n expect.any(Object),\n )\n })\n })\n\n describe('npx availability', () => {\n test.each([\n {\n description: 'throws error when npx is not available',\n expectedError: 'Failed to run \"npx\"',\n mockImpl: () => {\n throw new Error('Command not found')\n },\n },\n {\n description: 'throws error when npx help output does not contain npm',\n expectedError:\n 'Failed to run \"npx\" - required to run codemods. Do you have a recent version of npm installed?',\n mockImpl: () => 'some other tool help that does not include',\n },\n ])('$description', async ({expectedError, mockImpl}) => {\n mockExecSync.mockImplementationOnce(mockImpl)\n\n const {error} = await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(error?.message).toContain(expectedError)\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n\n describe('react-icons verification', () => {\n test('runs verification for reactIconsV3 codemod', async () => {\n const {spawnMock} = setupBasicMocks()\n\n await testCommand(CodemodCommand, ['reactIconsV3'])\n\n expect(mockGetLocalPackageVersion).toHaveBeenCalledWith('react-icons', process.cwd())\n expect(spawnMock).toHaveBeenCalled()\n })\n\n test.each([\n {\n description: 'throws error when react-icons is not found',\n expectedError: 'Could not find react-icons declared as dependency in package.json',\n version: undefined,\n },\n {\n description: 'throws error when react-icons version is below 3.0.0',\n expectedError: 'react-icons declared in package.json dependencies is lower than 3.0.0',\n version: '2.8.0',\n },\n ])('$description', async ({expectedError, version}) => {\n mockGetLocalPackageVersion.mockResolvedValue(version)\n\n const {error} = await testCommand(CodemodCommand, ['reactIconsV3'])\n\n expect(error?.message).toContain(expectedError)\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n\n describe('process management', () => {\n test('handles child process exit with non-zero code', async () => {\n setupBasicMocks({exitCode: 1})\n\n const {error} = await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles SIGINT signal by killing child process', async () => {\n const {killMock} = setupBasicMocks()\n\n const originalProcessOn = process.on\n const processOnMock = vi.fn((event, handler) => {\n if (event === 'SIGINT') {\n // Immediately call the handler to simulate SIGINT\n ;(handler as () => void)()\n }\n return originalProcessOn.call(process, event, handler)\n })\n process.on = processOnMock as unknown as typeof process.on\n\n try {\n const {error} = await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(killMock).toHaveBeenCalledWith(2)\n expect(error?.oclif?.exit).toBe(0)\n } finally {\n process.on = originalProcessOn\n process.removeAllListeners('SIGINT')\n }\n })\n })\n})\n"],"names":["execSync","spawn","existsSync","runCommand","testCommand","afterEach","describe","expect","test","vi","getLocalPackageVersion","CodemodCommand","mock","fn","mockGetLocalPackageVersion","mocked","mockSpawn","mockExecSync","mockExistsSync","createSpawnMock","exitCode","killMock","onMock","event","cb","childProcess","kill","on","spawnMock","mockReturnValue","mockImplementation","setupBasicMocks","options","defaults","gitIgnoreExists","npxOutput","packageVersion","config","mockResolvedValue","clearAllMocks","stdout","toMatchInlineSnapshot","toContain","error","message","oclif","exit","toBe","toHaveBeenCalledWith","arrayContaining","stringContaining","any","Object","not","toHaveBeenCalled","each","description","expected","input","expectedError","mockImpl","Error","mockImplementationOnce","process","cwd","version","undefined","originalProcessOn","processOnMock","handler","call","removeAllListeners"],"mappings":"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"}