@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,657 +0,0 @@
1
- import fs from 'node:fs';
2
- import { tmpdir } from 'node:os';
3
- import path from 'node:path';
4
- import { renderToStaticMarkup } from 'react-dom/server';
5
- import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
6
- import { renderDocumentWorker } from '../renderDocumentWorker.js';
7
- // Mock the lower-level dependencies that we still need to mock
8
- vi.mock('../../buildDebug.js');
9
- vi.mock('react-dom/server', ()=>({
10
- renderToStaticMarkup: vi.fn()
11
- }));
12
- const mockRenderToStaticMarkup = vi.mocked(renderToStaticMarkup);
13
- // Create test document components as strings
14
- const validDocumentComponent = `
15
- const React = require('react');
16
-
17
- function TestDocument(props) {
18
- const { basePath = '', css = [], entryPath = './.sanity/runtime/app.js' } = props;
19
-
20
- return React.createElement('html', { lang: 'en' },
21
- React.createElement('head', null,
22
- React.createElement('meta', { charSet: 'utf-8' }),
23
- React.createElement('title', null, 'Test Document'),
24
- ...css.map((href) => React.createElement('link', { rel: 'stylesheet', href, key: href }))
25
- ),
26
- React.createElement('body', null,
27
- React.createElement('div', { id: 'root' }),
28
- React.createElement('script', { src: entryPath, type: 'module' }),
29
- React.createElement('div', null, \`Base: \${basePath || 'default'}\`)
30
- )
31
- );
32
- }
33
-
34
- module.exports = TestDocument;
35
- module.exports.default = TestDocument;
36
- `;
37
- const invalidDocumentComponent = `
38
- const notDefault = 'invalid';
39
- const someFunction = () => 'test';
40
-
41
- module.exports = { notDefault, someFunction };
42
- `;
43
- const documentComponentWithoutDefaultExport = `
44
- function NamedComponent() {
45
- return 'not default export';
46
- }
47
-
48
- module.exports = { NamedComponent };
49
- `;
50
- describe('#renderDocumentWorker', ()=>{
51
- let mockParent;
52
- let originalDateNow;
53
- let tempDir;
54
- let testStudioPath;
55
- beforeEach(async ()=>{
56
- vi.clearAllMocks();
57
- // Mock Date.now to return a consistent timestamp for testing
58
- originalDateNow = Date.now;
59
- Date.now = vi.fn(()=>1_640_995_200_000); // Fixed timestamp: 2022-01-01 00:00:00 UTC
60
- // Create a mock MessagePort
61
- mockParent = {
62
- postMessage: vi.fn()
63
- };
64
- // Create temporary directory for test files
65
- tempDir = await fs.promises.mkdtemp(path.join(tmpdir(), 'sanity-test-'));
66
- testStudioPath = path.join(tempDir, 'studio');
67
- await fs.promises.mkdir(testStudioPath, {
68
- recursive: true
69
- });
70
- // Setup default mock for renderToStaticMarkup
71
- mockRenderToStaticMarkup.mockImplementation((element)=>{
72
- // Simple mock that returns the component's rendered output
73
- const props = element?.props || {};
74
- const { basePath = '', css = [], entryPath = './.sanity/runtime/app.js' } = props;
75
- return `<html><head><title>Test Document</title>${css.map((href)=>`<link rel="stylesheet" href="${href}" />`).join('')}</head><body><script src="${entryPath}" type="module"></script><div>Base: ${basePath || 'default'}</div></body></html>`;
76
- });
77
- });
78
- afterEach(async ()=>{
79
- // Restore original Date.now
80
- Date.now = originalDateNow;
81
- // Clean up temporary directory
82
- try {
83
- await fs.promises.rm(tempDir, {
84
- force: true,
85
- recursive: true
86
- });
87
- } catch (error) {
88
- console.warn('Failed to clean up temp directory:', error);
89
- }
90
- });
91
- async function createTestDocumentComponent(content, filename = '_document.js') {
92
- const filePath = path.join(testStudioPath, filename);
93
- await fs.promises.writeFile(filePath, content);
94
- return filePath;
95
- }
96
- describe('input validation', ()=>{
97
- test('should send error message when studioRootPath is not a string', async ()=>{
98
- const options = {
99
- studioRootPath: 123
100
- };
101
- await renderDocumentWorker(mockParent, options);
102
- expect(mockParent.postMessage).toHaveBeenCalledWith({
103
- message: 'Missing/invalid `studioRootPath` option',
104
- type: 'error'
105
- });
106
- expect(mockRenderToStaticMarkup).not.toHaveBeenCalled();
107
- });
108
- test('should send error message when studioRootPath is undefined', async ()=>{
109
- const options = {
110
- studioRootPath: undefined
111
- };
112
- await renderDocumentWorker(mockParent, options);
113
- expect(mockParent.postMessage).toHaveBeenCalledWith({
114
- message: 'Missing/invalid `studioRootPath` option',
115
- type: 'error'
116
- });
117
- expect(mockRenderToStaticMarkup).not.toHaveBeenCalled();
118
- });
119
- test('should send error message when studioRootPath is null', async ()=>{
120
- const options = {
121
- studioRootPath: null
122
- };
123
- await renderDocumentWorker(mockParent, options);
124
- expect(mockParent.postMessage).toHaveBeenCalledWith({
125
- message: 'Missing/invalid `studioRootPath` option',
126
- type: 'error'
127
- });
128
- expect(mockRenderToStaticMarkup).not.toHaveBeenCalled();
129
- });
130
- test('should render document when studioRootPath is empty string', async ()=>{
131
- const options = {
132
- studioRootPath: ''
133
- };
134
- await renderDocumentWorker(mockParent, options);
135
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
136
- expect(mockParent.postMessage).toHaveBeenCalledWith({
137
- html: expect.stringContaining('<!DOCTYPE html>'),
138
- type: 'result'
139
- });
140
- });
141
- test('should send error message when props is not an object', async ()=>{
142
- const options = {
143
- props: 'invalid',
144
- studioRootPath: testStudioPath
145
- };
146
- await renderDocumentWorker(mockParent, options);
147
- expect(mockParent.postMessage).toHaveBeenCalledWith({
148
- message: '`props` must be an object if provided',
149
- type: 'error'
150
- });
151
- expect(mockRenderToStaticMarkup).not.toHaveBeenCalled();
152
- });
153
- test('should send error message when props is a primitive value', async ()=>{
154
- const options = {
155
- props: 123,
156
- studioRootPath: testStudioPath
157
- };
158
- await renderDocumentWorker(mockParent, options);
159
- expect(mockParent.postMessage).toHaveBeenCalledWith({
160
- message: '`props` must be an object if provided',
161
- type: 'error'
162
- });
163
- expect(mockRenderToStaticMarkup).not.toHaveBeenCalled();
164
- });
165
- test('should render document when props is an array (arrays are objects)', async ()=>{
166
- const options = {
167
- props: [],
168
- studioRootPath: testStudioPath
169
- };
170
- await renderDocumentWorker(mockParent, options);
171
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
172
- expect(mockParent.postMessage).toHaveBeenCalledWith({
173
- html: expect.stringContaining('<!DOCTYPE html>'),
174
- type: 'result'
175
- });
176
- });
177
- });
178
- describe('successful rendering with default components', ()=>{
179
- test('should render document with minimal options', async ()=>{
180
- const options = {
181
- studioRootPath: testStudioPath
182
- };
183
- await renderDocumentWorker(mockParent, options);
184
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
185
- expect(mockParent.postMessage).toHaveBeenCalledWith({
186
- html: expect.stringContaining('<!DOCTYPE html>'),
187
- type: 'result'
188
- });
189
- });
190
- test('should render document with all options provided', async ()=>{
191
- const props = {
192
- basePath: '/studio',
193
- css: [
194
- 'style.css',
195
- 'theme.css'
196
- ],
197
- entryPath: './custom-entry.js'
198
- };
199
- const importMap = {
200
- imports: {
201
- react: 'https://esm.sh/react@18',
202
- 'react-dom': 'https://esm.sh/react-dom@18'
203
- }
204
- };
205
- const options = {
206
- importMap,
207
- isApp: true,
208
- props,
209
- studioRootPath: testStudioPath
210
- };
211
- await renderDocumentWorker(mockParent, options);
212
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
213
- props: expect.objectContaining({
214
- basePath: '/studio',
215
- css: [
216
- '/studio/style.css',
217
- '/studio/theme.css'
218
- ],
219
- entryPath: './custom-entry.js'
220
- })
221
- }));
222
- expect(mockParent.postMessage).toHaveBeenCalledWith({
223
- html: expect.stringContaining('<!DOCTYPE html>'),
224
- type: 'result'
225
- });
226
- });
227
- test('should render document with isApp=false', async ()=>{
228
- const options = {
229
- isApp: false,
230
- studioRootPath: testStudioPath
231
- };
232
- await renderDocumentWorker(mockParent, options);
233
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
234
- expect(mockParent.postMessage).toHaveBeenCalledWith({
235
- html: expect.stringContaining('<!DOCTYPE html>'),
236
- type: 'result'
237
- });
238
- });
239
- test('should render document with empty props object', async ()=>{
240
- const options = {
241
- props: {},
242
- studioRootPath: testStudioPath
243
- };
244
- await renderDocumentWorker(mockParent, options);
245
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
246
- props: expect.objectContaining({
247
- entryPath: './.sanity/runtime/app.js'
248
- })
249
- }));
250
- expect(mockParent.postMessage).toHaveBeenCalledWith({
251
- html: expect.stringContaining('<!DOCTYPE html>'),
252
- type: 'result'
253
- });
254
- });
255
- test('should render document with complex props', async ()=>{
256
- const props = {
257
- basePath: '/complex/path',
258
- css: [
259
- 'main.css',
260
- 'components.css',
261
- 'theme.css'
262
- ],
263
- entryPath: './src/index.js'
264
- };
265
- const options = {
266
- props,
267
- studioRootPath: testStudioPath
268
- };
269
- await renderDocumentWorker(mockParent, options);
270
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
271
- props: expect.objectContaining({
272
- basePath: '/complex/path',
273
- css: [
274
- '/complex/path/main.css',
275
- '/complex/path/components.css',
276
- '/complex/path/theme.css'
277
- ],
278
- entryPath: './src/index.js'
279
- })
280
- }));
281
- expect(mockParent.postMessage).toHaveBeenCalledWith({
282
- html: expect.stringContaining('<!DOCTYPE html>'),
283
- type: 'result'
284
- });
285
- });
286
- test('should render document with complex importMap', async ()=>{
287
- const importMap = {
288
- imports: {
289
- '@sanity/ui': 'https://esm.sh/@sanity/ui@2.0.0',
290
- react: 'https://esm.sh/react@18.2.0',
291
- 'react-dom': 'https://esm.sh/react-dom@18.2.0',
292
- 'react-dom/client': 'https://esm.sh/react-dom@18.2.0/client'
293
- }
294
- };
295
- const options = {
296
- importMap,
297
- studioRootPath: testStudioPath
298
- };
299
- await renderDocumentWorker(mockParent, options);
300
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
301
- expect(mockParent.postMessage).toHaveBeenCalledWith({
302
- html: expect.stringContaining('<!DOCTYPE html>'),
303
- type: 'result'
304
- });
305
- });
306
- test('should use BasicDocument when isApp=true', async ()=>{
307
- const options = {
308
- isApp: true,
309
- studioRootPath: testStudioPath
310
- };
311
- await renderDocumentWorker(mockParent, options);
312
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
313
- expect(mockParent.postMessage).toHaveBeenCalledWith({
314
- html: expect.stringContaining('<!DOCTYPE html>'),
315
- type: 'result'
316
- });
317
- });
318
- test('should use DefaultDocument when isApp=false', async ()=>{
319
- const options = {
320
- isApp: false,
321
- studioRootPath: testStudioPath
322
- };
323
- await renderDocumentWorker(mockParent, options);
324
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
325
- expect(mockParent.postMessage).toHaveBeenCalledWith({
326
- html: expect.stringContaining('<!DOCTYPE html>'),
327
- type: 'result'
328
- });
329
- });
330
- });
331
- describe('user-defined document components', ()=>{
332
- test('should handle user-defined document component', async ()=>{
333
- await createTestDocumentComponent(validDocumentComponent);
334
- const options = {
335
- studioRootPath: testStudioPath
336
- };
337
- await renderDocumentWorker(mockParent, options);
338
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
339
- expect(mockParent.postMessage).toHaveBeenCalledWith({
340
- html: expect.stringContaining('<!DOCTYPE html>'),
341
- type: 'result'
342
- });
343
- });
344
- test('should handle user-defined component with warning when not a function', async ()=>{
345
- await createTestDocumentComponent(invalidDocumentComponent);
346
- const options = {
347
- studioRootPath: testStudioPath
348
- };
349
- await renderDocumentWorker(mockParent, options);
350
- expect(mockParent.postMessage).toHaveBeenCalledWith(expect.objectContaining({
351
- message: expect.arrayContaining([
352
- expect.stringContaining('did not have a default export that is a React component')
353
- ]),
354
- type: 'warning'
355
- }));
356
- expect(mockParent.postMessage).toHaveBeenCalledWith({
357
- html: expect.stringContaining('<!DOCTYPE html>'),
358
- type: 'result'
359
- });
360
- });
361
- test('should handle user-defined component without default export', async ()=>{
362
- await createTestDocumentComponent(documentComponentWithoutDefaultExport);
363
- const options = {
364
- studioRootPath: testStudioPath
365
- };
366
- await renderDocumentWorker(mockParent, options);
367
- expect(mockParent.postMessage).toHaveBeenCalledWith(expect.objectContaining({
368
- message: expect.arrayContaining([
369
- expect.stringContaining('did not have a default export that is a React component')
370
- ]),
371
- type: 'warning'
372
- }));
373
- expect(mockParent.postMessage).toHaveBeenCalledWith({
374
- html: expect.stringContaining('<!DOCTYPE html>'),
375
- type: 'result'
376
- });
377
- });
378
- test('should prefer .tsx over .js when both exist', async ()=>{
379
- // Create both .js and .tsx files
380
- await createTestDocumentComponent(invalidDocumentComponent, '_document.js');
381
- await createTestDocumentComponent(validDocumentComponent, '_document.tsx');
382
- const options = {
383
- studioRootPath: testStudioPath
384
- };
385
- await renderDocumentWorker(mockParent, options);
386
- // Should use the .js file (first in the list from getPossibleDocumentComponentLocations)
387
- expect(mockParent.postMessage).toHaveBeenCalledWith(expect.objectContaining({
388
- message: expect.arrayContaining([
389
- expect.stringContaining('did not have a default export that is a React component')
390
- ]),
391
- type: 'warning'
392
- }));
393
- expect(mockParent.postMessage).toHaveBeenCalledWith({
394
- html: expect.stringContaining('<!DOCTYPE html>'),
395
- type: 'result'
396
- });
397
- });
398
- });
399
- describe('error handling', ()=>{
400
- test('should handle renderToStaticMarkup throwing', async ()=>{
401
- const options = {
402
- props: {
403
- basePath: '/studio'
404
- },
405
- studioRootPath: testStudioPath
406
- };
407
- const error = new Error('React rendering failed');
408
- mockRenderToStaticMarkup.mockImplementation(()=>{
409
- throw error;
410
- });
411
- await expect(renderDocumentWorker(mockParent, options)).rejects.toThrow('React rendering failed');
412
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
413
- });
414
- test('should handle invalid document component module', async ()=>{
415
- // Create a file with syntax errors
416
- await createTestDocumentComponent('invalid javascript syntax!@#$');
417
- const options = {
418
- studioRootPath: testStudioPath
419
- };
420
- await expect(renderDocumentWorker(mockParent, options)).rejects.toThrow();
421
- });
422
- });
423
- describe('edge cases', ()=>{
424
- test('should handle null props correctly', async ()=>{
425
- const options = {
426
- props: null,
427
- studioRootPath: testStudioPath
428
- };
429
- await renderDocumentWorker(mockParent, options);
430
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
431
- expect(mockParent.postMessage).toHaveBeenCalledWith({
432
- html: expect.stringContaining('<!DOCTYPE html>'),
433
- type: 'result'
434
- });
435
- });
436
- test('should handle undefined props correctly', async ()=>{
437
- const options = {
438
- props: undefined,
439
- studioRootPath: testStudioPath
440
- };
441
- await renderDocumentWorker(mockParent, options);
442
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
443
- expect(mockParent.postMessage).toHaveBeenCalledWith({
444
- html: expect.stringContaining('<!DOCTYPE html>'),
445
- type: 'result'
446
- });
447
- });
448
- test('should handle empty importMap correctly', async ()=>{
449
- const options = {
450
- importMap: {},
451
- studioRootPath: testStudioPath
452
- };
453
- await renderDocumentWorker(mockParent, options);
454
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
455
- expect(mockParent.postMessage).toHaveBeenCalledWith({
456
- html: expect.stringContaining('<!DOCTYPE html>'),
457
- type: 'result'
458
- });
459
- });
460
- test('should handle isApp=false explicitly', async ()=>{
461
- const options = {
462
- isApp: false,
463
- studioRootPath: testStudioPath
464
- };
465
- await renderDocumentWorker(mockParent, options);
466
- expect(mockRenderToStaticMarkup).toHaveBeenCalled();
467
- expect(mockParent.postMessage).toHaveBeenCalledWith({
468
- html: expect.stringContaining('<!DOCTYPE html>'),
469
- type: 'result'
470
- });
471
- });
472
- });
473
- describe('integration tests', ()=>{
474
- test('should maintain correct call order and data flow', async ()=>{
475
- const options = {
476
- importMap: {
477
- imports: {
478
- react: 'https://esm.sh/react'
479
- }
480
- },
481
- isApp: true,
482
- props: {
483
- basePath: '/studio'
484
- },
485
- studioRootPath: testStudioPath
486
- };
487
- await renderDocumentWorker(mockParent, options);
488
- // Verify the complete integration flow
489
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
490
- props: expect.objectContaining({
491
- basePath: '/studio',
492
- entryPath: './.sanity/runtime/app.js'
493
- })
494
- }));
495
- expect(mockParent.postMessage).toHaveBeenCalledWith({
496
- html: expect.stringContaining('<!DOCTYPE html>'),
497
- type: 'result'
498
- });
499
- });
500
- test('should handle all parameters in correct order with realistic data flow', async ()=>{
501
- const options = {
502
- importMap: {
503
- imports: {
504
- '@test/module': './test-module.js'
505
- }
506
- },
507
- isApp: false,
508
- props: {
509
- basePath: '/integration',
510
- css: [
511
- 'test.css'
512
- ],
513
- entryPath: './test-entry.js'
514
- },
515
- studioRootPath: testStudioPath
516
- };
517
- await renderDocumentWorker(mockParent, options);
518
- // Verify that all parameters flow through the integration correctly
519
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
520
- props: expect.objectContaining({
521
- basePath: '/integration',
522
- css: [
523
- '/integration/test.css'
524
- ],
525
- entryPath: './test-entry.js'
526
- })
527
- }));
528
- expect(mockParent.postMessage).toHaveBeenCalledWith({
529
- html: expect.stringContaining('<!DOCTYPE html>'),
530
- type: 'result'
531
- });
532
- });
533
- test('should process CSS paths correctly with different basePath scenarios', async ()=>{
534
- const testCases = [
535
- {
536
- basePath: '/studio',
537
- css: [
538
- 'style.css',
539
- '/absolute.css'
540
- ],
541
- expected: [
542
- '/studio/style.css',
543
- '/studio/absolute.css'
544
- ]
545
- },
546
- {
547
- basePath: '/studio/',
548
- css: [
549
- 'style.css',
550
- '/absolute.css'
551
- ],
552
- expected: [
553
- '/studio/style.css',
554
- '/studio/absolute.css'
555
- ]
556
- },
557
- {
558
- basePath: 'studio',
559
- css: [
560
- 'style.css'
561
- ],
562
- expected: [
563
- '/studio/style.css'
564
- ]
565
- }
566
- ];
567
- for (const testCase of testCases){
568
- vi.clearAllMocks();
569
- const options = {
570
- props: {
571
- basePath: testCase.basePath,
572
- css: testCase.css
573
- },
574
- studioRootPath: testStudioPath
575
- };
576
- await renderDocumentWorker(mockParent, options);
577
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
578
- props: expect.objectContaining({
579
- css: testCase.expected
580
- })
581
- }));
582
- }
583
- });
584
- test('should include import map script tags when importMap is provided', async ()=>{
585
- const importMap = {
586
- imports: {
587
- react: 'https://sanity-cdn.com/react@18/t1640995000',
588
- 'react-dom': 'https://esm.sh/react-dom@18'
589
- }
590
- };
591
- const options = {
592
- importMap,
593
- studioRootPath: testStudioPath
594
- };
595
- await renderDocumentWorker(mockParent, options);
596
- expect(mockParent.postMessage).toHaveBeenCalledWith({
597
- html: expect.stringContaining('__imports'),
598
- type: 'result'
599
- });
600
- // Check that the result HTML contains the import map JSON
601
- const mockPostMessage = vi.mocked(mockParent.postMessage);
602
- const resultCall = mockPostMessage.mock.calls.find((call)=>{
603
- const message = call[0];
604
- return message.type === 'result';
605
- });
606
- const resultMessage = resultCall?.[0];
607
- expect(resultMessage.html).toContain(JSON.stringify(importMap));
608
- expect(resultMessage.html).toContain('auto-generated script to add import map with timestamp');
609
- });
610
- test('should not include import map scripts when importMap is not provided', async ()=>{
611
- const options = {
612
- studioRootPath: testStudioPath
613
- };
614
- await renderDocumentWorker(mockParent, options);
615
- const mockPostMessage = vi.mocked(mockParent.postMessage);
616
- const resultCall = mockPostMessage.mock.calls.find((call)=>{
617
- const message = call[0];
618
- return message.type === 'result';
619
- });
620
- const resultMessage = resultCall?.[0];
621
- expect(resultMessage.html).not.toContain('__imports');
622
- expect(resultMessage.html).not.toContain('auto-generated script to add import map with timestamp');
623
- });
624
- test('should work with user-defined component and complex props', async ()=>{
625
- await createTestDocumentComponent(validDocumentComponent);
626
- const props = {
627
- basePath: '/custom',
628
- css: [
629
- 'custom.css',
630
- 'theme.css'
631
- ],
632
- entryPath: './custom-entry.js'
633
- };
634
- const options = {
635
- props,
636
- studioRootPath: testStudioPath
637
- };
638
- await renderDocumentWorker(mockParent, options);
639
- expect(mockRenderToStaticMarkup).toHaveBeenCalledWith(expect.objectContaining({
640
- props: expect.objectContaining({
641
- basePath: '/custom',
642
- css: [
643
- '/custom/custom.css',
644
- '/custom/theme.css'
645
- ],
646
- entryPath: './custom-entry.js'
647
- })
648
- }));
649
- expect(mockParent.postMessage).toHaveBeenCalledWith({
650
- html: expect.stringContaining('<!DOCTYPE html>'),
651
- type: 'result'
652
- });
653
- });
654
- });
655
- });
656
-
657
- //# sourceMappingURL=renderDocumentWorker.test.js.map