@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,132 +0,0 @@
|
|
|
1
|
-
import { readdir, readFile } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { runCommand } from '@oclif/test';
|
|
4
|
-
import { testCommand } from '@sanity/cli-test';
|
|
5
|
-
import { describe, expect, test } from 'vitest';
|
|
6
|
-
import { testExample } from '~test/helpers/testExample.js';
|
|
7
|
-
import { BuildCommand } from '../build.js';
|
|
8
|
-
describe('#build', // might help with speed of tests if not ran concurrently
|
|
9
|
-
{
|
|
10
|
-
concurrent: false
|
|
11
|
-
}, ()=>{
|
|
12
|
-
test('help text is correct', async ()=>{
|
|
13
|
-
const { stdout } = await runCommand('build --help');
|
|
14
|
-
expect(stdout).toMatchInlineSnapshot(`
|
|
15
|
-
"Builds the Sanity Studio configuration into a static bundle
|
|
16
|
-
|
|
17
|
-
USAGE
|
|
18
|
-
$ sanity build [OUTPUTDIR] [--auto-updates] [--minify]
|
|
19
|
-
[--source-maps] [--stats] [-y]
|
|
20
|
-
|
|
21
|
-
ARGUMENTS
|
|
22
|
-
[OUTPUTDIR] Output directory
|
|
23
|
-
|
|
24
|
-
FLAGS
|
|
25
|
-
-y, --yes Unattended mode, answers "yes" to any "yes/no" prompt
|
|
26
|
-
and otherwise uses defaults
|
|
27
|
-
--[no-]auto-updates Enable/disable auto updates of studio versions
|
|
28
|
-
--[no-]minify Enable/disable minifying of built bundles
|
|
29
|
-
--[no-]source-maps Enable source maps for built bundles (increases size
|
|
30
|
-
of bundle)
|
|
31
|
-
--stats Show stats about the built bundles
|
|
32
|
-
|
|
33
|
-
DESCRIPTION
|
|
34
|
-
Builds the Sanity Studio configuration into a static bundle
|
|
35
|
-
|
|
36
|
-
EXAMPLES
|
|
37
|
-
$ sanity build
|
|
38
|
-
|
|
39
|
-
$ sanity build --no-minify --source-maps
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
`);
|
|
43
|
-
});
|
|
44
|
-
test('shows an error for invalid flags', async ()=>{
|
|
45
|
-
const { error } = await testCommand(BuildCommand, [
|
|
46
|
-
'--invalid'
|
|
47
|
-
]);
|
|
48
|
-
expect(error?.message).toContain('Nonexistent flag: --invalid');
|
|
49
|
-
});
|
|
50
|
-
test('should build the "basic-studio" example', async ()=>{
|
|
51
|
-
const cwd = await testExample('basic-studio');
|
|
52
|
-
process.chdir(cwd);
|
|
53
|
-
const { error, stderr, stdout } = await testCommand(BuildCommand, [
|
|
54
|
-
'--yes'
|
|
55
|
-
], {
|
|
56
|
-
config: {
|
|
57
|
-
root: cwd
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
// Assert things here
|
|
61
|
-
expect(error).toBeUndefined();
|
|
62
|
-
expect(stdout).toContain(`Building with auto-updates enabled`);
|
|
63
|
-
expect(stderr).toContain('✔ Clean output folder');
|
|
64
|
-
expect(stderr).toContain(`✔ Build Sanity Studio`);
|
|
65
|
-
const outputFolder = join(cwd, 'dist');
|
|
66
|
-
const files = await readdir(outputFolder);
|
|
67
|
-
expect(files).toContain('index.html');
|
|
68
|
-
expect(files).toContain('static');
|
|
69
|
-
});
|
|
70
|
-
test('should build the "basic-app" example', async ()=>{
|
|
71
|
-
const cwd = await testExample('basic-app');
|
|
72
|
-
process.chdir(cwd);
|
|
73
|
-
const { error, stderr } = await testCommand(BuildCommand, [
|
|
74
|
-
'--yes'
|
|
75
|
-
], {
|
|
76
|
-
config: {
|
|
77
|
-
root: cwd
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
expect(error).toBeUndefined();
|
|
81
|
-
expect(stderr).toContain('Clean output folder');
|
|
82
|
-
expect(stderr).toContain(`Build Sanity application`);
|
|
83
|
-
const outputFolder = join(cwd, 'dist');
|
|
84
|
-
const files = await readdir(outputFolder);
|
|
85
|
-
expect(files).toContain('index.html');
|
|
86
|
-
expect(files).toContain('static');
|
|
87
|
-
});
|
|
88
|
-
test('should build the "basic-app" example with auto-updates', async ()=>{
|
|
89
|
-
const cwd = await testExample('basic-app');
|
|
90
|
-
process.chdir(cwd);
|
|
91
|
-
const { error, stderr, stdout } = await testCommand(BuildCommand, [
|
|
92
|
-
'--yes'
|
|
93
|
-
], {
|
|
94
|
-
config: {
|
|
95
|
-
root: cwd
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
expect(error).toBeUndefined();
|
|
99
|
-
expect(stdout).toContain(`Building with auto-updates enabled`);
|
|
100
|
-
expect(stderr).toContain('Clean output folder');
|
|
101
|
-
expect(stderr).toContain(`Build Sanity application`);
|
|
102
|
-
const outputFolder = join(cwd, 'dist');
|
|
103
|
-
const files = await readdir(outputFolder);
|
|
104
|
-
expect(files).toContain('index.html');
|
|
105
|
-
expect(files).toContain('static');
|
|
106
|
-
const indexHtml = await readFile(join(outputFolder, 'index.html'), 'utf8');
|
|
107
|
-
expect(indexHtml).toContain('importmap');
|
|
108
|
-
});
|
|
109
|
-
// TODO: Fix this so it works in CI
|
|
110
|
-
test.skip("should build the 'worst-case-studio' example", {
|
|
111
|
-
timeout: 15_000
|
|
112
|
-
}, async ()=>{
|
|
113
|
-
const cwd = await testExample('worst-case-studio');
|
|
114
|
-
process.chdir(cwd);
|
|
115
|
-
const { error, stderr } = await testCommand(BuildCommand, [
|
|
116
|
-
'--yes'
|
|
117
|
-
], {
|
|
118
|
-
config: {
|
|
119
|
-
root: cwd
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
expect(error).toBeUndefined();
|
|
123
|
-
expect(stderr).toContain('Clean output folder');
|
|
124
|
-
expect(stderr).toContain(`Build Sanity Studio`);
|
|
125
|
-
const outputFolder = join(cwd, 'dist');
|
|
126
|
-
const files = await readdir(outputFolder);
|
|
127
|
-
expect(files).toContain('index.html');
|
|
128
|
-
expect(files).toContain('static');
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
//# sourceMappingURL=build.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/__tests__/build.test.ts"],"sourcesContent":["import {readdir, readFile} from 'node:fs/promises'\nimport {join} from 'node:path'\n\nimport {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport {describe, expect, test} from 'vitest'\nimport {testExample} from '~test/helpers/testExample.js'\n\nimport {BuildCommand} from '../build.js'\n\ndescribe(\n '#build',\n // might help with speed of tests if not ran concurrently\n {concurrent: false},\n () => {\n test('help text is correct', async () => {\n const {stdout} = await runCommand('build --help')\n expect(stdout).toMatchInlineSnapshot(`\n \"Builds the Sanity Studio configuration into a static bundle\n\n USAGE\n $ sanity build [OUTPUTDIR] [--auto-updates] [--minify]\n [--source-maps] [--stats] [-y]\n\n ARGUMENTS\n [OUTPUTDIR] Output 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 Enable/disable auto updates of studio versions\n --[no-]minify Enable/disable minifying of built bundles\n --[no-]source-maps Enable source maps for built bundles (increases size\n of bundle)\n --stats Show stats about the built bundles\n\n DESCRIPTION\n Builds the Sanity Studio configuration into a static bundle\n\n EXAMPLES\n $ sanity build\n\n $ sanity build --no-minify --source-maps\n\n \"\n `)\n })\n test('shows an error for invalid flags', async () => {\n const {error} = await testCommand(BuildCommand, ['--invalid'])\n\n expect(error?.message).toContain('Nonexistent flag: --invalid')\n })\n\n test('should build the \"basic-studio\" example', async () => {\n const cwd = await testExample('basic-studio')\n process.chdir(cwd)\n\n const {error, stderr, stdout} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n // Assert things here\n expect(error).toBeUndefined()\n expect(stdout).toContain(`Building with auto-updates enabled`)\n expect(stderr).toContain('✔ Clean output folder')\n expect(stderr).toContain(`✔ Build Sanity Studio`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n })\n\n test('should build the \"basic-app\" example', async () => {\n const cwd = await testExample('basic-app')\n process.chdir(cwd)\n\n const {error, stderr} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n expect(error).toBeUndefined()\n expect(stderr).toContain('Clean output folder')\n expect(stderr).toContain(`Build Sanity application`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n })\n\n test('should build the \"basic-app\" example with auto-updates', async () => {\n const cwd = await testExample('basic-app')\n process.chdir(cwd)\n\n const {error, stderr, stdout} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n expect(error).toBeUndefined()\n expect(stdout).toContain(`Building with auto-updates enabled`)\n expect(stderr).toContain('Clean output folder')\n expect(stderr).toContain(`Build Sanity application`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n\n const indexHtml = await readFile(join(outputFolder, 'index.html'), 'utf8')\n expect(indexHtml).toContain('importmap')\n })\n\n // TODO: Fix this so it works in CI\n test.skip(\"should build the 'worst-case-studio' example\", {timeout: 15_000}, async () => {\n const cwd = await testExample('worst-case-studio')\n process.chdir(cwd)\n\n const {error, stderr} = await testCommand(BuildCommand, ['--yes'], {\n config: {root: cwd},\n })\n\n expect(error).toBeUndefined()\n expect(stderr).toContain('Clean output folder')\n expect(stderr).toContain(`Build Sanity Studio`)\n\n const outputFolder = join(cwd, 'dist')\n const files = await readdir(outputFolder)\n expect(files).toContain('index.html')\n expect(files).toContain('static')\n })\n },\n)\n"],"names":["readdir","readFile","join","runCommand","testCommand","describe","expect","test","testExample","BuildCommand","concurrent","stdout","toMatchInlineSnapshot","error","message","toContain","cwd","process","chdir","stderr","config","root","toBeUndefined","outputFolder","files","indexHtml","skip","timeout"],"mappings":"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"}
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
import { execSync, spawn } from 'node:child_process';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
|
-
import { runCommand } from '@oclif/test';
|
|
4
|
-
import { testCommand } from '@sanity/cli-test';
|
|
5
|
-
import { afterEach, describe, expect, test, vi } from 'vitest';
|
|
6
|
-
import { getLocalPackageVersion } from '../../util/getLocalPackageVersion.js';
|
|
7
|
-
import { CodemodCommand } from '../codemod.js';
|
|
8
|
-
vi.mock('../../util/getLocalPackageVersion.js', ()=>({
|
|
9
|
-
getLocalPackageVersion: vi.fn()
|
|
10
|
-
}));
|
|
11
|
-
vi.mock('node:child_process');
|
|
12
|
-
vi.mock('node:fs');
|
|
13
|
-
const mockGetLocalPackageVersion = vi.mocked(getLocalPackageVersion);
|
|
14
|
-
const mockSpawn = vi.mocked(spawn);
|
|
15
|
-
const mockExecSync = vi.mocked(execSync);
|
|
16
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
17
|
-
const createSpawnMock = (exitCode = 0)=>{
|
|
18
|
-
const killMock = vi.fn();
|
|
19
|
-
const onMock = vi.fn((event, cb)=>{
|
|
20
|
-
if (event === 'close') cb(exitCode);
|
|
21
|
-
});
|
|
22
|
-
const childProcess = {
|
|
23
|
-
kill: killMock,
|
|
24
|
-
on: onMock
|
|
25
|
-
};
|
|
26
|
-
const spawnMock = vi.fn().mockReturnValue(childProcess);
|
|
27
|
-
mockSpawn.mockImplementation(spawnMock);
|
|
28
|
-
return {
|
|
29
|
-
childProcess,
|
|
30
|
-
killMock,
|
|
31
|
-
onMock,
|
|
32
|
-
spawnMock
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
const setupBasicMocks = (options = {})=>{
|
|
36
|
-
const defaults = {
|
|
37
|
-
exitCode: 0,
|
|
38
|
-
gitIgnoreExists: false,
|
|
39
|
-
npxOutput: 'npm exec',
|
|
40
|
-
packageVersion: '4.0.0'
|
|
41
|
-
};
|
|
42
|
-
const config = {
|
|
43
|
-
...defaults,
|
|
44
|
-
...options
|
|
45
|
-
};
|
|
46
|
-
if (config.packageVersion !== null) {
|
|
47
|
-
mockGetLocalPackageVersion.mockResolvedValue(config.packageVersion);
|
|
48
|
-
}
|
|
49
|
-
mockExistsSync.mockReturnValue(config.gitIgnoreExists);
|
|
50
|
-
mockExecSync.mockReturnValue(config.npxOutput);
|
|
51
|
-
return createSpawnMock(config.exitCode);
|
|
52
|
-
};
|
|
53
|
-
describe('#codemod', ()=>{
|
|
54
|
-
afterEach(()=>{
|
|
55
|
-
vi.clearAllMocks();
|
|
56
|
-
});
|
|
57
|
-
test('outputs empty string for help command', async ()=>{
|
|
58
|
-
const { stdout } = await runCommand('codemod --help');
|
|
59
|
-
expect(stdout).toMatchInlineSnapshot(`
|
|
60
|
-
"Updates Sanity Studio codebase with a code modification script
|
|
61
|
-
|
|
62
|
-
USAGE
|
|
63
|
-
$ sanity codemod [CODEMODNAME] [--dry] [--extensions <value>]
|
|
64
|
-
[--no-verify]
|
|
65
|
-
|
|
66
|
-
ARGUMENTS
|
|
67
|
-
[CODEMODNAME] Name of the codemod to run
|
|
68
|
-
|
|
69
|
-
FLAGS
|
|
70
|
-
--dry Dry run (no changes are made to files)
|
|
71
|
-
--extensions=<value> [default: js,ts,tsx] Transform files with these file
|
|
72
|
-
extensions (comma separated)
|
|
73
|
-
--no-verify Skip verification steps before running codemod
|
|
74
|
-
|
|
75
|
-
DESCRIPTION
|
|
76
|
-
Updates Sanity Studio codebase with a code modification script
|
|
77
|
-
|
|
78
|
-
EXAMPLES
|
|
79
|
-
Show available code mods
|
|
80
|
-
|
|
81
|
-
$ sanity codemod
|
|
82
|
-
|
|
83
|
-
Run codemod to transform react-icons imports (dry run)
|
|
84
|
-
|
|
85
|
-
$ sanity codemod reactIconsV3 --dry
|
|
86
|
-
|
|
87
|
-
"
|
|
88
|
-
`);
|
|
89
|
-
});
|
|
90
|
-
test('lists available codemods when no name provided', async ()=>{
|
|
91
|
-
const { stdout } = await testCommand(CodemodCommand, [
|
|
92
|
-
''
|
|
93
|
-
]);
|
|
94
|
-
expect(stdout).toContain('Available code modifications:');
|
|
95
|
-
expect(stdout).toContain('reactIconsV3');
|
|
96
|
-
expect(stdout).toContain('partsTypeDirective');
|
|
97
|
-
expect(stdout).toContain('deskRename');
|
|
98
|
-
});
|
|
99
|
-
test('validates codemod exists', async ()=>{
|
|
100
|
-
const { error } = await testCommand(CodemodCommand, [
|
|
101
|
-
'nonexistent'
|
|
102
|
-
]);
|
|
103
|
-
expect(error?.message).toContain('Codemod with name "nonexistent" not found');
|
|
104
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
105
|
-
});
|
|
106
|
-
test('handles case-insensitive codemod names', async ()=>{
|
|
107
|
-
const { spawnMock } = setupBasicMocks();
|
|
108
|
-
await testCommand(CodemodCommand, [
|
|
109
|
-
'REACTICONSV3'
|
|
110
|
-
]);
|
|
111
|
-
expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
|
|
112
|
-
'jscodeshift',
|
|
113
|
-
'-t',
|
|
114
|
-
expect.stringContaining('reactIconsV3.js')
|
|
115
|
-
]), expect.any(Object));
|
|
116
|
-
});
|
|
117
|
-
test('runs codemod with dry flag', async ()=>{
|
|
118
|
-
const { spawnMock } = setupBasicMocks();
|
|
119
|
-
await testCommand(CodemodCommand, [
|
|
120
|
-
'reactIconsV3',
|
|
121
|
-
'--dry'
|
|
122
|
-
]);
|
|
123
|
-
expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
|
|
124
|
-
'jscodeshift',
|
|
125
|
-
'--dry'
|
|
126
|
-
]), expect.any(Object));
|
|
127
|
-
});
|
|
128
|
-
test('skips verification when --no-verify flag is used', async ()=>{
|
|
129
|
-
const { spawnMock } = setupBasicMocks({
|
|
130
|
-
packageVersion: null
|
|
131
|
-
});
|
|
132
|
-
await testCommand(CodemodCommand, [
|
|
133
|
-
'reactIconsV3',
|
|
134
|
-
'--no-verify'
|
|
135
|
-
]);
|
|
136
|
-
expect(mockGetLocalPackageVersion).not.toHaveBeenCalled();
|
|
137
|
-
expect(spawnMock).toHaveBeenCalled();
|
|
138
|
-
});
|
|
139
|
-
test('uses gitignore when present', async ()=>{
|
|
140
|
-
const { spawnMock } = setupBasicMocks({
|
|
141
|
-
gitIgnoreExists: true
|
|
142
|
-
});
|
|
143
|
-
await testCommand(CodemodCommand, [
|
|
144
|
-
'partsTypeDirective'
|
|
145
|
-
]);
|
|
146
|
-
expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
|
|
147
|
-
'--ignore-config',
|
|
148
|
-
'.gitignore'
|
|
149
|
-
]), expect.any(Object));
|
|
150
|
-
});
|
|
151
|
-
describe('extension handling', ()=>{
|
|
152
|
-
test.each([
|
|
153
|
-
{
|
|
154
|
-
description: 'handles custom extensions',
|
|
155
|
-
expected: 'jsx,mjs',
|
|
156
|
-
input: 'jsx,mjs'
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
description: 'normalizes extension handling with dots',
|
|
160
|
-
expected: 'tsx,ts',
|
|
161
|
-
input: '.tsx,.ts'
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
description: 'handles extensions with spaces and mixed formatting',
|
|
165
|
-
expected: 'jsx,mjs,ts',
|
|
166
|
-
input: ' .jsx , .mjs , ts '
|
|
167
|
-
}
|
|
168
|
-
])('$description', async ({ expected, input })=>{
|
|
169
|
-
const { spawnMock } = setupBasicMocks({
|
|
170
|
-
packageVersion: null
|
|
171
|
-
});
|
|
172
|
-
await testCommand(CodemodCommand, [
|
|
173
|
-
'partsTypeDirective',
|
|
174
|
-
'--extensions',
|
|
175
|
-
input
|
|
176
|
-
]);
|
|
177
|
-
expect(spawnMock).toHaveBeenCalledWith('npx', expect.arrayContaining([
|
|
178
|
-
'--extensions',
|
|
179
|
-
expected
|
|
180
|
-
]), expect.any(Object));
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
describe('npx availability', ()=>{
|
|
184
|
-
test.each([
|
|
185
|
-
{
|
|
186
|
-
description: 'throws error when npx is not available',
|
|
187
|
-
expectedError: 'Failed to run "npx"',
|
|
188
|
-
mockImpl: ()=>{
|
|
189
|
-
throw new Error('Command not found');
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
description: 'throws error when npx help output does not contain npm',
|
|
194
|
-
expectedError: 'Failed to run "npx" - required to run codemods. Do you have a recent version of npm installed?',
|
|
195
|
-
mockImpl: ()=>'some other tool help that does not include'
|
|
196
|
-
}
|
|
197
|
-
])('$description', async ({ expectedError, mockImpl })=>{
|
|
198
|
-
mockExecSync.mockImplementationOnce(mockImpl);
|
|
199
|
-
const { error } = await testCommand(CodemodCommand, [
|
|
200
|
-
'partsTypeDirective'
|
|
201
|
-
]);
|
|
202
|
-
expect(error?.message).toContain(expectedError);
|
|
203
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
describe('react-icons verification', ()=>{
|
|
207
|
-
test('runs verification for reactIconsV3 codemod', async ()=>{
|
|
208
|
-
const { spawnMock } = setupBasicMocks();
|
|
209
|
-
await testCommand(CodemodCommand, [
|
|
210
|
-
'reactIconsV3'
|
|
211
|
-
]);
|
|
212
|
-
expect(mockGetLocalPackageVersion).toHaveBeenCalledWith('react-icons', process.cwd());
|
|
213
|
-
expect(spawnMock).toHaveBeenCalled();
|
|
214
|
-
});
|
|
215
|
-
test.each([
|
|
216
|
-
{
|
|
217
|
-
description: 'throws error when react-icons is not found',
|
|
218
|
-
expectedError: 'Could not find react-icons declared as dependency in package.json',
|
|
219
|
-
version: undefined
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
description: 'throws error when react-icons version is below 3.0.0',
|
|
223
|
-
expectedError: 'react-icons declared in package.json dependencies is lower than 3.0.0',
|
|
224
|
-
version: '2.8.0'
|
|
225
|
-
}
|
|
226
|
-
])('$description', async ({ expectedError, version })=>{
|
|
227
|
-
mockGetLocalPackageVersion.mockResolvedValue(version);
|
|
228
|
-
const { error } = await testCommand(CodemodCommand, [
|
|
229
|
-
'reactIconsV3'
|
|
230
|
-
]);
|
|
231
|
-
expect(error?.message).toContain(expectedError);
|
|
232
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
describe('process management', ()=>{
|
|
236
|
-
test('handles child process exit with non-zero code', async ()=>{
|
|
237
|
-
setupBasicMocks({
|
|
238
|
-
exitCode: 1
|
|
239
|
-
});
|
|
240
|
-
const { error } = await testCommand(CodemodCommand, [
|
|
241
|
-
'partsTypeDirective'
|
|
242
|
-
]);
|
|
243
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
244
|
-
});
|
|
245
|
-
test('handles SIGINT signal by killing child process', async ()=>{
|
|
246
|
-
const { killMock } = setupBasicMocks();
|
|
247
|
-
const originalProcessOn = process.on;
|
|
248
|
-
const processOnMock = vi.fn((event, handler)=>{
|
|
249
|
-
if (event === 'SIGINT') {
|
|
250
|
-
// Immediately call the handler to simulate SIGINT
|
|
251
|
-
;
|
|
252
|
-
handler();
|
|
253
|
-
}
|
|
254
|
-
return originalProcessOn.call(process, event, handler);
|
|
255
|
-
});
|
|
256
|
-
process.on = processOnMock;
|
|
257
|
-
try {
|
|
258
|
-
const { error } = await testCommand(CodemodCommand, [
|
|
259
|
-
'partsTypeDirective'
|
|
260
|
-
]);
|
|
261
|
-
expect(killMock).toHaveBeenCalledWith(2);
|
|
262
|
-
expect(error?.oclif?.exit).toBe(0);
|
|
263
|
-
} finally{
|
|
264
|
-
process.on = originalProcessOn;
|
|
265
|
-
process.removeAllListeners('SIGINT');
|
|
266
|
-
}
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
//# sourceMappingURL=codemod.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/__tests__/codemod.test.ts"],"sourcesContent":["import {execSync, spawn} from 'node:child_process'\nimport {existsSync} from 'node:fs'\n\nimport {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {getLocalPackageVersion} from '../../util/getLocalPackageVersion.js'\nimport {CodemodCommand} from '../codemod.js'\n\nvi.mock('../../util/getLocalPackageVersion.js', () => ({\n getLocalPackageVersion: vi.fn(),\n}))\n\nvi.mock('node:child_process')\nvi.mock('node:fs')\n\nconst mockGetLocalPackageVersion = vi.mocked(getLocalPackageVersion)\nconst mockSpawn = vi.mocked(spawn)\nconst mockExecSync = vi.mocked(execSync)\nconst mockExistsSync = vi.mocked(existsSync)\n\nconst createSpawnMock = (exitCode = 0) => {\n const killMock = vi.fn()\n const onMock = vi.fn((event, cb) => {\n if (event === 'close') cb(exitCode)\n })\n const childProcess = {\n kill: killMock,\n on: onMock,\n }\n const spawnMock = vi.fn().mockReturnValue(childProcess)\n mockSpawn.mockImplementation(spawnMock)\n return {childProcess, killMock, onMock, spawnMock}\n}\n\nconst setupBasicMocks = (options = {}) => {\n const defaults = {\n exitCode: 0,\n gitIgnoreExists: false,\n npxOutput: 'npm exec',\n packageVersion: '4.0.0',\n }\n const config = {...defaults, ...options}\n\n if (config.packageVersion !== null) {\n mockGetLocalPackageVersion.mockResolvedValue(config.packageVersion)\n }\n mockExistsSync.mockReturnValue(config.gitIgnoreExists)\n mockExecSync.mockReturnValue(config.npxOutput)\n\n return createSpawnMock(config.exitCode)\n}\n\ndescribe('#codemod', () => {\n afterEach(() => {\n vi.clearAllMocks()\n })\n\n test('outputs empty string for help command', async () => {\n const {stdout} = await runCommand('codemod --help')\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Updates Sanity Studio codebase with a code modification script\n\n USAGE\n $ sanity codemod [CODEMODNAME] [--dry] [--extensions <value>]\n [--no-verify]\n\n ARGUMENTS\n [CODEMODNAME] Name of the codemod to run\n\n FLAGS\n --dry Dry run (no changes are made to files)\n --extensions=<value> [default: js,ts,tsx] Transform files with these file\n extensions (comma separated)\n --no-verify Skip verification steps before running codemod\n\n DESCRIPTION\n Updates Sanity Studio codebase with a code modification script\n\n EXAMPLES\n Show available code mods\n\n $ sanity codemod\n\n Run codemod to transform react-icons imports (dry run)\n\n $ sanity codemod reactIconsV3 --dry\n\n \"\n `)\n })\n\n test('lists available codemods when no name provided', async () => {\n const {stdout} = await testCommand(CodemodCommand, [''])\n\n expect(stdout).toContain('Available code modifications:')\n expect(stdout).toContain('reactIconsV3')\n expect(stdout).toContain('partsTypeDirective')\n expect(stdout).toContain('deskRename')\n })\n\n test('validates codemod exists', async () => {\n const {error} = await testCommand(CodemodCommand, ['nonexistent'])\n\n expect(error?.message).toContain('Codemod with name \"nonexistent\" not found')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles case-insensitive codemod names', async () => {\n const {spawnMock} = setupBasicMocks()\n\n await testCommand(CodemodCommand, ['REACTICONSV3'])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['jscodeshift', '-t', expect.stringContaining('reactIconsV3.js')]),\n expect.any(Object),\n )\n })\n\n test('runs codemod with dry flag', async () => {\n const {spawnMock} = setupBasicMocks()\n\n await testCommand(CodemodCommand, ['reactIconsV3', '--dry'])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['jscodeshift', '--dry']),\n expect.any(Object),\n )\n })\n\n test('skips verification when --no-verify flag is used', async () => {\n const {spawnMock} = setupBasicMocks({packageVersion: null})\n\n await testCommand(CodemodCommand, ['reactIconsV3', '--no-verify'])\n\n expect(mockGetLocalPackageVersion).not.toHaveBeenCalled()\n expect(spawnMock).toHaveBeenCalled()\n })\n\n test('uses gitignore when present', async () => {\n const {spawnMock} = setupBasicMocks({gitIgnoreExists: true})\n\n await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['--ignore-config', '.gitignore']),\n expect.any(Object),\n )\n })\n\n describe('extension handling', () => {\n test.each([\n {\n description: 'handles custom extensions',\n expected: 'jsx,mjs',\n input: 'jsx,mjs',\n },\n {\n description: 'normalizes extension handling with dots',\n expected: 'tsx,ts',\n input: '.tsx,.ts',\n },\n {\n description: 'handles extensions with spaces and mixed formatting',\n expected: 'jsx,mjs,ts',\n input: ' .jsx , .mjs , ts ',\n },\n ])('$description', async ({expected, input}) => {\n const {spawnMock} = setupBasicMocks({packageVersion: null})\n\n await testCommand(CodemodCommand, ['partsTypeDirective', '--extensions', input])\n\n expect(spawnMock).toHaveBeenCalledWith(\n 'npx',\n expect.arrayContaining(['--extensions', expected]),\n expect.any(Object),\n )\n })\n })\n\n describe('npx availability', () => {\n test.each([\n {\n description: 'throws error when npx is not available',\n expectedError: 'Failed to run \"npx\"',\n mockImpl: () => {\n throw new Error('Command not found')\n },\n },\n {\n description: 'throws error when npx help output does not contain npm',\n expectedError:\n 'Failed to run \"npx\" - required to run codemods. Do you have a recent version of npm installed?',\n mockImpl: () => 'some other tool help that does not include',\n },\n ])('$description', async ({expectedError, mockImpl}) => {\n mockExecSync.mockImplementationOnce(mockImpl)\n\n const {error} = await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(error?.message).toContain(expectedError)\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n\n describe('react-icons verification', () => {\n test('runs verification for reactIconsV3 codemod', async () => {\n const {spawnMock} = setupBasicMocks()\n\n await testCommand(CodemodCommand, ['reactIconsV3'])\n\n expect(mockGetLocalPackageVersion).toHaveBeenCalledWith('react-icons', process.cwd())\n expect(spawnMock).toHaveBeenCalled()\n })\n\n test.each([\n {\n description: 'throws error when react-icons is not found',\n expectedError: 'Could not find react-icons declared as dependency in package.json',\n version: undefined,\n },\n {\n description: 'throws error when react-icons version is below 3.0.0',\n expectedError: 'react-icons declared in package.json dependencies is lower than 3.0.0',\n version: '2.8.0',\n },\n ])('$description', async ({expectedError, version}) => {\n mockGetLocalPackageVersion.mockResolvedValue(version)\n\n const {error} = await testCommand(CodemodCommand, ['reactIconsV3'])\n\n expect(error?.message).toContain(expectedError)\n expect(error?.oclif?.exit).toBe(1)\n })\n })\n\n describe('process management', () => {\n test('handles child process exit with non-zero code', async () => {\n setupBasicMocks({exitCode: 1})\n\n const {error} = await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles SIGINT signal by killing child process', async () => {\n const {killMock} = setupBasicMocks()\n\n const originalProcessOn = process.on\n const processOnMock = vi.fn((event, handler) => {\n if (event === 'SIGINT') {\n // Immediately call the handler to simulate SIGINT\n ;(handler as () => void)()\n }\n return originalProcessOn.call(process, event, handler)\n })\n process.on = processOnMock as unknown as typeof process.on\n\n try {\n const {error} = await testCommand(CodemodCommand, ['partsTypeDirective'])\n\n expect(killMock).toHaveBeenCalledWith(2)\n expect(error?.oclif?.exit).toBe(0)\n } finally {\n process.on = originalProcessOn\n process.removeAllListeners('SIGINT')\n }\n })\n })\n})\n"],"names":["execSync","spawn","existsSync","runCommand","testCommand","afterEach","describe","expect","test","vi","getLocalPackageVersion","CodemodCommand","mock","fn","mockGetLocalPackageVersion","mocked","mockSpawn","mockExecSync","mockExistsSync","createSpawnMock","exitCode","killMock","onMock","event","cb","childProcess","kill","on","spawnMock","mockReturnValue","mockImplementation","setupBasicMocks","options","defaults","gitIgnoreExists","npxOutput","packageVersion","config","mockResolvedValue","clearAllMocks","stdout","toMatchInlineSnapshot","toContain","error","message","oclif","exit","toBe","toHaveBeenCalledWith","arrayContaining","stringContaining","any","Object","not","toHaveBeenCalled","each","description","expected","input","expectedError","mockImpl","Error","mockImplementationOnce","process","cwd","version","undefined","originalProcessOn","processOnMock","handler","call","removeAllListeners"],"mappings":"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"}
|