@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.
- package/README.md +2907 -109
- 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/actions/telemetry/resolveConsent.d.ts +1 -9
- package/dist/actions/telemetry/resolveConsent.js +2 -2
- package/dist/actions/telemetry/resolveConsent.js.map +1 -1
- package/dist/actions/telemetry/setConsent.d.ts +1 -4
- package/dist/actions/telemetry/setConsent.js +4 -8
- package/dist/actions/telemetry/setConsent.js.map +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/commands/telemetry/disable.js +0 -1
- package/dist/commands/telemetry/disable.js.map +1 -1
- package/dist/commands/telemetry/enable.js +0 -1
- package/dist/commands/telemetry/enable.js.map +1 -1
- package/dist/commands/telemetry/status.js +1 -3
- package/dist/commands/telemetry/status.js.map +1 -1
- package/dist/config/createCliConfig.d.ts +9 -0
- package/dist/hooks/prerun/flushTelemetry.worker.d.ts +2 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js +22 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -0
- package/dist/hooks/prerun/setupTelemetry.js +65 -1
- package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
- 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/telemetry.d.ts +2 -0
- package/dist/services/telemetry.js +20 -0
- package/dist/services/telemetry.js.map +1 -0
- 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/dist/telemetry/cli.telemetry.d.ts +20 -0
- package/dist/telemetry/cli.telemetry.js +8 -0
- package/dist/telemetry/cli.telemetry.js.map +1 -0
- package/dist/telemetry/store/cleanupOldTelemetryFiles.d.ts +5 -0
- package/dist/telemetry/store/cleanupOldTelemetryFiles.js +30 -0
- package/dist/telemetry/store/cleanupOldTelemetryFiles.js.map +1 -0
- package/dist/telemetry/store/createTelemetryStore.d.ts +39 -0
- package/dist/telemetry/store/createTelemetryStore.js +95 -0
- package/dist/telemetry/store/createTelemetryStore.js.map +1 -0
- package/dist/telemetry/store/createTraceId.d.ts +10 -0
- package/dist/telemetry/store/createTraceId.js +10 -0
- package/dist/telemetry/store/createTraceId.js.map +1 -0
- package/dist/telemetry/store/debug.d.ts +5 -0
- package/dist/telemetry/store/debug.js +7 -0
- package/dist/telemetry/store/debug.js.map +1 -0
- package/dist/telemetry/store/findTelemetryFiles.d.ts +13 -0
- package/dist/telemetry/store/findTelemetryFiles.js +34 -0
- package/dist/telemetry/store/findTelemetryFiles.js.map +1 -0
- package/dist/telemetry/store/flushTelemetryFiles.d.ts +20 -0
- package/dist/telemetry/store/flushTelemetryFiles.js +107 -0
- package/dist/telemetry/store/flushTelemetryFiles.js.map +1 -0
- package/dist/telemetry/store/generateTelemetryFilePath.d.ts +17 -0
- package/dist/telemetry/store/generateTelemetryFilePath.js +30 -0
- package/dist/telemetry/store/generateTelemetryFilePath.js.map +1 -0
- package/dist/telemetry/store/getTelemetryBaseInfo.d.ts +27 -0
- package/dist/telemetry/store/getTelemetryBaseInfo.js +34 -0
- package/dist/telemetry/store/getTelemetryBaseInfo.js.map +1 -0
- package/dist/telemetry/store/logger.d.ts +6 -0
- package/dist/telemetry/store/logger.js +54 -0
- package/dist/telemetry/store/logger.js.map +1 -0
- package/dist/telemetry/store/trace.d.ts +6 -0
- package/dist/telemetry/store/trace.js +150 -0
- package/dist/telemetry/store/trace.js.map +1 -0
- package/dist/telemetry/utils/readNDJSON.d.ts +10 -0
- package/dist/telemetry/utils/readNDJSON.js +18 -0
- package/dist/telemetry/utils/readNDJSON.js.map +1 -0
- package/dist/util/detectRuntime.d.ts +8 -0
- package/dist/util/detectRuntime.js +20 -0
- package/dist/util/detectRuntime.js.map +1 -0
- package/dist/util/isStaging.d.ts +7 -0
- package/dist/util/isStaging.js +10 -0
- package/dist/util/isStaging.js.map +1 -0
- package/dist/util/parseArguments.d.ts +35 -0
- package/dist/util/parseArguments.js +42 -0
- package/dist/util/parseArguments.js.map +1 -0
- package/oclif.manifest.json +7 -1
- package/package.json +25 -18
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/__tests__/deploy.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {confirm, input, select} from '@sanity/cli-core/ux'\nimport {mockApi, testCommand} from '@sanity/cli-test'\nimport nock from 'nock'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\nimport {testExample} from '~test/helpers/testExample.js'\n\nimport {buildApp} from '../../actions/build/buildApp.js'\nimport {buildStudio} from '../../actions/build/buildStudio.js'\nimport {checkDir} from '../../actions/deploy/checkDir.js'\nimport {USER_APPLICATIONS_API_VERSION} from '../../services/userApplications.js'\nimport {dirIsEmptyOrNonExistent} from '../../util/dirIsEmptyOrNonExistent.js'\nimport {readModuleVersion} from '../../util/readModuleVersion.js'\nimport {DeployCommand} from '../deploy.js'\n\nvi.mock('../../util/readModuleVersion.js', () => ({\n readModuleVersion: vi.fn(),\n}))\n\nvi.mock('../../actions/build/buildApp.js', () => ({\n buildApp: vi.fn(),\n}))\n\nvi.mock('../../actions/build/buildStudio.js', () => ({\n buildStudio: vi.fn(),\n}))\n\nvi.mock('../../actions/deploy/checkDir.js', () => ({\n checkDir: vi.fn(),\n}))\n\nvi.mock('@sanity/cli-core/ux', async () => {\n const actual = await vi.importActual<typeof import('@sanity/cli-core/ux')>('@sanity/cli-core/ux')\n return {\n ...actual,\n confirm: vi.fn(),\n input: vi.fn(),\n select: vi.fn(),\n }\n})\n\nvi.mock('../../util/dirIsEmptyOrNonExistent.js', () => ({\n dirIsEmptyOrNonExistent: vi.fn(() => true),\n}))\n\nvi.mock('tar-fs', () => ({\n pack: vi.fn(() => {\n return {\n pipe: vi.fn(),\n }\n }),\n}))\n\nconst mockSelect = vi.mocked(select)\nconst mockConfirm = vi.mocked(confirm)\nconst mockInput = vi.mocked(input)\nconst mockCheckDir = vi.mocked(checkDir)\nconst mockDirIsEmptyOrNonExistent = vi.mocked(dirIsEmptyOrNonExistent)\nconst mockReadModuleVersion = vi.mocked(readModuleVersion)\nconst mockBuildStudio = vi.mocked(buildStudio)\nconst mockBuildApp = vi.mocked(buildApp)\n\nconst appId = 'app-id'\nconst organizationId = 'org-id'\n\nconst defaultMocks = {\n cliConfig: {\n app: {\n organizationId,\n },\n deployment: {\n appId,\n },\n },\n}\n\ndescribe('#deploy', () => {\n beforeEach(async () => {\n // Set up default mocks\n mockReadModuleVersion.mockImplementation(async (sourceDir, moduleName) => {\n if (moduleName === 'sanity') return '3.0.0' // for studio deployments\n if (moduleName === '@sanity/sdk-react') return '1.0.0' // for app deployments\n return '1.0.0'\n })\n mockCheckDir.mockResolvedValue()\n })\n\n afterEach(() => {\n vi.clearAllMocks()\n const pending = nock.pendingMocks()\n nock.cleanAll()\n expect(pending, 'pending mocks').toEqual([])\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand('deploy --help')\n expect(stdout).toMatchInlineSnapshot(`\n \"Builds and deploys Sanity Studio or application to Sanity hosting\n\n USAGE\n $ sanity deploy [SOURCEDIR] [--auto-updates] [--build] [--minify]\n [--schema-required] [--source-maps] [--verbose] [-y]\n\n ARGUMENTS\n [SOURCEDIR] Source directory\n\n FLAGS\n -y, --yes Unattended mode, answers \"yes\" to any \"yes/no\" prompt\n and otherwise uses defaults\n --[no-]auto-updates Automatically update the studio to the latest version\n --[no-]build Don't build the studio prior to deploy, instead\n deploying the version currently in \\`dist/\\`\n --[no-]minify Skip minifying built JavaScript (speeds up build,\n increases size of bundle)\n --schema-required Fail-fast deployment if schema store fails\n --source-maps Enable source maps for built bundles (increases size\n of bundle)\n --verbose Enable verbose logging\n\n DESCRIPTION\n Builds and deploys Sanity Studio or application to Sanity hosting\n\n EXAMPLES\n Build the studio\n\n $ sanity deploy\n\n Deploys non-minified build with source maps\n\n $ sanity deploy --no-minify --source-maps\n\n Fail fast on schema store fails - for when other services rely on the stored\n schema\n\n $ sanity deploy --schema-required\n\n \"\n `)\n })\n test('shows an error for invalid flags', async () => {\n const {error} = await testCommand(DeployCommand, ['--invalid'])\n\n expect(error?.message).toContain('Nonexistent flag: --invalid')\n })\n\n test(\"should prompt to confirm deleting source directory if it's not empty\", async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n mockConfirm.mockResolvedValue(true)\n mockDirIsEmptyOrNonExistent.mockResolvedValue(false)\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${appId}`,\n }).reply(200, {\n appHost: 'existing-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: appId,\n organizationId: 'org-id',\n projectId: null,\n title: 'Existing App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${appId}/deployments`,\n }).reply(200, {\n id: 'deployment-id',\n })\n\n const {error} = await testCommand(DeployCommand, ['build'], {\n config: {root: cwd},\n mocks: defaultMocks,\n })\n\n expect(error).toBeUndefined()\n expect(mockConfirm).toHaveBeenCalledWith({\n default: false,\n message: '\"./build\" is not empty, do you want to proceed?',\n })\n })\n\n test(\"should cancel the deployment if the user doesn't want to proceed\", async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n mockConfirm.mockResolvedValue(false)\n\n const {error} = await testCommand(DeployCommand, ['build'], {\n config: {root: cwd},\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Cancelled.')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n describe('app', () => {\n test('should re-deploy app if it already exists', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${appId}`,\n }).reply(200, {\n appHost: 'existing-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: appId,\n organizationId: 'org-id',\n projectId: null,\n title: 'Existing App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${appId}/deployments`,\n }).reply(200, {\n id: 'deployment-id',\n })\n\n const {error, stderr, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: defaultMocks,\n })\n\n expect(error).toBeUndefined()\n\n expect(stderr).toContain('Checking application info')\n expect(stderr).toContain('Verifying local content')\n expect(stderr).toContain('Deploying...')\n\n expect(stdout).toContain('Success! Application deployed')\n })\n\n test('should handle missing @sanity/sdk-react version', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n mockReadModuleVersion.mockResolvedValue(null)\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Failed to find installed @sanity/sdk-react version')\n })\n\n test('should create new user application if none exists', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const newAppId = 'new-app-id'\n const deploymentId = 'deployment-id'\n\n mockInput.mockResolvedValue('Test App')\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, [])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, {\n appHost: 'generated-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: newAppId,\n organizationId,\n projectId: null,\n title: 'Test App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${newAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Application deployed')\n expect(stdout).toContain(\n `Add the deployment.appId to your sanity.cli.js or sanity.cli.ts file:`,\n )\n expect(stdout).toContain(`deployment: {\n appId: '${newAppId}',`)\n expect(mockInput).toHaveBeenCalledWith({\n message: 'Enter a title for your application:',\n validate: expect.any(Function),\n })\n })\n\n test('should skip build when --no-build flag is used', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId = 'existing-app-id'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}`,\n }).reply(200, {\n appHost: 'existing-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId,\n organizationId,\n projectId: null,\n title: 'Existing App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n deployment: {\n appId: existingAppId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Application deployed')\n expect(mockBuildApp).not.toHaveBeenCalled()\n })\n\n test('should handle directory check errors', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId = 'existing-app-id'\n\n mockCheckDir.mockRejectedValue(new Error('Directory check failed'))\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}`,\n }).reply(200, {\n appHost: 'existing-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId,\n organizationId,\n projectId: null,\n title: 'Existing App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n deployment: {\n appId: existingAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error checking directory')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test(\"should error when fetching user applications if user doesn't have org access\", async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const anotherAppId = 'some-app-id'\n const anotherOrganizationId = 'org-without-access'\n\n // Simulate API returning 403 Forbidden for the given org\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${anotherAppId}`,\n }).reply(403, {\n error: 'Forbidden',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId: anotherOrganizationId,\n },\n deployment: {\n appId: anotherAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain(\n `You don’t have permission to view applications for the configured organization ID (\"${anotherOrganizationId}\")`,\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should handle user-applications endpoint errors', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId = 'existing-app-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}`,\n }).reply(500, {\n error: 'Internal server error',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n deployment: {\n appId: existingAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error deploying application')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should handle deployment API errors', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId = 'existing-app-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}`,\n }).reply(200, {\n appHost: 'existing-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId,\n organizationId,\n projectId: null,\n title: 'Existing App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}/deployments`,\n }).reply(500, {\n error: 'Internal server error',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n deployment: {\n appId: existingAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error deploying application')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should show an error if deployment.appId is configured but the application does not exist', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const nonExistentAppId = 'non-existent-app-id'\n\n // Simulate API returning no user application for the given app.id\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${nonExistentAppId}`,\n }).reply(404, {\n error: 'Not found',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n deployment: {\n appId: nonExistentAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain(\n 'The `appId` provided in your configuration’s `deployment` object cannot be found in your organization',\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should show an error if deployment.appId and app.id (deprecated) are both in use', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n app: {\n id: appId,\n organizationId,\n },\n },\n },\n })\n\n expect(error?.message).toContain(\n 'Found both app.id (deprecated) and deployment.appId in your application configuration.\\n\\nPlease remove app.id from your sanity.cli.js or sanity.cli.ts file.',\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should show a warning if app.id (deprecated) is used', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const {stderr} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n id: appId,\n organizationId,\n },\n },\n },\n })\n\n expect(stderr).toContain('The `app.id` config has moved to `deployment.appId`.')\n })\n\n test('should handle app creation with retry when host is taken', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const newAppId = 'new-app-id'\n const deploymentId = 'deployment-id'\n\n mockInput.mockResolvedValue('Test App')\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, [])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n })\n .once()\n .reply(409, {\n message: 'App host already taken',\n statusCode: 409,\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n })\n .once()\n .reply(200, {\n appHost: 'generated-host-2',\n createdAt: '2024-01-01T00:00:00Z',\n id: newAppId,\n organizationId,\n projectId: null,\n title: 'Test App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${newAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Application deployed')\n })\n\n test('should handle app creation failure with non-retryable error', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n mockInput.mockResolvedValue('Test App')\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, [])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(500, {\n message: 'Internal server error',\n statusCode: 500,\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error deploying application')\n })\n\n test('should handle findUserApplicationForApp API errors', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId = 'existing-app-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId}`,\n }).reply(500, {\n error: 'Internal server error',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n ...defaultMocks.cliConfig,\n deployment: {\n appId: existingAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error deploying application')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should test input validation for app title', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const newAppId = 'new-app-id'\n const deploymentId = 'deployment-id'\n\n mockInput.mockResolvedValue('Valid App Title')\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, [])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, {\n appHost: 'generated-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: newAppId,\n organizationId,\n projectId: null,\n title: 'Valid App Title',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${newAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n\n expect(mockInput).toHaveBeenCalledWith({\n message: 'Enter a title for your application:',\n validate: expect.any(Function),\n })\n })\n\n test('should allow selecting from list of apps', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId1 = 'existing-app-id-1'\n const existingAppId2 = 'existing-app-id-2'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, [\n {\n appHost: 'existing-host-1',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId1,\n organizationId,\n projectId: null,\n title: 'Existing App 1',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n {\n appHost: 'existing-host-2',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId2,\n organizationId,\n projectId: null,\n title: 'Existing App 2',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n ])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${existingAppId2}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n mockSelect.mockResolvedValue('existing-host-2')\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Application deployed')\n expect(stdout).toContain(\n `Add the deployment.appId to your sanity.cli.js or sanity.cli.ts file:`,\n )\n expect(stdout).toContain(`deployment: {\n appId: '${existingAppId2}',`)\n })\n\n test('should allow creating a new app by selecting from list of apps', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const existingAppId1 = 'existing-app-id-1'\n const existingAppId2 = 'existing-app-id-2'\n const newAppId = 'new-app-id'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, [\n {\n appHost: 'existing-host-1',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId1,\n organizationId,\n projectId: null,\n title: 'Existing App 1',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n {\n appHost: 'existing-host-2',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingAppId2,\n organizationId,\n projectId: null,\n title: 'Existing App 2',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n ])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n organizationId,\n },\n uri: `/user-applications`,\n }).reply(200, {\n appHost: 'generated-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: newAppId,\n organizationId,\n projectId: null,\n title: 'Test App',\n type: 'coreApp',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'coreApp',\n },\n uri: `/user-applications/${newAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n mockSelect.mockResolvedValue('NEW_APP')\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Application deployed')\n expect(stdout).toContain(\n `Add the deployment.appId to your sanity.cli.js or sanity.cli.ts file:`,\n )\n expect(stdout).toContain(`deployment: {\n appId: '${newAppId}',`)\n })\n\n test('should throw an error if organizationId is not set', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n app: {\n organizationId: undefined,\n },\n },\n },\n })\n\n expect(error?.message).toContain(\n 'sanity.cli.ts does not contain an organization identifier (\"app.organizationId\"), which is required for the Sanity CLI to communicate with the Sanity API',\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n\n describe('studio', () => {\n test('should handle missing sanity version', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n mockReadModuleVersion.mockResolvedValue(null)\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n studioHost: 'existing-studio',\n },\n },\n })\n\n expect(error?.message).toContain('Failed to find installed sanity version')\n })\n\n test('should handle directory check errors', async () => {\n const cwd = await testExample('basic-app')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'existing-studio'\n const studioAppId = 'studio-app-id'\n\n mockCheckDir.mockRejectedValue(new Error('Directory check failed'))\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, {\n appHost: studioHost,\n createdAt: '2024-01-01T00:00:00Z',\n id: studioAppId,\n projectId,\n title: 'Existing Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n const {error} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error?.message).toContain('Error checking directory')\n })\n\n test('should re-deploy studio if it already exists', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'existing-studio'\n const studioAppId = 'studio-app-id'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, {\n appHost: studioHost,\n createdAt: '2024-01-01T00:00:00Z',\n id: studioAppId,\n projectId,\n title: 'Existing Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${studioAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stderr, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stderr).toContain('Checking project info')\n expect(stderr).toContain('Verifying local content')\n expect(stderr).toContain('Deploying to sanity.studio')\n expect(stdout).toContain('Success! Studio deployed')\n })\n\n test('should create new studio hostname when studioHost is provided but does not exist', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: 'new-studio-host',\n appType: 'studio',\n },\n uri: `/projects/test-project-id/user-applications`,\n }).reply(404, {\n message: 'Not found',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/test-project-id/user-applications`,\n }).reply(200, {\n appHost: 'new-studio-host',\n createdAt: '2024-01-01T00:00:00Z',\n id: 'new-studio-app-id',\n projectId: 'test-project-id',\n title: 'New Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/test-project-id/user-applications/new-studio-app-id/deployments`,\n }).reply(200, {\n id: 'deployment-id',\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId: 'test-project-id',\n },\n studioHost: 'new-studio-host',\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Studio deployed')\n expect(stdout).toContain('Your project has not been assigned a studio hostname')\n expect(stdout).toContain('Creating https://new-studio-host.sanity.studio')\n })\n\n test('should handle studio hostname creation failure when name is taken', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'taken-studio-host'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(404, {\n message: 'Not found',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(409, {\n message: 'Studio hostname already taken',\n statusCode: 409,\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error?.message).toContain('Studio hostname already taken')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should allow selecting from existing studio hostnames', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n\n const studioOneId = 'studio-one-id'\n const studioTwoId = 'studio-two-id'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, [\n {\n appHost: 'studio-one',\n createdAt: '2024-01-01T00:00:00Z',\n id: studioOneId,\n projectId,\n title: 'Studio One',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n {\n appHost: 'studio-two',\n createdAt: '2024-01-01T00:00:00Z',\n id: studioTwoId,\n projectId,\n title: 'Studio Two',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n ])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${studioTwoId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n location: 'https://studio-two.sanity.studio',\n })\n\n mockSelect.mockResolvedValue('studio-two')\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Studio deployed to https://studio-two.sanity.studio')\n expect(mockSelect).toHaveBeenCalledWith({\n choices: [\n {name: 'Create new studio hostname', value: 'NEW_STUDIO'},\n expect.any(Object), // Separator\n {name: 'Studio One', value: 'studio-one'},\n {name: 'Studio Two', value: 'studio-two'},\n ],\n message: 'Select existing studio hostname, or create a new one',\n })\n })\n\n test('should allow creating new studio hostname from selection menu', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const existingStudioId = 'existing-studio-id'\n const newStudioFromMenuId = 'new-studio-from-menu-id'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n })\n .once()\n .reply(200, [\n {\n appHost: 'existing-studio',\n createdAt: '2024-01-01T00:00:00Z',\n id: existingStudioId,\n projectId,\n title: 'Existing Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n },\n ])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, {\n appHost: 'new-studio-from-menu',\n createdAt: '2024-01-01T00:00:00Z',\n id: newStudioFromMenuId,\n projectId,\n title: 'New Studio From Menu',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${newStudioFromMenuId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n mockSelect.mockResolvedValue('NEW_STUDIO')\n mockInput.mockImplementation(({validate}) => {\n const promise = (async () => {\n if (validate) {\n await validate('new-studio-from-menu')\n }\n return 'new-studio-from-menu'\n })() as Promise<string> & {cancel: () => void}\n\n promise.cancel = () => {}\n return promise\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Studio deployed')\n expect(mockInput).toHaveBeenCalledWith({\n message: 'Studio hostname (<value>.sanity.studio):',\n validate: expect.any(Function),\n })\n })\n\n test('should handle input validation with retry for studio hostname creation', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const validStudioId = 'valid-studio-id'\n const deploymentId = 'deployment-id'\n\n mockInput.mockImplementation(({validate}) => {\n const promise = (async () => {\n if (validate) {\n // First attempt with a name that will be taken (triggers 409)\n let result = await validate('taken-name')\n if (result !== true) {\n // Name was taken, try again with a valid name (triggers 200)\n result = await validate('valid-name')\n }\n }\n return 'valid-name'\n })() as Promise<string> & {cancel: () => void}\n\n promise.cancel = () => {}\n return promise\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, [])\n\n // First API call fails (hostname taken)\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n })\n .once()\n .reply(409, {\n message: 'Studio hostname already taken',\n statusCode: 409,\n })\n\n // Second API call succeeds\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n })\n .once()\n .reply(200, {\n appHost: 'valid-name',\n createdAt: '2024-01-01T00:00:00Z',\n id: validStudioId,\n projectId,\n title: 'Valid Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${validStudioId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Studio deployed')\n })\n\n test('should handle input validation fails with unknown error', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n\n mockInput.mockImplementation(({validate}) => {\n const promise = (async () => {\n if (validate) {\n // First attempt with a name that will be taken (triggers 409)\n let result = await validate('taken-name')\n if (result !== true) {\n // Name was taken, try again with a valid name (triggers 200)\n result = await validate('valid-name')\n }\n }\n return 'valid-name'\n })() as Promise<string> & {cancel: () => void}\n\n promise.cancel = () => {}\n return promise\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, [])\n\n // First API call fails (hostname taken)\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n })\n .once()\n .reply(500, {\n message: 'Internal server error',\n statusCode: 500,\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error creating user application')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should throw error when no projectId is configured', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {},\n studioHost: 'some-studio',\n },\n },\n })\n\n expect(error?.message).toContain(\n 'sanity.cli.ts does not contain a project identifier (\"api.projectId\"), which is required for the Sanity CLI to communicate with the Sanity API',\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should log a warning if the deprecated auto-updates flag is used', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'test-studio'\n\n const {stderr} = await testCommand(DeployCommand, ['--auto-updates'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(stderr).toContain('Warning: The --auto-updates flag is deprecated')\n })\n\n test('should throw an error when both the current and deprecated autoUpdates config are used', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n autoUpdates: true,\n deployment: {\n autoUpdates: true,\n },\n },\n },\n })\n\n expect(error?.message).toContain(\n 'Found both `autoUpdates` (deprecated) and `deployment.autoUpdates` in sanity.cli.',\n )\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should handle general API errors when finding user application', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'existing-studio'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(500, {\n error: 'Internal server error',\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error?.message).toContain('Error finding user application')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should handle deployment API errors for studio', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'existing-studio'\n const studioAppId = 'studio-app-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, {\n appHost: studioHost,\n createdAt: '2024-01-01T00:00:00Z',\n id: studioAppId,\n projectId,\n title: 'Existing Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${studioAppId}/deployments`,\n }).reply(500, {\n error: 'Internal server error',\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error?.message).toContain('Error deploying studio')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should handle fatal errors during studio hostname creation', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'new-studio-host'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(404, {\n message: 'Not found',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(500, {\n message: 'Internal server error',\n statusCode: 500,\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error?.message).toContain('Error creating user application from config')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should handle no existing studio applications scenario', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const newStudioId = 'new-studio-id'\n const deploymentId = 'deployment-id'\n\n mockInput.mockImplementation(({validate}) => {\n const promise = (async () => {\n if (validate) {\n await validate('new-studio-name')\n }\n return 'new-studio-name'\n })() as Promise<string> & {cancel: () => void}\n\n promise.cancel = () => {}\n return promise\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, [])\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, {\n appHost: 'new-studio-name',\n createdAt: '2024-01-01T00:00:00Z',\n id: newStudioId,\n projectId,\n title: 'New Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${newStudioId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Studio deployed')\n expect(mockInput).toHaveBeenCalledWith({\n message: 'Studio hostname (<value>.sanity.studio):',\n validate: expect.any(Function),\n })\n })\n\n test('should skip build when --no-build flag is used for studio', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioHost = 'existing-studio'\n const studioAppId = 'studio-app-id'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n query: {\n appHost: studioHost,\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications`,\n }).reply(200, {\n appHost: studioHost,\n createdAt: '2024-01-01T00:00:00Z',\n id: studioAppId,\n projectId,\n title: 'Existing Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${studioAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, ['--no-build'], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n studioHost,\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain('Success! Studio deployed')\n expect(mockBuildStudio).not.toHaveBeenCalled()\n })\n\n test('should deploy studio using deployment.appId', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioAppId = 'studio-app-id'\n const appHost = 'my-studio'\n const deploymentId = 'deployment-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n uri: `/projects/${projectId}/user-applications/${studioAppId}`,\n }).reply(200, {\n appHost,\n createdAt: '2024-01-01T00:00:00Z',\n id: studioAppId,\n projectId,\n title: 'My Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${studioAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n location: `https://${appHost}.sanity.studio`,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n deployment: {\n appId: studioAppId,\n },\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain(`Success! Studio deployed to https://${appHost}.sanity.studio`)\n })\n\n test('should prioritize deployment.appId over studioHost when both are configured', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioAppId = 'studio-app-id'\n const studioHost = 'my-studio-host'\n const deploymentId = 'deployment-id'\n\n // Should call by appId, NOT by appHost\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n uri: `/projects/${projectId}/user-applications/${studioAppId}`,\n }).reply(200, {\n appHost: studioHost,\n createdAt: '2024-01-01T00:00:00Z',\n id: studioAppId,\n projectId,\n title: 'My Studio',\n type: 'studio',\n updatedAt: '2024-01-01T00:00:00Z',\n urlType: 'internal',\n })\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n method: 'post',\n query: {\n appType: 'studio',\n },\n uri: `/projects/${projectId}/user-applications/${studioAppId}/deployments`,\n }).reply(200, {\n id: deploymentId,\n location: `https://${studioHost}.sanity.studio`,\n })\n\n const {error, stdout} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n deployment: {\n appId: studioAppId,\n },\n studioHost,\n },\n },\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain(`Success! Studio deployed to https://${studioHost}.sanity.studio`)\n })\n\n test('should handle error when deployment.appId does not exist for the org', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioAppId = 'non-existent-app-id'\n\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n uri: `/projects/${projectId}/user-applications/${studioAppId}`,\n }).reply(404, {\n message: 'Application not found',\n })\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n deployment: {\n appId: studioAppId,\n },\n },\n },\n })\n\n expect(error?.message).toContain('Error finding user application')\n expect(error?.message).toContain(`Cannot find app with app ID ${studioAppId}`)\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('should not fall back to studioHost when deployment.appId is configured but does not exist', async () => {\n const cwd = await testExample('basic-studio')\n process.cwd = () => cwd\n\n const projectId = 'test-project-id'\n const studioAppId = 'non-existent-app-id'\n const studioHost = 'valid-studio-host'\n\n // appId lookup fails\n mockApi({\n apiVersion: USER_APPLICATIONS_API_VERSION,\n uri: `/projects/${projectId}/user-applications/${studioAppId}`,\n }).reply(404, {\n message: 'Application not found',\n })\n\n // Should NOT make a call to studioHost - if it does, this mock will remain unused\n // and cause the test to fail due to pending mocks check\n\n const {error} = await testCommand(DeployCommand, [], {\n config: {root: cwd},\n mocks: {\n cliConfig: {\n api: {\n projectId,\n },\n deployment: {\n appId: studioAppId,\n },\n studioHost, // This should NOT be used as fallback\n },\n },\n })\n\n expect(error?.message).toContain('Error finding user application')\n expect(error?.message).toContain(`Cannot find app with app ID ${studioAppId}`)\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n})\n"],"names":["runCommand","confirm","input","select","mockApi","testCommand","nock","afterEach","beforeEach","describe","expect","test","vi","testExample","buildApp","buildStudio","checkDir","USER_APPLICATIONS_API_VERSION","dirIsEmptyOrNonExistent","readModuleVersion","DeployCommand","mock","fn","actual","importActual","pack","pipe","mockSelect","mocked","mockConfirm","mockInput","mockCheckDir","mockDirIsEmptyOrNonExistent","mockReadModuleVersion","mockBuildStudio","mockBuildApp","appId","organizationId","defaultMocks","cliConfig","app","deployment","mockImplementation","sourceDir","moduleName","mockResolvedValue","clearAllMocks","pending","pendingMocks","cleanAll","toEqual","stdout","toMatchInlineSnapshot","error","message","toContain","cwd","process","apiVersion","query","appType","uri","reply","appHost","createdAt","id","projectId","title","type","updatedAt","urlType","method","config","root","mocks","toBeUndefined","toHaveBeenCalledWith","default","oclif","exit","toBe","stderr","newAppId","deploymentId","validate","any","Function","existingAppId","not","toHaveBeenCalled","mockRejectedValue","Error","anotherAppId","anotherOrganizationId","nonExistentAppId","once","statusCode","existingAppId1","existingAppId2","undefined","studioHost","studioAppId","api","studioOneId","studioTwoId","location","choices","name","value","Object","existingStudioId","newStudioFromMenuId","promise","cancel","validStudioId","result","autoUpdates","newStudioId"],"mappings":"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"}
|