@sanity/cli 6.0.0-alpha.5 → 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 (461) 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/init/remoteTemplate.js +1 -1
  14. package/dist/actions/init/remoteTemplate.js.map +1 -1
  15. package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
  16. package/dist/actions/manifest/extractAppManifest.js +51 -0
  17. package/dist/actions/manifest/extractAppManifest.js.map +1 -0
  18. package/dist/actions/manifest/extractManifest.js +1 -1
  19. package/dist/actions/manifest/extractManifest.js.map +1 -1
  20. package/dist/actions/manifest/types.d.ts +6 -1
  21. package/dist/actions/manifest/types.js.map +1 -1
  22. package/dist/actions/media/importAspects.js +2 -1
  23. package/dist/actions/media/importAspects.js.map +1 -1
  24. package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
  25. package/dist/commands/dataset/create.d.ts +0 -2
  26. package/dist/commands/dataset/create.js +8 -54
  27. package/dist/commands/dataset/create.js.map +1 -1
  28. package/dist/commands/debug.js +5 -9
  29. package/dist/commands/debug.js.map +1 -1
  30. package/dist/commands/init.d.ts +6 -1
  31. package/dist/commands/init.js +358 -20
  32. package/dist/commands/init.js.map +1 -1
  33. package/dist/commands/manifest/extract.js +7 -8
  34. package/dist/commands/manifest/extract.js.map +1 -1
  35. package/dist/config/createCliConfig.d.ts +9 -0
  36. package/dist/prompts/init/promptForTypescript.d.ts +2 -0
  37. package/dist/prompts/init/promptForTypescript.js +15 -0
  38. package/dist/prompts/init/promptForTypescript.js.map +1 -0
  39. package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
  40. package/dist/prompts/promptForDatasetAclMode.js +27 -0
  41. package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
  42. package/dist/prompts/promptForDatasetName.d.ts +1 -1
  43. package/dist/prompts/promptForDatasetName.js +4 -1
  44. package/dist/prompts/promptForDatasetName.js.map +1 -1
  45. package/dist/services/organizations.d.ts +3 -1
  46. package/dist/services/organizations.js +2 -1
  47. package/dist/services/organizations.js.map +1 -1
  48. package/dist/services/user.d.ts +5 -0
  49. package/dist/services/user.js +12 -1
  50. package/dist/services/user.js.map +1 -1
  51. package/dist/services/userApplications.d.ts +3 -1
  52. package/dist/services/userApplications.js +5 -1
  53. package/dist/services/userApplications.js.map +1 -1
  54. package/oclif.manifest.json +113 -113
  55. package/package.json +16 -12
  56. package/templates/app-quickstart/src/App.css +20 -0
  57. package/templates/app-quickstart/src/App.tsx +25 -0
  58. package/templates/app-quickstart/src/ExampleComponent.css +90 -0
  59. package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
  60. package/templates/app-sanity-ui/src/App.tsx +34 -0
  61. package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
  62. package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
  63. package/templates/blog/README.md +11 -0
  64. package/templates/blog/schemaTypes/author.js +50 -0
  65. package/templates/blog/schemaTypes/blockContent.js +67 -0
  66. package/templates/blog/schemaTypes/category.js +19 -0
  67. package/templates/blog/schemaTypes/index.js +6 -0
  68. package/templates/blog/schemaTypes/post.js +65 -0
  69. package/templates/blog/static/.gitkeep +1 -0
  70. package/templates/clean/README.md +9 -0
  71. package/templates/clean/schemaTypes/index.js +1 -0
  72. package/templates/clean/static/.gitkeep +1 -0
  73. package/templates/ecommerce/README.md +11 -0
  74. package/templates/ecommerce/plugins/.gitkeep +1 -0
  75. package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
  76. package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
  77. package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
  78. package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
  79. package/templates/ecommerce/schemaTypes/category.js +39 -0
  80. package/templates/ecommerce/schemaTypes/index.js +23 -0
  81. package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
  82. package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
  83. package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
  84. package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
  85. package/templates/ecommerce/schemaTypes/product.js +83 -0
  86. package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
  87. package/templates/ecommerce/schemaTypes/vendor.js +39 -0
  88. package/templates/ecommerce/static/.gitkeep +1 -0
  89. package/templates/get-started/README.md +9 -0
  90. package/templates/get-started/plugins/.gitkeep +1 -0
  91. package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
  92. package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
  93. package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
  94. package/templates/get-started/schemaTypes/index.ts +1 -0
  95. package/templates/get-started/static/.gitkeep +1 -0
  96. package/templates/moviedb/README.md +10 -0
  97. package/templates/moviedb/schemaTypes/blockContent.js +67 -0
  98. package/templates/moviedb/schemaTypes/castMember.js +37 -0
  99. package/templates/moviedb/schemaTypes/crewMember.js +52 -0
  100. package/templates/moviedb/schemaTypes/index.js +22 -0
  101. package/templates/moviedb/schemaTypes/movie.js +85 -0
  102. package/templates/moviedb/schemaTypes/person.js +37 -0
  103. package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
  104. package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
  105. package/templates/moviedb/schemaTypes/screening.js +81 -0
  106. package/templates/moviedb/static/.gitkeep +1 -0
  107. package/templates/quickstart/README.md +9 -0
  108. package/templates/quickstart/schemaTypes/index.js +1 -0
  109. package/templates/quickstart/static/.gitkeep +1 -0
  110. package/templates/shared/gitignore.txt +29 -0
  111. package/templates/shared/tsconfig.json +17 -0
  112. package/templates/shopify/README.md +85 -0
  113. package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
  114. package/templates/shopify/components/icons/Shopify.tsx +20 -0
  115. package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
  116. package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
  117. package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
  118. package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
  119. package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
  120. package/templates/shopify/components/media/ColorTheme.tsx +38 -0
  121. package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
  122. package/templates/shopify/components/studio/Navbar.tsx +29 -0
  123. package/templates/shopify/constants.ts +61 -0
  124. package/templates/shopify/docs/features.md +158 -0
  125. package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
  126. package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
  127. package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
  128. package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
  129. package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
  130. package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
  131. package/templates/shopify/schemaTypes/documents/page.ts +70 -0
  132. package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
  133. package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
  134. package/templates/shopify/schemaTypes/index.ts +108 -0
  135. package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
  136. package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
  137. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
  138. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
  139. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
  140. package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
  141. package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
  142. package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
  143. package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
  144. package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
  145. package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
  146. package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
  147. package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
  148. package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
  149. package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
  150. package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
  151. package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
  152. package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
  153. package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
  154. package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
  155. package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
  156. package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
  157. package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
  158. package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
  159. package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
  160. package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
  161. package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
  162. package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
  163. package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
  164. package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
  165. package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
  166. package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
  167. package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
  168. package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
  169. package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
  170. package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
  171. package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
  172. package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
  173. package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
  174. package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
  175. package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
  176. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
  177. package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
  178. package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
  179. package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
  180. package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
  181. package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
  182. package/templates/shopify/static/.gitkeep +1 -0
  183. package/templates/shopify/structure/collectionStructure.ts +9 -0
  184. package/templates/shopify/structure/colorThemeStructure.ts +9 -0
  185. package/templates/shopify/structure/homeStructure.ts +9 -0
  186. package/templates/shopify/structure/index.ts +57 -0
  187. package/templates/shopify/structure/pageStructure.ts +11 -0
  188. package/templates/shopify/structure/productStructure.ts +51 -0
  189. package/templates/shopify/structure/settingStructure.ts +9 -0
  190. package/templates/shopify/utils/blocksToText.ts +20 -0
  191. package/templates/shopify/utils/defineStructure.ts +11 -0
  192. package/templates/shopify/utils/getPriceRange.ts +24 -0
  193. package/templates/shopify/utils/shopifyUrls.ts +22 -0
  194. package/templates/shopify/utils/validateSlug.ts +18 -0
  195. package/templates/shopify-online-storefront/README.md +54 -0
  196. package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
  197. package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
  198. package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
  199. package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
  200. package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
  201. package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
  202. package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
  203. package/templates/shopify-online-storefront/constants.ts +18 -0
  204. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
  205. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
  206. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
  207. package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
  208. package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
  209. package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
  210. package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
  211. package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
  212. package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
  213. package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
  214. package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
  215. package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
  216. package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
  217. package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
  218. package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
  219. package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
  220. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
  221. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
  222. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
  223. package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
  224. package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
  225. package/templates/shopify-online-storefront/structure/index.ts +37 -0
  226. package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
  227. package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
  228. package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
  229. package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
  230. package/dist/actions/build/__tests__/buildApp.test.js +0 -367
  231. package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
  232. package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
  233. package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
  234. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
  235. package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
  236. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
  237. package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
  238. package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
  239. package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
  240. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
  241. package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
  242. package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
  243. package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
  244. package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
  245. package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
  246. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
  247. package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
  248. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
  249. package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
  250. package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
  251. package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
  252. package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
  253. package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
  254. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
  255. package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
  256. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
  257. package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
  258. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
  259. package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
  260. package/dist/actions/media/__tests__/importMedia.test.js +0 -182
  261. package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
  262. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
  263. package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
  264. package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
  265. package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
  266. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
  267. package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
  268. package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
  269. package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
  270. package/dist/commands/__tests__/blueprints.test.js +0 -54
  271. package/dist/commands/__tests__/blueprints.test.js.map +0 -1
  272. package/dist/commands/__tests__/build.test.js +0 -132
  273. package/dist/commands/__tests__/build.test.js.map +0 -1
  274. package/dist/commands/__tests__/codemod.test.js +0 -271
  275. package/dist/commands/__tests__/codemod.test.js.map +0 -1
  276. package/dist/commands/__tests__/debug.test.js +0 -590
  277. package/dist/commands/__tests__/debug.test.js.map +0 -1
  278. package/dist/commands/__tests__/deploy.test.js +0 -1945
  279. package/dist/commands/__tests__/deploy.test.js.map +0 -1
  280. package/dist/commands/__tests__/dev.test.js +0 -453
  281. package/dist/commands/__tests__/dev.test.js.map +0 -1
  282. package/dist/commands/__tests__/exec.test.js +0 -207
  283. package/dist/commands/__tests__/exec.test.js.map +0 -1
  284. package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
  285. package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
  286. package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
  287. package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
  288. package/dist/commands/__tests__/init/init.plan.test.js +0 -279
  289. package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
  290. package/dist/commands/__tests__/init/init.setup.test.js +0 -335
  291. package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
  292. package/dist/commands/__tests__/install.test.js +0 -282
  293. package/dist/commands/__tests__/install.test.js.map +0 -1
  294. package/dist/commands/__tests__/learn.test.js +0 -29
  295. package/dist/commands/__tests__/learn.test.js.map +0 -1
  296. package/dist/commands/__tests__/logout.test.js +0 -91
  297. package/dist/commands/__tests__/logout.test.js.map +0 -1
  298. package/dist/commands/__tests__/manage.test.js +0 -110
  299. package/dist/commands/__tests__/manage.test.js.map +0 -1
  300. package/dist/commands/__tests__/migration.test.js +0 -119
  301. package/dist/commands/__tests__/migration.test.js.map +0 -1
  302. package/dist/commands/__tests__/preview.test.js +0 -261
  303. package/dist/commands/__tests__/preview.test.js.map +0 -1
  304. package/dist/commands/__tests__/start.test.js +0 -253
  305. package/dist/commands/__tests__/start.test.js.map +0 -1
  306. package/dist/commands/__tests__/undeploy.test.js +0 -382
  307. package/dist/commands/__tests__/undeploy.test.js.map +0 -1
  308. package/dist/commands/__tests__/versions.test.js +0 -142
  309. package/dist/commands/__tests__/versions.test.js.map +0 -1
  310. package/dist/commands/backup/__tests__/disable.test.js +0 -204
  311. package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
  312. package/dist/commands/backup/__tests__/download.test.js +0 -768
  313. package/dist/commands/backup/__tests__/download.test.js.map +0 -1
  314. package/dist/commands/backup/__tests__/enable.test.js +0 -286
  315. package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
  316. package/dist/commands/backup/__tests__/list.test.js +0 -330
  317. package/dist/commands/backup/__tests__/list.test.js.map +0 -1
  318. package/dist/commands/cors/__tests__/add.test.js +0 -376
  319. package/dist/commands/cors/__tests__/add.test.js.map +0 -1
  320. package/dist/commands/cors/__tests__/delete.test.js +0 -308
  321. package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
  322. package/dist/commands/cors/__tests__/list.test.js +0 -241
  323. package/dist/commands/cors/__tests__/list.test.js.map +0 -1
  324. package/dist/commands/dataset/__tests__/copy.test.js +0 -628
  325. package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
  326. package/dist/commands/dataset/__tests__/create.test.js +0 -342
  327. package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
  328. package/dist/commands/dataset/__tests__/delete.test.js +0 -231
  329. package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
  330. package/dist/commands/dataset/__tests__/export.test.js +0 -601
  331. package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
  332. package/dist/commands/dataset/__tests__/import.test.js +0 -53
  333. package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
  334. package/dist/commands/dataset/__tests__/list.test.js +0 -216
  335. package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
  336. package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
  337. package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
  338. package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
  339. package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
  340. package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
  341. package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
  342. package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
  343. package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
  344. package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
  345. package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
  346. package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
  347. package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
  348. package/dist/commands/docs/__tests__/browse.test.js +0 -29
  349. package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
  350. package/dist/commands/docs/__tests__/read.test.js +0 -78
  351. package/dist/commands/docs/__tests__/read.test.js.map +0 -1
  352. package/dist/commands/docs/__tests__/search.test.js +0 -255
  353. package/dist/commands/docs/__tests__/search.test.js.map +0 -1
  354. package/dist/commands/documents/__tests__/create.test.js +0 -1030
  355. package/dist/commands/documents/__tests__/create.test.js.map +0 -1
  356. package/dist/commands/documents/__tests__/delete.test.js +0 -300
  357. package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
  358. package/dist/commands/documents/__tests__/get.test.js +0 -182
  359. package/dist/commands/documents/__tests__/get.test.js.map +0 -1
  360. package/dist/commands/documents/__tests__/query.test.js +0 -300
  361. package/dist/commands/documents/__tests__/query.test.js.map +0 -1
  362. package/dist/commands/documents/__tests__/validate.test.js +0 -249
  363. package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
  364. package/dist/commands/graphql/__tests__/list.test.js +0 -240
  365. package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
  366. package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
  367. package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
  368. package/dist/commands/hook/__tests__/attempt.test.js +0 -275
  369. package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
  370. package/dist/commands/hook/__tests__/create.test.js +0 -119
  371. package/dist/commands/hook/__tests__/create.test.js.map +0 -1
  372. package/dist/commands/hook/__tests__/delete.test.js +0 -233
  373. package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
  374. package/dist/commands/hook/__tests__/list.test.js +0 -145
  375. package/dist/commands/hook/__tests__/list.test.js.map +0 -1
  376. package/dist/commands/hook/__tests__/logs.test.js +0 -798
  377. package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
  378. package/dist/commands/manifest/__tests__/extract.test.js +0 -132
  379. package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
  380. package/dist/commands/mcp/__tests__/configure.test.js +0 -397
  381. package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
  382. package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
  383. package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
  384. package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
  385. package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
  386. package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
  387. package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
  388. package/dist/commands/media/__tests__/export.test.js +0 -697
  389. package/dist/commands/media/__tests__/export.test.js.map +0 -1
  390. package/dist/commands/media/__tests__/import.test.js +0 -347
  391. package/dist/commands/media/__tests__/import.test.js.map +0 -1
  392. package/dist/commands/openapi/__tests__/get.test.js +0 -149
  393. package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
  394. package/dist/commands/openapi/__tests__/list.test.js +0 -113
  395. package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
  396. package/dist/commands/projects/__tests__/list.test.js +0 -154
  397. package/dist/commands/projects/__tests__/list.test.js.map +0 -1
  398. package/dist/commands/schema/__tests__/delete.test.js +0 -454
  399. package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
  400. package/dist/commands/schema/__tests__/deploy.test.js +0 -348
  401. package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
  402. package/dist/commands/schema/__tests__/extract.test.js +0 -121
  403. package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
  404. package/dist/commands/schema/__tests__/list.test.js +0 -399
  405. package/dist/commands/schema/__tests__/list.test.js.map +0 -1
  406. package/dist/commands/schema/__tests__/validate.test.js +0 -121
  407. package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
  408. package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
  409. package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
  410. package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
  411. package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
  412. package/dist/commands/telemetry/__tests__/status.test.js +0 -155
  413. package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
  414. package/dist/commands/tokens/__tests__/add.test.js +0 -435
  415. package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
  416. package/dist/commands/tokens/__tests__/delete.test.js +0 -405
  417. package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
  418. package/dist/commands/tokens/__tests__/list.test.js +0 -395
  419. package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
  420. package/dist/commands/users/__tests__/invite.test.js +0 -362
  421. package/dist/commands/users/__tests__/invite.test.js.map +0 -1
  422. package/dist/commands/users/__tests__/list.test.js +0 -407
  423. package/dist/commands/users/__tests__/list.test.js.map +0 -1
  424. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
  425. package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
  426. package/dist/services/__tests__/datasetAliases.test.js +0 -131
  427. package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
  428. package/dist/services/__tests__/datasets.test.js +0 -436
  429. package/dist/services/__tests__/datasets.test.js.map +0 -1
  430. package/dist/services/__tests__/graphql.test.js +0 -43
  431. package/dist/services/__tests__/graphql.test.js.map +0 -1
  432. package/dist/services/__tests__/mediaLibraries.test.js +0 -88
  433. package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
  434. package/dist/services/__tests__/projects.test.js +0 -41
  435. package/dist/services/__tests__/projects.test.js.map +0 -1
  436. package/dist/services/__tests__/userApplications.test.js +0 -113
  437. package/dist/services/__tests__/userApplications.test.js.map +0 -1
  438. package/dist/util/__tests__/appId.test.js +0 -31
  439. package/dist/util/__tests__/appId.test.js.map +0 -1
  440. package/dist/util/__tests__/cliClient.test.js +0 -184
  441. package/dist/util/__tests__/cliClient.test.js.map +0 -1
  442. package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
  443. package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
  444. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
  445. package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
  446. package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
  447. package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
  448. package/dist/util/__tests__/getCliVersion.test.js +0 -28
  449. package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
  450. package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
  451. package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
  452. package/dist/util/__tests__/getWorkspace.test.js +0 -37
  453. package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
  454. package/dist/util/__tests__/readPackageJson.test.js +0 -69
  455. package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
  456. package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
  457. package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
  458. package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
  459. package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
  460. package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
  461. 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