@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,153 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import { subdebug } from '@sanity/cli-core';
|
|
4
|
+
const debug = subdebug('auth');
|
|
5
|
+
const callbackPorts = [
|
|
6
|
+
4321,
|
|
7
|
+
4000,
|
|
8
|
+
3003,
|
|
9
|
+
1234,
|
|
10
|
+
8080,
|
|
11
|
+
13_333
|
|
12
|
+
];
|
|
13
|
+
const callbackEndpoint = '/callback';
|
|
14
|
+
const platformNames = {
|
|
15
|
+
aix: 'AIX',
|
|
16
|
+
android: 'Android',
|
|
17
|
+
darwin: 'MacOS',
|
|
18
|
+
freebsd: 'FreeBSD',
|
|
19
|
+
linux: 'Linux',
|
|
20
|
+
openbsd: 'OpenBSD',
|
|
21
|
+
sunos: 'SunOS',
|
|
22
|
+
win32: 'Windows'
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Start a local HTTP server and wait for a request to the auth callback endpoint.
|
|
26
|
+
* This happens by the user being sent to a login page with a callback URL that points to
|
|
27
|
+
* this local server. This request includes a short-lived "SID" (session ID) that we then
|
|
28
|
+
* do a request to the `/auth/fetch` endpoint with to get the actual auth token,
|
|
29
|
+
* invalidating the SID in the process.
|
|
30
|
+
*
|
|
31
|
+
* If we fail to bind to the first port, we retry with the next port in the list.
|
|
32
|
+
*
|
|
33
|
+
* @param options - Options for the server
|
|
34
|
+
* @returns Resolves with HTTP server instance, a login URL to send user to, and a `token` promise
|
|
35
|
+
* @internal
|
|
36
|
+
*/ export function startServerForTokenCallback(options) {
|
|
37
|
+
const { client, providerUrl } = options;
|
|
38
|
+
const { apiHost } = client.config();
|
|
39
|
+
const domain = apiHost.includes('.sanity.work') ? 'www.sanity.work' : 'www.sanity.io';
|
|
40
|
+
const attemptPorts = [
|
|
41
|
+
...callbackPorts
|
|
42
|
+
];
|
|
43
|
+
let callbackPort = attemptPorts.shift();
|
|
44
|
+
// note: replace with `Promise.withResolvers()` when minimum Node.js is 22+
|
|
45
|
+
let resolveToken;
|
|
46
|
+
let rejectToken;
|
|
47
|
+
const tokenPromise = new Promise((resolve, reject)=>{
|
|
48
|
+
resolveToken = resolve;
|
|
49
|
+
rejectToken = reject;
|
|
50
|
+
});
|
|
51
|
+
return new Promise((resolve, reject)=>{
|
|
52
|
+
const server = createServer(async function onCallbackServerRequest(req, res) {
|
|
53
|
+
function failLoginRequest(code = '') {
|
|
54
|
+
res.writeHead(303, 'See Other', {
|
|
55
|
+
Location: `https://${domain}/login/error${code ? `?error=${code}` : ''}`
|
|
56
|
+
});
|
|
57
|
+
res.end();
|
|
58
|
+
server.close();
|
|
59
|
+
}
|
|
60
|
+
const url = new URL(req.url || '/', `http://localhost:${callbackPort}`);
|
|
61
|
+
if (url.pathname !== callbackEndpoint) {
|
|
62
|
+
res.writeHead(404, 'Not Found', {
|
|
63
|
+
'Content-Type': 'text/plain'
|
|
64
|
+
});
|
|
65
|
+
res.write('404 Not Found');
|
|
66
|
+
res.end();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const absoluteTokenUrl = url.searchParams.get('url');
|
|
70
|
+
if (!absoluteTokenUrl) {
|
|
71
|
+
failLoginRequest();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const tokenUrl = new URL(absoluteTokenUrl);
|
|
75
|
+
if (!tokenUrl.searchParams.has('sid')) {
|
|
76
|
+
failLoginRequest('NO_SESSION_ID');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
let token;
|
|
80
|
+
try {
|
|
81
|
+
token = await client.request({
|
|
82
|
+
uri: `/auth/fetch${tokenUrl.search}`
|
|
83
|
+
});
|
|
84
|
+
} catch (err) {
|
|
85
|
+
failLoginRequest('UNRESOLVED_SESSION');
|
|
86
|
+
rejectToken(err instanceof Error ? err : new Error(`Unknown error: ${err}`));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
res.writeHead(303, 'See Other', {
|
|
90
|
+
Location: `https://${domain}/login/success`
|
|
91
|
+
});
|
|
92
|
+
res.end();
|
|
93
|
+
server.close();
|
|
94
|
+
resolveToken(token);
|
|
95
|
+
});
|
|
96
|
+
server.on('listening', function onCallbackListen() {
|
|
97
|
+
// Once the server is successfully listening on a port, we can return the promise.
|
|
98
|
+
// We'll then await the _token promise_, while the server is running in the background.
|
|
99
|
+
const loginUrl = getLoginUrl(server, providerUrl);
|
|
100
|
+
resolve({
|
|
101
|
+
loginUrl,
|
|
102
|
+
server,
|
|
103
|
+
token: tokenPromise
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
server.on('error', function onCallbackServerError(err) {
|
|
107
|
+
if ('code' in err && err.code === 'EADDRINUSE') {
|
|
108
|
+
callbackPort = attemptPorts.shift();
|
|
109
|
+
if (!callbackPort) {
|
|
110
|
+
reject(new Error('Failed to find port number to bind auth callback server to'));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
debug('Port busy, trying %d', callbackPort);
|
|
114
|
+
server.listen(callbackPort);
|
|
115
|
+
} else {
|
|
116
|
+
reject(err);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
debug('Starting callback server on port %d', callbackPort);
|
|
120
|
+
server.listen(callbackPort);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the login URL to send the user to for the given local auth token server.
|
|
125
|
+
*
|
|
126
|
+
* The generated URL will include a label for the session that includes the
|
|
127
|
+
* hostname and platform of the current computer, to help identify the session.
|
|
128
|
+
*
|
|
129
|
+
* @param server - The local auth token server
|
|
130
|
+
* @param providerUrl - The URL of the login provider
|
|
131
|
+
* @returns The login URL
|
|
132
|
+
* @internal
|
|
133
|
+
*/ function getLoginUrl(server, providerUrl) {
|
|
134
|
+
const serverUrl = server.address();
|
|
135
|
+
if (!serverUrl || typeof serverUrl === 'string') {
|
|
136
|
+
// Note: `serverUrl` is string only when binding to unix sockets,
|
|
137
|
+
// thus we can safely assume Something Is Wrong™ if it's a string
|
|
138
|
+
throw new Error('Failed to start auth callback server');
|
|
139
|
+
}
|
|
140
|
+
// Build a login URL that redirects back back to OAuth flow on success
|
|
141
|
+
const loginUrl = new URL(providerUrl);
|
|
142
|
+
// Prefer `MacOS` over `darwin` etc
|
|
143
|
+
const platformName = os.platform();
|
|
144
|
+
const platform = platformName in platformNames ? platformNames[platformName] : platformName;
|
|
145
|
+
// Prefer `espens-macbook` over `espens-macbook.local`
|
|
146
|
+
const hostname = os.hostname().replaceAll(/\.(local|lan)$/g, '');
|
|
147
|
+
loginUrl.searchParams.set('type', 'token');
|
|
148
|
+
loginUrl.searchParams.set('label', `${hostname} / ${platform}`);
|
|
149
|
+
loginUrl.searchParams.set('origin', `http://localhost:${serverUrl.port}${callbackEndpoint}`);
|
|
150
|
+
return loginUrl;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=authServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/auth/authServer.ts"],"sourcesContent":["import {createServer, type Server} from 'node:http'\nimport os from 'node:os'\n\nimport {subdebug} from '@sanity/cli-core'\nimport {type SanityClient} from '@sanity/client'\n\nconst debug = subdebug('auth')\nconst callbackPorts = [4321, 4000, 3003, 1234, 8080, 13_333]\nconst callbackEndpoint = '/callback'\n\nconst platformNames: Record<string, string | undefined> = {\n aix: 'AIX',\n android: 'Android',\n darwin: 'MacOS',\n freebsd: 'FreeBSD',\n linux: 'Linux',\n openbsd: 'OpenBSD',\n sunos: 'SunOS',\n win32: 'Windows',\n}\n\n/**\n * The response shape from /auth/fetch\n *\n * @internal\n */\ninterface TokenDetails {\n label: string\n token: string\n}\n\n/**\n * Start a local HTTP server and wait for a request to the auth callback endpoint.\n * This happens by the user being sent to a login page with a callback URL that points to\n * this local server. This request includes a short-lived \"SID\" (session ID) that we then\n * do a request to the `/auth/fetch` endpoint with to get the actual auth token,\n * invalidating the SID in the process.\n *\n * If we fail to bind to the first port, we retry with the next port in the list.\n *\n * @param options - Options for the server\n * @returns Resolves with HTTP server instance, a login URL to send user to, and a `token` promise\n * @internal\n */\nexport function startServerForTokenCallback(options: {\n client: SanityClient\n providerUrl: string\n}): Promise<{loginUrl: URL; server: Server; token: Promise<TokenDetails>}> {\n const {client, providerUrl} = options\n const {apiHost} = client.config()\n const domain = apiHost.includes('.sanity.work') ? 'www.sanity.work' : 'www.sanity.io'\n\n const attemptPorts = [...callbackPorts]\n let callbackPort = attemptPorts.shift()\n\n // note: replace with `Promise.withResolvers()` when minimum Node.js is 22+\n let resolveToken: (resolvedToken: PromiseLike<TokenDetails> | TokenDetails) => void\n let rejectToken: (reason: Error) => void\n const tokenPromise = new Promise<TokenDetails>((resolve, reject) => {\n resolveToken = resolve\n rejectToken = reject\n })\n\n return new Promise((resolve, reject) => {\n const server = createServer(async function onCallbackServerRequest(req, res) {\n function failLoginRequest(code = '') {\n res.writeHead(303, 'See Other', {\n Location: `https://${domain}/login/error${code ? `?error=${code}` : ''}`,\n })\n res.end()\n server.close()\n }\n\n const url = new URL(req.url || '/', `http://localhost:${callbackPort}`)\n if (url.pathname !== callbackEndpoint) {\n res.writeHead(404, 'Not Found', {'Content-Type': 'text/plain'})\n res.write('404 Not Found')\n res.end()\n return\n }\n\n const absoluteTokenUrl = url.searchParams.get('url')\n if (!absoluteTokenUrl) {\n failLoginRequest()\n return\n }\n\n const tokenUrl = new URL(absoluteTokenUrl)\n if (!tokenUrl.searchParams.has('sid')) {\n failLoginRequest('NO_SESSION_ID')\n return\n }\n\n let token: TokenDetails\n try {\n token = await client.request({uri: `/auth/fetch${tokenUrl.search}`})\n } catch (err) {\n failLoginRequest('UNRESOLVED_SESSION')\n rejectToken(err instanceof Error ? err : new Error(`Unknown error: ${err}`))\n return\n }\n\n res.writeHead(303, 'See Other', {Location: `https://${domain}/login/success`})\n res.end()\n server.close()\n resolveToken(token)\n })\n\n server.on('listening', function onCallbackListen() {\n // Once the server is successfully listening on a port, we can return the promise.\n // We'll then await the _token promise_, while the server is running in the background.\n const loginUrl = getLoginUrl(server, providerUrl)\n resolve({loginUrl, server, token: tokenPromise})\n })\n\n server.on('error', function onCallbackServerError(err) {\n if ('code' in err && err.code === 'EADDRINUSE') {\n callbackPort = attemptPorts.shift()\n if (!callbackPort) {\n reject(new Error('Failed to find port number to bind auth callback server to'))\n return\n }\n\n debug('Port busy, trying %d', callbackPort)\n server.listen(callbackPort)\n } else {\n reject(err)\n }\n })\n\n debug('Starting callback server on port %d', callbackPort)\n server.listen(callbackPort)\n })\n}\n\n/**\n * Get the login URL to send the user to for the given local auth token server.\n *\n * The generated URL will include a label for the session that includes the\n * hostname and platform of the current computer, to help identify the session.\n *\n * @param server - The local auth token server\n * @param providerUrl - The URL of the login provider\n * @returns The login URL\n * @internal\n */\nfunction getLoginUrl(server: Server, providerUrl: string): URL {\n const serverUrl = server.address()\n if (!serverUrl || typeof serverUrl === 'string') {\n // Note: `serverUrl` is string only when binding to unix sockets,\n // thus we can safely assume Something Is Wrong™ if it's a string\n throw new Error('Failed to start auth callback server')\n }\n\n // Build a login URL that redirects back back to OAuth flow on success\n const loginUrl = new URL(providerUrl)\n\n // Prefer `MacOS` over `darwin` etc\n const platformName = os.platform()\n const platform = platformName in platformNames ? platformNames[platformName] : platformName\n\n // Prefer `espens-macbook` over `espens-macbook.local`\n const hostname = os.hostname().replaceAll(/\\.(local|lan)$/g, '')\n\n loginUrl.searchParams.set('type', 'token')\n loginUrl.searchParams.set('label', `${hostname} / ${platform}`)\n loginUrl.searchParams.set('origin', `http://localhost:${serverUrl.port}${callbackEndpoint}`)\n\n return loginUrl\n}\n"],"names":["createServer","os","subdebug","debug","callbackPorts","callbackEndpoint","platformNames","aix","android","darwin","freebsd","linux","openbsd","sunos","win32","startServerForTokenCallback","options","client","providerUrl","apiHost","config","domain","includes","attemptPorts","callbackPort","shift","resolveToken","rejectToken","tokenPromise","Promise","resolve","reject","server","onCallbackServerRequest","req","res","failLoginRequest","code","writeHead","Location","end","close","url","URL","pathname","write","absoluteTokenUrl","searchParams","get","tokenUrl","has","token","request","uri","search","err","Error","on","onCallbackListen","loginUrl","getLoginUrl","onCallbackServerError","listen","serverUrl","address","platformName","platform","hostname","replaceAll","set","port"],"mappings":"AAAA,SAAQA,YAAY,QAAoB,YAAW;AACnD,OAAOC,QAAQ,UAAS;AAExB,SAAQC,QAAQ,QAAO,mBAAkB;AAGzC,MAAMC,QAAQD,SAAS;AACvB,MAAME,gBAAgB;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;CAAO;AAC5D,MAAMC,mBAAmB;AAEzB,MAAMC,gBAAoD;IACxDC,KAAK;IACLC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,OAAO;IACPC,SAAS;IACTC,OAAO;IACPC,OAAO;AACT;AAYA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASC,4BAA4BC,OAG3C;IACC,MAAM,EAACC,MAAM,EAAEC,WAAW,EAAC,GAAGF;IAC9B,MAAM,EAACG,OAAO,EAAC,GAAGF,OAAOG,MAAM;IAC/B,MAAMC,SAASF,QAAQG,QAAQ,CAAC,kBAAkB,oBAAoB;IAEtE,MAAMC,eAAe;WAAInB;KAAc;IACvC,IAAIoB,eAAeD,aAAaE,KAAK;IAErC,2EAA2E;IAC3E,IAAIC;IACJ,IAAIC;IACJ,MAAMC,eAAe,IAAIC,QAAsB,CAACC,SAASC;QACvDL,eAAeI;QACfH,cAAcI;IAChB;IAEA,OAAO,IAAIF,QAAQ,CAACC,SAASC;QAC3B,MAAMC,SAAShC,aAAa,eAAeiC,wBAAwBC,GAAG,EAAEC,GAAG;YACzE,SAASC,iBAAiBC,OAAO,EAAE;gBACjCF,IAAIG,SAAS,CAAC,KAAK,aAAa;oBAC9BC,UAAU,CAAC,QAAQ,EAAElB,OAAO,YAAY,EAAEgB,OAAO,CAAC,OAAO,EAAEA,MAAM,GAAG,IAAI;gBAC1E;gBACAF,IAAIK,GAAG;gBACPR,OAAOS,KAAK;YACd;YAEA,MAAMC,MAAM,IAAIC,IAAIT,IAAIQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAElB,cAAc;YACtE,IAAIkB,IAAIE,QAAQ,KAAKvC,kBAAkB;gBACrC8B,IAAIG,SAAS,CAAC,KAAK,aAAa;oBAAC,gBAAgB;gBAAY;gBAC7DH,IAAIU,KAAK,CAAC;gBACVV,IAAIK,GAAG;gBACP;YACF;YAEA,MAAMM,mBAAmBJ,IAAIK,YAAY,CAACC,GAAG,CAAC;YAC9C,IAAI,CAACF,kBAAkB;gBACrBV;gBACA;YACF;YAEA,MAAMa,WAAW,IAAIN,IAAIG;YACzB,IAAI,CAACG,SAASF,YAAY,CAACG,GAAG,CAAC,QAAQ;gBACrCd,iBAAiB;gBACjB;YACF;YAEA,IAAIe;YACJ,IAAI;gBACFA,QAAQ,MAAMlC,OAAOmC,OAAO,CAAC;oBAACC,KAAK,CAAC,WAAW,EAAEJ,SAASK,MAAM,EAAE;gBAAA;YACpE,EAAE,OAAOC,KAAK;gBACZnB,iBAAiB;gBACjBT,YAAY4B,eAAeC,QAAQD,MAAM,IAAIC,MAAM,CAAC,eAAe,EAAED,KAAK;gBAC1E;YACF;YAEApB,IAAIG,SAAS,CAAC,KAAK,aAAa;gBAACC,UAAU,CAAC,QAAQ,EAAElB,OAAO,cAAc,CAAC;YAAA;YAC5Ec,IAAIK,GAAG;YACPR,OAAOS,KAAK;YACZf,aAAayB;QACf;QAEAnB,OAAOyB,EAAE,CAAC,aAAa,SAASC;YAC9B,kFAAkF;YAClF,uFAAuF;YACvF,MAAMC,WAAWC,YAAY5B,QAAQd;YACrCY,QAAQ;gBAAC6B;gBAAU3B;gBAAQmB,OAAOvB;YAAY;QAChD;QAEAI,OAAOyB,EAAE,CAAC,SAAS,SAASI,sBAAsBN,GAAG;YACnD,IAAI,UAAUA,OAAOA,IAAIlB,IAAI,KAAK,cAAc;gBAC9Cb,eAAeD,aAAaE,KAAK;gBACjC,IAAI,CAACD,cAAc;oBACjBO,OAAO,IAAIyB,MAAM;oBACjB;gBACF;gBAEArD,MAAM,wBAAwBqB;gBAC9BQ,OAAO8B,MAAM,CAACtC;YAChB,OAAO;gBACLO,OAAOwB;YACT;QACF;QAEApD,MAAM,uCAAuCqB;QAC7CQ,OAAO8B,MAAM,CAACtC;IAChB;AACF;AAEA;;;;;;;;;;CAUC,GACD,SAASoC,YAAY5B,MAAc,EAAEd,WAAmB;IACtD,MAAM6C,YAAY/B,OAAOgC,OAAO;IAChC,IAAI,CAACD,aAAa,OAAOA,cAAc,UAAU;QAC/C,iEAAiE;QACjE,iEAAiE;QACjE,MAAM,IAAIP,MAAM;IAClB;IAEA,sEAAsE;IACtE,MAAMG,WAAW,IAAIhB,IAAIzB;IAEzB,mCAAmC;IACnC,MAAM+C,eAAehE,GAAGiE,QAAQ;IAChC,MAAMA,WAAWD,gBAAgB3D,gBAAgBA,aAAa,CAAC2D,aAAa,GAAGA;IAE/E,sDAAsD;IACtD,MAAME,WAAWlE,GAAGkE,QAAQ,GAAGC,UAAU,CAAC,mBAAmB;IAE7DT,SAASZ,YAAY,CAACsB,GAAG,CAAC,QAAQ;IAClCV,SAASZ,YAAY,CAACsB,GAAG,CAAC,SAAS,GAAGF,SAAS,GAAG,EAAED,UAAU;IAC9DP,SAASZ,YAAY,CAACsB,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAEN,UAAUO,IAAI,GAAGjE,kBAAkB;IAE3F,OAAOsD;AACT"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Try to get a (prettier) name for a provider by ID.
|
|
3
|
+
*
|
|
4
|
+
* @param provider - The provider ID, e.g., 'google', 'github', 'sanity', or 'saml-<name>'.
|
|
5
|
+
* @returns The display name for the provider.
|
|
6
|
+
* @internal
|
|
7
|
+
*/ export function getProviderName(provider) {
|
|
8
|
+
if (provider === 'google') return 'Google';
|
|
9
|
+
if (provider === 'github') return 'GitHub';
|
|
10
|
+
if (provider === 'sanity') return 'Email';
|
|
11
|
+
if (provider.startsWith('saml-')) return 'SAML';
|
|
12
|
+
return provider.charAt(0).toUpperCase() + provider.slice(1);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=getProviderName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/auth/getProviderName.ts"],"sourcesContent":["/**\n * Try to get a (prettier) name for a provider by ID.\n *\n * @param provider - The provider ID, e.g., 'google', 'github', 'sanity', or 'saml-<name>'.\n * @returns The display name for the provider.\n * @internal\n */\nexport function getProviderName(provider: string): string {\n if (provider === 'google') return 'Google'\n if (provider === 'github') return 'GitHub'\n if (provider === 'sanity') return 'Email'\n if (provider.startsWith('saml-')) return 'SAML'\n return provider.charAt(0).toUpperCase() + provider.slice(1)\n}\n"],"names":["getProviderName","provider","startsWith","charAt","toUpperCase","slice"],"mappings":"AAAA;;;;;;CAMC,GACD,OAAO,SAASA,gBAAgBC,QAAgB;IAC9C,IAAIA,aAAa,UAAU,OAAO;IAClC,IAAIA,aAAa,UAAU,OAAO;IAClC,IAAIA,aAAa,UAAU,OAAO;IAClC,IAAIA,SAASC,UAAU,CAAC,UAAU,OAAO;IACzC,OAAOD,SAASE,MAAM,CAAC,GAAGC,WAAW,KAAKH,SAASI,KAAK,CAAC;AAC3D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { input, spinner } from '@sanity/cli-core/ux';
|
|
2
|
+
import { getSSOProvider } from './getSSOProvider.js';
|
|
3
|
+
import { promptProviders } from './promptProviders.js';
|
|
4
|
+
/**
|
|
5
|
+
* Prompt the user to select a login provider, or use the specified provider if given.
|
|
6
|
+
*
|
|
7
|
+
* @param options - Options for the provider resolve operation
|
|
8
|
+
* @returns Promise that resolves to the selected login provider
|
|
9
|
+
* @internal
|
|
10
|
+
*/ export async function getProvider({ client, experimental, orgSlug, specifiedProvider }) {
|
|
11
|
+
if (orgSlug) {
|
|
12
|
+
return getSSOProvider({
|
|
13
|
+
client,
|
|
14
|
+
orgSlug
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
// Fetch and prompt for login provider to use
|
|
18
|
+
const spin = spinner('Fetching providers...').start();
|
|
19
|
+
let { providers } = await client.request({
|
|
20
|
+
uri: '/auth/providers'
|
|
21
|
+
});
|
|
22
|
+
if (experimental) {
|
|
23
|
+
providers = [
|
|
24
|
+
...providers,
|
|
25
|
+
{
|
|
26
|
+
name: 'sso',
|
|
27
|
+
title: 'SSO',
|
|
28
|
+
url: '_not_used_'
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
spin.stop();
|
|
33
|
+
const providerNames = providers.map((prov)=>prov.name);
|
|
34
|
+
if (specifiedProvider && providerNames.includes(specifiedProvider)) {
|
|
35
|
+
const provider = providers.find((prov)=>prov.name === specifiedProvider);
|
|
36
|
+
if (!provider) {
|
|
37
|
+
throw new Error(`Cannot find login provider with name "${specifiedProvider}"`);
|
|
38
|
+
}
|
|
39
|
+
return provider;
|
|
40
|
+
}
|
|
41
|
+
const provider = await promptProviders(providers);
|
|
42
|
+
if (provider.name === 'sso') {
|
|
43
|
+
const orgSlug = await input({
|
|
44
|
+
message: 'Organization slug:'
|
|
45
|
+
});
|
|
46
|
+
return getSSOProvider({
|
|
47
|
+
client,
|
|
48
|
+
orgSlug
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return provider;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=getProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/auth/login/getProvider.ts"],"sourcesContent":["import {input, spinner} from '@sanity/cli-core/ux'\nimport {type SanityClient} from '@sanity/client'\n\nimport {type LoginProvider, type ProvidersResponse} from '../types.js'\nimport {getSSOProvider} from './getSSOProvider.js'\nimport {promptProviders} from './promptProviders.js'\n\n/**\n * Prompt the user to select a login provider, or use the specified provider if given.\n *\n * @param options - Options for the provider resolve operation\n * @returns Promise that resolves to the selected login provider\n * @internal\n */\nexport async function getProvider({\n client,\n experimental,\n orgSlug,\n specifiedProvider,\n}: {\n client: SanityClient\n experimental: boolean | undefined\n orgSlug: string | undefined\n specifiedProvider: string | undefined\n}): Promise<LoginProvider | undefined> {\n if (orgSlug) {\n return getSSOProvider({client, orgSlug})\n }\n\n // Fetch and prompt for login provider to use\n const spin = spinner('Fetching providers...').start()\n let {providers} = await client.request<ProvidersResponse>({uri: '/auth/providers'})\n if (experimental) {\n providers = [...providers, {name: 'sso', title: 'SSO', url: '_not_used_'}]\n }\n spin.stop()\n\n const providerNames = providers.map((prov) => prov.name)\n\n if (specifiedProvider && providerNames.includes(specifiedProvider)) {\n const provider = providers.find((prov) => prov.name === specifiedProvider)\n\n if (!provider) {\n throw new Error(`Cannot find login provider with name \"${specifiedProvider}\"`)\n }\n\n return provider\n }\n\n const provider = await promptProviders(providers)\n if (provider.name === 'sso') {\n const orgSlug = await input({message: 'Organization slug:'})\n return getSSOProvider({client, orgSlug})\n }\n\n return provider\n}\n"],"names":["input","spinner","getSSOProvider","promptProviders","getProvider","client","experimental","orgSlug","specifiedProvider","spin","start","providers","request","uri","name","title","url","stop","providerNames","map","prov","includes","provider","find","Error","message"],"mappings":"AAAA,SAAQA,KAAK,EAAEC,OAAO,QAAO,sBAAqB;AAIlD,SAAQC,cAAc,QAAO,sBAAqB;AAClD,SAAQC,eAAe,QAAO,uBAAsB;AAEpD;;;;;;CAMC,GACD,OAAO,eAAeC,YAAY,EAChCC,MAAM,EACNC,YAAY,EACZC,OAAO,EACPC,iBAAiB,EAMlB;IACC,IAAID,SAAS;QACX,OAAOL,eAAe;YAACG;YAAQE;QAAO;IACxC;IAEA,6CAA6C;IAC7C,MAAME,OAAOR,QAAQ,yBAAyBS,KAAK;IACnD,IAAI,EAACC,SAAS,EAAC,GAAG,MAAMN,OAAOO,OAAO,CAAoB;QAACC,KAAK;IAAiB;IACjF,IAAIP,cAAc;QAChBK,YAAY;eAAIA;YAAW;gBAACG,MAAM;gBAAOC,OAAO;gBAAOC,KAAK;YAAY;SAAE;IAC5E;IACAP,KAAKQ,IAAI;IAET,MAAMC,gBAAgBP,UAAUQ,GAAG,CAAC,CAACC,OAASA,KAAKN,IAAI;IAEvD,IAAIN,qBAAqBU,cAAcG,QAAQ,CAACb,oBAAoB;QAClE,MAAMc,WAAWX,UAAUY,IAAI,CAAC,CAACH,OAASA,KAAKN,IAAI,KAAKN;QAExD,IAAI,CAACc,UAAU;YACb,MAAM,IAAIE,MAAM,CAAC,sCAAsC,EAAEhB,kBAAkB,CAAC,CAAC;QAC/E;QAEA,OAAOc;IACT;IAEA,MAAMA,WAAW,MAAMnB,gBAAgBQ;IACvC,IAAIW,SAASR,IAAI,KAAK,OAAO;QAC3B,MAAMP,UAAU,MAAMP,MAAM;YAACyB,SAAS;QAAoB;QAC1D,OAAOvB,eAAe;YAACG;YAAQE;QAAO;IACxC;IAEA,OAAOe;AACT"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { select } from '@sanity/cli-core/ux';
|
|
2
|
+
import { samlProviderToLoginProvider } from './samlProviderToLoginProvider.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the SSO provider for the given slug
|
|
5
|
+
*
|
|
6
|
+
* @param options - Options for the provider resolve operation
|
|
7
|
+
* @returns Promise that resolves to the SSO provider
|
|
8
|
+
* @internal
|
|
9
|
+
*/ export async function getSSOProvider({ client, orgSlug }) {
|
|
10
|
+
const providers = await client.request({
|
|
11
|
+
uri: `/auth/organizations/by-slug/${orgSlug}/providers`
|
|
12
|
+
});
|
|
13
|
+
const enabledProviders = providers.filter((candidate)=>!candidate.disabled);
|
|
14
|
+
if (enabledProviders.length === 0) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
if (enabledProviders.length === 1) {
|
|
18
|
+
return samlProviderToLoginProvider(enabledProviders[0]);
|
|
19
|
+
}
|
|
20
|
+
const selectedProvider = await select({
|
|
21
|
+
choices: enabledProviders.map((provider)=>({
|
|
22
|
+
name: provider.name,
|
|
23
|
+
value: provider
|
|
24
|
+
})),
|
|
25
|
+
message: 'Select SSO provider'
|
|
26
|
+
});
|
|
27
|
+
return selectedProvider ? samlProviderToLoginProvider(selectedProvider) : undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=getSSOProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/auth/login/getSSOProvider.ts"],"sourcesContent":["import {select} from '@sanity/cli-core/ux'\nimport {type SanityClient} from '@sanity/client'\n\nimport {type LoginProvider, type SamlLoginProvider} from '../types.js'\nimport {samlProviderToLoginProvider} from './samlProviderToLoginProvider.js'\n\n/**\n * Get the SSO provider for the given slug\n *\n * @param options - Options for the provider resolve operation\n * @returns Promise that resolves to the SSO provider\n * @internal\n */\nexport async function getSSOProvider({\n client,\n orgSlug,\n}: {\n client: SanityClient\n orgSlug: string\n}): Promise<LoginProvider | undefined> {\n const providers = await client.request<SamlLoginProvider[]>({\n uri: `/auth/organizations/by-slug/${orgSlug}/providers`,\n })\n\n const enabledProviders = providers.filter((candidate) => !candidate.disabled)\n if (enabledProviders.length === 0) {\n return undefined\n }\n\n if (enabledProviders.length === 1) {\n return samlProviderToLoginProvider(enabledProviders[0])\n }\n\n const selectedProvider = await select({\n choices: enabledProviders.map((provider) => ({name: provider.name, value: provider})),\n message: 'Select SSO provider',\n })\n\n return selectedProvider ? samlProviderToLoginProvider(selectedProvider) : undefined\n}\n"],"names":["select","samlProviderToLoginProvider","getSSOProvider","client","orgSlug","providers","request","uri","enabledProviders","filter","candidate","disabled","length","undefined","selectedProvider","choices","map","provider","name","value","message"],"mappings":"AAAA,SAAQA,MAAM,QAAO,sBAAqB;AAI1C,SAAQC,2BAA2B,QAAO,mCAAkC;AAE5E;;;;;;CAMC,GACD,OAAO,eAAeC,eAAe,EACnCC,MAAM,EACNC,OAAO,EAIR;IACC,MAAMC,YAAY,MAAMF,OAAOG,OAAO,CAAsB;QAC1DC,KAAK,CAAC,4BAA4B,EAAEH,QAAQ,UAAU,CAAC;IACzD;IAEA,MAAMI,mBAAmBH,UAAUI,MAAM,CAAC,CAACC,YAAc,CAACA,UAAUC,QAAQ;IAC5E,IAAIH,iBAAiBI,MAAM,KAAK,GAAG;QACjC,OAAOC;IACT;IAEA,IAAIL,iBAAiBI,MAAM,KAAK,GAAG;QACjC,OAAOX,4BAA4BO,gBAAgB,CAAC,EAAE;IACxD;IAEA,MAAMM,mBAAmB,MAAMd,OAAO;QACpCe,SAASP,iBAAiBQ,GAAG,CAAC,CAACC,WAAc,CAAA;gBAACC,MAAMD,SAASC,IAAI;gBAAEC,OAAOF;YAAQ,CAAA;QAClFG,SAAS;IACX;IAEA,OAAON,mBAAmBb,4BAA4Ba,oBAAoBD;AAC5E"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { getCliToken, getGlobalCliClient, setConfig } from '@sanity/cli-core';
|
|
2
|
+
import { spinner } from '@sanity/cli-core/ux';
|
|
3
|
+
import open from 'open';
|
|
4
|
+
import { LoginTrace } from '../../../telemetry/login.telemetry.js';
|
|
5
|
+
import { canLaunchBrowser } from '../../../util/canLaunchBrowser.js';
|
|
6
|
+
import { startServerForTokenCallback } from '../authServer.js';
|
|
7
|
+
import { getProvider } from './getProvider.js';
|
|
8
|
+
const LOGIN_API_VERSION = '2024-02-01';
|
|
9
|
+
/**
|
|
10
|
+
* Trigger the authentication flow for the CLI.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: This uses terminal prompts and will not work for non-interactive/programmatic uses.
|
|
13
|
+
*
|
|
14
|
+
* @param options - Options for the login operation
|
|
15
|
+
* @returns Promise that resolves when the login operation is complete
|
|
16
|
+
* @throws Will throw if login fails or is cancelled
|
|
17
|
+
* @internal
|
|
18
|
+
*/ export async function login(options) {
|
|
19
|
+
const { output, telemetry } = options;
|
|
20
|
+
const previousToken = await getCliToken();
|
|
21
|
+
const hasExistingToken = Boolean(previousToken);
|
|
22
|
+
const trace = telemetry.trace(LoginTrace);
|
|
23
|
+
trace.start();
|
|
24
|
+
// We explicitly want to use an unauthenticated client here, even if we already logged in
|
|
25
|
+
const globalClient = await getGlobalCliClient({
|
|
26
|
+
apiVersion: LOGIN_API_VERSION
|
|
27
|
+
});
|
|
28
|
+
const client = globalClient.withConfig({
|
|
29
|
+
token: undefined
|
|
30
|
+
});
|
|
31
|
+
const provider = await getProvider({
|
|
32
|
+
client,
|
|
33
|
+
experimental: options.experimental,
|
|
34
|
+
orgSlug: options.sso,
|
|
35
|
+
specifiedProvider: options.provider
|
|
36
|
+
});
|
|
37
|
+
trace.log({
|
|
38
|
+
provider: provider?.name,
|
|
39
|
+
step: 'selectProvider'
|
|
40
|
+
});
|
|
41
|
+
if (provider === undefined) {
|
|
42
|
+
throw new Error('No authentication providers found');
|
|
43
|
+
}
|
|
44
|
+
const { loginUrl, server, token: tokenPromise } = await startServerForTokenCallback({
|
|
45
|
+
client,
|
|
46
|
+
providerUrl: provider.url
|
|
47
|
+
});
|
|
48
|
+
trace.log({
|
|
49
|
+
step: 'waitForToken'
|
|
50
|
+
});
|
|
51
|
+
const serverUrl = server.address();
|
|
52
|
+
if (!serverUrl || typeof serverUrl === 'string') {
|
|
53
|
+
// Note: `serverUrl` is string only when binding to unix sockets,
|
|
54
|
+
// thus we can safely assume Something Is Wrong™ if it's a string
|
|
55
|
+
throw new Error('Failed to start auth callback server');
|
|
56
|
+
}
|
|
57
|
+
// Open a browser on the login page (or tell the user to)
|
|
58
|
+
const shouldLaunchBrowser = canLaunchBrowser() && options.open !== false;
|
|
59
|
+
const actionText = shouldLaunchBrowser ? 'Opening browser at' : 'Please open a browser at';
|
|
60
|
+
output.log(`\n${actionText} ${loginUrl.href}\n`);
|
|
61
|
+
const spin = spinner('Waiting for browser login to complete... Press Ctrl + C to cancel').start();
|
|
62
|
+
if (shouldLaunchBrowser) {
|
|
63
|
+
open(loginUrl.href);
|
|
64
|
+
}
|
|
65
|
+
// Wait for a success/error on the HTTP callback server
|
|
66
|
+
let authToken;
|
|
67
|
+
try {
|
|
68
|
+
authToken = (await tokenPromise).token;
|
|
69
|
+
spin.stop();
|
|
70
|
+
} catch (err) {
|
|
71
|
+
spin.stop();
|
|
72
|
+
trace.error(err);
|
|
73
|
+
throw err instanceof Error ? new Error(`Login failed: ${err.message}`, {
|
|
74
|
+
cause: err
|
|
75
|
+
}) : new Error(`${err}`);
|
|
76
|
+
} finally{
|
|
77
|
+
server.close();
|
|
78
|
+
server.unref();
|
|
79
|
+
}
|
|
80
|
+
// Store the token
|
|
81
|
+
await setConfig('authToken', authToken);
|
|
82
|
+
// Clear cached telemetry consent
|
|
83
|
+
await setConfig('telemetryConsent', undefined);
|
|
84
|
+
// If we had a session previously, attempt to clear it
|
|
85
|
+
if (hasExistingToken) {
|
|
86
|
+
await globalClient.withConfig({
|
|
87
|
+
token: previousToken
|
|
88
|
+
}).request({
|
|
89
|
+
method: 'POST',
|
|
90
|
+
uri: '/auth/logout'
|
|
91
|
+
}).catch((err)=>{
|
|
92
|
+
const statusCode = err && err.response && err.response.statusCode;
|
|
93
|
+
if (statusCode !== 401) {
|
|
94
|
+
output.warn('Failed to invalidate previous session');
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
trace.complete();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/auth/login/login.ts"],"sourcesContent":["import {\n type CLITelemetryStore,\n getCliToken,\n getGlobalCliClient,\n type Output,\n setConfig,\n} from '@sanity/cli-core'\nimport {spinner} from '@sanity/cli-core/ux'\nimport open from 'open'\n\nimport {LoginTrace} from '../../../telemetry/login.telemetry.js'\nimport {canLaunchBrowser} from '../../../util/canLaunchBrowser.js'\nimport {startServerForTokenCallback} from '../authServer.js'\nimport {getProvider} from './getProvider.js'\n\nconst LOGIN_API_VERSION = '2024-02-01'\n\ninterface LoginOptions {\n output: Output\n\n telemetry: CLITelemetryStore\n\n experimental?: boolean\n open?: boolean\n provider?: string\n sso?: string\n}\n\n/**\n * Trigger the authentication flow for the CLI.\n *\n * NOTE: This uses terminal prompts and will not work for non-interactive/programmatic uses.\n *\n * @param options - Options for the login operation\n * @returns Promise that resolves when the login operation is complete\n * @throws Will throw if login fails or is cancelled\n * @internal\n */\nexport async function login(options: LoginOptions) {\n const {output, telemetry} = options\n const previousToken = await getCliToken()\n const hasExistingToken = Boolean(previousToken)\n\n const trace = telemetry.trace(LoginTrace)\n trace.start()\n\n // We explicitly want to use an unauthenticated client here, even if we already logged in\n const globalClient = await getGlobalCliClient({apiVersion: LOGIN_API_VERSION})\n const client = globalClient.withConfig({token: undefined})\n\n const provider = await getProvider({\n client,\n experimental: options.experimental,\n orgSlug: options.sso,\n specifiedProvider: options.provider,\n })\n\n trace.log({provider: provider?.name, step: 'selectProvider'})\n\n if (provider === undefined) {\n throw new Error('No authentication providers found')\n }\n\n const {\n loginUrl,\n server,\n token: tokenPromise,\n } = await startServerForTokenCallback({client, providerUrl: provider.url})\n\n trace.log({step: 'waitForToken'})\n\n const serverUrl = server.address()\n if (!serverUrl || typeof serverUrl === 'string') {\n // Note: `serverUrl` is string only when binding to unix sockets,\n // thus we can safely assume Something Is Wrong™ if it's a string\n throw new Error('Failed to start auth callback server')\n }\n\n // Open a browser on the login page (or tell the user to)\n const shouldLaunchBrowser = canLaunchBrowser() && options.open !== false\n const actionText = shouldLaunchBrowser ? 'Opening browser at' : 'Please open a browser at'\n\n output.log(`\\n${actionText} ${loginUrl.href}\\n`)\n\n const spin = spinner('Waiting for browser login to complete... Press Ctrl + C to cancel').start()\n\n if (shouldLaunchBrowser) {\n open(loginUrl.href)\n }\n\n // Wait for a success/error on the HTTP callback server\n let authToken: string\n try {\n authToken = (await tokenPromise).token\n spin.stop()\n } catch (err: unknown) {\n spin.stop()\n trace.error(err as Error)\n throw err instanceof Error\n ? new Error(`Login failed: ${err.message}`, {cause: err})\n : new Error(`${err}`)\n } finally {\n server.close()\n server.unref()\n }\n\n // Store the token\n await setConfig('authToken', authToken)\n\n // Clear cached telemetry consent\n await setConfig('telemetryConsent', undefined)\n\n // If we had a session previously, attempt to clear it\n if (hasExistingToken) {\n await globalClient\n .withConfig({token: previousToken})\n .request({method: 'POST', uri: '/auth/logout'})\n .catch((err) => {\n const statusCode = err && err.response && err.response.statusCode\n if (statusCode !== 401) {\n output.warn('Failed to invalidate previous session')\n }\n })\n }\n\n trace.complete()\n}\n"],"names":["getCliToken","getGlobalCliClient","setConfig","spinner","open","LoginTrace","canLaunchBrowser","startServerForTokenCallback","getProvider","LOGIN_API_VERSION","login","options","output","telemetry","previousToken","hasExistingToken","Boolean","trace","start","globalClient","apiVersion","client","withConfig","token","undefined","provider","experimental","orgSlug","sso","specifiedProvider","log","name","step","Error","loginUrl","server","tokenPromise","providerUrl","url","serverUrl","address","shouldLaunchBrowser","actionText","href","spin","authToken","stop","err","error","message","cause","close","unref","request","method","uri","catch","statusCode","response","warn","complete"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { select } from '@sanity/cli-core/ux';
|
|
2
|
+
/**
|
|
3
|
+
* Prompts the user to select a provider from the given list of providers,
|
|
4
|
+
* or if only one provider is available, returns that provider.
|
|
5
|
+
*
|
|
6
|
+
* @param providers - The list of login providers
|
|
7
|
+
* @returns The selected login provider
|
|
8
|
+
* @internal
|
|
9
|
+
*/ export async function promptProviders(providers) {
|
|
10
|
+
if (providers.length === 1) {
|
|
11
|
+
return providers[0];
|
|
12
|
+
}
|
|
13
|
+
const provider = await select({
|
|
14
|
+
choices: providers.map((choice)=>({
|
|
15
|
+
name: choice.title,
|
|
16
|
+
value: choice
|
|
17
|
+
})),
|
|
18
|
+
message: 'Please log in or create a new account'
|
|
19
|
+
});
|
|
20
|
+
return provider || providers[0];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=promptProviders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/auth/login/promptProviders.ts"],"sourcesContent":["import {select} from '@sanity/cli-core/ux'\n\nimport {type LoginProvider} from '../types.js'\n\n/**\n * Prompts the user to select a provider from the given list of providers,\n * or if only one provider is available, returns that provider.\n *\n * @param providers - The list of login providers\n * @returns The selected login provider\n * @internal\n */\nexport async function promptProviders(providers: LoginProvider[]): Promise<LoginProvider> {\n if (providers.length === 1) {\n return providers[0]\n }\n\n const provider = await select({\n choices: providers.map((choice) => ({name: choice.title, value: choice})),\n message: 'Please log in or create a new account',\n })\n\n return provider || providers[0]\n}\n"],"names":["select","promptProviders","providers","length","provider","choices","map","choice","name","title","value","message"],"mappings":"AAAA,SAAQA,MAAM,QAAO,sBAAqB;AAI1C;;;;;;;CAOC,GACD,OAAO,eAAeC,gBAAgBC,SAA0B;IAC9D,IAAIA,UAAUC,MAAM,KAAK,GAAG;QAC1B,OAAOD,SAAS,CAAC,EAAE;IACrB;IAEA,MAAME,WAAW,MAAMJ,OAAO;QAC5BK,SAASH,UAAUI,GAAG,CAAC,CAACC,SAAY,CAAA;gBAACC,MAAMD,OAAOE,KAAK;gBAAEC,OAAOH;YAAM,CAAA;QACtEI,SAAS;IACX;IAEA,OAAOP,YAAYF,SAAS,CAAC,EAAE;AACjC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a SAML login provider shape to a login provider shape
|
|
3
|
+
*
|
|
4
|
+
* @param saml - The SAML login provider
|
|
5
|
+
* @returns The login provider
|
|
6
|
+
* @internal
|
|
7
|
+
*/ export function samlProviderToLoginProvider(saml) {
|
|
8
|
+
return {
|
|
9
|
+
name: saml.name,
|
|
10
|
+
title: saml.name,
|
|
11
|
+
url: saml.loginUrl
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=samlProviderToLoginProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/auth/login/samlProviderToLoginProvider.ts"],"sourcesContent":["import {type LoginProvider, type SamlLoginProvider} from '../types.js'\n\n/**\n * Converts a SAML login provider shape to a login provider shape\n *\n * @param saml - The SAML login provider\n * @returns The login provider\n * @internal\n */\nexport function samlProviderToLoginProvider(saml: SamlLoginProvider): LoginProvider {\n return {\n name: saml.name,\n title: saml.name,\n url: saml.loginUrl,\n }\n}\n"],"names":["samlProviderToLoginProvider","saml","name","title","url","loginUrl"],"mappings":"AAEA;;;;;;CAMC,GACD,OAAO,SAASA,4BAA4BC,IAAuB;IACjE,OAAO;QACLC,MAAMD,KAAKC,IAAI;QACfC,OAAOF,KAAKC,IAAI;QAChBE,KAAKH,KAAKI,QAAQ;IACpB;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/auth/types.ts"],"sourcesContent":["/**\n * @internal\n */\nexport interface LoginProvider {\n name: string\n title: string\n url: string\n}\n\n/**\n * @internal\n */\nexport interface SamlLoginProvider {\n callbackUrl: string\n disabled: boolean\n id: string\n loginUrl: string\n name: string\n organizationId: string\n type: 'saml'\n}\n\n/**\n * @internal\n */\nexport interface ProvidersResponse {\n providers: LoginProvider[]\n}\n"],"names":[],"mappings":"AAAA;;CAEC,GAoBD;;CAEC,GACD,WAEC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { createWriteStream } from 'node:fs';
|
|
2
|
+
import { createGzip } from 'node:zlib';
|
|
3
|
+
import { pack } from 'tar-fs';
|
|
4
|
+
import { backupDownloadDebug } from './backupDownloadDebug.js';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a compressed tarball of the given directory and writes it to the specified file path
|
|
7
|
+
*
|
|
8
|
+
* @param tmpOutDir - The directory to archive
|
|
9
|
+
* @param outFilePath - The output file path for the compressed tarball
|
|
10
|
+
* @param progressCb - Callback function called with the number of bytes processed
|
|
11
|
+
*/ export function archiveDir(tmpOutDir, outFilePath, progressCb) {
|
|
12
|
+
return new Promise((resolve, reject)=>{
|
|
13
|
+
const archiveDestination = createWriteStream(outFilePath);
|
|
14
|
+
const gzipStream = createGzip();
|
|
15
|
+
let processedBytes = 0;
|
|
16
|
+
archiveDestination.on('error', (err)=>{
|
|
17
|
+
backupDownloadDebug('Archive destination error: %s', err.message);
|
|
18
|
+
reject(err);
|
|
19
|
+
});
|
|
20
|
+
archiveDestination.on('close', ()=>{
|
|
21
|
+
backupDownloadDebug('Archive completed successfully');
|
|
22
|
+
resolve();
|
|
23
|
+
});
|
|
24
|
+
gzipStream.on('error', (err)=>{
|
|
25
|
+
backupDownloadDebug('Gzip stream error: %s', err.message);
|
|
26
|
+
reject(err);
|
|
27
|
+
});
|
|
28
|
+
const tarStream = pack(tmpOutDir);
|
|
29
|
+
tarStream.on('error', (err)=>{
|
|
30
|
+
backupDownloadDebug('Tar stream error: %s', err.message);
|
|
31
|
+
reject(err);
|
|
32
|
+
});
|
|
33
|
+
// Track progress by listening to data events
|
|
34
|
+
tarStream.on('data', (chunk)=>{
|
|
35
|
+
processedBytes += chunk.length;
|
|
36
|
+
progressCb(processedBytes);
|
|
37
|
+
});
|
|
38
|
+
// Pipe tar -> gzip -> file
|
|
39
|
+
tarStream.pipe(gzipStream).pipe(archiveDestination);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=archiveDir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/backup/archiveDir.ts"],"sourcesContent":["import {createWriteStream} from 'node:fs'\nimport {createGzip} from 'node:zlib'\n\nimport {pack} from 'tar-fs'\n\nimport {backupDownloadDebug} from './backupDownloadDebug.js'\n\n// ProgressCb is a callback that is called with the number of bytes processed so far.\ntype ProgressCb = (processedBytes: number) => void\n\n/**\n * Creates a compressed tarball of the given directory and writes it to the specified file path\n *\n * @param tmpOutDir - The directory to archive\n * @param outFilePath - The output file path for the compressed tarball\n * @param progressCb - Callback function called with the number of bytes processed\n */\nexport function archiveDir(\n tmpOutDir: string,\n outFilePath: string,\n progressCb: ProgressCb,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const archiveDestination = createWriteStream(outFilePath)\n const gzipStream = createGzip()\n let processedBytes = 0\n\n archiveDestination.on('error', (err: Error) => {\n backupDownloadDebug('Archive destination error: %s', err.message)\n reject(err)\n })\n\n archiveDestination.on('close', () => {\n backupDownloadDebug('Archive completed successfully')\n resolve()\n })\n\n gzipStream.on('error', (err: Error) => {\n backupDownloadDebug('Gzip stream error: %s', err.message)\n reject(err)\n })\n\n const tarStream = pack(tmpOutDir)\n\n tarStream.on('error', (err: Error) => {\n backupDownloadDebug('Tar stream error: %s', err.message)\n reject(err)\n })\n\n // Track progress by listening to data events\n tarStream.on('data', (chunk: Buffer) => {\n processedBytes += chunk.length\n progressCb(processedBytes)\n })\n\n // Pipe tar -> gzip -> file\n tarStream.pipe(gzipStream).pipe(archiveDestination)\n })\n}\n"],"names":["createWriteStream","createGzip","pack","backupDownloadDebug","archiveDir","tmpOutDir","outFilePath","progressCb","Promise","resolve","reject","archiveDestination","gzipStream","processedBytes","on","err","message","tarStream","chunk","length","pipe"],"mappings":"AAAA,SAAQA,iBAAiB,QAAO,UAAS;AACzC,SAAQC,UAAU,QAAO,YAAW;AAEpC,SAAQC,IAAI,QAAO,SAAQ;AAE3B,SAAQC,mBAAmB,QAAO,2BAA0B;AAK5D;;;;;;CAMC,GACD,OAAO,SAASC,WACdC,SAAiB,EACjBC,WAAmB,EACnBC,UAAsB;IAEtB,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3B,MAAMC,qBAAqBX,kBAAkBM;QAC7C,MAAMM,aAAaX;QACnB,IAAIY,iBAAiB;QAErBF,mBAAmBG,EAAE,CAAC,SAAS,CAACC;YAC9BZ,oBAAoB,iCAAiCY,IAAIC,OAAO;YAChEN,OAAOK;QACT;QAEAJ,mBAAmBG,EAAE,CAAC,SAAS;YAC7BX,oBAAoB;YACpBM;QACF;QAEAG,WAAWE,EAAE,CAAC,SAAS,CAACC;YACtBZ,oBAAoB,yBAAyBY,IAAIC,OAAO;YACxDN,OAAOK;QACT;QAEA,MAAME,YAAYf,KAAKG;QAEvBY,UAAUH,EAAE,CAAC,SAAS,CAACC;YACrBZ,oBAAoB,wBAAwBY,IAAIC,OAAO;YACvDN,OAAOK;QACT;QAEA,6CAA6C;QAC7CE,UAAUH,EAAE,CAAC,QAAQ,CAACI;YACpBL,kBAAkBK,MAAMC,MAAM;YAC9BZ,WAAWM;QACb;QAEA,2BAA2B;QAC3BI,UAAUG,IAAI,CAACR,YAAYQ,IAAI,CAACT;IAClC;AACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ux } from '@oclif/core';
|
|
2
|
+
/**
|
|
3
|
+
* Asserts that a dataset exists in a list of datasets, exits if not found
|
|
4
|
+
*
|
|
5
|
+
* @param datasets - The list of datasets to check
|
|
6
|
+
* @param datasetName - The name of the dataset to check for
|
|
7
|
+
*/ export function assertDatasetExists(datasets, datasetName) {
|
|
8
|
+
const exists = datasets.some((d)=>d.name === datasetName);
|
|
9
|
+
if (!exists) {
|
|
10
|
+
ux.error(`Dataset '${datasetName}' not found in this project. Available datasets: ${datasets.map((d)=>d.name).join(', ')}`, {
|
|
11
|
+
exit: 1
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=assertDatasetExist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/backup/assertDatasetExist.ts"],"sourcesContent":["import {ux} from '@oclif/core'\nimport {type DatasetsResponse} from '@sanity/client'\n\n/**\n * Asserts that a dataset exists in a list of datasets, exits if not found\n *\n * @param datasets - The list of datasets to check\n * @param datasetName - The name of the dataset to check for\n */\nexport function assertDatasetExists(datasets: DatasetsResponse, datasetName: string): void {\n const exists = datasets.some((d) => d.name === datasetName)\n if (!exists) {\n ux.error(\n `Dataset '${datasetName}' not found in this project. Available datasets: ${datasets.map((d) => d.name).join(', ')}`,\n {exit: 1},\n )\n }\n}\n"],"names":["ux","assertDatasetExists","datasets","datasetName","exists","some","d","name","error","map","join","exit"],"mappings":"AAAA,SAAQA,EAAE,QAAO,cAAa;AAG9B;;;;;CAKC,GACD,OAAO,SAASC,oBAAoBC,QAA0B,EAAEC,WAAmB;IACjF,MAAMC,SAASF,SAASG,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ;IAC/C,IAAI,CAACC,QAAQ;QACXJ,GAAGQ,KAAK,CACN,CAAC,SAAS,EAAEL,YAAY,iDAAiD,EAAED,SAASO,GAAG,CAAC,CAACH,IAAMA,EAAEC,IAAI,EAAEG,IAAI,CAAC,OAAO,EACnH;YAACC,MAAM;QAAC;IAEZ;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/backup/backupDownloadDebug.ts"],"sourcesContent":["import {subdebug} from '@sanity/cli-core'\n\nexport const backupDownloadDebug = subdebug('backup:download')\n"],"names":["subdebug","backupDownloadDebug"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AAEzC,OAAO,MAAMC,sBAAsBD,SAAS,mBAAkB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { rm } from 'node:fs/promises';
|
|
2
|
+
import { backupDownloadDebug } from './backupDownloadDebug.js';
|
|
3
|
+
/**
|
|
4
|
+
* Removes the temporary directory and all its contents
|
|
5
|
+
*
|
|
6
|
+
* @param tmpDir - Path to the temporary directory to clean up
|
|
7
|
+
*/ export async function cleanupTmpDir(tmpDir) {
|
|
8
|
+
try {
|
|
9
|
+
await rm(tmpDir, {
|
|
10
|
+
force: true,
|
|
11
|
+
recursive: true
|
|
12
|
+
});
|
|
13
|
+
} catch (err) {
|
|
14
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
15
|
+
backupDownloadDebug(`Error cleaning up temporary files: ${message}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=cleanupTmpDir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/backup/cleanupTmpDir.ts"],"sourcesContent":["import {rm} from 'node:fs/promises'\n\nimport {backupDownloadDebug} from './backupDownloadDebug.js'\n\n/**\n * Removes the temporary directory and all its contents\n *\n * @param tmpDir - Path to the temporary directory to clean up\n */\nexport async function cleanupTmpDir(tmpDir: string): Promise<void> {\n try {\n await rm(tmpDir, {force: true, recursive: true})\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n backupDownloadDebug(`Error cleaning up temporary files: ${message}`)\n }\n}\n"],"names":["rm","backupDownloadDebug","cleanupTmpDir","tmpDir","force","recursive","err","message","Error","String"],"mappings":"AAAA,SAAQA,EAAE,QAAO,mBAAkB;AAEnC,SAAQC,mBAAmB,QAAO,2BAA0B;AAE5D;;;;CAIC,GACD,OAAO,eAAeC,cAAcC,MAAc;IAChD,IAAI;QACF,MAAMH,GAAGG,QAAQ;YAACC,OAAO;YAAMC,WAAW;QAAI;IAChD,EAAE,OAAOC,KAAK;QACZ,MAAMC,UAAUD,eAAeE,QAAQF,IAAIC,OAAO,GAAGE,OAAOH;QAC5DL,oBAAoB,CAAC,mCAAmC,EAAEM,SAAS;IACrE;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/backup/constants.ts"],"sourcesContent":["export const BACKUP_API_VERSION = 'v2025-08-29'\n"],"names":["BACKUP_API_VERSION"],"mappings":"AAAA,OAAO,MAAMA,qBAAqB,cAAa"}
|