@sanity/cli 6.0.0-alpha.4 → 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/dev/startStudioDevServer.js +3 -8
- package/dist/actions/dev/startStudioDevServer.js.map +1 -1
- package/dist/actions/dev/types.d.ts +1 -3
- package/dist/actions/dev/types.js.map +1 -1
- package/dist/actions/documents/validate.d.ts +0 -2
- package/dist/actions/documents/validate.js +21 -1
- package/dist/actions/documents/validate.js.map +1 -1
- package/dist/actions/exec/execScript.js +1 -1
- package/dist/actions/exec/execScript.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.js +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.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 +2 -5
- 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/deleteSchemaAction.d.ts +13 -5
- package/dist/actions/schema/deleteSchemaAction.js +12 -17
- package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
- package/dist/actions/schema/deploySchemas.d.ts +15 -0
- package/dist/actions/schema/deploySchemas.js +98 -0
- package/dist/actions/schema/deploySchemas.js.map +1 -0
- package/dist/actions/schema/listSchemas.d.ts +12 -0
- package/dist/actions/schema/listSchemas.js +119 -0
- package/dist/actions/schema/listSchemas.js.map +1 -0
- package/dist/actions/schema/schemaStoreTypes.d.ts +0 -11
- package/dist/actions/schema/schemaStoreTypes.js.map +1 -1
- package/dist/actions/schema/utils/debug.d.ts +2 -0
- package/dist/actions/schema/utils/debug.js +5 -0
- package/dist/actions/schema/utils/debug.js.map +1 -0
- package/dist/actions/schema/utils/manifestExtractor.d.ts +3 -8
- package/dist/actions/schema/utils/manifestExtractor.js +12 -17
- package/dist/actions/schema/utils/manifestExtractor.js.map +1 -1
- package/dist/actions/schema/utils/manifestReader.d.ts +2 -9
- package/dist/actions/schema/utils/manifestReader.js +6 -12
- package/dist/actions/schema/utils/manifestReader.js.map +1 -1
- package/dist/actions/schema/utils/schemaStoreOutStrings.d.ts +0 -1
- package/dist/actions/schema/utils/schemaStoreOutStrings.js +1 -1
- package/dist/actions/schema/utils/schemaStoreOutStrings.js.map +1 -1
- package/dist/actions/schema/utils/schemaStoreValidation.d.ts +10 -62
- package/dist/actions/schema/utils/schemaStoreValidation.js +38 -125
- package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +14 -0
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js +9 -0
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -0
- package/dist/actions/users/getMembersForProject.d.ts +1 -3
- package/dist/actions/users/getMembersForProject.js +6 -17
- package/dist/actions/users/getMembersForProject.js.map +1 -1
- package/dist/actions/users/types.d.ts +0 -11
- package/dist/actions/users/types.js.map +1 -1
- package/dist/commands/backup/disable.js +5 -11
- package/dist/commands/backup/disable.js.map +1 -1
- package/dist/commands/backup/enable.js +5 -11
- package/dist/commands/backup/enable.js.map +1 -1
- package/dist/commands/backup/list.js +7 -8
- package/dist/commands/backup/list.js.map +1 -1
- package/dist/commands/cors/add.js +5 -13
- package/dist/commands/cors/add.js.map +1 -1
- package/dist/commands/cors/delete.js +7 -15
- package/dist/commands/cors/delete.js.map +1 -1
- package/dist/commands/cors/list.js +2 -10
- package/dist/commands/cors/list.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/dataset/export.js +4 -4
- package/dist/commands/dataset/export.js.map +1 -1
- package/dist/commands/debug.js +5 -9
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/dev.js +0 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/documents/create.d.ts +1 -0
- package/dist/commands/documents/create.js +10 -9
- package/dist/commands/documents/create.js.map +1 -1
- package/dist/commands/documents/delete.js +2 -3
- package/dist/commands/documents/delete.js.map +1 -1
- package/dist/commands/documents/get.js +2 -3
- package/dist/commands/documents/get.js.map +1 -1
- package/dist/commands/documents/query.js +2 -3
- package/dist/commands/documents/query.js.map +1 -1
- package/dist/commands/documents/validate.js +0 -20
- package/dist/commands/documents/validate.js.map +1 -1
- package/dist/commands/graphql/list.js +2 -2
- package/dist/commands/graphql/list.js.map +1 -1
- package/dist/commands/graphql/undeploy.js +4 -9
- package/dist/commands/graphql/undeploy.js.map +1 -1
- package/dist/commands/hook/create.js +2 -6
- package/dist/commands/hook/create.js.map +1 -1
- package/dist/commands/hook/delete.js +5 -17
- package/dist/commands/hook/delete.js.map +1 -1
- package/dist/commands/hook/list.js +2 -8
- package/dist/commands/hook/list.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/media/export.js +2 -2
- package/dist/commands/media/export.js.map +1 -1
- package/dist/commands/media/import.js +2 -2
- package/dist/commands/media/import.js.map +1 -1
- package/dist/commands/projects/list.js +2 -6
- package/dist/commands/projects/list.js.map +1 -1
- package/dist/commands/schema/delete.d.ts +1 -1
- package/dist/commands/schema/delete.js +20 -23
- package/dist/commands/schema/delete.js.map +1 -1
- package/dist/commands/schema/deploy.d.ts +16 -0
- package/dist/commands/schema/deploy.js +98 -0
- package/dist/commands/schema/deploy.js.map +1 -0
- package/dist/commands/schema/list.d.ts +15 -0
- package/dist/commands/schema/list.js +104 -0
- package/dist/commands/schema/list.js.map +1 -0
- package/dist/commands/tokens/add.js +3 -5
- package/dist/commands/tokens/add.js.map +1 -1
- package/dist/commands/users/invite.js +6 -17
- package/dist/commands/users/invite.js.map +1 -1
- package/dist/commands/users/list.js +4 -7
- package/dist/commands/users/list.js.map +1 -1
- package/dist/config/createCliConfig.d.ts +13 -4
- 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/backup.d.ts +8 -0
- package/dist/services/backup.js +19 -0
- package/dist/services/backup.js.map +1 -1
- package/dist/services/cors.d.ts +23 -0
- package/dist/services/cors.js +38 -0
- package/dist/services/cors.js.map +1 -0
- package/dist/services/graphql.d.ts +7 -0
- package/dist/services/graphql.js +11 -0
- package/dist/services/graphql.js.map +1 -1
- package/dist/services/hooks.d.ts +2 -0
- package/dist/services/hooks.js +19 -0
- package/dist/services/hooks.js.map +1 -1
- package/dist/services/organizations.d.ts +4 -2
- package/dist/services/organizations.js +3 -2
- package/dist/services/organizations.js.map +1 -1
- package/dist/services/projects.d.ts +11 -0
- package/dist/services/projects.js +41 -0
- package/dist/services/projects.js.map +1 -1
- package/dist/services/schemas.d.ts +4 -0
- package/dist/services/schemas.js +40 -0
- package/dist/services/schemas.js.map +1 -0
- package/dist/services/user.d.ts +13 -0
- package/dist/services/user.js +27 -3
- 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/util/errorMessages.d.ts +1 -0
- package/dist/util/errorMessages.js +1 -0
- package/dist/util/errorMessages.js.map +1 -1
- package/dist/util/getCliVersion.js +1 -1
- package/dist/util/getCliVersion.js.map +1 -1
- package/dist/util/readPackageJson.d.ts +1 -15
- package/dist/util/readPackageJson.js +1 -1
- package/dist/util/readPackageJson.js.map +1 -1
- package/dist/util/uniqBy.d.ts +1 -0
- package/dist/util/uniqBy.js +14 -0
- package/dist/util/uniqBy.js.map +1 -0
- package/oclif.manifest.json +284 -139
- package/package.json +36 -33
- 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/cors/constants.d.ts +0 -1
- package/dist/actions/cors/constants.js +0 -3
- package/dist/actions/cors/constants.js.map +0 -1
- package/dist/actions/cors/types.d.ts +0 -9
- package/dist/actions/cors/types.js +0 -3
- package/dist/actions/cors/types.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__/deleteSchemaAction.test.js +0 -294
- package/dist/actions/schema/__tests__/deleteSchemaAction.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/schema/schemaStoreConstants.d.ts +0 -1
- package/dist/actions/schema/schemaStoreConstants.js +0 -4
- package/dist/actions/schema/schemaStoreConstants.js.map +0 -1
- package/dist/actions/schema/utils/schemaActionHelpers.d.ts +0 -1
- package/dist/actions/schema/utils/schemaActionHelpers.js +0 -5
- package/dist/actions/schema/utils/schemaActionHelpers.js.map +0 -1
- package/dist/actions/schema/utils/schemaApiClient.d.ts +0 -6
- package/dist/actions/schema/utils/schemaApiClient.js +0 -17
- package/dist/actions/schema/utils/schemaApiClient.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/actions/users/apiVersion.d.ts +0 -6
- package/dist/actions/users/apiVersion.js +0 -7
- package/dist/actions/users/apiVersion.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 -697
- package/dist/commands/__tests__/debug.test.js.map +0 -1
- package/dist/commands/__tests__/deploy.test.js +0 -1913
- package/dist/commands/__tests__/deploy.test.js.map +0 -1
- package/dist/commands/__tests__/dev.test.js +0 -410
- 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 -60
- package/dist/commands/__tests__/init/init.authentication.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.create-new-project.test.js +0 -196
- package/dist/commands/__tests__/init/init.create-new-project.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.plan.test.js +0 -220
- package/dist/commands/__tests__/init/init.plan.test.js.map +0 -1
- package/dist/commands/__tests__/init/init.setup.test.js +0 -279
- package/dist/commands/__tests__/init/init.setup.test.js.map +0 -1
- package/dist/commands/__tests__/install.test.js +0 -258
- 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 -88
- package/dist/commands/__tests__/logout.test.js.map +0 -1
- package/dist/commands/__tests__/manage.test.js +0 -105
- 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 -134
- package/dist/commands/__tests__/versions.test.js.map +0 -1
- package/dist/commands/backup/__tests__/disable.test.js +0 -207
- package/dist/commands/backup/__tests__/disable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/download.test.js +0 -679
- package/dist/commands/backup/__tests__/download.test.js.map +0 -1
- package/dist/commands/backup/__tests__/enable.test.js +0 -317
- package/dist/commands/backup/__tests__/enable.test.js.map +0 -1
- package/dist/commands/backup/__tests__/list.test.js +0 -321
- package/dist/commands/backup/__tests__/list.test.js.map +0 -1
- package/dist/commands/cors/__tests__/add.test.js +0 -346
- package/dist/commands/cors/__tests__/add.test.js.map +0 -1
- package/dist/commands/cors/__tests__/delete.test.js +0 -293
- package/dist/commands/cors/__tests__/delete.test.js.map +0 -1
- package/dist/commands/cors/__tests__/list.test.js +0 -218
- package/dist/commands/cors/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/copy.test.js +0 -520
- package/dist/commands/dataset/__tests__/copy.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/create.test.js +0 -312
- package/dist/commands/dataset/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/delete.test.js +0 -224
- package/dist/commands/dataset/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/__tests__/export.test.js +0 -561
- 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 -174
- package/dist/commands/dataset/__tests__/list.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/create.test.js +0 -299
- package/dist/commands/dataset/alias/__tests__/create.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/delete.test.js +0 -236
- package/dist/commands/dataset/alias/__tests__/delete.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/link.test.js +0 -336
- package/dist/commands/dataset/alias/__tests__/link.test.js.map +0 -1
- package/dist/commands/dataset/alias/__tests__/unlink.test.js +0 -298
- package/dist/commands/dataset/alias/__tests__/unlink.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/get.test.js +0 -147
- package/dist/commands/dataset/visibility/__tests__/get.test.js.map +0 -1
- package/dist/commands/dataset/visibility/__tests__/set.test.js +0 -245
- 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 -254
- package/dist/commands/docs/__tests__/search.test.js.map +0 -1
- package/dist/commands/documents/__tests__/create.test.js +0 -967
- package/dist/commands/documents/__tests__/create.test.js.map +0 -1
- package/dist/commands/documents/__tests__/delete.test.js +0 -268
- package/dist/commands/documents/__tests__/delete.test.js.map +0 -1
- package/dist/commands/documents/__tests__/get.test.js +0 -209
- package/dist/commands/documents/__tests__/get.test.js.map +0 -1
- package/dist/commands/documents/__tests__/query.test.js +0 -405
- package/dist/commands/documents/__tests__/query.test.js.map +0 -1
- package/dist/commands/documents/__tests__/validate.test.js +0 -226
- package/dist/commands/documents/__tests__/validate.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/list.test.js +0 -228
- package/dist/commands/graphql/__tests__/list.test.js.map +0 -1
- package/dist/commands/graphql/__tests__/undeploy.test.js +0 -384
- package/dist/commands/graphql/__tests__/undeploy.test.js.map +0 -1
- package/dist/commands/hook/__tests__/attempt.test.js +0 -260
- package/dist/commands/hook/__tests__/attempt.test.js.map +0 -1
- package/dist/commands/hook/__tests__/create.test.js +0 -121
- package/dist/commands/hook/__tests__/create.test.js.map +0 -1
- package/dist/commands/hook/__tests__/delete.test.js +0 -220
- package/dist/commands/hook/__tests__/delete.test.js.map +0 -1
- package/dist/commands/hook/__tests__/list.test.js +0 -138
- package/dist/commands/hook/__tests__/list.test.js.map +0 -1
- package/dist/commands/hook/__tests__/logs.test.js +0 -770
- package/dist/commands/hook/__tests__/logs.test.js.map +0 -1
- package/dist/commands/manifest/__tests__/extract.test.js +0 -123
- 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 -160
- package/dist/commands/media/__tests__/create-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/delete-aspect.test.js +0 -333
- package/dist/commands/media/__tests__/delete-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/deploy-aspect.test.js +0 -632
- package/dist/commands/media/__tests__/deploy-aspect.test.js.map +0 -1
- package/dist/commands/media/__tests__/export.test.js +0 -398
- package/dist/commands/media/__tests__/export.test.js.map +0 -1
- package/dist/commands/media/__tests__/import.test.js +0 -281
- 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 -153
- package/dist/commands/projects/__tests__/list.test.js.map +0 -1
- package/dist/commands/schema/__tests__/delete.test.js +0 -209
- package/dist/commands/schema/__tests__/delete.test.js.map +0 -1
- package/dist/commands/schema/__tests__/extract.test.js +0 -113
- package/dist/commands/schema/__tests__/extract.test.js.map +0 -1
- package/dist/commands/schema/__tests__/validate.test.js +0 -104
- package/dist/commands/schema/__tests__/validate.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/disable.test.js +0 -145
- package/dist/commands/telemetry/__tests__/disable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/enable.test.js +0 -131
- package/dist/commands/telemetry/__tests__/enable.test.js.map +0 -1
- package/dist/commands/telemetry/__tests__/status.test.js +0 -153
- package/dist/commands/telemetry/__tests__/status.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/add.test.js +0 -420
- package/dist/commands/tokens/__tests__/add.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/delete.test.js +0 -375
- package/dist/commands/tokens/__tests__/delete.test.js.map +0 -1
- package/dist/commands/tokens/__tests__/list.test.js +0 -368
- package/dist/commands/tokens/__tests__/list.test.js.map +0 -1
- package/dist/commands/users/__tests__/invite.test.js +0 -341
- package/dist/commands/users/__tests__/invite.test.js.map +0 -1
- package/dist/commands/users/__tests__/list.test.js +0 -401
- 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,81 +1,29 @@
|
|
|
1
1
|
import { type Output } from '@sanity/cli-core';
|
|
2
|
-
import { type DeleteSchemaFlags } from '../deleteSchemaAction.js';
|
|
3
|
-
export interface DeploySchemasFlags extends SchemaStoreCommonFlags {
|
|
4
|
-
'schema-required'?: boolean;
|
|
5
|
-
tag?: string;
|
|
6
|
-
workspace?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface SchemaListFlags extends SchemaStoreCommonFlags {
|
|
9
|
-
id?: string;
|
|
10
|
-
json?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export declare const validForIdChars = "a-zA-Z0-9._-";
|
|
13
|
-
export declare const validForIdPattern: RegExp;
|
|
14
2
|
export declare const validForNamesChars = "a-zA-Z0-9_-";
|
|
15
3
|
export declare const validForNamesPattern: RegExp;
|
|
16
4
|
export declare class FlagValidationError extends Error {
|
|
17
5
|
constructor(message: string);
|
|
18
6
|
}
|
|
19
|
-
interface WorkspaceSchemaId {
|
|
7
|
+
export interface WorkspaceSchemaId {
|
|
20
8
|
schemaId: string;
|
|
21
9
|
workspace: string;
|
|
22
10
|
}
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
'manifest-dir'?: string;
|
|
26
|
-
verbose?: boolean;
|
|
27
|
-
}
|
|
28
|
-
export declare function parseDeploySchemasConfig(flags: DeploySchemasFlags, context: {
|
|
29
|
-
workDir: string;
|
|
30
|
-
}): {
|
|
31
|
-
schemaRequired: boolean;
|
|
32
|
-
tag: string | undefined;
|
|
33
|
-
workspaceName: string | undefined;
|
|
34
|
-
extractManifest: boolean;
|
|
35
|
-
manifestDir: string;
|
|
36
|
-
verbose: boolean;
|
|
37
|
-
};
|
|
38
|
-
export declare function parseListSchemasConfig(flags: SchemaListFlags, context: {
|
|
39
|
-
workDir: string;
|
|
40
|
-
}): {
|
|
41
|
-
id: string | undefined;
|
|
42
|
-
json: boolean;
|
|
43
|
-
extractManifest: boolean;
|
|
44
|
-
manifestDir: string;
|
|
45
|
-
verbose: boolean;
|
|
46
|
-
};
|
|
47
|
-
export declare function parseDeleteSchemasConfig(flags: DeleteSchemaFlags, context: {
|
|
48
|
-
workDir: string;
|
|
49
|
-
}): {
|
|
50
|
-
dataset: string | undefined;
|
|
51
|
-
ids: WorkspaceSchemaId[];
|
|
52
|
-
extractManifest: boolean;
|
|
53
|
-
manifestDir: string;
|
|
54
|
-
verbose: boolean;
|
|
55
|
-
};
|
|
56
|
-
export declare function parseIds(flags: {
|
|
57
|
-
ids?: unknown;
|
|
58
|
-
}, errors: string[]): WorkspaceSchemaId[];
|
|
59
|
-
export declare function parseId(flags: {
|
|
60
|
-
id?: unknown;
|
|
61
|
-
}, errors: string[]): string | undefined;
|
|
62
|
-
export declare function parseWorkspaceSchemaId(id: string, errors: string[]): {
|
|
11
|
+
export declare function parseIds(ids?: string): WorkspaceSchemaId[];
|
|
12
|
+
export declare function parseWorkspaceSchemaId(errors: string[], id?: string): {
|
|
63
13
|
schemaId: string;
|
|
64
14
|
workspace: string;
|
|
65
15
|
} | undefined;
|
|
66
|
-
export declare function parseTag(flags: {
|
|
67
|
-
tag?: unknown;
|
|
68
|
-
}, errors: string[]): string | undefined;
|
|
69
16
|
/**
|
|
70
|
-
*
|
|
17
|
+
*
|
|
18
|
+
* @param tag - The tag to parse
|
|
19
|
+
* Throws an error if the tag is empty
|
|
20
|
+
* Throws an error if the tag contains a period
|
|
21
|
+
* Throws an error if the tag starts with a dash
|
|
22
|
+
* Returns the parsed tag
|
|
71
23
|
*/
|
|
72
|
-
export declare function
|
|
73
|
-
name: string;
|
|
74
|
-
projectId: string;
|
|
75
|
-
}, projectId: string): void;
|
|
24
|
+
export declare function parseTag(tag?: string): Promise<string | undefined>;
|
|
76
25
|
export declare function filterLogReadProjectIdMismatch(workspace: {
|
|
77
26
|
name: string;
|
|
78
27
|
projectId: string;
|
|
79
28
|
}, projectId: string, output: Output): boolean;
|
|
80
29
|
export declare const SCHEMA_PERMISSION_HELP_TEXT = "For multi-project workspaces, set SANITY_AUTH_TOKEN environment variable to a token with access to the workspace projects.";
|
|
81
|
-
export {};
|
|
@@ -1,20 +1,9 @@
|
|
|
1
|
+
import { CLIError } from '@oclif/core/errors';
|
|
2
|
+
import { uniqBy } from '../../../util/uniqBy.js';
|
|
1
3
|
import { isDefined } from '../../manifest/schemaTypeHelpers.js';
|
|
2
4
|
import { SANITY_WORKSPACE_SCHEMA_ID_PREFIX } from '../../manifest/types.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function uniqBy(array, key) {
|
|
6
|
-
const seen = new Set();
|
|
7
|
-
return array.filter((item)=>{
|
|
8
|
-
const value = item[key];
|
|
9
|
-
if (seen.has(value)) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
seen.add(value);
|
|
13
|
-
return true;
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
export const validForIdChars = 'a-zA-Z0-9._-';
|
|
17
|
-
export const validForIdPattern = new RegExp(`^[${validForIdChars}]+$`);
|
|
5
|
+
const validForIdChars = 'a-zA-Z0-9._-';
|
|
6
|
+
const validForIdPattern = new RegExp(`^[${validForIdChars}]+$`);
|
|
18
7
|
//no periods allowed in workspaceName or tag in ids
|
|
19
8
|
export const validForNamesChars = 'a-zA-Z0-9_-';
|
|
20
9
|
export const validForNamesPattern = new RegExp(`^[${validForNamesChars}]+$`);
|
|
@@ -28,84 +17,32 @@ export class FlagValidationError extends Error {
|
|
|
28
17
|
this.name = 'FlagValidationError';
|
|
29
18
|
}
|
|
30
19
|
}
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// extract manifest by default: our CLI layer handles both --extract-manifest (true) and --no-extract-manifest (false)
|
|
35
|
-
const extractManifest = flags['extract-manifest'] ?? true;
|
|
36
|
-
const fullManifestDir = resolveManifestDirectory(context.workDir, manifestDir);
|
|
37
|
-
return {
|
|
38
|
-
extractManifest,
|
|
39
|
-
manifestDir: fullManifestDir,
|
|
40
|
-
verbose
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export function parseDeploySchemasConfig(flags, context) {
|
|
44
|
-
const errors = [];
|
|
45
|
-
const commonFlags = parseCommonFlags(flags, context, errors);
|
|
46
|
-
const workspaceName = parseWorkspace(flags, errors);
|
|
47
|
-
const tag = parseTag(flags, errors);
|
|
48
|
-
const schemaRequired = !!flags['schema-required'];
|
|
49
|
-
assertNoErrors(errors);
|
|
50
|
-
return {
|
|
51
|
-
...commonFlags,
|
|
52
|
-
schemaRequired,
|
|
53
|
-
tag,
|
|
54
|
-
workspaceName
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
export function parseListSchemasConfig(flags, context) {
|
|
58
|
-
const errors = [];
|
|
59
|
-
const commonFlags = parseCommonFlags(flags, context, errors);
|
|
60
|
-
const id = parseId(flags, errors);
|
|
61
|
-
const json = !!flags.json;
|
|
62
|
-
assertNoErrors(errors);
|
|
63
|
-
return {
|
|
64
|
-
...commonFlags,
|
|
65
|
-
id,
|
|
66
|
-
json
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
export function parseDeleteSchemasConfig(flags, context) {
|
|
70
|
-
const errors = [];
|
|
71
|
-
const commonFlags = parseCommonFlags(flags, context, errors);
|
|
72
|
-
const ids = parseIds(flags, errors);
|
|
73
|
-
const dataset = parseDataset(flags, errors);
|
|
74
|
-
assertNoErrors(errors);
|
|
75
|
-
return {
|
|
76
|
-
...commonFlags,
|
|
77
|
-
dataset,
|
|
78
|
-
ids
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
function assertNoErrors(errors) {
|
|
82
|
-
if (errors.length > 0) {
|
|
83
|
-
throw new FlagValidationError(`Invalid arguments:\n${errors.map((error)=>` - ${error}`).join('\n')}`);
|
|
20
|
+
export function parseIds(ids) {
|
|
21
|
+
if (!ids) {
|
|
22
|
+
throw new CLIError('ids argument is empty');
|
|
84
23
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const parsedIds = parseNonEmptyString(flags, 'ids', errors);
|
|
24
|
+
const errors = [];
|
|
25
|
+
const parsedIds = ids.split(',').map((id)=>id.trim()).filter((id)=>!!id).map((id)=>parseWorkspaceSchemaId(errors, id)).filter((item)=>isDefined(item));
|
|
88
26
|
if (errors.length > 0) {
|
|
89
|
-
|
|
27
|
+
throw new CLIError(`Invalid arguments:\n${errors.map((error)=>` - ${error}`).join('\n')}`);
|
|
90
28
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (uniqueIds.length < ids.length) {
|
|
94
|
-
errors.push(`ids contains duplicates`);
|
|
29
|
+
if (parsedIds.length === 0) {
|
|
30
|
+
throw new CLIError(`ids contains no valid id strings`);
|
|
95
31
|
}
|
|
96
|
-
|
|
97
|
-
|
|
32
|
+
const uniqueIds = uniqBy(parsedIds, 'schemaId');
|
|
33
|
+
if (uniqueIds.length < parsedIds.length) {
|
|
34
|
+
throw new CLIError(`ids contains duplicates`);
|
|
98
35
|
}
|
|
99
36
|
return uniqueIds;
|
|
100
37
|
}
|
|
101
|
-
export function
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
38
|
+
export function parseWorkspaceSchemaId(errors, id) {
|
|
39
|
+
if (id === undefined) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!id) {
|
|
43
|
+
errors.push('id argument is empty');
|
|
44
|
+
return;
|
|
105
45
|
}
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
export function parseWorkspaceSchemaId(id, errors) {
|
|
109
46
|
const trimmedId = id.trim();
|
|
110
47
|
if (!validForIdPattern.test(trimmedId)) {
|
|
111
48
|
errors.push(`id can only contain characters in [${validForIdChars}] but found: "${trimmedId}"`);
|
|
@@ -133,58 +70,34 @@ export function parseWorkspaceSchemaId(id, errors) {
|
|
|
133
70
|
workspace
|
|
134
71
|
};
|
|
135
72
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const tag = parseNonEmptyString(flags, 'tag', errors);
|
|
150
|
-
if (errors.length > 0) {
|
|
151
|
-
return;
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @param tag - The tag to parse
|
|
76
|
+
* Throws an error if the tag is empty
|
|
77
|
+
* Throws an error if the tag contains a period
|
|
78
|
+
* Throws an error if the tag starts with a dash
|
|
79
|
+
* Returns the parsed tag
|
|
80
|
+
*/ export async function parseTag(tag) {
|
|
81
|
+
if (tag === undefined) {
|
|
82
|
+
return tag;
|
|
83
|
+
}
|
|
84
|
+
if (!tag) {
|
|
85
|
+
throw new CLIError('tag argument is empty');
|
|
152
86
|
}
|
|
153
87
|
if (tag.includes('.')) {
|
|
154
|
-
|
|
155
|
-
return;
|
|
88
|
+
throw new CLIError(`tag cannot contain . (period), but was: "${tag}"`);
|
|
156
89
|
}
|
|
157
90
|
if (!validForNamesPattern.test(tag)) {
|
|
158
|
-
|
|
159
|
-
return;
|
|
91
|
+
throw new CLIError(`tag can only contain characters in [${validForNamesChars}], but was: "${tag}"`);
|
|
160
92
|
}
|
|
161
93
|
if (tag.startsWith('-')) {
|
|
162
|
-
|
|
163
|
-
return;
|
|
94
|
+
throw new CLIError(`tag cannot start with - (dash) but was: "${tag}"`);
|
|
164
95
|
}
|
|
165
96
|
return tag;
|
|
166
97
|
}
|
|
167
|
-
function parseNonEmptyString(flags, flagName, errors) {
|
|
168
|
-
const flag = flags[flagName];
|
|
169
|
-
if (!isString(flag) || !flag) {
|
|
170
|
-
errors.push(`${flagName} argument is empty`);
|
|
171
|
-
return '';
|
|
172
|
-
}
|
|
173
|
-
return flag;
|
|
174
|
-
}
|
|
175
|
-
function isString(flag) {
|
|
176
|
-
return typeof flag === 'string';
|
|
177
|
-
}
|
|
178
98
|
function getProjectIdMismatchMessage(workspace, operation) {
|
|
179
99
|
return `No permissions to ${operation} schema for workspace "${workspace.name}" with projectId "${workspace.projectId}"`;
|
|
180
100
|
}
|
|
181
|
-
/**
|
|
182
|
-
* At the moment schema store commands does not support studios where workspaces have multiple projects
|
|
183
|
-
*/ export function throwWriteProjectIdMismatch(workspace, projectId) {
|
|
184
|
-
if (workspace.projectId !== projectId) {
|
|
185
|
-
throw new Error(getProjectIdMismatchMessage(workspace, 'write'));
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
101
|
export function filterLogReadProjectIdMismatch(workspace, projectId, output) {
|
|
189
102
|
const canRead = workspace.projectId === projectId;
|
|
190
103
|
if (!canRead) output.warn(`${getProjectIdMismatchMessage(workspace, 'read')} – ignoring it.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/actions/schema/utils/schemaStoreValidation.ts"],"sourcesContent":["import {type Output} from '@sanity/cli-core'\n\nimport {isDefined} from '../../manifest/schemaTypeHelpers.js'\nimport {SANITY_WORKSPACE_SCHEMA_ID_PREFIX} from '../../manifest/types.js'\nimport {type DeleteSchemaFlags} from '../deleteSchemaAction.js'\nimport {resolveManifestDirectory} from './manifestReader.js'\n\n// TODO: These types will be imported from their respective files when migrated\nexport interface DeploySchemasFlags extends SchemaStoreCommonFlags {\n 'schema-required'?: boolean\n tag?: string\n workspace?: string\n}\n\nexport interface SchemaListFlags extends SchemaStoreCommonFlags {\n id?: string\n json?: boolean\n}\n\n// Native implementation instead of lodash/uniqBy\nfunction uniqBy<T>(array: T[], key: keyof T): T[] {\n const seen = new Set()\n return array.filter((item) => {\n const value = item[key]\n if (seen.has(value)) {\n return false\n }\n seen.add(value)\n return true\n })\n}\n\nexport const validForIdChars = 'a-zA-Z0-9._-'\nexport const validForIdPattern = new RegExp(`^[${validForIdChars}]+$`)\n\n//no periods allowed in workspaceName or tag in ids\nexport const validForNamesChars = 'a-zA-Z0-9_-'\nexport const validForNamesPattern = new RegExp(`^[${validForNamesChars}]+$`)\n\nconst requiredInId = SANITY_WORKSPACE_SCHEMA_ID_PREFIX.replaceAll(/[.]/g, String.raw`\\.`)\n\nconst idIdPatternString = String.raw`^${requiredInId}\\.([${validForNamesChars}]+)`\nconst baseIdPattern = new RegExp(`${idIdPatternString}$`)\nconst taggedIdIdPattern = new RegExp(\n String.raw`${idIdPatternString}\\.tag\\.([${validForNamesChars}]+)$`,\n)\n\nexport class FlagValidationError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'FlagValidationError'\n }\n}\n\ninterface WorkspaceSchemaId {\n schemaId: string\n workspace: string\n}\n\nexport interface SchemaStoreCommonFlags {\n 'extract-manifest'?: boolean\n 'manifest-dir'?: string\n verbose?: boolean\n}\n\nfunction parseCommonFlags(\n flags: SchemaStoreCommonFlags,\n context: {workDir: string},\n errors: string[],\n) {\n const manifestDir = parseManifestDir(flags, errors)\n const verbose = !!flags.verbose\n // extract manifest by default: our CLI layer handles both --extract-manifest (true) and --no-extract-manifest (false)\n const extractManifest = flags['extract-manifest'] ?? true\n\n const fullManifestDir = resolveManifestDirectory(context.workDir, manifestDir)\n return {\n extractManifest,\n manifestDir: fullManifestDir,\n verbose,\n }\n}\n\nexport function parseDeploySchemasConfig(flags: DeploySchemasFlags, context: {workDir: string}) {\n const errors: string[] = []\n\n const commonFlags = parseCommonFlags(flags, context, errors)\n const workspaceName = parseWorkspace(flags, errors)\n const tag = parseTag(flags, errors)\n const schemaRequired = !!flags['schema-required']\n\n assertNoErrors(errors)\n return {...commonFlags, schemaRequired, tag, workspaceName}\n}\n\nexport function parseListSchemasConfig(flags: SchemaListFlags, context: {workDir: string}) {\n const errors: string[] = []\n\n const commonFlags = parseCommonFlags(flags, context, errors)\n const id = parseId(flags, errors)\n const json = !!flags.json\n\n assertNoErrors(errors)\n return {...commonFlags, id, json}\n}\n\nexport function parseDeleteSchemasConfig(flags: DeleteSchemaFlags, context: {workDir: string}) {\n const errors: string[] = []\n\n const commonFlags = parseCommonFlags(flags, context, errors)\n const ids = parseIds(flags, errors)\n const dataset = parseDataset(flags, errors)\n\n assertNoErrors(errors)\n return {...commonFlags, dataset, ids}\n}\n\nfunction assertNoErrors(errors: string[]) {\n if (errors.length > 0) {\n throw new FlagValidationError(\n `Invalid arguments:\\n${errors.map((error) => ` - ${error}`).join('\\n')}`,\n )\n }\n}\n\nexport function parseIds(flags: {ids?: unknown}, errors: string[]): WorkspaceSchemaId[] {\n const parsedIds = parseNonEmptyString(flags, 'ids', errors)\n if (errors.length > 0) {\n return []\n }\n\n const ids = parsedIds\n .split(',')\n .map((id) => id.trim())\n .filter((id) => !!id)\n .map((id) => parseWorkspaceSchemaId(id, errors))\n .filter((item) => isDefined(item))\n\n const uniqueIds = uniqBy(ids, 'schemaId' satisfies keyof (typeof ids)[number])\n if (uniqueIds.length < ids.length) {\n errors.push(`ids contains duplicates`)\n }\n if (errors.length === 0 && uniqueIds.length === 0) {\n errors.push(`ids contains no valid id strings`)\n }\n return uniqueIds\n}\n\nexport function parseId(flags: {id?: unknown}, errors: string[]) {\n const id = flags.id === undefined ? undefined : parseNonEmptyString(flags, 'id', errors)\n if (id) {\n return parseWorkspaceSchemaId(id, errors)?.schemaId\n }\n return\n}\n\nexport function parseWorkspaceSchemaId(id: string, errors: string[]) {\n const trimmedId = id.trim()\n\n if (!validForIdPattern.test(trimmedId)) {\n errors.push(`id can only contain characters in [${validForIdChars}] but found: \"${trimmedId}\"`)\n return\n }\n\n if (trimmedId.startsWith('-')) {\n errors.push(`id cannot start with - (dash) but found: \"${trimmedId}\"`)\n return\n }\n\n if (/\\.\\./g.test(trimmedId)) {\n errors.push(`id cannot have consecutive . (period) characters, but found: \"${trimmedId}\"`)\n return\n }\n\n const [, workspace] = trimmedId.match(taggedIdIdPattern) ?? trimmedId.match(baseIdPattern) ?? []\n if (!workspace) {\n errors.push(\n [\n `id must either match ${SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.<workspaceName> `,\n `or ${SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.<workspaceName>.tag.<tag> but found: \"${trimmedId}\". `,\n `Note that workspace name characters not in [${validForNamesChars}] has to be replaced with _ for schema id.`,\n ].join(''),\n )\n return\n }\n return {\n schemaId: trimmedId,\n workspace,\n }\n}\n\nfunction parseDataset(flags: {dataset?: unknown}, errors: string[]) {\n return flags.dataset === undefined ? undefined : parseNonEmptyString(flags, 'dataset', errors)\n}\n\nfunction parseWorkspace(flags: {workspace?: unknown}, errors: string[]) {\n return flags.workspace === undefined ? undefined : parseNonEmptyString(flags, 'workspace', errors)\n}\n\nfunction parseManifestDir(flags: {'manifest-dir'?: unknown}, errors: string[]) {\n return flags['manifest-dir'] === undefined\n ? undefined\n : parseNonEmptyString(flags, 'manifest-dir', errors)\n}\n\nexport function parseTag(flags: {tag?: unknown}, errors: string[]) {\n if (flags.tag === undefined) {\n return\n }\n\n const tag = parseNonEmptyString(flags, 'tag', errors)\n if (errors.length > 0) {\n return\n }\n\n if (tag.includes('.')) {\n errors.push(`tag cannot contain . (period), but was: \"${tag}\"`)\n return\n }\n\n if (!validForNamesPattern.test(tag)) {\n errors.push(`tag can only contain characters in [${validForNamesChars}], but was: \"${tag}\"`)\n return\n }\n\n if (tag.startsWith('-')) {\n errors.push(`tag cannot start with - (dash) but was: \"${tag}\"`)\n return\n }\n\n return tag\n}\n\nfunction parseNonEmptyString<\n Flag extends string,\n Flags extends Partial<Record<Flag, unknown | undefined>>,\n>(flags: Flags, flagName: Flag, errors: string[]): string {\n const flag = flags[flagName]\n if (!isString(flag) || !flag) {\n errors.push(`${flagName} argument is empty`)\n return ''\n }\n return flag\n}\n\nfunction isString(flag: unknown): flag is string {\n return typeof flag === 'string'\n}\n\nfunction getProjectIdMismatchMessage(\n workspace: {name: string; projectId: string},\n operation: 'read' | 'write',\n) {\n return `No permissions to ${operation} schema for workspace \"${workspace.name}\" with projectId \"${workspace.projectId}\"`\n}\n\n/**\n * At the moment schema store commands does not support studios where workspaces have multiple projects\n */\nexport function throwWriteProjectIdMismatch(\n workspace: {name: string; projectId: string},\n projectId: string,\n): void {\n if (workspace.projectId !== projectId) {\n throw new Error(getProjectIdMismatchMessage(workspace, 'write'))\n }\n}\n\nexport function filterLogReadProjectIdMismatch(\n workspace: {name: string; projectId: string},\n projectId: string,\n output: Output,\n) {\n const canRead = workspace.projectId === projectId\n if (!canRead) output.warn(`${getProjectIdMismatchMessage(workspace, 'read')} – ignoring it.`)\n return canRead\n}\n\nexport const SCHEMA_PERMISSION_HELP_TEXT =\n 'For multi-project workspaces, set SANITY_AUTH_TOKEN environment variable to a token with access to the workspace projects.'\n"],"names":["isDefined","SANITY_WORKSPACE_SCHEMA_ID_PREFIX","resolveManifestDirectory","uniqBy","array","key","seen","Set","filter","item","value","has","add","validForIdChars","validForIdPattern","RegExp","validForNamesChars","validForNamesPattern","requiredInId","replaceAll","String","raw","idIdPatternString","baseIdPattern","taggedIdIdPattern","FlagValidationError","Error","message","name","parseCommonFlags","flags","context","errors","manifestDir","parseManifestDir","verbose","extractManifest","fullManifestDir","workDir","parseDeploySchemasConfig","commonFlags","workspaceName","parseWorkspace","tag","parseTag","schemaRequired","assertNoErrors","parseListSchemasConfig","id","parseId","json","parseDeleteSchemasConfig","ids","parseIds","dataset","parseDataset","length","map","error","join","parsedIds","parseNonEmptyString","split","trim","parseWorkspaceSchemaId","uniqueIds","push","undefined","schemaId","trimmedId","test","startsWith","workspace","match","includes","flagName","flag","isString","getProjectIdMismatchMessage","operation","projectId","throwWriteProjectIdMismatch","filterLogReadProjectIdMismatch","output","canRead","warn","SCHEMA_PERMISSION_HELP_TEXT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/schema/utils/schemaStoreValidation.ts"],"sourcesContent":["import {CLIError} from '@oclif/core/errors'\nimport {type Output} from '@sanity/cli-core'\n\nimport {uniqBy} from '../../../util/uniqBy.js'\nimport {isDefined} from '../../manifest/schemaTypeHelpers.js'\nimport {SANITY_WORKSPACE_SCHEMA_ID_PREFIX} from '../../manifest/types.js'\n\nconst validForIdChars = 'a-zA-Z0-9._-'\nconst validForIdPattern = new RegExp(`^[${validForIdChars}]+$`)\n\n//no periods allowed in workspaceName or tag in ids\nexport const validForNamesChars = 'a-zA-Z0-9_-'\nexport const validForNamesPattern = new RegExp(`^[${validForNamesChars}]+$`)\n\nconst requiredInId = SANITY_WORKSPACE_SCHEMA_ID_PREFIX.replaceAll(/[.]/g, String.raw`\\.`)\n\nconst idIdPatternString = String.raw`^${requiredInId}\\.([${validForNamesChars}]+)`\nconst baseIdPattern = new RegExp(`${idIdPatternString}$`)\nconst taggedIdIdPattern = new RegExp(\n String.raw`${idIdPatternString}\\.tag\\.([${validForNamesChars}]+)$`,\n)\n\nexport class FlagValidationError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'FlagValidationError'\n }\n}\n\nexport interface WorkspaceSchemaId {\n schemaId: string\n workspace: string\n}\n\nexport function parseIds(ids?: string): WorkspaceSchemaId[] {\n if (!ids) {\n throw new CLIError('ids argument is empty')\n }\n\n const errors: string[] = []\n\n const parsedIds = ids\n .split(',')\n .map((id) => id.trim())\n .filter((id) => !!id)\n .map((id) => parseWorkspaceSchemaId(errors, id))\n .filter((item) => isDefined(item))\n\n if (errors.length > 0) {\n throw new CLIError(`Invalid arguments:\\n${errors.map((error) => ` - ${error}`).join('\\n')}`)\n }\n\n if (parsedIds.length === 0) {\n throw new CLIError(`ids contains no valid id strings`)\n }\n\n const uniqueIds = uniqBy(parsedIds, 'schemaId' satisfies keyof (typeof parsedIds)[number])\n if (uniqueIds.length < parsedIds.length) {\n throw new CLIError(`ids contains duplicates`)\n }\n\n return uniqueIds\n}\n\nexport function parseWorkspaceSchemaId(errors: string[], id?: string) {\n if (id === undefined) {\n return\n }\n\n if (!id) {\n errors.push('id argument is empty')\n return\n }\n\n const trimmedId = id.trim()\n\n if (!validForIdPattern.test(trimmedId)) {\n errors.push(`id can only contain characters in [${validForIdChars}] but found: \"${trimmedId}\"`)\n return\n }\n\n if (trimmedId.startsWith('-')) {\n errors.push(`id cannot start with - (dash) but found: \"${trimmedId}\"`)\n return\n }\n\n if (/\\.\\./g.test(trimmedId)) {\n errors.push(`id cannot have consecutive . (period) characters, but found: \"${trimmedId}\"`)\n return\n }\n\n const [, workspace] = trimmedId.match(taggedIdIdPattern) ?? trimmedId.match(baseIdPattern) ?? []\n if (!workspace) {\n errors.push(\n [\n `id must either match ${SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.<workspaceName> `,\n `or ${SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.<workspaceName>.tag.<tag> but found: \"${trimmedId}\". `,\n `Note that workspace name characters not in [${validForNamesChars}] has to be replaced with _ for schema id.`,\n ].join(''),\n )\n return\n }\n return {\n schemaId: trimmedId,\n workspace,\n }\n}\n\n/**\n *\n * @param tag - The tag to parse\n * Throws an error if the tag is empty\n * Throws an error if the tag contains a period\n * Throws an error if the tag starts with a dash\n * Returns the parsed tag\n */\nexport async function parseTag(tag?: string) {\n if (tag === undefined) {\n return tag\n }\n\n if (!tag) {\n throw new CLIError('tag argument is empty')\n }\n\n if (tag.includes('.')) {\n throw new CLIError(`tag cannot contain . (period), but was: \"${tag}\"`)\n }\n\n if (!validForNamesPattern.test(tag)) {\n throw new CLIError(\n `tag can only contain characters in [${validForNamesChars}], but was: \"${tag}\"`,\n )\n }\n\n if (tag.startsWith('-')) {\n throw new CLIError(`tag cannot start with - (dash) but was: \"${tag}\"`)\n }\n\n return tag\n}\n\nfunction getProjectIdMismatchMessage(\n workspace: {name: string; projectId: string},\n operation: 'read' | 'write',\n) {\n return `No permissions to ${operation} schema for workspace \"${workspace.name}\" with projectId \"${workspace.projectId}\"`\n}\n\nexport function filterLogReadProjectIdMismatch(\n workspace: {name: string; projectId: string},\n projectId: string,\n output: Output,\n) {\n const canRead = workspace.projectId === projectId\n if (!canRead) output.warn(`${getProjectIdMismatchMessage(workspace, 'read')} – ignoring it.`)\n return canRead\n}\n\nexport const SCHEMA_PERMISSION_HELP_TEXT =\n 'For multi-project workspaces, set SANITY_AUTH_TOKEN environment variable to a token with access to the workspace projects.'\n"],"names":["CLIError","uniqBy","isDefined","SANITY_WORKSPACE_SCHEMA_ID_PREFIX","validForIdChars","validForIdPattern","RegExp","validForNamesChars","validForNamesPattern","requiredInId","replaceAll","String","raw","idIdPatternString","baseIdPattern","taggedIdIdPattern","FlagValidationError","Error","message","name","parseIds","ids","errors","parsedIds","split","map","id","trim","filter","parseWorkspaceSchemaId","item","length","error","join","uniqueIds","undefined","push","trimmedId","test","startsWith","workspace","match","schemaId","parseTag","tag","includes","getProjectIdMismatchMessage","operation","projectId","filterLogReadProjectIdMismatch","output","canRead","warn","SCHEMA_PERMISSION_HELP_TEXT"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ManifestWorkspaceFile } from '../../manifest/types';
|
|
2
|
+
export declare function uniqByProjectIdDataset(workspaces: ManifestWorkspaceFile[]): {
|
|
3
|
+
key: string;
|
|
4
|
+
schema: string;
|
|
5
|
+
tools: string;
|
|
6
|
+
name: string;
|
|
7
|
+
title?: string | undefined;
|
|
8
|
+
mediaLibrary?: import("sanity").MediaLibraryConfig | undefined;
|
|
9
|
+
dataset: string;
|
|
10
|
+
projectId: string;
|
|
11
|
+
icon: string | null;
|
|
12
|
+
basePath: string;
|
|
13
|
+
subtitle?: string | undefined;
|
|
14
|
+
}[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/schema/utils/uniqByProjectIdDataset.ts"],"sourcesContent":["import {uniqBy} from '../../../util/uniqBy.js'\nimport {type ManifestWorkspaceFile} from '../../manifest/types'\n\nexport function uniqByProjectIdDataset(workspaces: ManifestWorkspaceFile[]) {\n return uniqBy(\n workspaces.map((w) => ({\n ...w,\n key: `${w.projectId}-${w.dataset}`,\n })),\n 'key',\n )\n}\n"],"names":["uniqBy","uniqByProjectIdDataset","workspaces","map","w","key","projectId","dataset"],"mappings":"AAAA,SAAQA,MAAM,QAAO,0BAAyB;AAG9C,OAAO,SAASC,uBAAuBC,UAAmC;IACxE,OAAOF,OACLE,WAAWC,GAAG,CAAC,CAACC,IAAO,CAAA;YACrB,GAAGA,CAAC;YACJC,KAAK,GAAGD,EAAEE,SAAS,CAAC,CAAC,EAAEF,EAAEG,OAAO,EAAE;QACpC,CAAA,IACA;AAEJ"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { type SanityClient } from '@sanity/client';
|
|
2
1
|
interface GetMembersForProjectOptions {
|
|
3
|
-
client: SanityClient;
|
|
4
2
|
projectId: string;
|
|
5
3
|
/**
|
|
6
4
|
* Whether to include pending invitations in the response
|
|
@@ -22,5 +20,5 @@ interface MemberList {
|
|
|
22
20
|
*
|
|
23
21
|
* @returns A list of all members for a project
|
|
24
22
|
*/
|
|
25
|
-
export declare function getMembersForProject({
|
|
23
|
+
export declare function getMembersForProject({ includeInvitations, includeRobots, projectId, }: GetMembersForProjectOptions): Promise<MemberList[]>;
|
|
26
24
|
export {};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { getProjectById, getProjectInvites } from '../../services/projects.js';
|
|
2
|
+
import { getMembers } from '../../services/user.js';
|
|
1
3
|
import { getPendingInvitations } from './getPendingInvitations.js';
|
|
2
4
|
import { usersDebug } from './usersDebug.js';
|
|
3
5
|
function getUserProps(user) {
|
|
@@ -11,28 +13,15 @@ function getUserProps(user) {
|
|
|
11
13
|
* Get all members for a project
|
|
12
14
|
*
|
|
13
15
|
* @returns A list of all members for a project
|
|
14
|
-
*/ export async function getMembersForProject({
|
|
16
|
+
*/ export async function getMembersForProject({ includeInvitations, includeRobots, projectId }) {
|
|
15
17
|
try {
|
|
16
|
-
const useGlobalApi = true;
|
|
17
18
|
const [pendingInvitations, project] = await Promise.all([
|
|
18
|
-
includeInvitations ?
|
|
19
|
-
|
|
20
|
-
useGlobalApi
|
|
21
|
-
}).then(getPendingInvitations) : [],
|
|
22
|
-
client.request({
|
|
23
|
-
query: {
|
|
24
|
-
includeFeatures: 'false'
|
|
25
|
-
},
|
|
26
|
-
uri: `/projects/${projectId}`,
|
|
27
|
-
useGlobalApi
|
|
28
|
-
})
|
|
19
|
+
includeInvitations ? getProjectInvites(projectId).then(getPendingInvitations) : [],
|
|
20
|
+
getProjectById(projectId)
|
|
29
21
|
]);
|
|
30
22
|
const memberIds = project.members// Filter all the robot users if the robots flag is not set
|
|
31
23
|
.filter((member)=>!member.isRobot || includeRobots).map((member)=>member.id);
|
|
32
|
-
const users = await
|
|
33
|
-
uri: `/users/${memberIds.join(',')}`,
|
|
34
|
-
useGlobalApi
|
|
35
|
-
}).then((user)=>Array.isArray(user) ? user : [
|
|
24
|
+
const users = await getMembers(memberIds).then((user)=>Array.isArray(user) ? user : [
|
|
36
25
|
user
|
|
37
26
|
]);
|
|
38
27
|
const projectMembers = project.members.map((member)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/users/getMembersForProject.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/users/getMembersForProject.ts"],"sourcesContent":["import {getProjectById, getProjectInvites} from '../../services/projects.js'\nimport {getMembers} from '../../services/user.js'\nimport {getPendingInvitations} from './getPendingInvitations.js'\nimport {type User} from './types.js'\nimport {usersDebug} from './usersDebug.js'\n\ninterface GetMembersForProjectOptions {\n projectId: string\n\n /**\n * Whether to include pending invitations in the response\n */\n includeInvitations?: boolean\n\n /**\n * Whether to include robots in the response\n */\n includeRobots?: boolean\n}\n\nfunction getUserProps(user: User | undefined) {\n const {createdAt: date, displayName: name} = user || {}\n return {date: date || '', name: name || ''}\n}\n\ninterface MemberList {\n date: string\n id: string\n name: string\n role: string\n}\n\n/**\n * Get all members for a project\n *\n * @returns A list of all members for a project\n */\nexport async function getMembersForProject({\n includeInvitations,\n includeRobots,\n projectId,\n}: GetMembersForProjectOptions): Promise<MemberList[]> {\n try {\n const [pendingInvitations, project] = await Promise.all([\n includeInvitations ? getProjectInvites(projectId).then(getPendingInvitations) : [],\n getProjectById(projectId),\n ])\n\n const memberIds = project.members\n // Filter all the robot users if the robots flag is not set\n .filter((member) => !member.isRobot || includeRobots)\n .map((member) => member.id)\n\n const users = await getMembers(memberIds).then((user) => (Array.isArray(user) ? user : [user]))\n\n const projectMembers = project.members\n .map((member) => {\n return {\n ...member,\n ...getUserProps(users.find((candidate) => candidate.id === member.id)),\n }\n })\n .filter((member) => !member.isRobot || includeRobots)\n\n const members = [...projectMembers, ...pendingInvitations]\n\n usersDebug(`Found ${projectMembers.length} project members for ${projectId}`)\n usersDebug(`Found ${pendingInvitations.length} pending invitations for ${projectId}`)\n return members\n } catch (error) {\n throw new Error(`Error fetching members for ${projectId}`, {cause: error})\n }\n}\n"],"names":["getProjectById","getProjectInvites","getMembers","getPendingInvitations","usersDebug","getUserProps","user","createdAt","date","displayName","name","getMembersForProject","includeInvitations","includeRobots","projectId","pendingInvitations","project","Promise","all","then","memberIds","members","filter","member","isRobot","map","id","users","Array","isArray","projectMembers","find","candidate","length","error","Error","cause"],"mappings":"AAAA,SAAQA,cAAc,EAAEC,iBAAiB,QAAO,6BAA4B;AAC5E,SAAQC,UAAU,QAAO,yBAAwB;AACjD,SAAQC,qBAAqB,QAAO,6BAA4B;AAEhE,SAAQC,UAAU,QAAO,kBAAiB;AAgB1C,SAASC,aAAaC,IAAsB;IAC1C,MAAM,EAACC,WAAWC,IAAI,EAAEC,aAAaC,IAAI,EAAC,GAAGJ,QAAQ,CAAC;IACtD,OAAO;QAACE,MAAMA,QAAQ;QAAIE,MAAMA,QAAQ;IAAE;AAC5C;AASA;;;;CAIC,GACD,OAAO,eAAeC,qBAAqB,EACzCC,kBAAkB,EAClBC,aAAa,EACbC,SAAS,EACmB;IAC5B,IAAI;QACF,MAAM,CAACC,oBAAoBC,QAAQ,GAAG,MAAMC,QAAQC,GAAG,CAAC;YACtDN,qBAAqBX,kBAAkBa,WAAWK,IAAI,CAAChB,yBAAyB,EAAE;YAClFH,eAAec;SAChB;QAED,MAAMM,YAAYJ,QAAQK,OAAO,AAC/B,2DAA2D;SAC1DC,MAAM,CAAC,CAACC,SAAW,CAACA,OAAOC,OAAO,IAAIX,eACtCY,GAAG,CAAC,CAACF,SAAWA,OAAOG,EAAE;QAE5B,MAAMC,QAAQ,MAAMzB,WAAWkB,WAAWD,IAAI,CAAC,CAACb,OAAUsB,MAAMC,OAAO,CAACvB,QAAQA,OAAO;gBAACA;aAAK;QAE7F,MAAMwB,iBAAiBd,QAAQK,OAAO,CACnCI,GAAG,CAAC,CAACF;YACJ,OAAO;gBACL,GAAGA,MAAM;gBACT,GAAGlB,aAAasB,MAAMI,IAAI,CAAC,CAACC,YAAcA,UAAUN,EAAE,KAAKH,OAAOG,EAAE,EAAE;YACxE;QACF,GACCJ,MAAM,CAAC,CAACC,SAAW,CAACA,OAAOC,OAAO,IAAIX;QAEzC,MAAMQ,UAAU;eAAIS;eAAmBf;SAAmB;QAE1DX,WAAW,CAAC,MAAM,EAAE0B,eAAeG,MAAM,CAAC,qBAAqB,EAAEnB,WAAW;QAC5EV,WAAW,CAAC,MAAM,EAAEW,mBAAmBkB,MAAM,CAAC,yBAAyB,EAAEnB,WAAW;QACpF,OAAOO;IACT,EAAE,OAAOa,OAAO;QACd,MAAM,IAAIC,MAAM,CAAC,2BAA2B,EAAErB,WAAW,EAAE;YAACsB,OAAOF;QAAK;IAC1E;AACF"}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
interface Member {
|
|
2
|
-
createdAt: string;
|
|
3
|
-
id: string;
|
|
4
|
-
isCurrentUser: boolean;
|
|
5
|
-
isRobot: boolean;
|
|
6
|
-
role: string;
|
|
7
|
-
updatedAt: string | null;
|
|
8
|
-
}
|
|
9
1
|
export interface Invite {
|
|
10
2
|
acceptedByUserId: string | null;
|
|
11
3
|
createdAt: string;
|
|
@@ -26,9 +18,6 @@ export interface User {
|
|
|
26
18
|
provider: string;
|
|
27
19
|
updatedAt: string | null;
|
|
28
20
|
}
|
|
29
|
-
export interface PartialProjectResponse {
|
|
30
|
-
members: Member[];
|
|
31
|
-
}
|
|
32
21
|
export interface Role {
|
|
33
22
|
appliesToRobots: boolean;
|
|
34
23
|
appliesToUsers: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/users/types.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/users/types.ts"],"sourcesContent":["export interface Invite {\n acceptedByUserId: string | null\n createdAt: string\n email: string\n isAccepted: boolean\n isRevoked: boolean\n role: string\n}\n\nexport interface User {\n createdAt: string\n displayName: string\n familyName: string | null\n\n givenName: string | null\n id: string\n imageUrl: string | null\n middleName: string | null\n\n projectId: string\n\n provider: string\n updatedAt: string | null\n}\n\nexport interface Role {\n appliesToRobots: boolean\n appliesToUsers: boolean\n grants: Record<string, Grant[] | undefined>\n isCustom: boolean\n name: string\n projectId: string\n title: string\n\n description?: string\n}\n\ninterface Grant {\n grants: unknown[]\n id: string\n isCustom: boolean\n name: string\n title: string\n\n description?: string\n}\n"],"names":[],"mappings":"AAyBA,WAUC"}
|
|
@@ -2,7 +2,7 @@ import { Args } from '@oclif/core';
|
|
|
2
2
|
import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
3
3
|
import { chalk, select } from '@sanity/cli-core/ux';
|
|
4
4
|
import { assertDatasetExists } from '../../actions/backup/assertDatasetExist.js';
|
|
5
|
-
import {
|
|
5
|
+
import { setBackup } from '../../services/backup.js';
|
|
6
6
|
import { listDatasets } from '../../services/datasets.js';
|
|
7
7
|
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
8
8
|
const disableBackupDebug = subdebug('backup:disable');
|
|
@@ -33,10 +33,6 @@ export class DisableBackupCommand extends SanityCommand {
|
|
|
33
33
|
exit: 1
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
const client = await this.getGlobalApiClient({
|
|
37
|
-
apiVersion: BACKUP_API_VERSION,
|
|
38
|
-
requireUser: true
|
|
39
|
-
});
|
|
40
36
|
let datasets;
|
|
41
37
|
try {
|
|
42
38
|
datasets = await listDatasets(projectId);
|
|
@@ -58,12 +54,10 @@ export class DisableBackupCommand extends SanityCommand {
|
|
|
58
54
|
dataset = await this.promptForDataset(datasets);
|
|
59
55
|
}
|
|
60
56
|
try {
|
|
61
|
-
await
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
method: 'PUT',
|
|
66
|
-
uri: `/projects/${projectId}/datasets/${dataset}/settings/backups`
|
|
57
|
+
await setBackup({
|
|
58
|
+
dataset,
|
|
59
|
+
projectId,
|
|
60
|
+
status: false
|
|
67
61
|
});
|
|
68
62
|
this.log(`${chalk.green(`Disabled daily backups for dataset ${dataset}.\n`)}`);
|
|
69
63
|
this.log(`${chalk.yellow('Note: Existing backups will be retained according to your retention policy.\n')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/backup/disable.ts"],"sourcesContent":["import {Args} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {chalk, select} from '@sanity/cli-core/ux'\nimport {type DatasetsResponse} from '@sanity/client'\n\nimport {assertDatasetExists} from '../../actions/backup/assertDatasetExist.js'\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/backup/disable.ts"],"sourcesContent":["import {Args} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {chalk, select} from '@sanity/cli-core/ux'\nimport {type DatasetsResponse} from '@sanity/client'\n\nimport {assertDatasetExists} from '../../actions/backup/assertDatasetExist.js'\nimport {setBackup} from '../../services/backup.js'\nimport {listDatasets} from '../../services/datasets.js'\nimport {NO_PROJECT_ID} from '../../util/errorMessages.js'\n\nconst disableBackupDebug = subdebug('backup:disable')\n\nexport class DisableBackupCommand extends SanityCommand<typeof DisableBackupCommand> {\n static override args = {\n dataset: Args.string({\n description: 'Dataset name to disable backup for',\n required: false,\n }),\n }\n\n static override description = 'Disable backup for a dataset.'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Interactively disable backup for a dataset',\n },\n {\n command: '<%= config.bin %> <%= command.id %> production',\n description: 'Disable backup for the production dataset',\n },\n ]\n\n public async run(): Promise<void> {\n const {args} = await this.parse(DisableBackupCommand)\n let {dataset} = args\n\n const projectId = await this.getProjectId()\n if (!projectId) {\n this.error(NO_PROJECT_ID, {exit: 1})\n }\n\n let datasets: DatasetsResponse\n\n try {\n datasets = await listDatasets(projectId)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n disableBackupDebug(`Failed to list datasets: ${message}`, error)\n this.error(`Failed to list datasets: ${message}`, {exit: 1})\n }\n\n if (datasets.length === 0) {\n this.error('No datasets found in this project.', {exit: 1})\n }\n\n if (dataset) {\n assertDatasetExists(datasets, dataset)\n } else {\n dataset = await this.promptForDataset(datasets)\n }\n\n try {\n await setBackup({dataset, projectId, status: false})\n\n this.log(`${chalk.green(`Disabled daily backups for dataset ${dataset}.\\n`)}`)\n this.log(\n `${chalk.yellow('Note: Existing backups will be retained according to your retention policy.\\n')}`,\n )\n\n disableBackupDebug(`Successfully disabled backup for dataset ${dataset}`)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n disableBackupDebug(`Failed to disable backup for dataset`, error)\n this.error(`Disabling dataset backup failed: ${message}`, {exit: 1})\n }\n }\n\n private async promptForDataset(datasets: DatasetsResponse): Promise<string> {\n try {\n const choices = datasets.map((dataset) => ({\n name: dataset.name,\n value: dataset.name,\n }))\n\n return select({\n choices,\n message: 'Select the dataset name:',\n })\n } catch (error) {\n const err = error as Error\n disableBackupDebug(`Error fetching datasets`, err)\n this.error(`Failed to fetch datasets:\\n${err.message}`, {exit: 1})\n }\n }\n}\n"],"names":["Args","SanityCommand","subdebug","chalk","select","assertDatasetExists","setBackup","listDatasets","NO_PROJECT_ID","disableBackupDebug","DisableBackupCommand","args","dataset","string","description","required","examples","command","run","parse","projectId","getProjectId","error","exit","datasets","message","Error","String","length","promptForDataset","status","log","green","yellow","choices","map","name","value","err"],"mappings":"AAAA,SAAQA,IAAI,QAAO,cAAa;AAChC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACxD,SAAQC,KAAK,EAAEC,MAAM,QAAO,sBAAqB;AAGjD,SAAQC,mBAAmB,QAAO,6CAA4C;AAC9E,SAAQC,SAAS,QAAO,2BAA0B;AAClD,SAAQC,YAAY,QAAO,6BAA4B;AACvD,SAAQC,aAAa,QAAO,8BAA6B;AAEzD,MAAMC,qBAAqBP,SAAS;AAEpC,OAAO,MAAMQ,6BAA6BT;IACxC,OAAgBU,OAAO;QACrBC,SAASZ,KAAKa,MAAM,CAAC;YACnBC,aAAa;YACbC,UAAU;QACZ;IACF,EAAC;IAED,OAAgBD,cAAc,gCAA+B;IAE7D,OAAgBE,WAAW;QACzB;YACEC,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;KACD,CAAA;IAED,MAAaI,MAAqB;QAChC,MAAM,EAACP,IAAI,EAAC,GAAG,MAAM,IAAI,CAACQ,KAAK,CAACT;QAChC,IAAI,EAACE,OAAO,EAAC,GAAGD;QAEhB,MAAMS,YAAY,MAAM,IAAI,CAACC,YAAY;QACzC,IAAI,CAACD,WAAW;YACd,IAAI,CAACE,KAAK,CAACd,eAAe;gBAACe,MAAM;YAAC;QACpC;QAEA,IAAIC;QAEJ,IAAI;YACFA,WAAW,MAAMjB,aAAaa;QAChC,EAAE,OAAOE,OAAO;YACd,MAAMG,UAAUH,iBAAiBI,QAAQJ,MAAMG,OAAO,GAAGE,OAAOL;YAChEb,mBAAmB,CAAC,yBAAyB,EAAEgB,SAAS,EAAEH;YAC1D,IAAI,CAACA,KAAK,CAAC,CAAC,yBAAyB,EAAEG,SAAS,EAAE;gBAACF,MAAM;YAAC;QAC5D;QAEA,IAAIC,SAASI,MAAM,KAAK,GAAG;YACzB,IAAI,CAACN,KAAK,CAAC,sCAAsC;gBAACC,MAAM;YAAC;QAC3D;QAEA,IAAIX,SAAS;YACXP,oBAAoBmB,UAAUZ;QAChC,OAAO;YACLA,UAAU,MAAM,IAAI,CAACiB,gBAAgB,CAACL;QACxC;QAEA,IAAI;YACF,MAAMlB,UAAU;gBAACM;gBAASQ;gBAAWU,QAAQ;YAAK;YAElD,IAAI,CAACC,GAAG,CAAC,GAAG5B,MAAM6B,KAAK,CAAC,CAAC,mCAAmC,EAAEpB,QAAQ,GAAG,CAAC,GAAG;YAC7E,IAAI,CAACmB,GAAG,CACN,GAAG5B,MAAM8B,MAAM,CAAC,kFAAkF;YAGpGxB,mBAAmB,CAAC,yCAAyC,EAAEG,SAAS;QAC1E,EAAE,OAAOU,OAAO;YACd,MAAMG,UAAUH,iBAAiBI,QAAQJ,MAAMG,OAAO,GAAGE,OAAOL;YAChEb,mBAAmB,CAAC,oCAAoC,CAAC,EAAEa;YAC3D,IAAI,CAACA,KAAK,CAAC,CAAC,iCAAiC,EAAEG,SAAS,EAAE;gBAACF,MAAM;YAAC;QACpE;IACF;IAEA,MAAcM,iBAAiBL,QAA0B,EAAmB;QAC1E,IAAI;YACF,MAAMU,UAAUV,SAASW,GAAG,CAAC,CAACvB,UAAa,CAAA;oBACzCwB,MAAMxB,QAAQwB,IAAI;oBAClBC,OAAOzB,QAAQwB,IAAI;gBACrB,CAAA;YAEA,OAAOhC,OAAO;gBACZ8B;gBACAT,SAAS;YACX;QACF,EAAE,OAAOH,OAAO;YACd,MAAMgB,MAAMhB;YACZb,mBAAmB,CAAC,uBAAuB,CAAC,EAAE6B;YAC9C,IAAI,CAAChB,KAAK,CAAC,CAAC,2BAA2B,EAAEgB,IAAIb,OAAO,EAAE,EAAE;gBAACF,MAAM;YAAC;QAClE;IACF;AACF"}
|
|
@@ -2,9 +2,9 @@ import { Args } from '@oclif/core';
|
|
|
2
2
|
import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
3
3
|
import { chalk } from '@sanity/cli-core/ux';
|
|
4
4
|
import { assertDatasetExists } from '../../actions/backup/assertDatasetExist.js';
|
|
5
|
-
import { BACKUP_API_VERSION } from '../../actions/backup/constants.js';
|
|
6
5
|
import { NEW_DATASET_VALUE, promptForDataset } from '../../prompts/promptForDataset.js';
|
|
7
6
|
import { promptForDatasetName } from '../../prompts/promptForDatasetName.js';
|
|
7
|
+
import { setBackup } from '../../services/backup.js';
|
|
8
8
|
import { createDataset, listDatasets } from '../../services/datasets.js';
|
|
9
9
|
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
10
10
|
const enableBackupDebug = subdebug('backup:enable');
|
|
@@ -35,10 +35,6 @@ export class EnableBackupCommand extends SanityCommand {
|
|
|
35
35
|
exit: 1
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
|
-
const client = await this.getGlobalApiClient({
|
|
39
|
-
apiVersion: BACKUP_API_VERSION,
|
|
40
|
-
requireUser: true
|
|
41
|
-
});
|
|
42
38
|
let datasets;
|
|
43
39
|
try {
|
|
44
40
|
datasets = await listDatasets(projectId);
|
|
@@ -82,12 +78,10 @@ export class EnableBackupCommand extends SanityCommand {
|
|
|
82
78
|
}
|
|
83
79
|
}
|
|
84
80
|
try {
|
|
85
|
-
await
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
method: 'PUT',
|
|
90
|
-
uri: `/projects/${projectId}/datasets/${dataset}/settings/backups`
|
|
81
|
+
await setBackup({
|
|
82
|
+
dataset,
|
|
83
|
+
projectId,
|
|
84
|
+
status: true
|
|
91
85
|
});
|
|
92
86
|
this.log(`${chalk.green(`Enabled backups for dataset ${dataset}.\nPlease note that it may take up to 24 hours before the first backup is created.\n`)}`);
|
|
93
87
|
this.log(`${chalk.bold(`Retention policies may apply depending on your plan and agreement.\n`)}`);
|