@sanity/cli 6.0.0-alpha.9 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +602 -258
- package/bin/run.js +2 -0
- package/dist/SanityHelp.js +51 -23
- package/dist/SanityHelp.js.map +1 -1
- package/dist/actions/auth/authServer.js +28 -22
- package/dist/actions/auth/authServer.js.map +1 -1
- package/dist/actions/auth/login/getProvider.js +49 -38
- package/dist/actions/auth/login/getProvider.js.map +1 -1
- package/dist/actions/auth/login/getSSOProvider.js +25 -19
- package/dist/actions/auth/login/getSSOProvider.js.map +1 -1
- package/dist/actions/auth/login/login.js +12 -33
- package/dist/actions/auth/login/login.js.map +1 -1
- package/dist/actions/auth/types.js.map +1 -1
- package/dist/actions/backup/downloadAsset.js +9 -9
- package/dist/actions/backup/downloadAsset.js.map +1 -1
- package/dist/actions/backup/downloadDocument.js +8 -8
- package/dist/actions/backup/downloadDocument.js.map +1 -1
- package/dist/actions/build/buildApp.js +55 -18
- package/dist/actions/build/buildApp.js.map +1 -1
- package/dist/actions/build/buildStaticFiles.js +3 -2
- package/dist/actions/build/buildStaticFiles.js.map +1 -1
- package/dist/actions/build/buildStudio.js +72 -44
- package/dist/actions/build/buildStudio.js.map +1 -1
- package/dist/actions/build/buildVendorDependencies.js +18 -52
- package/dist/actions/build/buildVendorDependencies.js.map +1 -1
- package/dist/actions/build/checkRequiredDependencies.js +13 -8
- package/dist/actions/build/checkRequiredDependencies.js.map +1 -1
- package/dist/actions/build/checkStudioDependencyVersions.js +19 -17
- package/dist/actions/build/checkStudioDependencyVersions.js.map +1 -1
- package/dist/actions/build/createExternalFromImportMap.js +1 -1
- package/dist/actions/build/createExternalFromImportMap.js.map +1 -1
- package/dist/actions/build/determineBasePath.js +5 -2
- package/dist/actions/build/determineBasePath.js.map +1 -1
- package/dist/actions/build/getViteConfig.js +47 -4
- package/dist/actions/build/getViteConfig.js.map +1 -1
- package/dist/actions/build/handlePrereleaseVersions.js +44 -0
- package/dist/actions/build/handlePrereleaseVersions.js.map +1 -0
- package/dist/actions/build/renderDocument.js +6 -10
- package/dist/actions/build/renderDocument.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js +4 -4
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js +3 -3
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js +1 -0
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js +2 -2
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js +1 -1
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js.map +1 -1
- package/dist/actions/build/shouldAutoUpdate.js +2 -0
- package/dist/actions/build/shouldAutoUpdate.js.map +1 -1
- package/dist/actions/build/types.js.map +1 -1
- package/dist/actions/build/writeFavicons.js +3 -5
- package/dist/actions/build/writeFavicons.js.map +1 -1
- package/dist/actions/build/writeSanityRuntime.js +4 -3
- package/dist/actions/build/writeSanityRuntime.js.map +1 -1
- package/dist/actions/codemods/reactIconsV3.js +2 -2
- package/dist/actions/codemods/reactIconsV3.js.map +1 -1
- package/dist/actions/dataset/create.js +7 -1
- package/dist/actions/dataset/create.js.map +1 -1
- package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -1
- package/dist/actions/dataset/resolveDataset.js +26 -0
- package/dist/actions/dataset/resolveDataset.js.map +1 -0
- package/dist/actions/debug/formatters.js +22 -0
- package/dist/actions/debug/formatters.js.map +1 -0
- package/dist/actions/deploy/createStudioUserApplication.js +17 -4
- package/dist/actions/deploy/createStudioUserApplication.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +41 -15
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/deploy/deployStudio.js +92 -44
- package/dist/actions/deploy/deployStudio.js.map +1 -1
- package/dist/actions/deploy/deployStudioSchemasAndManifests.js +55 -0
- package/dist/actions/deploy/deployStudioSchemasAndManifests.js.map +1 -0
- package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js +120 -0
- package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js.map +1 -0
- package/dist/actions/deploy/findUserApplicationForStudio.js +35 -12
- package/dist/actions/deploy/findUserApplicationForStudio.js.map +1 -1
- package/dist/actions/deploy/types.js +10 -1
- package/dist/actions/deploy/types.js.map +1 -1
- package/dist/actions/deploy/urlUtils.js +21 -0
- package/dist/actions/deploy/urlUtils.js.map +1 -0
- package/dist/actions/dev/getDashboardAppUrl.js +48 -0
- package/dist/actions/dev/getDashboardAppUrl.js.map +1 -0
- package/dist/actions/dev/getDevServerConfig.js +7 -3
- package/dist/actions/dev/getDevServerConfig.js.map +1 -1
- package/dist/actions/dev/startAppDevServer.js +3 -3
- package/dist/actions/dev/startAppDevServer.js.map +1 -1
- package/dist/actions/dev/startStudioDevServer.js +14 -14
- package/dist/actions/dev/startStudioDevServer.js.map +1 -1
- package/dist/actions/doctor/checks/cliInstallation.js +56 -0
- package/dist/actions/doctor/checks/cliInstallation.js.map +1 -0
- package/dist/actions/doctor/checks/index.js +16 -0
- package/dist/actions/doctor/checks/index.js.map +1 -0
- package/dist/actions/doctor/runDoctorChecks.js +56 -0
- package/dist/actions/doctor/runDoctorChecks.js.map +1 -0
- package/dist/actions/doctor/types.js +3 -0
- package/dist/actions/doctor/types.js.map +1 -0
- package/dist/actions/documents/types.js.map +1 -1
- package/dist/actions/documents/validate.js +11 -2
- package/dist/actions/documents/validate.js.map +1 -1
- package/dist/actions/documents/validateDocuments.worker.js +4 -4
- package/dist/actions/documents/validateDocuments.worker.js.map +1 -1
- package/dist/actions/documents/validation/reporters/jsonReporter.js +1 -1
- package/dist/actions/documents/validation/reporters/jsonReporter.js.map +1 -1
- package/dist/actions/documents/validation/reporters/ndjsonReporter.js +1 -1
- package/dist/actions/documents/validation/reporters/ndjsonReporter.js.map +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js.map +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/tree.js +108 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/tree.js.map +1 -0
- package/dist/actions/graphql/SchemaError.js +4 -26
- package/dist/actions/graphql/SchemaError.js.map +1 -1
- package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js +540 -0
- package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js.map +1 -0
- package/dist/actions/graphql/__tests__/fixtures/test-studio.js +1143 -0
- package/dist/actions/graphql/__tests__/fixtures/test-studio.js.map +1 -0
- package/dist/actions/graphql/__tests__/fixtures/union-refs.js +591 -0
- package/dist/actions/graphql/__tests__/fixtures/union-refs.js.map +1 -0
- package/dist/actions/graphql/__tests__/helpers.js +23 -0
- package/dist/actions/graphql/__tests__/helpers.js.map +1 -0
- package/dist/actions/graphql/extractFromSanitySchema.js +5 -5
- package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -1
- package/dist/actions/graphql/extractGraphQLAPIs.js +150 -0
- package/dist/actions/graphql/extractGraphQLAPIs.js.map +1 -0
- package/dist/actions/graphql/extractGraphQLAPIs.worker.js +12 -0
- package/dist/actions/graphql/extractGraphQLAPIs.worker.js.map +1 -0
- package/dist/actions/graphql/gen1/generateTypeFilters.js +1 -1
- package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -1
- package/dist/actions/graphql/gen1/generateTypeQueries.js +2 -1
- package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen1/index.js +5 -5
- package/dist/actions/graphql/gen1/index.js.map +1 -1
- package/dist/actions/graphql/gen2/generateTypeQueries.js +1 -1
- package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen2/index.js +6 -6
- package/dist/actions/graphql/gen2/index.js.map +1 -1
- package/dist/actions/graphql/gen3/generateTypeQueries.js +3 -4
- package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen3/index.js +6 -7
- package/dist/actions/graphql/gen3/index.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.js +15 -57
- package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.worker.js +75 -106
- package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -1
- package/dist/actions/graphql/helpers.js +13 -0
- package/dist/actions/graphql/helpers.js.map +1 -1
- package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js +187 -0
- package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js.map +1 -0
- package/dist/actions/graphql/types.js +1 -1
- package/dist/actions/graphql/types.js.map +1 -1
- package/dist/actions/init/bootstrapLocalTemplate.js +10 -8
- package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
- package/dist/actions/init/bootstrapRemoteTemplate.js +6 -5
- package/dist/actions/init/bootstrapRemoteTemplate.js.map +1 -1
- package/dist/actions/init/bootstrapTemplate.js.map +1 -1
- package/dist/actions/init/checkNextJsReactCompatibility.js +1 -1
- package/dist/actions/init/checkNextJsReactCompatibility.js.map +1 -1
- package/dist/actions/init/createAppCliConfig.js.map +1 -1
- package/dist/actions/init/createCliConfig.js.map +1 -1
- package/dist/actions/init/createPackageManifest.js +21 -9
- package/dist/actions/init/createPackageManifest.js.map +1 -1
- package/dist/actions/init/remoteTemplate.js +1 -2
- package/dist/actions/init/remoteTemplate.js.map +1 -1
- package/dist/actions/init/sdkAppDependencies.js +19 -0
- package/dist/actions/init/sdkAppDependencies.js.map +1 -0
- package/dist/actions/init/studioDependencies.js.map +1 -0
- package/dist/actions/init/templates/appQuickstart.js +1 -22
- package/dist/actions/init/templates/appQuickstart.js.map +1 -1
- package/dist/actions/init/templates/appSanityUi.js +3 -22
- package/dist/actions/init/templates/appSanityUi.js.map +1 -1
- package/dist/actions/init/types.js.map +1 -1
- package/dist/actions/manifest/SchemaIcon.js +6 -4
- package/dist/actions/manifest/SchemaIcon.js.map +1 -1
- package/dist/actions/manifest/blockTypeTransformer.js +67 -0
- package/dist/actions/manifest/blockTypeTransformer.js.map +1 -0
- package/dist/actions/manifest/debug.js +4 -0
- package/dist/actions/manifest/debug.js.map +1 -0
- package/dist/actions/manifest/extractAppManifest.js +39 -22
- package/dist/actions/manifest/extractAppManifest.js.map +1 -1
- package/dist/actions/manifest/extractManifest.js +27 -78
- package/dist/actions/manifest/extractManifest.js.map +1 -1
- package/dist/actions/manifest/extractManifest.worker.js +30 -0
- package/dist/actions/manifest/extractManifest.worker.js.map +1 -0
- package/dist/actions/manifest/extractWorkspaceManifest.js +31 -372
- package/dist/actions/manifest/extractWorkspaceManifest.js.map +1 -1
- package/dist/actions/manifest/iconResolver.js +30 -0
- package/dist/actions/manifest/iconResolver.js.map +1 -0
- package/dist/actions/manifest/referenceTransformer.js +51 -0
- package/dist/actions/manifest/referenceTransformer.js.map +1 -0
- package/dist/actions/manifest/schemaTypeHelpers.js +2 -2
- package/dist/actions/manifest/schemaTypeHelpers.js.map +1 -1
- package/dist/actions/manifest/schemaTypeTransformer.js +168 -0
- package/dist/actions/manifest/schemaTypeTransformer.js.map +1 -0
- package/dist/actions/manifest/transformerUtils.js +40 -0
- package/dist/actions/manifest/transformerUtils.js.map +1 -0
- package/dist/actions/manifest/types.js +5 -0
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/manifest/validationTransformer.js +84 -0
- package/dist/actions/manifest/validationTransformer.js.map +1 -0
- package/dist/actions/manifest/writeManifestFile.js +30 -0
- package/dist/actions/manifest/writeManifestFile.js.map +1 -0
- package/dist/actions/manifest/writeWorkspaceFiles.js +30 -0
- package/dist/actions/manifest/writeWorkspaceFiles.js.map +1 -0
- package/dist/actions/mcp/detectAvailableEditors.js +16 -4
- package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
- package/dist/actions/mcp/editorConfigs.js +64 -6
- package/dist/actions/mcp/editorConfigs.js.map +1 -1
- package/dist/actions/mcp/setupMCP.js.map +1 -1
- package/dist/actions/mcp/writeMCPConfig.js +27 -15
- package/dist/actions/mcp/writeMCPConfig.js.map +1 -1
- package/dist/actions/media/buildNdjsonIndex.js +32 -0
- package/dist/actions/media/buildNdjsonIndex.js.map +1 -0
- package/dist/actions/media/importAspects.js +2 -11
- package/dist/actions/media/importAspects.js.map +1 -1
- package/dist/actions/media/importMedia.js +22 -18
- package/dist/actions/media/importMedia.js.map +1 -1
- package/dist/actions/organizations/findOrganizationByUserName.js +5 -0
- package/dist/actions/organizations/findOrganizationByUserName.js.map +1 -0
- package/dist/actions/organizations/getOrganization.js +3 -2
- package/dist/actions/organizations/getOrganization.js.map +1 -1
- package/dist/actions/organizations/getOrganizationChoices.js +27 -19
- package/dist/actions/organizations/getOrganizationChoices.js.map +1 -1
- package/dist/actions/organizations/types.js +3 -0
- package/dist/actions/organizations/types.js.map +1 -0
- package/dist/actions/projects/getManageUrl.js +1 -2
- package/dist/actions/projects/getManageUrl.js.map +1 -1
- package/dist/actions/schema/deleteSchemaAction.js +14 -30
- package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
- package/dist/actions/schema/deploySchemas.js +22 -91
- package/dist/actions/schema/deploySchemas.js.map +1 -1
- package/dist/actions/schema/extractSanitySchema.worker.js +0 -5
- package/dist/actions/schema/extractSanitySchema.worker.js.map +1 -1
- package/dist/actions/schema/extractSanityWorkspace.worker.js +24 -0
- package/dist/actions/schema/extractSanityWorkspace.worker.js.map +1 -0
- package/dist/actions/schema/extractSchema.js +8 -40
- package/dist/actions/schema/extractSchema.js.map +1 -1
- package/dist/actions/schema/extractSchemaWatcher.js +128 -0
- package/dist/actions/schema/extractSchemaWatcher.js.map +1 -0
- package/dist/actions/schema/formatSchemaValidation.js +5 -1
- package/dist/actions/schema/formatSchemaValidation.js.map +1 -1
- package/dist/actions/schema/getExtractOptions.js +16 -0
- package/dist/actions/schema/getExtractOptions.js.map +1 -0
- package/dist/actions/schema/listSchemas.js +53 -56
- package/dist/actions/schema/listSchemas.js.map +1 -1
- package/dist/actions/schema/matchSchemaPattern.js +22 -0
- package/dist/actions/schema/matchSchemaPattern.js.map +1 -0
- package/dist/actions/schema/runSchemaExtraction.js +39 -0
- package/dist/actions/schema/runSchemaExtraction.js.map +1 -0
- package/dist/actions/schema/types.js +8 -0
- package/dist/actions/schema/types.js.map +1 -1
- package/dist/actions/schema/uniqueWorkspaces.worker.js +24 -0
- package/dist/actions/schema/uniqueWorkspaces.worker.js.map +1 -0
- package/dist/actions/schema/updateWorkspaceSchema.js +63 -0
- package/dist/actions/schema/updateWorkspaceSchema.js.map +1 -0
- package/dist/actions/schema/uploadSchemaToLexicon.js +87 -0
- package/dist/actions/schema/uploadSchemaToLexicon.js.map +1 -0
- package/dist/actions/schema/utils/SchemaExtractionError.js +10 -0
- package/dist/actions/schema/utils/SchemaExtractionError.js.map +1 -0
- package/dist/actions/schema/utils/schemaStoreValidation.js +1 -15
- package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -1
- package/dist/actions/schema/validateSchema.worker.js +1 -8
- package/dist/actions/schema/validateSchema.worker.js.map +1 -1
- package/dist/actions/schema/watchExtractSchema.js +72 -0
- package/dist/actions/schema/watchExtractSchema.js.map +1 -0
- package/dist/actions/telemetry/isTrueish.js +10 -0
- package/dist/actions/telemetry/isTrueish.js.map +1 -0
- package/dist/actions/telemetry/resolveConsent.js +2 -1
- package/dist/actions/telemetry/resolveConsent.js.map +1 -1
- package/dist/actions/telemetry/setConsent.js +2 -1
- package/dist/actions/telemetry/setConsent.js.map +1 -1
- package/dist/actions/users/getMembersForProject.js.map +1 -1
- package/dist/actions/users/getPendingInvitations.js +1 -1
- package/dist/actions/users/getPendingInvitations.js.map +1 -1
- package/dist/actions/users/types.js.map +1 -1
- package/dist/actions/versions/filterSanityModules.js.map +1 -1
- package/dist/actions/versions/findSanityModulesVersions.js +2 -3
- package/dist/actions/versions/findSanityModulesVersions.js.map +1 -1
- package/dist/actions/versions/getFormatters.js +1 -1
- package/dist/actions/versions/getFormatters.js.map +1 -1
- package/dist/actions/versions/tryFindLatestVersion.js +1 -1
- package/dist/actions/versions/tryFindLatestVersion.js.map +1 -1
- package/dist/commands/backup/disable.js +22 -7
- package/dist/commands/backup/disable.js.map +1 -1
- package/dist/commands/backup/download.js +19 -10
- package/dist/commands/backup/download.js.map +1 -1
- package/dist/commands/backup/enable.js +22 -7
- package/dist/commands/backup/enable.js.map +1 -1
- package/dist/commands/backup/list.js +20 -8
- package/dist/commands/backup/list.js.map +1 -1
- package/dist/commands/build.js +2 -5
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cors/add.js +20 -7
- package/dist/commands/cors/add.js.map +1 -1
- package/dist/commands/cors/delete.js +22 -7
- package/dist/commands/cors/delete.js.map +1 -1
- package/dist/commands/cors/list.js +22 -7
- package/dist/commands/cors/list.js.map +1 -1
- package/dist/commands/dataset/alias/create.js +26 -7
- package/dist/commands/dataset/alias/create.js.map +1 -1
- package/dist/commands/dataset/alias/delete.js +20 -7
- package/dist/commands/dataset/alias/delete.js.map +1 -1
- package/dist/commands/dataset/alias/link.js +20 -7
- package/dist/commands/dataset/alias/link.js.map +1 -1
- package/dist/commands/dataset/alias/unlink.js +20 -7
- package/dist/commands/dataset/alias/unlink.js.map +1 -1
- package/dist/commands/dataset/copy.js +45 -30
- package/dist/commands/dataset/copy.js.map +1 -1
- package/dist/commands/dataset/create.js +32 -7
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/dataset/delete.js +16 -7
- package/dist/commands/dataset/delete.js.map +1 -1
- package/dist/commands/dataset/embeddings/disable.js +77 -0
- package/dist/commands/dataset/embeddings/disable.js.map +1 -0
- package/dist/commands/dataset/embeddings/enable.js +141 -0
- package/dist/commands/dataset/embeddings/enable.js.map +1 -0
- package/dist/commands/dataset/embeddings/status.js +72 -0
- package/dist/commands/dataset/embeddings/status.js.map +1 -0
- package/dist/commands/dataset/export.js +25 -16
- package/dist/commands/dataset/export.js.map +1 -1
- package/dist/commands/dataset/import.js +306 -1
- package/dist/commands/dataset/import.js.map +1 -1
- package/dist/commands/dataset/list.js +22 -7
- package/dist/commands/dataset/list.js.map +1 -1
- package/dist/commands/dataset/visibility/get.js +18 -7
- package/dist/commands/dataset/visibility/get.js.map +1 -1
- package/dist/commands/dataset/visibility/set.js +22 -7
- package/dist/commands/dataset/visibility/set.js.map +1 -1
- package/dist/commands/debug.js +4 -2
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/deploy.js +22 -11
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.js +2 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.js +125 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/documents/create.js +19 -12
- package/dist/commands/documents/create.js.map +1 -1
- package/dist/commands/documents/delete.js +19 -12
- package/dist/commands/documents/delete.js.map +1 -1
- package/dist/commands/documents/get.js +17 -12
- package/dist/commands/documents/get.js.map +1 -1
- package/dist/commands/documents/query.js +26 -18
- package/dist/commands/documents/query.js.map +1 -1
- package/dist/commands/documents/validate.js +32 -10
- package/dist/commands/documents/validate.js.map +1 -1
- package/dist/commands/graphql/deploy.js +58 -30
- package/dist/commands/graphql/deploy.js.map +1 -1
- package/dist/commands/graphql/list.js +15 -7
- package/dist/commands/graphql/list.js.map +1 -1
- package/dist/commands/graphql/undeploy.js +37 -19
- package/dist/commands/graphql/undeploy.js.map +1 -1
- package/dist/commands/hook/attempt.js +22 -7
- package/dist/commands/hook/attempt.js.map +1 -1
- package/dist/commands/hook/create.js +23 -8
- package/dist/commands/hook/create.js.map +1 -1
- package/dist/commands/hook/delete.js +22 -7
- package/dist/commands/hook/delete.js.map +1 -1
- package/dist/commands/hook/list.js +22 -7
- package/dist/commands/hook/list.js.map +1 -1
- package/dist/commands/hook/logs.js +21 -8
- package/dist/commands/hook/logs.js.map +1 -1
- package/dist/commands/init.js +46 -28
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +19 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +8 -6
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/manage.js +0 -1
- package/dist/commands/manage.js.map +1 -1
- package/dist/commands/manifest/extract.js +14 -10
- package/dist/commands/manifest/extract.js.map +1 -1
- package/dist/commands/mcp/configure.js +1 -1
- package/dist/commands/mcp/configure.js.map +1 -1
- package/dist/commands/media/create-aspect.js +4 -4
- package/dist/commands/media/create-aspect.js.map +1 -1
- package/dist/commands/media/delete-aspect.js +9 -7
- package/dist/commands/media/delete-aspect.js.map +1 -1
- package/dist/commands/media/deploy-aspect.js +22 -9
- package/dist/commands/media/deploy-aspect.js.map +1 -1
- package/dist/commands/media/export.js +9 -7
- package/dist/commands/media/export.js.map +1 -1
- package/dist/commands/media/import.js +10 -8
- package/dist/commands/media/import.js.map +1 -1
- package/dist/commands/preview.js +2 -4
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/projects/list.js +2 -1
- package/dist/commands/projects/list.js.map +1 -1
- package/dist/commands/schema/delete.js +33 -34
- package/dist/commands/schema/delete.js.map +1 -1
- package/dist/commands/schema/deploy.js +19 -30
- package/dist/commands/schema/deploy.js.map +1 -1
- package/dist/commands/schema/extract.js +32 -4
- package/dist/commands/schema/extract.js.map +1 -1
- package/dist/commands/schema/list.js +10 -31
- package/dist/commands/schema/list.js.map +1 -1
- package/dist/commands/tokens/add.js +24 -7
- package/dist/commands/tokens/add.js.map +1 -1
- package/dist/commands/tokens/delete.js +20 -7
- package/dist/commands/tokens/delete.js.map +1 -1
- package/dist/commands/tokens/list.js +20 -7
- package/dist/commands/tokens/list.js.map +1 -1
- package/dist/commands/users/invite.js +24 -7
- package/dist/commands/users/invite.js.map +1 -1
- package/dist/commands/users/list.js +76 -33
- package/dist/commands/users/list.js.map +1 -1
- package/dist/commands/versions.js +1 -1
- package/dist/commands/versions.js.map +1 -1
- package/dist/config/createCliConfig.js +1 -2
- package/dist/config/createCliConfig.js.map +1 -1
- package/dist/exports/_internal.d.ts +132 -0
- package/dist/exports/_internal.js +4 -0
- package/dist/exports/_internal.js.map +1 -0
- package/dist/exports/index.d.ts +113 -0
- package/dist/exports/index.js +6 -0
- package/dist/exports/index.js.map +1 -0
- package/dist/hooks/init/checkForUpdates.js +14 -0
- package/dist/hooks/init/checkForUpdates.js.map +1 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js +1 -1
- package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -1
- package/dist/hooks/prerun/injectEnvVariables.js +9 -1
- package/dist/hooks/prerun/injectEnvVariables.js.map +1 -1
- package/dist/hooks/prerun/setupTelemetry.js +9 -3
- package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
- package/dist/prompts/promptForProject.js +64 -0
- package/dist/prompts/promptForProject.js.map +1 -0
- package/dist/{actions/auth/login/promptProviders.js → prompts/promptForProviders.js} +3 -3
- package/dist/prompts/promptForProviders.js.map +1 -0
- package/dist/prompts/selectMediaLibrary.js +1 -1
- package/dist/prompts/selectMediaLibrary.js.map +1 -1
- package/dist/server/devServer.js +4 -2
- package/dist/server/devServer.js.map +1 -1
- package/dist/server/previewServer.js +2 -2
- package/dist/server/previewServer.js.map +1 -1
- package/dist/server/vite/plugin-schema-extraction.js +201 -0
- package/dist/server/vite/plugin-schema-extraction.js.map +1 -0
- package/dist/server/vite/plugin-typegen.js +217 -0
- package/dist/server/vite/plugin-typegen.js.map +1 -0
- package/dist/services/auth.js +42 -3
- package/dist/services/auth.js.map +1 -1
- package/dist/services/datasets.js +7 -5
- package/dist/services/datasets.js.map +1 -1
- package/dist/services/docs.js +2 -2
- package/dist/services/docs.js.map +1 -1
- package/dist/services/embeddings.js +25 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/getUrlHeaders.js +7 -18
- package/dist/services/getUrlHeaders.js.map +1 -1
- package/dist/services/grants.js +13 -0
- package/dist/services/grants.js.map +1 -0
- package/dist/services/graphql.js +1 -1
- package/dist/services/graphql.js.map +1 -1
- package/dist/services/projects.js +4 -2
- package/dist/services/projects.js.map +1 -1
- package/dist/services/schemas.js +1 -1
- package/dist/services/schemas.js.map +1 -1
- package/dist/services/telemetry.js +2 -1
- package/dist/services/telemetry.js.map +1 -1
- package/dist/services/userApplications.js +21 -6
- package/dist/services/userApplications.js.map +1 -1
- package/dist/telemetry/extractSchema.telemetry.js +10 -0
- package/dist/telemetry/extractSchema.telemetry.js.map +1 -1
- package/dist/types/grants.js +3 -0
- package/dist/types/grants.js.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/util/checkProjectPermissions.js +21 -0
- package/dist/util/checkProjectPermissions.js.map +1 -0
- package/dist/util/cliClient.js +5 -3
- package/dist/util/cliClient.js.map +1 -1
- package/dist/util/compareDependencyVersions.js +74 -38
- package/dist/util/compareDependencyVersions.js.map +1 -1
- package/dist/util/createExpiringConfig.js +64 -0
- package/dist/util/createExpiringConfig.js.map +1 -0
- package/dist/util/detectFramework.js +135 -0
- package/dist/util/detectFramework.js.map +1 -0
- package/dist/util/errorMessages.js +0 -1
- package/dist/util/errorMessages.js.map +1 -1
- package/dist/util/extractDocumentsFromNdjsonOrTarball.js +1 -2
- package/dist/util/extractDocumentsFromNdjsonOrTarball.js.map +1 -1
- package/dist/util/getCliVersion.js +1 -1
- package/dist/util/getCliVersion.js.map +1 -1
- package/dist/util/getLocalPackageVersion.js +31 -23
- package/dist/util/getLocalPackageVersion.js.map +1 -1
- package/dist/util/getProjectDefaults.js.map +1 -1
- package/dist/util/getSharedServerConfig.js +1 -0
- package/dist/util/getSharedServerConfig.js.map +1 -1
- package/dist/util/getWorkspace.js +1 -1
- package/dist/util/getWorkspace.js.map +1 -1
- package/dist/util/isSchemaError.js +11 -0
- package/dist/util/isSchemaError.js.map +1 -0
- package/dist/util/isTar.js +8 -0
- package/dist/util/isTar.js.map +1 -0
- package/dist/util/packageManager/getPeerDependencies.js +44 -0
- package/dist/util/packageManager/getPeerDependencies.js.map +1 -0
- package/dist/util/packageManager/installationInfo/analyzeIssues.js +225 -0
- package/dist/util/packageManager/installationInfo/analyzeIssues.js.map +1 -0
- package/dist/util/packageManager/installationInfo/commands.js +73 -0
- package/dist/util/packageManager/installationInfo/commands.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectCliInstallation.js +66 -0
- package/dist/util/packageManager/installationInfo/detectCliInstallation.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectGlobals.js +295 -0
- package/dist/util/packageManager/installationInfo/detectGlobals.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectPackages.js +190 -0
- package/dist/util/packageManager/installationInfo/detectPackages.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectWorkspace.js +192 -0
- package/dist/util/packageManager/installationInfo/detectWorkspace.js.map +1 -0
- package/dist/util/packageManager/installationInfo/index.js +4 -0
- package/dist/util/packageManager/installationInfo/index.js.map +1 -0
- package/dist/util/packageManager/installationInfo/readJsonFile.js +14 -0
- package/dist/util/packageManager/installationInfo/readJsonFile.js.map +1 -0
- package/dist/util/packageManager/installationInfo/resolveVersionRange.js +42 -0
- package/dist/util/packageManager/installationInfo/resolveVersionRange.js.map +1 -0
- package/dist/util/packageManager/installationInfo/types.js +3 -0
- package/dist/util/packageManager/installationInfo/types.js.map +1 -0
- package/dist/util/packageManager/packageManagerChoice.js +1 -20
- package/dist/util/packageManager/packageManagerChoice.js.map +1 -1
- package/dist/util/packageManager/upgradePackages.js +4 -1
- package/dist/util/packageManager/upgradePackages.js.map +1 -1
- package/dist/util/promiseRaceWithTimeout.js +28 -0
- package/dist/util/promiseRaceWithTimeout.js.map +1 -0
- package/dist/util/readdirRecursive.js.map +1 -1
- package/dist/util/resolveLatestVersions.js +2 -2
- package/dist/util/resolveLatestVersions.js.map +1 -1
- package/dist/util/sharedFlags.js +54 -0
- package/dist/util/sharedFlags.js.map +1 -0
- package/dist/util/telemetry/cleanupOldTelemetryFiles.js +30 -0
- package/dist/util/telemetry/cleanupOldTelemetryFiles.js.map +1 -0
- package/dist/util/telemetry/createTelemetryStore.js +95 -0
- package/dist/util/telemetry/createTelemetryStore.js.map +1 -0
- package/dist/util/telemetry/createTraceId.js +10 -0
- package/dist/util/telemetry/createTraceId.js.map +1 -0
- package/dist/util/telemetry/findTelemetryFiles.js +35 -0
- package/dist/util/telemetry/findTelemetryFiles.js.map +1 -0
- package/dist/util/telemetry/flushTelemetryFiles.js +118 -0
- package/dist/util/telemetry/flushTelemetryFiles.js.map +1 -0
- package/dist/util/telemetry/generateTelemetryFilePath.js +30 -0
- package/dist/util/telemetry/generateTelemetryFilePath.js.map +1 -0
- package/dist/util/telemetry/logger.js +59 -0
- package/dist/util/telemetry/logger.js.map +1 -0
- package/dist/util/telemetry/readNDJSON.js +28 -0
- package/dist/util/telemetry/readNDJSON.js.map +1 -0
- package/dist/util/telemetry/telemetryStoreDebug.js +7 -0
- package/dist/util/telemetry/telemetryStoreDebug.js.map +1 -0
- package/dist/util/telemetry/trace.js +150 -0
- package/dist/util/telemetry/trace.js.map +1 -0
- package/dist/util/toForwardSlashes.js +8 -0
- package/dist/util/toForwardSlashes.js.map +1 -0
- package/dist/util/update/fetchLatestVersion.js +21 -0
- package/dist/util/update/fetchLatestVersion.js.map +1 -0
- package/dist/util/update/getUpdateCommand.js +20 -0
- package/dist/util/update/getUpdateCommand.js.map +1 -0
- package/dist/util/update/isInstalledUsingYarn.js +17 -0
- package/dist/util/update/isInstalledUsingYarn.js.map +1 -0
- package/dist/util/update/showNotificationUpdate.js +31 -0
- package/dist/util/update/showNotificationUpdate.js.map +1 -0
- package/dist/util/update/updateChecker.js +60 -0
- package/dist/util/update/updateChecker.js.map +1 -0
- package/dist/util/update/updateCheckerDebug.js +4 -0
- package/dist/util/update/updateCheckerDebug.js.map +1 -0
- package/oclif.config.js +1 -0
- package/oclif.manifest.json +900 -107
- package/package.json +72 -71
- package/static/favicons/apple-touch-icon.png +0 -0
- package/static/favicons/favicon-192.png +0 -0
- package/static/favicons/favicon-512.png +0 -0
- package/static/favicons/favicon-96.png +0 -0
- package/static/favicons/favicon.ico +0 -0
- package/static/favicons/favicon.svg +12 -0
- package/dist/actions/auth/login/promptProviders.js.map +0 -1
- package/dist/actions/dev/getCoreAppUrl.js +0 -10
- package/dist/actions/dev/getCoreAppUrl.js.map +0 -1
- package/dist/actions/schema/schemaStoreTypes.js +0 -19
- package/dist/actions/schema/schemaStoreTypes.js.map +0 -1
- package/dist/actions/schema/utils/manifestExtractor.js +0 -33
- package/dist/actions/schema/utils/manifestExtractor.js.map +0 -1
- package/dist/actions/schema/utils/manifestReader.js +0 -71
- package/dist/actions/schema/utils/manifestReader.js.map +0 -1
- package/dist/index.d.ts +0 -2326
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/studioDependencies.js.map +0 -1
- package/dist/typings/deepSortObject.d.js +0 -2
- package/dist/typings/deepSortObject.d.js.map +0 -1
- package/dist/util/findNdjsonEntry.js +0 -21
- package/dist/util/findNdjsonEntry.js.map +0 -1
- package/dist/util/importStudioConfig.js +0 -40
- package/dist/util/importStudioConfig.js.map +0 -1
- package/dist/util/readModuleVersion.js +0 -15
- package/dist/util/readModuleVersion.js.map +0 -1
- package/dist/util/readPackageJson.js +0 -44
- package/dist/util/readPackageJson.js.map +0 -1
- package/dist/util/readPackageManifest.js +0 -46
- package/dist/util/readPackageManifest.js.map +0 -1
- package/dist/util/uniqBy.js +0 -14
- package/dist/util/uniqBy.js.map +0 -1
- package/dist/util/workerChannels.js +0 -172
- package/dist/util/workerChannels.js.map +0 -1
- /package/dist/{studioDependencies.js → actions/init/studioDependencies.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/telemetry/trace.ts"],"sourcesContent":["import {\n type DefinedTelemetryTrace,\n type TelemetryEvent,\n type TelemetryLogger,\n type TelemetryTrace,\n} from '@sanity/telemetry'\n\nimport {createTraceId} from './createTraceId.js'\nimport {telemetryStoreDebug} from './telemetryStoreDebug.js'\n\n/**\n * Creates a trace instance that can emit trace lifecycle events\n * @internal\n */\nexport function createTrace<Data, Context = unknown, UserProperties = unknown>(\n definition: DefinedTelemetryTrace<Data, Context>,\n context: Context | undefined,\n sessionId: string,\n emit: (event: TelemetryEvent) => void,\n createLoggerFn: <UserProperties>(\n sessionId: string,\n emit: (event: TelemetryEvent) => void,\n ) => TelemetryLogger<UserProperties>,\n): TelemetryTrace<UserProperties, Data> {\n const traceId = createTraceId()\n telemetryStoreDebug('Creating trace %s with traceId: %s', definition.name, traceId)\n\n let isStarted = false\n let isCompleted = false\n\n const emitTraceEvent = (type: string, data?: Data | Error) => {\n if (isCompleted) return\n\n const baseEvent = {\n context: context as Context,\n createdAt: new Date().toISOString(),\n name: definition.name,\n sessionId,\n traceId,\n version: definition.version,\n }\n\n let traceEvent: TelemetryEvent\n\n switch (type) {\n case 'trace.complete': {\n traceEvent = {\n ...baseEvent,\n type: 'trace.complete',\n ...(data && {data}),\n } as TelemetryEvent\n\n break\n }\n case 'trace.error': {\n traceEvent = {\n ...baseEvent,\n data,\n type: 'trace.error',\n } as TelemetryEvent\n\n break\n }\n case 'trace.log': {\n traceEvent = {\n ...baseEvent,\n data,\n type: 'trace.log',\n } as TelemetryEvent\n\n break\n }\n case 'trace.start': {\n traceEvent = {\n ...baseEvent,\n type: 'trace.start',\n } as TelemetryEvent\n\n break\n }\n default: {\n return // Unknown type\n }\n }\n\n emit(traceEvent)\n }\n\n const start = () => {\n if (isStarted) {\n telemetryStoreDebug('Trace %s already started', traceId)\n return\n }\n telemetryStoreDebug('Starting trace %s', traceId)\n isStarted = true\n emitTraceEvent('trace.start')\n }\n\n const log = (data: Data) => {\n telemetryStoreDebug('Logging data for trace %s', traceId)\n if (!isStarted) start()\n emitTraceEvent('trace.log', data)\n }\n\n const complete = () => {\n if (isCompleted) {\n telemetryStoreDebug('Trace %s already completed', traceId)\n return\n }\n telemetryStoreDebug('Completing trace %s', traceId)\n if (!isStarted) start()\n emitTraceEvent('trace.complete')\n isCompleted = true\n }\n\n const error = (err: Error) => {\n if (isCompleted) {\n telemetryStoreDebug('Trace %s already completed, ignoring error', traceId)\n return\n }\n telemetryStoreDebug('Error in trace %s: %s', traceId, err.message)\n if (!isStarted) start()\n // Convert Error to serializable object\n const errorData = {\n message: err.message,\n name: err.name,\n stack: err.stack,\n }\n emitTraceEvent('trace.error', errorData)\n isCompleted = true\n }\n\n const awaitPromise = <P extends Promise<unknown>>(promise: P, finalData?: Data): P => {\n if (!isStarted) start()\n\n return promise\n .then((result) => {\n if (finalData !== undefined) {\n log(finalData)\n }\n complete()\n return result\n })\n .catch((err) => {\n error(err)\n throw err\n }) as P\n }\n\n const newContext = (name: string): TelemetryLogger<UserProperties> => {\n const contextEmit = (event: TelemetryEvent) => {\n // For trace events, we can add context, but for log events we need to be careful\n if (event.type.startsWith('trace.')) {\n const existingContext = (event as {context?: unknown}).context\n emit({\n ...event,\n context: {\n ...(typeof existingContext === 'object' && existingContext ? existingContext : {}),\n contextName: name,\n },\n } as TelemetryEvent)\n } else {\n // For log events, we can't add context as it's not part of TelemetryLogEvent\n // Just emit as-is\n emit(event)\n }\n }\n\n return createLoggerFn<UserProperties>(sessionId, contextEmit)\n }\n\n return {\n await: awaitPromise,\n complete,\n error,\n log,\n newContext,\n start,\n }\n}\n"],"names":["createTraceId","telemetryStoreDebug","createTrace","definition","context","sessionId","emit","createLoggerFn","traceId","name","isStarted","isCompleted","emitTraceEvent","type","data","baseEvent","createdAt","Date","toISOString","version","traceEvent","start","log","complete","error","err","message","errorData","stack","awaitPromise","promise","finalData","then","result","undefined","catch","newContext","contextEmit","event","startsWith","existingContext","contextName","await"],"mappings":"AAOA,SAAQA,aAAa,QAAO,qBAAoB;AAChD,SAAQC,mBAAmB,QAAO,2BAA0B;AAE5D;;;CAGC,GACD,OAAO,SAASC,YACdC,UAAgD,EAChDC,OAA4B,EAC5BC,SAAiB,EACjBC,IAAqC,EACrCC,cAGoC;IAEpC,MAAMC,UAAUR;IAChBC,oBAAoB,sCAAsCE,WAAWM,IAAI,EAAED;IAE3E,IAAIE,YAAY;IAChB,IAAIC,cAAc;IAElB,MAAMC,iBAAiB,CAACC,MAAcC;QACpC,IAAIH,aAAa;QAEjB,MAAMI,YAAY;YAChBX,SAASA;YACTY,WAAW,IAAIC,OAAOC,WAAW;YACjCT,MAAMN,WAAWM,IAAI;YACrBJ;YACAG;YACAW,SAAShB,WAAWgB,OAAO;QAC7B;QAEA,IAAIC;QAEJ,OAAQP;YACN,KAAK;gBAAkB;oBACrBO,aAAa;wBACX,GAAGL,SAAS;wBACZF,MAAM;wBACN,GAAIC,QAAQ;4BAACA;wBAAI,CAAC;oBACpB;oBAEA;gBACF;YACA,KAAK;gBAAe;oBAClBM,aAAa;wBACX,GAAGL,SAAS;wBACZD;wBACAD,MAAM;oBACR;oBAEA;gBACF;YACA,KAAK;gBAAa;oBAChBO,aAAa;wBACX,GAAGL,SAAS;wBACZD;wBACAD,MAAM;oBACR;oBAEA;gBACF;YACA,KAAK;gBAAe;oBAClBO,aAAa;wBACX,GAAGL,SAAS;wBACZF,MAAM;oBACR;oBAEA;gBACF;YACA;gBAAS;oBACP,QAAO,eAAe;gBACxB;QACF;QAEAP,KAAKc;IACP;IAEA,MAAMC,QAAQ;QACZ,IAAIX,WAAW;YACbT,oBAAoB,4BAA4BO;YAChD;QACF;QACAP,oBAAoB,qBAAqBO;QACzCE,YAAY;QACZE,eAAe;IACjB;IAEA,MAAMU,MAAM,CAACR;QACXb,oBAAoB,6BAA6BO;QACjD,IAAI,CAACE,WAAWW;QAChBT,eAAe,aAAaE;IAC9B;IAEA,MAAMS,WAAW;QACf,IAAIZ,aAAa;YACfV,oBAAoB,8BAA8BO;YAClD;QACF;QACAP,oBAAoB,uBAAuBO;QAC3C,IAAI,CAACE,WAAWW;QAChBT,eAAe;QACfD,cAAc;IAChB;IAEA,MAAMa,QAAQ,CAACC;QACb,IAAId,aAAa;YACfV,oBAAoB,8CAA8CO;YAClE;QACF;QACAP,oBAAoB,yBAAyBO,SAASiB,IAAIC,OAAO;QACjE,IAAI,CAAChB,WAAWW;QAChB,uCAAuC;QACvC,MAAMM,YAAY;YAChBD,SAASD,IAAIC,OAAO;YACpBjB,MAAMgB,IAAIhB,IAAI;YACdmB,OAAOH,IAAIG,KAAK;QAClB;QACAhB,eAAe,eAAee;QAC9BhB,cAAc;IAChB;IAEA,MAAMkB,eAAe,CAA6BC,SAAYC;QAC5D,IAAI,CAACrB,WAAWW;QAEhB,OAAOS,QACJE,IAAI,CAAC,CAACC;YACL,IAAIF,cAAcG,WAAW;gBAC3BZ,IAAIS;YACN;YACAR;YACA,OAAOU;QACT,GACCE,KAAK,CAAC,CAACV;YACND,MAAMC;YACN,MAAMA;QACR;IACJ;IAEA,MAAMW,aAAa,CAAC3B;QAClB,MAAM4B,cAAc,CAACC;YACnB,iFAAiF;YACjF,IAAIA,MAAMzB,IAAI,CAAC0B,UAAU,CAAC,WAAW;gBACnC,MAAMC,kBAAkB,AAACF,MAA8BlC,OAAO;gBAC9DE,KAAK;oBACH,GAAGgC,KAAK;oBACRlC,SAAS;wBACP,GAAI,OAAOoC,oBAAoB,YAAYA,kBAAkBA,kBAAkB,CAAC,CAAC;wBACjFC,aAAahC;oBACf;gBACF;YACF,OAAO;gBACL,6EAA6E;gBAC7E,kBAAkB;gBAClBH,KAAKgC;YACP;QACF;QAEA,OAAO/B,eAA+BF,WAAWgC;IACnD;IAEA,OAAO;QACLK,OAAOb;QACPN;QACAC;QACAF;QACAc;QACAf;IACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/util/toForwardSlashes.ts"],"sourcesContent":["/**\n * Converts path separators to forward slashes for ESM imports.\n * @internal\n */\nexport function toForwardSlashes(filePath: string): string {\n return filePath.replaceAll('\\\\', '/')\n}\n"],"names":["toForwardSlashes","filePath","replaceAll"],"mappings":"AAAA;;;CAGC,GACD,OAAO,SAASA,iBAAiBC,QAAgB;IAC/C,OAAOA,SAASC,UAAU,CAAC,MAAM;AACnC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { subdebug } from '@sanity/cli-core';
|
|
2
|
+
import { getLatestVersion } from 'get-latest-version';
|
|
3
|
+
import { promiseRaceWithTimeout } from '../promiseRaceWithTimeout.js';
|
|
4
|
+
const debug = subdebug('updateChecker');
|
|
5
|
+
/**
|
|
6
|
+
* Fetch the latest version from npm with a timeout
|
|
7
|
+
*/ export async function fetchLatestVersion(packageName, timeout) {
|
|
8
|
+
try {
|
|
9
|
+
const result = await promiseRaceWithTimeout(getLatestVersion(packageName), timeout);
|
|
10
|
+
if (result === null) {
|
|
11
|
+
debug(`Max time ${timeout} reached waiting for latest version info`);
|
|
12
|
+
}
|
|
13
|
+
debug('Latest remote version is %s', result);
|
|
14
|
+
return result;
|
|
15
|
+
} catch (err) {
|
|
16
|
+
debug(`Failed to fetch latest version of ${packageName} from npm:\n${err instanceof Error ? err.stack : String(err)}`);
|
|
17
|
+
throw err;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=fetchLatestVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/fetchLatestVersion.ts"],"sourcesContent":["import {subdebug} from '@sanity/cli-core'\nimport {getLatestVersion} from 'get-latest-version'\n\nimport {promiseRaceWithTimeout} from '../promiseRaceWithTimeout.js'\n\nconst debug = subdebug('updateChecker')\n\n/**\n * Fetch the latest version from npm with a timeout\n */\nexport async function fetchLatestVersion(\n packageName: string,\n timeout: number,\n): Promise<string | null | undefined> {\n try {\n const result = await promiseRaceWithTimeout(getLatestVersion(packageName), timeout)\n\n if (result === null) {\n debug(`Max time ${timeout} reached waiting for latest version info`)\n }\n\n debug('Latest remote version is %s', result)\n\n return result\n } catch (err) {\n debug(\n `Failed to fetch latest version of ${packageName} from npm:\\n${err instanceof Error ? err.stack : String(err)}`,\n )\n throw err\n }\n}\n"],"names":["subdebug","getLatestVersion","promiseRaceWithTimeout","debug","fetchLatestVersion","packageName","timeout","result","err","Error","stack","String"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AACzC,SAAQC,gBAAgB,QAAO,qBAAoB;AAEnD,SAAQC,sBAAsB,QAAO,+BAA8B;AAEnE,MAAMC,QAAQH,SAAS;AAEvB;;CAEC,GACD,OAAO,eAAeI,mBACpBC,WAAmB,EACnBC,OAAe;IAEf,IAAI;QACF,MAAMC,SAAS,MAAML,uBAAuBD,iBAAiBI,cAAcC;QAE3E,IAAIC,WAAW,MAAM;YACnBJ,MAAM,CAAC,SAAS,EAAEG,QAAQ,wCAAwC,CAAC;QACrE;QAEAH,MAAM,+BAA+BI;QAErC,OAAOA;IACT,EAAE,OAAOC,KAAK;QACZL,MACE,CAAC,kCAAkC,EAAEE,YAAY,YAAY,EAAEG,eAAeC,QAAQD,IAAIE,KAAK,GAAGC,OAAOH,MAAM;QAEjH,MAAMA;IACR;AACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getYarnMajorVersion } from '@sanity/cli-core/package-manager';
|
|
2
|
+
export const cliPkgName = 'sanity';
|
|
3
|
+
/**
|
|
4
|
+
* Get the appropriate update command for the package manager
|
|
5
|
+
*/ export function getUpdateCommand(pm) {
|
|
6
|
+
if (pm === 'yarn') {
|
|
7
|
+
const yarnMajor = getYarnMajorVersion();
|
|
8
|
+
const cmd = yarnMajor !== undefined && yarnMajor >= 2 ? 'up' : 'upgrade';
|
|
9
|
+
return `yarn ${cmd} ${cliPkgName}`;
|
|
10
|
+
}
|
|
11
|
+
const localCommands = {
|
|
12
|
+
bun: `bun update ${cliPkgName}`,
|
|
13
|
+
manual: `npm update ${cliPkgName}`,
|
|
14
|
+
npm: `npm update ${cliPkgName}`,
|
|
15
|
+
pnpm: `pnpm update ${cliPkgName}`
|
|
16
|
+
};
|
|
17
|
+
return localCommands[pm];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=getUpdateCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/getUpdateCommand.ts"],"sourcesContent":["import {getYarnMajorVersion} from '@sanity/cli-core/package-manager'\n\nimport {type PackageManager} from '../packageManager/packageManagerChoice.js'\n\nexport const cliPkgName = 'sanity'\n\n/**\n * Get the appropriate update command for the package manager\n */\nexport function getUpdateCommand(pm: PackageManager): string {\n if (pm === 'yarn') {\n const yarnMajor = getYarnMajorVersion()\n const cmd = yarnMajor !== undefined && yarnMajor >= 2 ? 'up' : 'upgrade'\n return `yarn ${cmd} ${cliPkgName}`\n }\n\n const localCommands: Record<Exclude<PackageManager, 'yarn'>, string> = {\n bun: `bun update ${cliPkgName}`,\n manual: `npm update ${cliPkgName}`,\n npm: `npm update ${cliPkgName}`,\n pnpm: `pnpm update ${cliPkgName}`,\n }\n return localCommands[pm]\n}\n"],"names":["getYarnMajorVersion","cliPkgName","getUpdateCommand","pm","yarnMajor","cmd","undefined","localCommands","bun","manual","npm","pnpm"],"mappings":"AAAA,SAAQA,mBAAmB,QAAO,mCAAkC;AAIpE,OAAO,MAAMC,aAAa,SAAQ;AAElC;;CAEC,GACD,OAAO,SAASC,iBAAiBC,EAAkB;IACjD,IAAIA,OAAO,QAAQ;QACjB,MAAMC,YAAYJ;QAClB,MAAMK,MAAMD,cAAcE,aAAaF,aAAa,IAAI,OAAO;QAC/D,OAAO,CAAC,KAAK,EAAEC,IAAI,CAAC,EAAEJ,YAAY;IACpC;IAEA,MAAMM,gBAAiE;QACrEC,KAAK,CAAC,WAAW,EAAEP,YAAY;QAC/BQ,QAAQ,CAAC,WAAW,EAAER,YAAY;QAClCS,KAAK,CAAC,WAAW,EAAET,YAAY;QAC/BU,MAAM,CAAC,YAAY,EAAEV,YAAY;IACnC;IACA,OAAOM,aAAa,CAACJ,GAAG;AAC1B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
export function isInstalledUsingYarn() {
|
|
3
|
+
const isWindows = process.platform === 'win32';
|
|
4
|
+
const yarnPath = isWindows ? [
|
|
5
|
+
'Yarn',
|
|
6
|
+
'config',
|
|
7
|
+
'global'
|
|
8
|
+
].join('/') : [
|
|
9
|
+
'.config',
|
|
10
|
+
'yarn',
|
|
11
|
+
'global'
|
|
12
|
+
].join('/');
|
|
13
|
+
const currentDir = fileURLToPath(import.meta.url);
|
|
14
|
+
return currentDir.includes(yarnPath);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=isInstalledUsingYarn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/isInstalledUsingYarn.ts"],"sourcesContent":["import {fileURLToPath} from 'node:url'\n\nexport function isInstalledUsingYarn(): boolean {\n const isWindows = process.platform === 'win32'\n const yarnPath = isWindows\n ? ['Yarn', 'config', 'global'].join('/')\n : ['.config', 'yarn', 'global'].join('/')\n\n const currentDir = fileURLToPath(import.meta.url)\n return currentDir.includes(yarnPath)\n}\n"],"names":["fileURLToPath","isInstalledUsingYarn","isWindows","process","platform","yarnPath","join","currentDir","url","includes"],"mappings":"AAAA,SAAQA,aAAa,QAAO,WAAU;AAEtC,OAAO,SAASC;IACd,MAAMC,YAAYC,QAAQC,QAAQ,KAAK;IACvC,MAAMC,WAAWH,YACb;QAAC;QAAQ;QAAU;KAAS,CAACI,IAAI,CAAC,OAClC;QAAC;QAAW;QAAQ;KAAS,CAACA,IAAI,CAAC;IAEvC,MAAMC,aAAaP,cAAc,YAAYQ,GAAG;IAChD,OAAOD,WAAWE,QAAQ,CAACJ;AAC7B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { styleText } from 'node:util';
|
|
2
|
+
import { ux } from '@oclif/core';
|
|
3
|
+
import { boxen } from '@sanity/cli-core/ux';
|
|
4
|
+
import isInstalledGlobally from 'is-installed-globally';
|
|
5
|
+
import { getPackageManagerChoice } from '../packageManager/packageManagerChoice.js';
|
|
6
|
+
import { cliPkgName, getUpdateCommand } from './getUpdateCommand.js';
|
|
7
|
+
import { isInstalledUsingYarn } from './isInstalledUsingYarn.js';
|
|
8
|
+
/**
|
|
9
|
+
* Show a boxed notification about the available update
|
|
10
|
+
*/ export async function showUpdateNotification(currentVersion, latestVersion) {
|
|
11
|
+
let command;
|
|
12
|
+
// Check if CLI is installed globally
|
|
13
|
+
if (isInstalledGlobally) {
|
|
14
|
+
command = isInstalledUsingYarn() ? `yarn global add ${cliPkgName}` : `npm install -g ${cliPkgName}`;
|
|
15
|
+
} else {
|
|
16
|
+
const { chosen } = await getPackageManagerChoice(process.cwd(), {
|
|
17
|
+
interactive: false
|
|
18
|
+
});
|
|
19
|
+
command = getUpdateCommand(chosen);
|
|
20
|
+
}
|
|
21
|
+
const message = `Update available: ${styleText('dim', currentVersion)} → ${styleText('green', latestVersion)}\n\nRun ${styleText('cyan', command)} to update`;
|
|
22
|
+
const boxed = boxen(message, {
|
|
23
|
+
borderColor: 'yellow',
|
|
24
|
+
borderStyle: 'round',
|
|
25
|
+
margin: 1,
|
|
26
|
+
padding: 1
|
|
27
|
+
});
|
|
28
|
+
ux.stderr('\n' + boxed + '\n');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=showNotificationUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/showNotificationUpdate.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {ux} from '@oclif/core'\nimport {boxen} from '@sanity/cli-core/ux'\nimport isInstalledGlobally from 'is-installed-globally'\n\nimport {getPackageManagerChoice} from '../packageManager/packageManagerChoice.js'\nimport {cliPkgName, getUpdateCommand} from './getUpdateCommand.js'\nimport {isInstalledUsingYarn} from './isInstalledUsingYarn.js'\n\n/**\n * Show a boxed notification about the available update\n */\nexport async function showUpdateNotification(\n currentVersion: string,\n latestVersion: string,\n): Promise<void> {\n let command\n\n // Check if CLI is installed globally\n if (isInstalledGlobally) {\n command = isInstalledUsingYarn()\n ? `yarn global add ${cliPkgName}`\n : `npm install -g ${cliPkgName}`\n } else {\n const {chosen} = await getPackageManagerChoice(process.cwd(), {interactive: false})\n command = getUpdateCommand(chosen)\n }\n\n const message = `Update available: ${styleText('dim', currentVersion)} → ${styleText('green', latestVersion)}\\n\\nRun ${styleText('cyan', command)} to update`\n\n const boxed = boxen(message, {\n borderColor: 'yellow',\n borderStyle: 'round',\n margin: 1,\n padding: 1,\n })\n\n ux.stderr('\\n' + boxed + '\\n')\n}\n"],"names":["styleText","ux","boxen","isInstalledGlobally","getPackageManagerChoice","cliPkgName","getUpdateCommand","isInstalledUsingYarn","showUpdateNotification","currentVersion","latestVersion","command","chosen","process","cwd","interactive","message","boxed","borderColor","borderStyle","margin","padding","stderr"],"mappings":"AAAA,SAAQA,SAAS,QAAO,YAAW;AAEnC,SAAQC,EAAE,QAAO,cAAa;AAC9B,SAAQC,KAAK,QAAO,sBAAqB;AACzC,OAAOC,yBAAyB,wBAAuB;AAEvD,SAAQC,uBAAuB,QAAO,4CAA2C;AACjF,SAAQC,UAAU,EAAEC,gBAAgB,QAAO,wBAAuB;AAClE,SAAQC,oBAAoB,QAAO,4BAA2B;AAE9D;;CAEC,GACD,OAAO,eAAeC,uBACpBC,cAAsB,EACtBC,aAAqB;IAErB,IAAIC;IAEJ,qCAAqC;IACrC,IAAIR,qBAAqB;QACvBQ,UAAUJ,yBACN,CAAC,gBAAgB,EAAEF,YAAY,GAC/B,CAAC,eAAe,EAAEA,YAAY;IACpC,OAAO;QACL,MAAM,EAACO,MAAM,EAAC,GAAG,MAAMR,wBAAwBS,QAAQC,GAAG,IAAI;YAACC,aAAa;QAAK;QACjFJ,UAAUL,iBAAiBM;IAC7B;IAEA,MAAMI,UAAU,CAAC,kBAAkB,EAAEhB,UAAU,OAAOS,gBAAgB,GAAG,EAAET,UAAU,SAASU,eAAe,QAAQ,EAAEV,UAAU,QAAQW,SAAS,UAAU,CAAC;IAE7J,MAAMM,QAAQf,MAAMc,SAAS;QAC3BE,aAAa;QACbC,aAAa;QACbC,QAAQ;QACRC,SAAS;IACX;IAEApB,GAAGqB,MAAM,CAAC,OAAOL,QAAQ;AAC3B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { getUserConfig, isCi, subdebug } from '@sanity/cli-core';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
import { createExpiringConfig } from '../createExpiringConfig.js';
|
|
4
|
+
import { fetchLatestVersion } from './fetchLatestVersion.js';
|
|
5
|
+
import { showUpdateNotification } from './showNotificationUpdate.js';
|
|
6
|
+
const debug = subdebug('updateChecker');
|
|
7
|
+
const TWELVE_HOURS = 12 * 60 * 60 * 1000 // 12 hours
|
|
8
|
+
;
|
|
9
|
+
const CHECK_TIMEOUT = 300;
|
|
10
|
+
/**
|
|
11
|
+
* Check for CLI updates and notify the user if a new version is available.
|
|
12
|
+
* This is designed to be non-blocking and will silently fail if anything goes wrong.
|
|
13
|
+
*
|
|
14
|
+
* @param config - The CLI config containing version and name
|
|
15
|
+
*/ export async function updateChecker(config) {
|
|
16
|
+
debug(`Installed CLI version is ${config.version}`);
|
|
17
|
+
// Skip in CI or if disabled
|
|
18
|
+
if (isCi() || process.env.NO_UPDATE_NOTIFIER) {
|
|
19
|
+
debug('Running on CI, or explicitly disabled, skipping update check');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!process.stdout.isTTY) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const store = getUserConfig();
|
|
26
|
+
let showNotificationUpdate = true;
|
|
27
|
+
// Cache for latest version from npm
|
|
28
|
+
const latestVersionCache = createExpiringConfig({
|
|
29
|
+
fetchValue: async ()=>fetchLatestVersion(config.name, CHECK_TIMEOUT),
|
|
30
|
+
key: 'cliLatestRemoteVersion',
|
|
31
|
+
onCacheHit: ()=>{
|
|
32
|
+
debug('Less than 12 hours since last check, skipping update check');
|
|
33
|
+
showNotificationUpdate = false;
|
|
34
|
+
},
|
|
35
|
+
onFetch: ()=>debug('Checking for latest remote version'),
|
|
36
|
+
store,
|
|
37
|
+
ttl: TWELVE_HOURS,
|
|
38
|
+
validateValue: (value)=>typeof value === 'string'
|
|
39
|
+
});
|
|
40
|
+
const latestVersion = await latestVersionCache.get();
|
|
41
|
+
if (!latestVersion) {
|
|
42
|
+
debug('No cached latest version result found');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const comparison = semver.compare(latestVersion, config.version);
|
|
46
|
+
if (comparison < 0) {
|
|
47
|
+
debug('Remote version older than local');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (comparison === 0) {
|
|
51
|
+
debug('No update found');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
debug('Update is available (%s)', latestVersion);
|
|
55
|
+
if (showNotificationUpdate) {
|
|
56
|
+
await showUpdateNotification(config.version, latestVersion);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=updateChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/updateChecker.ts"],"sourcesContent":["import {getUserConfig, isCi, subdebug} from '@sanity/cli-core'\nimport semver from 'semver'\n\nimport {createExpiringConfig} from '../createExpiringConfig.js'\nimport {fetchLatestVersion} from './fetchLatestVersion.js'\nimport {showUpdateNotification} from './showNotificationUpdate.js'\n\nconst debug = subdebug('updateChecker')\n\nconst TWELVE_HOURS = 12 * 60 * 60 * 1000 // 12 hours\nconst CHECK_TIMEOUT = 300\n\n/**\n * Check for CLI updates and notify the user if a new version is available.\n * This is designed to be non-blocking and will silently fail if anything goes wrong.\n *\n * @param config - The CLI config containing version and name\n */\nexport async function updateChecker(config: {\n name: string\n root: string\n version: string\n}): Promise<void> {\n debug(`Installed CLI version is ${config.version}`)\n // Skip in CI or if disabled\n if (isCi() || process.env.NO_UPDATE_NOTIFIER) {\n debug('Running on CI, or explicitly disabled, skipping update check')\n return\n }\n\n if (!process.stdout.isTTY) {\n return\n }\n\n const store = getUserConfig()\n\n let showNotificationUpdate = true\n\n // Cache for latest version from npm\n const latestVersionCache = createExpiringConfig({\n fetchValue: async () => fetchLatestVersion(config.name, CHECK_TIMEOUT),\n key: 'cliLatestRemoteVersion',\n onCacheHit: () => {\n debug('Less than 12 hours since last check, skipping update check')\n showNotificationUpdate = false\n },\n onFetch: () => debug('Checking for latest remote version'),\n store,\n ttl: TWELVE_HOURS,\n validateValue: (value): value is string => typeof value === 'string',\n })\n\n const latestVersion = await latestVersionCache.get()\n\n if (!latestVersion) {\n debug('No cached latest version result found')\n return\n }\n\n const comparison = semver.compare(latestVersion, config.version)\n\n if (comparison < 0) {\n debug('Remote version older than local')\n return\n }\n\n if (comparison === 0) {\n debug('No update found')\n return\n }\n\n debug('Update is available (%s)', latestVersion)\n\n if (showNotificationUpdate) {\n await showUpdateNotification(config.version, latestVersion)\n }\n}\n"],"names":["getUserConfig","isCi","subdebug","semver","createExpiringConfig","fetchLatestVersion","showUpdateNotification","debug","TWELVE_HOURS","CHECK_TIMEOUT","updateChecker","config","version","process","env","NO_UPDATE_NOTIFIER","stdout","isTTY","store","showNotificationUpdate","latestVersionCache","fetchValue","name","key","onCacheHit","onFetch","ttl","validateValue","value","latestVersion","get","comparison","compare"],"mappings":"AAAA,SAAQA,aAAa,EAAEC,IAAI,EAAEC,QAAQ,QAAO,mBAAkB;AAC9D,OAAOC,YAAY,SAAQ;AAE3B,SAAQC,oBAAoB,QAAO,6BAA4B;AAC/D,SAAQC,kBAAkB,QAAO,0BAAyB;AAC1D,SAAQC,sBAAsB,QAAO,8BAA6B;AAElE,MAAMC,QAAQL,SAAS;AAEvB,MAAMM,eAAe,KAAK,KAAK,KAAK,KAAK,WAAW;;AACpD,MAAMC,gBAAgB;AAEtB;;;;;CAKC,GACD,OAAO,eAAeC,cAAcC,MAInC;IACCJ,MAAM,CAAC,yBAAyB,EAAEI,OAAOC,OAAO,EAAE;IAClD,4BAA4B;IAC5B,IAAIX,UAAUY,QAAQC,GAAG,CAACC,kBAAkB,EAAE;QAC5CR,MAAM;QACN;IACF;IAEA,IAAI,CAACM,QAAQG,MAAM,CAACC,KAAK,EAAE;QACzB;IACF;IAEA,MAAMC,QAAQlB;IAEd,IAAImB,yBAAyB;IAE7B,oCAAoC;IACpC,MAAMC,qBAAqBhB,qBAAqB;QAC9CiB,YAAY,UAAYhB,mBAAmBM,OAAOW,IAAI,EAAEb;QACxDc,KAAK;QACLC,YAAY;YACVjB,MAAM;YACNY,yBAAyB;QAC3B;QACAM,SAAS,IAAMlB,MAAM;QACrBW;QACAQ,KAAKlB;QACLmB,eAAe,CAACC,QAA2B,OAAOA,UAAU;IAC9D;IAEA,MAAMC,gBAAgB,MAAMT,mBAAmBU,GAAG;IAElD,IAAI,CAACD,eAAe;QAClBtB,MAAM;QACN;IACF;IAEA,MAAMwB,aAAa5B,OAAO6B,OAAO,CAACH,eAAelB,OAAOC,OAAO;IAE/D,IAAImB,aAAa,GAAG;QAClBxB,MAAM;QACN;IACF;IAEA,IAAIwB,eAAe,GAAG;QACpBxB,MAAM;QACN;IACF;IAEAA,MAAM,4BAA4BsB;IAElC,IAAIV,wBAAwB;QAC1B,MAAMb,uBAAuBK,OAAOC,OAAO,EAAEiB;IAC/C;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/update/updateCheckerDebug.ts"],"sourcesContent":["import {subdebug} from '@sanity/cli-core'\n\nexport const updateCheckerDebug = subdebug('updateChecker')\n"],"names":["subdebug","updateCheckerDebug"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AAEzC,OAAO,MAAMC,qBAAqBD,SAAS,iBAAgB"}
|