@sanity/cli 6.0.0-alpha.5 → 6.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/dataset/create.d.ts +49 -0
- package/dist/actions/dataset/create.js +48 -0
- package/dist/actions/dataset/create.js.map +1 -0
- package/dist/actions/dataset/determineDatasetAclMode.d.ts +37 -0
- package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
- package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
- package/dist/actions/debug/gatherDebugInfo.js +15 -21
- package/dist/actions/debug/gatherDebugInfo.js.map +1 -1
- package/dist/actions/debug/types.d.ts +0 -2
- package/dist/actions/debug/types.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +13 -0
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/init/remoteTemplate.js +1 -1
- package/dist/actions/init/remoteTemplate.js.map +1 -1
- package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
- package/dist/actions/manifest/extractAppManifest.js +51 -0
- package/dist/actions/manifest/extractAppManifest.js.map +1 -0
- package/dist/actions/manifest/extractManifest.js +1 -1
- package/dist/actions/manifest/extractManifest.js.map +1 -1
- package/dist/actions/manifest/types.d.ts +6 -1
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/media/importAspects.js +2 -1
- package/dist/actions/media/importAspects.js.map +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
- package/dist/commands/dataset/create.d.ts +0 -2
- package/dist/commands/dataset/create.js +8 -54
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/debug.js +5 -9
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/init.d.ts +6 -1
- package/dist/commands/init.js +358 -20
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/manifest/extract.js +7 -8
- package/dist/commands/manifest/extract.js.map +1 -1
- package/dist/config/createCliConfig.d.ts +9 -0
- package/dist/prompts/init/promptForTypescript.d.ts +2 -0
- package/dist/prompts/init/promptForTypescript.js +15 -0
- package/dist/prompts/init/promptForTypescript.js.map +1 -0
- package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
- package/dist/prompts/promptForDatasetAclMode.js +27 -0
- package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
- package/dist/prompts/promptForDatasetName.d.ts +1 -1
- package/dist/prompts/promptForDatasetName.js +4 -1
- package/dist/prompts/promptForDatasetName.js.map +1 -1
- package/dist/services/organizations.d.ts +3 -1
- package/dist/services/organizations.js +2 -1
- package/dist/services/organizations.js.map +1 -1
- package/dist/services/user.d.ts +5 -0
- package/dist/services/user.js +12 -1
- package/dist/services/user.js.map +1 -1
- package/dist/services/userApplications.d.ts +3 -1
- package/dist/services/userApplications.js +5 -1
- package/dist/services/userApplications.js.map +1 -1
- package/oclif.manifest.json +113 -113
- package/package.json +16 -12
- package/templates/app-quickstart/src/App.css +20 -0
- package/templates/app-quickstart/src/App.tsx +25 -0
- package/templates/app-quickstart/src/ExampleComponent.css +90 -0
- package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
- package/templates/app-sanity-ui/src/App.tsx +34 -0
- package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
- package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
- package/templates/blog/README.md +11 -0
- package/templates/blog/schemaTypes/author.js +50 -0
- package/templates/blog/schemaTypes/blockContent.js +67 -0
- package/templates/blog/schemaTypes/category.js +19 -0
- package/templates/blog/schemaTypes/index.js +6 -0
- package/templates/blog/schemaTypes/post.js +65 -0
- package/templates/blog/static/.gitkeep +1 -0
- package/templates/clean/README.md +9 -0
- package/templates/clean/schemaTypes/index.js +1 -0
- package/templates/clean/static/.gitkeep +1 -0
- package/templates/ecommerce/README.md +11 -0
- package/templates/ecommerce/plugins/.gitkeep +1 -0
- package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
- package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
- package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
- package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
- package/templates/ecommerce/schemaTypes/category.js +39 -0
- package/templates/ecommerce/schemaTypes/index.js +23 -0
- package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
- package/templates/ecommerce/schemaTypes/product.js +83 -0
- package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
- package/templates/ecommerce/schemaTypes/vendor.js +39 -0
- package/templates/ecommerce/static/.gitkeep +1 -0
- package/templates/get-started/README.md +9 -0
- package/templates/get-started/plugins/.gitkeep +1 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
- package/templates/get-started/schemaTypes/index.ts +1 -0
- package/templates/get-started/static/.gitkeep +1 -0
- package/templates/moviedb/README.md +10 -0
- package/templates/moviedb/schemaTypes/blockContent.js +67 -0
- package/templates/moviedb/schemaTypes/castMember.js +37 -0
- package/templates/moviedb/schemaTypes/crewMember.js +52 -0
- package/templates/moviedb/schemaTypes/index.js +22 -0
- package/templates/moviedb/schemaTypes/movie.js +85 -0
- package/templates/moviedb/schemaTypes/person.js +37 -0
- package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
- package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
- package/templates/moviedb/schemaTypes/screening.js +81 -0
- package/templates/moviedb/static/.gitkeep +1 -0
- package/templates/quickstart/README.md +9 -0
- package/templates/quickstart/schemaTypes/index.js +1 -0
- package/templates/quickstart/static/.gitkeep +1 -0
- package/templates/shared/gitignore.txt +29 -0
- package/templates/shared/tsconfig.json +17 -0
- package/templates/shopify/README.md +85 -0
- package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
- package/templates/shopify/components/icons/Shopify.tsx +20 -0
- package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
- package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
- package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
- package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
- package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
- package/templates/shopify/components/media/ColorTheme.tsx +38 -0
- package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
- package/templates/shopify/components/studio/Navbar.tsx +29 -0
- package/templates/shopify/constants.ts +61 -0
- package/templates/shopify/docs/features.md +158 -0
- package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
- package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
- package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
- package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
- package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
- package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
- package/templates/shopify/schemaTypes/documents/page.ts +70 -0
- package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
- package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
- package/templates/shopify/schemaTypes/index.ts +108 -0
- package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
- package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
- package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
- package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
- package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
- package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
- package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
- package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
- package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
- package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
- package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
- package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
- package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
- package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
- package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
- package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
- package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
- package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
- package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
- package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
- package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
- package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
- package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
- package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
- package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
- package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
- package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
- package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
- package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
- package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
- package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
- package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
- package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
- package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
- package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
- package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
- package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
- package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
- package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
- package/templates/shopify/static/.gitkeep +1 -0
- package/templates/shopify/structure/collectionStructure.ts +9 -0
- package/templates/shopify/structure/colorThemeStructure.ts +9 -0
- package/templates/shopify/structure/homeStructure.ts +9 -0
- package/templates/shopify/structure/index.ts +57 -0
- package/templates/shopify/structure/pageStructure.ts +11 -0
- package/templates/shopify/structure/productStructure.ts +51 -0
- package/templates/shopify/structure/settingStructure.ts +9 -0
- package/templates/shopify/utils/blocksToText.ts +20 -0
- package/templates/shopify/utils/defineStructure.ts +11 -0
- package/templates/shopify/utils/getPriceRange.ts +24 -0
- package/templates/shopify/utils/shopifyUrls.ts +22 -0
- package/templates/shopify/utils/validateSlug.ts +18 -0
- package/templates/shopify-online-storefront/README.md +54 -0
- package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
- package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
- package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
- package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
- package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
- package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
- package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
- package/templates/shopify-online-storefront/constants.ts +18 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
- package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
- package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
- package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
- package/templates/shopify-online-storefront/structure/index.ts +37 -0
- package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
- package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
- package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
- package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
- package/dist/actions/build/__tests__/buildApp.test.js +0 -367
- package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
- package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
- package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
- package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
- package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
- package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
- package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
- package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
- package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
- package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
- package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
- package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
- package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
- package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
- package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
- package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
- package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
- package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
- package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
- package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
- package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
- package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
- package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
- package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
- package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
- package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
- package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
- package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
- package/dist/actions/media/__tests__/importMedia.test.js +0 -182
- package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
- package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
- package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
- package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
- package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
- package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
- package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
- package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
- package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
- package/dist/commands/__tests__/blueprints.test.js +0 -54
- package/dist/commands/__tests__/blueprints.test.js.map +0 -1
- package/dist/commands/__tests__/build.test.js +0 -132
- package/dist/commands/__tests__/build.test.js.map +0 -1
- package/dist/commands/__tests__/codemod.test.js +0 -271
- package/dist/commands/__tests__/codemod.test.js.map +0 -1
- package/dist/commands/__tests__/debug.test.js +0 -590
- package/dist/commands/__tests__/debug.test.js.map +0 -1
- package/dist/commands/__tests__/deploy.test.js +0 -1945
- package/dist/commands/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/__tests__/dev.test.js +0 -453
- package/dist/commands/__tests__/dev.test.js.map +0 -1
- package/dist/commands/__tests__/exec.test.js +0 -207
- package/dist/commands/__tests__/exec.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
- package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
- package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.plan.test.js +0 -279
- package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.setup.test.js +0 -335
- package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
- package/dist/commands/__tests__/install.test.js +0 -282
- package/dist/commands/__tests__/install.test.js.map +0 -1
- package/dist/commands/__tests__/learn.test.js +0 -29
- package/dist/commands/__tests__/learn.test.js.map +0 -1
- package/dist/commands/__tests__/logout.test.js +0 -91
- package/dist/commands/__tests__/logout.test.js.map +0 -1
- package/dist/commands/__tests__/manage.test.js +0 -110
- package/dist/commands/__tests__/manage.test.js.map +0 -1
- package/dist/commands/__tests__/migration.test.js +0 -119
- package/dist/commands/__tests__/migration.test.js.map +0 -1
- package/dist/commands/__tests__/preview.test.js +0 -261
- package/dist/commands/__tests__/preview.test.js.map +0 -1
- package/dist/commands/__tests__/start.test.js +0 -253
- package/dist/commands/__tests__/start.test.js.map +0 -1
- package/dist/commands/__tests__/undeploy.test.js +0 -382
- package/dist/commands/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/__tests__/versions.test.js +0 -142
- package/dist/commands/__tests__/versions.test.js.map +0 -1
- package/dist/commands/backup/__tests__/disable.test.js +0 -204
- package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/download.test.js +0 -768
- package/dist/commands/backup/__tests__/download.test.js.map +0 -1
- package/dist/commands/backup/__tests__/enable.test.js +0 -286
- package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/list.test.js +0 -330
- package/dist/commands/backup/__tests__/list.test.js.map +0 -1
- package/dist/commands/cors/__tests__/add.test.js +0 -376
- package/dist/commands/cors/__tests__/add.test.js.map +0 -1
- package/dist/commands/cors/__tests__/delete.test.js +0 -308
- package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
- package/dist/commands/cors/__tests__/list.test.js +0 -241
- package/dist/commands/cors/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/copy.test.js +0 -628
- package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/create.test.js +0 -342
- package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/delete.test.js +0 -231
- package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/export.test.js +0 -601
- package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/import.test.js +0 -53
- package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/list.test.js +0 -216
- package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
- package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
- package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
- package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
- package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
- package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
- package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
- package/dist/commands/docs/__tests__/browse.test.js +0 -29
- package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
- package/dist/commands/docs/__tests__/read.test.js +0 -78
- package/dist/commands/docs/__tests__/read.test.js.map +0 -1
- package/dist/commands/docs/__tests__/search.test.js +0 -255
- package/dist/commands/docs/__tests__/search.test.js.map +0 -1
- package/dist/commands/documents/__tests__/create.test.js +0 -1030
- package/dist/commands/documents/__tests__/create.test.js.map +0 -1
- package/dist/commands/documents/__tests__/delete.test.js +0 -300
- package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
- package/dist/commands/documents/__tests__/get.test.js +0 -182
- package/dist/commands/documents/__tests__/get.test.js.map +0 -1
- package/dist/commands/documents/__tests__/query.test.js +0 -300
- package/dist/commands/documents/__tests__/query.test.js.map +0 -1
- package/dist/commands/documents/__tests__/validate.test.js +0 -249
- package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/list.test.js +0 -240
- package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
- package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/hook/__tests__/attempt.test.js +0 -275
- package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
- package/dist/commands/hook/__tests__/create.test.js +0 -119
- package/dist/commands/hook/__tests__/create.test.js.map +0 -1
- package/dist/commands/hook/__tests__/delete.test.js +0 -233
- package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
- package/dist/commands/hook/__tests__/list.test.js +0 -145
- package/dist/commands/hook/__tests__/list.test.js.map +0 -1
- package/dist/commands/hook/__tests__/logs.test.js +0 -798
- package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
- package/dist/commands/manifest/__tests__/extract.test.js +0 -132
- package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
- package/dist/commands/mcp/__tests__/configure.test.js +0 -397
- package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
- package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
- package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
- package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
- package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/export.test.js +0 -697
- package/dist/commands/media/__tests__/export.test.js.map +0 -1
- package/dist/commands/media/__tests__/import.test.js +0 -347
- package/dist/commands/media/__tests__/import.test.js.map +0 -1
- package/dist/commands/openapi/__tests__/get.test.js +0 -149
- package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
- package/dist/commands/openapi/__tests__/list.test.js +0 -113
- package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
- package/dist/commands/projects/__tests__/list.test.js +0 -154
- package/dist/commands/projects/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/delete.test.js +0 -454
- package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
- package/dist/commands/schema/__tests__/deploy.test.js +0 -348
- package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/schema/__tests__/extract.test.js +0 -121
- package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
- package/dist/commands/schema/__tests__/list.test.js +0 -399
- package/dist/commands/schema/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/validate.test.js +0 -121
- package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
- package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
- package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/status.test.js +0 -155
- package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/add.test.js +0 -435
- package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/delete.test.js +0 -405
- package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/list.test.js +0 -395
- package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
- package/dist/commands/users/__tests__/invite.test.js +0 -362
- package/dist/commands/users/__tests__/invite.test.js.map +0 -1
- package/dist/commands/users/__tests__/list.test.js +0 -407
- package/dist/commands/users/__tests__/list.test.js.map +0 -1
- package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
- package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
- package/dist/services/__tests__/datasetAliases.test.js +0 -131
- package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
- package/dist/services/__tests__/datasets.test.js +0 -436
- package/dist/services/__tests__/datasets.test.js.map +0 -1
- package/dist/services/__tests__/graphql.test.js +0 -43
- package/dist/services/__tests__/graphql.test.js.map +0 -1
- package/dist/services/__tests__/mediaLibraries.test.js +0 -88
- package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
- package/dist/services/__tests__/projects.test.js +0 -41
- package/dist/services/__tests__/projects.test.js.map +0 -1
- package/dist/services/__tests__/userApplications.test.js +0 -113
- package/dist/services/__tests__/userApplications.test.js.map +0 -1
- package/dist/util/__tests__/appId.test.js +0 -31
- package/dist/util/__tests__/appId.test.js.map +0 -1
- package/dist/util/__tests__/cliClient.test.js +0 -184
- package/dist/util/__tests__/cliClient.test.js.map +0 -1
- package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
- package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
- package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
- package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
- package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
- package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
- package/dist/util/__tests__/getCliVersion.test.js +0 -28
- package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
- package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
- package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
- package/dist/util/__tests__/getWorkspace.test.js +0 -37
- package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
- package/dist/util/__tests__/readPackageJson.test.js +0 -69
- package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
- package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
- package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
- package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
- package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
- package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
- package/dist/util/validation/ __tests__/validateDocuments.test.js.map +0 -1
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { runCommand } from '@oclif/test';
|
|
2
|
-
import { testCommand } from '@sanity/cli-test';
|
|
3
|
-
import { afterEach, describe, expect, test, vi } from 'vitest';
|
|
4
|
-
import { NO_PROJECT_ID } from '../../../../util/errorMessages.js';
|
|
5
|
-
import { DatasetVisibilitySetCommand } from '../set.js';
|
|
6
|
-
const mockListDatasets = vi.hoisted(()=>vi.fn());
|
|
7
|
-
const mockEditDatasetAcl = vi.hoisted(()=>vi.fn());
|
|
8
|
-
vi.mock('@sanity/cli-core', async (importOriginal)=>{
|
|
9
|
-
const actual = await importOriginal();
|
|
10
|
-
return {
|
|
11
|
-
...actual,
|
|
12
|
-
getProjectCliClient: vi.fn().mockResolvedValue({
|
|
13
|
-
datasets: {
|
|
14
|
-
edit: mockEditDatasetAcl,
|
|
15
|
-
list: mockListDatasets
|
|
16
|
-
}
|
|
17
|
-
})
|
|
18
|
-
};
|
|
19
|
-
});
|
|
20
|
-
const testProjectId = 'test-project';
|
|
21
|
-
const defaultMocks = {
|
|
22
|
-
cliConfig: {
|
|
23
|
-
api: {
|
|
24
|
-
projectId: testProjectId
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
projectRoot: {
|
|
28
|
-
directory: '/test/path',
|
|
29
|
-
path: '/test/path/sanity.config.ts',
|
|
30
|
-
type: 'studio'
|
|
31
|
-
},
|
|
32
|
-
token: 'test-token'
|
|
33
|
-
};
|
|
34
|
-
describe('#dataset:visibility:set', ()=>{
|
|
35
|
-
afterEach(()=>{
|
|
36
|
-
vi.clearAllMocks();
|
|
37
|
-
});
|
|
38
|
-
test('--help works', async ()=>{
|
|
39
|
-
const { stdout } = await runCommand([
|
|
40
|
-
'dataset visibility set',
|
|
41
|
-
'--help'
|
|
42
|
-
]);
|
|
43
|
-
expect(stdout).toMatchInlineSnapshot(`
|
|
44
|
-
"Set the visibility of a dataset
|
|
45
|
-
|
|
46
|
-
USAGE
|
|
47
|
-
$ sanity dataset visibility set DATASET MODE
|
|
48
|
-
|
|
49
|
-
ARGUMENTS
|
|
50
|
-
DATASET The name of the dataset to set visibility for
|
|
51
|
-
MODE (public|private) The visibility mode to set
|
|
52
|
-
|
|
53
|
-
DESCRIPTION
|
|
54
|
-
Set the visibility of a dataset
|
|
55
|
-
|
|
56
|
-
EXAMPLES
|
|
57
|
-
Make a dataset private
|
|
58
|
-
|
|
59
|
-
$ sanity dataset visibility set my-dataset private
|
|
60
|
-
|
|
61
|
-
Make a dataset public
|
|
62
|
-
|
|
63
|
-
$ sanity dataset visibility set my-dataset public
|
|
64
|
-
|
|
65
|
-
"
|
|
66
|
-
`);
|
|
67
|
-
});
|
|
68
|
-
test('sets dataset visibility to public successfully', async ()=>{
|
|
69
|
-
mockListDatasets.mockResolvedValue([
|
|
70
|
-
{
|
|
71
|
-
aclMode: 'private',
|
|
72
|
-
name: 'my-dataset'
|
|
73
|
-
}
|
|
74
|
-
]);
|
|
75
|
-
mockEditDatasetAcl.mockResolvedValue(undefined);
|
|
76
|
-
const { stdout } = await testCommand(DatasetVisibilitySetCommand, [
|
|
77
|
-
'my-dataset',
|
|
78
|
-
'public'
|
|
79
|
-
], {
|
|
80
|
-
mocks: defaultMocks
|
|
81
|
-
});
|
|
82
|
-
expect(stdout).toContain('Dataset visibility changed');
|
|
83
|
-
expect(mockEditDatasetAcl).toHaveBeenCalledWith('my-dataset', {
|
|
84
|
-
aclMode: 'public'
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
test('sets dataset visibility to private successfully with warning', async ()=>{
|
|
88
|
-
mockListDatasets.mockResolvedValue([
|
|
89
|
-
{
|
|
90
|
-
aclMode: 'public',
|
|
91
|
-
name: 'my-dataset'
|
|
92
|
-
}
|
|
93
|
-
]);
|
|
94
|
-
mockEditDatasetAcl.mockResolvedValue(undefined);
|
|
95
|
-
const { stdout } = await testCommand(DatasetVisibilitySetCommand, [
|
|
96
|
-
'my-dataset',
|
|
97
|
-
'private'
|
|
98
|
-
], {
|
|
99
|
-
mocks: defaultMocks
|
|
100
|
-
});
|
|
101
|
-
expect(stdout).toContain('Please note that while documents are private, assets (files and images) are still public');
|
|
102
|
-
expect(stdout).toContain('Dataset visibility changed');
|
|
103
|
-
expect(mockEditDatasetAcl).toHaveBeenCalledWith('my-dataset', {
|
|
104
|
-
aclMode: 'private'
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
test('shows message when dataset is already in the specified mode', async ()=>{
|
|
108
|
-
mockListDatasets.mockResolvedValue([
|
|
109
|
-
{
|
|
110
|
-
aclMode: 'private',
|
|
111
|
-
name: 'my-dataset'
|
|
112
|
-
}
|
|
113
|
-
]);
|
|
114
|
-
const { stdout } = await testCommand(DatasetVisibilitySetCommand, [
|
|
115
|
-
'my-dataset',
|
|
116
|
-
'private'
|
|
117
|
-
], {
|
|
118
|
-
mocks: defaultMocks
|
|
119
|
-
});
|
|
120
|
-
expect(stdout).toContain('Dataset already in "private" mode');
|
|
121
|
-
expect(mockEditDatasetAcl).not.toHaveBeenCalled();
|
|
122
|
-
});
|
|
123
|
-
test('shows error when dataset is not found', async ()=>{
|
|
124
|
-
mockListDatasets.mockResolvedValue([
|
|
125
|
-
{
|
|
126
|
-
aclMode: 'public',
|
|
127
|
-
name: 'other-dataset'
|
|
128
|
-
}
|
|
129
|
-
]);
|
|
130
|
-
const { error } = await testCommand(DatasetVisibilitySetCommand, [
|
|
131
|
-
'not-found',
|
|
132
|
-
'private'
|
|
133
|
-
], {
|
|
134
|
-
mocks: defaultMocks
|
|
135
|
-
});
|
|
136
|
-
expect(error?.message).toContain('Dataset "not-found" not found');
|
|
137
|
-
expect(mockEditDatasetAcl).not.toHaveBeenCalled();
|
|
138
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
139
|
-
});
|
|
140
|
-
test('shows error for invalid dataset name', async ()=>{
|
|
141
|
-
const invalidDatasetName = 'invalid-dataset-name!';
|
|
142
|
-
const { error } = await testCommand(DatasetVisibilitySetCommand, [
|
|
143
|
-
invalidDatasetName,
|
|
144
|
-
'private'
|
|
145
|
-
], {
|
|
146
|
-
mocks: defaultMocks
|
|
147
|
-
});
|
|
148
|
-
expect(error?.message).toContain('Dataset name must only contain');
|
|
149
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
150
|
-
});
|
|
151
|
-
test('handles error when listing datasets fails', async ()=>{
|
|
152
|
-
mockListDatasets.mockRejectedValue(new Error('Failed to fetch datasets'));
|
|
153
|
-
const { error } = await testCommand(DatasetVisibilitySetCommand, [
|
|
154
|
-
'my-dataset',
|
|
155
|
-
'private'
|
|
156
|
-
], {
|
|
157
|
-
mocks: defaultMocks
|
|
158
|
-
});
|
|
159
|
-
expect(error?.message).toContain('Failed to list datasets: Failed to fetch datasets');
|
|
160
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
161
|
-
});
|
|
162
|
-
test('handles error when editing dataset fails', async ()=>{
|
|
163
|
-
mockListDatasets.mockResolvedValue([
|
|
164
|
-
{
|
|
165
|
-
aclMode: 'public',
|
|
166
|
-
name: 'my-dataset'
|
|
167
|
-
}
|
|
168
|
-
]);
|
|
169
|
-
mockEditDatasetAcl.mockRejectedValue(new Error('Failed to update dataset'));
|
|
170
|
-
const { error } = await testCommand(DatasetVisibilitySetCommand, [
|
|
171
|
-
'my-dataset',
|
|
172
|
-
'private'
|
|
173
|
-
], {
|
|
174
|
-
mocks: defaultMocks
|
|
175
|
-
});
|
|
176
|
-
expect(error?.message).toContain('Failed to edit dataset: Failed to update dataset');
|
|
177
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
178
|
-
});
|
|
179
|
-
test('shows error when no project ID is available', async ()=>{
|
|
180
|
-
const { error } = await testCommand(DatasetVisibilitySetCommand, [
|
|
181
|
-
'my-dataset',
|
|
182
|
-
'private'
|
|
183
|
-
], {
|
|
184
|
-
mocks: {
|
|
185
|
-
...defaultMocks,
|
|
186
|
-
cliConfig: {
|
|
187
|
-
api: {
|
|
188
|
-
projectId: undefined
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
expect(error?.message).toContain(NO_PROJECT_ID);
|
|
194
|
-
expect(error?.oclif?.exit).toBe(1);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
//# sourceMappingURL=set.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/commands/dataset/visibility/__tests__/set.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {NO_PROJECT_ID} from '../../../../util/errorMessages.js'\nimport {DatasetVisibilitySetCommand} from '../set.js'\n\nconst mockListDatasets = vi.hoisted(() => vi.fn())\nconst mockEditDatasetAcl = vi.hoisted(() => vi.fn())\n\nvi.mock('@sanity/cli-core', async (importOriginal) => {\n const actual = await importOriginal<typeof import('@sanity/cli-core')>()\n return {\n ...actual,\n getProjectCliClient: vi.fn().mockResolvedValue({\n datasets: {\n edit: mockEditDatasetAcl,\n list: mockListDatasets,\n } as never,\n }),\n }\n})\n\nconst testProjectId = 'test-project'\n\nconst defaultMocks = {\n cliConfig: {api: {projectId: testProjectId}},\n projectRoot: {\n directory: '/test/path',\n path: '/test/path/sanity.config.ts',\n type: 'studio' as const,\n },\n token: 'test-token',\n}\n\ndescribe('#dataset:visibility:set', () => {\n afterEach(() => {\n vi.clearAllMocks()\n })\n\n test('--help works', async () => {\n const {stdout} = await runCommand(['dataset visibility set', '--help'])\n\n expect(stdout).toMatchInlineSnapshot(`\n \"Set the visibility of a dataset\n\n USAGE\n $ sanity dataset visibility set DATASET MODE\n\n ARGUMENTS\n DATASET The name of the dataset to set visibility for\n MODE (public|private) The visibility mode to set\n\n DESCRIPTION\n Set the visibility of a dataset\n\n EXAMPLES\n Make a dataset private\n\n $ sanity dataset visibility set my-dataset private\n\n Make a dataset public\n\n $ sanity dataset visibility set my-dataset public\n\n \"\n `)\n })\n\n test('sets dataset visibility to public successfully', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'private', name: 'my-dataset'}] as never)\n mockEditDatasetAcl.mockResolvedValue(undefined as never)\n\n const {stdout} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'public'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain('Dataset visibility changed')\n expect(mockEditDatasetAcl).toHaveBeenCalledWith('my-dataset', {\n aclMode: 'public',\n })\n })\n\n test('sets dataset visibility to private successfully with warning', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'public', name: 'my-dataset'}] as never)\n mockEditDatasetAcl.mockResolvedValue(undefined as never)\n\n const {stdout} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain(\n 'Please note that while documents are private, assets (files and images) are still public',\n )\n expect(stdout).toContain('Dataset visibility changed')\n expect(mockEditDatasetAcl).toHaveBeenCalledWith('my-dataset', {\n aclMode: 'private',\n })\n })\n\n test('shows message when dataset is already in the specified mode', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'private', name: 'my-dataset'}] as never)\n\n const {stdout} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'], {\n mocks: defaultMocks,\n })\n\n expect(stdout).toContain('Dataset already in \"private\" mode')\n expect(mockEditDatasetAcl).not.toHaveBeenCalled()\n })\n\n test('shows error when dataset is not found', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'public', name: 'other-dataset'}] as never)\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['not-found', 'private'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Dataset \"not-found\" not found')\n expect(mockEditDatasetAcl).not.toHaveBeenCalled()\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error for invalid dataset name', async () => {\n const invalidDatasetName = 'invalid-dataset-name!'\n\n const {error} = await testCommand(\n DatasetVisibilitySetCommand,\n [invalidDatasetName, 'private'],\n {\n mocks: defaultMocks,\n },\n )\n\n expect(error?.message).toContain('Dataset name must only contain')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles error when listing datasets fails', async () => {\n mockListDatasets.mockRejectedValue(new Error('Failed to fetch datasets'))\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Failed to list datasets: Failed to fetch datasets')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('handles error when editing dataset fails', async () => {\n mockListDatasets.mockResolvedValue([{aclMode: 'public', name: 'my-dataset'}] as never)\n mockEditDatasetAcl.mockRejectedValue(new Error('Failed to update dataset'))\n\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'], {\n mocks: defaultMocks,\n })\n\n expect(error?.message).toContain('Failed to edit dataset: Failed to update dataset')\n expect(error?.oclif?.exit).toBe(1)\n })\n\n test('shows error when no project ID is available', async () => {\n const {error} = await testCommand(DatasetVisibilitySetCommand, ['my-dataset', 'private'], {\n mocks: {\n ...defaultMocks,\n cliConfig: {api: {projectId: undefined}},\n },\n })\n\n expect(error?.message).toContain(NO_PROJECT_ID)\n expect(error?.oclif?.exit).toBe(1)\n })\n})\n"],"names":["runCommand","testCommand","afterEach","describe","expect","test","vi","NO_PROJECT_ID","DatasetVisibilitySetCommand","mockListDatasets","hoisted","fn","mockEditDatasetAcl","mock","importOriginal","actual","getProjectCliClient","mockResolvedValue","datasets","edit","list","testProjectId","defaultMocks","cliConfig","api","projectId","projectRoot","directory","path","type","token","clearAllMocks","stdout","toMatchInlineSnapshot","aclMode","name","undefined","mocks","toContain","toHaveBeenCalledWith","not","toHaveBeenCalled","error","message","oclif","exit","toBe","invalidDatasetName","mockRejectedValue","Error"],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { runCommand } from '@oclif/test';
|
|
2
|
-
import { testCommand } from '@sanity/cli-test';
|
|
3
|
-
import open from 'open';
|
|
4
|
-
import { describe, expect, test } from 'vitest';
|
|
5
|
-
import { DocsBrowseCommand } from '../browse.js';
|
|
6
|
-
describe('#docs:browse', ()=>{
|
|
7
|
-
test('command runs and opens docs URL', async ()=>{
|
|
8
|
-
const { stdout } = await testCommand(DocsBrowseCommand);
|
|
9
|
-
expect(stdout).toContain('Opening https://www.sanity.io/docs');
|
|
10
|
-
// Mocked in test setup
|
|
11
|
-
expect(open).toHaveBeenCalledWith('https://www.sanity.io/docs');
|
|
12
|
-
});
|
|
13
|
-
test('help text is correct', async ()=>{
|
|
14
|
-
const { stdout } = await runCommand('docs browse --help');
|
|
15
|
-
expect(stdout).toMatchInlineSnapshot(`
|
|
16
|
-
"Open Sanity docs in a web browser
|
|
17
|
-
|
|
18
|
-
USAGE
|
|
19
|
-
$ sanity docs browse
|
|
20
|
-
|
|
21
|
-
DESCRIPTION
|
|
22
|
-
Open Sanity docs in a web browser
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
`);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
//# sourceMappingURL=browse.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/commands/docs/__tests__/browse.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport open from 'open'\nimport {describe, expect, test} from 'vitest'\n\nimport {DocsBrowseCommand} from '../browse.js'\n\ndescribe('#docs:browse', () => {\n test('command runs and opens docs URL', async () => {\n const {stdout} = await testCommand(DocsBrowseCommand)\n\n expect(stdout).toContain('Opening https://www.sanity.io/docs')\n // Mocked in test setup\n expect(open).toHaveBeenCalledWith('https://www.sanity.io/docs')\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand('docs browse --help')\n expect(stdout).toMatchInlineSnapshot(`\n \"Open Sanity docs in a web browser\n\n USAGE\n $ sanity docs browse\n\n DESCRIPTION\n Open Sanity docs in a web browser\n\n \"\n `)\n })\n})\n"],"names":["runCommand","testCommand","open","describe","expect","test","DocsBrowseCommand","stdout","toContain","toHaveBeenCalledWith","toMatchInlineSnapshot"],"mappings":"AAAA,SAAQA,UAAU,QAAO,cAAa;AACtC,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,OAAOC,UAAU,OAAM;AACvB,SAAQC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,QAAO,SAAQ;AAE7C,SAAQC,iBAAiB,QAAO,eAAc;AAE9CH,SAAS,gBAAgB;IACvBE,KAAK,mCAAmC;QACtC,MAAM,EAACE,MAAM,EAAC,GAAG,MAAMN,YAAYK;QAEnCF,OAAOG,QAAQC,SAAS,CAAC;QACzB,uBAAuB;QACvBJ,OAAOF,MAAMO,oBAAoB,CAAC;IACpC;IAEAJ,KAAK,wBAAwB;QAC3B,MAAM,EAACE,MAAM,EAAC,GAAG,MAAMP,WAAW;QAClCI,OAAOG,QAAQG,qBAAqB,CAAC,CAAC;;;;;;;;;;IAUtC,CAAC;IACH;AACF"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { runCommand } from '@oclif/test';
|
|
2
|
-
import { testCommand } from '@sanity/cli-test';
|
|
3
|
-
import nock from 'nock';
|
|
4
|
-
import open from 'open';
|
|
5
|
-
import { afterEach, describe, expect, test, vi } from 'vitest';
|
|
6
|
-
import { DocsReadCommand } from '../read.js';
|
|
7
|
-
vi.mock('open');
|
|
8
|
-
const mockOpen = vi.mocked(open);
|
|
9
|
-
afterEach(()=>{
|
|
10
|
-
const pending = nock.pendingMocks();
|
|
11
|
-
nock.cleanAll();
|
|
12
|
-
expect(pending, 'pending mocks').toEqual([]);
|
|
13
|
-
});
|
|
14
|
-
describe('#docs:read', ()=>{
|
|
15
|
-
test('reads article and displays content', async ()=>{
|
|
16
|
-
const markdownContent = '# Installation\n\nThis is the installation guide.';
|
|
17
|
-
nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {
|
|
18
|
-
'Content-Type': 'text/plain'
|
|
19
|
-
});
|
|
20
|
-
const { stdout } = await testCommand(DocsReadCommand, [
|
|
21
|
-
'/docs/studio/installation'
|
|
22
|
-
]);
|
|
23
|
-
expect(stdout).toContain('Reading article: /docs/studio/installation');
|
|
24
|
-
expect(stdout).toContain('---');
|
|
25
|
-
expect(stdout).toContain('# Installation');
|
|
26
|
-
expect(stdout).toContain('This is the installation guide.');
|
|
27
|
-
});
|
|
28
|
-
test('opens in web browser with --web flag', async ()=>{
|
|
29
|
-
const { stdout } = await testCommand(DocsReadCommand, [
|
|
30
|
-
'/docs/studio/installation',
|
|
31
|
-
'--web'
|
|
32
|
-
]);
|
|
33
|
-
expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation');
|
|
34
|
-
expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation');
|
|
35
|
-
// Note: readDoc might be called due to import, so we don't check for not called
|
|
36
|
-
});
|
|
37
|
-
test('opens in web browser with -w flag', async ()=>{
|
|
38
|
-
const { stdout } = await testCommand(DocsReadCommand, [
|
|
39
|
-
'/docs/studio/installation',
|
|
40
|
-
'-w'
|
|
41
|
-
]);
|
|
42
|
-
expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation');
|
|
43
|
-
expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation');
|
|
44
|
-
});
|
|
45
|
-
test('normalizes full URLs', async ()=>{
|
|
46
|
-
const markdownContent = '# Installation\n\nContent here.';
|
|
47
|
-
nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {
|
|
48
|
-
'Content-Type': 'text/plain'
|
|
49
|
-
});
|
|
50
|
-
const { stdout } = await testCommand(DocsReadCommand, [
|
|
51
|
-
'https://www.sanity.io/docs/studio/installation'
|
|
52
|
-
]);
|
|
53
|
-
expect(stdout).toContain('Reading article: /docs/studio/installation');
|
|
54
|
-
expect(stdout).toContain('# Installation');
|
|
55
|
-
});
|
|
56
|
-
test('handles invalid paths', async ()=>{
|
|
57
|
-
const result = await testCommand(DocsReadCommand, [
|
|
58
|
-
'invalid-path'
|
|
59
|
-
]).catch((err)=>err);
|
|
60
|
-
expect(result.error.message).toContain('Invalid path or URL. Expected a Sanity docs path or URL.');
|
|
61
|
-
});
|
|
62
|
-
test('handles API errors', async ()=>{
|
|
63
|
-
nock('https://www.sanity.io').get('/docs/nonexistent.md').reply(404, 'Not Found');
|
|
64
|
-
const result = await testCommand(DocsReadCommand, [
|
|
65
|
-
'/docs/nonexistent'
|
|
66
|
-
]).catch((err)=>err);
|
|
67
|
-
expect(result.error.message).toBe('Article not found: /docs/nonexistent');
|
|
68
|
-
});
|
|
69
|
-
test('help text is correct', async ()=>{
|
|
70
|
-
const { stdout } = await runCommand('docs read --help');
|
|
71
|
-
expect(stdout).toContain('Read an article in terminal');
|
|
72
|
-
expect(stdout).toContain('ARGUMENTS');
|
|
73
|
-
expect(stdout).toContain('FLAGS');
|
|
74
|
-
expect(stdout).toContain('--web');
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
//# sourceMappingURL=read.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/commands/docs/__tests__/read.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {testCommand} from '@sanity/cli-test'\nimport nock from 'nock'\nimport open from 'open'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {DocsReadCommand} from '../read.js'\n\nvi.mock('open')\n\nconst mockOpen = vi.mocked(open)\n\nafterEach(() => {\n const pending = nock.pendingMocks()\n nock.cleanAll()\n expect(pending, 'pending mocks').toEqual([])\n})\n\ndescribe('#docs:read', () => {\n test('reads article and displays content', async () => {\n const markdownContent = '# Installation\\n\\nThis is the installation guide.'\n\n nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {\n 'Content-Type': 'text/plain',\n })\n\n const {stdout} = await testCommand(DocsReadCommand, ['/docs/studio/installation'])\n\n expect(stdout).toContain('Reading article: /docs/studio/installation')\n expect(stdout).toContain('---')\n expect(stdout).toContain('# Installation')\n expect(stdout).toContain('This is the installation guide.')\n })\n\n test('opens in web browser with --web flag', async () => {\n const {stdout} = await testCommand(DocsReadCommand, ['/docs/studio/installation', '--web'])\n\n expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation')\n expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation')\n // Note: readDoc might be called due to import, so we don't check for not called\n })\n\n test('opens in web browser with -w flag', async () => {\n const {stdout} = await testCommand(DocsReadCommand, ['/docs/studio/installation', '-w'])\n\n expect(stdout).toContain('Opening https://www.sanity.io/docs/studio/installation')\n expect(mockOpen).toHaveBeenCalledWith('https://www.sanity.io/docs/studio/installation')\n })\n\n test('normalizes full URLs', async () => {\n const markdownContent = '# Installation\\n\\nContent here.'\n\n nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, markdownContent, {\n 'Content-Type': 'text/plain',\n })\n\n const {stdout} = await testCommand(DocsReadCommand, [\n 'https://www.sanity.io/docs/studio/installation',\n ])\n\n expect(stdout).toContain('Reading article: /docs/studio/installation')\n expect(stdout).toContain('# Installation')\n })\n\n test('handles invalid paths', async () => {\n const result = await testCommand(DocsReadCommand, ['invalid-path']).catch((err) => err)\n expect(result.error.message).toContain(\n 'Invalid path or URL. Expected a Sanity docs path or URL.',\n )\n })\n\n test('handles API errors', async () => {\n nock('https://www.sanity.io').get('/docs/nonexistent.md').reply(404, 'Not Found')\n\n const result = await testCommand(DocsReadCommand, ['/docs/nonexistent']).catch((err) => err)\n expect(result.error.message).toBe('Article not found: /docs/nonexistent')\n })\n\n test('help text is correct', async () => {\n const {stdout} = await runCommand('docs read --help')\n expect(stdout).toContain('Read an article in terminal')\n expect(stdout).toContain('ARGUMENTS')\n expect(stdout).toContain('FLAGS')\n expect(stdout).toContain('--web')\n })\n})\n"],"names":["runCommand","testCommand","nock","open","afterEach","describe","expect","test","vi","DocsReadCommand","mock","mockOpen","mocked","pending","pendingMocks","cleanAll","toEqual","markdownContent","get","reply","stdout","toContain","toHaveBeenCalledWith","result","catch","err","error","message","toBe"],"mappings":"AAAA,SAAQA,UAAU,QAAO,cAAa;AACtC,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,OAAOC,UAAU,OAAM;AACvB,OAAOC,UAAU,OAAM;AACvB,SAAQC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAE5D,SAAQC,eAAe,QAAO,aAAY;AAE1CD,GAAGE,IAAI,CAAC;AAER,MAAMC,WAAWH,GAAGI,MAAM,CAACT;AAE3BC,UAAU;IACR,MAAMS,UAAUX,KAAKY,YAAY;IACjCZ,KAAKa,QAAQ;IACbT,OAAOO,SAAS,iBAAiBG,OAAO,CAAC,EAAE;AAC7C;AAEAX,SAAS,cAAc;IACrBE,KAAK,sCAAsC;QACzC,MAAMU,kBAAkB;QAExBf,KAAK,yBAAyBgB,GAAG,CAAC,gCAAgCC,KAAK,CAAC,KAAKF,iBAAiB;YAC5F,gBAAgB;QAClB;QAEA,MAAM,EAACG,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAAC;SAA4B;QAEjFH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;IAC3B;IAEAd,KAAK,wCAAwC;QAC3C,MAAM,EAACa,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAAC;YAA6B;SAAQ;QAE1FH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOK,UAAUW,oBAAoB,CAAC;IACtC,gFAAgF;IAClF;IAEAf,KAAK,qCAAqC;QACxC,MAAM,EAACa,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAAC;YAA6B;SAAK;QAEvFH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOK,UAAUW,oBAAoB,CAAC;IACxC;IAEAf,KAAK,wBAAwB;QAC3B,MAAMU,kBAAkB;QAExBf,KAAK,yBAAyBgB,GAAG,CAAC,gCAAgCC,KAAK,CAAC,KAAKF,iBAAiB;YAC5F,gBAAgB;QAClB;QAEA,MAAM,EAACG,MAAM,EAAC,GAAG,MAAMnB,YAAYQ,iBAAiB;YAClD;SACD;QAEDH,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;IAC3B;IAEAd,KAAK,yBAAyB;QAC5B,MAAMgB,SAAS,MAAMtB,YAAYQ,iBAAiB;YAAC;SAAe,EAAEe,KAAK,CAAC,CAACC,MAAQA;QACnFnB,OAAOiB,OAAOG,KAAK,CAACC,OAAO,EAAEN,SAAS,CACpC;IAEJ;IAEAd,KAAK,sBAAsB;QACzBL,KAAK,yBAAyBgB,GAAG,CAAC,wBAAwBC,KAAK,CAAC,KAAK;QAErE,MAAMI,SAAS,MAAMtB,YAAYQ,iBAAiB;YAAC;SAAoB,EAAEe,KAAK,CAAC,CAACC,MAAQA;QACxFnB,OAAOiB,OAAOG,KAAK,CAACC,OAAO,EAAEC,IAAI,CAAC;IACpC;IAEArB,KAAK,wBAAwB;QAC3B,MAAM,EAACa,MAAM,EAAC,GAAG,MAAMpB,WAAW;QAClCM,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;QACzBf,OAAOc,QAAQC,SAAS,CAAC;IAC3B;AACF"}
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { runCommand } from '@oclif/test';
|
|
2
|
-
import { select } from '@sanity/cli-core/ux';
|
|
3
|
-
import { testCommand } from '@sanity/cli-test';
|
|
4
|
-
import nock from 'nock';
|
|
5
|
-
import { afterEach, describe, expect, test, vi } from 'vitest';
|
|
6
|
-
import { DocsSearchCommand } from '../search.js';
|
|
7
|
-
vi.mock('@sanity/cli-core/ux', async ()=>{
|
|
8
|
-
const actual = await vi.importActual('@sanity/cli-core/ux');
|
|
9
|
-
return {
|
|
10
|
-
...actual,
|
|
11
|
-
select: vi.fn()
|
|
12
|
-
};
|
|
13
|
-
});
|
|
14
|
-
const mockedIsInteractive = vi.hoisted(()=>vi.fn());
|
|
15
|
-
vi.mock('@sanity/cli-core', async ()=>{
|
|
16
|
-
const actual = await vi.importActual('@sanity/cli-core');
|
|
17
|
-
return {
|
|
18
|
-
...actual,
|
|
19
|
-
isInteractive: mockedIsInteractive
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
const mockedSelect = vi.mocked(select);
|
|
23
|
-
afterEach(()=>{
|
|
24
|
-
const pending = nock.pendingMocks();
|
|
25
|
-
nock.cleanAll();
|
|
26
|
-
expect(pending, 'pending mocks').toEqual([]);
|
|
27
|
-
vi.resetAllMocks();
|
|
28
|
-
});
|
|
29
|
-
describe('#docs:search', ()=>{
|
|
30
|
-
test('--help works', async ()=>{
|
|
31
|
-
const { stdout } = await runCommand('docs search --help');
|
|
32
|
-
expect(stdout).toMatchInlineSnapshot(`
|
|
33
|
-
"Search Sanity docs
|
|
34
|
-
|
|
35
|
-
USAGE
|
|
36
|
-
$ sanity docs search QUERY [--limit <value>]
|
|
37
|
-
|
|
38
|
-
ARGUMENTS
|
|
39
|
-
QUERY Search query for documentation
|
|
40
|
-
|
|
41
|
-
FLAGS
|
|
42
|
-
--limit=<value> [default: 10] Maximum number of results to return
|
|
43
|
-
|
|
44
|
-
DESCRIPTION
|
|
45
|
-
Search Sanity docs
|
|
46
|
-
|
|
47
|
-
EXAMPLES
|
|
48
|
-
Search for documentation about schemas
|
|
49
|
-
|
|
50
|
-
$ sanity docs search schema
|
|
51
|
-
|
|
52
|
-
Search with phrase
|
|
53
|
-
|
|
54
|
-
$ sanity docs search "groq functions"
|
|
55
|
-
|
|
56
|
-
Limit search results
|
|
57
|
-
|
|
58
|
-
$ sanity docs search "deployment" --limit=5
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
`);
|
|
62
|
-
});
|
|
63
|
-
test('searches and displays results', async ()=>{
|
|
64
|
-
const searchResponse = [
|
|
65
|
-
{
|
|
66
|
-
description: 'Learn how to install Sanity Studio',
|
|
67
|
-
path: '/docs/studio/installation',
|
|
68
|
-
title: 'Studio Installation Guide'
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
description: 'Understanding Sanity schemas',
|
|
72
|
-
path: '/docs/schemas/overview',
|
|
73
|
-
title: 'Schema Overview'
|
|
74
|
-
}
|
|
75
|
-
];
|
|
76
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
77
|
-
query: 'studio'
|
|
78
|
-
}).reply(200, searchResponse);
|
|
79
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
80
|
-
'studio'
|
|
81
|
-
]);
|
|
82
|
-
expect(stdout).toContain('Searching documentation for: "studio"');
|
|
83
|
-
expect(stdout).toContain('Found 2 result(s):');
|
|
84
|
-
expect(stdout).toContain('1. Studio Installation Guide');
|
|
85
|
-
expect(stdout).toContain('URL: https://www.sanity.io/docs/studio/installation');
|
|
86
|
-
expect(stdout).toContain('Learn how to install Sanity Studio');
|
|
87
|
-
expect(stdout).toContain('2. Schema Overview');
|
|
88
|
-
});
|
|
89
|
-
test('handles no results', async ()=>{
|
|
90
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
91
|
-
query: 'nonexistent'
|
|
92
|
-
}).reply(200, []);
|
|
93
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
94
|
-
'nonexistent'
|
|
95
|
-
]);
|
|
96
|
-
expect(stdout).toContain('Searching documentation for: "nonexistent"');
|
|
97
|
-
expect(stdout).toContain('No results found. Try a different search term.');
|
|
98
|
-
});
|
|
99
|
-
test('handles API errors', async ()=>{
|
|
100
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
101
|
-
query: 'test'
|
|
102
|
-
}).reply(500, 'Internal Server Error');
|
|
103
|
-
const { error } = await testCommand(DocsSearchCommand, [
|
|
104
|
-
'test'
|
|
105
|
-
]).catch((err)=>err);
|
|
106
|
-
expect(error.message).toBe('The documentation search API is currently unavailable. Please try again later.');
|
|
107
|
-
expect(error.oclif?.exit).toBe(1);
|
|
108
|
-
});
|
|
109
|
-
test('respects limit flag', async ()=>{
|
|
110
|
-
const searchResponse = [
|
|
111
|
-
{
|
|
112
|
-
description: 'Learn how to install Sanity Studio 1',
|
|
113
|
-
path: '/docs/studio/installation',
|
|
114
|
-
title: 'Studio Installation Guide'
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
description: 'Learn how to install Sanity Studio 2',
|
|
118
|
-
path: '/docs/studio/installation',
|
|
119
|
-
title: 'Studio Installation Guide'
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
description: 'Learn how to install Sanity Studio 3',
|
|
123
|
-
path: '/docs/studio/installation',
|
|
124
|
-
title: 'Studio Installation Guide'
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
description: 'Learn how to install Sanity Studio 4',
|
|
128
|
-
path: '/docs/studio/installation',
|
|
129
|
-
title: 'Studio Installation Guide'
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
description: 'Learn how to install Sanity Studio 5',
|
|
133
|
-
path: '/docs/studio/installation',
|
|
134
|
-
title: 'Studio Installation Guide'
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
description: 'Learn how to install Sanity Studio 6',
|
|
138
|
-
path: '/docs/studio/installation',
|
|
139
|
-
title: 'Studio Installation Guide'
|
|
140
|
-
}
|
|
141
|
-
];
|
|
142
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
143
|
-
query: 'studio'
|
|
144
|
-
}).reply(200, searchResponse);
|
|
145
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
146
|
-
'studio',
|
|
147
|
-
'--limit=3'
|
|
148
|
-
]);
|
|
149
|
-
expect(stdout).toContain('Found 3 result(s):');
|
|
150
|
-
expect(stdout).toContain('1. Studio Installation Guide');
|
|
151
|
-
expect(stdout).toContain('2. Studio Installation Guide');
|
|
152
|
-
expect(stdout).toContain('3. Studio Installation Guide');
|
|
153
|
-
});
|
|
154
|
-
test('handles results with empty descriptions', async ()=>{
|
|
155
|
-
const searchResponse = [
|
|
156
|
-
{
|
|
157
|
-
description: '',
|
|
158
|
-
path: '/docs/studio/installation',
|
|
159
|
-
title: 'Studio Installation Guide'
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
description: '',
|
|
163
|
-
path: '/docs/schemas/overview',
|
|
164
|
-
title: 'Schema Overview'
|
|
165
|
-
}
|
|
166
|
-
];
|
|
167
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
168
|
-
query: 'studio'
|
|
169
|
-
}).reply(200, searchResponse);
|
|
170
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
171
|
-
'studio'
|
|
172
|
-
]);
|
|
173
|
-
expect(stdout).toContain('Searching documentation for: "studio"');
|
|
174
|
-
expect(stdout).toContain('Found 2 result(s):');
|
|
175
|
-
expect(stdout).toContain('1. Studio Installation Guide');
|
|
176
|
-
expect(stdout).toContain('URL: https://www.sanity.io/docs/studio/installation');
|
|
177
|
-
expect(stdout).toContain('2. Schema Overview');
|
|
178
|
-
// Should not show empty description lines
|
|
179
|
-
expect(stdout).not.toContain('Learn how to install');
|
|
180
|
-
expect(stdout).not.toContain('Understanding Sanity schemas');
|
|
181
|
-
});
|
|
182
|
-
test('shows usage hints in non-interactive mode', async ()=>{
|
|
183
|
-
const searchResponse = [
|
|
184
|
-
{
|
|
185
|
-
description: 'Learn how to install Sanity Studio',
|
|
186
|
-
path: '/docs/studio/installation',
|
|
187
|
-
title: 'Studio Installation Guide'
|
|
188
|
-
}
|
|
189
|
-
];
|
|
190
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
191
|
-
query: 'studio'
|
|
192
|
-
}).reply(200, searchResponse);
|
|
193
|
-
mockedIsInteractive.mockReturnValue(false);
|
|
194
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
195
|
-
'studio'
|
|
196
|
-
]);
|
|
197
|
-
expect(stdout).toContain('Found 1 result(s):');
|
|
198
|
-
expect(stdout).toContain('Use `sanity docs read <url>` to read an article in terminal.');
|
|
199
|
-
expect(stdout).toContain('Use `sanity docs read <path>` to follow links found within articles.');
|
|
200
|
-
});
|
|
201
|
-
test('handles network errors with default message', async ()=>{
|
|
202
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
203
|
-
query: 'test'
|
|
204
|
-
}).reply(500, 'Internal Server Error');
|
|
205
|
-
const { error } = await testCommand(DocsSearchCommand, [
|
|
206
|
-
'test'
|
|
207
|
-
]).catch((err)=>err);
|
|
208
|
-
expect(error.message).toBe('The documentation search API is currently unavailable. Please try again later.');
|
|
209
|
-
expect(error.oclif?.exit).toBe(1);
|
|
210
|
-
});
|
|
211
|
-
test('handles interactive mode article selection', async ()=>{
|
|
212
|
-
mockedSelect.mockResolvedValue(0);
|
|
213
|
-
const searchResponse = [
|
|
214
|
-
{
|
|
215
|
-
description: 'Learn how to install Sanity Studio',
|
|
216
|
-
path: '/docs/studio/installation',
|
|
217
|
-
title: 'Studio Installation Guide'
|
|
218
|
-
}
|
|
219
|
-
];
|
|
220
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
221
|
-
query: 'studio'
|
|
222
|
-
}).reply(200, searchResponse);
|
|
223
|
-
nock('https://www.sanity.io').get('/docs/studio/installation.md').reply(200, '# Studio Installation\n\nThis is how you install the studio.');
|
|
224
|
-
mockedIsInteractive.mockReturnValue(true);
|
|
225
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
226
|
-
'studio'
|
|
227
|
-
]);
|
|
228
|
-
expect(stdout).toContain('Found 1 result(s):');
|
|
229
|
-
expect(stdout).toContain('---');
|
|
230
|
-
expect(stdout).toContain('# Studio Installation');
|
|
231
|
-
expect(stdout).toContain('This is how you install the studio.');
|
|
232
|
-
});
|
|
233
|
-
test('handles interactive mode exit selection', async ()=>{
|
|
234
|
-
mockedSelect.mockResolvedValue(-1); // User selects exit option
|
|
235
|
-
const searchResponse = [
|
|
236
|
-
{
|
|
237
|
-
description: 'Learn how to install Sanity Studio',
|
|
238
|
-
path: '/docs/studio/installation',
|
|
239
|
-
title: 'Studio Installation Guide'
|
|
240
|
-
}
|
|
241
|
-
];
|
|
242
|
-
nock('https://www.sanity.io').get('/docs/api/search/semantic').query({
|
|
243
|
-
query: 'studio'
|
|
244
|
-
}).reply(200, searchResponse);
|
|
245
|
-
mockedIsInteractive.mockReturnValue(true);
|
|
246
|
-
const { stdout } = await testCommand(DocsSearchCommand, [
|
|
247
|
-
'studio'
|
|
248
|
-
]);
|
|
249
|
-
expect(stdout).toContain('Found 1 result(s):');
|
|
250
|
-
expect(stdout).not.toContain('---'); // Should not show article content
|
|
251
|
-
expect(stdout).not.toContain('# Studio Installation');
|
|
252
|
-
});
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
//# sourceMappingURL=search.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/commands/docs/__tests__/search.test.ts"],"sourcesContent":["import {runCommand} from '@oclif/test'\nimport {select} from '@sanity/cli-core/ux'\nimport {testCommand} from '@sanity/cli-test'\nimport nock from 'nock'\nimport {afterEach, describe, expect, test, vi} from 'vitest'\n\nimport {DocsSearchCommand} from '../search.js'\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 select: vi.fn(),\n }\n})\n\nconst mockedIsInteractive = vi.hoisted(() => vi.fn())\n\nvi.mock('@sanity/cli-core', async () => {\n const actual = await vi.importActual<typeof import('@sanity/cli-core')>('@sanity/cli-core')\n return {\n ...actual,\n isInteractive: mockedIsInteractive,\n }\n})\n\nconst mockedSelect = vi.mocked(select)\n\nafterEach(() => {\n const pending = nock.pendingMocks()\n nock.cleanAll()\n expect(pending, 'pending mocks').toEqual([])\n vi.resetAllMocks()\n})\n\ndescribe('#docs:search', () => {\n test('--help works', async () => {\n const {stdout} = await runCommand('docs search --help')\n expect(stdout).toMatchInlineSnapshot(`\n \"Search Sanity docs\n\n USAGE\n $ sanity docs search QUERY [--limit <value>]\n\n ARGUMENTS\n QUERY Search query for documentation\n\n FLAGS\n --limit=<value> [default: 10] Maximum number of results to return\n\n DESCRIPTION\n Search Sanity docs\n\n EXAMPLES\n Search for documentation about schemas\n\n $ sanity docs search schema\n\n Search with phrase\n\n $ sanity docs search \"groq functions\"\n\n Limit search results\n\n $ sanity docs search \"deployment\" --limit=5\n\n \"\n `)\n })\n\n test('searches and displays results', async () => {\n const searchResponse = [\n {\n description: 'Learn how to install Sanity Studio',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n {\n description: 'Understanding Sanity schemas',\n path: '/docs/schemas/overview',\n title: 'Schema Overview',\n },\n ]\n\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'studio'})\n .reply(200, searchResponse)\n\n const {stdout} = await testCommand(DocsSearchCommand, ['studio'])\n\n expect(stdout).toContain('Searching documentation for: \"studio\"')\n expect(stdout).toContain('Found 2 result(s):')\n expect(stdout).toContain('1. Studio Installation Guide')\n expect(stdout).toContain('URL: https://www.sanity.io/docs/studio/installation')\n expect(stdout).toContain('Learn how to install Sanity Studio')\n expect(stdout).toContain('2. Schema Overview')\n })\n\n test('handles no results', async () => {\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'nonexistent'})\n .reply(200, [])\n\n const {stdout} = await testCommand(DocsSearchCommand, ['nonexistent'])\n\n expect(stdout).toContain('Searching documentation for: \"nonexistent\"')\n expect(stdout).toContain('No results found. Try a different search term.')\n })\n\n test('handles API errors', async () => {\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'test'})\n .reply(500, 'Internal Server Error')\n\n const {error} = await testCommand(DocsSearchCommand, ['test']).catch((err) => err)\n expect(error.message).toBe(\n 'The documentation search API is currently unavailable. Please try again later.',\n )\n expect(error.oclif?.exit).toBe(1)\n })\n\n test('respects limit flag', async () => {\n const searchResponse = [\n {\n description: 'Learn how to install Sanity Studio 1',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n {\n description: 'Learn how to install Sanity Studio 2',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n {\n description: 'Learn how to install Sanity Studio 3',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n\n {\n description: 'Learn how to install Sanity Studio 4',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n {\n description: 'Learn how to install Sanity Studio 5',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n {\n description: 'Learn how to install Sanity Studio 6',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n ]\n\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'studio'})\n .reply(200, searchResponse)\n\n const {stdout} = await testCommand(DocsSearchCommand, ['studio', '--limit=3'])\n\n expect(stdout).toContain('Found 3 result(s):')\n expect(stdout).toContain('1. Studio Installation Guide')\n expect(stdout).toContain('2. Studio Installation Guide')\n expect(stdout).toContain('3. Studio Installation Guide')\n })\n\n test('handles results with empty descriptions', async () => {\n const searchResponse = [\n {\n description: '', // Empty description\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n {\n description: '', // Empty description\n path: '/docs/schemas/overview',\n title: 'Schema Overview',\n },\n ]\n\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'studio'})\n .reply(200, searchResponse)\n\n const {stdout} = await testCommand(DocsSearchCommand, ['studio'])\n\n expect(stdout).toContain('Searching documentation for: \"studio\"')\n expect(stdout).toContain('Found 2 result(s):')\n expect(stdout).toContain('1. Studio Installation Guide')\n expect(stdout).toContain('URL: https://www.sanity.io/docs/studio/installation')\n expect(stdout).toContain('2. Schema Overview')\n // Should not show empty description lines\n expect(stdout).not.toContain('Learn how to install')\n expect(stdout).not.toContain('Understanding Sanity schemas')\n })\n\n test('shows usage hints in non-interactive mode', async () => {\n const searchResponse = [\n {\n description: 'Learn how to install Sanity Studio',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n ]\n\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'studio'})\n .reply(200, searchResponse)\n\n mockedIsInteractive.mockReturnValue(false)\n\n const {stdout} = await testCommand(DocsSearchCommand, ['studio'])\n\n expect(stdout).toContain('Found 1 result(s):')\n expect(stdout).toContain('Use `sanity docs read <url>` to read an article in terminal.')\n expect(stdout).toContain('Use `sanity docs read <path>` to follow links found within articles.')\n })\n\n test('handles network errors with default message', async () => {\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'test'})\n .reply(500, 'Internal Server Error')\n\n const {error} = await testCommand(DocsSearchCommand, ['test']).catch((err) => err)\n expect(error.message).toBe(\n 'The documentation search API is currently unavailable. Please try again later.',\n )\n expect(error.oclif?.exit).toBe(1)\n })\n\n test('handles interactive mode article selection', async () => {\n mockedSelect.mockResolvedValue(0)\n\n const searchResponse = [\n {\n description: 'Learn how to install Sanity Studio',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n ]\n\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'studio'})\n .reply(200, searchResponse)\n\n nock('https://www.sanity.io')\n .get('/docs/studio/installation.md')\n .reply(200, '# Studio Installation\\n\\nThis is how you install the studio.')\n\n mockedIsInteractive.mockReturnValue(true)\n\n const {stdout} = await testCommand(DocsSearchCommand, ['studio'])\n\n expect(stdout).toContain('Found 1 result(s):')\n expect(stdout).toContain('---')\n expect(stdout).toContain('# Studio Installation')\n expect(stdout).toContain('This is how you install the studio.')\n })\n\n test('handles interactive mode exit selection', async () => {\n mockedSelect.mockResolvedValue(-1) // User selects exit option\n\n const searchResponse = [\n {\n description: 'Learn how to install Sanity Studio',\n path: '/docs/studio/installation',\n title: 'Studio Installation Guide',\n },\n ]\n\n nock('https://www.sanity.io')\n .get('/docs/api/search/semantic')\n .query({query: 'studio'})\n .reply(200, searchResponse)\n\n mockedIsInteractive.mockReturnValue(true)\n\n const {stdout} = await testCommand(DocsSearchCommand, ['studio'])\n\n expect(stdout).toContain('Found 1 result(s):')\n expect(stdout).not.toContain('---') // Should not show article content\n expect(stdout).not.toContain('# Studio Installation')\n })\n})\n"],"names":["runCommand","select","testCommand","nock","afterEach","describe","expect","test","vi","DocsSearchCommand","mock","actual","importActual","fn","mockedIsInteractive","hoisted","isInteractive","mockedSelect","mocked","pending","pendingMocks","cleanAll","toEqual","resetAllMocks","stdout","toMatchInlineSnapshot","searchResponse","description","path","title","get","query","reply","toContain","error","catch","err","message","toBe","oclif","exit","not","mockReturnValue","mockResolvedValue"],"mappings":"AAAA,SAAQA,UAAU,QAAO,cAAa;AACtC,SAAQC,MAAM,QAAO,sBAAqB;AAC1C,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,OAAOC,UAAU,OAAM;AACvB,SAAQC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAE5D,SAAQC,iBAAiB,QAAO,eAAc;AAE9CD,GAAGE,IAAI,CAAC,uBAAuB;IAC7B,MAAMC,SAAS,MAAMH,GAAGI,YAAY,CAAuC;IAC3E,OAAO;QACL,GAAGD,MAAM;QACTV,QAAQO,GAAGK,EAAE;IACf;AACF;AAEA,MAAMC,sBAAsBN,GAAGO,OAAO,CAAC,IAAMP,GAAGK,EAAE;AAElDL,GAAGE,IAAI,CAAC,oBAAoB;IAC1B,MAAMC,SAAS,MAAMH,GAAGI,YAAY,CAAoC;IACxE,OAAO;QACL,GAAGD,MAAM;QACTK,eAAeF;IACjB;AACF;AAEA,MAAMG,eAAeT,GAAGU,MAAM,CAACjB;AAE/BG,UAAU;IACR,MAAMe,UAAUhB,KAAKiB,YAAY;IACjCjB,KAAKkB,QAAQ;IACbf,OAAOa,SAAS,iBAAiBG,OAAO,CAAC,EAAE;IAC3Cd,GAAGe,aAAa;AAClB;AAEAlB,SAAS,gBAAgB;IACvBE,KAAK,gBAAgB;QACnB,MAAM,EAACiB,MAAM,EAAC,GAAG,MAAMxB,WAAW;QAClCM,OAAOkB,QAAQC,qBAAqB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BtC,CAAC;IACH;IAEAlB,KAAK,iCAAiC;QACpC,MAAMmB,iBAAiB;YACrB;gBACEC,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YACA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;SACD;QAED1B,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAQ,GACtBC,KAAK,CAAC,KAAKN;QAEd,MAAM,EAACF,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;SAAS;QAEhEH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;IAC3B;IAEA1B,KAAK,sBAAsB;QACzBJ,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAa,GAC3BC,KAAK,CAAC,KAAK,EAAE;QAEhB,MAAM,EAACR,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;SAAc;QAErEH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;IAC3B;IAEA1B,KAAK,sBAAsB;QACzBJ,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAM,GACpBC,KAAK,CAAC,KAAK;QAEd,MAAM,EAACE,KAAK,EAAC,GAAG,MAAMhC,YAAYO,mBAAmB;YAAC;SAAO,EAAE0B,KAAK,CAAC,CAACC,MAAQA;QAC9E9B,OAAO4B,MAAMG,OAAO,EAAEC,IAAI,CACxB;QAEFhC,OAAO4B,MAAMK,KAAK,EAAEC,MAAMF,IAAI,CAAC;IACjC;IAEA/B,KAAK,uBAAuB;QAC1B,MAAMmB,iBAAiB;YACrB;gBACEC,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YACA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YACA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YAEA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YACA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YACA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;SACD;QAED1B,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAQ,GACtBC,KAAK,CAAC,KAAKN;QAEd,MAAM,EAACF,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;YAAU;SAAY;QAE7EH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;IAC3B;IAEA1B,KAAK,2CAA2C;QAC9C,MAAMmB,iBAAiB;YACrB;gBACEC,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;YACA;gBACEF,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;SACD;QAED1B,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAQ,GACtBC,KAAK,CAAC,KAAKN;QAEd,MAAM,EAACF,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;SAAS;QAEhEH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB,0CAA0C;QAC1C3B,OAAOkB,QAAQiB,GAAG,CAACR,SAAS,CAAC;QAC7B3B,OAAOkB,QAAQiB,GAAG,CAACR,SAAS,CAAC;IAC/B;IAEA1B,KAAK,6CAA6C;QAChD,MAAMmB,iBAAiB;YACrB;gBACEC,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;SACD;QAED1B,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAQ,GACtBC,KAAK,CAAC,KAAKN;QAEdZ,oBAAoB4B,eAAe,CAAC;QAEpC,MAAM,EAAClB,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;SAAS;QAEhEH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;IAC3B;IAEA1B,KAAK,+CAA+C;QAClDJ,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAM,GACpBC,KAAK,CAAC,KAAK;QAEd,MAAM,EAACE,KAAK,EAAC,GAAG,MAAMhC,YAAYO,mBAAmB;YAAC;SAAO,EAAE0B,KAAK,CAAC,CAACC,MAAQA;QAC9E9B,OAAO4B,MAAMG,OAAO,EAAEC,IAAI,CACxB;QAEFhC,OAAO4B,MAAMK,KAAK,EAAEC,MAAMF,IAAI,CAAC;IACjC;IAEA/B,KAAK,8CAA8C;QACjDU,aAAa0B,iBAAiB,CAAC;QAE/B,MAAMjB,iBAAiB;YACrB;gBACEC,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;SACD;QAED1B,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAQ,GACtBC,KAAK,CAAC,KAAKN;QAEdvB,KAAK,yBACF2B,GAAG,CAAC,gCACJE,KAAK,CAAC,KAAK;QAEdlB,oBAAoB4B,eAAe,CAAC;QAEpC,MAAM,EAAClB,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;SAAS;QAEhEH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQS,SAAS,CAAC;IAC3B;IAEA1B,KAAK,2CAA2C;QAC9CU,aAAa0B,iBAAiB,CAAC,CAAC,IAAG,2BAA2B;QAE9D,MAAMjB,iBAAiB;YACrB;gBACEC,aAAa;gBACbC,MAAM;gBACNC,OAAO;YACT;SACD;QAED1B,KAAK,yBACF2B,GAAG,CAAC,6BACJC,KAAK,CAAC;YAACA,OAAO;QAAQ,GACtBC,KAAK,CAAC,KAAKN;QAEdZ,oBAAoB4B,eAAe,CAAC;QAEpC,MAAM,EAAClB,MAAM,EAAC,GAAG,MAAMtB,YAAYO,mBAAmB;YAAC;SAAS;QAEhEH,OAAOkB,QAAQS,SAAS,CAAC;QACzB3B,OAAOkB,QAAQiB,GAAG,CAACR,SAAS,CAAC,QAAO,kCAAkC;QACtE3B,OAAOkB,QAAQiB,GAAG,CAACR,SAAS,CAAC;IAC/B;AACF"}
|