@sanity/cli 6.0.0-alpha.5 → 6.0.0-alpha.7

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