@sanity/cli 5.9.0-next.8 → 6.0.0-alpha.11
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/LICENSE +1 -1
- package/README.md +3212 -2
- package/bin/run.cmd +3 -0
- package/bin/run.js +33 -0
- package/codemods/deskRename.js +115 -96
- package/codemods/partsTypeDirective.js +7 -7
- package/codemods/reactIconsV3.js +78 -51
- package/dist/SanityHelp.js +43 -0
- package/dist/SanityHelp.js.map +1 -0
- package/dist/actions/auth/authServer.js +153 -0
- package/dist/actions/auth/authServer.js.map +1 -0
- package/dist/actions/auth/getProviderName.js +15 -0
- package/dist/actions/auth/getProviderName.js.map +1 -0
- package/dist/actions/auth/login/getProvider.js +54 -0
- package/dist/actions/auth/login/getProvider.js.map +1 -0
- package/dist/actions/auth/login/getSSOProvider.js +30 -0
- package/dist/actions/auth/login/getSSOProvider.js.map +1 -0
- package/dist/actions/auth/login/login.js +101 -0
- package/dist/actions/auth/login/login.js.map +1 -0
- package/dist/actions/auth/login/promptProviders.js +23 -0
- package/dist/actions/auth/login/promptProviders.js.map +1 -0
- package/dist/actions/auth/login/samlProviderToLoginProvider.js +15 -0
- package/dist/actions/auth/login/samlProviderToLoginProvider.js.map +1 -0
- package/dist/actions/auth/types.js +7 -0
- package/dist/actions/auth/types.js.map +1 -0
- package/dist/actions/backup/archiveDir.js +43 -0
- package/dist/actions/backup/archiveDir.js.map +1 -0
- package/dist/actions/backup/assertDatasetExist.js +16 -0
- package/dist/actions/backup/assertDatasetExist.js.map +1 -0
- package/dist/actions/backup/backupDownloadDebug.js +4 -0
- package/dist/actions/backup/backupDownloadDebug.js.map +1 -0
- package/dist/actions/backup/cleanupTmpDir.js +19 -0
- package/dist/actions/backup/cleanupTmpDir.js.map +1 -0
- package/dist/actions/backup/constants.js +3 -0
- package/dist/actions/backup/constants.js.map +1 -0
- package/dist/actions/backup/downloadAsset.js +54 -0
- package/dist/actions/backup/downloadAsset.js.map +1 -0
- package/dist/actions/backup/downloadDocument.js +32 -0
- package/dist/actions/backup/downloadDocument.js.map +1 -0
- package/dist/actions/backup/fetchNextBackupPage.js +48 -0
- package/dist/actions/backup/fetchNextBackupPage.js.map +1 -0
- package/dist/actions/backup/progressSpinner.js +40 -0
- package/dist/actions/backup/progressSpinner.js.map +1 -0
- package/dist/actions/build/buildApp.js +159 -0
- package/dist/actions/build/buildApp.js.map +1 -0
- package/dist/actions/build/buildDebug.js +4 -0
- package/dist/actions/build/buildDebug.js.map +1 -0
- package/dist/actions/build/buildStaticFiles.js +82 -0
- package/dist/actions/build/buildStaticFiles.js.map +1 -0
- package/dist/actions/build/buildStudio.js +202 -0
- package/dist/actions/build/buildStudio.js.map +1 -0
- package/dist/actions/build/buildVendorDependencies.js +179 -0
- package/dist/actions/build/buildVendorDependencies.js.map +1 -0
- package/dist/actions/build/checkRequiredDependencies.js +122 -0
- package/dist/actions/build/checkRequiredDependencies.js.map +1 -0
- package/dist/actions/build/checkStudioDependencyVersions.js +154 -0
- package/dist/actions/build/checkStudioDependencyVersions.js.map +1 -0
- package/dist/actions/build/createExternalFromImportMap.js +11 -0
- package/dist/actions/build/createExternalFromImportMap.js.map +1 -0
- package/dist/actions/build/decorateIndexWithAutoGeneratedWarning.js +13 -0
- package/dist/actions/build/decorateIndexWithAutoGeneratedWarning.js.map +1 -0
- package/dist/actions/build/decorateIndexWithBridgeScript.js +17 -0
- package/dist/actions/build/decorateIndexWithBridgeScript.js.map +1 -0
- package/dist/actions/build/determineBasePath.js +20 -0
- package/dist/actions/build/determineBasePath.js.map +1 -0
- package/dist/actions/build/generateWebManifest.js +27 -0
- package/dist/actions/build/generateWebManifest.js.map +1 -0
- package/dist/actions/build/getAppEnvVars.js +9 -0
- package/dist/actions/build/getAppEnvVars.js.map +1 -0
- package/dist/actions/build/getAutoUpdatesImportMap.js +57 -0
- package/dist/actions/build/getAutoUpdatesImportMap.js.map +1 -0
- package/dist/actions/build/getEntryModule.js +46 -0
- package/dist/actions/build/getEntryModule.js.map +1 -0
- package/dist/actions/build/getPossibleDocumentComponentLocations.js +11 -0
- package/dist/actions/build/getPossibleDocumentComponentLocations.js.map +1 -0
- package/dist/actions/build/getStudioEnvVars.js +9 -0
- package/dist/actions/build/getStudioEnvVars.js.map +1 -0
- package/dist/actions/build/getStudioEnvironmentVariables.js +58 -0
- package/dist/actions/build/getStudioEnvironmentVariables.js.map +1 -0
- package/dist/actions/build/getViteConfig.js +180 -0
- package/dist/actions/build/getViteConfig.js.map +1 -0
- package/dist/actions/build/normalizeBasePath.js +9 -0
- package/dist/actions/build/normalizeBasePath.js.map +1 -0
- package/dist/actions/build/renderDocument.js +54 -0
- package/dist/actions/build/renderDocument.js.map +1 -0
- package/dist/actions/build/renderDocument.worker.js +9 -0
- package/dist/actions/build/renderDocument.worker.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/addTimestampImportMapScriptToHtml.js +59 -0
- package/dist/actions/build/renderDocumentWorker/addTimestampImportMapScriptToHtml.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js +61 -0
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js +165 -0
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/components/Favicons.js +28 -0
- package/dist/actions/build/renderDocumentWorker/components/Favicons.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js +177 -0
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/components/NoJavascript.js +51 -0
- package/dist/actions/build/renderDocumentWorker/components/NoJavascript.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js +41 -0
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/getDocumentHtml.js +55 -0
- package/dist/actions/build/renderDocumentWorker/getDocumentHtml.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js +31 -0
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/tryLoadDocumentComponent.js +30 -0
- package/dist/actions/build/renderDocumentWorker/tryLoadDocumentComponent.js.map +1 -0
- package/dist/actions/build/renderDocumentWorker/types.js +5 -0
- package/dist/actions/build/renderDocumentWorker/types.js.map +1 -0
- package/dist/actions/build/shouldAutoUpdate.js +35 -0
- package/dist/actions/build/shouldAutoUpdate.js.map +1 -0
- package/dist/actions/build/types.js +3 -0
- package/dist/actions/build/types.js.map +1 -0
- package/dist/actions/build/writeFavicons.js +26 -0
- package/dist/actions/build/writeFavicons.js.map +1 -0
- package/dist/actions/build/writeSanityRuntime.js +61 -0
- package/dist/actions/build/writeSanityRuntime.js.map +1 -0
- package/dist/actions/build/writeWebManifest.js +12 -0
- package/dist/actions/build/writeWebManifest.js.map +1 -0
- package/dist/actions/codemods/deskRename.js +18 -0
- package/dist/actions/codemods/deskRename.js.map +1 -0
- package/dist/actions/codemods/index.js +10 -0
- package/dist/actions/codemods/index.js.map +1 -0
- package/dist/actions/codemods/partsTypeDirective.js +27 -0
- package/dist/actions/codemods/partsTypeDirective.js.map +1 -0
- package/dist/actions/codemods/reactIconsV3.js +30 -0
- package/dist/actions/codemods/reactIconsV3.js.map +1 -0
- package/dist/actions/codemods/types.js +3 -0
- package/dist/actions/codemods/types.js.map +1 -0
- package/dist/actions/cors/filterAndValidateOrigin.js +38 -0
- package/dist/actions/cors/filterAndValidateOrigin.js.map +1 -0
- package/dist/actions/dataset/create.js +46 -0
- package/dist/actions/dataset/create.js.map +1 -0
- package/dist/actions/dataset/determineDatasetAclMode.js +36 -0
- package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -0
- package/dist/actions/dataset/processAliasName.js +20 -0
- package/dist/actions/dataset/processAliasName.js.map +1 -0
- package/dist/actions/dataset/validateDatasetAliasName.js +28 -0
- package/dist/actions/dataset/validateDatasetAliasName.js.map +1 -0
- package/dist/actions/dataset/validateDatasetName.js +39 -0
- package/dist/actions/dataset/validateDatasetName.js.map +1 -0
- package/dist/actions/debug/gatherDebugInfo.js +104 -0
- package/dist/actions/debug/gatherDebugInfo.js.map +1 -0
- package/dist/actions/debug/getGlobalConfigLocation.js +7 -0
- package/dist/actions/debug/getGlobalConfigLocation.js.map +1 -0
- package/dist/actions/debug/types.js +3 -0
- package/dist/actions/debug/types.js.map +1 -0
- package/dist/actions/deploy/checkDir.js +31 -0
- package/dist/actions/deploy/checkDir.js.map +1 -0
- package/dist/actions/deploy/createStudioUserApplication.js +59 -0
- package/dist/actions/deploy/createStudioUserApplication.js.map +1 -0
- package/dist/actions/deploy/createUserApplicationForApp.js +56 -0
- package/dist/actions/deploy/createUserApplicationForApp.js.map +1 -0
- package/dist/actions/deploy/deployApp.js +162 -0
- package/dist/actions/deploy/deployApp.js.map +1 -0
- package/dist/actions/deploy/deployDebug.js +4 -0
- package/dist/actions/deploy/deployDebug.js.map +1 -0
- package/dist/actions/deploy/deployStudio.js +134 -0
- package/dist/actions/deploy/deployStudio.js.map +1 -0
- package/dist/actions/deploy/findUserApplicationForApp.js +110 -0
- package/dist/actions/deploy/findUserApplicationForApp.js.map +1 -0
- package/dist/actions/deploy/findUserApplicationForStudio.js +143 -0
- package/dist/actions/deploy/findUserApplicationForStudio.js.map +1 -0
- package/dist/actions/deploy/types.js +3 -0
- package/dist/actions/deploy/types.js.map +1 -0
- package/dist/actions/dev/devAction.js +7 -0
- package/dist/actions/dev/devAction.js.map +1 -0
- package/dist/actions/dev/devDebug.js +4 -0
- package/dist/actions/dev/devDebug.js.map +1 -0
- package/dist/actions/dev/getCoreAppUrl.js +10 -0
- package/dist/actions/dev/getCoreAppUrl.js.map +1 -0
- package/dist/actions/dev/getDevServerConfig.js +28 -0
- package/dist/actions/dev/getDevServerConfig.js.map +1 -0
- package/dist/actions/dev/startAppDevServer.js +57 -0
- package/dist/actions/dev/startAppDevServer.js.map +1 -0
- package/dist/actions/dev/startStudioDevServer.js +154 -0
- package/dist/actions/dev/startStudioDevServer.js.map +1 -0
- package/dist/actions/dev/types.js +3 -0
- package/dist/actions/dev/types.js.map +1 -0
- package/dist/actions/docs/normalizeDocsPath.js +15 -0
- package/dist/actions/docs/normalizeDocsPath.js.map +1 -0
- package/dist/actions/documents/constants.js +3 -0
- package/dist/actions/documents/constants.js.map +1 -0
- package/dist/actions/documents/editor.js +26 -0
- package/dist/actions/documents/editor.js.map +1 -0
- package/dist/actions/documents/types.js +3 -0
- package/dist/actions/documents/types.js.map +1 -0
- package/dist/actions/documents/validate.js +60 -0
- package/dist/actions/documents/validate.js.map +1 -0
- package/dist/actions/documents/validateDocuments.worker.js +251 -0
- package/dist/actions/documents/validateDocuments.worker.js.map +1 -0
- package/dist/actions/documents/validation/reporters/index.js +10 -0
- package/dist/actions/documents/validation/reporters/index.js.map +1 -0
- package/dist/actions/documents/validation/reporters/jsonReporter.js +25 -0
- package/dist/actions/documents/validation/reporters/jsonReporter.js.map +1 -0
- package/dist/actions/documents/validation/reporters/ndjsonReporter.js +18 -0
- package/dist/actions/documents/validation/reporters/ndjsonReporter.js.map +1 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js +62 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js.map +1 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/index.js +3 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/index.js.map +1 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/prettyReporter.js +92 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/prettyReporter.js.map +1 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/util.js +45 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/util.js.map +1 -0
- package/dist/actions/exec/configClient.worker.js +9 -0
- package/dist/actions/exec/configClient.worker.js.map +1 -0
- package/dist/actions/exec/execScript.js +77 -0
- package/dist/actions/exec/execScript.js.map +1 -0
- package/dist/actions/exec/registerBrowserEnv.worker.js +17 -0
- package/dist/actions/exec/registerBrowserEnv.worker.js.map +1 -0
- package/dist/actions/graphql/SchemaError.js +37 -0
- package/dist/actions/graphql/SchemaError.js.map +1 -0
- package/dist/actions/graphql/extractFromSanitySchema.js +659 -0
- package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -0
- package/dist/actions/graphql/gen1/generateTypeFilters.js +226 -0
- package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -0
- package/dist/actions/graphql/gen1/generateTypeQueries.js +85 -0
- package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -0
- package/dist/actions/graphql/gen1/index.js +19 -0
- package/dist/actions/graphql/gen1/index.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/booleanFilters.js +26 -0
- package/dist/actions/graphql/gen2/filters/booleanFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/dateFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/dateFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/dateTimeFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/dateTimeFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/documentFilters.js +21 -0
- package/dist/actions/graphql/gen2/filters/documentFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/floatFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/floatFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/idFilters.js +44 -0
- package/dist/actions/graphql/gen2/filters/idFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/integerFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/integerFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/stringFilters.js +49 -0
- package/dist/actions/graphql/gen2/filters/stringFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/generateTypeFilters.js +85 -0
- package/dist/actions/graphql/gen2/generateTypeFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/generateTypeQueries.js +107 -0
- package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -0
- package/dist/actions/graphql/gen2/generateTypeSortings.js +70 -0
- package/dist/actions/graphql/gen2/generateTypeSortings.js.map +1 -0
- package/dist/actions/graphql/gen2/index.js +22 -0
- package/dist/actions/graphql/gen2/index.js.map +1 -0
- package/dist/actions/graphql/gen3/filters/documentFilters.js +21 -0
- package/dist/actions/graphql/gen3/filters/documentFilters.js.map +1 -0
- package/dist/actions/graphql/gen3/generateTypeFilters.js +101 -0
- package/dist/actions/graphql/gen3/generateTypeFilters.js.map +1 -0
- package/dist/actions/graphql/gen3/generateTypeQueries.js +104 -0
- package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -0
- package/dist/actions/graphql/gen3/generateTypeSortings.js +70 -0
- package/dist/actions/graphql/gen3/generateTypeSortings.js.map +1 -0
- package/dist/actions/graphql/gen3/index.js +31 -0
- package/dist/actions/graphql/gen3/index.js.map +1 -0
- package/dist/actions/graphql/gen3/utils.js +12 -0
- package/dist/actions/graphql/gen3/utils.js.map +1 -0
- package/dist/actions/graphql/getGraphQLAPIs.js +65 -0
- package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -0
- package/dist/actions/graphql/getGraphQLAPIs.worker.js +126 -0
- package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -0
- package/dist/actions/graphql/graphqlDebug.js +4 -0
- package/dist/actions/graphql/graphqlDebug.js.map +1 -0
- package/dist/actions/graphql/helpUrls.js +3 -0
- package/dist/actions/graphql/helpUrls.js.map +1 -0
- package/dist/actions/graphql/helpers.js +11 -0
- package/dist/actions/graphql/helpers.js.map +1 -0
- package/dist/actions/graphql/resolveApiGeneration.js +43 -0
- package/dist/actions/graphql/resolveApiGeneration.js.map +1 -0
- package/dist/actions/graphql/types.js +3 -0
- package/dist/actions/graphql/types.js.map +1 -0
- package/dist/actions/hook/constants.js +3 -0
- package/dist/actions/hook/constants.js.map +1 -0
- package/dist/actions/hook/formatFailure.js +29 -0
- package/dist/actions/hook/formatFailure.js.map +1 -0
- package/dist/actions/hook/types.js +3 -0
- package/dist/actions/hook/types.js.map +1 -0
- package/dist/actions/init/bootstrapLocalTemplate.js +137 -0
- package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -0
- package/dist/actions/init/bootstrapRemoteTemplate.js +109 -0
- package/dist/actions/init/bootstrapRemoteTemplate.js.map +1 -0
- package/dist/actions/init/bootstrapTemplate.js +32 -0
- package/dist/actions/init/bootstrapTemplate.js.map +1 -0
- package/dist/actions/init/checkNextJsReactCompatibility.js +21 -0
- package/dist/actions/init/checkNextJsReactCompatibility.js.map +1 -0
- package/dist/actions/init/constants.js +3 -0
- package/dist/actions/init/constants.js.map +1 -0
- package/dist/actions/init/countNestedFolders.js +6 -0
- package/dist/actions/init/countNestedFolders.js.map +1 -0
- package/dist/actions/init/createAppCliConfig.js +19 -0
- package/dist/actions/init/createAppCliConfig.js.map +1 -0
- package/dist/actions/init/createCliConfig.js +27 -0
- package/dist/actions/init/createCliConfig.js.map +1 -0
- package/dist/actions/init/createPackageManifest.js +86 -0
- package/dist/actions/init/createPackageManifest.js.map +1 -0
- package/dist/actions/init/createStudioConfig.js +41 -0
- package/dist/actions/init/createStudioConfig.js.map +1 -0
- package/dist/actions/init/determineAppTemplate.js +16 -0
- package/dist/actions/init/determineAppTemplate.js.map +1 -0
- package/dist/actions/init/env/createOrAppendEnvVars.js +25 -0
- package/dist/actions/init/env/createOrAppendEnvVars.js.map +1 -0
- package/dist/actions/init/env/parseAndUpdateEnvVars.js +42 -0
- package/dist/actions/init/env/parseAndUpdateEnvVars.js.map +1 -0
- package/dist/actions/init/env/writeEnvVarsToFile.js +49 -0
- package/dist/actions/init/env/writeEnvVarsToFile.js.map +1 -0
- package/dist/actions/init/fetchPostInitPrompt.js +30 -0
- package/dist/actions/init/fetchPostInitPrompt.js.map +1 -0
- package/dist/actions/init/git.js +65 -0
- package/dist/actions/init/git.js.map +1 -0
- package/dist/actions/init/processTemplate.js +56 -0
- package/dist/actions/init/processTemplate.js.map +1 -0
- package/dist/actions/init/remoteTemplate.js +211 -0
- package/dist/actions/init/remoteTemplate.js.map +1 -0
- package/dist/actions/init/resolvePackageManager.js +20 -0
- package/dist/actions/init/resolvePackageManager.js.map +1 -0
- package/dist/actions/init/templates/appQuickstart.js +28 -0
- package/dist/actions/init/templates/appQuickstart.js.map +1 -0
- package/dist/actions/init/templates/appSanityUi.js +30 -0
- package/dist/actions/init/templates/appSanityUi.js.map +1 -0
- package/dist/actions/init/templates/blog.js +4 -0
- package/dist/actions/init/templates/blog.js.map +1 -0
- package/dist/actions/init/templates/clean.js +4 -0
- package/dist/actions/init/templates/clean.js.map +1 -0
- package/dist/actions/init/templates/getStarted.js +35 -0
- package/dist/actions/init/templates/getStarted.js.map +1 -0
- package/dist/actions/init/templates/index.js +23 -0
- package/dist/actions/init/templates/index.js.map +1 -0
- package/dist/actions/init/templates/moviedb.js +34 -0
- package/dist/actions/init/templates/moviedb.js.map +1 -0
- package/dist/actions/init/templates/nextjs/index.js +213 -0
- package/dist/actions/init/templates/nextjs/index.js.map +1 -0
- package/dist/actions/init/templates/nextjs/schemaTypes/blog.js +247 -0
- package/dist/actions/init/templates/nextjs/schemaTypes/blog.js.map +1 -0
- package/dist/actions/init/templates/quickstart.js +4 -0
- package/dist/actions/init/templates/quickstart.js.map +1 -0
- package/dist/actions/init/templates/shopify.js +77 -0
- package/dist/actions/init/templates/shopify.js.map +1 -0
- package/dist/actions/init/templates/shopifyOnline.js +49 -0
- package/dist/actions/init/templates/shopifyOnline.js.map +1 -0
- package/dist/actions/init/types.js +3 -0
- package/dist/actions/init/types.js.map +1 -0
- package/dist/actions/init/updateInitialTemplateMetadata.js +17 -0
- package/dist/actions/init/updateInitialTemplateMetadata.js.map +1 -0
- package/dist/actions/manifest/SchemaIcon.js +21 -0
- package/dist/actions/manifest/SchemaIcon.js.map +1 -0
- package/dist/actions/manifest/extractAppManifest.js +51 -0
- package/dist/actions/manifest/extractAppManifest.js.map +1 -0
- package/dist/actions/manifest/extractManifest.js +93 -0
- package/dist/actions/manifest/extractManifest.js.map +1 -0
- package/dist/actions/manifest/extractWorkspaceManifest.js +406 -0
- package/dist/actions/manifest/extractWorkspaceManifest.js.map +1 -0
- package/dist/actions/manifest/purifyConfig.js +307 -0
- package/dist/actions/manifest/purifyConfig.js.map +1 -0
- package/dist/actions/manifest/schemaTypeHelpers.js +110 -0
- package/dist/actions/manifest/schemaTypeHelpers.js.map +1 -0
- package/dist/actions/manifest/types.js +5 -0
- package/dist/actions/manifest/types.js.map +1 -0
- package/dist/actions/mcp/detectAvailableEditors.js +75 -0
- package/dist/actions/mcp/detectAvailableEditors.js.map +1 -0
- package/dist/actions/mcp/editorConfigs.js +147 -0
- package/dist/actions/mcp/editorConfigs.js.map +1 -0
- package/dist/actions/mcp/promptForMCPSetup.js +24 -0
- package/dist/actions/mcp/promptForMCPSetup.js.map +1 -0
- package/dist/actions/mcp/setupMCP.js +88 -0
- package/dist/actions/mcp/setupMCP.js.map +1 -0
- package/dist/actions/mcp/types.js +3 -0
- package/dist/actions/mcp/types.js.map +1 -0
- package/dist/actions/mcp/writeMCPConfig.js +41 -0
- package/dist/actions/mcp/writeMCPConfig.js.map +1 -0
- package/dist/actions/media/__tests__/createMockClient.js +32 -0
- package/dist/actions/media/__tests__/createMockClient.js.map +1 -0
- package/dist/actions/media/getMediaLibraryConfig.js +5 -0
- package/dist/actions/media/getMediaLibraryConfig.js.map +1 -0
- package/dist/actions/media/importAspects.js +112 -0
- package/dist/actions/media/importAspects.js.map +1 -0
- package/dist/actions/media/importMedia.js +213 -0
- package/dist/actions/media/importMedia.js.map +1 -0
- package/dist/actions/media/importMediaDebug.js +4 -0
- package/dist/actions/media/importMediaDebug.js.map +1 -0
- package/dist/actions/organizations/getOrganization.js +67 -0
- package/dist/actions/organizations/getOrganization.js.map +1 -0
- package/dist/actions/organizations/getOrganizationChoices.js +23 -0
- package/dist/actions/organizations/getOrganizationChoices.js.map +1 -0
- package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.js +9 -0
- package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.js.map +1 -0
- package/dist/actions/organizations/hasProjectAttachGrant.js +24 -0
- package/dist/actions/organizations/hasProjectAttachGrant.js.map +1 -0
- package/dist/actions/organizations/validateOrganizationName.js +10 -0
- package/dist/actions/organizations/validateOrganizationName.js.map +1 -0
- package/dist/actions/preview/getPreviewServerConfig.js +16 -0
- package/dist/actions/preview/getPreviewServerConfig.js.map +1 -0
- package/dist/actions/preview/previewAction.js +20 -0
- package/dist/actions/preview/previewAction.js.map +1 -0
- package/dist/actions/preview/types.js +3 -0
- package/dist/actions/preview/types.js.map +1 -0
- package/dist/actions/projects/getManageUrl.js +7 -0
- package/dist/actions/projects/getManageUrl.js.map +1 -0
- package/dist/actions/projects/validateProjectName.js +11 -0
- package/dist/actions/projects/validateProjectName.js.map +1 -0
- package/dist/actions/schema/deleteSchemaAction.js +101 -0
- package/dist/actions/schema/deleteSchemaAction.js.map +1 -0
- package/dist/actions/schema/deploySchemas.js +98 -0
- package/dist/actions/schema/deploySchemas.js.map +1 -0
- package/dist/actions/schema/extractSanitySchema.worker.js +38 -0
- package/dist/actions/schema/extractSanitySchema.worker.js.map +1 -0
- package/dist/actions/schema/extractSchema.js +77 -0
- package/dist/actions/schema/extractSchema.js.map +1 -0
- package/dist/actions/schema/formatSchemaValidation.js +74 -0
- package/dist/actions/schema/formatSchemaValidation.js.map +1 -0
- package/dist/actions/schema/listSchemas.js +119 -0
- package/dist/actions/schema/listSchemas.js.map +1 -0
- package/dist/actions/schema/metafile.js +51 -0
- package/dist/actions/schema/metafile.js.map +1 -0
- package/dist/actions/schema/schemaStoreTypes.js +19 -0
- package/dist/actions/schema/schemaStoreTypes.js.map +1 -0
- package/dist/actions/schema/types.js +9 -0
- package/dist/actions/schema/types.js.map +1 -0
- package/dist/actions/schema/utils/debug.js +6 -0
- package/dist/actions/schema/utils/debug.js.map +1 -0
- package/dist/actions/schema/utils/extractValidationFromSchemaError.js +12 -0
- package/dist/actions/schema/utils/extractValidationFromSchemaError.js.map +1 -0
- package/dist/actions/schema/utils/manifestExtractor.js +33 -0
- package/dist/actions/schema/utils/manifestExtractor.js.map +1 -0
- package/dist/actions/schema/utils/manifestReader.js +71 -0
- package/dist/actions/schema/utils/manifestReader.js.map +1 -0
- package/dist/actions/schema/utils/schemaStoreOutStrings.js +11 -0
- package/dist/actions/schema/utils/schemaStoreOutStrings.js.map +1 -0
- package/dist/actions/schema/utils/schemaStoreValidation.js +108 -0
- package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -0
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js +9 -0
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -0
- package/dist/actions/schema/utils/workspaceSchemaId.js +23 -0
- package/dist/actions/schema/utils/workspaceSchemaId.js.map +1 -0
- package/dist/actions/schema/validateAction.js +71 -0
- package/dist/actions/schema/validateAction.js.map +1 -0
- package/dist/actions/schema/validateSchema.worker.js +124 -0
- package/dist/actions/schema/validateSchema.worker.js.map +1 -0
- package/dist/actions/telemetry/getLearnMoreMessage.js +15 -0
- package/dist/actions/telemetry/getLearnMoreMessage.js.map +1 -0
- package/dist/actions/telemetry/getStatusDisplay.js +26 -0
- package/dist/actions/telemetry/getStatusDisplay.js.map +1 -0
- package/dist/actions/telemetry/getStatusMessage.js +36 -0
- package/dist/actions/telemetry/getStatusMessage.js.map +1 -0
- package/dist/actions/telemetry/resolveConsent.js +48 -0
- package/dist/actions/telemetry/resolveConsent.js.map +1 -0
- package/dist/actions/telemetry/setConsent.js +83 -0
- package/dist/actions/telemetry/setConsent.js.map +1 -0
- package/dist/actions/telemetry/telemetryDebug.js +4 -0
- package/dist/actions/telemetry/telemetryDebug.js.map +1 -0
- package/dist/actions/telemetry/telemetryDisclosure.js +33 -0
- package/dist/actions/telemetry/telemetryDisclosure.js.map +1 -0
- package/dist/actions/telemetry/telemetryLearnMoreMessage.js +15 -0
- package/dist/actions/telemetry/telemetryLearnMoreMessage.js.map +1 -0
- package/dist/actions/tokens/constants.js +5 -0
- package/dist/actions/tokens/constants.js.map +1 -0
- package/dist/actions/tokens/types.js +3 -0
- package/dist/actions/tokens/types.js.map +1 -0
- package/dist/actions/tokens/validateRole.js +23 -0
- package/dist/actions/tokens/validateRole.js.map +1 -0
- package/dist/actions/undeploy/getStudioOrAppUserApplication.js +36 -0
- package/dist/actions/undeploy/getStudioOrAppUserApplication.js.map +1 -0
- package/dist/actions/users/getMembersForProject.js +47 -0
- package/dist/actions/users/getMembersForProject.js.map +1 -0
- package/dist/actions/users/getPendingInvitations.js +15 -0
- package/dist/actions/users/getPendingInvitations.js.map +1 -0
- package/dist/actions/users/types.js +3 -0
- package/dist/actions/users/types.js.map +1 -0
- package/dist/actions/users/usersDebug.js +4 -0
- package/dist/actions/users/usersDebug.js.map +1 -0
- package/dist/actions/users/validateEmail.js +14 -0
- package/dist/actions/users/validateEmail.js.map +1 -0
- package/dist/actions/versions/buildPackageArray.js +44 -0
- package/dist/actions/versions/buildPackageArray.js.map +1 -0
- package/dist/actions/versions/filterSanityModules.js +20 -0
- package/dist/actions/versions/filterSanityModules.js.map +1 -0
- package/dist/actions/versions/findSanityModulesVersions.js +47 -0
- package/dist/actions/versions/findSanityModulesVersions.js.map +1 -0
- package/dist/actions/versions/getFormatters.js +30 -0
- package/dist/actions/versions/getFormatters.js.map +1 -0
- package/dist/actions/versions/tryFindLatestVersion.js +21 -0
- package/dist/actions/versions/tryFindLatestVersion.js.map +1 -0
- package/dist/actions/versions/types.js +5 -0
- package/dist/actions/versions/types.js.map +1 -0
- package/dist/actions/versions/versionsDebug.js +4 -0
- package/dist/actions/versions/versionsDebug.js.map +1 -0
- package/dist/commands/backup/disable.js +94 -0
- package/dist/commands/backup/disable.js.map +1 -0
- package/dist/commands/backup/download.js +291 -0
- package/dist/commands/backup/download.js.map +1 -0
- package/dist/commands/backup/enable.js +99 -0
- package/dist/commands/backup/enable.js.map +1 -0
- package/dist/commands/backup/list.js +187 -0
- package/dist/commands/backup/list.js.map +1 -0
- package/dist/commands/build.js +82 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/codemod.js +141 -0
- package/dist/commands/codemod.js.map +1 -0
- package/dist/commands/cors/add.js +154 -0
- package/dist/commands/cors/add.js.map +1 -0
- package/dist/commands/cors/delete.js +90 -0
- package/dist/commands/cors/delete.js.map +1 -0
- package/dist/commands/cors/list.js +40 -0
- package/dist/commands/cors/list.js.map +1 -0
- package/dist/commands/dataset/alias/create.js +118 -0
- package/dist/commands/dataset/alias/create.js.map +1 -0
- package/dist/commands/dataset/alias/delete.js +88 -0
- package/dist/commands/dataset/alias/delete.js.map +1 -0
- package/dist/commands/dataset/alias/link.js +137 -0
- package/dist/commands/dataset/alias/link.js.map +1 -0
- package/dist/commands/dataset/alias/unlink.js +98 -0
- package/dist/commands/dataset/alias/unlink.js.map +1 -0
- package/dist/commands/dataset/copy.js +369 -0
- package/dist/commands/dataset/copy.js.map +1 -0
- package/dist/commands/dataset/create.js +106 -0
- package/dist/commands/dataset/create.js.map +1 -0
- package/dist/commands/dataset/delete.js +104 -0
- package/dist/commands/dataset/delete.js.map +1 -0
- package/dist/commands/dataset/export.js +271 -0
- package/dist/commands/dataset/export.js.map +1 -0
- package/dist/commands/dataset/import.js +3 -0
- package/dist/commands/dataset/import.js.map +1 -0
- package/dist/commands/dataset/list.js +50 -0
- package/dist/commands/dataset/list.js.map +1 -0
- package/dist/commands/dataset/visibility/get.js +55 -0
- package/dist/commands/dataset/visibility/get.js.map +1 -0
- package/dist/commands/dataset/visibility/set.js +88 -0
- package/dist/commands/dataset/visibility/set.js.map +1 -0
- package/dist/commands/debug.js +93 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/deploy.js +115 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.js +65 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/docs/browse.js +15 -0
- package/dist/commands/docs/browse.js.map +1 -0
- package/dist/commands/docs/read.js +81 -0
- package/dist/commands/docs/read.js.map +1 -0
- package/dist/commands/docs/search.js +111 -0
- package/dist/commands/docs/search.js.map +1 -0
- package/dist/commands/documents/create.js +338 -0
- package/dist/commands/documents/create.js.map +1 -0
- package/dist/commands/documents/delete.js +104 -0
- package/dist/commands/documents/delete.js.map +1 -0
- package/dist/commands/documents/get.js +85 -0
- package/dist/commands/documents/get.js.map +1 -0
- package/dist/commands/documents/query.js +105 -0
- package/dist/commands/documents/query.js.map +1 -0
- package/dist/commands/documents/validate.js +142 -0
- package/dist/commands/documents/validate.js.map +1 -0
- package/dist/commands/exec.js +54 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/graphql/deploy.js +429 -0
- package/dist/commands/graphql/deploy.js.map +1 -0
- package/dist/commands/graphql/list.js +53 -0
- package/dist/commands/graphql/list.js.map +1 -0
- package/dist/commands/graphql/undeploy.js +143 -0
- package/dist/commands/graphql/undeploy.js.map +1 -0
- package/dist/commands/hook/attempt.js +66 -0
- package/dist/commands/hook/attempt.js.map +1 -0
- package/dist/commands/hook/create.js +46 -0
- package/dist/commands/hook/create.js.map +1 -0
- package/dist/commands/hook/delete.js +86 -0
- package/dist/commands/hook/delete.js.map +1 -0
- package/dist/commands/hook/list.js +46 -0
- package/dist/commands/hook/list.js.map +1 -0
- package/dist/commands/hook/logs.js +184 -0
- package/dist/commands/hook/logs.js.map +1 -0
- package/dist/commands/init.js +1389 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.js +43 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/learn.js +15 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/login.js +50 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.js +37 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/manage.js +29 -0
- package/dist/commands/manage.js.map +1 -0
- package/dist/commands/manifest/extract.js +43 -0
- package/dist/commands/manifest/extract.js.map +1 -0
- package/dist/commands/mcp/configure.js +28 -0
- package/dist/commands/mcp/configure.js.map +1 -0
- package/dist/commands/media/create-aspect.js +88 -0
- package/dist/commands/media/create-aspect.js.map +1 -0
- package/dist/commands/media/delete-aspect.js +85 -0
- package/dist/commands/media/delete-aspect.js.map +1 -0
- package/dist/commands/media/deploy-aspect.js +151 -0
- package/dist/commands/media/deploy-aspect.js.map +1 -0
- package/dist/commands/media/export.js +210 -0
- package/dist/commands/media/export.js.map +1 -0
- package/dist/commands/media/import.js +160 -0
- package/dist/commands/media/import.js.map +1 -0
- package/dist/commands/openapi/get.js +83 -0
- package/dist/commands/openapi/get.js.map +1 -0
- package/dist/commands/openapi/list.js +80 -0
- package/dist/commands/openapi/list.js.map +1 -0
- package/dist/commands/preview.js +60 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/projects/create.js +181 -0
- package/dist/commands/projects/create.js.map +1 -0
- package/dist/commands/projects/list.js +76 -0
- package/dist/commands/projects/list.js.map +1 -0
- package/dist/commands/schema/delete.js +91 -0
- package/dist/commands/schema/delete.js.map +1 -0
- package/dist/commands/schema/deploy.js +98 -0
- package/dist/commands/schema/deploy.js.map +1 -0
- package/dist/commands/schema/extract.js +46 -0
- package/dist/commands/schema/extract.js.map +1 -0
- package/dist/commands/schema/list.js +104 -0
- package/dist/commands/schema/list.js.map +1 -0
- package/dist/commands/schema/validate.js +73 -0
- package/dist/commands/schema/validate.js.map +1 -0
- package/dist/commands/telemetry/disable.js +33 -0
- package/dist/commands/telemetry/disable.js.map +1 -0
- package/dist/commands/telemetry/enable.js +33 -0
- package/dist/commands/telemetry/enable.js.map +1 -0
- package/dist/commands/telemetry/status.js +25 -0
- package/dist/commands/telemetry/status.js.map +1 -0
- package/dist/commands/tokens/add.js +135 -0
- package/dist/commands/tokens/add.js.map +1 -0
- package/dist/commands/tokens/delete.js +107 -0
- package/dist/commands/tokens/delete.js.map +1 -0
- package/dist/commands/tokens/list.js +92 -0
- package/dist/commands/tokens/list.js.map +1 -0
- package/dist/commands/undeploy.js +93 -0
- package/dist/commands/undeploy.js.map +1 -0
- package/dist/commands/users/invite.js +100 -0
- package/dist/commands/users/invite.js.map +1 -0
- package/dist/commands/users/list.js +101 -0
- package/dist/commands/users/list.js.map +1 -0
- package/dist/commands/versions.js +27 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/config/createCliConfig.js +9 -0
- package/dist/config/createCliConfig.js.map +1 -0
- package/dist/config/defineCliConfig.js +5 -0
- package/dist/config/defineCliConfig.js.map +1 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js +22 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -0
- package/dist/hooks/prerun/injectEnvVariables.js +31 -0
- package/dist/hooks/prerun/injectEnvVariables.js.map +1 -0
- package/dist/hooks/prerun/setupTelemetry.js +72 -0
- package/dist/hooks/prerun/setupTelemetry.js.map +1 -0
- package/dist/hooks/prerun/warnings.js +6 -0
- package/dist/hooks/prerun/warnings.js.map +1 -0
- package/dist/index.d.ts +2326 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/init/nextjs.js +56 -0
- package/dist/prompts/init/nextjs.js.map +1 -0
- package/dist/prompts/init/promptForTypescript.js +9 -0
- package/dist/prompts/init/promptForTypescript.js.map +1 -0
- package/dist/prompts/promptForDataset.js +32 -0
- package/dist/prompts/promptForDataset.js.map +1 -0
- package/dist/prompts/promptForDatasetAclMode.js +27 -0
- package/dist/prompts/promptForDatasetAclMode.js.map +1 -0
- package/dist/prompts/promptForDatasetAliasName.js +17 -0
- package/dist/prompts/promptForDatasetAliasName.js.map +1 -0
- package/dist/prompts/promptForDatasetName.js +20 -0
- package/dist/prompts/promptForDatasetName.js.map +1 -0
- package/dist/prompts/promptForDefaultConfig.js +12 -0
- package/dist/prompts/promptForDefaultConfig.js.map +1 -0
- package/dist/prompts/promptForMediaLibrary.js +37 -0
- package/dist/prompts/promptForMediaLibrary.js.map +1 -0
- package/dist/prompts/promptForOrganizationName.js +11 -0
- package/dist/prompts/promptForOrganizationName.js.map +1 -0
- package/dist/prompts/promptForProjectName.js +11 -0
- package/dist/prompts/promptForProjectName.js.map +1 -0
- package/dist/prompts/selectDataset.js +12 -0
- package/dist/prompts/selectDataset.js.map +1 -0
- package/dist/prompts/selectMediaLibrary.js +34 -0
- package/dist/prompts/selectMediaLibrary.js.map +1 -0
- package/dist/server/devServer.js +53 -0
- package/dist/server/devServer.js.map +1 -0
- package/dist/server/gracefulServerDeath.js +12 -0
- package/dist/server/gracefulServerDeath.js.map +1 -0
- package/dist/server/previewServer.js +93 -0
- package/dist/server/previewServer.js.map +1 -0
- package/dist/server/serverDebug.js +4 -0
- package/dist/server/serverDebug.js.map +1 -0
- package/dist/server/vite/plugin-sanity-basepath-redirect.js +25 -0
- package/dist/server/vite/plugin-sanity-basepath-redirect.js.map +1 -0
- package/dist/server/vite/plugin-sanity-build-entries.js +65 -0
- package/dist/server/vite/plugin-sanity-build-entries.js.map +1 -0
- package/dist/server/vite/plugin-sanity-favicons.js +72 -0
- package/dist/server/vite/plugin-sanity-favicons.js.map +1 -0
- package/dist/server/vite/plugin-sanity-runtime-rewrite.js +18 -0
- package/dist/server/vite/plugin-sanity-runtime-rewrite.js.map +1 -0
- package/dist/services/auth.js +13 -0
- package/dist/services/auth.js.map +1 -0
- package/dist/services/backup.js +51 -0
- package/dist/services/backup.js.map +1 -0
- package/dist/services/cors.js +38 -0
- package/dist/services/cors.js.map +1 -0
- package/dist/services/datasetAliases.js +64 -0
- package/dist/services/datasetAliases.js.map +1 -0
- package/dist/services/datasets.js +153 -0
- package/dist/services/datasets.js.map +1 -0
- package/dist/services/docs.js +46 -0
- package/dist/services/docs.js.map +1 -0
- package/dist/services/documents.js +56 -0
- package/dist/services/documents.js.map +1 -0
- package/dist/services/getProjectFeatures.js +16 -0
- package/dist/services/getProjectFeatures.js.map +1 -0
- package/dist/services/getUrlHeaders.js +36 -0
- package/dist/services/getUrlHeaders.js.map +1 -0
- package/dist/services/graphql.js +96 -0
- package/dist/services/graphql.js.map +1 -0
- package/dist/services/hooks.js +59 -0
- package/dist/services/hooks.js.map +1 -0
- package/dist/services/mcp.js +50 -0
- package/dist/services/mcp.js.map +1 -0
- package/dist/services/mediaLibraries.js +74 -0
- package/dist/services/mediaLibraries.js.map +1 -0
- package/dist/services/organizations.js +42 -0
- package/dist/services/organizations.js.map +1 -0
- package/dist/services/plans.js +37 -0
- package/dist/services/plans.js.map +1 -0
- package/dist/services/projects.js +119 -0
- package/dist/services/projects.js.map +1 -0
- package/dist/services/schemas.js +40 -0
- package/dist/services/schemas.js.map +1 -0
- package/dist/services/telemetry.js +80 -0
- package/dist/services/telemetry.js.map +1 -0
- package/dist/services/tokens.js +72 -0
- package/dist/services/tokens.js.map +1 -0
- package/dist/services/user.js +35 -0
- package/dist/services/user.js.map +1 -0
- package/dist/services/userApplications.js +164 -0
- package/dist/services/userApplications.js.map +1 -0
- package/dist/studioDependencies.js +24 -0
- package/dist/studioDependencies.js.map +1 -0
- package/dist/telemetry/build.telemetry.js +13 -0
- package/dist/telemetry/build.telemetry.js.map +1 -0
- package/dist/telemetry/cli.telemetry.js +8 -0
- package/dist/telemetry/cli.telemetry.js.map +1 -0
- package/dist/telemetry/extractSchema.telemetry.js +8 -0
- package/dist/telemetry/extractSchema.telemetry.js.map +1 -0
- package/dist/telemetry/init.telemetry.js +8 -0
- package/dist/telemetry/init.telemetry.js.map +1 -0
- package/dist/telemetry/login.telemetry.js +8 -0
- package/dist/telemetry/login.telemetry.js.map +1 -0
- package/dist/telemetry/mcp.telemetry.js +8 -0
- package/dist/telemetry/mcp.telemetry.js.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/typings/deepSortObject.d.js +2 -0
- package/dist/typings/deepSortObject.d.js.map +1 -0
- package/dist/util/absolutify.js +26 -0
- package/dist/util/absolutify.js.map +1 -0
- package/dist/util/appId.js +58 -0
- package/dist/util/appId.js.map +1 -0
- package/dist/util/canLaunchBrowser.js +14 -0
- package/dist/util/canLaunchBrowser.js.map +1 -0
- package/dist/util/cliClient.js +41 -0
- package/dist/util/cliClient.js.map +1 -0
- package/dist/util/compareDependencyVersions.js +73 -0
- package/dist/util/compareDependencyVersions.js.map +1 -0
- package/dist/util/copy.js +37 -0
- package/dist/util/copy.js.map +1 -0
- package/dist/util/copyDir.js +63 -0
- package/dist/util/copyDir.js.map +1 -0
- package/dist/util/detectRuntime.js +20 -0
- package/dist/util/detectRuntime.js.map +1 -0
- package/dist/util/determineIsApp.js +9 -0
- package/dist/util/determineIsApp.js.map +1 -0
- package/dist/util/dirIsEmptyOrNonExistent.js +18 -0
- package/dist/util/dirIsEmptyOrNonExistent.js.map +1 -0
- package/dist/util/ensureTrailingSlash.js +12 -0
- package/dist/util/ensureTrailingSlash.js.map +1 -0
- package/dist/util/errorMessages.js +6 -0
- package/dist/util/errorMessages.js.map +1 -0
- package/dist/util/extractDocumentsFromNdjsonOrTarball.js +88 -0
- package/dist/util/extractDocumentsFromNdjsonOrTarball.js.map +1 -0
- package/dist/util/findNdjsonEntry.js +21 -0
- package/dist/util/findNdjsonEntry.js.map +1 -0
- package/dist/util/formatSize.js +10 -0
- package/dist/util/formatSize.js.map +1 -0
- package/dist/util/frameworkPort.js +61 -0
- package/dist/util/frameworkPort.js.map +1 -0
- package/dist/util/fsUtils.js +34 -0
- package/dist/util/fsUtils.js.map +1 -0
- package/dist/util/getCliVersion.js +28 -0
- package/dist/util/getCliVersion.js.map +1 -0
- package/dist/util/getErrorMessage.js +19 -0
- package/dist/util/getErrorMessage.js.map +1 -0
- package/dist/util/getLocalPackageVersion.js +32 -0
- package/dist/util/getLocalPackageVersion.js.map +1 -0
- package/dist/util/getProjectDefaults.js +77 -0
- package/dist/util/getProjectDefaults.js.map +1 -0
- package/dist/util/getSanityEnv.js +3 -0
- package/dist/util/getSanityEnv.js.map +1 -0
- package/dist/util/getSharedServerConfig.js +31 -0
- package/dist/util/getSharedServerConfig.js.map +1 -0
- package/dist/util/getWorkspace.js +18 -0
- package/dist/util/getWorkspace.js.map +1 -0
- package/dist/util/humanFileSize.js +12 -0
- package/dist/util/humanFileSize.js.map +1 -0
- package/dist/util/importStudioConfig.js +40 -0
- package/dist/util/importStudioConfig.js.map +1 -0
- package/dist/util/isPathDirName.js +6 -0
- package/dist/util/isPathDirName.js.map +1 -0
- package/dist/util/isSanityDocumentish.js +20 -0
- package/dist/util/isSanityDocumentish.js.map +1 -0
- package/dist/util/loadEnv.js +3 -0
- package/dist/util/loadEnv.js.map +1 -0
- package/dist/util/moduleFormatUtils.js +18 -0
- package/dist/util/moduleFormatUtils.js.map +1 -0
- package/dist/util/packageManager/installPackages.js +87 -0
- package/dist/util/packageManager/installPackages.js.map +1 -0
- package/dist/util/packageManager/packageManagerChoice.js +181 -0
- package/dist/util/packageManager/packageManagerChoice.js.map +1 -0
- package/dist/util/packageManager/upgradePackages.js +69 -0
- package/dist/util/packageManager/upgradePackages.js.map +1 -0
- package/dist/util/parseArguments.js +42 -0
- package/dist/util/parseArguments.js.map +1 -0
- package/dist/util/pluralize.js +11 -0
- package/dist/util/pluralize.js.map +1 -0
- package/dist/util/readModuleVersion.js +15 -0
- package/dist/util/readModuleVersion.js.map +1 -0
- package/dist/util/readPackageJson.js +44 -0
- package/dist/util/readPackageJson.js.map +1 -0
- package/dist/util/readPackageManifest.js +46 -0
- package/dist/util/readPackageManifest.js.map +1 -0
- package/dist/util/readdirRecursive.js +24 -0
- package/dist/util/readdirRecursive.js.map +1 -0
- package/dist/util/resolveLatestVersions.js +21 -0
- package/dist/util/resolveLatestVersions.js.map +1 -0
- package/dist/util/toInt.js +9 -0
- package/dist/util/toInt.js.map +1 -0
- package/dist/util/trimHashFromVersion.js +8 -0
- package/dist/util/trimHashFromVersion.js.map +1 -0
- package/dist/util/uniqBy.js +14 -0
- package/dist/util/uniqBy.js.map +1 -0
- package/dist/util/validation/validateDocumentsUtils.js +33 -0
- package/dist/util/validation/validateDocumentsUtils.js.map +1 -0
- package/dist/util/warnAboutMissingAppId.js +15 -0
- package/dist/util/warnAboutMissingAppId.js.map +1 -0
- package/dist/util/warnOnNonProductionEnvironment.js +18 -0
- package/dist/util/warnOnNonProductionEnvironment.js.map +1 -0
- package/dist/util/workerChannels.js +172 -0
- package/dist/util/workerChannels.js.map +1 -0
- package/oclif.config.js +21 -0
- package/oclif.manifest.json +4154 -0
- package/package.json +138 -98
- package/templates/app-quickstart/src/App.css +3 -1
- package/templates/app-quickstart/src/App.tsx +1 -1
- package/templates/app-sanity-ui/src/App.tsx +2 -2
- package/templates/app-sanity-ui/src/ExampleComponent.tsx +2 -1
- package/templates/get-started/plugins/sanity-plugin-tutorial/GetStartedTutorial.tsx +3 -3
- package/templates/get-started/plugins/sanity-plugin-tutorial/index.ts +2 -2
- package/templates/shopify/components/hotspots/ProductTooltip.tsx +1 -1
- package/templates/shopify/components/icons/Shopify.tsx +0 -2
- package/templates/shopify/components/inputs/CollectionHidden.tsx +0 -1
- package/templates/shopify/components/media/ColorTheme.tsx +1 -1
- package/templates/shopify/constants.ts +4 -4
- package/templates/shopify/plugins/customDocumentActions/index.ts +2 -2
- package/templates/shopify/plugins/customDocumentActions/shopifyDelete.tsx +1 -1
- package/templates/shopify/schemaTypes/documents/collection.tsx +1 -2
- package/templates/shopify/schemaTypes/documents/page.ts +1 -1
- package/templates/shopify/schemaTypes/documents/product.tsx +1 -1
- package/templates/shopify/schemaTypes/documents/productVariant.tsx +2 -3
- package/templates/shopify/schemaTypes/objects/customProductOption/customProductOptionColorObjectType.tsx +0 -1
- package/templates/shopify/schemaTypes/objects/hotspot/productHotspotsType.tsx +1 -3
- package/templates/shopify/schemaTypes/objects/module/collectionReferenceType.tsx +0 -1
- package/templates/shopify/schemaTypes/objects/shopify/placeholderStringType.ts +2 -3
- package/templates/shopify/schemaTypes/objects/shopify/productWithVariantType.tsx +1 -1
- package/templates/shopify/schemaTypes/objects/shopify/shopifyCollectionType.ts +1 -2
- package/templates/shopify/schemaTypes/objects/shopify/shopifyProductType.ts +1 -2
- package/templates/shopify/schemaTypes/portableText/portableTextType.tsx +7 -7
- package/templates/shopify/schemaTypes/singletons/homeType.ts +8 -8
- package/templates/shopify/structure/collectionStructure.ts +4 -1
- package/templates/shopify/structure/colorThemeStructure.ts +1 -1
- package/templates/shopify/structure/homeStructure.ts +2 -2
- package/templates/shopify/structure/index.ts +1 -1
- package/templates/shopify/structure/pageStructure.ts +2 -2
- package/templates/shopify/structure/productStructure.ts +7 -7
- package/templates/shopify/structure/settingStructure.ts +1 -1
- package/templates/shopify/utils/defineStructure.ts +1 -1
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/index.ts +1 -1
- package/templates/shopify-online-storefront/plugins/shopifyDocumentActions/shopifyDelete.tsx +1 -1
- package/templates/shopify-online-storefront/structure/collectionStructure.ts +4 -1
- package/templates/shopify-online-storefront/structure/productStructure.ts +4 -4
- package/templates/shopify-online-storefront/utils/defineStructure.ts +1 -1
- package/bin/dev.js +0 -30
- package/bin/sanity +0 -14
- package/lib/_chunks-cjs/cli.js +0 -70870
- package/lib/_chunks-cjs/cli.js.map +0 -1
- package/lib/_chunks-cjs/cliWorker.js +0 -19
- package/lib/_chunks-cjs/cliWorker.js.map +0 -1
- package/lib/_chunks-cjs/generateAction.js +0 -128
- package/lib/_chunks-cjs/generateAction.js.map +0 -1
- package/lib/_chunks-cjs/getCliConfig.js +0 -89
- package/lib/_chunks-cjs/getCliConfig.js.map +0 -1
- package/lib/_chunks-cjs/index.js +0 -31
- package/lib/_chunks-cjs/index.js.map +0 -1
- package/lib/_chunks-cjs/journeyConfig.js +0 -113
- package/lib/_chunks-cjs/journeyConfig.js.map +0 -1
- package/lib/_chunks-cjs/loadEnv.js +0 -347
- package/lib/_chunks-cjs/loadEnv.js.map +0 -1
- package/lib/_chunks-dts/types.d.ts +0 -432
- package/lib/cli.d.ts +0 -7
- package/lib/cli.js +0 -10
- package/lib/cli.js.map +0 -1
- package/lib/index.d.ts +0 -44
- package/lib/index.js +0 -46
- package/lib/index.js.map +0 -1
- package/lib/run.d.ts +0 -1
- package/lib/run.js +0 -8
- package/lib/run.js.map +0 -1
- package/lib/workers/getAndWriteJourneySchema.d.ts +0 -1
- package/lib/workers/getAndWriteJourneySchema.js +0 -4
- package/lib/workers/getAndWriteJourneySchema.js.map +0 -1
- package/lib/workers/getCliConfig.d.ts +0 -1
- package/lib/workers/getCliConfig.js +0 -10
- package/lib/workers/getCliConfig.js.map +0 -1
- package/lib/workers/typegenGenerate.d.ts +0 -18
- package/lib/workers/typegenGenerate.js +0 -47
- package/lib/workers/typegenGenerate.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/extractWorkspaceManifest.tsx"],"sourcesContent":["import {\n type ArraySchemaType,\n type BlockDefinition,\n type BooleanSchemaType,\n type CrossDatasetReferenceSchemaType,\n type FileSchemaType,\n type GlobalDocumentReferenceSchemaType,\n type MultiFieldSet,\n type NumberSchemaType,\n type ObjectField,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type Rule,\n type RuleSpec,\n type Schema,\n type SchemaType,\n type SchemaValidationValue,\n type SpanSchemaType,\n type StringSchemaType,\n} from '@sanity/types'\nimport DOMPurify from 'isomorphic-dompurify'\nimport startCase from 'lodash-es/startCase.js'\nimport {renderToString} from 'react-dom/server'\nimport {ConcreteRuleClass, createSchema, type Workspace} from 'sanity'\nimport {ServerStyleSheet} from 'styled-components'\n\nimport {config} from './purifyConfig.js'\nimport {SchemaIcon, type SchemaIconProps} from './SchemaIcon.js'\nimport {\n getCustomFields,\n getDefinedTypeName,\n isCrossDatasetReference,\n isCustomized,\n isDefined,\n isGlobalDocumentReference,\n isPrimitive,\n isRecord,\n isReference,\n isString,\n isType,\n} from './schemaTypeHelpers.js'\nimport {\n type CreateWorkspaceManifest,\n type ManifestField,\n type ManifestFieldset,\n type ManifestSchemaType,\n type ManifestSerializable,\n type ManifestTitledValue,\n type ManifestTool,\n type ManifestValidationGroup,\n type ManifestValidationRule,\n} from './types'\n\ninterface Context {\n schema: Schema\n}\n\ntype SchemaTypeKey =\n | 'group' // we strip this from fields\n | keyof ArraySchemaType\n | keyof BlockDefinition\n | keyof BooleanSchemaType\n | keyof FileSchemaType\n | keyof NumberSchemaType\n | keyof ObjectSchemaType\n | keyof ReferenceSchemaType\n | keyof StringSchemaType\n\ntype Validation = Record<string, never> | {validation: ManifestValidationGroup[]}\ntype ObjectFields = Record<string, never> | {fields: ManifestField[]}\ntype SerializableProp = ManifestSerializable | ManifestSerializable[] | undefined\ntype ManifestValidationFlag = ManifestValidationRule['flag']\ntype ValidationRuleTransformer = (rule: RuleSpec) => ManifestValidationRule | undefined\n\nconst MAX_CUSTOM_PROPERTY_DEPTH = 5\n\nexport function extractWorkspaceManifest(workspaces: Workspace[]): CreateWorkspaceManifest[] {\n return workspaces.map((workspace) => {\n const serializedSchema = extractManifestSchemaTypes(workspace.schema as Schema)\n const serializedTools = extractManifestTools(workspace.tools)\n\n return {\n basePath: workspace.basePath,\n dataset: workspace.dataset,\n icon: resolveIcon({\n icon: workspace.icon,\n subtitle: workspace.subtitle,\n title: workspace.title,\n }),\n mediaLibrary: workspace.mediaLibrary,\n name: workspace.name,\n projectId: workspace.projectId,\n schema: serializedSchema,\n subtitle: workspace.subtitle,\n title: workspace.title,\n tools: serializedTools,\n }\n })\n}\n\n/**\n * Extracts all serializable properties from userland schema types,\n * so they best-effort can be used as definitions for Schema.compile\n. */\nfunction extractManifestSchemaTypes(schema: Schema): ManifestSchemaType[] {\n const typeNames = schema.getTypeNames()\n const context = {schema}\n\n const studioDefaultTypeNames = createSchema({name: 'default', types: []}).getTypeNames()\n\n return typeNames\n .filter((typeName) => !studioDefaultTypeNames.includes(typeName))\n .map((typeName) => schema.get(typeName))\n .filter((type): type is SchemaType => type !== undefined)\n .map((type) => transformType(type, context))\n}\n\nfunction transformCommonTypeFields(\n type: SchemaType & {fieldset?: string},\n typeName: string,\n context: Context,\n): Omit<ManifestSchemaType, 'name' | 'title' | 'type'> {\n const arrayProps =\n typeName === 'array' && type.jsonType === 'array' ? transformArrayMember(type, context) : {}\n\n const referenceProps = isReference(type) ? transformReference(type) : {}\n const crossDatasetRefProps = isCrossDatasetReference(type)\n ? transformCrossDatasetReference(type)\n : {}\n const globalRefProps = isGlobalDocumentReference(type)\n ? transformGlobalDocumentReference(type)\n : {}\n\n const objectFields: ObjectFields =\n type.jsonType === 'object' && type.type && isCustomized(type)\n ? {\n fields: getCustomFields(type).map((objectField) => transformField(objectField, context)),\n }\n : {}\n\n return {\n ...retainCustomTypeProps(type),\n ...transformValidation(type.validation),\n ...ensureString('description', type.description),\n ...objectFields,\n ...arrayProps,\n ...referenceProps,\n ...crossDatasetRefProps,\n ...globalRefProps,\n ...ensureConditional('readOnly', type.readOnly),\n ...ensureConditional('hidden', type.hidden),\n ...transformFieldsets(type),\n // fieldset prop gets instrumented via getCustomFields\n ...ensureString('fieldset', type.fieldset),\n ...transformBlockType(type, context),\n }\n}\n\nfunction transformFieldsets(\n type: SchemaType,\n): Record<string, never> | {fieldsets: ManifestFieldset[]} {\n if (type.jsonType !== 'object') {\n return {}\n }\n const fieldsets = type.fieldsets\n ?.filter((fs): fs is MultiFieldSet => !fs.single)\n .map((fs) => {\n const options = isRecord(fs.options) ? {options: retainSerializableProps(fs.options)} : {}\n return {\n name: fs.name,\n ...ensureCustomTitle(fs.name, fs.title),\n ...ensureString('description', fs.description),\n ...ensureConditional('readOnly', fs.readOnly),\n ...ensureConditional('hidden', fs.hidden),\n ...options,\n }\n })\n\n return fieldsets?.length ? {fieldsets} : {}\n}\n\nfunction transformType(type: SchemaType, context: Context): ManifestSchemaType {\n const typeName = type.type ? type.type.name : type.jsonType\n\n return {\n ...transformCommonTypeFields(type, typeName, context),\n name: type.name,\n type: typeName,\n ...ensureCustomTitle(type.name, type.title),\n }\n}\n\nfunction retainCustomTypeProps(type: SchemaType): Record<string, SerializableProp> {\n const manuallySerializedFields = new Set<SchemaTypeKey>([\n '__experimental_actions',\n '__experimental_formPreviewTitle',\n '__experimental_omnisearch_visibility',\n '__experimental_search',\n 'components',\n 'description',\n 'fields',\n 'fieldsets',\n //only exists on fields\n 'group',\n 'groups',\n 'hidden',\n 'icon',\n 'jsonType',\n //explicitly added\n 'name',\n 'of',\n 'orderings',\n 'preview',\n 'readOnly',\n 'title',\n 'to',\n // not serialized\n 'type',\n 'validation',\n // we know about these, but let them be generically handled\n // deprecated\n // rows (from text)\n // initialValue\n // options\n // crossDatasetReference props\n ])\n const typeWithoutManuallyHandledFields = Object.fromEntries(\n Object.entries(type).filter(\n ([key]) => !manuallySerializedFields.has(key as unknown as SchemaTypeKey),\n ),\n )\n return retainSerializableProps(typeWithoutManuallyHandledFields) as Record<\n string,\n SerializableProp\n >\n}\n\nfunction retainSerializableProps(maybeSerializable: unknown, depth = 0): SerializableProp {\n if (depth > MAX_CUSTOM_PROPERTY_DEPTH) {\n return undefined\n }\n\n if (!isDefined(maybeSerializable)) {\n return undefined\n }\n\n if (isPrimitive(maybeSerializable)) {\n // cull empty strings\n if (maybeSerializable === '') {\n return undefined\n }\n return maybeSerializable\n }\n\n // url-schemes ect..\n if (maybeSerializable instanceof RegExp) {\n return maybeSerializable.toString()\n }\n\n if (Array.isArray(maybeSerializable)) {\n const arrayItems = maybeSerializable\n .map((item) => retainSerializableProps(item, depth + 1))\n .filter((item): item is ManifestSerializable => isDefined(item))\n return arrayItems.length > 0 ? arrayItems : undefined\n }\n\n if (isRecord(maybeSerializable)) {\n const serializableEntries = Object.entries(maybeSerializable)\n .map(([key, value]) => {\n return [key, retainSerializableProps(value, depth + 1)]\n })\n .filter(([, value]) => isDefined(value))\n return serializableEntries.length > 0 ? Object.fromEntries(serializableEntries) : undefined\n }\n\n return undefined\n}\n\nfunction transformField(field: ObjectField & {fieldset?: string}, context: Context): ManifestField {\n const fieldType = field.type\n const typeName = getDefinedTypeName(fieldType) ?? fieldType.name\n return {\n ...transformCommonTypeFields(fieldType, typeName, context),\n name: field.name,\n type: typeName,\n ...ensureCustomTitle(field.name, fieldType.title),\n // this prop gets added synthetically via getCustomFields\n ...ensureString('fieldset', field.fieldset),\n }\n}\n\nfunction transformArrayMember(\n arrayMember: ArraySchemaType,\n context: Context,\n): Pick<ManifestField, 'of'> {\n return {\n of: arrayMember.of.map((type) => {\n const typeName = getDefinedTypeName(type) ?? type.name\n return {\n ...transformCommonTypeFields(type, typeName, context),\n type: typeName,\n ...(typeName === type.name ? {} : {name: type.name}),\n ...ensureCustomTitle(type.name, type.title),\n }\n }),\n }\n}\n\nfunction transformReference(reference: ReferenceSchemaType): Pick<ManifestSchemaType, 'to'> {\n return {\n to: (reference.to ?? []).map((type) => {\n return {\n ...retainCustomTypeProps(type),\n type: type.name,\n }\n }),\n }\n}\n\nfunction transformCrossDatasetReference(\n reference: CrossDatasetReferenceSchemaType,\n): Pick<ManifestSchemaType, 'preview' | 'to'> {\n return {\n to: (reference.to ?? []).map((crossDataset) => {\n const preview = crossDataset.preview?.select\n ? {preview: {select: crossDataset.preview.select}}\n : {}\n return {\n type: crossDataset.type,\n ...ensureCustomTitle(crossDataset.type, crossDataset.title),\n ...preview,\n }\n }),\n }\n}\n\nfunction transformGlobalDocumentReference(\n reference: GlobalDocumentReferenceSchemaType,\n): Pick<ManifestSchemaType, 'preview' | 'to'> {\n return {\n to: (reference.to ?? []).map((crossDataset) => {\n const preview = crossDataset.preview?.select\n ? {preview: {select: crossDataset.preview.select}}\n : {}\n return {\n type: crossDataset.type,\n ...ensureCustomTitle(crossDataset.type, crossDataset.title),\n ...preview,\n }\n }),\n }\n}\n\nconst transformTypeValidationRule: ValidationRuleTransformer = (rule) => {\n return {\n ...rule,\n constraint:\n 'constraint' in rule &&\n (typeof rule.constraint === 'string'\n ? rule.constraint.toLowerCase()\n : retainSerializableProps(rule.constraint)),\n }\n}\n\nconst validationRuleTransformers: Partial<\n Record<ManifestValidationFlag, ValidationRuleTransformer>\n> = {\n type: transformTypeValidationRule,\n}\n\nfunction transformValidation(validation: SchemaValidationValue): Validation {\n const validationArray = (Array.isArray(validation) ? validation : [validation]).filter(\n (value): value is Rule => typeof value === 'object' && '_type' in value,\n )\n\n // we dont want type in the output as that is implicitly given by the typedef itself an will only bloat the payload\n const disallowedFlags = new Set(['type'])\n\n // Validation rules that refer to other fields use symbols, which cannot be serialized. It would\n // be possible to transform these to a serializable type, but we haven't implemented that for now.\n const disallowedConstraintTypes = new Set<symbol | unknown>([ConcreteRuleClass.FIELD_REF])\n\n const serializedValidation = validationArray\n .map(({_level, _message, _rules}) => {\n const message: Partial<Pick<ManifestValidationGroup, 'message'>> =\n typeof _message === 'string' ? {message: _message} : {}\n\n const serializedRules = _rules\n .filter((rule) => {\n if (!('constraint' in rule)) {\n return false\n }\n\n const {constraint, flag} = rule\n\n if (disallowedFlags.has(flag)) {\n return false\n }\n\n return !(\n typeof constraint === 'object' &&\n 'type' in constraint &&\n disallowedConstraintTypes.has(constraint.type)\n )\n })\n .map((rule) => {\n const transformer: ValidationRuleTransformer =\n validationRuleTransformers[rule.flag] ??\n ((spec) => retainSerializableProps(spec) as ManifestValidationRule)\n\n const transformedRule = transformer(rule)\n\n if (!transformedRule) {\n return\n }\n\n return transformedRule\n })\n .filter((rule) => rule !== undefined)\n\n return {\n level: _level,\n rules: serializedRules,\n ...message,\n }\n })\n .filter((group) => group.rules.length > 0)\n\n return serializedValidation.length > 0 ? {validation: serializedValidation} : {}\n}\n\nfunction ensureCustomTitle(typeName: string, value: unknown) {\n const titleObject = ensureString('title', value)\n\n const defaultTitle = startCase(typeName)\n // omit title if its the same as default, to reduce payload\n if (titleObject.title === defaultTitle) {\n return {}\n }\n return titleObject\n}\n\nfunction ensureString<Key extends string>(key: Key, value: unknown) {\n if (typeof value === 'string') {\n return {\n [key]: value,\n }\n }\n\n return {}\n}\n\nfunction ensureConditional<const Key extends string>(key: Key, value: unknown) {\n if (typeof value === 'boolean') {\n return {\n [key]: value,\n }\n }\n\n if (typeof value === 'function') {\n return {\n [key]: 'conditional',\n }\n }\n\n return {}\n}\n\nfunction transformBlockType(\n blockType: SchemaType,\n context: Context,\n): Pick<ManifestSchemaType, 'lists' | 'marks' | 'of' | 'styles'> | Record<string, never> {\n if (blockType.jsonType !== 'object' || !isType(blockType, 'block')) {\n return {}\n }\n\n const childrenField = blockType.fields?.find((field) => field.name === 'children') as\n | {type: ArraySchemaType}\n | undefined\n\n if (!childrenField) {\n return {}\n }\n const ofType = childrenField.type.of\n if (!ofType) {\n return {}\n }\n const spanType = ofType.find((memberType) => memberType.name === 'span') as\n | ObjectSchemaType\n | undefined\n if (!spanType) {\n return {}\n }\n const inlineObjectTypes = (ofType.filter((memberType) => memberType.name !== 'span') ||\n []) as ObjectSchemaType[]\n\n return {\n lists: resolveEnabledListItems(blockType),\n marks: {\n annotations: (spanType as SpanSchemaType).annotations.map((t) => transformType(t, context)),\n decorators: resolveEnabledDecorators(spanType),\n },\n of: inlineObjectTypes.map((t) => transformType(t, context)),\n styles: resolveEnabledStyles(blockType),\n }\n}\n\nfunction resolveEnabledStyles(blockType: ObjectSchemaType): ManifestTitledValue[] | undefined {\n const styleField = blockType.fields?.find((btField) => btField.name === 'style')\n return resolveTitleValueArray(styleField?.type?.options?.list)\n}\n\nfunction resolveEnabledDecorators(spanType: ObjectSchemaType): ManifestTitledValue[] | undefined {\n return 'decorators' in spanType ? resolveTitleValueArray(spanType.decorators) : undefined\n}\n\nfunction resolveEnabledListItems(blockType: ObjectSchemaType): ManifestTitledValue[] | undefined {\n const listField = blockType.fields?.find((btField) => btField.name === 'listItem')\n return resolveTitleValueArray(listField?.type?.options?.list)\n}\n\nfunction resolveTitleValueArray(possibleArray: unknown): ManifestTitledValue[] | undefined {\n if (!possibleArray || !Array.isArray(possibleArray)) {\n return undefined\n }\n const titledValues = possibleArray\n .filter(\n (d): d is {title?: string; value: string} => isRecord(d) && !!d.value && isString(d.value),\n )\n .map((item) => {\n return {\n value: item.value,\n ...ensureString('title', item.title),\n } satisfies ManifestTitledValue\n })\n if (!titledValues?.length) {\n return undefined\n }\n\n return titledValues\n}\n\nconst extractManifestTools = (tools: Workspace['tools']): ManifestTool[] =>\n tools.map((tool) => {\n const {\n __internalApplicationType: type,\n icon,\n name,\n title,\n } = tool as Workspace['tools'][number] & {__internalApplicationType: string}\n return {\n icon: resolveIcon({\n icon: icon as SchemaIconProps['icon'],\n title,\n }),\n name,\n title,\n type: type || null,\n } satisfies ManifestTool\n })\n\nconst resolveIcon = (props: SchemaIconProps): string | null => {\n const sheet = new ServerStyleSheet()\n\n try {\n /**\n * You must render the element first so\n * the style-sheet above can be populated\n */\n const element = renderToString(sheet.collectStyles(<SchemaIcon {...props} />))\n const styleTags = sheet.getStyleTags()\n\n /**\n * We can then create a single string\n * of HTML combining our styles and element\n * before purifying below.\n */\n const html = `${styleTags}${element}`.trim()\n\n return DOMPurify.sanitize(html, config)\n } catch {\n return null\n } finally {\n sheet.seal()\n }\n}\n"],"names":["DOMPurify","startCase","renderToString","ConcreteRuleClass","createSchema","ServerStyleSheet","config","SchemaIcon","getCustomFields","getDefinedTypeName","isCrossDatasetReference","isCustomized","isDefined","isGlobalDocumentReference","isPrimitive","isRecord","isReference","isString","isType","MAX_CUSTOM_PROPERTY_DEPTH","extractWorkspaceManifest","workspaces","map","workspace","serializedSchema","extractManifestSchemaTypes","schema","serializedTools","extractManifestTools","tools","basePath","dataset","icon","resolveIcon","subtitle","title","mediaLibrary","name","projectId","typeNames","getTypeNames","context","studioDefaultTypeNames","types","filter","typeName","includes","get","type","undefined","transformType","transformCommonTypeFields","arrayProps","jsonType","transformArrayMember","referenceProps","transformReference","crossDatasetRefProps","transformCrossDatasetReference","globalRefProps","transformGlobalDocumentReference","objectFields","fields","objectField","transformField","retainCustomTypeProps","transformValidation","validation","ensureString","description","ensureConditional","readOnly","hidden","transformFieldsets","fieldset","transformBlockType","fieldsets","fs","single","options","retainSerializableProps","ensureCustomTitle","length","manuallySerializedFields","Set","typeWithoutManuallyHandledFields","Object","fromEntries","entries","key","has","maybeSerializable","depth","RegExp","toString","Array","isArray","arrayItems","item","serializableEntries","value","field","fieldType","arrayMember","of","reference","to","crossDataset","preview","select","transformTypeValidationRule","rule","constraint","toLowerCase","validationRuleTransformers","validationArray","disallowedFlags","disallowedConstraintTypes","FIELD_REF","serializedValidation","_level","_message","_rules","message","serializedRules","flag","transformer","spec","transformedRule","level","rules","group","titleObject","defaultTitle","blockType","childrenField","find","ofType","spanType","memberType","inlineObjectTypes","lists","resolveEnabledListItems","marks","annotations","t","decorators","resolveEnabledDecorators","styles","resolveEnabledStyles","styleField","btField","resolveTitleValueArray","list","listField","possibleArray","titledValues","d","tool","__internalApplicationType","props","sheet","element","collectStyles","styleTags","getStyleTags","html","trim","sanitize","seal"],"mappings":"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"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file maintains our sanitization configuration for DOMPurify.
|
|
3
|
+
* We use an allowlist for tags and attributes to ensure that only safe
|
|
4
|
+
* elements and attributes are allowed.
|
|
5
|
+
*
|
|
6
|
+
* This is easier to loosen as specs develop & use-cases are discovered.
|
|
7
|
+
*/ ///////// Tags
|
|
8
|
+
const HTML_TAGS = [
|
|
9
|
+
'img',
|
|
10
|
+
'style'
|
|
11
|
+
];
|
|
12
|
+
const SVG_TAGS = [
|
|
13
|
+
'svg',
|
|
14
|
+
'a',
|
|
15
|
+
'altglyph',
|
|
16
|
+
'altglyphdef',
|
|
17
|
+
'altglyphitem',
|
|
18
|
+
'animatecolor',
|
|
19
|
+
'animatemotion',
|
|
20
|
+
'animatetransform',
|
|
21
|
+
'circle',
|
|
22
|
+
'clippath',
|
|
23
|
+
'defs',
|
|
24
|
+
'desc',
|
|
25
|
+
'ellipse',
|
|
26
|
+
'filter',
|
|
27
|
+
'font',
|
|
28
|
+
'g',
|
|
29
|
+
'glyph',
|
|
30
|
+
'glyphref',
|
|
31
|
+
'hkern',
|
|
32
|
+
'image',
|
|
33
|
+
'line',
|
|
34
|
+
'lineargradient',
|
|
35
|
+
'marker',
|
|
36
|
+
'mask',
|
|
37
|
+
'metadata',
|
|
38
|
+
'mpath',
|
|
39
|
+
'path',
|
|
40
|
+
'pattern',
|
|
41
|
+
'polygon',
|
|
42
|
+
'polyline',
|
|
43
|
+
'radialgradient',
|
|
44
|
+
'rect',
|
|
45
|
+
'stop',
|
|
46
|
+
'style',
|
|
47
|
+
'switch',
|
|
48
|
+
'symbol',
|
|
49
|
+
'text',
|
|
50
|
+
'textpath',
|
|
51
|
+
'title',
|
|
52
|
+
'tref',
|
|
53
|
+
'tspan',
|
|
54
|
+
'view',
|
|
55
|
+
'vkern'
|
|
56
|
+
];
|
|
57
|
+
const SVG_FILTER_TAGS = [
|
|
58
|
+
'feBlend',
|
|
59
|
+
'feColorMatrix',
|
|
60
|
+
'feComponentTransfer',
|
|
61
|
+
'feComposite',
|
|
62
|
+
'feConvolveMatrix',
|
|
63
|
+
'feDiffuseLighting',
|
|
64
|
+
'feDisplacementMap',
|
|
65
|
+
'feDistantLight',
|
|
66
|
+
'feDropShadow',
|
|
67
|
+
'feFlood',
|
|
68
|
+
'feFuncA',
|
|
69
|
+
'feFuncB',
|
|
70
|
+
'feFuncG',
|
|
71
|
+
'feFuncR',
|
|
72
|
+
'feGaussianBlur',
|
|
73
|
+
'feImage',
|
|
74
|
+
'feMerge',
|
|
75
|
+
'feMergeNode',
|
|
76
|
+
'feMorphology',
|
|
77
|
+
'feOffset',
|
|
78
|
+
'fePointLight',
|
|
79
|
+
'feSpecularLighting',
|
|
80
|
+
'feSpotLight',
|
|
81
|
+
'feTile',
|
|
82
|
+
'feTurbulence'
|
|
83
|
+
];
|
|
84
|
+
const ALLOWED_TAGS = [
|
|
85
|
+
...SVG_TAGS,
|
|
86
|
+
...HTML_TAGS,
|
|
87
|
+
...SVG_FILTER_TAGS
|
|
88
|
+
];
|
|
89
|
+
///////// Attributes
|
|
90
|
+
const HTML_ATTRIBUTES = [
|
|
91
|
+
'alt',
|
|
92
|
+
'class',
|
|
93
|
+
'crossorigin',
|
|
94
|
+
'decoding',
|
|
95
|
+
'elementtiming',
|
|
96
|
+
'fetchpriority',
|
|
97
|
+
'height',
|
|
98
|
+
'loading',
|
|
99
|
+
'src',
|
|
100
|
+
'srcset',
|
|
101
|
+
'style',
|
|
102
|
+
'width'
|
|
103
|
+
];
|
|
104
|
+
const SVG_ATTRIBUTES = [
|
|
105
|
+
'accent-height',
|
|
106
|
+
'accumulate',
|
|
107
|
+
'additive',
|
|
108
|
+
'alignment-baseline',
|
|
109
|
+
'amplitude',
|
|
110
|
+
'ascent',
|
|
111
|
+
'attributename',
|
|
112
|
+
'attributetype',
|
|
113
|
+
'azimuth',
|
|
114
|
+
'basefrequency',
|
|
115
|
+
'baseline-shift',
|
|
116
|
+
'begin',
|
|
117
|
+
'bias',
|
|
118
|
+
'by',
|
|
119
|
+
'class',
|
|
120
|
+
'clip',
|
|
121
|
+
'clippathunits',
|
|
122
|
+
'clip-path',
|
|
123
|
+
'clip-rule',
|
|
124
|
+
'color',
|
|
125
|
+
'color-interpolation',
|
|
126
|
+
'color-interpolation-filters',
|
|
127
|
+
'color-profile',
|
|
128
|
+
'color-rendering',
|
|
129
|
+
'cx',
|
|
130
|
+
'cy',
|
|
131
|
+
'd',
|
|
132
|
+
'dx',
|
|
133
|
+
'dy',
|
|
134
|
+
'diffuseconstant',
|
|
135
|
+
'direction',
|
|
136
|
+
'display',
|
|
137
|
+
'divisor',
|
|
138
|
+
'dur',
|
|
139
|
+
'edgemode',
|
|
140
|
+
'elevation',
|
|
141
|
+
'end',
|
|
142
|
+
'exponent',
|
|
143
|
+
'fill',
|
|
144
|
+
'fill-opacity',
|
|
145
|
+
'fill-rule',
|
|
146
|
+
'filter',
|
|
147
|
+
'filterunits',
|
|
148
|
+
'flood-color',
|
|
149
|
+
'flood-opacity',
|
|
150
|
+
'font-family',
|
|
151
|
+
'font-size',
|
|
152
|
+
'font-size-adjust',
|
|
153
|
+
'font-stretch',
|
|
154
|
+
'font-style',
|
|
155
|
+
'font-variant',
|
|
156
|
+
'font-weight',
|
|
157
|
+
'fx',
|
|
158
|
+
'fy',
|
|
159
|
+
'g1',
|
|
160
|
+
'g2',
|
|
161
|
+
'glyph-name',
|
|
162
|
+
'glyphref',
|
|
163
|
+
'gradientunits',
|
|
164
|
+
'gradienttransform',
|
|
165
|
+
'height',
|
|
166
|
+
'href',
|
|
167
|
+
'id',
|
|
168
|
+
'image-rendering',
|
|
169
|
+
'in',
|
|
170
|
+
'in2',
|
|
171
|
+
'intercept',
|
|
172
|
+
'k',
|
|
173
|
+
'k1',
|
|
174
|
+
'k2',
|
|
175
|
+
'k3',
|
|
176
|
+
'k4',
|
|
177
|
+
'kerning',
|
|
178
|
+
'keypoints',
|
|
179
|
+
'keysplines',
|
|
180
|
+
'keytimes',
|
|
181
|
+
'lang',
|
|
182
|
+
'lengthadjust',
|
|
183
|
+
'letter-spacing',
|
|
184
|
+
'kernelmatrix',
|
|
185
|
+
'kernelunitlength',
|
|
186
|
+
'lighting-color',
|
|
187
|
+
'local',
|
|
188
|
+
'marker-end',
|
|
189
|
+
'marker-mid',
|
|
190
|
+
'marker-start',
|
|
191
|
+
'markerheight',
|
|
192
|
+
'markerunits',
|
|
193
|
+
'markerwidth',
|
|
194
|
+
'maskcontentunits',
|
|
195
|
+
'maskunits',
|
|
196
|
+
'max',
|
|
197
|
+
'mask',
|
|
198
|
+
'media',
|
|
199
|
+
'method',
|
|
200
|
+
'mode',
|
|
201
|
+
'min',
|
|
202
|
+
'name',
|
|
203
|
+
'numoctaves',
|
|
204
|
+
'offset',
|
|
205
|
+
'operator',
|
|
206
|
+
'opacity',
|
|
207
|
+
'order',
|
|
208
|
+
'orient',
|
|
209
|
+
'orientation',
|
|
210
|
+
'origin',
|
|
211
|
+
'overflow',
|
|
212
|
+
'paint-order',
|
|
213
|
+
'path',
|
|
214
|
+
'pathlength',
|
|
215
|
+
'patterncontentunits',
|
|
216
|
+
'patterntransform',
|
|
217
|
+
'patternunits',
|
|
218
|
+
'points',
|
|
219
|
+
'preservealpha',
|
|
220
|
+
'preserveaspectratio',
|
|
221
|
+
'primitiveunits',
|
|
222
|
+
'r',
|
|
223
|
+
'rx',
|
|
224
|
+
'ry',
|
|
225
|
+
'radius',
|
|
226
|
+
'refx',
|
|
227
|
+
'refy',
|
|
228
|
+
'repeatcount',
|
|
229
|
+
'repeatdur',
|
|
230
|
+
'restart',
|
|
231
|
+
'result',
|
|
232
|
+
'rotate',
|
|
233
|
+
'scale',
|
|
234
|
+
'seed',
|
|
235
|
+
'shape-rendering',
|
|
236
|
+
'slope',
|
|
237
|
+
'specularconstant',
|
|
238
|
+
'specularexponent',
|
|
239
|
+
'spreadmethod',
|
|
240
|
+
'startoffset',
|
|
241
|
+
'stddeviation',
|
|
242
|
+
'stitchtiles',
|
|
243
|
+
'stop-color',
|
|
244
|
+
'stop-opacity',
|
|
245
|
+
'stroke-dasharray',
|
|
246
|
+
'stroke-dashoffset',
|
|
247
|
+
'stroke-linecap',
|
|
248
|
+
'stroke-linejoin',
|
|
249
|
+
'stroke-miterlimit',
|
|
250
|
+
'stroke-opacity',
|
|
251
|
+
'stroke',
|
|
252
|
+
'stroke-width',
|
|
253
|
+
'style',
|
|
254
|
+
'surfacescale',
|
|
255
|
+
'systemlanguage',
|
|
256
|
+
'tabindex',
|
|
257
|
+
'tablevalues',
|
|
258
|
+
'targetx',
|
|
259
|
+
'targety',
|
|
260
|
+
'transform',
|
|
261
|
+
'transform-origin',
|
|
262
|
+
'text-anchor',
|
|
263
|
+
'text-decoration',
|
|
264
|
+
'text-rendering',
|
|
265
|
+
'textlength',
|
|
266
|
+
'type',
|
|
267
|
+
'u1',
|
|
268
|
+
'u2',
|
|
269
|
+
'unicode',
|
|
270
|
+
'values',
|
|
271
|
+
'viewbox',
|
|
272
|
+
'visibility',
|
|
273
|
+
'version',
|
|
274
|
+
'vert-adv-y',
|
|
275
|
+
'vert-origin-x',
|
|
276
|
+
'vert-origin-y',
|
|
277
|
+
'width',
|
|
278
|
+
'word-spacing',
|
|
279
|
+
'wrap',
|
|
280
|
+
'writing-mode',
|
|
281
|
+
'xchannelselector',
|
|
282
|
+
'ychannelselector',
|
|
283
|
+
'x',
|
|
284
|
+
'x1',
|
|
285
|
+
'x2',
|
|
286
|
+
'xmlns',
|
|
287
|
+
'y',
|
|
288
|
+
'y1',
|
|
289
|
+
'y2',
|
|
290
|
+
'z',
|
|
291
|
+
'zoomandpan'
|
|
292
|
+
];
|
|
293
|
+
const ALLOWED_ATTR = [
|
|
294
|
+
...SVG_ATTRIBUTES,
|
|
295
|
+
...HTML_ATTRIBUTES
|
|
296
|
+
];
|
|
297
|
+
const config = {
|
|
298
|
+
ALLOWED_ATTR,
|
|
299
|
+
ALLOWED_TAGS,
|
|
300
|
+
/**
|
|
301
|
+
* Required to allow for the use of `style` tags,
|
|
302
|
+
* namely rendering the style tags from `styled-components`
|
|
303
|
+
*/ FORCE_BODY: true
|
|
304
|
+
};
|
|
305
|
+
export { config };
|
|
306
|
+
|
|
307
|
+
//# sourceMappingURL=purifyConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/purifyConfig.ts"],"sourcesContent":["import {type Config} from 'isomorphic-dompurify'\n\n/**\n * This file maintains our sanitization configuration for DOMPurify.\n * We use an allowlist for tags and attributes to ensure that only safe\n * elements and attributes are allowed.\n *\n * This is easier to loosen as specs develop & use-cases are discovered.\n */\n\n///////// Tags\n\nconst HTML_TAGS = ['img', 'style']\n\nconst SVG_TAGS = [\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const\n\nconst SVG_FILTER_TAGS = [\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const\n\nconst ALLOWED_TAGS: Config['ALLOWED_TAGS'] = [...SVG_TAGS, ...HTML_TAGS, ...SVG_FILTER_TAGS]\n\n///////// Attributes\n\nconst HTML_ATTRIBUTES = [\n 'alt',\n 'class',\n 'crossorigin',\n 'decoding',\n 'elementtiming',\n 'fetchpriority',\n 'height',\n 'loading',\n 'src',\n 'srcset',\n 'style',\n 'width',\n]\n\nconst SVG_ATTRIBUTES = [\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const\n\nconst ALLOWED_ATTR: Config['ALLOWED_ATTR'] = [...SVG_ATTRIBUTES, ...HTML_ATTRIBUTES]\n\nconst config = {\n ALLOWED_ATTR,\n ALLOWED_TAGS,\n /**\n * Required to allow for the use of `style` tags,\n * namely rendering the style tags from `styled-components`\n */\n FORCE_BODY: true,\n} satisfies Config\n\nexport {config}\n"],"names":["HTML_TAGS","SVG_TAGS","SVG_FILTER_TAGS","ALLOWED_TAGS","HTML_ATTRIBUTES","SVG_ATTRIBUTES","ALLOWED_ATTR","config","FORCE_BODY"],"mappings":"AAEA;;;;;;CAMC,GAED,cAAc;AAEd,MAAMA,YAAY;IAAC;IAAO;CAAQ;AAElC,MAAMC,WAAW;IACf;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,kBAAkB;IACtB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,eAAuC;OAAIF;OAAaD;OAAcE;CAAgB;AAE5F,oBAAoB;AAEpB,MAAME,kBAAkB;IACtB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,iBAAiB;IACrB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,eAAuC;OAAID;OAAmBD;CAAgB;AAEpF,MAAMG,SAAS;IACbD;IACAH;IACA;;;GAGC,GACDK,YAAY;AACd;AAEA,SAAQD,MAAM,GAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
const DEFAULT_IMAGE_FIELDS = new Set([
|
|
2
|
+
'asset',
|
|
3
|
+
'crop',
|
|
4
|
+
'hotspot',
|
|
5
|
+
'media'
|
|
6
|
+
]);
|
|
7
|
+
const DEFAULT_FILE_FIELDS = new Set([
|
|
8
|
+
'asset',
|
|
9
|
+
'media'
|
|
10
|
+
]);
|
|
11
|
+
const DEFAULT_GEOPOINT_FIELDS = new Set([
|
|
12
|
+
'alt',
|
|
13
|
+
'lat',
|
|
14
|
+
'lng'
|
|
15
|
+
]);
|
|
16
|
+
const DEFAULT_SLUG_FIELDS = new Set([
|
|
17
|
+
'current',
|
|
18
|
+
'source'
|
|
19
|
+
]);
|
|
20
|
+
export function getCustomFields(type) {
|
|
21
|
+
const fields = type.fieldsets ? type.fieldsets.flatMap((fs)=>{
|
|
22
|
+
if (fs.single) {
|
|
23
|
+
return fs.field;
|
|
24
|
+
}
|
|
25
|
+
return fs.fields.map((field)=>({
|
|
26
|
+
...field,
|
|
27
|
+
fieldset: fs.name
|
|
28
|
+
}));
|
|
29
|
+
}) : type.fields;
|
|
30
|
+
if (isType(type, 'block')) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
if (isType(type, 'slug')) {
|
|
34
|
+
return fields.filter((f)=>!DEFAULT_SLUG_FIELDS.has(f.name));
|
|
35
|
+
}
|
|
36
|
+
if (isType(type, 'geopoint')) {
|
|
37
|
+
return fields.filter((f)=>!DEFAULT_GEOPOINT_FIELDS.has(f.name));
|
|
38
|
+
}
|
|
39
|
+
if (isType(type, 'image')) {
|
|
40
|
+
return fields.filter((f)=>!DEFAULT_IMAGE_FIELDS.has(f.name));
|
|
41
|
+
}
|
|
42
|
+
if (isType(type, 'file')) {
|
|
43
|
+
return fields.filter((f)=>!DEFAULT_FILE_FIELDS.has(f.name));
|
|
44
|
+
}
|
|
45
|
+
return fields;
|
|
46
|
+
}
|
|
47
|
+
export function isReference(type) {
|
|
48
|
+
return isType(type, 'reference');
|
|
49
|
+
}
|
|
50
|
+
export function isCrossDatasetReference(type) {
|
|
51
|
+
return isType(type, 'crossDatasetReference');
|
|
52
|
+
}
|
|
53
|
+
export function isGlobalDocumentReference(type) {
|
|
54
|
+
return isType(type, 'globalDocumentReference');
|
|
55
|
+
}
|
|
56
|
+
function isObjectField(maybeOjectField) {
|
|
57
|
+
return typeof maybeOjectField === 'object' && maybeOjectField !== null && 'name' in maybeOjectField;
|
|
58
|
+
}
|
|
59
|
+
export function isCustomized(maybeCustomized) {
|
|
60
|
+
const internalOwnProps = getSchemaTypeInternalOwnProps(maybeCustomized);
|
|
61
|
+
const hasFieldsArray = isObjectField(maybeCustomized) && !isReference(maybeCustomized) && !isCrossDatasetReference(maybeCustomized) && !isGlobalDocumentReference(maybeCustomized) && 'fields' in maybeCustomized && Array.isArray(maybeCustomized.fields) && // needed to differentiate inline, named array object types from globally defined types
|
|
62
|
+
// we only consider it customized if the _definition_ has fields declared
|
|
63
|
+
// this holds for all customizable object-like types: object, document, image and file
|
|
64
|
+
internalOwnProps?.fields;
|
|
65
|
+
if (!hasFieldsArray) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const fields = getCustomFields(maybeCustomized);
|
|
69
|
+
return fields.length > 0;
|
|
70
|
+
}
|
|
71
|
+
export function isType(schemaType, typeName) {
|
|
72
|
+
if (schemaType.name === typeName) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
if (!schemaType.type) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return isType(schemaType.type, typeName);
|
|
79
|
+
}
|
|
80
|
+
export function isDefined(value) {
|
|
81
|
+
return value !== null && value !== undefined;
|
|
82
|
+
}
|
|
83
|
+
export function isRecord(value) {
|
|
84
|
+
return !!value && typeof value === 'object';
|
|
85
|
+
}
|
|
86
|
+
export function isPrimitive(value) {
|
|
87
|
+
return isString(value) || isBoolean(value) || isNumber(value);
|
|
88
|
+
}
|
|
89
|
+
export function isString(value) {
|
|
90
|
+
return typeof value === 'string';
|
|
91
|
+
}
|
|
92
|
+
function isNumber(value) {
|
|
93
|
+
return typeof value === 'boolean';
|
|
94
|
+
}
|
|
95
|
+
function isBoolean(value) {
|
|
96
|
+
return typeof value === 'number';
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* _internal_ownProps contains the _definition_ for the type.
|
|
100
|
+
* Without it we cannot differentiate inline array item types from globally defined types in array.of
|
|
101
|
+
*/ function getSchemaTypeInternalOwnProps(type) {
|
|
102
|
+
return type?._internal_ownProps;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* This allows us to differentiate inline array.of type definitions vs global type names on compiled schema types
|
|
106
|
+
*/ export function getDefinedTypeName(type) {
|
|
107
|
+
return getSchemaTypeInternalOwnProps(type)?.type;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
//# sourceMappingURL=schemaTypeHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/schemaTypeHelpers.ts"],"sourcesContent":["import {\n type CrossDatasetReferenceSchemaType,\n type GlobalDocumentReferenceSchemaType,\n type ObjectField,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type SchemaType,\n} from '@sanity/types'\n\nconst DEFAULT_IMAGE_FIELDS = new Set(['asset', 'crop', 'hotspot', 'media'])\nconst DEFAULT_FILE_FIELDS = new Set(['asset', 'media'])\nconst DEFAULT_GEOPOINT_FIELDS = new Set(['alt', 'lat', 'lng'])\nconst DEFAULT_SLUG_FIELDS = new Set(['current', 'source'])\n\ntype InternalOwnProps = {fields?: unknown[]; name?: string; type?: string}\n\nexport function getCustomFields(type: ObjectSchemaType): (ObjectField & {fieldset?: string})[] {\n const fields = type.fieldsets\n ? type.fieldsets.flatMap((fs) => {\n if (fs.single) {\n return fs.field\n }\n return fs.fields.map((field) => ({\n ...field,\n fieldset: fs.name,\n }))\n })\n : type.fields\n\n if (isType(type, 'block')) {\n return []\n }\n if (isType(type, 'slug')) {\n return fields.filter((f) => !DEFAULT_SLUG_FIELDS.has(f.name))\n }\n if (isType(type, 'geopoint')) {\n return fields.filter((f) => !DEFAULT_GEOPOINT_FIELDS.has(f.name))\n }\n if (isType(type, 'image')) {\n return fields.filter((f) => !DEFAULT_IMAGE_FIELDS.has(f.name))\n }\n if (isType(type, 'file')) {\n return fields.filter((f) => !DEFAULT_FILE_FIELDS.has(f.name))\n }\n return fields\n}\n\nexport function isReference(type: SchemaType): type is ReferenceSchemaType {\n return isType(type, 'reference')\n}\n\nexport function isCrossDatasetReference(type: SchemaType): type is CrossDatasetReferenceSchemaType {\n return isType(type, 'crossDatasetReference')\n}\n\nexport function isGlobalDocumentReference(\n type: SchemaType,\n): type is GlobalDocumentReferenceSchemaType {\n return isType(type, 'globalDocumentReference')\n}\n\nfunction isObjectField(maybeOjectField: unknown): boolean {\n return (\n typeof maybeOjectField === 'object' && maybeOjectField !== null && 'name' in maybeOjectField\n )\n}\n\nexport function isCustomized(maybeCustomized: SchemaType): boolean {\n const internalOwnProps = getSchemaTypeInternalOwnProps(maybeCustomized)\n\n const hasFieldsArray =\n isObjectField(maybeCustomized) &&\n !isReference(maybeCustomized) &&\n !isCrossDatasetReference(maybeCustomized) &&\n !isGlobalDocumentReference(maybeCustomized) &&\n 'fields' in maybeCustomized &&\n Array.isArray(maybeCustomized.fields) &&\n // needed to differentiate inline, named array object types from globally defined types\n // we only consider it customized if the _definition_ has fields declared\n // this holds for all customizable object-like types: object, document, image and file\n internalOwnProps?.fields\n\n if (!hasFieldsArray) {\n return false\n }\n\n const fields = getCustomFields(maybeCustomized)\n return fields.length > 0\n}\n\nexport function isType(schemaType: SchemaType, typeName: string): boolean {\n if (schemaType.name === typeName) {\n return true\n }\n if (!schemaType.type) {\n return false\n }\n return isType(schemaType.type, typeName)\n}\n\nexport function isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object'\n}\n\nexport function isPrimitive(value: unknown): value is boolean | number | string {\n return isString(value) || isBoolean(value) || isNumber(value)\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string'\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'boolean'\n}\n\nfunction isBoolean(value: unknown): value is boolean {\n return typeof value === 'number'\n}\n\n/**\n * _internal_ownProps contains the _definition_ for the type.\n * Without it we cannot differentiate inline array item types from globally defined types in array.of\n */\nfunction getSchemaTypeInternalOwnProps(type: SchemaType): InternalOwnProps | undefined {\n return (type as {_internal_ownProps?: InternalOwnProps})?._internal_ownProps\n}\n\n/**\n * This allows us to differentiate inline array.of type definitions vs global type names on compiled schema types\n */\nexport function getDefinedTypeName(type: SchemaType): string | undefined {\n return getSchemaTypeInternalOwnProps(type)?.type\n}\n"],"names":["DEFAULT_IMAGE_FIELDS","Set","DEFAULT_FILE_FIELDS","DEFAULT_GEOPOINT_FIELDS","DEFAULT_SLUG_FIELDS","getCustomFields","type","fields","fieldsets","flatMap","fs","single","field","map","fieldset","name","isType","filter","f","has","isReference","isCrossDatasetReference","isGlobalDocumentReference","isObjectField","maybeOjectField","isCustomized","maybeCustomized","internalOwnProps","getSchemaTypeInternalOwnProps","hasFieldsArray","Array","isArray","length","schemaType","typeName","isDefined","value","undefined","isRecord","isPrimitive","isString","isBoolean","isNumber","_internal_ownProps","getDefinedTypeName"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/types.ts"],"sourcesContent":["import {type SanityDocumentLike} from '@sanity/types'\nimport {type MediaLibraryConfig} from 'sanity'\n\nexport const SANITY_WORKSPACE_SCHEMA_ID_PREFIX = '_.schemas'\nexport const SANITY_WORKSPACE_SCHEMA_TYPE = 'system.schema'\nexport const CURRENT_WORKSPACE_SCHEMA_VERSION = '2025-05-01'\n\nexport type ManifestSerializable =\n | boolean\n | ManifestSerializable[]\n | number\n | string\n | {[k: string]: ManifestSerializable}\n\nexport interface CreateManifest {\n createdAt: string\n studioVersion: string | null\n version: number\n workspaces: ManifestWorkspaceFile[]\n}\n\nexport interface AppManifest {\n version: '1'\n\n icon?: string\n title?: string\n}\n\nexport interface ManifestWorkspaceFile extends Omit<CreateWorkspaceManifest, 'schema' | 'tools'> {\n schema: string // filename\n tools: string // filename\n}\n\nexport interface CreateWorkspaceManifest {\n basePath: string\n dataset: string\n /**\n * returns null in the case of the icon not being able to be stringified\n */\n icon: string | null\n name: string\n projectId: string\n schema: ManifestSchemaType[]\n tools: ManifestTool[]\n\n mediaLibrary?: MediaLibraryConfig\n subtitle?: string\n title?: string\n}\n\nexport interface ManifestSchemaType {\n name: string\n type: string\n\n deprecated?: {\n reason: string\n }\n fields?: ManifestField[]\n fieldsets?: ManifestFieldset[]\n hidden?: 'conditional' | boolean\n lists?: ManifestTitledValue[]\n //portable text\n marks?: {\n annotations?: ManifestArrayMember[]\n decorators?: ManifestTitledValue[]\n }\n of?: ManifestArrayMember[]\n options?: Record<string, ManifestSerializable>\n preview?: {\n select: Record<string, string>\n }\n readOnly?: 'conditional' | boolean\n styles?: ManifestTitledValue[]\n title?: string\n to?: ManifestReferenceMember[]\n validation?: ManifestValidationGroup[]\n\n // userland (assignable to ManifestSerializable | undefined)\n // not included to add some typesafty to extractManifest\n // [index: string]: unknown\n}\n\nexport interface ManifestFieldset {\n [index: string]: ManifestSerializable | undefined\n name: string\n\n title?: string\n}\n\nexport interface ManifestTitledValue {\n value: string\n\n title?: string\n}\n\ntype ManifestArrayMember = Omit<ManifestSchemaType, 'name'> & {name?: string}\ntype ManifestReferenceMember = Omit<ManifestSchemaType, 'name'> & {name?: string}\nexport type ManifestField = ManifestSchemaType & {fieldset?: string}\n\nexport interface ManifestValidationGroup {\n rules: ManifestValidationRule[]\n\n level?: 'error' | 'info' | 'warning'\n message?: string\n}\n\nexport type ManifestValidationRule = {\n [index: string]: ManifestSerializable | undefined\n constraint?: ManifestSerializable\n flag: string\n}\n\nexport interface ManifestTool {\n /**\n * returns null in the case of the icon not being able to be stringified\n */\n icon: string | null\n name: string\n title: string\n type: string | null\n}\n\nexport type DefaultWorkspaceSchemaId = `${typeof SANITY_WORKSPACE_SCHEMA_ID_PREFIX}.${string}`\ntype PrefixedWorkspaceSchemaId = `${DefaultWorkspaceSchemaId}.${string}`\nexport type WorkspaceSchemaId = DefaultWorkspaceSchemaId | PrefixedWorkspaceSchemaId\n\nexport interface StoredWorkspaceSchema extends SanityDocumentLike {\n _id: WorkspaceSchemaId\n _type: typeof SANITY_WORKSPACE_SCHEMA_TYPE\n /**\n * The API expects JSON coming in, but will store a string to save on attribute paths.\n * Consumers must use JSON.parse on the value, put we deploy to the API using ManifestSchemaType[]\n */\n schema: ManifestSchemaType[] | string\n /* api-like version string: date at which the format had a meaningful change */\n version: typeof CURRENT_WORKSPACE_SCHEMA_VERSION | undefined\n workspace: {\n name: string\n title?: string\n }\n\n tag?: string\n}\n"],"names":["SANITY_WORKSPACE_SCHEMA_ID_PREFIX","SANITY_WORKSPACE_SCHEMA_TYPE","CURRENT_WORKSPACE_SCHEMA_VERSION"],"mappings":"AAGA,OAAO,MAAMA,oCAAoC,YAAW;AAC5D,OAAO,MAAMC,+BAA+B,gBAAe;AAC3D,OAAO,MAAMC,mCAAmC,aAAY"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import fs from 'node:fs/promises';
|
|
3
|
+
import { subdebug } from '@sanity/cli-core';
|
|
4
|
+
import { parse as parseJsonc } from 'jsonc-parser';
|
|
5
|
+
import { EDITOR_CONFIGS } from './editorConfigs.js';
|
|
6
|
+
const debug = subdebug('mcp:detectAvailableEditors');
|
|
7
|
+
/**
|
|
8
|
+
* Safely parse JSON/JSONC config file content
|
|
9
|
+
* Returns parsed config or null if unparseable
|
|
10
|
+
*/ function parseConfig(content) {
|
|
11
|
+
const trimmed = content.trim();
|
|
12
|
+
if (trimmed === '') {
|
|
13
|
+
return {} // Empty file - safe to write, treat as empty config
|
|
14
|
+
;
|
|
15
|
+
}
|
|
16
|
+
const errors = [];
|
|
17
|
+
const parsed = parseJsonc(content, errors, {
|
|
18
|
+
allowTrailingComma: true
|
|
19
|
+
});
|
|
20
|
+
if (errors.length > 0 || typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
21
|
+
return null // Parse failed
|
|
22
|
+
;
|
|
23
|
+
}
|
|
24
|
+
return parsed;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if an editor's config is usable and whether Sanity MCP is already configured.
|
|
28
|
+
* Returns null only if config exists but can't be parsed (to avoid data loss).
|
|
29
|
+
*/ async function checkEditorConfig(name, configPath) {
|
|
30
|
+
const { configKey } = EDITOR_CONFIGS[name];
|
|
31
|
+
// Config file doesn't exist - can create it
|
|
32
|
+
if (!existsSync(configPath)) {
|
|
33
|
+
return {
|
|
34
|
+
configPath,
|
|
35
|
+
configured: false,
|
|
36
|
+
name
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Config exists - try to parse it
|
|
40
|
+
try {
|
|
41
|
+
const content = await fs.readFile(configPath, 'utf8');
|
|
42
|
+
const config = parseConfig(content);
|
|
43
|
+
if (config === null) {
|
|
44
|
+
debug('Skipping %s: could not parse %s', name, configPath);
|
|
45
|
+
return null // Can't parse - skip this editor
|
|
46
|
+
;
|
|
47
|
+
}
|
|
48
|
+
// Check if Sanity MCP is already configured
|
|
49
|
+
const configured = Boolean(config[configKey]?.Sanity);
|
|
50
|
+
return {
|
|
51
|
+
configPath,
|
|
52
|
+
configured,
|
|
53
|
+
name
|
|
54
|
+
};
|
|
55
|
+
} catch (err) {
|
|
56
|
+
debug('Skipping %s: could not read %s: %s', name, configPath, err);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detect which editors are installed and have parseable configs.
|
|
62
|
+
* Editors with unparseable configs are skipped to avoid data loss.
|
|
63
|
+
*/ export async function detectAvailableEditors() {
|
|
64
|
+
const editors = [];
|
|
65
|
+
for (const [name, config] of Object.entries(EDITOR_CONFIGS)){
|
|
66
|
+
const configPath = await config.detect();
|
|
67
|
+
if (configPath) {
|
|
68
|
+
const editor = await checkEditorConfig(name, configPath);
|
|
69
|
+
if (editor) editors.push(editor);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return editors;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=detectAvailableEditors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/mcp/detectAvailableEditors.ts"],"sourcesContent":["import {existsSync} from 'node:fs'\nimport fs from 'node:fs/promises'\n\nimport {subdebug} from '@sanity/cli-core'\nimport {type ParseError, parse as parseJsonc} from 'jsonc-parser'\n\nimport {EDITOR_CONFIGS, type EditorName} from './editorConfigs.js'\n\nconst debug = subdebug('mcp:detectAvailableEditors')\n\nexport interface Editor {\n configPath: string\n /** Whether Sanity MCP is already configured for this editor */\n configured: boolean\n name: EditorName\n}\n\ninterface MCPConfig {\n [key: string]: Record<string, unknown> | undefined\n}\n\n/**\n * Safely parse JSON/JSONC config file content\n * Returns parsed config or null if unparseable\n */\nfunction parseConfig(content: string): MCPConfig | null {\n const trimmed = content.trim()\n if (trimmed === '') {\n return {} // Empty file - safe to write, treat as empty config\n }\n\n const errors: ParseError[] = []\n const parsed = parseJsonc(content, errors, {allowTrailingComma: true})\n\n if (errors.length > 0 || typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n return null // Parse failed\n }\n\n return parsed as MCPConfig\n}\n\n/**\n * Check if an editor's config is usable and whether Sanity MCP is already configured.\n * Returns null only if config exists but can't be parsed (to avoid data loss).\n */\nasync function checkEditorConfig(name: EditorName, configPath: string): Promise<Editor | null> {\n const {configKey} = EDITOR_CONFIGS[name]\n\n // Config file doesn't exist - can create it\n if (!existsSync(configPath)) {\n return {configPath, configured: false, name}\n }\n\n // Config exists - try to parse it\n try {\n const content = await fs.readFile(configPath, 'utf8')\n const config = parseConfig(content)\n\n if (config === null) {\n debug('Skipping %s: could not parse %s', name, configPath)\n return null // Can't parse - skip this editor\n }\n\n // Check if Sanity MCP is already configured\n const configured = Boolean(config[configKey]?.Sanity)\n\n return {configPath, configured, name}\n } catch (err) {\n debug('Skipping %s: could not read %s: %s', name, configPath, err)\n return null\n }\n}\n\n/**\n * Detect which editors are installed and have parseable configs.\n * Editors with unparseable configs are skipped to avoid data loss.\n */\nexport async function detectAvailableEditors(): Promise<Editor[]> {\n const editors: Editor[] = []\n\n for (const [name, config] of Object.entries(EDITOR_CONFIGS)) {\n const configPath = await config.detect()\n if (configPath) {\n const editor = await checkEditorConfig(name as EditorName, configPath)\n if (editor) editors.push(editor)\n }\n }\n\n return editors\n}\n"],"names":["existsSync","fs","subdebug","parse","parseJsonc","EDITOR_CONFIGS","debug","parseConfig","content","trimmed","trim","errors","parsed","allowTrailingComma","length","Array","isArray","checkEditorConfig","name","configPath","configKey","configured","readFile","config","Boolean","Sanity","err","detectAvailableEditors","editors","Object","entries","detect","editor","push"],"mappings":"AAAA,SAAQA,UAAU,QAAO,UAAS;AAClC,OAAOC,QAAQ,mBAAkB;AAEjC,SAAQC,QAAQ,QAAO,mBAAkB;AACzC,SAAyBC,SAASC,UAAU,QAAO,eAAc;AAEjE,SAAQC,cAAc,QAAwB,qBAAoB;AAElE,MAAMC,QAAQJ,SAAS;AAavB;;;CAGC,GACD,SAASK,YAAYC,OAAe;IAClC,MAAMC,UAAUD,QAAQE,IAAI;IAC5B,IAAID,YAAY,IAAI;QAClB,OAAO,CAAC,EAAE,oDAAoD;;IAChE;IAEA,MAAME,SAAuB,EAAE;IAC/B,MAAMC,SAASR,WAAWI,SAASG,QAAQ;QAACE,oBAAoB;IAAI;IAEpE,IAAIF,OAAOG,MAAM,GAAG,KAAK,OAAOF,WAAW,YAAYA,WAAW,QAAQG,MAAMC,OAAO,CAACJ,SAAS;QAC/F,OAAO,KAAK,eAAe;;IAC7B;IAEA,OAAOA;AACT;AAEA;;;CAGC,GACD,eAAeK,kBAAkBC,IAAgB,EAAEC,UAAkB;IACnE,MAAM,EAACC,SAAS,EAAC,GAAGf,cAAc,CAACa,KAAK;IAExC,4CAA4C;IAC5C,IAAI,CAAClB,WAAWmB,aAAa;QAC3B,OAAO;YAACA;YAAYE,YAAY;YAAOH;QAAI;IAC7C;IAEA,kCAAkC;IAClC,IAAI;QACF,MAAMV,UAAU,MAAMP,GAAGqB,QAAQ,CAACH,YAAY;QAC9C,MAAMI,SAAShB,YAAYC;QAE3B,IAAIe,WAAW,MAAM;YACnBjB,MAAM,mCAAmCY,MAAMC;YAC/C,OAAO,KAAK,iCAAiC;;QAC/C;QAEA,4CAA4C;QAC5C,MAAME,aAAaG,QAAQD,MAAM,CAACH,UAAU,EAAEK;QAE9C,OAAO;YAACN;YAAYE;YAAYH;QAAI;IACtC,EAAE,OAAOQ,KAAK;QACZpB,MAAM,sCAAsCY,MAAMC,YAAYO;QAC9D,OAAO;IACT;AACF;AAEA;;;CAGC,GACD,OAAO,eAAeC;IACpB,MAAMC,UAAoB,EAAE;IAE5B,KAAK,MAAM,CAACV,MAAMK,OAAO,IAAIM,OAAOC,OAAO,CAACzB,gBAAiB;QAC3D,MAAMc,aAAa,MAAMI,OAAOQ,MAAM;QACtC,IAAIZ,YAAY;YACd,MAAMa,SAAS,MAAMf,kBAAkBC,MAAoBC;YAC3D,IAAIa,QAAQJ,QAAQK,IAAI,CAACD;QAC3B;IACF;IAEA,OAAOJ;AACT"}
|