@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.
- package/dist/actions/dataset/create.d.ts +49 -0
- package/dist/actions/dataset/create.js +48 -0
- package/dist/actions/dataset/create.js.map +1 -0
- package/dist/actions/dataset/determineDatasetAclMode.d.ts +37 -0
- package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
- package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
- package/dist/actions/debug/gatherDebugInfo.js +15 -21
- package/dist/actions/debug/gatherDebugInfo.js.map +1 -1
- package/dist/actions/debug/types.d.ts +0 -2
- package/dist/actions/debug/types.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +13 -0
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/init/remoteTemplate.js +1 -1
- package/dist/actions/init/remoteTemplate.js.map +1 -1
- package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
- package/dist/actions/manifest/extractAppManifest.js +51 -0
- package/dist/actions/manifest/extractAppManifest.js.map +1 -0
- package/dist/actions/manifest/extractManifest.js +1 -1
- package/dist/actions/manifest/extractManifest.js.map +1 -1
- package/dist/actions/manifest/types.d.ts +6 -1
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/media/importAspects.js +2 -1
- package/dist/actions/media/importAspects.js.map +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
- package/dist/commands/dataset/create.d.ts +0 -2
- package/dist/commands/dataset/create.js +8 -54
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/debug.js +5 -9
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/init.d.ts +6 -1
- package/dist/commands/init.js +358 -20
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/manifest/extract.js +7 -8
- package/dist/commands/manifest/extract.js.map +1 -1
- package/dist/config/createCliConfig.d.ts +9 -0
- package/dist/prompts/init/promptForTypescript.d.ts +2 -0
- package/dist/prompts/init/promptForTypescript.js +15 -0
- package/dist/prompts/init/promptForTypescript.js.map +1 -0
- package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
- package/dist/prompts/promptForDatasetAclMode.js +27 -0
- package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
- package/dist/prompts/promptForDatasetName.d.ts +1 -1
- package/dist/prompts/promptForDatasetName.js +4 -1
- package/dist/prompts/promptForDatasetName.js.map +1 -1
- package/dist/services/organizations.d.ts +3 -1
- package/dist/services/organizations.js +2 -1
- package/dist/services/organizations.js.map +1 -1
- package/dist/services/user.d.ts +5 -0
- package/dist/services/user.js +12 -1
- package/dist/services/user.js.map +1 -1
- package/dist/services/userApplications.d.ts +3 -1
- package/dist/services/userApplications.js +5 -1
- package/dist/services/userApplications.js.map +1 -1
- package/oclif.manifest.json +113 -113
- package/package.json +16 -12
- package/templates/app-quickstart/src/App.css +20 -0
- package/templates/app-quickstart/src/App.tsx +25 -0
- package/templates/app-quickstart/src/ExampleComponent.css +90 -0
- package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
- package/templates/app-sanity-ui/src/App.tsx +34 -0
- package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
- package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
- package/templates/blog/README.md +11 -0
- package/templates/blog/schemaTypes/author.js +50 -0
- package/templates/blog/schemaTypes/blockContent.js +67 -0
- package/templates/blog/schemaTypes/category.js +19 -0
- package/templates/blog/schemaTypes/index.js +6 -0
- package/templates/blog/schemaTypes/post.js +65 -0
- package/templates/blog/static/.gitkeep +1 -0
- package/templates/clean/README.md +9 -0
- package/templates/clean/schemaTypes/index.js +1 -0
- package/templates/clean/static/.gitkeep +1 -0
- package/templates/ecommerce/README.md +11 -0
- package/templates/ecommerce/plugins/.gitkeep +1 -0
- package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
- package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
- package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
- package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
- package/templates/ecommerce/schemaTypes/category.js +39 -0
- package/templates/ecommerce/schemaTypes/index.js +23 -0
- package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
- package/templates/ecommerce/schemaTypes/product.js +83 -0
- package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
- package/templates/ecommerce/schemaTypes/vendor.js +39 -0
- package/templates/ecommerce/static/.gitkeep +1 -0
- package/templates/get-started/README.md +9 -0
- package/templates/get-started/plugins/.gitkeep +1 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
- package/templates/get-started/schemaTypes/index.ts +1 -0
- package/templates/get-started/static/.gitkeep +1 -0
- package/templates/moviedb/README.md +10 -0
- package/templates/moviedb/schemaTypes/blockContent.js +67 -0
- package/templates/moviedb/schemaTypes/castMember.js +37 -0
- package/templates/moviedb/schemaTypes/crewMember.js +52 -0
- package/templates/moviedb/schemaTypes/index.js +22 -0
- package/templates/moviedb/schemaTypes/movie.js +85 -0
- package/templates/moviedb/schemaTypes/person.js +37 -0
- package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
- package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
- package/templates/moviedb/schemaTypes/screening.js +81 -0
- package/templates/moviedb/static/.gitkeep +1 -0
- package/templates/quickstart/README.md +9 -0
- package/templates/quickstart/schemaTypes/index.js +1 -0
- package/templates/quickstart/static/.gitkeep +1 -0
- package/templates/shared/gitignore.txt +29 -0
- package/templates/shared/tsconfig.json +17 -0
- package/templates/shopify/README.md +85 -0
- package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
- package/templates/shopify/components/icons/Shopify.tsx +20 -0
- package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
- package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
- package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
- package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
- package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
- package/templates/shopify/components/media/ColorTheme.tsx +38 -0
- package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
- package/templates/shopify/components/studio/Navbar.tsx +29 -0
- package/templates/shopify/constants.ts +61 -0
- package/templates/shopify/docs/features.md +158 -0
- package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
- package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
- package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
- package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
- package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
- package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
- package/templates/shopify/schemaTypes/documents/page.ts +70 -0
- package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
- package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
- package/templates/shopify/schemaTypes/index.ts +108 -0
- package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
- package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
- package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
- package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
- package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
- package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
- package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
- package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
- package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
- package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
- package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
- package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
- package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
- package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
- package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
- package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
- package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
- package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
- package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
- package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
- package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
- package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
- package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
- package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
- package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
- package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
- package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
- package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
- package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
- package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
- package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
- package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
- package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
- package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
- package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
- package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
- package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
- package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
- package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
- package/templates/shopify/static/.gitkeep +1 -0
- package/templates/shopify/structure/collectionStructure.ts +9 -0
- package/templates/shopify/structure/colorThemeStructure.ts +9 -0
- package/templates/shopify/structure/homeStructure.ts +9 -0
- package/templates/shopify/structure/index.ts +57 -0
- package/templates/shopify/structure/pageStructure.ts +11 -0
- package/templates/shopify/structure/productStructure.ts +51 -0
- package/templates/shopify/structure/settingStructure.ts +9 -0
- package/templates/shopify/utils/blocksToText.ts +20 -0
- package/templates/shopify/utils/defineStructure.ts +11 -0
- package/templates/shopify/utils/getPriceRange.ts +24 -0
- package/templates/shopify/utils/shopifyUrls.ts +22 -0
- package/templates/shopify/utils/validateSlug.ts +18 -0
- package/templates/shopify-online-storefront/README.md +54 -0
- package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
- package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
- package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
- package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
- package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
- package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
- package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
- package/templates/shopify-online-storefront/constants.ts +18 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
- package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
- package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
- package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
- package/templates/shopify-online-storefront/structure/index.ts +37 -0
- package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
- package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
- package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
- package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
- package/dist/actions/build/__tests__/buildApp.test.js +0 -367
- package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
- package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
- package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
- package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
- package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
- package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
- package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
- package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
- package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
- package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
- package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
- package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
- package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
- package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
- package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
- package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
- package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
- package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
- package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
- package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
- package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
- package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
- package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
- package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
- package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
- package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
- package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
- package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
- package/dist/actions/media/__tests__/importMedia.test.js +0 -182
- package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
- package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
- package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
- package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
- package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
- package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
- package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
- package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
- package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
- package/dist/commands/__tests__/blueprints.test.js +0 -54
- package/dist/commands/__tests__/blueprints.test.js.map +0 -1
- package/dist/commands/__tests__/build.test.js +0 -132
- package/dist/commands/__tests__/build.test.js.map +0 -1
- package/dist/commands/__tests__/codemod.test.js +0 -271
- package/dist/commands/__tests__/codemod.test.js.map +0 -1
- package/dist/commands/__tests__/debug.test.js +0 -590
- package/dist/commands/__tests__/debug.test.js.map +0 -1
- package/dist/commands/__tests__/deploy.test.js +0 -1945
- package/dist/commands/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/__tests__/dev.test.js +0 -453
- package/dist/commands/__tests__/dev.test.js.map +0 -1
- package/dist/commands/__tests__/exec.test.js +0 -207
- package/dist/commands/__tests__/exec.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
- package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
- package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.plan.test.js +0 -279
- package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.setup.test.js +0 -335
- package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
- package/dist/commands/__tests__/install.test.js +0 -282
- package/dist/commands/__tests__/install.test.js.map +0 -1
- package/dist/commands/__tests__/learn.test.js +0 -29
- package/dist/commands/__tests__/learn.test.js.map +0 -1
- package/dist/commands/__tests__/logout.test.js +0 -91
- package/dist/commands/__tests__/logout.test.js.map +0 -1
- package/dist/commands/__tests__/manage.test.js +0 -110
- package/dist/commands/__tests__/manage.test.js.map +0 -1
- package/dist/commands/__tests__/migration.test.js +0 -119
- package/dist/commands/__tests__/migration.test.js.map +0 -1
- package/dist/commands/__tests__/preview.test.js +0 -261
- package/dist/commands/__tests__/preview.test.js.map +0 -1
- package/dist/commands/__tests__/start.test.js +0 -253
- package/dist/commands/__tests__/start.test.js.map +0 -1
- package/dist/commands/__tests__/undeploy.test.js +0 -382
- package/dist/commands/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/__tests__/versions.test.js +0 -142
- package/dist/commands/__tests__/versions.test.js.map +0 -1
- package/dist/commands/backup/__tests__/disable.test.js +0 -204
- package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/download.test.js +0 -768
- package/dist/commands/backup/__tests__/download.test.js.map +0 -1
- package/dist/commands/backup/__tests__/enable.test.js +0 -286
- package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/list.test.js +0 -330
- package/dist/commands/backup/__tests__/list.test.js.map +0 -1
- package/dist/commands/cors/__tests__/add.test.js +0 -376
- package/dist/commands/cors/__tests__/add.test.js.map +0 -1
- package/dist/commands/cors/__tests__/delete.test.js +0 -308
- package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
- package/dist/commands/cors/__tests__/list.test.js +0 -241
- package/dist/commands/cors/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/copy.test.js +0 -628
- package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/create.test.js +0 -342
- package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/delete.test.js +0 -231
- package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/export.test.js +0 -601
- package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/import.test.js +0 -53
- package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/list.test.js +0 -216
- package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
- package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
- package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
- package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
- package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
- package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
- package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
- package/dist/commands/docs/__tests__/browse.test.js +0 -29
- package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
- package/dist/commands/docs/__tests__/read.test.js +0 -78
- package/dist/commands/docs/__tests__/read.test.js.map +0 -1
- package/dist/commands/docs/__tests__/search.test.js +0 -255
- package/dist/commands/docs/__tests__/search.test.js.map +0 -1
- package/dist/commands/documents/__tests__/create.test.js +0 -1030
- package/dist/commands/documents/__tests__/create.test.js.map +0 -1
- package/dist/commands/documents/__tests__/delete.test.js +0 -300
- package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
- package/dist/commands/documents/__tests__/get.test.js +0 -182
- package/dist/commands/documents/__tests__/get.test.js.map +0 -1
- package/dist/commands/documents/__tests__/query.test.js +0 -300
- package/dist/commands/documents/__tests__/query.test.js.map +0 -1
- package/dist/commands/documents/__tests__/validate.test.js +0 -249
- package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/list.test.js +0 -240
- package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
- package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/hook/__tests__/attempt.test.js +0 -275
- package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
- package/dist/commands/hook/__tests__/create.test.js +0 -119
- package/dist/commands/hook/__tests__/create.test.js.map +0 -1
- package/dist/commands/hook/__tests__/delete.test.js +0 -233
- package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
- package/dist/commands/hook/__tests__/list.test.js +0 -145
- package/dist/commands/hook/__tests__/list.test.js.map +0 -1
- package/dist/commands/hook/__tests__/logs.test.js +0 -798
- package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
- package/dist/commands/manifest/__tests__/extract.test.js +0 -132
- package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
- package/dist/commands/mcp/__tests__/configure.test.js +0 -397
- package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
- package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
- package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
- package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
- package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/export.test.js +0 -697
- package/dist/commands/media/__tests__/export.test.js.map +0 -1
- package/dist/commands/media/__tests__/import.test.js +0 -347
- package/dist/commands/media/__tests__/import.test.js.map +0 -1
- package/dist/commands/openapi/__tests__/get.test.js +0 -149
- package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
- package/dist/commands/openapi/__tests__/list.test.js +0 -113
- package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
- package/dist/commands/projects/__tests__/list.test.js +0 -154
- package/dist/commands/projects/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/delete.test.js +0 -454
- package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
- package/dist/commands/schema/__tests__/deploy.test.js +0 -348
- package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/schema/__tests__/extract.test.js +0 -121
- package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
- package/dist/commands/schema/__tests__/list.test.js +0 -399
- package/dist/commands/schema/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/validate.test.js +0 -121
- package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
- package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
- package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/status.test.js +0 -155
- package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/add.test.js +0 -435
- package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/delete.test.js +0 -405
- package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/list.test.js +0 -395
- package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
- package/dist/commands/users/__tests__/invite.test.js +0 -362
- package/dist/commands/users/__tests__/invite.test.js.map +0 -1
- package/dist/commands/users/__tests__/list.test.js +0 -407
- package/dist/commands/users/__tests__/list.test.js.map +0 -1
- package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
- package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
- package/dist/services/__tests__/datasetAliases.test.js +0 -131
- package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
- package/dist/services/__tests__/datasets.test.js +0 -436
- package/dist/services/__tests__/datasets.test.js.map +0 -1
- package/dist/services/__tests__/graphql.test.js +0 -43
- package/dist/services/__tests__/graphql.test.js.map +0 -1
- package/dist/services/__tests__/mediaLibraries.test.js +0 -88
- package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
- package/dist/services/__tests__/projects.test.js +0 -41
- package/dist/services/__tests__/projects.test.js.map +0 -1
- package/dist/services/__tests__/userApplications.test.js +0 -113
- package/dist/services/__tests__/userApplications.test.js.map +0 -1
- package/dist/util/__tests__/appId.test.js +0 -31
- package/dist/util/__tests__/appId.test.js.map +0 -1
- package/dist/util/__tests__/cliClient.test.js +0 -184
- package/dist/util/__tests__/cliClient.test.js.map +0 -1
- package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
- package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
- package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
- package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
- package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
- package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
- package/dist/util/__tests__/getCliVersion.test.js +0 -28
- package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
- package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
- package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
- package/dist/util/__tests__/getWorkspace.test.js +0 -37
- package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
- package/dist/util/__tests__/readPackageJson.test.js +0 -69
- package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
- package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
- package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
- package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
- package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
- package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
- package/dist/util/validation/ __tests__/validateDocuments.test.js.map +0 -1
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
2
|
-
// Imported mocks
|
|
3
|
-
import { determineIsApp } from '../../../util/determineIsApp';
|
|
4
|
-
import { readModuleVersion } from '../../../util/readModuleVersion';
|
|
5
|
-
import { readPackageManifest } from '../../../util/readPackageManifest';
|
|
6
|
-
import { checkRequiredDependencies } from '../checkRequiredDependencies';
|
|
7
|
-
// Mocks
|
|
8
|
-
vi.mock('../../../util/determineIsApp');
|
|
9
|
-
vi.mock('../../../util/readModuleVersion');
|
|
10
|
-
vi.mock('../../../util/readPackageManifest');
|
|
11
|
-
const mockedDetermineIsApp = vi.mocked(determineIsApp);
|
|
12
|
-
const mockedReadModuleVersion = vi.mocked(readModuleVersion);
|
|
13
|
-
const mockedReadPackageManifest = vi.mocked(readPackageManifest);
|
|
14
|
-
describe('#checkRequiredDependencies', ()=>{
|
|
15
|
-
const workDir = '/tmp/test-studio';
|
|
16
|
-
const mockOutput = {
|
|
17
|
-
error: vi.fn(),
|
|
18
|
-
log: vi.fn(),
|
|
19
|
-
print: vi.fn(),
|
|
20
|
-
warn: vi.fn()
|
|
21
|
-
};
|
|
22
|
-
const mockCliConfig = {};
|
|
23
|
-
beforeEach(()=>{
|
|
24
|
-
vi.resetAllMocks();
|
|
25
|
-
});
|
|
26
|
-
test('should return early if the project is an app', async ()=>{
|
|
27
|
-
mockedDetermineIsApp.mockReturnValue(true);
|
|
28
|
-
const result = await checkRequiredDependencies({
|
|
29
|
-
cliConfig: mockCliConfig,
|
|
30
|
-
output: mockOutput,
|
|
31
|
-
workDir
|
|
32
|
-
});
|
|
33
|
-
expect(result).toEqual({
|
|
34
|
-
installedSanityVersion: ''
|
|
35
|
-
});
|
|
36
|
-
expect(mockedReadPackageManifest).not.toHaveBeenCalled();
|
|
37
|
-
});
|
|
38
|
-
test('should call output.error and return empty string if sanity is not installed', async ()=>{
|
|
39
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
40
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
41
|
-
dependencies: {},
|
|
42
|
-
devDependencies: {},
|
|
43
|
-
name: 'test-studio',
|
|
44
|
-
version: '1.0.0'
|
|
45
|
-
});
|
|
46
|
-
mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
|
|
47
|
-
if (module === 'sanity') {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return '6.1.15';
|
|
51
|
-
});
|
|
52
|
-
const result = await checkRequiredDependencies({
|
|
53
|
-
cliConfig: mockCliConfig,
|
|
54
|
-
output: mockOutput,
|
|
55
|
-
workDir
|
|
56
|
-
});
|
|
57
|
-
expect(mockOutput.error).toHaveBeenCalledWith('Failed to read the installed sanity version.', {
|
|
58
|
-
exit: 1
|
|
59
|
-
});
|
|
60
|
-
expect(result).toEqual({
|
|
61
|
-
installedSanityVersion: ''
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
test('should call output.error and return sanity version if styled-components is not declared', async ()=>{
|
|
65
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
66
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
67
|
-
dependencies: {},
|
|
68
|
-
devDependencies: {},
|
|
69
|
-
name: 'test-studio',
|
|
70
|
-
version: '1.0.0'
|
|
71
|
-
});
|
|
72
|
-
mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
|
|
73
|
-
if (module === 'sanity') {
|
|
74
|
-
return '3.0.0';
|
|
75
|
-
}
|
|
76
|
-
return null // styled-components not installed
|
|
77
|
-
;
|
|
78
|
-
});
|
|
79
|
-
const result = await checkRequiredDependencies({
|
|
80
|
-
cliConfig: mockCliConfig,
|
|
81
|
-
output: mockOutput,
|
|
82
|
-
workDir
|
|
83
|
-
});
|
|
84
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Declared dependency `styled-components` is not installed'), {
|
|
85
|
-
exit: 1
|
|
86
|
-
});
|
|
87
|
-
expect(result).toEqual({
|
|
88
|
-
installedSanityVersion: '3.0.0'
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
test('should call output.error and return sanity version for invalid styled-components version range', async ()=>{
|
|
92
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
93
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
94
|
-
dependencies: {
|
|
95
|
-
'styled-components': 'some-invalid-range'
|
|
96
|
-
},
|
|
97
|
-
devDependencies: {},
|
|
98
|
-
name: 'test-studio',
|
|
99
|
-
version: '1.0.0'
|
|
100
|
-
});
|
|
101
|
-
mockedReadModuleVersion.mockResolvedValue('3.0.0'); // for sanity
|
|
102
|
-
const result = await checkRequiredDependencies({
|
|
103
|
-
cliConfig: mockCliConfig,
|
|
104
|
-
output: mockOutput,
|
|
105
|
-
workDir
|
|
106
|
-
});
|
|
107
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Declared dependency `styled-components` has an invalid version range: `some-invalid-range`'), {
|
|
108
|
-
exit: 1
|
|
109
|
-
});
|
|
110
|
-
expect(result).toEqual({
|
|
111
|
-
installedSanityVersion: '3.0.0'
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
test('should warn on incompatible declared styled-components version', async ()=>{
|
|
115
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
116
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
117
|
-
dependencies: {
|
|
118
|
-
'styled-components': '^5.0.0'
|
|
119
|
-
},
|
|
120
|
-
devDependencies: {},
|
|
121
|
-
name: 'test-studio',
|
|
122
|
-
version: '1.0.0'
|
|
123
|
-
});
|
|
124
|
-
mockedReadModuleVersion.mockImplementation(async (_dir, _module)=>{
|
|
125
|
-
return '6.1.15' // both sanity and styled-components installed
|
|
126
|
-
;
|
|
127
|
-
});
|
|
128
|
-
await checkRequiredDependencies({
|
|
129
|
-
cliConfig: mockCliConfig,
|
|
130
|
-
output: mockOutput,
|
|
131
|
-
workDir
|
|
132
|
-
});
|
|
133
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('Declared version of styled-components (^5.0.0) is not compatible with the version required by sanity (^6.1.15)'));
|
|
134
|
-
});
|
|
135
|
-
test('should not warn on complex but valid styled-components version range', async ()=>{
|
|
136
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
137
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
138
|
-
dependencies: {
|
|
139
|
-
'styled-components': '>=6.0.0 <7.0.0'
|
|
140
|
-
},
|
|
141
|
-
devDependencies: {},
|
|
142
|
-
name: 'test-studio',
|
|
143
|
-
version: '1.0.0'
|
|
144
|
-
});
|
|
145
|
-
mockedReadModuleVersion.mockResolvedValue('6.1.15');
|
|
146
|
-
await checkRequiredDependencies({
|
|
147
|
-
cliConfig: mockCliConfig,
|
|
148
|
-
output: mockOutput,
|
|
149
|
-
workDir
|
|
150
|
-
});
|
|
151
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
152
|
-
});
|
|
153
|
-
test('should call output.error and return sanity version if styled-components is declared but not installed', async ()=>{
|
|
154
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
155
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
156
|
-
dependencies: {
|
|
157
|
-
'styled-components': '^6.1.15'
|
|
158
|
-
},
|
|
159
|
-
devDependencies: {},
|
|
160
|
-
name: 'test-studio',
|
|
161
|
-
version: '1.0.0'
|
|
162
|
-
});
|
|
163
|
-
mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
|
|
164
|
-
if (module === 'styled-components') {
|
|
165
|
-
return null;
|
|
166
|
-
}
|
|
167
|
-
return '3.0.0' // sanity version
|
|
168
|
-
;
|
|
169
|
-
});
|
|
170
|
-
const result = await checkRequiredDependencies({
|
|
171
|
-
cliConfig: mockCliConfig,
|
|
172
|
-
output: mockOutput,
|
|
173
|
-
workDir
|
|
174
|
-
});
|
|
175
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Declared dependency `styled-components` is not installed'), {
|
|
176
|
-
exit: 1
|
|
177
|
-
});
|
|
178
|
-
expect(result).toEqual({
|
|
179
|
-
installedSanityVersion: '3.0.0'
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
test('should warn on incompatible installed styled-components version', async ()=>{
|
|
183
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
184
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
185
|
-
dependencies: {
|
|
186
|
-
'styled-components': '^6.1.15'
|
|
187
|
-
},
|
|
188
|
-
devDependencies: {},
|
|
189
|
-
name: 'test-studio',
|
|
190
|
-
version: '1.0.0'
|
|
191
|
-
});
|
|
192
|
-
mockedReadModuleVersion.mockImplementation(async (dir, module)=>{
|
|
193
|
-
if (module === 'styled-components') {
|
|
194
|
-
return '5.3.6';
|
|
195
|
-
}
|
|
196
|
-
return '3.0.0' // sanity version
|
|
197
|
-
;
|
|
198
|
-
});
|
|
199
|
-
await checkRequiredDependencies({
|
|
200
|
-
cliConfig: mockCliConfig,
|
|
201
|
-
output: mockOutput,
|
|
202
|
-
workDir
|
|
203
|
-
});
|
|
204
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('Installed version of styled-components (5.3.6) is not compatible with the version required by sanity (^6.1.15)'));
|
|
205
|
-
});
|
|
206
|
-
test('should succeed on happy path', async ()=>{
|
|
207
|
-
mockedDetermineIsApp.mockReturnValue(false);
|
|
208
|
-
mockedReadPackageManifest.mockResolvedValue({
|
|
209
|
-
dependencies: {
|
|
210
|
-
'styled-components': '^6.1.15'
|
|
211
|
-
},
|
|
212
|
-
devDependencies: {},
|
|
213
|
-
name: 'test-studio',
|
|
214
|
-
version: '1.0.0'
|
|
215
|
-
});
|
|
216
|
-
mockedReadModuleVersion.mockImplementation(async (workDir, name)=>{
|
|
217
|
-
if (name === 'sanity') return '3.2.0';
|
|
218
|
-
if (name === 'styled-components') return '6.1.15';
|
|
219
|
-
return null;
|
|
220
|
-
});
|
|
221
|
-
const result = await checkRequiredDependencies({
|
|
222
|
-
cliConfig: mockCliConfig,
|
|
223
|
-
output: mockOutput,
|
|
224
|
-
workDir
|
|
225
|
-
});
|
|
226
|
-
expect(result).toEqual({
|
|
227
|
-
installedSanityVersion: '3.2.0'
|
|
228
|
-
});
|
|
229
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
//# sourceMappingURL=checkRequiredDependencies.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/actions/build/__tests__/checkRequiredDependencies.test.ts"],"sourcesContent":["import {type CliConfig, type Output} from '@sanity/cli-core'\nimport {beforeEach, describe, expect, test, vi} from 'vitest'\n\n// Imported mocks\nimport {determineIsApp} from '../../../util/determineIsApp'\nimport {readModuleVersion} from '../../../util/readModuleVersion'\nimport {readPackageManifest} from '../../../util/readPackageManifest'\nimport {checkRequiredDependencies} from '../checkRequiredDependencies'\n\n// Mocks\nvi.mock('../../../util/determineIsApp')\nvi.mock('../../../util/readModuleVersion')\nvi.mock('../../../util/readPackageManifest')\n\nconst mockedDetermineIsApp = vi.mocked(determineIsApp)\nconst mockedReadModuleVersion = vi.mocked(readModuleVersion)\nconst mockedReadPackageManifest = vi.mocked(readPackageManifest)\n\ndescribe('#checkRequiredDependencies', () => {\n const workDir = '/tmp/test-studio'\n const mockOutput = {\n error: vi.fn(),\n log: vi.fn(),\n print: vi.fn(),\n warn: vi.fn(),\n } as unknown as Output\n const mockCliConfig: Partial<CliConfig> = {}\n\n beforeEach(() => {\n vi.resetAllMocks()\n })\n\n test('should return early if the project is an app', async () => {\n mockedDetermineIsApp.mockReturnValue(true)\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n expect(result).toEqual({installedSanityVersion: ''})\n expect(mockedReadPackageManifest).not.toHaveBeenCalled()\n })\n\n test('should call output.error and return empty string if sanity is not installed', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'sanity') {\n return null\n }\n return '6.1.15'\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith('Failed to read the installed sanity version.', {\n exit: 1,\n })\n expect(result).toEqual({installedSanityVersion: ''})\n })\n\n test('should call output.error and return sanity version if styled-components is not declared', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'sanity') {\n return '3.0.0'\n }\n return null // styled-components not installed\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('Declared dependency `styled-components` is not installed'),\n {exit: 1},\n )\n expect(result).toEqual({installedSanityVersion: '3.0.0'})\n })\n\n test('should call output.error and return sanity version for invalid styled-components version range', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': 'some-invalid-range'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockResolvedValue('3.0.0') // for sanity\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining(\n 'Declared dependency `styled-components` has an invalid version range: `some-invalid-range`',\n ),\n {exit: 1},\n )\n expect(result).toEqual({installedSanityVersion: '3.0.0'})\n })\n\n test('should warn on incompatible declared styled-components version', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^5.0.0'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (_dir: string, _module: string) => {\n return '6.1.15' // both sanity and styled-components installed\n })\n\n await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'Declared version of styled-components (^5.0.0) is not compatible with the version required by sanity (^6.1.15)',\n ),\n )\n })\n\n test('should not warn on complex but valid styled-components version range', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '>=6.0.0 <7.0.0'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockResolvedValue('6.1.15')\n\n await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.warn).not.toHaveBeenCalled()\n })\n\n test('should call output.error and return sanity version if styled-components is declared but not installed', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^6.1.15'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'styled-components') {\n return null\n }\n return '3.0.0' // sanity version\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.error).toHaveBeenCalledWith(\n expect.stringContaining('Declared dependency `styled-components` is not installed'),\n {exit: 1},\n )\n expect(result).toEqual({installedSanityVersion: '3.0.0'})\n })\n\n test('should warn on incompatible installed styled-components version', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^6.1.15'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n mockedReadModuleVersion.mockImplementation(async (dir: string, module: string) => {\n if (module === 'styled-components') {\n return '5.3.6'\n }\n return '3.0.0' // sanity version\n })\n\n await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(mockOutput.warn).toHaveBeenCalledWith(\n expect.stringContaining(\n 'Installed version of styled-components (5.3.6) is not compatible with the version required by sanity (^6.1.15)',\n ),\n )\n })\n\n test('should succeed on happy path', async () => {\n mockedDetermineIsApp.mockReturnValue(false)\n mockedReadPackageManifest.mockResolvedValue({\n dependencies: {'styled-components': '^6.1.15'},\n devDependencies: {},\n name: 'test-studio',\n version: '1.0.0',\n })\n\n mockedReadModuleVersion.mockImplementation(async (workDir: string, name: string) => {\n if (name === 'sanity') return '3.2.0'\n if (name === 'styled-components') return '6.1.15'\n return null\n })\n\n const result = await checkRequiredDependencies({\n cliConfig: mockCliConfig as CliConfig,\n output: mockOutput,\n workDir,\n })\n\n expect(result).toEqual({installedSanityVersion: '3.2.0'})\n expect(mockOutput.warn).not.toHaveBeenCalled()\n })\n})\n"],"names":["beforeEach","describe","expect","test","vi","determineIsApp","readModuleVersion","readPackageManifest","checkRequiredDependencies","mock","mockedDetermineIsApp","mocked","mockedReadModuleVersion","mockedReadPackageManifest","workDir","mockOutput","error","fn","log","print","warn","mockCliConfig","resetAllMocks","mockReturnValue","result","cliConfig","output","toEqual","installedSanityVersion","not","toHaveBeenCalled","mockResolvedValue","dependencies","devDependencies","name","version","mockImplementation","dir","module","toHaveBeenCalledWith","exit","stringContaining","_dir","_module"],"mappings":"AACA,SAAQA,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAE7D,iBAAiB;AACjB,SAAQC,cAAc,QAAO,+BAA8B;AAC3D,SAAQC,iBAAiB,QAAO,kCAAiC;AACjE,SAAQC,mBAAmB,QAAO,oCAAmC;AACrE,SAAQC,yBAAyB,QAAO,+BAA8B;AAEtE,QAAQ;AACRJ,GAAGK,IAAI,CAAC;AACRL,GAAGK,IAAI,CAAC;AACRL,GAAGK,IAAI,CAAC;AAER,MAAMC,uBAAuBN,GAAGO,MAAM,CAACN;AACvC,MAAMO,0BAA0BR,GAAGO,MAAM,CAACL;AAC1C,MAAMO,4BAA4BT,GAAGO,MAAM,CAACJ;AAE5CN,SAAS,8BAA8B;IACrC,MAAMa,UAAU;IAChB,MAAMC,aAAa;QACjBC,OAAOZ,GAAGa,EAAE;QACZC,KAAKd,GAAGa,EAAE;QACVE,OAAOf,GAAGa,EAAE;QACZG,MAAMhB,GAAGa,EAAE;IACb;IACA,MAAMI,gBAAoC,CAAC;IAE3CrB,WAAW;QACTI,GAAGkB,aAAa;IAClB;IAEAnB,KAAK,gDAAgD;QACnDO,qBAAqBa,eAAe,CAAC;QACrC,MAAMC,SAAS,MAAMhB,0BAA0B;YAC7CiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QACAZ,OAAOsB,QAAQG,OAAO,CAAC;YAACC,wBAAwB;QAAE;QAClD1B,OAAOW,2BAA2BgB,GAAG,CAACC,gBAAgB;IACxD;IAEA3B,KAAK,+EAA+E;QAClFO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc,CAAC;YACfC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBwB,kBAAkB,CAAC,OAAOC,KAAaC;YAC7D,IAAIA,WAAW,UAAU;gBACvB,OAAO;YACT;YACA,OAAO;QACT;QAEA,MAAMd,SAAS,MAAMhB,0BAA0B;YAC7CiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWC,KAAK,EAAEuB,oBAAoB,CAAC,gDAAgD;YAC5FC,MAAM;QACR;QACAtC,OAAOsB,QAAQG,OAAO,CAAC;YAACC,wBAAwB;QAAE;IACpD;IAEAzB,KAAK,2FAA2F;QAC9FO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc,CAAC;YACfC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBwB,kBAAkB,CAAC,OAAOC,KAAaC;YAC7D,IAAIA,WAAW,UAAU;gBACvB,OAAO;YACT;YACA,OAAO,KAAK,kCAAkC;;QAChD;QAEA,MAAMd,SAAS,MAAMhB,0BAA0B;YAC7CiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWC,KAAK,EAAEuB,oBAAoB,CAC3CrC,OAAOuC,gBAAgB,CAAC,6DACxB;YAACD,MAAM;QAAC;QAEVtC,OAAOsB,QAAQG,OAAO,CAAC;YAACC,wBAAwB;QAAO;IACzD;IAEAzB,KAAK,kGAAkG;QACrGO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc;gBAAC,qBAAqB;YAAoB;YACxDC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBmB,iBAAiB,CAAC,UAAS,aAAa;QAEhE,MAAMP,SAAS,MAAMhB,0BAA0B;YAC7CiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWC,KAAK,EAAEuB,oBAAoB,CAC3CrC,OAAOuC,gBAAgB,CACrB,+FAEF;YAACD,MAAM;QAAC;QAEVtC,OAAOsB,QAAQG,OAAO,CAAC;YAACC,wBAAwB;QAAO;IACzD;IAEAzB,KAAK,kEAAkE;QACrEO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc;gBAAC,qBAAqB;YAAQ;YAC5CC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBwB,kBAAkB,CAAC,OAAOM,MAAcC;YAC9D,OAAO,SAAS,8CAA8C;;QAChE;QAEA,MAAMnC,0BAA0B;YAC9BiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWK,IAAI,EAAEmB,oBAAoB,CAC1CrC,OAAOuC,gBAAgB,CACrB;IAGN;IAEAtC,KAAK,wEAAwE;QAC3EO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc;gBAAC,qBAAqB;YAAgB;YACpDC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBmB,iBAAiB,CAAC;QAE1C,MAAMvB,0BAA0B;YAC9BiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWK,IAAI,EAAES,GAAG,CAACC,gBAAgB;IAC9C;IAEA3B,KAAK,yGAAyG;QAC5GO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc;gBAAC,qBAAqB;YAAS;YAC7CC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBwB,kBAAkB,CAAC,OAAOC,KAAaC;YAC7D,IAAIA,WAAW,qBAAqB;gBAClC,OAAO;YACT;YACA,OAAO,QAAQ,iBAAiB;;QAClC;QAEA,MAAMd,SAAS,MAAMhB,0BAA0B;YAC7CiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWC,KAAK,EAAEuB,oBAAoB,CAC3CrC,OAAOuC,gBAAgB,CAAC,6DACxB;YAACD,MAAM;QAAC;QAEVtC,OAAOsB,QAAQG,OAAO,CAAC;YAACC,wBAAwB;QAAO;IACzD;IAEAzB,KAAK,mEAAmE;QACtEO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc;gBAAC,qBAAqB;YAAS;YAC7CC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QACAvB,wBAAwBwB,kBAAkB,CAAC,OAAOC,KAAaC;YAC7D,IAAIA,WAAW,qBAAqB;gBAClC,OAAO;YACT;YACA,OAAO,QAAQ,iBAAiB;;QAClC;QAEA,MAAM9B,0BAA0B;YAC9BiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOa,WAAWK,IAAI,EAAEmB,oBAAoB,CAC1CrC,OAAOuC,gBAAgB,CACrB;IAGN;IAEAtC,KAAK,gCAAgC;QACnCO,qBAAqBa,eAAe,CAAC;QACrCV,0BAA0BkB,iBAAiB,CAAC;YAC1CC,cAAc;gBAAC,qBAAqB;YAAS;YAC7CC,iBAAiB,CAAC;YAClBC,MAAM;YACNC,SAAS;QACX;QAEAvB,wBAAwBwB,kBAAkB,CAAC,OAAOtB,SAAiBoB;YACjE,IAAIA,SAAS,UAAU,OAAO;YAC9B,IAAIA,SAAS,qBAAqB,OAAO;YACzC,OAAO;QACT;QAEA,MAAMV,SAAS,MAAMhB,0BAA0B;YAC7CiB,WAAWJ;YACXK,QAAQX;YACRD;QACF;QAEAZ,OAAOsB,QAAQG,OAAO,CAAC;YAACC,wBAAwB;QAAO;QACvD1B,OAAOa,WAAWK,IAAI,EAAES,GAAG,CAACC,gBAAgB;IAC9C;AACF"}
|
|
@@ -1,414 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import resolveFrom from 'resolve-from';
|
|
3
|
-
import semver from 'semver';
|
|
4
|
-
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
5
|
-
import { readPackageJson } from '../../../util/readPackageJson';
|
|
6
|
-
import { checkStudioDependencyVersions } from '../checkStudioDependencyVersions';
|
|
7
|
-
// Mock dependencies
|
|
8
|
-
vi.mock('node:path');
|
|
9
|
-
vi.mock('resolve-from');
|
|
10
|
-
vi.mock('../../../util/readPackageJson');
|
|
11
|
-
const mockedPath = vi.mocked(path);
|
|
12
|
-
const mockedResolveFrom = vi.mocked(resolveFrom);
|
|
13
|
-
const mockedResolveFromSilent = vi.fn().mockReturnValue(null);
|
|
14
|
-
const mockedReadPackageJson = vi.mocked(readPackageJson);
|
|
15
|
-
describe('checkStudioDependencyVersions', ()=>{
|
|
16
|
-
const workDir = '/test/work/dir';
|
|
17
|
-
const packageJsonPath = '/test/work/dir/package.json';
|
|
18
|
-
let mockOutput;
|
|
19
|
-
beforeEach(()=>{
|
|
20
|
-
vi.resetAllMocks();
|
|
21
|
-
// Create mock output
|
|
22
|
-
mockOutput = {
|
|
23
|
-
error: vi.fn().mockImplementation((message, options)=>{
|
|
24
|
-
if (options?.exit !== false) {
|
|
25
|
-
throw new Error('process.exit called');
|
|
26
|
-
}
|
|
27
|
-
}),
|
|
28
|
-
log: vi.fn(),
|
|
29
|
-
warn: vi.fn()
|
|
30
|
-
};
|
|
31
|
-
// Mock console methods (keeping for backwards compatibility if needed)
|
|
32
|
-
vi.spyOn(console, 'warn').mockImplementation(()=>{});
|
|
33
|
-
vi.spyOn(console, 'error').mockImplementation(()=>{});
|
|
34
|
-
vi.spyOn(process, 'exit').mockImplementation(()=>{
|
|
35
|
-
throw new Error('process.exit called');
|
|
36
|
-
});
|
|
37
|
-
// Setup default mocks
|
|
38
|
-
mockedPath.join.mockReturnValue(packageJsonPath);
|
|
39
|
-
mockedResolveFromSilent.mockReturnValue(null);
|
|
40
|
-
mockedResolveFrom.silent = mockedResolveFromSilent;
|
|
41
|
-
});
|
|
42
|
-
describe('when no dependencies are installed', ()=>{
|
|
43
|
-
test('should not warn or error when no tracked packages are installed', async ()=>{
|
|
44
|
-
mockedReadPackageJson.mockResolvedValue({
|
|
45
|
-
dependencies: {},
|
|
46
|
-
devDependencies: {},
|
|
47
|
-
name: 'test-project',
|
|
48
|
-
version: '1.0.0'
|
|
49
|
-
});
|
|
50
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
51
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
52
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
describe('when dependencies are installed', ()=>{
|
|
56
|
-
test('should handle packages with valid versions', async ()=>{
|
|
57
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
58
|
-
dependencies: {
|
|
59
|
-
react: '^18.0.0',
|
|
60
|
-
'react-dom': '^18.0.0'
|
|
61
|
-
},
|
|
62
|
-
name: 'test-project',
|
|
63
|
-
version: '1.0.0'
|
|
64
|
-
}).mockResolvedValueOnce({
|
|
65
|
-
name: 'react',
|
|
66
|
-
version: '18.2.0'
|
|
67
|
-
}).mockResolvedValueOnce({
|
|
68
|
-
name: 'react-dom',
|
|
69
|
-
version: '18.2.0'
|
|
70
|
-
});
|
|
71
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json');
|
|
72
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
73
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
74
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
75
|
-
});
|
|
76
|
-
test('should handle packages with untested versions (newer than supported)', async ()=>{
|
|
77
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
78
|
-
dependencies: {
|
|
79
|
-
react: '^20.0.0'
|
|
80
|
-
},
|
|
81
|
-
name: 'test-project',
|
|
82
|
-
version: '1.0.0'
|
|
83
|
-
}).mockResolvedValueOnce({
|
|
84
|
-
name: 'react',
|
|
85
|
-
version: '20.0.0'
|
|
86
|
-
});
|
|
87
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
|
|
88
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
89
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have not yet been marked as supported:'));
|
|
90
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('react (installed: 20.0.0, want: ^18 || ^19)'));
|
|
91
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('To downgrade, run either:'));
|
|
92
|
-
});
|
|
93
|
-
test('should handle packages with unsupported versions (older than supported)', async ()=>{
|
|
94
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
95
|
-
dependencies: {
|
|
96
|
-
react: '^16.0.0'
|
|
97
|
-
},
|
|
98
|
-
name: 'test-project',
|
|
99
|
-
version: '1.0.0'
|
|
100
|
-
}).mockResolvedValueOnce({
|
|
101
|
-
name: 'react',
|
|
102
|
-
version: '16.14.0'
|
|
103
|
-
});
|
|
104
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
|
|
105
|
-
await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
|
|
106
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('The following package versions are no longer supported and needs to be upgraded:'), {
|
|
107
|
-
exit: 1
|
|
108
|
-
});
|
|
109
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
|
|
110
|
-
exit: 1
|
|
111
|
-
});
|
|
112
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('To upgrade, run either:'), {
|
|
113
|
-
exit: 1
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
test('should handle deprecated packages when deprecatedBelow is set', async ()=>{
|
|
117
|
-
// We can't easily test this with the current PACKAGES structure since they all have
|
|
118
|
-
// deprecatedBelow: null. However, we can at least test that a scenario where
|
|
119
|
-
// deprecatedBelow would be used would create the correct PackageInfo structure
|
|
120
|
-
// and would trigger a deprecation warning through the filtered array logic
|
|
121
|
-
// This test ensures that if the deprecated code path were to be triggered,
|
|
122
|
-
// the function would behave correctly
|
|
123
|
-
const mockPackageInfo = {
|
|
124
|
-
deprecatedBelow: '18.0.0',
|
|
125
|
-
installed: semver.coerce('17.0.2'),
|
|
126
|
-
isDeprecated: true,
|
|
127
|
-
isUnsupported: false,
|
|
128
|
-
isUntested: false,
|
|
129
|
-
name: 'react',
|
|
130
|
-
supported: [
|
|
131
|
-
'^18 || ^19'
|
|
132
|
-
]
|
|
133
|
-
};
|
|
134
|
-
// Manually trigger the deprecated path by simulating the filtered array
|
|
135
|
-
const deprecated = [
|
|
136
|
-
mockPackageInfo
|
|
137
|
-
];
|
|
138
|
-
if (deprecated.length > 0) {
|
|
139
|
-
mockOutput.warn(`The following package versions have been deprecated and should be upgraded:
|
|
140
|
-
|
|
141
|
-
react (installed: 17.0.2, want: 18.0.0)
|
|
142
|
-
|
|
143
|
-
Support for these will be removed in a future release!
|
|
144
|
-
|
|
145
|
-
To upgrade, run either:
|
|
146
|
-
|
|
147
|
-
npm install "react@18.0.0"
|
|
148
|
-
|
|
149
|
-
or
|
|
150
|
-
|
|
151
|
-
yarn add "react@18.0.0"
|
|
152
|
-
|
|
153
|
-
or
|
|
154
|
-
|
|
155
|
-
pnpm add "react@18.0.0"
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
Read more at https://help.sanity.io/upgrade-packages
|
|
159
|
-
`);
|
|
160
|
-
}
|
|
161
|
-
expect(deprecated.length).toBe(1);
|
|
162
|
-
expect(deprecated[0].isDeprecated).toBe(true);
|
|
163
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have been deprecated and should be upgraded:'));
|
|
164
|
-
});
|
|
165
|
-
test('should handle packages installed in devDependencies', async ()=>{
|
|
166
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
167
|
-
dependencies: {},
|
|
168
|
-
devDependencies: {
|
|
169
|
-
react: '^18.0.0'
|
|
170
|
-
},
|
|
171
|
-
name: 'test-project',
|
|
172
|
-
version: '1.0.0'
|
|
173
|
-
}).mockResolvedValueOnce({
|
|
174
|
-
name: 'react',
|
|
175
|
-
version: '18.2.0'
|
|
176
|
-
});
|
|
177
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
|
|
178
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
179
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
180
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
181
|
-
});
|
|
182
|
-
test('should handle packages where manifest path cannot be resolved', async ()=>{
|
|
183
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
184
|
-
dependencies: {
|
|
185
|
-
react: '^18.0.0'
|
|
186
|
-
},
|
|
187
|
-
name: 'test-project',
|
|
188
|
-
version: '1.0.0'
|
|
189
|
-
});
|
|
190
|
-
mockedResolveFromSilent.mockReturnValue(null);
|
|
191
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
192
|
-
// When manifest path cannot be resolved, the function falls back to using the dependency version
|
|
193
|
-
// which gets stripped of non-digit/dot characters, resulting in "1800" which is treated as 1800.0.0
|
|
194
|
-
// This is much higher than the supported range, so it becomes "untested"
|
|
195
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('The following package versions have not yet been marked as supported:'));
|
|
196
|
-
});
|
|
197
|
-
test('should handle packages where version cannot be coerced', async ()=>{
|
|
198
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
199
|
-
dependencies: {
|
|
200
|
-
react: 'invalid-version'
|
|
201
|
-
},
|
|
202
|
-
name: 'test-project',
|
|
203
|
-
version: '1.0.0'
|
|
204
|
-
});
|
|
205
|
-
mockedResolveFromSilent.mockReturnValue(null);
|
|
206
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
207
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
208
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
209
|
-
});
|
|
210
|
-
test('should handle mixed package states correctly', async ()=>{
|
|
211
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
212
|
-
dependencies: {
|
|
213
|
-
react: '^16.0.0',
|
|
214
|
-
'react-dom': '^20.0.0',
|
|
215
|
-
'styled-components': '^6.0.0'
|
|
216
|
-
},
|
|
217
|
-
name: 'test-project',
|
|
218
|
-
version: '1.0.0'
|
|
219
|
-
}).mockResolvedValueOnce({
|
|
220
|
-
name: 'react',
|
|
221
|
-
version: '16.14.0'
|
|
222
|
-
}).mockResolvedValueOnce({
|
|
223
|
-
name: 'react-dom',
|
|
224
|
-
version: '20.0.0'
|
|
225
|
-
}).mockResolvedValueOnce({
|
|
226
|
-
name: 'styled-components',
|
|
227
|
-
version: '6.1.0'
|
|
228
|
-
});
|
|
229
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json').mockReturnValueOnce('/node_modules/styled-components/package.json');
|
|
230
|
-
await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
|
|
231
|
-
// Should warn about untested versions
|
|
232
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('react-dom (installed: 20.0.0, want: ^18 || ^19)'));
|
|
233
|
-
// Should error about unsupported versions
|
|
234
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
|
|
235
|
-
exit: 1
|
|
236
|
-
});
|
|
237
|
-
});
|
|
238
|
-
});
|
|
239
|
-
describe('helper functions edge cases', ()=>{
|
|
240
|
-
test('should handle invalid version ranges in helper functions', async ()=>{
|
|
241
|
-
// Test the edge case where semver.coerce returns null and falls back to {version: ''}
|
|
242
|
-
const originalCoerce = semver.coerce;
|
|
243
|
-
let coerceCallCount = 0;
|
|
244
|
-
vi.spyOn(semver, 'coerce').mockImplementation((version)=>{
|
|
245
|
-
coerceCallCount++;
|
|
246
|
-
// Return null for the version in getUpgradeInstructions to test the fallback
|
|
247
|
-
if (coerceCallCount > 2 && version && typeof version === 'string' && version.includes('^')) {
|
|
248
|
-
return null;
|
|
249
|
-
}
|
|
250
|
-
return originalCoerce(version);
|
|
251
|
-
});
|
|
252
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
253
|
-
dependencies: {
|
|
254
|
-
react: '^16.0.0'
|
|
255
|
-
},
|
|
256
|
-
name: 'test-project',
|
|
257
|
-
version: '1.0.0'
|
|
258
|
-
}).mockResolvedValueOnce({
|
|
259
|
-
name: 'react',
|
|
260
|
-
version: '16.14.0'
|
|
261
|
-
});
|
|
262
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
|
|
263
|
-
await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
|
|
264
|
-
// Should still generate instructions even with invalid version range
|
|
265
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('To upgrade, run either:'), {
|
|
266
|
-
exit: 1
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
describe('helper functions', ()=>{
|
|
271
|
-
test('should generate correct upgrade instructions', async ()=>{
|
|
272
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
273
|
-
dependencies: {
|
|
274
|
-
react: '^16.0.0'
|
|
275
|
-
},
|
|
276
|
-
name: 'test-project',
|
|
277
|
-
version: '1.0.0'
|
|
278
|
-
}).mockResolvedValueOnce({
|
|
279
|
-
name: 'react',
|
|
280
|
-
version: '16.14.0'
|
|
281
|
-
});
|
|
282
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
|
|
283
|
-
await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
|
|
284
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('npm install "react@18.0.0"'), {
|
|
285
|
-
exit: 1
|
|
286
|
-
});
|
|
287
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('yarn add "react@18.0.0"'), {
|
|
288
|
-
exit: 1
|
|
289
|
-
});
|
|
290
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('pnpm add "react@18.0.0"'), {
|
|
291
|
-
exit: 1
|
|
292
|
-
});
|
|
293
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('Read more at https://www.sanity.io/docs/help/upgrade-packages'), {
|
|
294
|
-
exit: 1
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
test('should generate correct downgrade instructions', async ()=>{
|
|
298
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
299
|
-
dependencies: {
|
|
300
|
-
react: '^20.0.0'
|
|
301
|
-
},
|
|
302
|
-
name: 'test-project',
|
|
303
|
-
version: '1.0.0'
|
|
304
|
-
}).mockResolvedValueOnce({
|
|
305
|
-
name: 'react',
|
|
306
|
-
version: '20.0.0'
|
|
307
|
-
});
|
|
308
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json');
|
|
309
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
310
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('yarn add "react@18.0.0"'));
|
|
311
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('npm install "react@18.0.0"'));
|
|
312
|
-
expect(mockOutput.warn).toHaveBeenCalledWith(expect.stringContaining('pnpm install "react@18.0.0"'));
|
|
313
|
-
});
|
|
314
|
-
test('should list multiple packages correctly', async ()=>{
|
|
315
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
316
|
-
dependencies: {
|
|
317
|
-
react: '^16.0.0',
|
|
318
|
-
'react-dom': '^16.0.0'
|
|
319
|
-
},
|
|
320
|
-
name: 'test-project',
|
|
321
|
-
version: '1.0.0'
|
|
322
|
-
}).mockResolvedValueOnce({
|
|
323
|
-
name: 'react',
|
|
324
|
-
version: '16.14.0'
|
|
325
|
-
}).mockResolvedValueOnce({
|
|
326
|
-
name: 'react-dom',
|
|
327
|
-
version: '16.14.0'
|
|
328
|
-
});
|
|
329
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/react/package.json').mockReturnValueOnce('/node_modules/react-dom/package.json');
|
|
330
|
-
await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('process.exit called');
|
|
331
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react (installed: 16.14.0, want: ^18 || ^19)'), {
|
|
332
|
-
exit: 1
|
|
333
|
-
});
|
|
334
|
-
expect(mockOutput.error).toHaveBeenCalledWith(expect.stringContaining('react-dom (installed: 16.14.0, want: ^18 || ^19)'), {
|
|
335
|
-
exit: 1
|
|
336
|
-
});
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
|
-
describe('edge cases', ()=>{
|
|
340
|
-
test('should handle readPackageJson throwing an error', async ()=>{
|
|
341
|
-
mockedReadPackageJson.mockRejectedValue(new Error('Failed to read package.json'));
|
|
342
|
-
await expect(checkStudioDependencyVersions(workDir, mockOutput)).rejects.toThrow('Failed to read package.json');
|
|
343
|
-
});
|
|
344
|
-
test('should handle packages with no dependencies property', async ()=>{
|
|
345
|
-
mockedReadPackageJson.mockResolvedValue({
|
|
346
|
-
name: 'test-project',
|
|
347
|
-
version: '1.0.0'
|
|
348
|
-
});
|
|
349
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
350
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
351
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
352
|
-
});
|
|
353
|
-
test('should handle packages with empty dependencies', async ()=>{
|
|
354
|
-
mockedReadPackageJson.mockResolvedValue({
|
|
355
|
-
dependencies: {},
|
|
356
|
-
devDependencies: {},
|
|
357
|
-
name: 'test-project',
|
|
358
|
-
version: '1.0.0'
|
|
359
|
-
});
|
|
360
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
361
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
362
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
363
|
-
});
|
|
364
|
-
test('should handle semver.coerce returning null', async ()=>{
|
|
365
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
366
|
-
dependencies: {
|
|
367
|
-
react: 'invalid-version'
|
|
368
|
-
},
|
|
369
|
-
name: 'test-project',
|
|
370
|
-
version: '1.0.0'
|
|
371
|
-
});
|
|
372
|
-
mockedResolveFromSilent.mockReturnValue(null);
|
|
373
|
-
// Mock semver.coerce to return null
|
|
374
|
-
vi.spyOn(semver, 'coerce').mockReturnValue(null);
|
|
375
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
376
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
377
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
378
|
-
});
|
|
379
|
-
test('should handle @sanity/ui package correctly', async ()=>{
|
|
380
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
381
|
-
dependencies: {
|
|
382
|
-
'@sanity/ui': '^2.0.0'
|
|
383
|
-
},
|
|
384
|
-
name: 'test-project',
|
|
385
|
-
version: '1.0.0'
|
|
386
|
-
}).mockResolvedValueOnce({
|
|
387
|
-
name: '@sanity/ui',
|
|
388
|
-
version: '2.0.0'
|
|
389
|
-
});
|
|
390
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/@sanity/ui/package.json');
|
|
391
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
392
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
393
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
394
|
-
});
|
|
395
|
-
test('should handle styled-components package correctly', async ()=>{
|
|
396
|
-
mockedReadPackageJson.mockResolvedValueOnce({
|
|
397
|
-
dependencies: {
|
|
398
|
-
'styled-components': '^6.0.0'
|
|
399
|
-
},
|
|
400
|
-
name: 'test-project',
|
|
401
|
-
version: '1.0.0'
|
|
402
|
-
}).mockResolvedValueOnce({
|
|
403
|
-
name: 'styled-components',
|
|
404
|
-
version: '6.1.0'
|
|
405
|
-
});
|
|
406
|
-
mockedResolveFromSilent.mockReturnValueOnce('/node_modules/styled-components/package.json');
|
|
407
|
-
await checkStudioDependencyVersions(workDir, mockOutput);
|
|
408
|
-
expect(mockOutput.warn).not.toHaveBeenCalled();
|
|
409
|
-
expect(mockOutput.error).not.toHaveBeenCalled();
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
});
|
|
413
|
-
|
|
414
|
-
//# sourceMappingURL=checkStudioDependencyVersions.test.js.map
|