@sanity/cli 6.0.0-alpha.9 → 6.1.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 -291
- 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 +34 -13
- package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
- package/dist/actions/mcp/editorConfigs.js +231 -109
- package/dist/actions/mcp/editorConfigs.js.map +1 -1
- package/dist/actions/mcp/promptForMCPSetup.js +16 -7
- package/dist/actions/mcp/promptForMCPSetup.js.map +1 -1
- package/dist/actions/mcp/setupMCP.js +62 -23
- package/dist/actions/mcp/setupMCP.js.map +1 -1
- package/dist/actions/mcp/types.js.map +1 -1
- package/dist/actions/mcp/validateEditorTokens.js +56 -0
- package/dist/actions/mcp/validateEditorTokens.js.map +1 -0
- 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/telemetry/telemetryDebug.js +2 -2
- package/dist/actions/telemetry/telemetryDebug.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 +55 -32
- 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 +4 -2
- 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 +5 -8
- 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 +16 -10
- 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/mcp.js +55 -1
- package/dist/services/mcp.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 +33 -23
- package/dist/util/getLocalPackageVersion.js.map +1 -1
- package/dist/util/getProjectDefaults.js +22 -28
- 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/gitConfig.js +45 -0
- package/dist/util/gitConfig.js.map +1 -0
- 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 +1285 -492
- package/package.json +72 -73
- 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,59 @@
|
|
|
1
|
+
import { telemetryStoreDebug } from './telemetryStoreDebug.js';
|
|
2
|
+
import { createTrace } from './trace.js';
|
|
3
|
+
// Process-wide sample rate tracking for log events, shared across all logger instances
|
|
4
|
+
// to deduplicate events regardless of which logger emits them.
|
|
5
|
+
// Use resetLogSampleTracker() in tests to prevent state leaking between test runs.
|
|
6
|
+
const logSampleTracker = new Map();
|
|
7
|
+
/** @public Reset sample rate tracking state. Intended for use in tests only. */ export function resetLogSampleTracker() {
|
|
8
|
+
logSampleTracker.clear();
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Creates a telemetry logger that emits events via the provided emit function
|
|
12
|
+
* @internal
|
|
13
|
+
*/ export function createLogger(sessionId, emit) {
|
|
14
|
+
telemetryStoreDebug('Creating logger for session: %s', sessionId);
|
|
15
|
+
const log = (event, data)=>{
|
|
16
|
+
telemetryStoreDebug('Logging event: %s', event.name);
|
|
17
|
+
// Handle sampling if maxSampleRate is specified
|
|
18
|
+
if (event.maxSampleRate && event.maxSampleRate > 0) {
|
|
19
|
+
const now = Date.now();
|
|
20
|
+
const lastEmit = logSampleTracker.get(event.name) || 0;
|
|
21
|
+
if (now - lastEmit < event.maxSampleRate) {
|
|
22
|
+
telemetryStoreDebug('Skipping event %s due to sampling (maxSampleRate: %d)', event.name, event.maxSampleRate);
|
|
23
|
+
return; // Skip due to sampling
|
|
24
|
+
}
|
|
25
|
+
logSampleTracker.set(event.name, now);
|
|
26
|
+
telemetryStoreDebug('Event %s passed sampling check', event.name);
|
|
27
|
+
}
|
|
28
|
+
const logEvent = {
|
|
29
|
+
createdAt: new Date().toISOString(),
|
|
30
|
+
data: data ?? null,
|
|
31
|
+
name: event.name,
|
|
32
|
+
sessionId,
|
|
33
|
+
type: 'log',
|
|
34
|
+
version: event.version
|
|
35
|
+
};
|
|
36
|
+
emit(logEvent);
|
|
37
|
+
};
|
|
38
|
+
const trace = (event, context)=>{
|
|
39
|
+
telemetryStoreDebug('Creating trace: %s', event.name);
|
|
40
|
+
return createTrace(event, context, sessionId, emit, createLogger);
|
|
41
|
+
};
|
|
42
|
+
const updateUserProperties = (properties)=>{
|
|
43
|
+
telemetryStoreDebug('Updating user properties: %o', properties);
|
|
44
|
+
const userPropsEvent = {
|
|
45
|
+
createdAt: new Date().toISOString(),
|
|
46
|
+
properties,
|
|
47
|
+
sessionId,
|
|
48
|
+
type: 'userProperties'
|
|
49
|
+
};
|
|
50
|
+
emit(userPropsEvent);
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
log,
|
|
54
|
+
trace,
|
|
55
|
+
updateUserProperties
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/telemetry/logger.ts"],"sourcesContent":["import {\n type DefinedTelemetryLog,\n type DefinedTelemetryTrace,\n type TelemetryEvent,\n type TelemetryLogger,\n type TelemetryTrace,\n} from '@sanity/telemetry'\n\nimport {telemetryStoreDebug} from './telemetryStoreDebug.js'\nimport {createTrace} from './trace.js'\n\n// Process-wide sample rate tracking for log events, shared across all logger instances\n// to deduplicate events regardless of which logger emits them.\n// Use resetLogSampleTracker() in tests to prevent state leaking between test runs.\nconst logSampleTracker = new Map<string, number>()\n\n/** @public Reset sample rate tracking state. Intended for use in tests only. */\nexport function resetLogSampleTracker(): void {\n logSampleTracker.clear()\n}\n\n/**\n * Creates a telemetry logger that emits events via the provided emit function\n * @internal\n */\nexport function createLogger<UserProperties>(\n sessionId: string,\n emit: (event: TelemetryEvent) => void,\n): TelemetryLogger<UserProperties> {\n telemetryStoreDebug('Creating logger for session: %s', sessionId)\n\n const log = <Data>(event: DefinedTelemetryLog<Data>, data?: Data) => {\n telemetryStoreDebug('Logging event: %s', event.name)\n\n // Handle sampling if maxSampleRate is specified\n if (event.maxSampleRate && event.maxSampleRate > 0) {\n const now = Date.now()\n const lastEmit = logSampleTracker.get(event.name) || 0\n\n if (now - lastEmit < event.maxSampleRate) {\n telemetryStoreDebug(\n 'Skipping event %s due to sampling (maxSampleRate: %d)',\n event.name,\n event.maxSampleRate,\n )\n return // Skip due to sampling\n }\n\n logSampleTracker.set(event.name, now)\n telemetryStoreDebug('Event %s passed sampling check', event.name)\n }\n\n const logEvent: TelemetryEvent = {\n createdAt: new Date().toISOString(),\n data: data ?? null,\n name: event.name,\n sessionId,\n type: 'log',\n version: event.version,\n }\n\n emit(logEvent)\n }\n\n const trace = <Data, Context = unknown>(\n event: DefinedTelemetryTrace<Data, Context>,\n context?: Context,\n ): TelemetryTrace<UserProperties, Data> => {\n telemetryStoreDebug('Creating trace: %s', event.name)\n return createTrace(event, context, sessionId, emit, createLogger)\n }\n\n const updateUserProperties = (properties: UserProperties) => {\n telemetryStoreDebug('Updating user properties: %o', properties)\n const userPropsEvent: TelemetryEvent = {\n createdAt: new Date().toISOString(),\n properties,\n sessionId,\n type: 'userProperties',\n }\n\n emit(userPropsEvent)\n }\n\n return {\n log,\n trace,\n updateUserProperties,\n }\n}\n"],"names":["telemetryStoreDebug","createTrace","logSampleTracker","Map","resetLogSampleTracker","clear","createLogger","sessionId","emit","log","event","data","name","maxSampleRate","now","Date","lastEmit","get","set","logEvent","createdAt","toISOString","type","version","trace","context","updateUserProperties","properties","userPropsEvent"],"mappings":"AAQA,SAAQA,mBAAmB,QAAO,2BAA0B;AAC5D,SAAQC,WAAW,QAAO,aAAY;AAEtC,uFAAuF;AACvF,+DAA+D;AAC/D,mFAAmF;AACnF,MAAMC,mBAAmB,IAAIC;AAE7B,8EAA8E,GAC9E,OAAO,SAASC;IACdF,iBAAiBG,KAAK;AACxB;AAEA;;;CAGC,GACD,OAAO,SAASC,aACdC,SAAiB,EACjBC,IAAqC;IAErCR,oBAAoB,mCAAmCO;IAEvD,MAAME,MAAM,CAAOC,OAAkCC;QACnDX,oBAAoB,qBAAqBU,MAAME,IAAI;QAEnD,gDAAgD;QAChD,IAAIF,MAAMG,aAAa,IAAIH,MAAMG,aAAa,GAAG,GAAG;YAClD,MAAMC,MAAMC,KAAKD,GAAG;YACpB,MAAME,WAAWd,iBAAiBe,GAAG,CAACP,MAAME,IAAI,KAAK;YAErD,IAAIE,MAAME,WAAWN,MAAMG,aAAa,EAAE;gBACxCb,oBACE,yDACAU,MAAME,IAAI,EACVF,MAAMG,aAAa;gBAErB,QAAO,uBAAuB;YAChC;YAEAX,iBAAiBgB,GAAG,CAACR,MAAME,IAAI,EAAEE;YACjCd,oBAAoB,kCAAkCU,MAAME,IAAI;QAClE;QAEA,MAAMO,WAA2B;YAC/BC,WAAW,IAAIL,OAAOM,WAAW;YACjCV,MAAMA,QAAQ;YACdC,MAAMF,MAAME,IAAI;YAChBL;YACAe,MAAM;YACNC,SAASb,MAAMa,OAAO;QACxB;QAEAf,KAAKW;IACP;IAEA,MAAMK,QAAQ,CACZd,OACAe;QAEAzB,oBAAoB,sBAAsBU,MAAME,IAAI;QACpD,OAAOX,YAAYS,OAAOe,SAASlB,WAAWC,MAAMF;IACtD;IAEA,MAAMoB,uBAAuB,CAACC;QAC5B3B,oBAAoB,gCAAgC2B;QACpD,MAAMC,iBAAiC;YACrCR,WAAW,IAAIL,OAAOM,WAAW;YACjCM;YACApB;YACAe,MAAM;QACR;QAEAd,KAAKoB;IACP;IAEA,OAAO;QACLnB;QACAe;QACAE;IACF;AACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { telemetryStoreDebug } from './telemetryStoreDebug.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reads and parses an NDJSON (newline-delimited JSON) file containing telemetry events.
|
|
5
|
+
* Malformed lines are skipped individually rather than failing the entire file.
|
|
6
|
+
*
|
|
7
|
+
* @param filePath - Path to the NDJSON file
|
|
8
|
+
* @returns Promise resolving to array of parsed telemetry events
|
|
9
|
+
*
|
|
10
|
+
* @internal
|
|
11
|
+
*/ export async function readNDJSON(filePath) {
|
|
12
|
+
const content = await readFile(filePath, 'utf8');
|
|
13
|
+
if (!content.trim()) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const results = [];
|
|
17
|
+
for (const line of content.trim().split('\n')){
|
|
18
|
+
if (!line) continue;
|
|
19
|
+
try {
|
|
20
|
+
results.push(JSON.parse(line));
|
|
21
|
+
} catch {
|
|
22
|
+
telemetryStoreDebug('Skipping malformed JSON line in %s: %s', filePath, line.slice(0, 100));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return results;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=readNDJSON.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/telemetry/readNDJSON.ts"],"sourcesContent":["import {readFile} from 'node:fs/promises'\n\nimport {telemetryStoreDebug} from './telemetryStoreDebug.js'\n\n/**\n * Reads and parses an NDJSON (newline-delimited JSON) file containing telemetry events.\n * Malformed lines are skipped individually rather than failing the entire file.\n *\n * @param filePath - Path to the NDJSON file\n * @returns Promise resolving to array of parsed telemetry events\n *\n * @internal\n */\nexport async function readNDJSON<T>(filePath: string): Promise<T[]> {\n const content = await readFile(filePath, 'utf8')\n\n if (!content.trim()) {\n return []\n }\n\n const results: T[] = []\n for (const line of content.trim().split('\\n')) {\n if (!line) continue\n try {\n results.push(JSON.parse(line) as T)\n } catch {\n telemetryStoreDebug('Skipping malformed JSON line in %s: %s', filePath, line.slice(0, 100))\n }\n }\n return results\n}\n"],"names":["readFile","telemetryStoreDebug","readNDJSON","filePath","content","trim","results","line","split","push","JSON","parse","slice"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AAEzC,SAAQC,mBAAmB,QAAO,2BAA0B;AAE5D;;;;;;;;CAQC,GACD,OAAO,eAAeC,WAAcC,QAAgB;IAClD,MAAMC,UAAU,MAAMJ,SAASG,UAAU;IAEzC,IAAI,CAACC,QAAQC,IAAI,IAAI;QACnB,OAAO,EAAE;IACX;IAEA,MAAMC,UAAe,EAAE;IACvB,KAAK,MAAMC,QAAQH,QAAQC,IAAI,GAAGG,KAAK,CAAC,MAAO;QAC7C,IAAI,CAACD,MAAM;QACX,IAAI;YACFD,QAAQG,IAAI,CAACC,KAAKC,KAAK,CAACJ;QAC1B,EAAE,OAAM;YACNN,oBAAoB,0CAA0CE,UAAUI,KAAKK,KAAK,CAAC,GAAG;QACxF;IACF;IACA,OAAON;AACT"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { telemetryDebug } from '../../actions/telemetry/telemetryDebug.js';
|
|
2
|
+
/**
|
|
3
|
+
* Debug logger for telemetry store operations
|
|
4
|
+
* @internal
|
|
5
|
+
*/ export const telemetryStoreDebug = telemetryDebug.extend('telemetryStore');
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=telemetryStoreDebug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/util/telemetry/telemetryStoreDebug.ts"],"sourcesContent":["import {telemetryDebug} from '../../actions/telemetry/telemetryDebug.js'\n\n/**\n * Debug logger for telemetry store operations\n * @internal\n */\nexport const telemetryStoreDebug = telemetryDebug.extend('telemetryStore')\n"],"names":["telemetryDebug","telemetryStoreDebug","extend"],"mappings":"AAAA,SAAQA,cAAc,QAAO,4CAA2C;AAExE;;;CAGC,GACD,OAAO,MAAMC,sBAAsBD,eAAeE,MAAM,CAAC,kBAAiB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { createTraceId } from './createTraceId.js';
|
|
2
|
+
import { telemetryStoreDebug } from './telemetryStoreDebug.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a trace instance that can emit trace lifecycle events
|
|
5
|
+
* @internal
|
|
6
|
+
*/ export function createTrace(definition, context, sessionId, emit, createLoggerFn) {
|
|
7
|
+
const traceId = createTraceId();
|
|
8
|
+
telemetryStoreDebug('Creating trace %s with traceId: %s', definition.name, traceId);
|
|
9
|
+
let isStarted = false;
|
|
10
|
+
let isCompleted = false;
|
|
11
|
+
const emitTraceEvent = (type, data)=>{
|
|
12
|
+
if (isCompleted) return;
|
|
13
|
+
const baseEvent = {
|
|
14
|
+
context: context,
|
|
15
|
+
createdAt: new Date().toISOString(),
|
|
16
|
+
name: definition.name,
|
|
17
|
+
sessionId,
|
|
18
|
+
traceId,
|
|
19
|
+
version: definition.version
|
|
20
|
+
};
|
|
21
|
+
let traceEvent;
|
|
22
|
+
switch(type){
|
|
23
|
+
case 'trace.complete':
|
|
24
|
+
{
|
|
25
|
+
traceEvent = {
|
|
26
|
+
...baseEvent,
|
|
27
|
+
type: 'trace.complete',
|
|
28
|
+
...data && {
|
|
29
|
+
data
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'trace.error':
|
|
35
|
+
{
|
|
36
|
+
traceEvent = {
|
|
37
|
+
...baseEvent,
|
|
38
|
+
data,
|
|
39
|
+
type: 'trace.error'
|
|
40
|
+
};
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'trace.log':
|
|
44
|
+
{
|
|
45
|
+
traceEvent = {
|
|
46
|
+
...baseEvent,
|
|
47
|
+
data,
|
|
48
|
+
type: 'trace.log'
|
|
49
|
+
};
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case 'trace.start':
|
|
53
|
+
{
|
|
54
|
+
traceEvent = {
|
|
55
|
+
...baseEvent,
|
|
56
|
+
type: 'trace.start'
|
|
57
|
+
};
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
default:
|
|
61
|
+
{
|
|
62
|
+
return; // Unknown type
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
emit(traceEvent);
|
|
66
|
+
};
|
|
67
|
+
const start = ()=>{
|
|
68
|
+
if (isStarted) {
|
|
69
|
+
telemetryStoreDebug('Trace %s already started', traceId);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
telemetryStoreDebug('Starting trace %s', traceId);
|
|
73
|
+
isStarted = true;
|
|
74
|
+
emitTraceEvent('trace.start');
|
|
75
|
+
};
|
|
76
|
+
const log = (data)=>{
|
|
77
|
+
telemetryStoreDebug('Logging data for trace %s', traceId);
|
|
78
|
+
if (!isStarted) start();
|
|
79
|
+
emitTraceEvent('trace.log', data);
|
|
80
|
+
};
|
|
81
|
+
const complete = ()=>{
|
|
82
|
+
if (isCompleted) {
|
|
83
|
+
telemetryStoreDebug('Trace %s already completed', traceId);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
telemetryStoreDebug('Completing trace %s', traceId);
|
|
87
|
+
if (!isStarted) start();
|
|
88
|
+
emitTraceEvent('trace.complete');
|
|
89
|
+
isCompleted = true;
|
|
90
|
+
};
|
|
91
|
+
const error = (err)=>{
|
|
92
|
+
if (isCompleted) {
|
|
93
|
+
telemetryStoreDebug('Trace %s already completed, ignoring error', traceId);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
telemetryStoreDebug('Error in trace %s: %s', traceId, err.message);
|
|
97
|
+
if (!isStarted) start();
|
|
98
|
+
// Convert Error to serializable object
|
|
99
|
+
const errorData = {
|
|
100
|
+
message: err.message,
|
|
101
|
+
name: err.name,
|
|
102
|
+
stack: err.stack
|
|
103
|
+
};
|
|
104
|
+
emitTraceEvent('trace.error', errorData);
|
|
105
|
+
isCompleted = true;
|
|
106
|
+
};
|
|
107
|
+
const awaitPromise = (promise, finalData)=>{
|
|
108
|
+
if (!isStarted) start();
|
|
109
|
+
return promise.then((result)=>{
|
|
110
|
+
if (finalData !== undefined) {
|
|
111
|
+
log(finalData);
|
|
112
|
+
}
|
|
113
|
+
complete();
|
|
114
|
+
return result;
|
|
115
|
+
}).catch((err)=>{
|
|
116
|
+
error(err);
|
|
117
|
+
throw err;
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const newContext = (name)=>{
|
|
121
|
+
const contextEmit = (event)=>{
|
|
122
|
+
// For trace events, we can add context, but for log events we need to be careful
|
|
123
|
+
if (event.type.startsWith('trace.')) {
|
|
124
|
+
const existingContext = event.context;
|
|
125
|
+
emit({
|
|
126
|
+
...event,
|
|
127
|
+
context: {
|
|
128
|
+
...typeof existingContext === 'object' && existingContext ? existingContext : {},
|
|
129
|
+
contextName: name
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
} else {
|
|
133
|
+
// For log events, we can't add context as it's not part of TelemetryLogEvent
|
|
134
|
+
// Just emit as-is
|
|
135
|
+
emit(event);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
return createLoggerFn(sessionId, contextEmit);
|
|
139
|
+
};
|
|
140
|
+
return {
|
|
141
|
+
await: awaitPromise,
|
|
142
|
+
complete,
|
|
143
|
+
error,
|
|
144
|
+
log,
|
|
145
|
+
newContext,
|
|
146
|
+
start
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -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"}
|