@sanity/cli 6.0.0-alpha.5 → 6.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2907 -109
- package/dist/actions/dataset/create.d.ts +49 -0
- package/dist/actions/dataset/create.js +48 -0
- package/dist/actions/dataset/create.js.map +1 -0
- package/dist/actions/dataset/determineDatasetAclMode.d.ts +37 -0
- package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
- package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
- package/dist/actions/debug/gatherDebugInfo.js +15 -21
- package/dist/actions/debug/gatherDebugInfo.js.map +1 -1
- package/dist/actions/debug/types.d.ts +0 -2
- package/dist/actions/debug/types.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +13 -0
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/init/remoteTemplate.js +1 -1
- package/dist/actions/init/remoteTemplate.js.map +1 -1
- package/dist/actions/manifest/extractAppManifest.d.ts +20 -0
- package/dist/actions/manifest/extractAppManifest.js +51 -0
- package/dist/actions/manifest/extractAppManifest.js.map +1 -0
- package/dist/actions/manifest/extractManifest.js +1 -1
- package/dist/actions/manifest/extractManifest.js.map +1 -1
- package/dist/actions/manifest/types.d.ts +6 -1
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/media/importAspects.js +2 -1
- package/dist/actions/media/importAspects.js.map +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +1 -1
- package/dist/actions/telemetry/resolveConsent.d.ts +1 -9
- package/dist/actions/telemetry/resolveConsent.js +2 -2
- package/dist/actions/telemetry/resolveConsent.js.map +1 -1
- package/dist/actions/telemetry/setConsent.d.ts +1 -4
- package/dist/actions/telemetry/setConsent.js +4 -8
- package/dist/actions/telemetry/setConsent.js.map +1 -1
- package/dist/commands/dataset/create.d.ts +0 -2
- package/dist/commands/dataset/create.js +8 -54
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/debug.js +5 -9
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/init.d.ts +6 -1
- package/dist/commands/init.js +358 -20
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/manifest/extract.js +7 -8
- package/dist/commands/manifest/extract.js.map +1 -1
- package/dist/commands/telemetry/disable.js +0 -1
- package/dist/commands/telemetry/disable.js.map +1 -1
- package/dist/commands/telemetry/enable.js +0 -1
- package/dist/commands/telemetry/enable.js.map +1 -1
- package/dist/commands/telemetry/status.js +1 -3
- package/dist/commands/telemetry/status.js.map +1 -1
- package/dist/config/createCliConfig.d.ts +9 -0
- package/dist/hooks/prerun/flushTelemetry.worker.d.ts +2 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js +22 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -0
- package/dist/hooks/prerun/setupTelemetry.js +65 -1
- package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
- package/dist/prompts/init/promptForTypescript.d.ts +2 -0
- package/dist/prompts/init/promptForTypescript.js +15 -0
- package/dist/prompts/init/promptForTypescript.js.map +1 -0
- package/dist/prompts/promptForDatasetAclMode.d.ts +9 -0
- package/dist/prompts/promptForDatasetAclMode.js +27 -0
- package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
- package/dist/prompts/promptForDatasetName.d.ts +1 -1
- package/dist/prompts/promptForDatasetName.js +4 -1
- package/dist/prompts/promptForDatasetName.js.map +1 -1
- package/dist/services/organizations.d.ts +3 -1
- package/dist/services/organizations.js +2 -1
- package/dist/services/organizations.js.map +1 -1
- package/dist/services/telemetry.d.ts +2 -0
- package/dist/services/telemetry.js +20 -0
- package/dist/services/telemetry.js.map +1 -0
- package/dist/services/user.d.ts +5 -0
- package/dist/services/user.js +12 -1
- package/dist/services/user.js.map +1 -1
- package/dist/services/userApplications.d.ts +3 -1
- package/dist/services/userApplications.js +5 -1
- package/dist/services/userApplications.js.map +1 -1
- package/dist/telemetry/cli.telemetry.d.ts +20 -0
- package/dist/telemetry/cli.telemetry.js +8 -0
- package/dist/telemetry/cli.telemetry.js.map +1 -0
- package/dist/telemetry/store/cleanupOldTelemetryFiles.d.ts +5 -0
- package/dist/telemetry/store/cleanupOldTelemetryFiles.js +30 -0
- package/dist/telemetry/store/cleanupOldTelemetryFiles.js.map +1 -0
- package/dist/telemetry/store/createTelemetryStore.d.ts +39 -0
- package/dist/telemetry/store/createTelemetryStore.js +95 -0
- package/dist/telemetry/store/createTelemetryStore.js.map +1 -0
- package/dist/telemetry/store/createTraceId.d.ts +10 -0
- package/dist/telemetry/store/createTraceId.js +10 -0
- package/dist/telemetry/store/createTraceId.js.map +1 -0
- package/dist/telemetry/store/debug.d.ts +5 -0
- package/dist/telemetry/store/debug.js +7 -0
- package/dist/telemetry/store/debug.js.map +1 -0
- package/dist/telemetry/store/findTelemetryFiles.d.ts +13 -0
- package/dist/telemetry/store/findTelemetryFiles.js +34 -0
- package/dist/telemetry/store/findTelemetryFiles.js.map +1 -0
- package/dist/telemetry/store/flushTelemetryFiles.d.ts +20 -0
- package/dist/telemetry/store/flushTelemetryFiles.js +107 -0
- package/dist/telemetry/store/flushTelemetryFiles.js.map +1 -0
- package/dist/telemetry/store/generateTelemetryFilePath.d.ts +17 -0
- package/dist/telemetry/store/generateTelemetryFilePath.js +30 -0
- package/dist/telemetry/store/generateTelemetryFilePath.js.map +1 -0
- package/dist/telemetry/store/getTelemetryBaseInfo.d.ts +27 -0
- package/dist/telemetry/store/getTelemetryBaseInfo.js +34 -0
- package/dist/telemetry/store/getTelemetryBaseInfo.js.map +1 -0
- package/dist/telemetry/store/logger.d.ts +6 -0
- package/dist/telemetry/store/logger.js +54 -0
- package/dist/telemetry/store/logger.js.map +1 -0
- package/dist/telemetry/store/trace.d.ts +6 -0
- package/dist/telemetry/store/trace.js +150 -0
- package/dist/telemetry/store/trace.js.map +1 -0
- package/dist/telemetry/utils/readNDJSON.d.ts +10 -0
- package/dist/telemetry/utils/readNDJSON.js +18 -0
- package/dist/telemetry/utils/readNDJSON.js.map +1 -0
- package/dist/util/detectRuntime.d.ts +8 -0
- package/dist/util/detectRuntime.js +20 -0
- package/dist/util/detectRuntime.js.map +1 -0
- package/dist/util/isStaging.d.ts +7 -0
- package/dist/util/isStaging.js +10 -0
- package/dist/util/isStaging.js.map +1 -0
- package/dist/util/parseArguments.d.ts +35 -0
- package/dist/util/parseArguments.js +42 -0
- package/dist/util/parseArguments.js.map +1 -0
- package/oclif.manifest.json +7 -1
- package/package.json +25 -18
- package/templates/app-quickstart/src/App.css +20 -0
- package/templates/app-quickstart/src/App.tsx +25 -0
- package/templates/app-quickstart/src/ExampleComponent.css +90 -0
- package/templates/app-quickstart/src/ExampleComponent.tsx +37 -0
- package/templates/app-sanity-ui/src/App.tsx +34 -0
- package/templates/app-sanity-ui/src/ExampleComponent.tsx +34 -0
- package/templates/app-sanity-ui/src/SanityUI.tsx +23 -0
- package/templates/blog/README.md +11 -0
- package/templates/blog/schemaTypes/author.js +50 -0
- package/templates/blog/schemaTypes/blockContent.js +67 -0
- package/templates/blog/schemaTypes/category.js +19 -0
- package/templates/blog/schemaTypes/index.js +6 -0
- package/templates/blog/schemaTypes/post.js +65 -0
- package/templates/blog/static/.gitkeep +1 -0
- package/templates/clean/README.md +9 -0
- package/templates/clean/schemaTypes/index.js +1 -0
- package/templates/clean/static/.gitkeep +1 -0
- package/templates/ecommerce/README.md +11 -0
- package/templates/ecommerce/plugins/.gitkeep +1 -0
- package/templates/ecommerce/plugins/barcode-input/BarcodeInput.js +62 -0
- package/templates/ecommerce/plugins/barcode-input/index.js +9 -0
- package/templates/ecommerce/plugins/barcode-input/schemaType.js +60 -0
- package/templates/ecommerce/schemaTypes/blockContent.js +67 -0
- package/templates/ecommerce/schemaTypes/category.js +39 -0
- package/templates/ecommerce/schemaTypes/index.js +23 -0
- package/templates/ecommerce/schemaTypes/locale/localeBlockContent.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/localeString.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/localeText.js +19 -0
- package/templates/ecommerce/schemaTypes/locale/supportedLanguages.js +5 -0
- package/templates/ecommerce/schemaTypes/product.js +83 -0
- package/templates/ecommerce/schemaTypes/productVariant.js +52 -0
- package/templates/ecommerce/schemaTypes/vendor.js +39 -0
- package/templates/ecommerce/static/.gitkeep +1 -0
- package/templates/get-started/README.md +9 -0
- package/templates/get-started/plugins/.gitkeep +1 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/CustomDefaultLayout.tsx +16 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +104 -0
- package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +11 -0
- package/templates/get-started/schemaTypes/index.ts +1 -0
- package/templates/get-started/static/.gitkeep +1 -0
- package/templates/moviedb/README.md +10 -0
- package/templates/moviedb/schemaTypes/blockContent.js +67 -0
- package/templates/moviedb/schemaTypes/castMember.js +37 -0
- package/templates/moviedb/schemaTypes/crewMember.js +52 -0
- package/templates/moviedb/schemaTypes/index.js +22 -0
- package/templates/moviedb/schemaTypes/movie.js +85 -0
- package/templates/moviedb/schemaTypes/person.js +37 -0
- package/templates/moviedb/schemaTypes/plotSummaries.js +20 -0
- package/templates/moviedb/schemaTypes/plotSummary.js +24 -0
- package/templates/moviedb/schemaTypes/screening.js +81 -0
- package/templates/moviedb/static/.gitkeep +1 -0
- package/templates/quickstart/README.md +9 -0
- package/templates/quickstart/schemaTypes/index.js +1 -0
- package/templates/quickstart/static/.gitkeep +1 -0
- package/templates/shared/gitignore.txt +29 -0
- package/templates/shared/tsconfig.json +17 -0
- package/templates/shopify/README.md +85 -0
- package/templates/shopify/components/hotspots/ProductTooltip.tsx +38 -0
- package/templates/shopify/components/icons/Shopify.tsx +20 -0
- package/templates/shopify/components/inputs/CollectionHidden.tsx +23 -0
- package/templates/shopify/components/inputs/PlaceholderString.tsx +20 -0
- package/templates/shopify/components/inputs/ProductHidden.tsx +64 -0
- package/templates/shopify/components/inputs/ProductVariantHidden.tsx +24 -0
- package/templates/shopify/components/inputs/ProxyString.tsx +32 -0
- package/templates/shopify/components/media/ColorTheme.tsx +38 -0
- package/templates/shopify/components/media/ShopifyDocumentStatus.tsx +82 -0
- package/templates/shopify/components/studio/Navbar.tsx +29 -0
- package/templates/shopify/constants.ts +61 -0
- package/templates/shopify/docs/features.md +158 -0
- package/templates/shopify/plugins/customDocumentActions/index.ts +55 -0
- package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +144 -0
- package/templates/shopify/plugins/customDocumentActions/shopifyLink.ts +39 -0
- package/templates/shopify/plugins/customDocumentActions/types.ts +14 -0
- package/templates/shopify/schemaTypes/documents/collection.tsx +142 -0
- package/templates/shopify/schemaTypes/documents/colorTheme.tsx +44 -0
- package/templates/shopify/schemaTypes/documents/page.ts +70 -0
- package/templates/shopify/schemaTypes/documents/product.tsx +132 -0
- package/templates/shopify/schemaTypes/documents/productVariant.tsx +67 -0
- package/templates/shopify/schemaTypes/index.ts +108 -0
- package/templates/shopify/schemaTypes/objects/collection/collectionGroupType.ts +27 -0
- package/templates/shopify/schemaTypes/objects/collection/collectionLinksType.ts +16 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +48 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorType.tsx +50 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeObjectType.ts +40 -0
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionSizeType.ts +49 -0
- package/templates/shopify/schemaTypes/objects/global/footerType.ts +22 -0
- package/templates/shopify/schemaTypes/objects/global/menuLinksType.ts +21 -0
- package/templates/shopify/schemaTypes/objects/global/menuType.ts +17 -0
- package/templates/shopify/schemaTypes/objects/global/notFoundPageType.ts +37 -0
- package/templates/shopify/schemaTypes/objects/hotspot/imageWithProductHotspotsType.ts +48 -0
- package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +17 -0
- package/templates/shopify/schemaTypes/objects/hotspot/spotType.tsx +60 -0
- package/templates/shopify/schemaTypes/objects/link/linkEmailType.tsx +34 -0
- package/templates/shopify/schemaTypes/objects/link/linkExternalType.tsx +37 -0
- package/templates/shopify/schemaTypes/objects/link/linkInternalType.tsx +33 -0
- package/templates/shopify/schemaTypes/objects/link/linkProductType.tsx +60 -0
- package/templates/shopify/schemaTypes/objects/module/accordionGroupType.ts +33 -0
- package/templates/shopify/schemaTypes/objects/module/accordionType.ts +28 -0
- package/templates/shopify/schemaTypes/objects/module/callToActionType.tsx +85 -0
- package/templates/shopify/schemaTypes/objects/module/calloutType.ts +38 -0
- package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +47 -0
- package/templates/shopify/schemaTypes/objects/module/gridItemType.ts +41 -0
- package/templates/shopify/schemaTypes/objects/module/gridType.ts +28 -0
- package/templates/shopify/schemaTypes/objects/module/heroType.tsx +40 -0
- package/templates/shopify/schemaTypes/objects/module/imageCallToActionType.tsx +19 -0
- package/templates/shopify/schemaTypes/objects/module/imageFeatureType.ts +80 -0
- package/templates/shopify/schemaTypes/objects/module/imageFeaturesType.tsx +51 -0
- package/templates/shopify/schemaTypes/objects/module/instagramType.ts +35 -0
- package/templates/shopify/schemaTypes/objects/module/productFeaturesType.tsx +50 -0
- package/templates/shopify/schemaTypes/objects/module/productReferenceType.tsx +42 -0
- package/templates/shopify/schemaTypes/objects/seoType.ts +31 -0
- package/templates/shopify/schemaTypes/objects/shopify/collectionRuleType.tsx +37 -0
- package/templates/shopify/schemaTypes/objects/shopify/inventoryType.ts +25 -0
- package/templates/shopify/schemaTypes/objects/shopify/optionType.tsx +31 -0
- package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +11 -0
- package/templates/shopify/schemaTypes/objects/shopify/priceRangeType.ts +20 -0
- package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +142 -0
- package/templates/shopify/schemaTypes/objects/shopify/proxyStringType.ts +12 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopType.ts +15 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +84 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +131 -0
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductVariantType.ts +121 -0
- package/templates/shopify/schemaTypes/portableText/portableTextSimpleType.tsx +45 -0
- package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +52 -0
- package/templates/shopify/schemaTypes/singletons/homeType.ts +49 -0
- package/templates/shopify/schemaTypes/singletons/settingsType.ts +96 -0
- package/templates/shopify/static/.gitkeep +1 -0
- package/templates/shopify/structure/collectionStructure.ts +9 -0
- package/templates/shopify/structure/colorThemeStructure.ts +9 -0
- package/templates/shopify/structure/homeStructure.ts +9 -0
- package/templates/shopify/structure/index.ts +57 -0
- package/templates/shopify/structure/pageStructure.ts +11 -0
- package/templates/shopify/structure/productStructure.ts +51 -0
- package/templates/shopify/structure/settingStructure.ts +9 -0
- package/templates/shopify/utils/blocksToText.ts +20 -0
- package/templates/shopify/utils/defineStructure.ts +11 -0
- package/templates/shopify/utils/getPriceRange.ts +24 -0
- package/templates/shopify/utils/shopifyUrls.ts +22 -0
- package/templates/shopify/utils/validateSlug.ts +18 -0
- package/templates/shopify-online-storefront/README.md +54 -0
- package/templates/shopify-online-storefront/components/icons/Shopify.tsx +22 -0
- package/templates/shopify-online-storefront/components/inputs/CollectionHidden.tsx +23 -0
- package/templates/shopify-online-storefront/components/inputs/PlaceholderString.tsx +25 -0
- package/templates/shopify-online-storefront/components/inputs/ProductHidden.tsx +66 -0
- package/templates/shopify-online-storefront/components/inputs/ProductVariantHidden.tsx +25 -0
- package/templates/shopify-online-storefront/components/inputs/ProxyString.tsx +38 -0
- package/templates/shopify-online-storefront/components/media/ShopifyDocumentStatus.tsx +83 -0
- package/templates/shopify-online-storefront/constants.ts +18 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +45 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +144 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyLink.ts +39 -0
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/types.ts +14 -0
- package/templates/shopify-online-storefront/schemaTypes/blocks/blockContent.ts +32 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/collection.tsx +83 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/product.tsx +102 -0
- package/templates/shopify-online-storefront/schemaTypes/documents/productVariant.tsx +82 -0
- package/templates/shopify-online-storefront/schemaTypes/index.ts +43 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/accordion.ts +31 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/accordionGroup.ts +35 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/callout.ts +40 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/inventory.ts +30 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/option.ts +30 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/priceRange.ts +22 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/proxyString.ts +11 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollection.ts +109 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyCollectionRule.tsx +45 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProduct.ts +165 -0
- package/templates/shopify-online-storefront/schemaTypes/objects/shopifyProductVariant.ts +151 -0
- package/templates/shopify-online-storefront/structure/collectionStructure.ts +9 -0
- package/templates/shopify-online-storefront/structure/index.ts +37 -0
- package/templates/shopify-online-storefront/structure/productStructure.ts +35 -0
- package/templates/shopify-online-storefront/utils/defineStructure.ts +11 -0
- package/templates/shopify-online-storefront/utils/getPriceRange.ts +24 -0
- package/templates/shopify-online-storefront/utils/shopifyUrls.ts +22 -0
- package/dist/actions/build/__tests__/buildApp.test.js +0 -367
- package/dist/actions/build/__tests__/buildApp.test.js.map +0 -1
- package/dist/actions/build/__tests__/buildStudio.test.js +0 -561
- package/dist/actions/build/__tests__/buildStudio.test.js.map +0 -1
- package/dist/actions/build/__tests__/checkRequiredDependencies.test.js +0 -233
- package/dist/actions/build/__tests__/checkRequiredDependencies.test.js.map +0 -1
- package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js +0 -414
- package/dist/actions/build/__tests__/checkStudioDependencyVersions.test.js.map +0 -1
- package/dist/actions/build/__tests__/determineBasePath.test.js +0 -24
- package/dist/actions/build/__tests__/determineBasePath.test.js.map +0 -1
- package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js +0 -109
- package/dist/actions/build/__tests__/getAutoUpdatesImportMap.test.js.map +0 -1
- package/dist/actions/build/__tests__/getViteConfig.test.js +0 -493
- package/dist/actions/build/__tests__/getViteConfig.test.js.map +0 -1
- package/dist/actions/build/__tests__/renderDocument.test.js +0 -278
- package/dist/actions/build/__tests__/renderDocument.test.js.map +0 -1
- package/dist/actions/build/__tests__/shouldAutoUpdate.test.js +0 -153
- package/dist/actions/build/__tests__/shouldAutoUpdate.test.js.map +0 -1
- package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js +0 -657
- package/dist/actions/build/renderDocumentWorker/__tests__/renderDocumentWorker.test.js.map +0 -1
- package/dist/actions/dataset/__tests__/validateDatasetName.test.js +0 -182
- package/dist/actions/dataset/__tests__/validateDatasetName.test.js.map +0 -1
- package/dist/actions/deploy/__tests__/checkDir.test.js +0 -120
- package/dist/actions/deploy/__tests__/checkDir.test.js.map +0 -1
- package/dist/actions/docs/__tests__/normalizeDocsPath.test.js +0 -16
- package/dist/actions/docs/__tests__/normalizeDocsPath.test.js.map +0 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js +0 -124
- package/dist/actions/documents/validation/reporters/prettyReporter/__tests__/formatDocumentValidation.test.js.map +0 -1
- package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js +0 -274
- package/dist/actions/graphql/__tests__/getGraphQLAPIs.test.js.map +0 -1
- package/dist/actions/media/__tests__/importMedia.test.js +0 -182
- package/dist/actions/media/__tests__/importMedia.test.js.map +0 -1
- package/dist/actions/schema/__tests__/formatSchemaValidation.test.js +0 -174
- package/dist/actions/schema/__tests__/formatSchemaValidation.test.js.map +0 -1
- package/dist/actions/schema/__tests__/validateAction.test.js +0 -281
- package/dist/actions/schema/__tests__/validateAction.test.js.map +0 -1
- package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js +0 -27
- package/dist/actions/telemetry/__tests__/fetchTelemetryConsent.test.js.map +0 -1
- package/dist/actions/users/__tests__/validateEmail.test.js +0 -16
- package/dist/actions/users/__tests__/validateEmail.test.js.map +0 -1
- package/dist/commands/__tests__/blueprints.test.js +0 -54
- package/dist/commands/__tests__/blueprints.test.js.map +0 -1
- package/dist/commands/__tests__/build.test.js +0 -132
- package/dist/commands/__tests__/build.test.js.map +0 -1
- package/dist/commands/__tests__/codemod.test.js +0 -271
- package/dist/commands/__tests__/codemod.test.js.map +0 -1
- package/dist/commands/__tests__/debug.test.js +0 -590
- package/dist/commands/__tests__/debug.test.js.map +0 -1
- package/dist/commands/__tests__/deploy.test.js +0 -1945
- package/dist/commands/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/__tests__/dev.test.js +0 -453
- package/dist/commands/__tests__/dev.test.js.map +0 -1
- package/dist/commands/__tests__/exec.test.js +0 -207
- package/dist/commands/__tests__/exec.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.authentication.test.js +0 -73
- package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -195
- package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.plan.test.js +0 -279
- package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.setup.test.js +0 -335
- package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
- package/dist/commands/__tests__/install.test.js +0 -282
- package/dist/commands/__tests__/install.test.js.map +0 -1
- package/dist/commands/__tests__/learn.test.js +0 -29
- package/dist/commands/__tests__/learn.test.js.map +0 -1
- package/dist/commands/__tests__/logout.test.js +0 -91
- package/dist/commands/__tests__/logout.test.js.map +0 -1
- package/dist/commands/__tests__/manage.test.js +0 -110
- package/dist/commands/__tests__/manage.test.js.map +0 -1
- package/dist/commands/__tests__/migration.test.js +0 -119
- package/dist/commands/__tests__/migration.test.js.map +0 -1
- package/dist/commands/__tests__/preview.test.js +0 -261
- package/dist/commands/__tests__/preview.test.js.map +0 -1
- package/dist/commands/__tests__/start.test.js +0 -253
- package/dist/commands/__tests__/start.test.js.map +0 -1
- package/dist/commands/__tests__/undeploy.test.js +0 -382
- package/dist/commands/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/__tests__/versions.test.js +0 -142
- package/dist/commands/__tests__/versions.test.js.map +0 -1
- package/dist/commands/backup/__tests__/disable.test.js +0 -204
- package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/download.test.js +0 -768
- package/dist/commands/backup/__tests__/download.test.js.map +0 -1
- package/dist/commands/backup/__tests__/enable.test.js +0 -286
- package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/list.test.js +0 -330
- package/dist/commands/backup/__tests__/list.test.js.map +0 -1
- package/dist/commands/cors/__tests__/add.test.js +0 -376
- package/dist/commands/cors/__tests__/add.test.js.map +0 -1
- package/dist/commands/cors/__tests__/delete.test.js +0 -308
- package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
- package/dist/commands/cors/__tests__/list.test.js +0 -241
- package/dist/commands/cors/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/copy.test.js +0 -628
- package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/create.test.js +0 -342
- package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/delete.test.js +0 -231
- package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/export.test.js +0 -601
- package/dist/commands/dataset/__tests__/export.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/import.test.js +0 -53
- package/dist/commands/dataset/__tests__/import.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/list.test.js +0 -216
- package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/create.test.js +0 -339
- package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -247
- package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/link.test.js +0 -376
- package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -313
- package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -128
- package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -198
- package/dist/commands/dataset/visibility/__tests__/set.test.js.map +0 -1
- package/dist/commands/docs/__tests__/browse.test.js +0 -29
- package/dist/commands/docs/__tests__/browse.test.js.map +0 -1
- package/dist/commands/docs/__tests__/read.test.js +0 -78
- package/dist/commands/docs/__tests__/read.test.js.map +0 -1
- package/dist/commands/docs/__tests__/search.test.js +0 -255
- package/dist/commands/docs/__tests__/search.test.js.map +0 -1
- package/dist/commands/documents/__tests__/create.test.js +0 -1030
- package/dist/commands/documents/__tests__/create.test.js.map +0 -1
- package/dist/commands/documents/__tests__/delete.test.js +0 -300
- package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
- package/dist/commands/documents/__tests__/get.test.js +0 -182
- package/dist/commands/documents/__tests__/get.test.js.map +0 -1
- package/dist/commands/documents/__tests__/query.test.js +0 -300
- package/dist/commands/documents/__tests__/query.test.js.map +0 -1
- package/dist/commands/documents/__tests__/validate.test.js +0 -249
- package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/list.test.js +0 -240
- package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/undeploy.test.js +0 -410
- package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/hook/__tests__/attempt.test.js +0 -275
- package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
- package/dist/commands/hook/__tests__/create.test.js +0 -119
- package/dist/commands/hook/__tests__/create.test.js.map +0 -1
- package/dist/commands/hook/__tests__/delete.test.js +0 -233
- package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
- package/dist/commands/hook/__tests__/list.test.js +0 -145
- package/dist/commands/hook/__tests__/list.test.js.map +0 -1
- package/dist/commands/hook/__tests__/logs.test.js +0 -798
- package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
- package/dist/commands/manifest/__tests__/extract.test.js +0 -132
- package/dist/commands/manifest/__tests__/extract.test.js.map +0 -1
- package/dist/commands/mcp/__tests__/configure.test.js +0 -397
- package/dist/commands/mcp/__tests__/configure.test.js.map +0 -1
- package/dist/commands/media/__tests__/create-aspect.test.js +0 -173
- package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/delete-aspect.test.js +0 -342
- package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -619
- package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/export.test.js +0 -697
- package/dist/commands/media/__tests__/export.test.js.map +0 -1
- package/dist/commands/media/__tests__/import.test.js +0 -347
- package/dist/commands/media/__tests__/import.test.js.map +0 -1
- package/dist/commands/openapi/__tests__/get.test.js +0 -149
- package/dist/commands/openapi/__tests__/get.test.js.map +0 -1
- package/dist/commands/openapi/__tests__/list.test.js +0 -113
- package/dist/commands/openapi/__tests__/list.test.js.map +0 -1
- package/dist/commands/projects/__tests__/list.test.js +0 -154
- package/dist/commands/projects/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/delete.test.js +0 -454
- package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
- package/dist/commands/schema/__tests__/deploy.test.js +0 -348
- package/dist/commands/schema/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/schema/__tests__/extract.test.js +0 -121
- package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
- package/dist/commands/schema/__tests__/list.test.js +0 -399
- package/dist/commands/schema/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/validate.test.js +0 -121
- package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/disable.test.js +0 -147
- package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/enable.test.js +0 -133
- package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/status.test.js +0 -155
- package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/add.test.js +0 -435
- package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/delete.test.js +0 -405
- package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/list.test.js +0 -395
- package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
- package/dist/commands/users/__tests__/invite.test.js +0 -362
- package/dist/commands/users/__tests__/invite.test.js.map +0 -1
- package/dist/commands/users/__tests__/list.test.js +0 -407
- package/dist/commands/users/__tests__/list.test.js.map +0 -1
- package/dist/hooks/prerun/__tests__/setupTelemetry.test.js +0 -77
- package/dist/hooks/prerun/__tests__/setupTelemetry.test.js.map +0 -1
- package/dist/services/__tests__/datasetAliases.test.js +0 -131
- package/dist/services/__tests__/datasetAliases.test.js.map +0 -1
- package/dist/services/__tests__/datasets.test.js +0 -436
- package/dist/services/__tests__/datasets.test.js.map +0 -1
- package/dist/services/__tests__/graphql.test.js +0 -43
- package/dist/services/__tests__/graphql.test.js.map +0 -1
- package/dist/services/__tests__/mediaLibraries.test.js +0 -88
- package/dist/services/__tests__/mediaLibraries.test.js.map +0 -1
- package/dist/services/__tests__/projects.test.js +0 -41
- package/dist/services/__tests__/projects.test.js.map +0 -1
- package/dist/services/__tests__/userApplications.test.js +0 -113
- package/dist/services/__tests__/userApplications.test.js.map +0 -1
- package/dist/util/__tests__/appId.test.js +0 -31
- package/dist/util/__tests__/appId.test.js.map +0 -1
- package/dist/util/__tests__/cliClient.test.js +0 -184
- package/dist/util/__tests__/cliClient.test.js.map +0 -1
- package/dist/util/__tests__/compareDependencyVersions.test.js +0 -426
- package/dist/util/__tests__/compareDependencyVersions.test.js.map +0 -1
- package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js +0 -74
- package/dist/util/__tests__/extractDocumentsFromNdjsonOrTarball.test.js.map +0 -1
- package/dist/util/__tests__/findNdjsonEntry.test.js +0 -54
- package/dist/util/__tests__/findNdjsonEntry.test.js.map +0 -1
- package/dist/util/__tests__/getCliVersion.test.js +0 -28
- package/dist/util/__tests__/getCliVersion.test.js.map +0 -1
- package/dist/util/__tests__/getLocalPackageVersion.test.js +0 -84
- package/dist/util/__tests__/getLocalPackageVersion.test.js.map +0 -1
- package/dist/util/__tests__/getWorkspace.test.js +0 -37
- package/dist/util/__tests__/getWorkspace.test.js.map +0 -1
- package/dist/util/__tests__/readPackageJson.test.js +0 -69
- package/dist/util/__tests__/readPackageJson.test.js.map +0 -1
- package/dist/util/__tests__/warnAboutMissingAppId.test.js +0 -28
- package/dist/util/__tests__/warnAboutMissingAppId.test.js.map +0 -1
- package/dist/util/packageManager/__tests__/installPackages.test.js +0 -388
- package/dist/util/packageManager/__tests__/installPackages.test.js.map +0 -1
- package/dist/util/validation/ __tests__/validateDocuments.test.js +0 -274
- package/dist/util/validation/ __tests__/validateDocuments.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/__tests__/datasetAliases.test.ts"],"sourcesContent":["import {getProjectCliClient} from '@sanity/cli-core'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {\n createAlias,\n DATASET_ALIASES_API_VERSION,\n listAliases,\n removeAlias,\n updateAlias,\n} from '../datasetAliases.js'\n\nvi.mock(import('@sanity/cli-core'), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n getProjectCliClient: vi.fn(),\n }\n})\n\nconst mockClient = {\n request: vi.fn(),\n}\n\nconst mockGetProjectCliClient = vi.mocked(getProjectCliClient)\n\nbeforeEach(() => {\n mockGetProjectCliClient.mockResolvedValue(mockClient as never)\n})\n\nafterEach(() => {\n vi.clearAllMocks()\n})\n\ndescribe('#listAliases', () => {\n test('calls client.request with correct parameters', async () => {\n const mockAliases = [\n {datasetName: 'production', name: 'prod'},\n {datasetName: 'development', name: 'dev'},\n ]\n mockClient.request.mockResolvedValue(mockAliases)\n\n const result = await listAliases('test-project')\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_ALIASES_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({uri: '/aliases'})\n expect(result).toBe(mockAliases)\n })\n})\n\ndescribe('#createAlias', () => {\n test('calls client.request with correct parameters when datasetName is provided', async () => {\n const mockResponse = {aliasName: 'prod', datasetName: 'production'}\n mockClient.request.mockResolvedValue(mockResponse)\n\n const result = await createAlias('test-project', 'prod', 'production')\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_ALIASES_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({\n body: {datasetName: 'production'},\n method: 'PUT',\n uri: '/aliases/prod',\n })\n expect(result).toBe(mockResponse)\n })\n\n test('calls client.request with undefined body when datasetName is null', async () => {\n const mockResponse = {aliasName: 'prod', datasetName: null}\n mockClient.request.mockResolvedValue(mockResponse)\n\n const result = await createAlias('test-project', 'prod', null)\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_ALIASES_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({\n body: undefined,\n method: 'PUT',\n uri: '/aliases/prod',\n })\n expect(result).toBe(mockResponse)\n })\n})\n\ndescribe('#removeAlias', () => {\n test('calls client.request with correct parameters', async () => {\n const mockResponse = {deleted: true}\n mockClient.request.mockResolvedValue(mockResponse)\n\n const result = await removeAlias('test-project', 'test-alias')\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_ALIASES_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({\n method: 'DELETE',\n uri: '/aliases/test-alias',\n })\n expect(result).toBe(mockResponse)\n })\n})\n\ndescribe('#updateAlias', () => {\n test('calls client.request with correct parameters', async () => {\n const mockResponse = {aliasName: 'prod', datasetName: 'production'}\n mockClient.request.mockResolvedValue(mockResponse)\n\n const result = await updateAlias('test-project', 'prod', 'production')\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_ALIASES_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({\n body: {datasetName: 'production'},\n method: 'PATCH',\n uri: '/aliases/prod',\n })\n expect(result).toBe(mockResponse)\n })\n})\n"],"names":["getProjectCliClient","afterEach","beforeEach","describe","expect","test","vi","createAlias","DATASET_ALIASES_API_VERSION","listAliases","removeAlias","updateAlias","mock","importOriginal","actual","fn","mockClient","request","mockGetProjectCliClient","mocked","mockResolvedValue","clearAllMocks","mockAliases","datasetName","name","result","toHaveBeenCalledWith","apiVersion","projectId","requireUser","uri","toBe","mockResponse","aliasName","body","method","undefined","deleted"],"mappings":"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"}
|
|
@@ -1,436 +0,0 @@
|
|
|
1
|
-
import { getProjectCliClient } from '@sanity/cli-core';
|
|
2
|
-
import { EventSource } from 'eventsource';
|
|
3
|
-
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
|
4
|
-
import { createDataset, DATASET_API_VERSION, deleteDataset, editDatasetAcl, followCopyJobProgress, listDatasetAliases, listDatasets } from '../datasets.js';
|
|
5
|
-
vi.mock('eventsource', ()=>{
|
|
6
|
-
return {
|
|
7
|
-
EventSource: vi.fn()
|
|
8
|
-
};
|
|
9
|
-
});
|
|
10
|
-
vi.mock(import('@sanity/cli-core'), async (importOriginal)=>{
|
|
11
|
-
const actual = await importOriginal();
|
|
12
|
-
return {
|
|
13
|
-
...actual,
|
|
14
|
-
getProjectCliClient: vi.fn()
|
|
15
|
-
};
|
|
16
|
-
});
|
|
17
|
-
const mockClient = {
|
|
18
|
-
config: vi.fn(),
|
|
19
|
-
datasets: {
|
|
20
|
-
create: vi.fn(),
|
|
21
|
-
delete: vi.fn(),
|
|
22
|
-
edit: vi.fn(),
|
|
23
|
-
list: vi.fn()
|
|
24
|
-
},
|
|
25
|
-
request: vi.fn()
|
|
26
|
-
};
|
|
27
|
-
const mockGetProjectCliClient = vi.mocked(getProjectCliClient);
|
|
28
|
-
beforeEach(()=>{
|
|
29
|
-
mockGetProjectCliClient.mockResolvedValue(mockClient);
|
|
30
|
-
});
|
|
31
|
-
afterEach(()=>{
|
|
32
|
-
vi.clearAllMocks();
|
|
33
|
-
});
|
|
34
|
-
describe('#listDatasets', ()=>{
|
|
35
|
-
test('calls client.datasets.list with correct parameters', async ()=>{
|
|
36
|
-
const mockDatasets = [
|
|
37
|
-
{
|
|
38
|
-
aclMode: 'private',
|
|
39
|
-
name: 'production'
|
|
40
|
-
}
|
|
41
|
-
];
|
|
42
|
-
mockClient.datasets.list.mockResolvedValue(mockDatasets);
|
|
43
|
-
const result = await listDatasets('test-project');
|
|
44
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
45
|
-
apiVersion: DATASET_API_VERSION,
|
|
46
|
-
projectId: 'test-project',
|
|
47
|
-
requireUser: true
|
|
48
|
-
});
|
|
49
|
-
expect(mockClient.datasets.list).toHaveBeenCalledWith();
|
|
50
|
-
expect(result).toBe(mockDatasets);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
describe('#deleteDataset', ()=>{
|
|
54
|
-
test('calls client.datasets.delete with correct parameters', async ()=>{
|
|
55
|
-
mockClient.datasets.delete.mockResolvedValue(undefined);
|
|
56
|
-
await deleteDataset({
|
|
57
|
-
datasetName: 'test-dataset',
|
|
58
|
-
projectId: 'test-project'
|
|
59
|
-
});
|
|
60
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
61
|
-
apiVersion: DATASET_API_VERSION,
|
|
62
|
-
projectId: 'test-project',
|
|
63
|
-
requireUser: true
|
|
64
|
-
});
|
|
65
|
-
expect(mockClient.datasets.delete).toHaveBeenCalledWith('test-dataset');
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
describe('#editDatasetAcl', ()=>{
|
|
69
|
-
test('calls client.datasets.edit with correct parameters for private mode', async ()=>{
|
|
70
|
-
mockClient.datasets.edit.mockResolvedValue({});
|
|
71
|
-
await editDatasetAcl({
|
|
72
|
-
aclMode: 'private',
|
|
73
|
-
datasetName: 'test-dataset',
|
|
74
|
-
projectId: 'test-project'
|
|
75
|
-
});
|
|
76
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
77
|
-
apiVersion: DATASET_API_VERSION,
|
|
78
|
-
projectId: 'test-project',
|
|
79
|
-
requireUser: true
|
|
80
|
-
});
|
|
81
|
-
expect(mockClient.datasets.edit).toHaveBeenCalledWith('test-dataset', {
|
|
82
|
-
aclMode: 'private'
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
test('calls client.datasets.edit with correct parameters for public mode', async ()=>{
|
|
86
|
-
mockClient.datasets.edit.mockResolvedValue({});
|
|
87
|
-
await editDatasetAcl({
|
|
88
|
-
aclMode: 'public',
|
|
89
|
-
datasetName: 'my-dataset',
|
|
90
|
-
projectId: 'my-project'
|
|
91
|
-
});
|
|
92
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
93
|
-
apiVersion: DATASET_API_VERSION,
|
|
94
|
-
projectId: 'my-project',
|
|
95
|
-
requireUser: true
|
|
96
|
-
});
|
|
97
|
-
expect(mockClient.datasets.edit).toHaveBeenCalledWith('my-dataset', {
|
|
98
|
-
aclMode: 'public'
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
test('propagates errors from client', async ()=>{
|
|
102
|
-
const error = new Error('API error');
|
|
103
|
-
mockClient.datasets.edit.mockRejectedValue(error);
|
|
104
|
-
await expect(editDatasetAcl({
|
|
105
|
-
aclMode: 'private',
|
|
106
|
-
datasetName: 'test-dataset',
|
|
107
|
-
projectId: 'test-project'
|
|
108
|
-
})).rejects.toThrow('API error');
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
describe('#listDatasetAliases', ()=>{
|
|
112
|
-
test('calls client.request with correct parameters', async ()=>{
|
|
113
|
-
const mockAliases = [
|
|
114
|
-
{
|
|
115
|
-
datasetName: 'test-dataset',
|
|
116
|
-
name: 'test-alias'
|
|
117
|
-
}
|
|
118
|
-
];
|
|
119
|
-
mockClient.request.mockResolvedValue(mockAliases);
|
|
120
|
-
const result = await listDatasetAliases('test-project');
|
|
121
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
122
|
-
apiVersion: DATASET_API_VERSION,
|
|
123
|
-
projectId: 'test-project',
|
|
124
|
-
requireUser: true
|
|
125
|
-
});
|
|
126
|
-
expect(mockClient.request).toHaveBeenCalledWith({
|
|
127
|
-
uri: '/aliases'
|
|
128
|
-
});
|
|
129
|
-
expect(result).toBe(mockAliases);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
describe('#createDataset', ()=>{
|
|
133
|
-
test('calls client.datasets.create with correct parameters', async ()=>{
|
|
134
|
-
mockClient.datasets.create.mockResolvedValue(undefined);
|
|
135
|
-
await createDataset({
|
|
136
|
-
aclMode: 'private',
|
|
137
|
-
datasetName: 'test-dataset',
|
|
138
|
-
projectId: 'test-project'
|
|
139
|
-
});
|
|
140
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
141
|
-
apiVersion: DATASET_API_VERSION,
|
|
142
|
-
projectId: 'test-project',
|
|
143
|
-
requireUser: true
|
|
144
|
-
});
|
|
145
|
-
expect(mockClient.datasets.create).toHaveBeenCalledWith('test-dataset', {
|
|
146
|
-
aclMode: 'private'
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
test('calls client.datasets.create without aclMode if not provided', async ()=>{
|
|
150
|
-
mockClient.datasets.create.mockResolvedValue(undefined);
|
|
151
|
-
await createDataset({
|
|
152
|
-
datasetName: 'test-dataset',
|
|
153
|
-
projectId: 'test-project'
|
|
154
|
-
});
|
|
155
|
-
expect(mockClient.datasets.create).toHaveBeenCalledWith('test-dataset');
|
|
156
|
-
expect(mockGetProjectCliClient).toHaveBeenCalledWith({
|
|
157
|
-
apiVersion: DATASET_API_VERSION,
|
|
158
|
-
projectId: 'test-project',
|
|
159
|
-
requireUser: true
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
describe('#followCopyJobProgress', ()=>{
|
|
164
|
-
let mockEventSource;
|
|
165
|
-
beforeEach(()=>{
|
|
166
|
-
mockEventSource = {
|
|
167
|
-
addEventListener: vi.fn(),
|
|
168
|
-
close: vi.fn(),
|
|
169
|
-
removeEventListener: vi.fn()
|
|
170
|
-
};
|
|
171
|
-
vi.mocked(EventSource).mockImplementation(()=>mockEventSource);
|
|
172
|
-
mockClient.config = vi.fn().mockReturnValue({
|
|
173
|
-
url: 'https://api.sanity.io'
|
|
174
|
-
});
|
|
175
|
-
mockGetProjectCliClient.mockResolvedValue(mockClient);
|
|
176
|
-
});
|
|
177
|
-
test('subscribes to progress events and completes successfully', (context)=>{
|
|
178
|
-
return new Promise((resolve)=>{
|
|
179
|
-
const observable = followCopyJobProgress({
|
|
180
|
-
jobId: 'test-job',
|
|
181
|
-
projectId: 'test-project'
|
|
182
|
-
});
|
|
183
|
-
const events = [];
|
|
184
|
-
observable.subscribe({
|
|
185
|
-
complete: ()=>{
|
|
186
|
-
// When state is 'completed', onComplete is called which doesn't push the event
|
|
187
|
-
expect(events).toEqual([
|
|
188
|
-
{
|
|
189
|
-
progress: 25,
|
|
190
|
-
state: 'processing',
|
|
191
|
-
type: 'job'
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
progress: 50,
|
|
195
|
-
state: 'processing',
|
|
196
|
-
type: 'job'
|
|
197
|
-
}
|
|
198
|
-
]);
|
|
199
|
-
expect(mockEventSource.close).toHaveBeenCalled();
|
|
200
|
-
expect(mockEventSource.removeEventListener).toHaveBeenCalledTimes(4);
|
|
201
|
-
resolve();
|
|
202
|
-
},
|
|
203
|
-
error: (err)=>{
|
|
204
|
-
context.task.result?.errors?.push(err);
|
|
205
|
-
resolve();
|
|
206
|
-
},
|
|
207
|
-
next: (event)=>{
|
|
208
|
-
events.push(event);
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
// Wait for async getJobListenUrl to complete
|
|
212
|
-
setImmediate(()=>{
|
|
213
|
-
// Simulate progress events
|
|
214
|
-
const jobHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'job')?.[1];
|
|
215
|
-
if (jobHandler) {
|
|
216
|
-
jobHandler({
|
|
217
|
-
data: JSON.stringify({
|
|
218
|
-
progress: 25,
|
|
219
|
-
state: 'processing',
|
|
220
|
-
type: 'job'
|
|
221
|
-
})
|
|
222
|
-
});
|
|
223
|
-
jobHandler({
|
|
224
|
-
data: JSON.stringify({
|
|
225
|
-
progress: 50,
|
|
226
|
-
state: 'processing',
|
|
227
|
-
type: 'job'
|
|
228
|
-
})
|
|
229
|
-
});
|
|
230
|
-
jobHandler({
|
|
231
|
-
data: JSON.stringify({
|
|
232
|
-
progress: 100,
|
|
233
|
-
state: 'completed',
|
|
234
|
-
type: 'job'
|
|
235
|
-
})
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
test('handles JSON parse errors gracefully', (context)=>{
|
|
242
|
-
return new Promise((resolve)=>{
|
|
243
|
-
const observable = followCopyJobProgress({
|
|
244
|
-
jobId: 'test-job',
|
|
245
|
-
projectId: 'test-project'
|
|
246
|
-
});
|
|
247
|
-
observable.subscribe({
|
|
248
|
-
complete: ()=>{
|
|
249
|
-
context.task.result?.errors?.push(new Error('Should not complete'));
|
|
250
|
-
resolve();
|
|
251
|
-
},
|
|
252
|
-
error: (err)=>{
|
|
253
|
-
expect(err.message).toContain('Invalid JSON received from server');
|
|
254
|
-
resolve();
|
|
255
|
-
},
|
|
256
|
-
next: ()=>{}
|
|
257
|
-
});
|
|
258
|
-
// Wait for async getJobListenUrl to complete
|
|
259
|
-
setImmediate(()=>{
|
|
260
|
-
// Simulate invalid JSON
|
|
261
|
-
const jobHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'job')?.[1];
|
|
262
|
-
if (jobHandler) {
|
|
263
|
-
jobHandler({
|
|
264
|
-
data: 'invalid json {'
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
});
|
|
270
|
-
test('emits reconnect event on error', (context)=>{
|
|
271
|
-
return new Promise((resolve)=>{
|
|
272
|
-
const observable = followCopyJobProgress({
|
|
273
|
-
jobId: 'test-job',
|
|
274
|
-
projectId: 'test-project'
|
|
275
|
-
});
|
|
276
|
-
const events = [];
|
|
277
|
-
let errorReceived = false;
|
|
278
|
-
const subscription = observable.subscribe({
|
|
279
|
-
complete: ()=>{
|
|
280
|
-
if (!errorReceived) {
|
|
281
|
-
context.task.result?.errors?.push(new Error('Should not complete before error'));
|
|
282
|
-
}
|
|
283
|
-
resolve();
|
|
284
|
-
},
|
|
285
|
-
error: (_err)=>{
|
|
286
|
-
errorReceived = true;
|
|
287
|
-
// This is expected when we stop the subscription after seeing reconnect
|
|
288
|
-
},
|
|
289
|
-
next: (event)=>{
|
|
290
|
-
events.push(event);
|
|
291
|
-
// After seeing reconnect event, verify it was emitted correctly
|
|
292
|
-
if (events.some((e)=>typeof e === 'object' && e !== null && 'type' in e && e.type === 'reconnect')) {
|
|
293
|
-
expect(events).toContainEqual({
|
|
294
|
-
type: 'reconnect'
|
|
295
|
-
});
|
|
296
|
-
expect(mockEventSource.close).toHaveBeenCalled();
|
|
297
|
-
subscription.unsubscribe();
|
|
298
|
-
resolve();
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
// Wait for async getJobListenUrl to complete
|
|
303
|
-
setImmediate(()=>{
|
|
304
|
-
// Simulate progress, then error
|
|
305
|
-
const jobHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'job')?.[1];
|
|
306
|
-
const errorHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'error')?.[1];
|
|
307
|
-
if (jobHandler && errorHandler) {
|
|
308
|
-
jobHandler({
|
|
309
|
-
data: JSON.stringify({
|
|
310
|
-
progress: 25,
|
|
311
|
-
state: 'processing',
|
|
312
|
-
type: 'job'
|
|
313
|
-
})
|
|
314
|
-
});
|
|
315
|
-
errorHandler({});
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
test('handles channel_error event', (context)=>{
|
|
321
|
-
return new Promise((resolve)=>{
|
|
322
|
-
const observable = followCopyJobProgress({
|
|
323
|
-
jobId: 'test-job',
|
|
324
|
-
projectId: 'test-project'
|
|
325
|
-
});
|
|
326
|
-
observable.subscribe({
|
|
327
|
-
complete: ()=>{
|
|
328
|
-
context.task.result?.errors?.push(new Error('Should not complete'));
|
|
329
|
-
resolve();
|
|
330
|
-
},
|
|
331
|
-
error: (err)=>{
|
|
332
|
-
expect(err.message).toContain('Copy job failed: Channel closed');
|
|
333
|
-
expect(mockEventSource.close).toHaveBeenCalled();
|
|
334
|
-
resolve();
|
|
335
|
-
},
|
|
336
|
-
next: ()=>{}
|
|
337
|
-
});
|
|
338
|
-
// Wait for async getJobListenUrl to complete
|
|
339
|
-
setImmediate(()=>{
|
|
340
|
-
// Simulate channel error
|
|
341
|
-
const channelErrorHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'channel_error')?.[1];
|
|
342
|
-
if (channelErrorHandler) {
|
|
343
|
-
channelErrorHandler({
|
|
344
|
-
data: 'Channel closed'
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
});
|
|
348
|
-
});
|
|
349
|
-
});
|
|
350
|
-
test('handles failed state in job message', (context)=>{
|
|
351
|
-
return new Promise((resolve)=>{
|
|
352
|
-
const observable = followCopyJobProgress({
|
|
353
|
-
jobId: 'test-job',
|
|
354
|
-
projectId: 'test-project'
|
|
355
|
-
});
|
|
356
|
-
observable.subscribe({
|
|
357
|
-
complete: ()=>{
|
|
358
|
-
context.task.result?.errors?.push(new Error('Should not complete'));
|
|
359
|
-
resolve();
|
|
360
|
-
},
|
|
361
|
-
error: (err)=>{
|
|
362
|
-
expect(err.message).toContain('Copy job failed: Disk space exceeded');
|
|
363
|
-
resolve();
|
|
364
|
-
},
|
|
365
|
-
next: ()=>{}
|
|
366
|
-
});
|
|
367
|
-
// Wait for async getJobListenUrl to complete
|
|
368
|
-
setImmediate(()=>{
|
|
369
|
-
// Simulate failed job
|
|
370
|
-
const jobHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'job')?.[1];
|
|
371
|
-
if (jobHandler) {
|
|
372
|
-
jobHandler({
|
|
373
|
-
data: JSON.stringify({
|
|
374
|
-
message: 'Disk space exceeded',
|
|
375
|
-
state: 'failed'
|
|
376
|
-
})
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
});
|
|
381
|
-
});
|
|
382
|
-
test('cleanup prevents reconnection when stopped', (context)=>{
|
|
383
|
-
return new Promise((resolve)=>{
|
|
384
|
-
const observable = followCopyJobProgress({
|
|
385
|
-
jobId: 'test-job',
|
|
386
|
-
projectId: 'test-project'
|
|
387
|
-
});
|
|
388
|
-
const subscription = observable.subscribe({
|
|
389
|
-
complete: ()=>{
|
|
390
|
-
context.task.result?.errors?.push(new Error('Should not complete'));
|
|
391
|
-
resolve();
|
|
392
|
-
},
|
|
393
|
-
error: (err)=>{
|
|
394
|
-
context.task.result?.errors?.push(err);
|
|
395
|
-
resolve();
|
|
396
|
-
},
|
|
397
|
-
next: ()=>{}
|
|
398
|
-
});
|
|
399
|
-
// Wait for async getJobListenUrl to complete
|
|
400
|
-
setImmediate(()=>{
|
|
401
|
-
// Get error handler
|
|
402
|
-
const errorHandler = mockEventSource.addEventListener.mock.calls.find(([event])=>event === 'error')?.[1];
|
|
403
|
-
// Unsubscribe first to set stopped = true
|
|
404
|
-
subscription.unsubscribe();
|
|
405
|
-
// Now trigger error - should not create new EventSource
|
|
406
|
-
const eventSourceCallCount = vi.mocked(EventSource).mock.calls.length;
|
|
407
|
-
if (errorHandler) {
|
|
408
|
-
errorHandler({});
|
|
409
|
-
}
|
|
410
|
-
// Verify no new EventSource was created
|
|
411
|
-
expect(vi.mocked(EventSource)).toHaveBeenCalledTimes(eventSourceCallCount);
|
|
412
|
-
expect(mockEventSource.close).toHaveBeenCalled();
|
|
413
|
-
resolve();
|
|
414
|
-
});
|
|
415
|
-
});
|
|
416
|
-
});
|
|
417
|
-
test('cleanup is idempotent (no errors on multiple calls)', ()=>{
|
|
418
|
-
const observable = followCopyJobProgress({
|
|
419
|
-
jobId: 'test-job',
|
|
420
|
-
projectId: 'test-project'
|
|
421
|
-
});
|
|
422
|
-
const subscription = observable.subscribe({
|
|
423
|
-
complete: ()=>{},
|
|
424
|
-
error: ()=>{},
|
|
425
|
-
next: ()=>{}
|
|
426
|
-
});
|
|
427
|
-
// Call unsubscribe multiple times
|
|
428
|
-
expect(()=>{
|
|
429
|
-
subscription.unsubscribe();
|
|
430
|
-
subscription.unsubscribe();
|
|
431
|
-
subscription.unsubscribe();
|
|
432
|
-
}).not.toThrow();
|
|
433
|
-
});
|
|
434
|
-
});
|
|
435
|
-
|
|
436
|
-
//# sourceMappingURL=datasets.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/__tests__/datasets.test.ts"],"sourcesContent":["import {getProjectCliClient} from '@sanity/cli-core'\nimport {EventSource} from 'eventsource'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {\n createDataset,\n DATASET_API_VERSION,\n deleteDataset,\n editDatasetAcl,\n followCopyJobProgress,\n listDatasetAliases,\n listDatasets,\n} from '../datasets.js'\n\nvi.mock('eventsource', () => {\n return {\n EventSource: vi.fn(),\n }\n})\n\nvi.mock(import('@sanity/cli-core'), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n getProjectCliClient: vi.fn(),\n }\n})\n\nconst mockClient = {\n config: vi.fn(),\n datasets: {\n create: vi.fn(),\n delete: vi.fn(),\n edit: vi.fn(),\n list: vi.fn(),\n },\n request: vi.fn(),\n}\n\nconst mockGetProjectCliClient = vi.mocked(getProjectCliClient)\n\nbeforeEach(() => {\n mockGetProjectCliClient.mockResolvedValue(mockClient as never)\n})\n\nafterEach(() => {\n vi.clearAllMocks()\n})\n\ndescribe('#listDatasets', () => {\n test('calls client.datasets.list with correct parameters', async () => {\n const mockDatasets = [{aclMode: 'private', name: 'production'}]\n mockClient.datasets.list.mockResolvedValue(mockDatasets)\n\n const result = await listDatasets('test-project')\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.datasets.list).toHaveBeenCalledWith()\n expect(result).toBe(mockDatasets)\n })\n})\n\ndescribe('#deleteDataset', () => {\n test('calls client.datasets.delete with correct parameters', async () => {\n mockClient.datasets.delete.mockResolvedValue(undefined)\n\n await deleteDataset({datasetName: 'test-dataset', projectId: 'test-project'})\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.datasets.delete).toHaveBeenCalledWith('test-dataset')\n })\n})\n\ndescribe('#editDatasetAcl', () => {\n test('calls client.datasets.edit with correct parameters for private mode', async () => {\n mockClient.datasets.edit.mockResolvedValue({})\n\n await editDatasetAcl({\n aclMode: 'private',\n datasetName: 'test-dataset',\n projectId: 'test-project',\n })\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.datasets.edit).toHaveBeenCalledWith('test-dataset', {aclMode: 'private'})\n })\n\n test('calls client.datasets.edit with correct parameters for public mode', async () => {\n mockClient.datasets.edit.mockResolvedValue({})\n\n await editDatasetAcl({\n aclMode: 'public',\n datasetName: 'my-dataset',\n projectId: 'my-project',\n })\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'my-project',\n requireUser: true,\n })\n expect(mockClient.datasets.edit).toHaveBeenCalledWith('my-dataset', {aclMode: 'public'})\n })\n\n test('propagates errors from client', async () => {\n const error = new Error('API error')\n mockClient.datasets.edit.mockRejectedValue(error)\n\n await expect(\n editDatasetAcl({\n aclMode: 'private',\n datasetName: 'test-dataset',\n projectId: 'test-project',\n }),\n ).rejects.toThrow('API error')\n })\n})\n\ndescribe('#listDatasetAliases', () => {\n test('calls client.request with correct parameters', async () => {\n const mockAliases = [{datasetName: 'test-dataset', name: 'test-alias'}]\n mockClient.request.mockResolvedValue(mockAliases)\n\n const result = await listDatasetAliases('test-project')\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({uri: '/aliases'})\n expect(result).toBe(mockAliases)\n })\n})\n\ndescribe('#createDataset', () => {\n test('calls client.datasets.create with correct parameters', async () => {\n mockClient.datasets.create.mockResolvedValue(undefined)\n\n await createDataset({\n aclMode: 'private',\n datasetName: 'test-dataset',\n projectId: 'test-project',\n })\n\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n expect(mockClient.datasets.create).toHaveBeenCalledWith('test-dataset', {aclMode: 'private'})\n })\n\n test('calls client.datasets.create without aclMode if not provided', async () => {\n mockClient.datasets.create.mockResolvedValue(undefined)\n\n await createDataset({datasetName: 'test-dataset', projectId: 'test-project'})\n\n expect(mockClient.datasets.create).toHaveBeenCalledWith('test-dataset')\n expect(mockGetProjectCliClient).toHaveBeenCalledWith({\n apiVersion: DATASET_API_VERSION,\n projectId: 'test-project',\n requireUser: true,\n })\n })\n})\n\ndescribe('#followCopyJobProgress', () => {\n let mockEventSource: {\n addEventListener: ReturnType<typeof vi.fn>\n close: ReturnType<typeof vi.fn>\n removeEventListener: ReturnType<typeof vi.fn>\n }\n\n beforeEach(() => {\n mockEventSource = {\n addEventListener: vi.fn(),\n close: vi.fn(),\n removeEventListener: vi.fn(),\n }\n vi.mocked(EventSource).mockImplementation(() => mockEventSource as never)\n mockClient.config = vi.fn().mockReturnValue({url: 'https://api.sanity.io'})\n mockGetProjectCliClient.mockResolvedValue(mockClient as never)\n })\n\n test('subscribes to progress events and completes successfully', (context) => {\n return new Promise<void>((resolve) => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n const events: unknown[] = []\n\n observable.subscribe({\n complete: () => {\n // When state is 'completed', onComplete is called which doesn't push the event\n expect(events).toEqual([\n {progress: 25, state: 'processing', type: 'job'},\n {progress: 50, state: 'processing', type: 'job'},\n ])\n expect(mockEventSource.close).toHaveBeenCalled()\n expect(mockEventSource.removeEventListener).toHaveBeenCalledTimes(4)\n resolve()\n },\n error: (err: Error) => {\n context.task.result?.errors?.push(err)\n resolve()\n },\n next: (event) => {\n events.push(event)\n },\n })\n\n // Wait for async getJobListenUrl to complete\n setImmediate(() => {\n // Simulate progress events\n const jobHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'job',\n )?.[1]\n\n if (jobHandler) {\n jobHandler({data: JSON.stringify({progress: 25, state: 'processing', type: 'job'})})\n jobHandler({data: JSON.stringify({progress: 50, state: 'processing', type: 'job'})})\n jobHandler({data: JSON.stringify({progress: 100, state: 'completed', type: 'job'})})\n }\n })\n })\n })\n\n test('handles JSON parse errors gracefully', (context) => {\n return new Promise<void>((resolve) => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n\n observable.subscribe({\n complete: () => {\n context.task.result?.errors?.push(new Error('Should not complete'))\n resolve()\n },\n error: (err: Error) => {\n expect(err.message).toContain('Invalid JSON received from server')\n resolve()\n },\n next: () => {},\n })\n\n // Wait for async getJobListenUrl to complete\n setImmediate(() => {\n // Simulate invalid JSON\n const jobHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'job',\n )?.[1]\n\n if (jobHandler) {\n jobHandler({data: 'invalid json {'})\n }\n })\n })\n })\n\n test('emits reconnect event on error', (context) => {\n return new Promise<void>((resolve) => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n const events: unknown[] = []\n let errorReceived = false\n\n const subscription = observable.subscribe({\n complete: () => {\n if (!errorReceived) {\n context.task.result?.errors?.push(new Error('Should not complete before error'))\n }\n resolve()\n },\n error: (_err: Error) => {\n errorReceived = true\n // This is expected when we stop the subscription after seeing reconnect\n },\n next: (event) => {\n events.push(event)\n // After seeing reconnect event, verify it was emitted correctly\n if (\n events.some(\n (e: unknown) =>\n typeof e === 'object' && e !== null && 'type' in e && e.type === 'reconnect',\n )\n ) {\n expect(events).toContainEqual({type: 'reconnect'})\n expect(mockEventSource.close).toHaveBeenCalled()\n subscription.unsubscribe()\n resolve()\n }\n },\n })\n\n // Wait for async getJobListenUrl to complete\n setImmediate(() => {\n // Simulate progress, then error\n const jobHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'job',\n )?.[1]\n const errorHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'error',\n )?.[1]\n\n if (jobHandler && errorHandler) {\n jobHandler({data: JSON.stringify({progress: 25, state: 'processing', type: 'job'})})\n errorHandler({})\n }\n })\n })\n })\n\n test('handles channel_error event', (context) => {\n return new Promise<void>((resolve) => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n\n observable.subscribe({\n complete: () => {\n context.task.result?.errors?.push(new Error('Should not complete'))\n resolve()\n },\n error: (err: Error) => {\n expect(err.message).toContain('Copy job failed: Channel closed')\n expect(mockEventSource.close).toHaveBeenCalled()\n resolve()\n },\n next: () => {},\n })\n\n // Wait for async getJobListenUrl to complete\n setImmediate(() => {\n // Simulate channel error\n const channelErrorHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'channel_error',\n )?.[1]\n\n if (channelErrorHandler) {\n channelErrorHandler({data: 'Channel closed'})\n }\n })\n })\n })\n\n test('handles failed state in job message', (context) => {\n return new Promise<void>((resolve) => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n\n observable.subscribe({\n complete: () => {\n context.task.result?.errors?.push(new Error('Should not complete'))\n resolve()\n },\n error: (err: Error) => {\n expect(err.message).toContain('Copy job failed: Disk space exceeded')\n resolve()\n },\n next: () => {},\n })\n\n // Wait for async getJobListenUrl to complete\n setImmediate(() => {\n // Simulate failed job\n const jobHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'job',\n )?.[1]\n\n if (jobHandler) {\n jobHandler({data: JSON.stringify({message: 'Disk space exceeded', state: 'failed'})})\n }\n })\n })\n })\n\n test('cleanup prevents reconnection when stopped', (context) => {\n return new Promise<void>((resolve) => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n\n const subscription = observable.subscribe({\n complete: () => {\n context.task.result?.errors?.push(new Error('Should not complete'))\n resolve()\n },\n error: (err: Error) => {\n context.task.result?.errors?.push(err)\n resolve()\n },\n next: () => {},\n })\n\n // Wait for async getJobListenUrl to complete\n setImmediate(() => {\n // Get error handler\n const errorHandler = mockEventSource.addEventListener.mock.calls.find(\n ([event]) => event === 'error',\n )?.[1]\n\n // Unsubscribe first to set stopped = true\n subscription.unsubscribe()\n\n // Now trigger error - should not create new EventSource\n const eventSourceCallCount = vi.mocked(EventSource).mock.calls.length\n if (errorHandler) {\n errorHandler({})\n }\n\n // Verify no new EventSource was created\n expect(vi.mocked(EventSource)).toHaveBeenCalledTimes(eventSourceCallCount)\n expect(mockEventSource.close).toHaveBeenCalled()\n resolve()\n })\n })\n })\n\n test('cleanup is idempotent (no errors on multiple calls)', () => {\n const observable = followCopyJobProgress({jobId: 'test-job', projectId: 'test-project'})\n\n const subscription = observable.subscribe({\n complete: () => {},\n error: () => {},\n next: () => {},\n })\n\n // Call unsubscribe multiple times\n expect(() => {\n subscription.unsubscribe()\n subscription.unsubscribe()\n subscription.unsubscribe()\n }).not.toThrow()\n })\n})\n"],"names":["getProjectCliClient","EventSource","afterEach","beforeEach","describe","expect","test","vi","createDataset","DATASET_API_VERSION","deleteDataset","editDatasetAcl","followCopyJobProgress","listDatasetAliases","listDatasets","mock","fn","importOriginal","actual","mockClient","config","datasets","create","delete","edit","list","request","mockGetProjectCliClient","mocked","mockResolvedValue","clearAllMocks","mockDatasets","aclMode","name","result","toHaveBeenCalledWith","apiVersion","projectId","requireUser","toBe","undefined","datasetName","error","Error","mockRejectedValue","rejects","toThrow","mockAliases","uri","mockEventSource","addEventListener","close","removeEventListener","mockImplementation","mockReturnValue","url","context","Promise","resolve","observable","jobId","events","subscribe","complete","toEqual","progress","state","type","toHaveBeenCalled","toHaveBeenCalledTimes","err","task","errors","push","next","event","setImmediate","jobHandler","calls","find","data","JSON","stringify","message","toContain","errorReceived","subscription","_err","some","e","toContainEqual","unsubscribe","errorHandler","channelErrorHandler","eventSourceCallCount","length","not"],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { getProjectCliClient } from '@sanity/cli-core';
|
|
2
|
-
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
|
3
|
-
import { listGraphQLEndpoints } from '../graphql.js';
|
|
4
|
-
vi.mock(import('@sanity/cli-core'), async (importOriginal)=>{
|
|
5
|
-
const actual = await importOriginal();
|
|
6
|
-
return {
|
|
7
|
-
...actual,
|
|
8
|
-
getProjectCliClient: vi.fn()
|
|
9
|
-
};
|
|
10
|
-
});
|
|
11
|
-
const mockClient = {
|
|
12
|
-
request: vi.fn()
|
|
13
|
-
};
|
|
14
|
-
beforeEach(()=>{
|
|
15
|
-
vi.mocked(getProjectCliClient).mockResolvedValue(mockClient);
|
|
16
|
-
});
|
|
17
|
-
afterEach(()=>{
|
|
18
|
-
vi.clearAllMocks();
|
|
19
|
-
});
|
|
20
|
-
describe('#listGraphQLEndpoints', ()=>{
|
|
21
|
-
test('fetches GraphQL endpoints successfully', async ()=>{
|
|
22
|
-
const result = {
|
|
23
|
-
dataset: 'production',
|
|
24
|
-
generation: 'gen2',
|
|
25
|
-
playgroundEnabled: true,
|
|
26
|
-
projectId: '123',
|
|
27
|
-
tag: 'default'
|
|
28
|
-
};
|
|
29
|
-
mockClient.request.mockResolvedValueOnce([
|
|
30
|
-
result
|
|
31
|
-
]);
|
|
32
|
-
const endpoints = await listGraphQLEndpoints('123');
|
|
33
|
-
expect(mockClient.request).toHaveBeenCalledWith({
|
|
34
|
-
method: 'GET',
|
|
35
|
-
uri: '/apis/graphql'
|
|
36
|
-
});
|
|
37
|
-
expect(endpoints).toEqual([
|
|
38
|
-
result
|
|
39
|
-
]);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
//# sourceMappingURL=graphql.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/__tests__/graphql.test.ts"],"sourcesContent":["import {getProjectCliClient} from '@sanity/cli-core'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {listGraphQLEndpoints} from '../graphql.js'\n\nvi.mock(import('@sanity/cli-core'), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n getProjectCliClient: vi.fn(),\n }\n})\n\nconst mockClient = {\n request: vi.fn(),\n}\n\nbeforeEach(() => {\n vi.mocked(getProjectCliClient).mockResolvedValue(mockClient as never)\n})\n\nafterEach(() => {\n vi.clearAllMocks()\n})\n\ndescribe('#listGraphQLEndpoints', () => {\n test('fetches GraphQL endpoints successfully', async () => {\n const result = {\n dataset: 'production',\n generation: 'gen2',\n playgroundEnabled: true,\n projectId: '123',\n tag: 'default',\n }\n mockClient.request.mockResolvedValueOnce([result])\n\n const endpoints = await listGraphQLEndpoints('123')\n\n expect(mockClient.request).toHaveBeenCalledWith({\n method: 'GET',\n uri: '/apis/graphql',\n })\n expect(endpoints).toEqual([result])\n })\n})\n"],"names":["getProjectCliClient","afterEach","beforeEach","describe","expect","test","vi","listGraphQLEndpoints","mock","importOriginal","actual","fn","mockClient","request","mocked","mockResolvedValue","clearAllMocks","result","dataset","generation","playgroundEnabled","projectId","tag","mockResolvedValueOnce","endpoints","toHaveBeenCalledWith","method","uri","toEqual"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,mBAAkB;AACpD,SAAQC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAExE,SAAQC,oBAAoB,QAAO,gBAAe;AAElDD,GAAGE,IAAI,CAAC,MAAM,CAAC,qBAAqB,OAAOC;IACzC,MAAMC,SAAS,MAAMD;IACrB,OAAO;QACL,GAAGC,MAAM;QACTV,qBAAqBM,GAAGK,EAAE;IAC5B;AACF;AAEA,MAAMC,aAAa;IACjBC,SAASP,GAAGK,EAAE;AAChB;AAEAT,WAAW;IACTI,GAAGQ,MAAM,CAACd,qBAAqBe,iBAAiB,CAACH;AACnD;AAEAX,UAAU;IACRK,GAAGU,aAAa;AAClB;AAEAb,SAAS,yBAAyB;IAChCE,KAAK,0CAA0C;QAC7C,MAAMY,SAAS;YACbC,SAAS;YACTC,YAAY;YACZC,mBAAmB;YACnBC,WAAW;YACXC,KAAK;QACP;QACAV,WAAWC,OAAO,CAACU,qBAAqB,CAAC;YAACN;SAAO;QAEjD,MAAMO,YAAY,MAAMjB,qBAAqB;QAE7CH,OAAOQ,WAAWC,OAAO,EAAEY,oBAAoB,CAAC;YAC9CC,QAAQ;YACRC,KAAK;QACP;QACAvB,OAAOoB,WAAWI,OAAO,CAAC;YAACX;SAAO;IACpC;AACF"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { getGlobalCliClient } from '@sanity/cli-core';
|
|
2
|
-
import { MEDIA_LIBRARY_ASSET_ASPECT_TYPE_NAME } from '@sanity/types';
|
|
3
|
-
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
|
4
|
-
import { deleteAspect, getMediaLibraries, MEDIA_LIBRARY_API_VERSION } from '../mediaLibraries.js';
|
|
5
|
-
vi.mock(import('@sanity/cli-core'), async (importOriginal)=>{
|
|
6
|
-
const actual = await importOriginal();
|
|
7
|
-
return {
|
|
8
|
-
...actual,
|
|
9
|
-
getGlobalCliClient: vi.fn()
|
|
10
|
-
};
|
|
11
|
-
});
|
|
12
|
-
const mockClient = {
|
|
13
|
-
request: vi.fn()
|
|
14
|
-
};
|
|
15
|
-
const mockGetGlobalCliClient = vi.mocked(getGlobalCliClient);
|
|
16
|
-
beforeEach(()=>{
|
|
17
|
-
mockGetGlobalCliClient.mockResolvedValue(mockClient);
|
|
18
|
-
});
|
|
19
|
-
afterEach(()=>{
|
|
20
|
-
vi.clearAllMocks();
|
|
21
|
-
});
|
|
22
|
-
describe('#deleteAspect', ()=>{
|
|
23
|
-
test('calls client.request with correct parameters', async ()=>{
|
|
24
|
-
const mockResponse = {
|
|
25
|
-
results: [
|
|
26
|
-
{
|
|
27
|
-
id: 'myAspect'
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
};
|
|
31
|
-
mockClient.request.mockResolvedValue(mockResponse);
|
|
32
|
-
const result = await deleteAspect({
|
|
33
|
-
aspectName: 'myAspect',
|
|
34
|
-
mediaLibraryId: 'test-library-id',
|
|
35
|
-
projectId: 'test-project'
|
|
36
|
-
});
|
|
37
|
-
expect(mockGetGlobalCliClient).toHaveBeenCalledWith({
|
|
38
|
-
apiVersion: MEDIA_LIBRARY_API_VERSION,
|
|
39
|
-
requireUser: true
|
|
40
|
-
});
|
|
41
|
-
expect(mockClient.request).toHaveBeenCalledWith({
|
|
42
|
-
body: {
|
|
43
|
-
mutations: [
|
|
44
|
-
{
|
|
45
|
-
delete: {
|
|
46
|
-
params: {
|
|
47
|
-
id: 'myAspect',
|
|
48
|
-
type: MEDIA_LIBRARY_ASSET_ASPECT_TYPE_NAME
|
|
49
|
-
},
|
|
50
|
-
query: `*[_type == $type && _id == $id]`
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
},
|
|
55
|
-
method: 'POST',
|
|
56
|
-
uri: '/media-libraries/test-library-id/mutate'
|
|
57
|
-
});
|
|
58
|
-
expect(result).toBe(mockResponse);
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
describe('#getMediaLibraries', ()=>{
|
|
62
|
-
test('calls client.request with correct parameters', async ()=>{
|
|
63
|
-
const mockResponse = {
|
|
64
|
-
data: [
|
|
65
|
-
{
|
|
66
|
-
id: 'myAspect',
|
|
67
|
-
status: 'active'
|
|
68
|
-
}
|
|
69
|
-
]
|
|
70
|
-
};
|
|
71
|
-
mockClient.request.mockResolvedValue(mockResponse);
|
|
72
|
-
const result = await getMediaLibraries('test-project');
|
|
73
|
-
expect(mockGetGlobalCliClient).toHaveBeenCalledWith({
|
|
74
|
-
apiVersion: MEDIA_LIBRARY_API_VERSION,
|
|
75
|
-
requireUser: true
|
|
76
|
-
});
|
|
77
|
-
expect(mockClient.request).toHaveBeenCalledWith({
|
|
78
|
-
method: 'GET',
|
|
79
|
-
query: {
|
|
80
|
-
projectId: 'test-project'
|
|
81
|
-
},
|
|
82
|
-
uri: '/media-libraries'
|
|
83
|
-
});
|
|
84
|
-
expect(result).toStrictEqual(mockResponse.data);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
//# sourceMappingURL=mediaLibraries.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/services/__tests__/mediaLibraries.test.ts"],"sourcesContent":["import {getGlobalCliClient} from '@sanity/cli-core'\nimport {MEDIA_LIBRARY_ASSET_ASPECT_TYPE_NAME} from '@sanity/types'\nimport {afterEach, beforeEach, describe, expect, test, vi} from 'vitest'\n\nimport {deleteAspect, getMediaLibraries, MEDIA_LIBRARY_API_VERSION} from '../mediaLibraries.js'\n\nvi.mock(import('@sanity/cli-core'), async (importOriginal) => {\n const actual = await importOriginal()\n return {\n ...actual,\n getGlobalCliClient: vi.fn(),\n }\n})\n\nconst mockClient = {\n request: vi.fn(),\n}\n\nconst mockGetGlobalCliClient = vi.mocked(getGlobalCliClient)\n\nbeforeEach(() => {\n mockGetGlobalCliClient.mockResolvedValue(mockClient as never)\n})\n\nafterEach(() => {\n vi.clearAllMocks()\n})\n\ndescribe('#deleteAspect', () => {\n test('calls client.request with correct parameters', async () => {\n const mockResponse = {results: [{id: 'myAspect'}]}\n mockClient.request.mockResolvedValue(mockResponse)\n\n const result = await deleteAspect({\n aspectName: 'myAspect',\n mediaLibraryId: 'test-library-id',\n projectId: 'test-project',\n })\n\n expect(mockGetGlobalCliClient).toHaveBeenCalledWith({\n apiVersion: MEDIA_LIBRARY_API_VERSION,\n requireUser: true,\n })\n\n expect(mockClient.request).toHaveBeenCalledWith({\n body: {\n mutations: [\n {\n delete: {\n params: {\n id: 'myAspect',\n type: MEDIA_LIBRARY_ASSET_ASPECT_TYPE_NAME,\n },\n query: `*[_type == $type && _id == $id]`,\n },\n },\n ],\n },\n method: 'POST',\n uri: '/media-libraries/test-library-id/mutate',\n })\n expect(result).toBe(mockResponse)\n })\n})\n\ndescribe('#getMediaLibraries', () => {\n test('calls client.request with correct parameters', async () => {\n const mockResponse = {data: [{id: 'myAspect', status: 'active'}]}\n mockClient.request.mockResolvedValue(mockResponse)\n\n const result = await getMediaLibraries('test-project')\n expect(mockGetGlobalCliClient).toHaveBeenCalledWith({\n apiVersion: MEDIA_LIBRARY_API_VERSION,\n requireUser: true,\n })\n expect(mockClient.request).toHaveBeenCalledWith({\n method: 'GET',\n query: {projectId: 'test-project'},\n uri: '/media-libraries',\n })\n expect(result).toStrictEqual(mockResponse.data)\n })\n})\n"],"names":["getGlobalCliClient","MEDIA_LIBRARY_ASSET_ASPECT_TYPE_NAME","afterEach","beforeEach","describe","expect","test","vi","deleteAspect","getMediaLibraries","MEDIA_LIBRARY_API_VERSION","mock","importOriginal","actual","fn","mockClient","request","mockGetGlobalCliClient","mocked","mockResolvedValue","clearAllMocks","mockResponse","results","id","result","aspectName","mediaLibraryId","projectId","toHaveBeenCalledWith","apiVersion","requireUser","body","mutations","delete","params","type","query","method","uri","toBe","data","status","toStrictEqual"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,mBAAkB;AACnD,SAAQC,oCAAoC,QAAO,gBAAe;AAClE,SAAQC,SAAS,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAO,SAAQ;AAExE,SAAQC,YAAY,EAAEC,iBAAiB,EAAEC,yBAAyB,QAAO,uBAAsB;AAE/FH,GAAGI,IAAI,CAAC,MAAM,CAAC,qBAAqB,OAAOC;IACzC,MAAMC,SAAS,MAAMD;IACrB,OAAO;QACL,GAAGC,MAAM;QACTb,oBAAoBO,GAAGO,EAAE;IAC3B;AACF;AAEA,MAAMC,aAAa;IACjBC,SAAST,GAAGO,EAAE;AAChB;AAEA,MAAMG,yBAAyBV,GAAGW,MAAM,CAAClB;AAEzCG,WAAW;IACTc,uBAAuBE,iBAAiB,CAACJ;AAC3C;AAEAb,UAAU;IACRK,GAAGa,aAAa;AAClB;AAEAhB,SAAS,iBAAiB;IACxBE,KAAK,gDAAgD;QACnD,MAAMe,eAAe;YAACC,SAAS;gBAAC;oBAACC,IAAI;gBAAU;aAAE;QAAA;QACjDR,WAAWC,OAAO,CAACG,iBAAiB,CAACE;QAErC,MAAMG,SAAS,MAAMhB,aAAa;YAChCiB,YAAY;YACZC,gBAAgB;YAChBC,WAAW;QACb;QAEAtB,OAAOY,wBAAwBW,oBAAoB,CAAC;YAClDC,YAAYnB;YACZoB,aAAa;QACf;QAEAzB,OAAOU,WAAWC,OAAO,EAAEY,oBAAoB,CAAC;YAC9CG,MAAM;gBACJC,WAAW;oBACT;wBACEC,QAAQ;4BACNC,QAAQ;gCACNX,IAAI;gCACJY,MAAMlC;4BACR;4BACAmC,OAAO,CAAC,+BAA+B,CAAC;wBAC1C;oBACF;iBACD;YACH;YACAC,QAAQ;YACRC,KAAK;QACP;QACAjC,OAAOmB,QAAQe,IAAI,CAAClB;IACtB;AACF;AAEAjB,SAAS,sBAAsB;IAC7BE,KAAK,gDAAgD;QACnD,MAAMe,eAAe;YAACmB,MAAM;gBAAC;oBAACjB,IAAI;oBAAYkB,QAAQ;gBAAQ;aAAE;QAAA;QAChE1B,WAAWC,OAAO,CAACG,iBAAiB,CAACE;QAErC,MAAMG,SAAS,MAAMf,kBAAkB;QACvCJ,OAAOY,wBAAwBW,oBAAoB,CAAC;YAClDC,YAAYnB;YACZoB,aAAa;QACf;QACAzB,OAAOU,WAAWC,OAAO,EAAEY,oBAAoB,CAAC;YAC9CS,QAAQ;YACRD,OAAO;gBAACT,WAAW;YAAc;YACjCW,KAAK;QACP;QACAjC,OAAOmB,QAAQkB,aAAa,CAACrB,aAAamB,IAAI;IAChD;AACF"}
|