@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,414 +0,0 @@
1
- import path from 'node:path';
2
- import resolveFrom from 'resolve-from';
3
- import semver from 'semver';
4
- import { beforeEach, describe, expect, test, vi } from 'vitest';
5
- import { readPackageJson } from '../../../util/readPackageJson';
6
- import { checkStudioDependencyVersions } from '../checkStudioDependencyVersions';
7
- // Mock dependencies
8
- vi.mock('node:path');
9
- vi.mock('resolve-from');
10
- vi.mock('../../../util/readPackageJson');
11
- const mockedPath = vi.mocked(path);
12
- const mockedResolveFrom = vi.mocked(resolveFrom);
13
- const mockedResolveFromSilent = vi.fn().mockReturnValue(null);
14
- const mockedReadPackageJson = vi.mocked(readPackageJson);
15
- describe('checkStudioDependencyVersions', ()=>{
16
- const workDir = '/test/work/dir';
17
- const packageJsonPath = '/test/work/dir/package.json';
18
- let mockOutput;
19
- beforeEach(()=>{
20
- vi.resetAllMocks();
21
- // Create mock output
22
- mockOutput = {
23
- error: vi.fn().mockImplementation((message, options)=>{
24
- if (options?.exit !== false) {
25
- throw new Error('process.exit called');
26
- }
27
- }),
28
- log: vi.fn(),
29
- warn: vi.fn()
30
- };
31
- // Mock console methods (keeping for backwards compatibility if needed)
32
- vi.spyOn(console, 'warn').mockImplementation(()=>{});
33
- vi.spyOn(console, 'error').mockImplementation(()=>{});
34
- vi.spyOn(process, 'exit').mockImplementation(()=>{
35
- throw new Error('process.exit called');
36
- });
37
- // Setup default mocks
38
- mockedPath.join.mockReturnValue(packageJsonPath);
39
- mockedResolveFromSilent.mockReturnValue(null);
40
- mockedResolveFrom.silent = mockedResolveFromSilent;
41
- });
42
- describe('when no dependencies are installed', ()=>{
43
- test('should not warn or error when no tracked packages are installed', async ()=>{
44
- mockedReadPackageJson.mockResolvedValue({
45
- dependencies: {},
46
- devDependencies: {},
47
- name: 'test-project',
48
- version: '1.0.0'
49
- });
50
- await checkStudioDependencyVersions(workDir, mockOutput);
51
- expect(mockOutput.warn).not.toHaveBeenCalled();
52
- expect(mockOutput.error).not.toHaveBeenCalled();
53
- });
54
- });
55
- describe('when dependencies are installed', ()=>{
56
- test('should handle packages with valid versions', async ()=>{
57
- mockedReadPackageJson.mockResolvedValueOnce({
58
- dependencies: {
59
- react: '^18.0.0',
60
- 'react-dom': '^18.0.0'
61
- },
62
- name: 'test-project',
63
- version: '1.0.0'
64
- }).mockResolvedValueOnce({
65
- name: 'react',
66
- version: '18.2.0'
67
- }).mockResolvedValueOnce({
68
- name: 'react-dom',
69
- version: '18.2.0'
70
- });
71
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json');
72
- await checkStudioDependencyVersions(workDir, mockOutput);
73
- expect(mockOutput.warn).not.toHaveBeenCalled();
74
- expect(mockOutput.error).not.toHaveBeenCalled();
75
- });
76
- test('should handle packages with untested versions (newer than supported)', async ()=>{
77
- mockedReadPackageJson.mockResolvedValueOnce({
78
- dependencies: {
79
- react: '^20.0.0'
80
- },
81
- name: 'test-project',
82
- version: '1.0.0'
83
- }).mockResolvedValueOnce({
84
- name: 'react',
85
- version: '20.0.0'
86
- });
87
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
88
- await checkStudioDependencyVersions(workDir, mockOutput);
89
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have not yet been marked as supported:'));
90
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('react (installed: 20.0.0, want: ^18 || ^19)'));
91
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('To downgrade, run either:'));
92
- });
93
- test('should handle packages with unsupported versions (older than supported)', async ()=>{
94
- mockedReadPackageJson.mockResolvedValueOnce({
95
- dependencies: {
96
- react: '^16.0.0'
97
- },
98
- name: 'test-project',
99
- version: '1.0.0'
100
- }).mockResolvedValueOnce({
101
- name: 'react',
102
- version: '16.14.0'
103
- });
104
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
105
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
106
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('The following package versions are no longer supported and needs to be upgraded:'), {
107
- exit: 1
108
- });
109
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
110
- exit: 1
111
- });
112
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('To upgrade, run either:'), {
113
- exit: 1
114
- });
115
- });
116
- test('should handle deprecated packages when deprecatedBelow is set', async ()=>{
117
- // We can't easily test this with the current PACKAGES structure since they all have
118
- // deprecatedBelow: null. However, we can at least test that a scenario where
119
- // deprecatedBelow would be used would create the correct PackageInfo structure
120
- // and would trigger a deprecation warning through the filtered array logic
121
- // This test ensures that if the deprecated code path were to be triggered,
122
- // the function would behave correctly
123
- const mockPackageInfo = {
124
- deprecatedBelow: '18.0.0',
125
- installed: semver.coerce('17.0.2'),
126
- isDeprecated: true,
127
- isUnsupported: false,
128
- isUntested: false,
129
- name: 'react',
130
- supported: [
131
- '^18 || ^19'
132
- ]
133
- };
134
- // Manually trigger the deprecated path by simulating the filtered array
135
- const deprecated = [
136
- mockPackageInfo
137
- ];
138
- if (deprecated.length > 0) {
139
- mockOutput.warn(`The following package versions have been deprecated and should be upgraded:
140
-
141
- react (installed: 17.0.2, want: 18.0.0)
142
-
143
- Support for these will be removed in a future release!
144
-
145
- To upgrade, run either:
146
-
147
- npm install "react@18.0.0"
148
-
149
- or
150
-
151
- yarn add "react@18.0.0"
152
-
153
- or
154
-
155
- pnpm add "react@18.0.0"
156
-
157
-
158
- Read more at https://help.sanity.io/upgrade-packages
159
- `);
160
- }
161
- expect(deprecated.length).toBe(1);
162
- expect(deprecated[0].isDeprecated).toBe(true);
163
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have been deprecated and should be upgraded:'));
164
- });
165
- test('should handle packages installed in devDependencies', async ()=>{
166
- mockedReadPackageJson.mockResolvedValueOnce({
167
- dependencies: {},
168
- devDependencies: {
169
- react: '^18.0.0'
170
- },
171
- name: 'test-project',
172
- version: '1.0.0'
173
- }).mockResolvedValueOnce({
174
- name: 'react',
175
- version: '18.2.0'
176
- });
177
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
178
- await checkStudioDependencyVersions(workDir, mockOutput);
179
- expect(mockOutput.warn).not.toHaveBeenCalled();
180
- expect(mockOutput.error).not.toHaveBeenCalled();
181
- });
182
- test('should handle packages where manifest path cannot be resolved', async ()=>{
183
- mockedReadPackageJson.mockResolvedValueOnce({
184
- dependencies: {
185
- react: '^18.0.0'
186
- },
187
- name: 'test-project',
188
- version: '1.0.0'
189
- });
190
- mockedResolveFromSilent.mockReturnValue(null);
191
- await checkStudioDependencyVersions(workDir, mockOutput);
192
- // When manifest path cannot be resolved, the function falls back to using the dependency version
193
- // which gets stripped of non-digit/dot characters, resulting in "1800" which is treated as 1800.0.0
194
- // This is much higher than the supported range, so it becomes "untested"
195
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have not yet been marked as supported:'));
196
- });
197
- test('should handle packages where version cannot be coerced', async ()=>{
198
- mockedReadPackageJson.mockResolvedValueOnce({
199
- dependencies: {
200
- react: 'invalid-version'
201
- },
202
- name: 'test-project',
203
- version: '1.0.0'
204
- });
205
- mockedResolveFromSilent.mockReturnValue(null);
206
- await checkStudioDependencyVersions(workDir, mockOutput);
207
- expect(mockOutput.warn).not.toHaveBeenCalled();
208
- expect(mockOutput.error).not.toHaveBeenCalled();
209
- });
210
- test('should handle mixed package states correctly', async ()=>{
211
- mockedReadPackageJson.mockResolvedValueOnce({
212
- dependencies: {
213
- react: '^16.0.0',
214
- 'react-dom': '^20.0.0',
215
- 'styled-components': '^6.0.0'
216
- },
217
- name: 'test-project',
218
- version: '1.0.0'
219
- }).mockResolvedValueOnce({
220
- name: 'react',
221
- version: '16.14.0'
222
- }).mockResolvedValueOnce({
223
- name: 'react-dom',
224
- version: '20.0.0'
225
- }).mockResolvedValueOnce({
226
- name: 'styled-components',
227
- version: '6.1.0'
228
- });
229
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json').mockReturnValueOnce('/node_modules/styled-components/package.json');
230
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
231
- // Should warn about untested versions
232
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('react-dom (installed: 20.0.0, want: ^18 || ^19)'));
233
- // Should error about unsupported versions
234
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
235
- exit: 1
236
- });
237
- });
238
- });
239
- describe('helper functions edge cases', ()=>{
240
- test('should handle invalid version ranges in helper functions', async ()=>{
241
- // Test the edge case where semver.coerce returns null and falls back to {version: ''}
242
- const originalCoerce = semver.coerce;
243
- let coerceCallCount = 0;
244
- vi.spyOn(semver, 'coerce').mockImplementation((version)=>{
245
- coerceCallCount++;
246
- // Return null for the version in getUpgradeInstructions to test the fallback
247
- if (coerceCallCount > 2 && version && typeof version === 'string' && version.includes('^')) {
248
- return null;
249
- }
250
- return originalCoerce(version);
251
- });
252
- mockedReadPackageJson.mockResolvedValueOnce({
253
- dependencies: {
254
- react: '^16.0.0'
255
- },
256
- name: 'test-project',
257
- version: '1.0.0'
258
- }).mockResolvedValueOnce({
259
- name: 'react',
260
- version: '16.14.0'
261
- });
262
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
263
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
264
- // Should still generate instructions even with invalid version range
265
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('To upgrade, run either:'), {
266
- exit: 1
267
- });
268
- });
269
- });
270
- describe('helper functions', ()=>{
271
- test('should generate correct upgrade instructions', async ()=>{
272
- mockedReadPackageJson.mockResolvedValueOnce({
273
- dependencies: {
274
- react: '^16.0.0'
275
- },
276
- name: 'test-project',
277
- version: '1.0.0'
278
- }).mockResolvedValueOnce({
279
- name: 'react',
280
- version: '16.14.0'
281
- });
282
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
283
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
284
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('npm install "react@18.0.0"'), {
285
- exit: 1
286
- });
287
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('yarn add "react@18.0.0"'), {
288
- exit: 1
289
- });
290
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('pnpm add "react@18.0.0"'), {
291
- exit: 1
292
- });
293
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Read more at https://www.sanity.io/docs/help/upgrade-packages'), {
294
- exit: 1
295
- });
296
- });
297
- test('should generate correct downgrade instructions', async ()=>{
298
- mockedReadPackageJson.mockResolvedValueOnce({
299
- dependencies: {
300
- react: '^20.0.0'
301
- },
302
- name: 'test-project',
303
- version: '1.0.0'
304
- }).mockResolvedValueOnce({
305
- name: 'react',
306
- version: '20.0.0'
307
- });
308
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
309
- await checkStudioDependencyVersions(workDir, mockOutput);
310
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('yarn add "react@18.0.0"'));
311
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('npm install "react@18.0.0"'));
312
- expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('pnpm install "react@18.0.0"'));
313
- });
314
- test('should list multiple packages correctly', async ()=>{
315
- mockedReadPackageJson.mockResolvedValueOnce({
316
- dependencies: {
317
- react: '^16.0.0',
318
- 'react-dom': '^16.0.0'
319
- },
320
- name: 'test-project',
321
- version: '1.0.0'
322
- }).mockResolvedValueOnce({
323
- name: 'react',
324
- version: '16.14.0'
325
- }).mockResolvedValueOnce({
326
- name: 'react-dom',
327
- version: '16.14.0'
328
- });
329
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json');
330
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
331
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
332
- exit: 1
333
- });
334
- expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react-dom (installed: 16.14.0, want: ^18 || ^19)'), {
335
- exit: 1
336
- });
337
- });
338
- });
339
- describe('edge cases', ()=>{
340
- test('should handle readPackageJson throwing an error', async ()=>{
341
- mockedReadPackageJson.mockRejectedValue(new Error('Failed to read package.json'));
342
- await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('Failed to read package.json');
343
- });
344
- test('should handle packages with no dependencies property', async ()=>{
345
- mockedReadPackageJson.mockResolvedValue({
346
- name: 'test-project',
347
- version: '1.0.0'
348
- });
349
- await checkStudioDependencyVersions(workDir, mockOutput);
350
- expect(mockOutput.warn).not.toHaveBeenCalled();
351
- expect(mockOutput.error).not.toHaveBeenCalled();
352
- });
353
- test('should handle packages with empty dependencies', async ()=>{
354
- mockedReadPackageJson.mockResolvedValue({
355
- dependencies: {},
356
- devDependencies: {},
357
- name: 'test-project',
358
- version: '1.0.0'
359
- });
360
- await checkStudioDependencyVersions(workDir, mockOutput);
361
- expect(mockOutput.warn).not.toHaveBeenCalled();
362
- expect(mockOutput.error).not.toHaveBeenCalled();
363
- });
364
- test('should handle semver.coerce returning null', async ()=>{
365
- mockedReadPackageJson.mockResolvedValueOnce({
366
- dependencies: {
367
- react: 'invalid-version'
368
- },
369
- name: 'test-project',
370
- version: '1.0.0'
371
- });
372
- mockedResolveFromSilent.mockReturnValue(null);
373
- // Mock semver.coerce to return null
374
- vi.spyOn(semver, 'coerce').mockReturnValue(null);
375
- await checkStudioDependencyVersions(workDir, mockOutput);
376
- expect(mockOutput.warn).not.toHaveBeenCalled();
377
- expect(mockOutput.error).not.toHaveBeenCalled();
378
- });
379
- test('should handle @sanity/ui package correctly', async ()=>{
380
- mockedReadPackageJson.mockResolvedValueOnce({
381
- dependencies: {
382
- '@sanity/ui': '^2.0.0'
383
- },
384
- name: 'test-project',
385
- version: '1.0.0'
386
- }).mockResolvedValueOnce({
387
- name: '@sanity/ui',
388
- version: '2.0.0'
389
- });
390
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/@sanity/ui/package.json');
391
- await checkStudioDependencyVersions(workDir, mockOutput);
392
- expect(mockOutput.warn).not.toHaveBeenCalled();
393
- expect(mockOutput.error).not.toHaveBeenCalled();
394
- });
395
- test('should handle styled-components package correctly', async ()=>{
396
- mockedReadPackageJson.mockResolvedValueOnce({
397
- dependencies: {
398
- 'styled-components': '^6.0.0'
399
- },
400
- name: 'test-project',
401
- version: '1.0.0'
402
- }).mockResolvedValueOnce({
403
- name: 'styled-components',
404
- version: '6.1.0'
405
- });
406
- mockedResolveFromSilent.mockReturnValueOnce('/node_modules/styled-components/package.json');
407
- await checkStudioDependencyVersions(workDir, mockOutput);
408
- expect(mockOutput.warn).not.toHaveBeenCalled();
409
- expect(mockOutput.error).not.toHaveBeenCalled();
410
- });
411
- });
412
- });
413
-
414
- //# sourceMappingURL=checkStudioDependencyVersions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/actions/build/__tests__/checkStudioDependencyVersions.test.ts"],"sourcesContent":["import path from 'node:path'\n\nimport {type Output} from '@sanity/cli-core'\nimport resolveFrom from 'resolve-from'\nimport semver from 'semver'\nimport {beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {readPackageJson} from '../../../util/readPackageJson'\nimport {checkStudioDependencyVersions} from '../checkStudioDependencyVersions'\n\n// Mock dependencies\nvi.mock('node:path')\nvi.mock('resolve-from')\nvi.mock('../../../util/readPackageJson')\n\nconst mockedPath = vi.mocked(path)\nconst mockedResolveFrom = vi.mocked(resolveFrom)\nconst mockedResolveFromSilent = vi.fn().mockReturnValue(null)\nconst mockedReadPackageJson = vi.mocked(readPackageJson)\n\ndescribe('checkStudioDependencyVersions', () => {\n const workDir = '/test/work/dir'\n const packageJsonPath = '/test/work/dir/package.json'\n let mockOutput: Output\n\n beforeEach(() => {\n vi.resetAllMocks()\n\n // Create mock output\n mockOutput = {\n error: vi.fn().mockImplementation((message: Error | string, options?: {exit?: boolean}) => {\n if (options?.exit !== false) {\n throw new Error('process.exit called')\n }\n }),\n log: vi.fn(),\n warn: vi.fn(),\n } as unknown as Output\n\n // Mock console methods (keeping for backwards compatibility if needed)\n vi.spyOn(console, 'warn').mockImplementation(() => {})\n vi.spyOn(console, 'error').mockImplementation(() => {})\n vi.spyOn(process, 'exit').mockImplementation(() => {\n throw new Error('process.exit called')\n })\n\n // Setup default mocks\n mockedPath.join.mockReturnValue(packageJsonPath)\n mockedResolveFromSilent.mockReturnValue(null)\n mockedResolveFrom.silent = mockedResolveFromSilent\n })\n\n describe('when no dependencies are installed', () => {\n test('should not warn or error when no tracked packages are installed', async () => {\n mockedReadPackageJson.mockResolvedValue({\n dependencies: {},\n devDependencies: {},\n name: 'test-project',\n version: '1.0.0',\n })\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n })\n\n describe('when dependencies are installed', () => {\n test('should handle packages with valid versions', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '18.2.0'})\n .mockResolvedValueOnce({name: 'react-dom', version: '18.2.0'})\n\n mockedResolveFromSilent\n .mockReturnValueOnce('/node_modules/react/package.json')\n .mockReturnValueOnce('/node_modules/react-dom/package.json')\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle packages with untested versions (newer than supported)', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^20.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '20.0.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json')\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'The following package versions have not yet been marked as supported:',\n ),\n )\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining('react (installed: 20.0.0, want: ^18 || ^19)'),\n )\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining('To downgrade, run either:'),\n )\n })\n\n test('should handle packages with unsupported versions (older than supported)', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^16.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '16.14.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json')\n\n await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow(\n 'process.exit called',\n )\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining(\n 'The following package versions are no longer supported and needs to be upgraded:',\n ),\n {exit: 1},\n )\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'),\n {exit: 1},\n )\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('To upgrade, run either:'),\n {exit: 1},\n )\n })\n\n test('should handle deprecated packages when deprecatedBelow is set', async () => {\n // We can't easily test this with the current PACKAGES structure since they all have\n // deprecatedBelow: null. However, we can at least test that a scenario where\n // deprecatedBelow would be used would create the correct PackageInfo structure\n // and would trigger a deprecation warning through the filtered array logic\n\n // This test ensures that if the deprecated code path were to be triggered,\n // the function would behave correctly\n const mockPackageInfo = {\n deprecatedBelow: '18.0.0',\n installed: semver.coerce('17.0.2')!,\n isDeprecated: true,\n isUnsupported: false,\n isUntested: false,\n name: 'react',\n supported: ['^18 || ^19'],\n }\n\n // Manually trigger the deprecated path by simulating the filtered array\n const deprecated = [mockPackageInfo]\n if (deprecated.length > 0) {\n mockOutput.warn(`The following package versions have been deprecated and should be upgraded:\n\n react (installed: 17.0.2, want: 18.0.0)\n\nSupport for these will be removed in a future release!\n\n To upgrade, run either:\n\n npm install \"react@18.0.0\"\n\n or\n\n yarn add \"react@18.0.0\"\n\n or\n\n pnpm add \"react@18.0.0\"\n\n\nRead more at https://help.sanity.io/upgrade-packages\n`)\n }\n\n expect(deprecated.length).toBe(1)\n expect(deprecated[0].isDeprecated).toBe(true)\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'The following package versions have been deprecated and should be upgraded:',\n ),\n )\n })\n\n test('should handle packages installed in devDependencies', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {},\n devDependencies: {\n react: '^18.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '18.2.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json')\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle packages where manifest path cannot be resolved', async () => {\n mockedReadPackageJson.mockResolvedValueOnce({\n dependencies: {\n react: '^18.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n\n mockedResolveFromSilent.mockReturnValue(null)\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n // When manifest path cannot be resolved, the function falls back to using the dependency version\n // which gets stripped of non-digit/dot characters, resulting in \"1800\" which is treated as 1800.0.0\n // This is much higher than the supported range, so it becomes \"untested\"\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'The following package versions have not yet been marked as supported:',\n ),\n )\n })\n\n test('should handle packages where version cannot be coerced', async () => {\n mockedReadPackageJson.mockResolvedValueOnce({\n dependencies: {\n react: 'invalid-version',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n\n mockedResolveFromSilent.mockReturnValue(null)\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle mixed package states correctly', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^16.0.0', // unsupported\n 'react-dom': '^20.0.0', // untested\n 'styled-components': '^6.0.0', // supported\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '16.14.0'})\n .mockResolvedValueOnce({name: 'react-dom', version: '20.0.0'})\n .mockResolvedValueOnce({name: 'styled-components', version: '6.1.0'})\n\n mockedResolveFromSilent\n .mockReturnValueOnce('/node_modules/react/package.json')\n .mockReturnValueOnce('/node_modules/react-dom/package.json')\n .mockReturnValueOnce('/node_modules/styled-components/package.json')\n\n await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow(\n 'process.exit called',\n )\n\n // Should warn about untested versions\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining('react-dom (installed: 20.0.0, want: ^18 || ^19)'),\n )\n\n // Should error about unsupported versions\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'),\n {exit: 1},\n )\n })\n })\n\n describe('helper functions edge cases', () => {\n test('should handle invalid version ranges in helper functions', async () => {\n // Test the edge case where semver.coerce returns null and falls back to {version: ''}\n const originalCoerce = semver.coerce\n let coerceCallCount = 0\n vi.spyOn(semver, 'coerce').mockImplementation((version) => {\n coerceCallCount++\n // Return null for the version in getUpgradeInstructions to test the fallback\n if (\n coerceCallCount > 2 &&\n version &&\n typeof version === 'string' &&\n version.includes('^')\n ) {\n return null\n }\n return originalCoerce(version)\n })\n\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^16.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '16.14.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json')\n\n await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow(\n 'process.exit called',\n )\n\n // Should still generate instructions even with invalid version range\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('To upgrade, run either:'),\n {exit: 1},\n )\n })\n })\n\n describe('helper functions', () => {\n test('should generate correct upgrade instructions', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^16.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '16.14.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json')\n\n await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow(\n 'process.exit called',\n )\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('npm install \"react@18.0.0\"'),\n {exit: 1},\n )\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('yarn add \"react@18.0.0\"'),\n {exit: 1},\n )\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('pnpm add \"react@18.0.0\"'),\n {exit: 1},\n )\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('Read more at https://www.sanity.io/docs/help/upgrade-packages'),\n {exit: 1},\n )\n })\n\n test('should generate correct downgrade instructions', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^20.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '20.0.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json')\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining('yarn add \"react@18.0.0\"'),\n )\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining('npm install \"react@18.0.0\"'),\n )\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining('pnpm install \"react@18.0.0\"'),\n )\n })\n\n test('should list multiple packages correctly', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n react: '^16.0.0',\n 'react-dom': '^16.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'react', version: '16.14.0'})\n .mockResolvedValueOnce({name: 'react-dom', version: '16.14.0'})\n\n mockedResolveFromSilent\n .mockReturnValueOnce('/node_modules/react/package.json')\n .mockReturnValueOnce('/node_modules/react-dom/package.json')\n\n await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow(\n 'process.exit called',\n )\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'),\n {exit: 1},\n )\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('react-dom (installed: 16.14.0, want: ^18 || ^19)'),\n {exit: 1},\n )\n })\n })\n\n describe('edge cases', () => {\n test('should handle readPackageJson throwing an error', async () => {\n mockedReadPackageJson.mockRejectedValue(new Error('Failed to read package.json'))\n\n await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow(\n 'Failed to read package.json',\n )\n })\n\n test('should handle packages with no dependencies property', async () => {\n mockedReadPackageJson.mockResolvedValue({\n name: 'test-project',\n version: '1.0.0',\n })\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle packages with empty dependencies', async () => {\n mockedReadPackageJson.mockResolvedValue({\n dependencies: {},\n devDependencies: {},\n name: 'test-project',\n version: '1.0.0',\n })\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle semver.coerce returning null', async () => {\n mockedReadPackageJson.mockResolvedValueOnce({\n dependencies: {\n react: 'invalid-version',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n\n mockedResolveFromSilent.mockReturnValue(null)\n\n // Mock semver.coerce to return null\n vi.spyOn(semver, 'coerce').mockReturnValue(null)\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle @sanity/ui package correctly', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n '@sanity/ui': '^2.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: '@sanity/ui', version: '2.0.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/@sanity/ui/package.json')\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n\n test('should handle styled-components package correctly', async () => {\n mockedReadPackageJson\n .mockResolvedValueOnce({\n dependencies: {\n 'styled-components': '^6.0.0',\n },\n name: 'test-project',\n version: '1.0.0',\n })\n .mockResolvedValueOnce({name: 'styled-components', version: '6.1.0'})\n\n mockedResolveFromSilent.mockReturnValueOnce('/node_modules/styled-components/package.json')\n\n await checkStudioDependencyVersions(workDir, mockOutput)\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n expect(mockOutput.error).not.toHaveBeenCalled()\n })\n })\n})\n"],"names":["path","resolveFrom","semver","beforeEach","describe","expect","test","vi","readPackageJson","checkStudioDependencyVersions","mock","mockedPath","mocked","mockedResolveFrom","mockedResolveFromSilent","fn","mockReturnValue","mockedReadPackageJson","workDir","packageJsonPath","mockOutput","resetAllMocks","error","mockImplementation","message","options","exit","Error","log","warn","spyOn","console","process","join","silent","mockResolvedValue","dependencies","devDependencies","name","version","not","toHaveBeenCalled","mockResolvedValueOnce","react","mockReturnValueOnce","toHaveBeenCalledWith","stringContaining","rejects","toThrow","mockPackageInfo","deprecatedBelow","installed","coerce","isDeprecated","isUnsupported","isUntested","supported","deprecated","length","toBe","originalCoerce","coerceCallCount","includes","mockRejectedValue"],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { afterEach, describe, expect, test, vi } from 'vitest';
2
- import { determineBasePath } from '../determineBasePath.js';
3
- describe('#determineBasePath', ()=>{
4
- afterEach(()=>{
5
- vi.unstubAllEnvs();
6
- });
7
- test('should return the base path from the CLI config', ()=>{
8
- expect(determineBasePath({
9
- project: {
10
- basePath: '/base'
11
- }
12
- }, 'app')).toBe('/base');
13
- });
14
- test('should return the base path from the environment variables', ()=>{
15
- vi.stubEnv('SANITY_APP_BASEPATH', '/base');
16
- expect(determineBasePath({
17
- project: {
18
- basePath: '/base'
19
- }
20
- }, 'app')).toBe('/base');
21
- });
22
- });
23
-
24
- //# sourceMappingURL=determineBasePath.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/actions/build/__tests__/determineBasePath.test.ts"],"sourcesContent":["import {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {determineBasePath} from '../determineBasePath.js'\n\ndescribe('#determineBasePath', () => {\n afterEach(() => {\n vi.unstubAllEnvs()\n })\n\n test('should return the base path from the CLI config', () => {\n expect(determineBasePath({project: {basePath: '/base'}}, 'app')).toBe('/base')\n })\n\n test('should return the base path from the environment variables', () => {\n vi.stubEnv('SANITY_APP_BASEPATH', '/base')\n expect(determineBasePath({project: {basePath: '/base'}}, 'app')).toBe('/base')\n })\n})\n"],"names":["afterEach","describe","expect","test","vi","determineBasePath","unstubAllEnvs","project","basePath","toBe","stubEnv"],"mappings":"AAAA,SAAQA,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAE5D,SAAQC,iBAAiB,QAAO,0BAAyB;AAEzDJ,SAAS,sBAAsB;IAC7BD,UAAU;QACRI,GAAGE,aAAa;IAClB;IAEAH,KAAK,mDAAmD;QACtDD,OAAOG,kBAAkB;YAACE,SAAS;gBAACC,UAAU;YAAO;QAAC,GAAG,QAAQC,IAAI,CAAC;IACxE;IAEAN,KAAK,8DAA8D;QACjEC,GAAGM,OAAO,CAAC,uBAAuB;QAClCR,OAAOG,kBAAkB;YAACE,SAAS;gBAACC,UAAU;YAAO;QAAC,GAAG,QAAQC,IAAI,CAAC;IACxE;AACF"}
@@ -1,109 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
- import { getAutoUpdatesImportMap } from '../getAutoUpdatesImportMap';
3
- describe('getAutoUpdateImportMap() without app id', ()=>{
4
- test('works with sanity package', ()=>{
5
- const autoUpdatesImportMap = getAutoUpdatesImportMap([
6
- {
7
- name: 'sanity',
8
- version: '3.2.0'
9
- }
10
- ], {
11
- baseUrl: 'https://sanity-cdn.com',
12
- timestamp: 1_755_770_630
13
- });
14
- expect(autoUpdatesImportMap).toEqual({
15
- sanity: 'https://sanity-cdn.com/v1/modules/sanity/default/%5E3.2.0/t1755770630',
16
- 'sanity/': 'https://sanity-cdn.com/v1/modules/sanity/default/%5E3.2.0/t1755770630/'
17
- });
18
- });
19
- test('works with scoped packages', ()=>{
20
- expect(getAutoUpdatesImportMap([
21
- {
22
- name: '@sanity/vision',
23
- version: '4.2.0'
24
- }
25
- ], {
26
- baseUrl: 'https://sanity-cdn.com',
27
- timestamp: 1_755_770_630
28
- })).toEqual({
29
- '@sanity/vision': 'https://sanity-cdn.com/v1/modules/@sanity__vision/default/%5E4.2.0/t1755770630',
30
- '@sanity/vision/': 'https://sanity-cdn.com/v1/modules/@sanity__vision/default/%5E4.2.0/t1755770630/'
31
- });
32
- });
33
- test('works with sdk packages', ()=>{
34
- expect(getAutoUpdatesImportMap([
35
- {
36
- name: '@sanity/sdk',
37
- version: '1.0.0'
38
- },
39
- {
40
- name: '@sanity/sdk-react',
41
- version: '1.3.0'
42
- }
43
- ], {
44
- baseUrl: 'https://sanity-cdn.com',
45
- timestamp: 1_755_770_630
46
- })).toEqual({
47
- '@sanity/sdk': 'https://sanity-cdn.com/v1/modules/@sanity__sdk/default/%5E1.0.0/t1755770630',
48
- '@sanity/sdk-react': 'https://sanity-cdn.com/v1/modules/@sanity__sdk-react/default/%5E1.3.0/t1755770630',
49
- '@sanity/sdk-react/': 'https://sanity-cdn.com/v1/modules/@sanity__sdk-react/default/%5E1.3.0/t1755770630/',
50
- '@sanity/sdk/': 'https://sanity-cdn.com/v1/modules/@sanity__sdk/default/%5E1.0.0/t1755770630/'
51
- });
52
- });
53
- });
54
- describe('getAutoUpdateImportMap() with app id', ()=>{
55
- test('works with sanity package', ()=>{
56
- const autoUpdatesImportMap = getAutoUpdatesImportMap([
57
- {
58
- name: 'sanity',
59
- version: '3.2.0'
60
- }
61
- ], {
62
- appId: 'foo321bar123',
63
- baseUrl: 'https://sanity-cdn.com',
64
- timestamp: 1_755_770_630
65
- });
66
- expect(autoUpdatesImportMap).toEqual({
67
- sanity: 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E3.2.0/sanity',
68
- 'sanity/': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E3.2.0/sanity/'
69
- });
70
- });
71
- test('works with scoped packages', ()=>{
72
- expect(getAutoUpdatesImportMap([
73
- {
74
- name: '@sanity/vision',
75
- version: '4.2.0'
76
- }
77
- ], {
78
- appId: 'foo321bar123',
79
- baseUrl: 'https://sanity-cdn.com',
80
- timestamp: 1_755_770_630
81
- })).toEqual({
82
- '@sanity/vision': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E4.2.0/@sanity__vision',
83
- '@sanity/vision/': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E4.2.0/@sanity__vision/'
84
- });
85
- });
86
- test('works with sdk packages', ()=>{
87
- expect(getAutoUpdatesImportMap([
88
- {
89
- name: '@sanity/sdk',
90
- version: '1.0.0'
91
- },
92
- {
93
- name: '@sanity/sdk-react',
94
- version: '1.3.0'
95
- }
96
- ], {
97
- appId: 'foo321bar123',
98
- baseUrl: 'https://sanity-cdn.com',
99
- timestamp: 1_755_770_630
100
- })).toEqual({
101
- '@sanity/sdk': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.0.0/@sanity__sdk',
102
- '@sanity/sdk-react': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.3.0/@sanity__sdk-react',
103
- '@sanity/sdk-react/': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.3.0/@sanity__sdk-react/',
104
- '@sanity/sdk/': 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.0.0/@sanity__sdk/'
105
- });
106
- });
107
- });
108
-
109
- //# sourceMappingURL=getAutoUpdatesImportMap.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/actions/build/__tests__/getAutoUpdatesImportMap.test.ts"],"sourcesContent":["import {describe, expect, test} from 'vitest'\n\nimport {getAutoUpdatesImportMap} from '../getAutoUpdatesImportMap'\n\ndescribe('getAutoUpdateImportMap() without app id', () => {\n test('works with sanity package', () => {\n const autoUpdatesImportMap = getAutoUpdatesImportMap([{name: 'sanity', version: '3.2.0'}], {\n baseUrl: 'https://sanity-cdn.com',\n timestamp: 1_755_770_630,\n })\n expect(autoUpdatesImportMap).toEqual({\n sanity: 'https://sanity-cdn.com/v1/modules/sanity/default/%5E3.2.0/t1755770630',\n 'sanity/': 'https://sanity-cdn.com/v1/modules/sanity/default/%5E3.2.0/t1755770630/',\n })\n })\n test('works with scoped packages', () => {\n expect(\n getAutoUpdatesImportMap([{name: '@sanity/vision', version: '4.2.0'}], {\n baseUrl: 'https://sanity-cdn.com',\n timestamp: 1_755_770_630,\n }),\n ).toEqual({\n '@sanity/vision':\n 'https://sanity-cdn.com/v1/modules/@sanity__vision/default/%5E4.2.0/t1755770630',\n '@sanity/vision/':\n 'https://sanity-cdn.com/v1/modules/@sanity__vision/default/%5E4.2.0/t1755770630/',\n })\n })\n test('works with sdk packages', () => {\n expect(\n getAutoUpdatesImportMap(\n [\n {name: '@sanity/sdk', version: '1.0.0'},\n {name: '@sanity/sdk-react', version: '1.3.0'},\n ],\n {baseUrl: 'https://sanity-cdn.com', timestamp: 1_755_770_630},\n ),\n ).toEqual({\n '@sanity/sdk': 'https://sanity-cdn.com/v1/modules/@sanity__sdk/default/%5E1.0.0/t1755770630',\n '@sanity/sdk-react':\n 'https://sanity-cdn.com/v1/modules/@sanity__sdk-react/default/%5E1.3.0/t1755770630',\n '@sanity/sdk-react/':\n 'https://sanity-cdn.com/v1/modules/@sanity__sdk-react/default/%5E1.3.0/t1755770630/',\n '@sanity/sdk/':\n 'https://sanity-cdn.com/v1/modules/@sanity__sdk/default/%5E1.0.0/t1755770630/',\n })\n })\n})\n\ndescribe('getAutoUpdateImportMap() with app id', () => {\n test('works with sanity package', () => {\n const autoUpdatesImportMap = getAutoUpdatesImportMap([{name: 'sanity', version: '3.2.0'}], {\n appId: 'foo321bar123',\n baseUrl: 'https://sanity-cdn.com',\n timestamp: 1_755_770_630,\n })\n expect(autoUpdatesImportMap).toEqual({\n sanity: 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E3.2.0/sanity',\n 'sanity/':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E3.2.0/sanity/',\n })\n })\n test('works with scoped packages', () => {\n expect(\n getAutoUpdatesImportMap([{name: '@sanity/vision', version: '4.2.0'}], {\n appId: 'foo321bar123',\n baseUrl: 'https://sanity-cdn.com',\n timestamp: 1_755_770_630,\n }),\n ).toEqual({\n '@sanity/vision':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E4.2.0/@sanity__vision',\n '@sanity/vision/':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E4.2.0/@sanity__vision/',\n })\n })\n test('works with sdk packages', () => {\n expect(\n getAutoUpdatesImportMap(\n [\n {name: '@sanity/sdk', version: '1.0.0'},\n {name: '@sanity/sdk-react', version: '1.3.0'},\n ],\n {appId: 'foo321bar123', baseUrl: 'https://sanity-cdn.com', timestamp: 1_755_770_630},\n ),\n ).toEqual({\n '@sanity/sdk':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.0.0/@sanity__sdk',\n '@sanity/sdk-react':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.3.0/@sanity__sdk-react',\n '@sanity/sdk-react/':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.3.0/@sanity__sdk-react/',\n '@sanity/sdk/':\n 'https://sanity-cdn.com/v1/modules/by-app/foo321bar123/t1755770630/%5E1.0.0/@sanity__sdk/',\n })\n })\n})\n"],"names":["describe","expect","test","getAutoUpdatesImportMap","autoUpdatesImportMap","name","version","baseUrl","timestamp","toEqual","sanity","appId"],"mappings":"AAAA,SAAQA,QAAQ,EAAEC,MAAM,EAAEC,IAAI,QAAO,SAAQ;AAE7C,SAAQC,uBAAuB,QAAO,6BAA4B;AAElEH,SAAS,2CAA2C;IAClDE,KAAK,6BAA6B;QAChC,MAAME,uBAAuBD,wBAAwB;YAAC;gBAACE,MAAM;gBAAUC,SAAS;YAAO;SAAE,EAAE;YACzFC,SAAS;YACTC,WAAW;QACb;QACAP,OAAOG,sBAAsBK,OAAO,CAAC;YACnCC,QAAQ;YACR,WAAW;QACb;IACF;IACAR,KAAK,8BAA8B;QACjCD,OACEE,wBAAwB;YAAC;gBAACE,MAAM;gBAAkBC,SAAS;YAAO;SAAE,EAAE;YACpEC,SAAS;YACTC,WAAW;QACb,IACAC,OAAO,CAAC;YACR,kBACE;YACF,mBACE;QACJ;IACF;IACAP,KAAK,2BAA2B;QAC9BD,OACEE,wBACE;YACE;gBAACE,MAAM;gBAAeC,SAAS;YAAO;YACtC;gBAACD,MAAM;gBAAqBC,SAAS;YAAO;SAC7C,EACD;YAACC,SAAS;YAA0BC,WAAW;QAAa,IAE9DC,OAAO,CAAC;YACR,eAAe;YACf,qBACE;YACF,sBACE;YACF,gBACE;QACJ;IACF;AACF;AAEAT,SAAS,wCAAwC;IAC/CE,KAAK,6BAA6B;QAChC,MAAME,uBAAuBD,wBAAwB;YAAC;gBAACE,MAAM;gBAAUC,SAAS;YAAO;SAAE,EAAE;YACzFK,OAAO;YACPJ,SAAS;YACTC,WAAW;QACb;QACAP,OAAOG,sBAAsBK,OAAO,CAAC;YACnCC,QAAQ;YACR,WACE;QACJ;IACF;IACAR,KAAK,8BAA8B;QACjCD,OACEE,wBAAwB;YAAC;gBAACE,MAAM;gBAAkBC,SAAS;YAAO;SAAE,EAAE;YACpEK,OAAO;YACPJ,SAAS;YACTC,WAAW;QACb,IACAC,OAAO,CAAC;YACR,kBACE;YACF,mBACE;QACJ;IACF;IACAP,KAAK,2BAA2B;QAC9BD,OACEE,wBACE;YACE;gBAACE,MAAM;gBAAeC,SAAS;YAAO;YACtC;gBAACD,MAAM;gBAAqBC,SAAS;YAAO;SAC7C,EACD;YAACK,OAAO;YAAgBJ,SAAS;YAA0BC,WAAW;QAAa,IAErFC,OAAO,CAAC;YACR,eACE;YACF,qBACE;YACF,sBACE;YACF,gBACE;QACJ;IACF;AACF"}