@sanity/cli 6.0.0-alpha.8 → 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 +728 -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 +24 -37
- 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 +65 -28
- 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 +82 -54
- 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/getStudioEnvironmentVariables.js +1 -1
- package/dist/actions/build/getStudioEnvironmentVariables.js.map +1 -1
- package/dist/actions/build/getViteConfig.js +48 -5
- 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 +5 -3
- 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 +6 -5
- 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 +10 -6
- 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 +52 -22
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/deploy/deployStudio.js +95 -46
- 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 +7 -4
- package/dist/actions/dev/startAppDevServer.js.map +1 -1
- package/dist/actions/dev/startStudioDevServer.js +23 -19
- 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.map +1 -0
- package/dist/actions/documents/types.js.map +1 -1
- package/dist/actions/documents/validate.js +15 -17
- package/dist/actions/documents/validate.js.map +1 -1
- package/dist/{threads/validateDocuments.js → actions/documents/validateDocuments.worker.js} +37 -37
- package/dist/actions/documents/validateDocuments.worker.js.map +1 -0
- 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 +9 -8
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js.map +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/prettyReporter.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/{threads/configClient.js → actions/exec/configClient.worker.js} +2 -2
- package/dist/actions/exec/configClient.worker.js.map +1 -0
- package/dist/actions/exec/execScript.js +29 -25
- package/dist/actions/exec/execScript.js.map +1 -1
- package/dist/{threads/registerBrowserEnv.js → actions/exec/registerBrowserEnv.worker.js} +1 -1
- package/dist/actions/exec/registerBrowserEnv.worker.js.map +1 -0
- package/dist/actions/graphql/SchemaError.js +15 -0
- package/dist/actions/graphql/SchemaError.js.map +1 -0
- 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 +659 -0
- package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -0
- 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 +226 -0
- package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -0
- package/dist/actions/graphql/gen1/generateTypeQueries.js +86 -0
- package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -0
- package/dist/actions/graphql/gen1/index.js +19 -0
- package/dist/actions/graphql/gen1/index.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/booleanFilters.js +26 -0
- package/dist/actions/graphql/gen2/filters/booleanFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/dateFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/dateFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/dateTimeFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/dateTimeFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/documentFilters.js +21 -0
- package/dist/actions/graphql/gen2/filters/documentFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/floatFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/floatFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/idFilters.js +44 -0
- package/dist/actions/graphql/gen2/filters/idFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/integerFilters.js +46 -0
- package/dist/actions/graphql/gen2/filters/integerFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/filters/stringFilters.js +49 -0
- package/dist/actions/graphql/gen2/filters/stringFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/generateTypeFilters.js +85 -0
- package/dist/actions/graphql/gen2/generateTypeFilters.js.map +1 -0
- package/dist/actions/graphql/gen2/generateTypeQueries.js +107 -0
- package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -0
- package/dist/actions/graphql/gen2/generateTypeSortings.js +70 -0
- package/dist/actions/graphql/gen2/generateTypeSortings.js.map +1 -0
- package/dist/actions/graphql/gen2/index.js +22 -0
- package/dist/actions/graphql/gen2/index.js.map +1 -0
- package/dist/actions/graphql/gen3/filters/documentFilters.js +21 -0
- package/dist/actions/graphql/gen3/filters/documentFilters.js.map +1 -0
- package/dist/actions/graphql/gen3/generateTypeFilters.js +101 -0
- package/dist/actions/graphql/gen3/generateTypeFilters.js.map +1 -0
- package/dist/actions/graphql/gen3/generateTypeQueries.js +103 -0
- package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -0
- package/dist/actions/graphql/gen3/generateTypeSortings.js +70 -0
- package/dist/actions/graphql/gen3/generateTypeSortings.js.map +1 -0
- package/dist/actions/graphql/gen3/index.js +30 -0
- package/dist/actions/graphql/gen3/index.js.map +1 -0
- package/dist/actions/graphql/gen3/utils.js +12 -0
- package/dist/actions/graphql/gen3/utils.js.map +1 -0
- package/dist/actions/graphql/getGraphQLAPIs.js +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/graphqlDebug.js +4 -0
- package/dist/actions/graphql/graphqlDebug.js.map +1 -0
- package/dist/actions/graphql/helpUrls.js +3 -0
- package/dist/actions/graphql/helpUrls.js.map +1 -0
- package/dist/actions/graphql/helpers.js +24 -0
- package/dist/actions/graphql/helpers.js.map +1 -0
- package/dist/actions/graphql/resolveApiGeneration.js +43 -0
- package/dist/actions/graphql/resolveApiGeneration.js.map +1 -0
- package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js +187 -0
- package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js.map +1 -0
- package/dist/actions/graphql/types.js.map +1 -1
- package/dist/actions/init/bootstrapLocalTemplate.js +13 -10
- 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/env/createOrAppendEnvVars.js +2 -2
- package/dist/actions/init/env/createOrAppendEnvVars.js.map +1 -1
- package/dist/actions/init/env/writeEnvVarsToFile.js +2 -2
- package/dist/actions/init/env/writeEnvVarsToFile.js.map +1 -1
- package/dist/actions/init/fetchPostInitPrompt.js +2 -2
- package/dist/actions/init/fetchPostInitPrompt.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/resolvePackageManager.js +2 -2
- package/dist/actions/init/resolvePackageManager.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 +75 -58
- package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
- package/dist/actions/mcp/editorConfigs.js +205 -0
- package/dist/actions/mcp/editorConfigs.js.map +1 -0
- package/dist/actions/mcp/promptForMCPSetup.js +24 -0
- package/dist/actions/mcp/promptForMCPSetup.js.map +1 -0
- package/dist/actions/mcp/setupMCP.js +88 -0
- package/dist/actions/mcp/setupMCP.js.map +1 -0
- package/dist/actions/mcp/types.js +3 -0
- package/dist/actions/mcp/types.js.map +1 -0
- package/dist/actions/mcp/writeMCPConfig.js +35 -28
- 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 +24 -20
- 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 +68 -0
- package/dist/actions/organizations/getOrganization.js.map +1 -0
- package/dist/actions/organizations/getOrganizationChoices.js +27 -19
- package/dist/actions/organizations/getOrganizationChoices.js.map +1 -1
- package/dist/actions/organizations/hasProjectAttachGrant.js +1 -1
- package/dist/actions/organizations/hasProjectAttachGrant.js.map +1 -1
- package/dist/actions/organizations/types.js +3 -0
- package/dist/actions/organizations/types.js.map +1 -0
- package/dist/actions/organizations/validateOrganizationName.js +10 -0
- package/dist/actions/organizations/validateOrganizationName.js.map +1 -0
- package/dist/actions/preview/previewAction.js +2 -1
- package/dist/actions/preview/previewAction.js.map +1 -1
- package/dist/actions/projects/getManageUrl.js +6 -0
- package/dist/actions/projects/getManageUrl.js.map +1 -0
- package/dist/actions/projects/validateProjectName.js +11 -0
- package/dist/actions/projects/validateProjectName.js.map +1 -0
- package/dist/actions/schema/deleteSchemaAction.js +16 -32
- 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 +33 -0
- package/dist/actions/schema/extractSanitySchema.worker.js.map +1 -0
- 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 +45 -0
- package/dist/actions/schema/extractSchema.js.map +1 -0
- package/dist/actions/schema/extractSchemaWatcher.js +128 -0
- package/dist/actions/schema/extractSchemaWatcher.js.map +1 -0
- package/dist/actions/schema/formatSchemaValidation.js +22 -6
- 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 +54 -57
- 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/metafile.js.map +1 -1
- package/dist/actions/schema/runSchemaExtraction.js +39 -0
- package/dist/actions/schema/runSchemaExtraction.js.map +1 -0
- package/dist/actions/schema/types.js +17 -0
- package/dist/actions/schema/types.js.map +1 -0
- 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/debug.js +1 -0
- package/dist/actions/schema/utils/debug.js.map +1 -1
- package/dist/actions/schema/utils/extractValidationFromSchemaError.js +12 -0
- package/dist/actions/schema/utils/extractValidationFromSchemaError.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/validateAction.js +7 -17
- package/dist/actions/schema/validateAction.js.map +1 -1
- package/dist/{threads/validateSchema.js → actions/schema/validateSchema.worker.js} +28 -26
- package/dist/actions/schema/validateSchema.worker.js.map +1 -0
- package/dist/actions/schema/watchExtractSchema.js +72 -0
- package/dist/actions/schema/watchExtractSchema.js.map +1 -0
- package/dist/actions/telemetry/getLearnMoreMessage.js.map +1 -1
- package/dist/actions/telemetry/getStatusDisplay.js.map +1 -1
- package/dist/actions/telemetry/getStatusMessage.js.map +1 -1
- package/dist/actions/telemetry/isTrueish.js +10 -0
- package/dist/actions/telemetry/isTrueish.js.map +1 -0
- package/dist/actions/telemetry/resolveConsent.js +3 -3
- package/dist/actions/telemetry/resolveConsent.js.map +1 -1
- package/dist/actions/telemetry/setConsent.js +3 -2
- package/dist/actions/telemetry/setConsent.js.map +1 -1
- package/dist/actions/telemetry/telemetryDisclosure.js +3 -3
- package/dist/actions/telemetry/telemetryDisclosure.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 +3 -3
- 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 +26 -10
- package/dist/commands/backup/disable.js.map +1 -1
- package/dist/commands/backup/download.js +26 -17
- package/dist/commands/backup/download.js.map +1 -1
- package/dist/commands/backup/enable.js +25 -10
- 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 +33 -16
- 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 +51 -35
- package/dist/commands/dataset/copy.js.map +1 -1
- package/dist/commands/dataset/create.js +46 -14
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/dataset/delete.js +28 -9
- 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 +26 -18
- 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 +9 -7
- 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 +7 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/docs/search.js +3 -2
- package/dist/commands/docs/search.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 +74 -48
- package/dist/commands/documents/validate.js.map +1 -1
- package/dist/commands/graphql/deploy.js +457 -0
- package/dist/commands/graphql/deploy.js.map +1 -0
- package/dist/commands/graphql/list.js +21 -13
- 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 +25 -12
- package/dist/commands/hook/logs.js.map +1 -1
- package/dist/commands/init.js +164 -143
- 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 +2 -2
- 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 +14 -75
- package/dist/commands/mcp/configure.js.map +1 -1
- package/dist/commands/media/create-aspect.js +11 -10
- package/dist/commands/media/create-aspect.js.map +1 -1
- package/dist/commands/media/delete-aspect.js +14 -11
- package/dist/commands/media/delete-aspect.js.map +1 -1
- package/dist/commands/media/deploy-aspect.js +31 -17
- package/dist/commands/media/deploy-aspect.js.map +1 -1
- package/dist/commands/media/export.js +10 -9
- package/dist/commands/media/export.js.map +1 -1
- package/dist/commands/media/import.js +14 -12
- package/dist/commands/media/import.js.map +1 -1
- package/dist/commands/preview.js +12 -28
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/projects/create.js +181 -0
- package/dist/commands/projects/create.js.map +1 -0
- package/dist/commands/projects/list.js +4 -3
- 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 +34 -11
- 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/schema/validate.js +10 -2
- package/dist/commands/schema/validate.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/undeploy.js +9 -8
- package/dist/commands/undeploy.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 +77 -34
- package/dist/commands/users/list.js.map +1 -1
- package/dist/commands/versions.js +3 -3
- package/dist/commands/versions.js.map +1 -1
- package/dist/config/createCliConfig.js +2 -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 +39 -0
- package/dist/hooks/prerun/injectEnvVariables.js.map +1 -0
- package/dist/hooks/prerun/setupTelemetry.js +14 -7
- package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
- package/dist/hooks/prerun/warnings.js +6 -0
- package/dist/hooks/prerun/warnings.js.map +1 -0
- package/dist/prompts/promptForDefaultConfig.js +12 -0
- package/dist/prompts/promptForDefaultConfig.js.map +1 -0
- package/dist/prompts/promptForOrganizationName.js +11 -0
- package/dist/prompts/promptForOrganizationName.js.map +1 -0
- package/dist/prompts/promptForProject.js +64 -0
- package/dist/prompts/promptForProject.js.map +1 -0
- package/dist/prompts/promptForProjectName.js +11 -0
- package/dist/prompts/promptForProjectName.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 +17 -11
- 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/documents.js +56 -0
- package/dist/services/documents.js.map +1 -0
- package/dist/services/embeddings.js +25 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/getUrlHeaders.js +25 -0
- package/dist/services/getUrlHeaders.js.map +1 -0
- package/dist/services/grants.js +13 -0
- package/dist/services/grants.js.map +1 -0
- package/dist/services/graphql.js +64 -0
- package/dist/services/graphql.js.map +1 -1
- package/dist/services/mcp.js.map +1 -1
- package/dist/services/organizations.js +1 -1
- package/dist/services/organizations.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 +63 -2
- 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/build.telemetry.js +13 -0
- package/dist/telemetry/build.telemetry.js.map +1 -0
- package/dist/telemetry/extractSchema.telemetry.js +18 -0
- package/dist/telemetry/extractSchema.telemetry.js.map +1 -0
- package/dist/telemetry/init.telemetry.js +8 -0
- package/dist/telemetry/init.telemetry.js.map +1 -0
- package/dist/telemetry/login.telemetry.js +8 -0
- package/dist/telemetry/login.telemetry.js.map +1 -0
- package/dist/telemetry/mcp.telemetry.js +8 -0
- package/dist/telemetry/mcp.telemetry.js.map +1 -0
- package/dist/types/grants.js +3 -0
- package/dist/types/grants.js.map +1 -0
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/dist/util/appId.js +5 -5
- package/dist/util/appId.js.map +1 -1
- package/dist/util/checkProjectPermissions.js +21 -0
- package/dist/util/checkProjectPermissions.js.map +1 -0
- package/dist/util/cliClient.js +13 -10
- 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/formatSize.js +2 -2
- package/dist/util/formatSize.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/getSanityEnv.js +3 -0
- package/dist/util/getSanityEnv.js.map +1 -0
- 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/loadEnv.js +1 -6
- package/dist/util/loadEnv.js.map +1 -1
- 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/{telemetry/store → util/telemetry}/cleanupOldTelemetryFiles.js +1 -1
- package/dist/util/telemetry/cleanupOldTelemetryFiles.js.map +1 -0
- package/dist/{telemetry/store → util/telemetry}/createTelemetryStore.js +4 -4
- package/dist/util/telemetry/createTelemetryStore.js.map +1 -0
- package/dist/util/telemetry/createTraceId.js.map +1 -0
- package/dist/{telemetry/store → util/telemetry}/findTelemetryFiles.js +4 -3
- package/dist/util/telemetry/findTelemetryFiles.js.map +1 -0
- package/dist/{telemetry/store → util/telemetry}/flushTelemetryFiles.js +29 -18
- package/dist/util/telemetry/flushTelemetryFiles.js.map +1 -0
- package/dist/{telemetry/store → util/telemetry}/generateTelemetryFilePath.js +2 -2
- package/dist/util/telemetry/generateTelemetryFilePath.js.map +1 -0
- package/dist/{telemetry/store → util/telemetry}/logger.js +7 -2
- 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/{telemetry/store → util/telemetry}/trace.js +2 -2
- 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/dist/util/warnAboutMissingAppId.js +6 -2
- package/dist/util/warnAboutMissingAppId.js.map +1 -1
- package/dist/util/warnOnNonProductionEnvironment.js +18 -0
- package/dist/util/warnOnNonProductionEnvironment.js.map +1 -0
- package/oclif.config.js +7 -1
- package/oclif.manifest.json +1129 -146
- package/package.json +83 -78
- 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/SanityHelp.d.ts +0 -4
- package/dist/actions/auth/authServer.d.ts +0 -33
- package/dist/actions/auth/getProviderName.d.ts +0 -8
- package/dist/actions/auth/login/getProvider.d.ts +0 -15
- package/dist/actions/auth/login/getSSOProvider.d.ts +0 -13
- package/dist/actions/auth/login/login.d.ts +0 -20
- package/dist/actions/auth/login/promptProviders.d.ts +0 -10
- package/dist/actions/auth/login/promptProviders.js.map +0 -1
- package/dist/actions/auth/login/samlProviderToLoginProvider.d.ts +0 -9
- package/dist/actions/auth/types.d.ts +0 -26
- package/dist/actions/backup/archiveDir.d.ts +0 -10
- package/dist/actions/backup/assertDatasetExist.d.ts +0 -8
- package/dist/actions/backup/backupDownloadDebug.d.ts +0 -1
- package/dist/actions/backup/cleanupTmpDir.d.ts +0 -6
- package/dist/actions/backup/constants.d.ts +0 -1
- package/dist/actions/backup/downloadAsset.d.ts +0 -9
- package/dist/actions/backup/downloadDocument.d.ts +0 -7
- package/dist/actions/backup/fetchNextBackupPage.d.ts +0 -23
- package/dist/actions/backup/progressSpinner.d.ts +0 -14
- package/dist/actions/build/buildApp.d.ts +0 -7
- package/dist/actions/build/buildDebug.d.ts +0 -1
- package/dist/actions/build/buildStaticFiles.d.ts +0 -35
- package/dist/actions/build/buildStudio.d.ts +0 -7
- package/dist/actions/build/buildVendorDependencies.d.ts +0 -11
- package/dist/actions/build/checkRequiredDependencies.d.ts +0 -22
- package/dist/actions/build/checkStudioDependencyVersions.d.ts +0 -2
- package/dist/actions/build/createExternalFromImportMap.d.ts +0 -11
- package/dist/actions/build/decorateIndexWithAutoGeneratedWarning.d.ts +0 -6
- package/dist/actions/build/decorateIndexWithBridgeScript.d.ts +0 -8
- package/dist/actions/build/determineBasePath.d.ts +0 -7
- package/dist/actions/build/generateWebManifest.d.ts +0 -15
- package/dist/actions/build/getAppEnvVars.d.ts +0 -6
- package/dist/actions/build/getAutoUpdatesImportMap.d.ts +0 -21
- package/dist/actions/build/getEntryModule.d.ts +0 -7
- package/dist/actions/build/getPossibleDocumentComponentLocations.d.ts +0 -4
- package/dist/actions/build/getStudioEnvVars.d.ts +0 -6
- package/dist/actions/build/getStudioEnvironmentVariables.d.ts +0 -52
- package/dist/actions/build/getViteConfig.d.ts +0 -66
- package/dist/actions/build/normalizeBasePath.d.ts +0 -6
- package/dist/actions/build/renderDocument.d.ts +0 -15
- package/dist/actions/build/renderDocument.worker.d.ts +0 -1
- package/dist/actions/build/renderDocumentWorker/addTimestampImportMapScriptToHtml.d.ts +0 -6
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.d.ts +0 -19
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.d.ts +0 -13
- package/dist/actions/build/renderDocumentWorker/components/Favicons.d.ts +0 -2
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.d.ts +0 -3
- package/dist/actions/build/renderDocumentWorker/components/NoJavascript.d.ts +0 -3
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.d.ts +0 -5
- package/dist/actions/build/renderDocumentWorker/getDocumentHtml.d.ts +0 -8
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.d.ts +0 -21
- package/dist/actions/build/renderDocumentWorker/tryLoadDocumentComponent.d.ts +0 -8
- package/dist/actions/build/renderDocumentWorker/types.d.ts +0 -8
- package/dist/actions/build/shouldAutoUpdate.d.ts +0 -16
- package/dist/actions/build/types.d.ts +0 -13
- package/dist/actions/build/writeFavicons.d.ts +0 -1
- package/dist/actions/build/writeSanityRuntime.d.ts +0 -19
- package/dist/actions/build/writeWebManifest.d.ts +0 -4
- package/dist/actions/codemods/deskRename.d.ts +0 -2
- package/dist/actions/codemods/index.d.ts +0 -5
- package/dist/actions/codemods/partsTypeDirective.d.ts +0 -2
- package/dist/actions/codemods/reactIconsV3.d.ts +0 -2
- package/dist/actions/codemods/types.d.ts +0 -8
- package/dist/actions/cors/filterAndValidateOrigin.d.ts +0 -7
- package/dist/actions/dataset/create.d.ts +0 -49
- package/dist/actions/dataset/determineDatasetAclMode.d.ts +0 -37
- package/dist/actions/dataset/processAliasName.d.ts +0 -9
- package/dist/actions/dataset/validateDatasetAliasName.d.ts +0 -1
- package/dist/actions/dataset/validateDatasetName.d.ts +0 -13
- package/dist/actions/debug/gatherDebugInfo.d.ts +0 -2
- package/dist/actions/debug/getGlobalConfigLocation.d.ts +0 -1
- package/dist/actions/debug/types.d.ts +0 -30
- package/dist/actions/deploy/checkDir.d.ts +0 -8
- package/dist/actions/deploy/createStudioUserApplication.d.ts +0 -2
- package/dist/actions/deploy/createUserApplicationForApp.d.ts +0 -2
- package/dist/actions/deploy/deployApp.d.ts +0 -7
- package/dist/actions/deploy/deployDebug.d.ts +0 -1
- package/dist/actions/deploy/deployStudio.d.ts +0 -2
- package/dist/actions/deploy/findUserApplicationForApp.d.ts +0 -15
- package/dist/actions/deploy/findUserApplicationForStudio.d.ts +0 -13
- package/dist/actions/deploy/types.d.ts +0 -11
- package/dist/actions/dev/devAction.d.ts +0 -4
- package/dist/actions/dev/devDebug.d.ts +0 -1
- package/dist/actions/dev/getCoreAppUrl.d.ts +0 -5
- package/dist/actions/dev/getCoreAppUrl.js +0 -10
- package/dist/actions/dev/getCoreAppUrl.js.map +0 -1
- package/dist/actions/dev/getDevServerConfig.d.ts +0 -9
- package/dist/actions/dev/startAppDevServer.d.ts +0 -4
- package/dist/actions/dev/startStudioDevServer.d.ts +0 -4
- package/dist/actions/dev/types.d.ts +0 -10
- package/dist/actions/docs/normalizeDocsPath.d.ts +0 -8
- package/dist/actions/documents/constants.d.ts +0 -1
- package/dist/actions/documents/editor.d.ts +0 -11
- package/dist/actions/documents/types.d.ts +0 -2
- package/dist/actions/documents/validate.d.ts +0 -26
- package/dist/actions/documents/validation/reporters/index.d.ts +0 -5
- package/dist/actions/documents/validation/reporters/jsonReporter.d.ts +0 -2
- package/dist/actions/documents/validation/reporters/ndjsonReporter.d.ts +0 -2
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.d.ts +0 -10
- package/dist/actions/documents/validation/reporters/prettyReporter/index.d.ts +0 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/prettyReporter.d.ts +0 -5
- package/dist/actions/documents/validation/reporters/prettyReporter/util.d.ts +0 -53
- package/dist/actions/exec/execScript.d.ts +0 -11
- package/dist/actions/graphql/getGraphQLAPIs.d.ts +0 -2
- package/dist/actions/graphql/getGraphQLAPIs.worker.d.ts +0 -1
- package/dist/actions/graphql/types.d.ts +0 -68
- package/dist/actions/hook/constants.d.ts +0 -1
- package/dist/actions/hook/formatFailure.d.ts +0 -4
- package/dist/actions/hook/types.d.ts +0 -78
- package/dist/actions/init/bootstrapLocalTemplate.d.ts +0 -13
- package/dist/actions/init/bootstrapRemoteTemplate.d.ts +0 -12
- package/dist/actions/init/bootstrapTemplate.d.ts +0 -18
- package/dist/actions/init/checkNextJsReactCompatibility.d.ts +0 -9
- package/dist/actions/init/constants.d.ts +0 -1
- package/dist/actions/init/countNestedFolders.d.ts +0 -1
- package/dist/actions/init/createAppCliConfig.d.ts +0 -5
- package/dist/actions/init/createCliConfig.d.ts +0 -6
- package/dist/actions/init/createPackageManifest.d.ts +0 -6
- package/dist/actions/init/createStudioConfig.d.ts +0 -13
- package/dist/actions/init/determineAppTemplate.d.ts +0 -9
- package/dist/actions/init/env/createOrAppendEnvVars.d.ts +0 -12
- package/dist/actions/init/env/parseAndUpdateEnvVars.d.ts +0 -9
- package/dist/actions/init/env/writeEnvVarsToFile.d.ts +0 -12
- package/dist/actions/init/fetchPostInitPrompt.d.ts +0 -6
- package/dist/actions/init/git.d.ts +0 -1
- package/dist/actions/init/processTemplate.d.ts +0 -7
- package/dist/actions/init/remoteTemplate.d.ts +0 -20
- package/dist/actions/init/resolvePackageManager.d.ts +0 -10
- package/dist/actions/init/setupMCP.d.ts +0 -21
- package/dist/actions/init/setupMCP.js +0 -258
- package/dist/actions/init/setupMCP.js.map +0 -1
- package/dist/actions/init/templates/appQuickstart.d.ts +0 -3
- package/dist/actions/init/templates/appSanityUi.d.ts +0 -3
- package/dist/actions/init/templates/blog.d.ts +0 -3
- package/dist/actions/init/templates/clean.d.ts +0 -3
- package/dist/actions/init/templates/getStarted.d.ts +0 -3
- package/dist/actions/init/templates/index.d.ts +0 -3
- package/dist/actions/init/templates/moviedb.d.ts +0 -3
- package/dist/actions/init/templates/nextjs/index.d.ts +0 -6
- package/dist/actions/init/templates/nextjs/schemaTypes/blog.d.ts +0 -3
- package/dist/actions/init/templates/quickstart.d.ts +0 -3
- package/dist/actions/init/templates/shopify.d.ts +0 -3
- package/dist/actions/init/templates/shopifyOnline.d.ts +0 -3
- package/dist/actions/init/types.d.ts +0 -15
- package/dist/actions/init/updateInitialTemplateMetadata.d.ts +0 -1
- package/dist/actions/manifest/SchemaIcon.d.ts +0 -9
- package/dist/actions/manifest/extractAppManifest.d.ts +0 -20
- package/dist/actions/manifest/extractManifest.d.ts +0 -14
- package/dist/actions/manifest/extractWorkspaceManifest.d.ts +0 -3
- package/dist/actions/manifest/purifyConfig.d.ts +0 -10
- package/dist/actions/manifest/schemaTypeHelpers.d.ts +0 -17
- package/dist/actions/manifest/types.d.ts +0 -119
- package/dist/actions/mcp/detectAvailableEditors.d.ts +0 -8
- package/dist/actions/mcp/getEditorsWithExistingConfig.d.ts +0 -8
- package/dist/actions/mcp/getEditorsWithExistingConfig.js +0 -29
- package/dist/actions/mcp/getEditorsWithExistingConfig.js.map +0 -1
- package/dist/actions/mcp/writeMCPConfig.d.ts +0 -9
- package/dist/actions/media/getMediaLibraryConfig.d.ts +0 -2
- package/dist/actions/media/importAspects.d.ts +0 -52
- package/dist/actions/media/importMedia.d.ts +0 -55
- package/dist/actions/media/importMediaDebug.d.ts +0 -1
- package/dist/actions/organizations/getOrganizationChoices.d.ts +0 -6
- package/dist/actions/organizations/getOrganizationsWithAttachGrantInfo.d.ts +0 -2
- package/dist/actions/organizations/hasProjectAttachGrant.d.ts +0 -1
- package/dist/actions/preview/getPreviewServerConfig.d.ts +0 -15
- package/dist/actions/preview/previewAction.d.ts +0 -10
- package/dist/actions/preview/types.d.ts +0 -2
- package/dist/actions/schema/deleteSchemaAction.d.ts +0 -23
- package/dist/actions/schema/deploySchemas.d.ts +0 -15
- package/dist/actions/schema/extract.d.ts +0 -7
- package/dist/actions/schema/extract.js +0 -38
- package/dist/actions/schema/extract.js.map +0 -1
- package/dist/actions/schema/formatSchemaValidation.d.ts +0 -3
- package/dist/actions/schema/listSchemas.d.ts +0 -12
- package/dist/actions/schema/metafile.d.ts +0 -21
- package/dist/actions/schema/schemaStoreTypes.d.ts +0 -18
- package/dist/actions/schema/schemaStoreTypes.js +0 -19
- package/dist/actions/schema/schemaStoreTypes.js.map +0 -1
- package/dist/actions/schema/utils/debug.d.ts +0 -2
- package/dist/actions/schema/utils/manifestExtractor.d.ts +0 -9
- 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.d.ts +0 -17
- package/dist/actions/schema/utils/manifestReader.js +0 -71
- package/dist/actions/schema/utils/manifestReader.js.map +0 -1
- package/dist/actions/schema/utils/schemaStoreOutStrings.d.ts +0 -2
- package/dist/actions/schema/utils/schemaStoreValidation.d.ts +0 -29
- package/dist/actions/schema/utils/uniqByProjectIdDataset.d.ts +0 -14
- package/dist/actions/schema/utils/workspaceSchemaId.d.ts +0 -8
- package/dist/actions/schema/validateAction.d.ts +0 -11
- package/dist/actions/telemetry/fetchTelemetryConsent.d.ts +0 -11
- package/dist/actions/telemetry/fetchTelemetryConsent.js +0 -38
- package/dist/actions/telemetry/fetchTelemetryConsent.js.map +0 -1
- package/dist/actions/telemetry/getLearnMoreMessage.d.ts +0 -2
- package/dist/actions/telemetry/getStatusDisplay.d.ts +0 -2
- package/dist/actions/telemetry/getStatusMessage.d.ts +0 -2
- package/dist/actions/telemetry/isValidApiConsentStatus.d.ts +0 -20
- package/dist/actions/telemetry/isValidApiConsentStatus.js +0 -25
- package/dist/actions/telemetry/isValidApiConsentStatus.js.map +0 -1
- package/dist/actions/telemetry/resolveConsent.d.ts +0 -2
- package/dist/actions/telemetry/setConsent.d.ts +0 -13
- package/dist/actions/telemetry/telemetryDebug.d.ts +0 -1
- package/dist/actions/telemetry/telemetryDisclosure.d.ts +0 -1
- package/dist/actions/telemetry/telemetryLearnMoreMessage.d.ts +0 -2
- package/dist/actions/telemetry/types.d.ts +0 -14
- package/dist/actions/telemetry/types.js.map +0 -1
- package/dist/actions/tokens/constants.d.ts +0 -4
- package/dist/actions/tokens/types.d.ts +0 -32
- package/dist/actions/tokens/validateRole.d.ts +0 -9
- package/dist/actions/undeploy/getStudioOrAppUserApplication.d.ts +0 -9
- package/dist/actions/users/getMembersForProject.d.ts +0 -24
- package/dist/actions/users/getPendingInvitations.d.ts +0 -13
- package/dist/actions/users/types.d.ts +0 -39
- package/dist/actions/users/usersDebug.d.ts +0 -1
- package/dist/actions/users/validateEmail.d.ts +0 -1
- package/dist/actions/versions/buildPackageArray.d.ts +0 -18
- package/dist/actions/versions/filterSanityModules.d.ts +0 -8
- package/dist/actions/versions/findSanityModulesVersions.d.ts +0 -14
- package/dist/actions/versions/getFormatters.d.ts +0 -17
- package/dist/actions/versions/tryFindLatestVersion.d.ts +0 -8
- package/dist/actions/versions/types.d.ts +0 -14
- package/dist/actions/versions/versionsDebug.d.ts +0 -1
- package/dist/commands/backup/disable.d.ts +0 -13
- package/dist/commands/backup/download.d.ts +0 -21
- package/dist/commands/backup/enable.d.ts +0 -12
- package/dist/commands/backup/list.d.ts +0 -19
- package/dist/commands/build.d.ts +0 -18
- package/dist/commands/codemod.d.ts +0 -19
- package/dist/commands/cors/add.d.ts +0 -29
- package/dist/commands/cors/delete.d.ts +0 -13
- package/dist/commands/cors/list.d.ts +0 -9
- package/dist/commands/dataset/alias/create.d.ts +0 -13
- package/dist/commands/dataset/alias/delete.d.ts +0 -16
- package/dist/commands/dataset/alias/link.d.ts +0 -17
- package/dist/commands/dataset/alias/unlink.d.ts +0 -16
- package/dist/commands/dataset/copy.d.ts +0 -27
- package/dist/commands/dataset/create.d.ts +0 -15
- package/dist/commands/dataset/delete.d.ts +0 -15
- package/dist/commands/dataset/export.d.ts +0 -26
- package/dist/commands/dataset/import.d.ts +0 -1
- package/dist/commands/dataset/list.d.ts +0 -9
- package/dist/commands/dataset/visibility/get.d.ts +0 -12
- package/dist/commands/dataset/visibility/set.d.ts +0 -13
- package/dist/commands/debug.d.ts +0 -9
- package/dist/commands/deploy.d.ts +0 -23
- package/dist/commands/dev.d.ts +0 -14
- package/dist/commands/docs/browse.d.ts +0 -6
- package/dist/commands/docs/read.d.ts +0 -15
- package/dist/commands/docs/search.d.ts +0 -15
- package/dist/commands/documents/create.d.ts +0 -39
- package/dist/commands/documents/delete.d.ts +0 -17
- package/dist/commands/documents/get.d.ts +0 -16
- package/dist/commands/documents/query.d.ts +0 -19
- package/dist/commands/documents/validate.d.ts +0 -29
- package/dist/commands/exec.d.ts +0 -19
- package/dist/commands/graphql/list.d.ts +0 -9
- package/dist/commands/graphql/undeploy.d.ts +0 -16
- package/dist/commands/hook/attempt.d.ts +0 -13
- package/dist/commands/hook/create.d.ts +0 -9
- package/dist/commands/hook/delete.d.ts +0 -13
- package/dist/commands/hook/list.d.ts +0 -9
- package/dist/commands/hook/logs.d.ts +0 -19
- package/dist/commands/init.d.ts +0 -65
- package/dist/commands/install.d.ts +0 -10
- package/dist/commands/learn.d.ts +0 -6
- package/dist/commands/login.d.ts +0 -13
- package/dist/commands/logout.d.ts +0 -6
- package/dist/commands/manage.d.ts +0 -6
- package/dist/commands/manifest/extract.d.ts +0 -12
- package/dist/commands/mcp/configure.d.ts +0 -9
- package/dist/commands/media/create-aspect.d.ts +0 -9
- package/dist/commands/media/delete-aspect.d.ts +0 -16
- package/dist/commands/media/deploy-aspect.d.ts +0 -20
- package/dist/commands/media/export.d.ts +0 -21
- package/dist/commands/media/import.d.ts +0 -18
- package/dist/commands/openapi/get.d.ts +0 -17
- package/dist/commands/openapi/list.d.ts +0 -14
- package/dist/commands/preview.d.ts +0 -17
- package/dist/commands/projects/list.d.ts +0 -13
- package/dist/commands/schema/delete.d.ts +0 -16
- package/dist/commands/schema/deploy.d.ts +0 -16
- package/dist/commands/schema/extract.d.ts +0 -15
- package/dist/commands/schema/list.d.ts +0 -15
- package/dist/commands/schema/validate.d.ts +0 -15
- package/dist/commands/telemetry/disable.d.ts +0 -8
- package/dist/commands/telemetry/enable.d.ts +0 -8
- package/dist/commands/telemetry/status.d.ts +0 -8
- package/dist/commands/tokens/add.d.ts +0 -19
- package/dist/commands/tokens/delete.d.ts +0 -17
- package/dist/commands/tokens/list.d.ts +0 -12
- package/dist/commands/undeploy.d.ts +0 -8
- package/dist/commands/users/invite.d.ts +0 -17
- package/dist/commands/users/list.d.ts +0 -16
- package/dist/commands/versions.d.ts +0 -6
- package/dist/config/createCliConfig.d.ts +0 -73
- package/dist/config/defineCliConfig.d.ts +0 -3
- package/dist/hooks/prerun/flushTelemetry.worker.d.ts +0 -2
- package/dist/hooks/prerun/setupTelemetry.d.ts +0 -2
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/prompts/init/nextjs.d.ts +0 -5
- package/dist/prompts/init/promptForTypescript.d.ts +0 -1
- package/dist/prompts/promptForDataset.d.ts +0 -17
- package/dist/prompts/promptForDatasetAclMode.d.ts +0 -9
- package/dist/prompts/promptForDatasetAliasName.d.ts +0 -4
- package/dist/prompts/promptForDatasetName.d.ts +0 -4
- package/dist/prompts/promptForMediaLibrary.d.ts +0 -15
- package/dist/prompts/selectDataset.d.ts +0 -3
- package/dist/prompts/selectMediaLibrary.d.ts +0 -5
- package/dist/server/devServer.d.ts +0 -24
- package/dist/server/gracefulServerDeath.d.ts +0 -3
- package/dist/server/previewServer.d.ts +0 -19
- package/dist/server/serverDebug.d.ts +0 -1
- package/dist/server/vite/plugin-sanity-basepath-redirect.d.ts +0 -2
- package/dist/server/vite/plugin-sanity-build-entries.d.ts +0 -9
- package/dist/server/vite/plugin-sanity-favicons.d.ts +0 -17
- package/dist/server/vite/plugin-sanity-runtime-rewrite.d.ts +0 -2
- package/dist/services/auth.d.ts +0 -2
- package/dist/services/backup.d.ts +0 -37
- package/dist/services/cors.d.ts +0 -23
- package/dist/services/datasetAliases.d.ts +0 -31
- package/dist/services/datasets.d.ts +0 -64
- package/dist/services/docs.d.ts +0 -15
- package/dist/services/getProjectFeatures.d.ts +0 -5
- package/dist/services/graphql.d.ts +0 -23
- package/dist/services/hooks.d.ts +0 -16
- package/dist/services/mcp.d.ts +0 -39
- package/dist/services/mediaLibraries.d.ts +0 -52
- package/dist/services/organizations.d.ts +0 -42
- package/dist/services/plans.d.ts +0 -2
- package/dist/services/projects.d.ts +0 -36
- package/dist/services/schemas.d.ts +0 -4
- package/dist/services/telemetry.d.ts +0 -2
- package/dist/services/tokens.d.ts +0 -43
- package/dist/services/user.d.ts +0 -15
- package/dist/services/userApplications.d.ts +0 -77
- package/dist/studioDependencies.d.ts +0 -16
- package/dist/studioDependencies.js.map +0 -1
- package/dist/telemetry/cli.telemetry.d.ts +0 -20
- package/dist/telemetry/store/cleanupOldTelemetryFiles.d.ts +0 -5
- package/dist/telemetry/store/cleanupOldTelemetryFiles.js.map +0 -1
- package/dist/telemetry/store/createTelemetryStore.d.ts +0 -39
- package/dist/telemetry/store/createTelemetryStore.js.map +0 -1
- package/dist/telemetry/store/createTraceId.d.ts +0 -10
- package/dist/telemetry/store/createTraceId.js.map +0 -1
- package/dist/telemetry/store/debug.d.ts +0 -5
- package/dist/telemetry/store/debug.js +0 -7
- package/dist/telemetry/store/debug.js.map +0 -1
- package/dist/telemetry/store/findTelemetryFiles.d.ts +0 -13
- package/dist/telemetry/store/findTelemetryFiles.js.map +0 -1
- package/dist/telemetry/store/flushTelemetryFiles.d.ts +0 -20
- package/dist/telemetry/store/flushTelemetryFiles.js.map +0 -1
- package/dist/telemetry/store/generateTelemetryFilePath.d.ts +0 -17
- package/dist/telemetry/store/generateTelemetryFilePath.js.map +0 -1
- package/dist/telemetry/store/getTelemetryBaseInfo.d.ts +0 -27
- package/dist/telemetry/store/getTelemetryBaseInfo.js +0 -34
- package/dist/telemetry/store/getTelemetryBaseInfo.js.map +0 -1
- package/dist/telemetry/store/logger.d.ts +0 -6
- package/dist/telemetry/store/logger.js.map +0 -1
- package/dist/telemetry/store/trace.d.ts +0 -6
- package/dist/telemetry/store/trace.js.map +0 -1
- package/dist/telemetry/utils/readNDJSON.d.ts +0 -10
- package/dist/telemetry/utils/readNDJSON.js +0 -18
- package/dist/telemetry/utils/readNDJSON.js.map +0 -1
- package/dist/threads/configClient.d.ts +0 -1
- package/dist/threads/configClient.js.map +0 -1
- package/dist/threads/registerBrowserEnv.d.ts +0 -1
- package/dist/threads/registerBrowserEnv.js.map +0 -1
- package/dist/threads/validateDocuments.d.ts +0 -45
- package/dist/threads/validateDocuments.js.map +0 -1
- package/dist/threads/validateSchema.d.ts +0 -35
- package/dist/threads/validateSchema.js.map +0 -1
- package/dist/types.d.ts +0 -49
- package/dist/typings/deepSortObject.d.js +0 -2
- package/dist/typings/deepSortObject.d.js.map +0 -1
- package/dist/util/absolutify.d.ts +0 -6
- package/dist/util/appId.d.ts +0 -18
- package/dist/util/canLaunchBrowser.d.ts +0 -1
- package/dist/util/cliClient.d.ts +0 -13
- package/dist/util/compareDependencyVersions.d.ts +0 -35
- package/dist/util/copy.d.ts +0 -5
- package/dist/util/copyDir.d.ts +0 -20
- package/dist/util/detectRuntime.d.ts +0 -8
- package/dist/util/determineIsApp.d.ts +0 -7
- package/dist/util/dirIsEmptyOrNonExistent.d.ts +0 -1
- package/dist/util/ensureTrailingSlash.d.ts +0 -9
- package/dist/util/errorMessages.d.ts +0 -4
- package/dist/util/extractDocumentsFromNdjsonOrTarball.d.ts +0 -6
- package/dist/util/findNdjsonEntry.d.ts +0 -7
- package/dist/util/findNdjsonEntry.js +0 -21
- package/dist/util/findNdjsonEntry.js.map +0 -1
- package/dist/util/formatSize.d.ts +0 -6
- package/dist/util/frameworkPort.d.ts +0 -12
- package/dist/util/fsUtils.d.ts +0 -2
- package/dist/util/getCliVersion.d.ts +0 -7
- package/dist/util/getErrorMessage.d.ts +0 -8
- package/dist/util/getLocalPackageVersion.d.ts +0 -9
- package/dist/util/getProjectDefaults.d.ts +0 -11
- package/dist/util/getSharedServerConfig.d.ts +0 -30
- package/dist/util/getWorkspace.d.ts +0 -3
- package/dist/util/humanFileSize.d.ts +0 -1
- package/dist/util/importStudioConfig.d.ts +0 -1
- package/dist/util/importStudioConfig.js +0 -43
- package/dist/util/importStudioConfig.js.map +0 -1
- package/dist/util/isPathDirName.d.ts +0 -1
- package/dist/util/isSanityDocumentish.d.ts +0 -19
- package/dist/util/isStaging.d.ts +0 -7
- package/dist/util/isStaging.js +0 -10
- package/dist/util/isStaging.js.map +0 -1
- package/dist/util/loadEnv.d.ts +0 -1
- package/dist/util/moduleFormatUtils.d.ts +0 -3
- package/dist/util/packageManager/installPackages.d.ts +0 -18
- package/dist/util/packageManager/packageManagerChoice.d.ts +0 -31
- package/dist/util/packageManager/upgradePackages.d.ts +0 -17
- package/dist/util/parseArguments.d.ts +0 -35
- package/dist/util/pluralize.d.ts +0 -8
- package/dist/util/readModuleVersion.d.ts +0 -8
- package/dist/util/readModuleVersion.js +0 -15
- package/dist/util/readModuleVersion.js.map +0 -1
- package/dist/util/readPackageJson.d.ts +0 -31
- package/dist/util/readPackageJson.js +0 -42
- package/dist/util/readPackageJson.js.map +0 -1
- package/dist/util/readPackageManifest.d.ts +0 -21
- package/dist/util/readPackageManifest.js +0 -46
- package/dist/util/readPackageManifest.js.map +0 -1
- package/dist/util/readdirRecursive.d.ts +0 -5
- package/dist/util/resolveLatestVersions.d.ts +0 -7
- package/dist/util/toInt.d.ts +0 -1
- package/dist/util/trimHashFromVersion.d.ts +0 -5
- package/dist/util/uniqBy.d.ts +0 -1
- package/dist/util/uniqBy.js +0 -14
- package/dist/util/uniqBy.js.map +0 -1
- package/dist/util/validation/validateDocumentsUtils.d.ts +0 -12
- package/dist/util/warnAboutMissingAppId.d.ts +0 -7
- package/dist/util/workerChannels.d.ts +0 -59
- package/dist/util/workerChannels.js +0 -172
- package/dist/util/workerChannels.js.map +0 -1
- /package/dist/actions/{telemetry → doctor}/types.js +0 -0
- /package/dist/{studioDependencies.js → actions/init/studioDependencies.js} +0 -0
- /package/dist/{telemetry/store → util/telemetry}/createTraceId.js +0 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
|
+
import { resolve as resolveImport } from 'import-meta-resolve';
|
|
5
|
+
import { readJsonFile } from './readJsonFile.js';
|
|
6
|
+
import { resolveVersionRange } from './resolveVersionRange.js';
|
|
7
|
+
/**
|
|
8
|
+
* Finds where a package is declared in the workspace, walking up from startDir.
|
|
9
|
+
* Resolves catalog: protocol if used.
|
|
10
|
+
*/ export async function findPackageDeclaration(packageName, startDir, workspaceInfo) {
|
|
11
|
+
let currentDir = path.resolve(startDir);
|
|
12
|
+
const fsRoot = path.parse(currentDir).root;
|
|
13
|
+
// Walk up until we pass the workspace root
|
|
14
|
+
while(currentDir !== fsRoot){
|
|
15
|
+
const packageJsonPath = path.join(currentDir, 'package.json');
|
|
16
|
+
const packageJson = await readJsonFile(packageJsonPath);
|
|
17
|
+
if (packageJson) {
|
|
18
|
+
// Check dependencies and devDependencies only.
|
|
19
|
+
// peerDependencies are excluded because they are not auto-installed —
|
|
20
|
+
// flagging them as declared-not-installed would be a false positive
|
|
21
|
+
// (common in Sanity plugins that list sanity as a peer dep).
|
|
22
|
+
const depTypes = [
|
|
23
|
+
'dependencies',
|
|
24
|
+
'devDependencies'
|
|
25
|
+
];
|
|
26
|
+
for (const depType of depTypes){
|
|
27
|
+
const deps = packageJson[depType];
|
|
28
|
+
if (deps && packageName in deps) {
|
|
29
|
+
const declaredVersionRange = deps[packageName];
|
|
30
|
+
const versionRange = await resolveVersionRange(declaredVersionRange, packageName, workspaceInfo);
|
|
31
|
+
return {
|
|
32
|
+
declaredVersionRange,
|
|
33
|
+
dependencyType: depType,
|
|
34
|
+
packageJsonPath,
|
|
35
|
+
versionRange
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Stop at workspace root
|
|
41
|
+
if (currentDir === workspaceInfo.root) {
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
currentDir = path.dirname(currentDir);
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Finds if a package has an override/resolution defined in the workspace root.
|
|
50
|
+
* Checks npm overrides, yarn resolutions, and pnpm overrides.
|
|
51
|
+
*/ export async function findPackageOverride(packageName, workspaceInfo) {
|
|
52
|
+
const rootPackageJsonPath = path.join(workspaceInfo.root, 'package.json');
|
|
53
|
+
const packageJson = await readJsonFile(rootPackageJsonPath);
|
|
54
|
+
if (!packageJson) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
// Check npm/pnpm overrides
|
|
58
|
+
if (packageJson.overrides && packageName in packageJson.overrides) {
|
|
59
|
+
return {
|
|
60
|
+
mechanism: 'npm-overrides',
|
|
61
|
+
packageJsonPath: rootPackageJsonPath,
|
|
62
|
+
versionRange: packageJson.overrides[packageName]
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// Check pnpm.overrides (alternative location)
|
|
66
|
+
if (packageJson.pnpm?.overrides && packageName in packageJson.pnpm.overrides) {
|
|
67
|
+
return {
|
|
68
|
+
mechanism: 'pnpm-overrides',
|
|
69
|
+
packageJsonPath: rootPackageJsonPath,
|
|
70
|
+
versionRange: packageJson.pnpm.overrides[packageName]
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Check yarn resolutions
|
|
74
|
+
if (packageJson.resolutions && packageName in packageJson.resolutions) {
|
|
75
|
+
return {
|
|
76
|
+
mechanism: 'yarn-resolutions',
|
|
77
|
+
packageJsonPath: rootPackageJsonPath,
|
|
78
|
+
versionRange: packageJson.resolutions[packageName]
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Finds installed package in node_modules, walking up from startDir.
|
|
85
|
+
* Also extracts \@sanity/cli dependency range from sanity package if applicable.
|
|
86
|
+
*
|
|
87
|
+
* Handles both hoisted (npm/yarn) and nested (pnpm) node_modules structures.
|
|
88
|
+
*/ export async function findInstalledPackage(packageName, startDir, workspaceRoot) {
|
|
89
|
+
let currentDir = path.resolve(startDir);
|
|
90
|
+
const fsRoot = path.parse(currentDir).root;
|
|
91
|
+
while(currentDir !== fsRoot){
|
|
92
|
+
// First, check the top-level node_modules (works for npm, yarn, and hoisted pnpm)
|
|
93
|
+
const result = await findPackageInNodeModules(packageName, path.join(currentDir, 'node_modules'));
|
|
94
|
+
if (result) {
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
// For @sanity/cli, use Node's module resolution from sanity's location.
|
|
98
|
+
// This handles all package manager layouts (pnpm nested deps, hoisting, etc.)
|
|
99
|
+
if (packageName === '@sanity/cli') {
|
|
100
|
+
const sanityPath = await resolvePackagePath(path.join(currentDir, 'node_modules', 'sanity'));
|
|
101
|
+
if (sanityPath) {
|
|
102
|
+
const nestedResult = await resolveCliFromSanity(sanityPath);
|
|
103
|
+
if (nestedResult) {
|
|
104
|
+
return nestedResult;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Stop at workspace root
|
|
109
|
+
if (currentDir === workspaceRoot) {
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
currentDir = path.dirname(currentDir);
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Looks for a package in a specific node_modules directory.
|
|
118
|
+
*/ async function findPackageInNodeModules(packageName, nodeModulesDir) {
|
|
119
|
+
const packagePath = path.join(nodeModulesDir, packageName);
|
|
120
|
+
const resolvedPath = await resolvePackagePath(packagePath);
|
|
121
|
+
if (!resolvedPath) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
const packageJsonPath = path.join(resolvedPath, 'package.json');
|
|
125
|
+
const packageJson = await readJsonFile(packageJsonPath);
|
|
126
|
+
if (!packageJson?.version) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
let cliDependencyRange = null;
|
|
130
|
+
// If this is the sanity package, extract @sanity/cli dependency
|
|
131
|
+
if (packageName === 'sanity') {
|
|
132
|
+
cliDependencyRange = packageJson.dependencies?.['@sanity/cli'] ?? null;
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
cliDependencyRange,
|
|
136
|
+
path: resolvedPath,
|
|
137
|
+
version: packageJson.version
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Resolves a package path, following symlinks (pnpm uses symlinks).
|
|
142
|
+
* Returns null if the path doesn't exist.
|
|
143
|
+
*/ async function resolvePackagePath(packagePath) {
|
|
144
|
+
try {
|
|
145
|
+
// Use realpath to follow symlinks (important for pnpm)
|
|
146
|
+
return await fs.realpath(packagePath);
|
|
147
|
+
} catch {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Uses Node's module resolution to find \@sanity/cli from sanity's location.
|
|
153
|
+
* This is more robust than manually traversing directories as it handles
|
|
154
|
+
* all package manager layouts (pnpm nested deps, hoisting variations, etc.)
|
|
155
|
+
*/ async function resolveCliFromSanity(sanityPath) {
|
|
156
|
+
try {
|
|
157
|
+
// Resolve @sanity/cli/package.json from sanity's perspective
|
|
158
|
+
const sanityPkgUrl = pathToFileURL(path.join(sanityPath, 'package.json')).href;
|
|
159
|
+
const cliPkgUrl = resolveImport('@sanity/cli/package.json', sanityPkgUrl);
|
|
160
|
+
const cliPkgPath = fileURLToPath(cliPkgUrl);
|
|
161
|
+
const cliPath = path.dirname(cliPkgPath);
|
|
162
|
+
const packageJson = await readJsonFile(cliPkgPath);
|
|
163
|
+
if (!packageJson?.version) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
cliDependencyRange: null,
|
|
168
|
+
path: cliPath,
|
|
169
|
+
version: packageJson.version
|
|
170
|
+
};
|
|
171
|
+
} catch {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Collects all package info (declaration, override, installed) for a package.
|
|
177
|
+
*/ export async function collectPackageInfo(packageName, startDir, workspaceInfo) {
|
|
178
|
+
const [declared, override, installed] = await Promise.all([
|
|
179
|
+
findPackageDeclaration(packageName, startDir, workspaceInfo),
|
|
180
|
+
findPackageOverride(packageName, workspaceInfo),
|
|
181
|
+
findInstalledPackage(packageName, startDir, workspaceInfo.root)
|
|
182
|
+
]);
|
|
183
|
+
return {
|
|
184
|
+
declared,
|
|
185
|
+
installed,
|
|
186
|
+
override
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
//# sourceMappingURL=detectPackages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/util/packageManager/installationInfo/detectPackages.ts"],"sourcesContent":["import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport {fileURLToPath, pathToFileURL} from 'node:url'\n\nimport {resolve as resolveImport} from 'import-meta-resolve'\n\nimport {readJsonFile} from './readJsonFile.js'\nimport {resolveVersionRange} from './resolveVersionRange.js'\nimport {\n type InstalledPackage,\n type PackageDeclaration,\n type PackageInfo,\n type PackageOverride,\n type SanityPackage,\n type WorkspaceInfo,\n} from './types.js'\n\ninterface PackageJson {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n name?: string\n overrides?: Record<string, string>\n pnpm?: {\n overrides?: Record<string, string>\n }\n resolutions?: Record<string, string>\n version?: string\n}\n\n/**\n * Finds where a package is declared in the workspace, walking up from startDir.\n * Resolves catalog: protocol if used.\n */\nexport async function findPackageDeclaration(\n packageName: SanityPackage,\n startDir: string,\n workspaceInfo: WorkspaceInfo,\n): Promise<PackageDeclaration | null> {\n let currentDir = path.resolve(startDir)\n const fsRoot = path.parse(currentDir).root\n\n // Walk up until we pass the workspace root\n while (currentDir !== fsRoot) {\n const packageJsonPath = path.join(currentDir, 'package.json')\n const packageJson = await readJsonFile<PackageJson>(packageJsonPath)\n\n if (packageJson) {\n // Check dependencies and devDependencies only.\n // peerDependencies are excluded because they are not auto-installed —\n // flagging them as declared-not-installed would be a false positive\n // (common in Sanity plugins that list sanity as a peer dep).\n const depTypes = ['dependencies', 'devDependencies'] as const\n for (const depType of depTypes) {\n const deps = packageJson[depType]\n if (deps && packageName in deps) {\n const declaredVersionRange = deps[packageName]\n const versionRange = await resolveVersionRange(\n declaredVersionRange,\n packageName,\n workspaceInfo,\n )\n\n return {\n declaredVersionRange,\n dependencyType: depType,\n packageJsonPath,\n versionRange,\n }\n }\n }\n }\n\n // Stop at workspace root\n if (currentDir === workspaceInfo.root) {\n break\n }\n\n currentDir = path.dirname(currentDir)\n }\n\n return null\n}\n\n/**\n * Finds if a package has an override/resolution defined in the workspace root.\n * Checks npm overrides, yarn resolutions, and pnpm overrides.\n */\nexport async function findPackageOverride(\n packageName: SanityPackage,\n workspaceInfo: WorkspaceInfo,\n): Promise<PackageOverride | null> {\n const rootPackageJsonPath = path.join(workspaceInfo.root, 'package.json')\n const packageJson = await readJsonFile<PackageJson>(rootPackageJsonPath)\n\n if (!packageJson) {\n return null\n }\n\n // Check npm/pnpm overrides\n if (packageJson.overrides && packageName in packageJson.overrides) {\n return {\n mechanism: 'npm-overrides',\n packageJsonPath: rootPackageJsonPath,\n versionRange: packageJson.overrides[packageName],\n }\n }\n\n // Check pnpm.overrides (alternative location)\n if (packageJson.pnpm?.overrides && packageName in packageJson.pnpm.overrides) {\n return {\n mechanism: 'pnpm-overrides',\n packageJsonPath: rootPackageJsonPath,\n versionRange: packageJson.pnpm.overrides[packageName],\n }\n }\n\n // Check yarn resolutions\n if (packageJson.resolutions && packageName in packageJson.resolutions) {\n return {\n mechanism: 'yarn-resolutions',\n packageJsonPath: rootPackageJsonPath,\n versionRange: packageJson.resolutions[packageName],\n }\n }\n\n return null\n}\n\n/**\n * Finds installed package in node_modules, walking up from startDir.\n * Also extracts \\@sanity/cli dependency range from sanity package if applicable.\n *\n * Handles both hoisted (npm/yarn) and nested (pnpm) node_modules structures.\n */\nexport async function findInstalledPackage(\n packageName: SanityPackage,\n startDir: string,\n workspaceRoot: string,\n): Promise<InstalledPackage | null> {\n let currentDir = path.resolve(startDir)\n const fsRoot = path.parse(currentDir).root\n\n while (currentDir !== fsRoot) {\n // First, check the top-level node_modules (works for npm, yarn, and hoisted pnpm)\n const result = await findPackageInNodeModules(\n packageName,\n path.join(currentDir, 'node_modules'),\n )\n if (result) {\n return result\n }\n\n // For @sanity/cli, use Node's module resolution from sanity's location.\n // This handles all package manager layouts (pnpm nested deps, hoisting, etc.)\n if (packageName === '@sanity/cli') {\n const sanityPath = await resolvePackagePath(path.join(currentDir, 'node_modules', 'sanity'))\n if (sanityPath) {\n const nestedResult = await resolveCliFromSanity(sanityPath)\n if (nestedResult) {\n return nestedResult\n }\n }\n }\n\n // Stop at workspace root\n if (currentDir === workspaceRoot) {\n break\n }\n\n currentDir = path.dirname(currentDir)\n }\n\n return null\n}\n\n/**\n * Looks for a package in a specific node_modules directory.\n */\nasync function findPackageInNodeModules(\n packageName: SanityPackage,\n nodeModulesDir: string,\n): Promise<InstalledPackage | null> {\n const packagePath = path.join(nodeModulesDir, packageName)\n const resolvedPath = await resolvePackagePath(packagePath)\n\n if (!resolvedPath) {\n return null\n }\n\n const packageJsonPath = path.join(resolvedPath, 'package.json')\n const packageJson = await readJsonFile<PackageJson>(packageJsonPath)\n\n if (!packageJson?.version) {\n return null\n }\n\n let cliDependencyRange: string | null = null\n\n // If this is the sanity package, extract @sanity/cli dependency\n if (packageName === 'sanity') {\n cliDependencyRange = packageJson.dependencies?.['@sanity/cli'] ?? null\n }\n\n return {\n cliDependencyRange,\n path: resolvedPath,\n version: packageJson.version,\n }\n}\n\n/**\n * Resolves a package path, following symlinks (pnpm uses symlinks).\n * Returns null if the path doesn't exist.\n */\nasync function resolvePackagePath(packagePath: string): Promise<string | null> {\n try {\n // Use realpath to follow symlinks (important for pnpm)\n return await fs.realpath(packagePath)\n } catch {\n return null\n }\n}\n\n/**\n * Uses Node's module resolution to find \\@sanity/cli from sanity's location.\n * This is more robust than manually traversing directories as it handles\n * all package manager layouts (pnpm nested deps, hoisting variations, etc.)\n */\nasync function resolveCliFromSanity(sanityPath: string): Promise<InstalledPackage | null> {\n try {\n // Resolve @sanity/cli/package.json from sanity's perspective\n const sanityPkgUrl = pathToFileURL(path.join(sanityPath, 'package.json')).href\n const cliPkgUrl = resolveImport('@sanity/cli/package.json', sanityPkgUrl)\n const cliPkgPath = fileURLToPath(cliPkgUrl)\n const cliPath = path.dirname(cliPkgPath)\n\n const packageJson = await readJsonFile<PackageJson>(cliPkgPath)\n if (!packageJson?.version) {\n return null\n }\n\n return {\n cliDependencyRange: null,\n path: cliPath,\n version: packageJson.version,\n }\n } catch {\n return null\n }\n}\n\n/**\n * Collects all package info (declaration, override, installed) for a package.\n */\nexport async function collectPackageInfo(\n packageName: SanityPackage,\n startDir: string,\n workspaceInfo: WorkspaceInfo,\n): Promise<PackageInfo> {\n const [declared, override, installed] = await Promise.all([\n findPackageDeclaration(packageName, startDir, workspaceInfo),\n findPackageOverride(packageName, workspaceInfo),\n findInstalledPackage(packageName, startDir, workspaceInfo.root),\n ])\n\n return {declared, installed, override}\n}\n"],"names":["fs","path","fileURLToPath","pathToFileURL","resolve","resolveImport","readJsonFile","resolveVersionRange","findPackageDeclaration","packageName","startDir","workspaceInfo","currentDir","fsRoot","parse","root","packageJsonPath","join","packageJson","depTypes","depType","deps","declaredVersionRange","versionRange","dependencyType","dirname","findPackageOverride","rootPackageJsonPath","overrides","mechanism","pnpm","resolutions","findInstalledPackage","workspaceRoot","result","findPackageInNodeModules","sanityPath","resolvePackagePath","nestedResult","resolveCliFromSanity","nodeModulesDir","packagePath","resolvedPath","version","cliDependencyRange","dependencies","realpath","sanityPkgUrl","href","cliPkgUrl","cliPkgPath","cliPath","collectPackageInfo","declared","override","installed","Promise","all"],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { readJsonFile } from './readJsonFile.js';
|
|
4
|
+
const LOCKFILE_MAP = {
|
|
5
|
+
'bun.lock': 'bun',
|
|
6
|
+
'bun.lockb': 'bun',
|
|
7
|
+
'package-lock.json': 'npm',
|
|
8
|
+
'pnpm-lock.yaml': 'pnpm',
|
|
9
|
+
'yarn.lock': 'yarn'
|
|
10
|
+
};
|
|
11
|
+
// Explicit detection order: determines which lockfile is preferred when multiple exist.
|
|
12
|
+
// pnpm > npm > yarn > bun — pnpm first because it's most common in Sanity projects.
|
|
13
|
+
const LOCKFILE_NAMES = [
|
|
14
|
+
'pnpm-lock.yaml',
|
|
15
|
+
'package-lock.json',
|
|
16
|
+
'yarn.lock',
|
|
17
|
+
'bun.lock',
|
|
18
|
+
'bun.lockb'
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Detects workspace configuration by walking up from the given directory.
|
|
22
|
+
* Identifies workspace type, root, lockfile, and whether multiple lockfiles exist.
|
|
23
|
+
*
|
|
24
|
+
* The search stops when a lockfile is found, as this indicates a project root.
|
|
25
|
+
* This prevents accidentally detecting parent monorepo configurations when
|
|
26
|
+
* analyzing a standalone project.
|
|
27
|
+
*/ export async function detectWorkspace(cwd) {
|
|
28
|
+
const nearestPackageJson = await findNearestPackageJson(cwd);
|
|
29
|
+
if (!nearestPackageJson) {
|
|
30
|
+
// No package.json found - return minimal info
|
|
31
|
+
return {
|
|
32
|
+
bunfig: false,
|
|
33
|
+
hasMultipleLockfiles: false,
|
|
34
|
+
lockfile: null,
|
|
35
|
+
nearestPackageJson: null,
|
|
36
|
+
root: cwd,
|
|
37
|
+
type: 'standalone',
|
|
38
|
+
yarnBerry: false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Find workspace root and type by walking up
|
|
42
|
+
// This also finds lockfiles along the way
|
|
43
|
+
const { lockfiles, root, type } = await findWorkspaceRoot(path.dirname(nearestPackageJson));
|
|
44
|
+
// De-duplicate by package manager type: bun.lock + bun.lockb both map to 'bun'
|
|
45
|
+
// and should not trigger a false "multiple lockfiles" warning.
|
|
46
|
+
const uniquePmTypes = new Set(lockfiles.map((l)=>l.type));
|
|
47
|
+
const hasMultipleLockfiles = uniquePmTypes.size > 1;
|
|
48
|
+
// Use the first lockfile found (ordered by LOCKFILE_NAMES priority)
|
|
49
|
+
const lockfile = lockfiles.length > 0 ? lockfiles[0] : null;
|
|
50
|
+
// PM-specific config files that exist even in standalone (non-workspace) projects
|
|
51
|
+
const [yarnBerry, bunfig] = await Promise.all([
|
|
52
|
+
fileExists(path.join(root, '.yarnrc.yml')),
|
|
53
|
+
fileExists(path.join(root, 'bunfig.toml'))
|
|
54
|
+
]);
|
|
55
|
+
return {
|
|
56
|
+
bunfig,
|
|
57
|
+
hasMultipleLockfiles,
|
|
58
|
+
lockfile,
|
|
59
|
+
nearestPackageJson,
|
|
60
|
+
root,
|
|
61
|
+
type,
|
|
62
|
+
yarnBerry
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async function findNearestPackageJson(startDir) {
|
|
66
|
+
let currentDir = path.resolve(startDir);
|
|
67
|
+
const root = path.parse(currentDir).root;
|
|
68
|
+
// Intentionally stops before the filesystem root (/) to avoid false positives
|
|
69
|
+
// from system-level package.json files. This is consistent across all three
|
|
70
|
+
// walking functions (findNearestPackageJson, findWorkspaceRoot, findInstalledPackage).
|
|
71
|
+
while(currentDir !== root){
|
|
72
|
+
const packageJsonPath = path.join(currentDir, 'package.json');
|
|
73
|
+
if (await fileExists(packageJsonPath)) {
|
|
74
|
+
return packageJsonPath;
|
|
75
|
+
}
|
|
76
|
+
currentDir = path.dirname(currentDir);
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
async function findWorkspaceRoot(startDir) {
|
|
81
|
+
let currentDir = path.resolve(startDir);
|
|
82
|
+
const fsRoot = path.parse(currentDir).root;
|
|
83
|
+
while(currentDir !== fsRoot){
|
|
84
|
+
// Check for lockfiles at this level - if found, this is the project root
|
|
85
|
+
const lockfiles = await findLockfiles(currentDir);
|
|
86
|
+
if (lockfiles.length > 0) {
|
|
87
|
+
// Found lockfile(s), this is the project root
|
|
88
|
+
// Now determine workspace type
|
|
89
|
+
// Check for pnpm-workspace.yaml (definitive pnpm workspace marker)
|
|
90
|
+
const pnpmWorkspacePath = path.join(currentDir, 'pnpm-workspace.yaml');
|
|
91
|
+
if (await fileExists(pnpmWorkspacePath)) {
|
|
92
|
+
return {
|
|
93
|
+
lockfiles,
|
|
94
|
+
root: currentDir,
|
|
95
|
+
type: 'pnpm-workspaces'
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
// Check for package.json with workspaces field
|
|
99
|
+
const packageJson = await readJsonFile(path.join(currentDir, 'package.json'));
|
|
100
|
+
if (packageJson?.workspaces) {
|
|
101
|
+
return {
|
|
102
|
+
lockfiles,
|
|
103
|
+
root: currentDir,
|
|
104
|
+
type: getWorkspaceType(lockfiles)
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
// Has lockfile but no workspace config - standalone project
|
|
108
|
+
return {
|
|
109
|
+
lockfiles,
|
|
110
|
+
root: currentDir,
|
|
111
|
+
type: 'standalone'
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// No lockfile at this level, check for workspace markers before going up.
|
|
115
|
+
// This handles the case where we're in a nested package that doesn't have
|
|
116
|
+
// its own lockfile, or a fresh checkout before `install` has been run.
|
|
117
|
+
// We already know lockfiles is [] for this dir, so don't re-query.
|
|
118
|
+
// Check for pnpm-workspace.yaml
|
|
119
|
+
const pnpmWorkspacePath = path.join(currentDir, 'pnpm-workspace.yaml');
|
|
120
|
+
if (await fileExists(pnpmWorkspacePath)) {
|
|
121
|
+
return {
|
|
122
|
+
lockfiles: [],
|
|
123
|
+
root: currentDir,
|
|
124
|
+
type: 'pnpm-workspaces'
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// Check for package.json with workspaces field
|
|
128
|
+
const packageJson = await readJsonFile(path.join(currentDir, 'package.json'));
|
|
129
|
+
if (packageJson?.workspaces) {
|
|
130
|
+
// Without a lockfile we can't determine the workspace type from
|
|
131
|
+
// lockfile presence. Check for PM-specific config files to
|
|
132
|
+
// distinguish the workspace type before falling back to npm-workspaces.
|
|
133
|
+
if (await fileExists(path.join(currentDir, '.yarnrc.yml'))) {
|
|
134
|
+
return {
|
|
135
|
+
lockfiles: [],
|
|
136
|
+
root: currentDir,
|
|
137
|
+
type: 'yarn-workspaces'
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if (await fileExists(path.join(currentDir, 'bunfig.toml'))) {
|
|
141
|
+
return {
|
|
142
|
+
lockfiles: [],
|
|
143
|
+
root: currentDir,
|
|
144
|
+
type: 'bun-workspaces'
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
lockfiles: [],
|
|
149
|
+
root: currentDir,
|
|
150
|
+
type: 'npm-workspaces'
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
currentDir = path.dirname(currentDir);
|
|
154
|
+
}
|
|
155
|
+
// No workspace or lockfile found, use the starting directory as root
|
|
156
|
+
return {
|
|
157
|
+
lockfiles: [],
|
|
158
|
+
root: startDir,
|
|
159
|
+
type: 'standalone'
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Determines the workspace type from the lockfiles found at the workspace root.
|
|
164
|
+
* Uses the same priority order as LOCKFILE_NAMES (pnpm, npm, yarn, bun)
|
|
165
|
+
* so that workspace.type and workspace.lockfile.type always agree.
|
|
166
|
+
*/ function getWorkspaceType(lockfiles) {
|
|
167
|
+
if (lockfiles.some((l)=>l.type === 'pnpm')) return 'pnpm-workspaces';
|
|
168
|
+
if (lockfiles.some((l)=>l.type === 'npm')) return 'npm-workspaces';
|
|
169
|
+
if (lockfiles.some((l)=>l.type === 'yarn')) return 'yarn-workspaces';
|
|
170
|
+
if (lockfiles.some((l)=>l.type === 'bun')) return 'bun-workspaces';
|
|
171
|
+
return 'npm-workspaces';
|
|
172
|
+
}
|
|
173
|
+
async function findLockfiles(dir) {
|
|
174
|
+
const results = await Promise.all(LOCKFILE_NAMES.map(async (name)=>{
|
|
175
|
+
const lockfilePath = path.join(dir, name);
|
|
176
|
+
return await fileExists(lockfilePath) ? {
|
|
177
|
+
path: lockfilePath,
|
|
178
|
+
type: LOCKFILE_MAP[name]
|
|
179
|
+
} : null;
|
|
180
|
+
}));
|
|
181
|
+
return results.filter((r)=>r !== null);
|
|
182
|
+
}
|
|
183
|
+
async function fileExists(filePath) {
|
|
184
|
+
try {
|
|
185
|
+
await fs.access(filePath);
|
|
186
|
+
return true;
|
|
187
|
+
} catch {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
//# sourceMappingURL=detectWorkspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/util/packageManager/installationInfo/detectWorkspace.ts"],"sourcesContent":["import fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport {readJsonFile} from './readJsonFile.js'\nimport {type LockfileType, type WorkspaceInfo, type WorkspaceType} from './types.js'\n\ninterface LockfileInfo {\n path: string\n type: LockfileType\n}\n\nconst LOCKFILE_MAP: Record<string, LockfileType> = {\n 'bun.lock': 'bun',\n 'bun.lockb': 'bun',\n 'package-lock.json': 'npm',\n 'pnpm-lock.yaml': 'pnpm',\n 'yarn.lock': 'yarn',\n}\n\n// Explicit detection order: determines which lockfile is preferred when multiple exist.\n// pnpm > npm > yarn > bun — pnpm first because it's most common in Sanity projects.\nconst LOCKFILE_NAMES = ['pnpm-lock.yaml', 'package-lock.json', 'yarn.lock', 'bun.lock', 'bun.lockb']\n\n/**\n * Detects workspace configuration by walking up from the given directory.\n * Identifies workspace type, root, lockfile, and whether multiple lockfiles exist.\n *\n * The search stops when a lockfile is found, as this indicates a project root.\n * This prevents accidentally detecting parent monorepo configurations when\n * analyzing a standalone project.\n */\nexport async function detectWorkspace(cwd: string): Promise<WorkspaceInfo> {\n const nearestPackageJson = await findNearestPackageJson(cwd)\n if (!nearestPackageJson) {\n // No package.json found - return minimal info\n return {\n bunfig: false,\n hasMultipleLockfiles: false,\n lockfile: null,\n nearestPackageJson: null,\n root: cwd,\n type: 'standalone',\n yarnBerry: false,\n }\n }\n\n // Find workspace root and type by walking up\n // This also finds lockfiles along the way\n const {lockfiles, root, type} = await findWorkspaceRoot(path.dirname(nearestPackageJson))\n\n // De-duplicate by package manager type: bun.lock + bun.lockb both map to 'bun'\n // and should not trigger a false \"multiple lockfiles\" warning.\n const uniquePmTypes = new Set(lockfiles.map((l) => l.type))\n const hasMultipleLockfiles = uniquePmTypes.size > 1\n\n // Use the first lockfile found (ordered by LOCKFILE_NAMES priority)\n const lockfile = lockfiles.length > 0 ? lockfiles[0] : null\n\n // PM-specific config files that exist even in standalone (non-workspace) projects\n const [yarnBerry, bunfig] = await Promise.all([\n fileExists(path.join(root, '.yarnrc.yml')),\n fileExists(path.join(root, 'bunfig.toml')),\n ])\n\n return {\n bunfig,\n hasMultipleLockfiles,\n lockfile,\n nearestPackageJson,\n root,\n type,\n yarnBerry,\n }\n}\n\nasync function findNearestPackageJson(startDir: string): Promise<string | null> {\n let currentDir = path.resolve(startDir)\n const root = path.parse(currentDir).root\n\n // Intentionally stops before the filesystem root (/) to avoid false positives\n // from system-level package.json files. This is consistent across all three\n // walking functions (findNearestPackageJson, findWorkspaceRoot, findInstalledPackage).\n while (currentDir !== root) {\n const packageJsonPath = path.join(currentDir, 'package.json')\n if (await fileExists(packageJsonPath)) {\n return packageJsonPath\n }\n currentDir = path.dirname(currentDir)\n }\n\n return null\n}\n\nasync function findWorkspaceRoot(\n startDir: string,\n): Promise<{lockfiles: LockfileInfo[]; root: string; type: WorkspaceType}> {\n let currentDir = path.resolve(startDir)\n const fsRoot = path.parse(currentDir).root\n\n while (currentDir !== fsRoot) {\n // Check for lockfiles at this level - if found, this is the project root\n const lockfiles = await findLockfiles(currentDir)\n\n if (lockfiles.length > 0) {\n // Found lockfile(s), this is the project root\n // Now determine workspace type\n\n // Check for pnpm-workspace.yaml (definitive pnpm workspace marker)\n const pnpmWorkspacePath = path.join(currentDir, 'pnpm-workspace.yaml')\n if (await fileExists(pnpmWorkspacePath)) {\n return {lockfiles, root: currentDir, type: 'pnpm-workspaces'}\n }\n\n // Check for package.json with workspaces field\n const packageJson = await readJsonFile(path.join(currentDir, 'package.json'))\n if (packageJson?.workspaces) {\n return {lockfiles, root: currentDir, type: getWorkspaceType(lockfiles)}\n }\n\n // Has lockfile but no workspace config - standalone project\n return {lockfiles, root: currentDir, type: 'standalone'}\n }\n\n // No lockfile at this level, check for workspace markers before going up.\n // This handles the case where we're in a nested package that doesn't have\n // its own lockfile, or a fresh checkout before `install` has been run.\n // We already know lockfiles is [] for this dir, so don't re-query.\n\n // Check for pnpm-workspace.yaml\n const pnpmWorkspacePath = path.join(currentDir, 'pnpm-workspace.yaml')\n if (await fileExists(pnpmWorkspacePath)) {\n return {lockfiles: [], root: currentDir, type: 'pnpm-workspaces'}\n }\n\n // Check for package.json with workspaces field\n const packageJson = await readJsonFile(path.join(currentDir, 'package.json'))\n if (packageJson?.workspaces) {\n // Without a lockfile we can't determine the workspace type from\n // lockfile presence. Check for PM-specific config files to\n // distinguish the workspace type before falling back to npm-workspaces.\n if (await fileExists(path.join(currentDir, '.yarnrc.yml'))) {\n return {lockfiles: [], root: currentDir, type: 'yarn-workspaces'}\n }\n if (await fileExists(path.join(currentDir, 'bunfig.toml'))) {\n return {lockfiles: [], root: currentDir, type: 'bun-workspaces'}\n }\n return {lockfiles: [], root: currentDir, type: 'npm-workspaces'}\n }\n\n currentDir = path.dirname(currentDir)\n }\n\n // No workspace or lockfile found, use the starting directory as root\n return {lockfiles: [], root: startDir, type: 'standalone'}\n}\n\n/**\n * Determines the workspace type from the lockfiles found at the workspace root.\n * Uses the same priority order as LOCKFILE_NAMES (pnpm, npm, yarn, bun)\n * so that workspace.type and workspace.lockfile.type always agree.\n */\nfunction getWorkspaceType(lockfiles: LockfileInfo[]): WorkspaceType {\n if (lockfiles.some((l) => l.type === 'pnpm')) return 'pnpm-workspaces'\n if (lockfiles.some((l) => l.type === 'npm')) return 'npm-workspaces'\n if (lockfiles.some((l) => l.type === 'yarn')) return 'yarn-workspaces'\n if (lockfiles.some((l) => l.type === 'bun')) return 'bun-workspaces'\n return 'npm-workspaces'\n}\n\nasync function findLockfiles(dir: string): Promise<LockfileInfo[]> {\n const results = await Promise.all(\n LOCKFILE_NAMES.map(async (name) => {\n const lockfilePath = path.join(dir, name)\n return (await fileExists(lockfilePath))\n ? {path: lockfilePath, type: LOCKFILE_MAP[name]}\n : null\n }),\n )\n return results.filter((r): r is LockfileInfo => r !== null)\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath)\n return true\n } catch {\n return false\n }\n}\n"],"names":["fs","path","readJsonFile","LOCKFILE_MAP","LOCKFILE_NAMES","detectWorkspace","cwd","nearestPackageJson","findNearestPackageJson","bunfig","hasMultipleLockfiles","lockfile","root","type","yarnBerry","lockfiles","findWorkspaceRoot","dirname","uniquePmTypes","Set","map","l","size","length","Promise","all","fileExists","join","startDir","currentDir","resolve","parse","packageJsonPath","fsRoot","findLockfiles","pnpmWorkspacePath","packageJson","workspaces","getWorkspaceType","some","dir","results","name","lockfilePath","filter","r","filePath","access"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/util/packageManager/installationInfo/index.ts"],"sourcesContent":["// Main entry point\nexport {detectCliInstallation} from './detectCliInstallation.js'\n"],"names":["detectCliInstallation"],"mappings":"AAAA,mBAAmB;AACnB,SAAQA,qBAAqB,QAAO,6BAA4B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
/**
|
|
3
|
+
* Reads and parses a JSON file, returning null if the file doesn't exist
|
|
4
|
+
* or contains invalid JSON.
|
|
5
|
+
*/ export async function readJsonFile(filePath) {
|
|
6
|
+
try {
|
|
7
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
8
|
+
return JSON.parse(content);
|
|
9
|
+
} catch {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=readJsonFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/util/packageManager/installationInfo/readJsonFile.ts"],"sourcesContent":["import fs from 'node:fs/promises'\n\n/**\n * Reads and parses a JSON file, returning null if the file doesn't exist\n * or contains invalid JSON.\n */\nexport async function readJsonFile<T = Record<string, unknown>>(\n filePath: string,\n): Promise<T | null> {\n try {\n const content = await fs.readFile(filePath, 'utf8')\n return JSON.parse(content) as T\n } catch {\n return null\n }\n}\n"],"names":["fs","readJsonFile","filePath","content","readFile","JSON","parse"],"mappings":"AAAA,OAAOA,QAAQ,mBAAkB;AAEjC;;;CAGC,GACD,OAAO,eAAeC,aACpBC,QAAgB;IAEhB,IAAI;QACF,MAAMC,UAAU,MAAMH,GAAGI,QAAQ,CAACF,UAAU;QAC5C,OAAOG,KAAKC,KAAK,CAACH;IACpB,EAAE,OAAM;QACN,OAAO;IACT;AACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import yaml from 'yaml';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves a version range that may use special protocols like `catalog:` or `catalog:name`.
|
|
6
|
+
*
|
|
7
|
+
* @param declaredRange - The version range as declared in package.json
|
|
8
|
+
* @param packageName - The name of the package (needed for catalog lookup)
|
|
9
|
+
* @param workspaceInfo - Workspace configuration for finding catalog definitions
|
|
10
|
+
* @returns The resolved version range, or the original if it can't be resolved
|
|
11
|
+
*/ export async function resolveVersionRange(declaredRange, packageName, workspaceInfo) {
|
|
12
|
+
// Handle catalog: protocol (pnpm workspaces)
|
|
13
|
+
if (declaredRange.startsWith('catalog:')) {
|
|
14
|
+
return resolveCatalogRange(declaredRange, packageName, workspaceInfo);
|
|
15
|
+
}
|
|
16
|
+
// Other protocols (workspace:*, etc.) are returned as-is
|
|
17
|
+
// They're handled differently in the dependency resolution
|
|
18
|
+
return declaredRange;
|
|
19
|
+
}
|
|
20
|
+
async function resolveCatalogRange(declaredRange, packageName, workspaceInfo) {
|
|
21
|
+
// Parse catalog name from "catalog:" or "catalog:name"
|
|
22
|
+
const catalogName = declaredRange.slice('catalog:'.length) || 'default';
|
|
23
|
+
// Read pnpm-workspace.yaml from workspace root
|
|
24
|
+
const pnpmWorkspacePath = path.join(workspaceInfo.root, 'pnpm-workspace.yaml');
|
|
25
|
+
try {
|
|
26
|
+
const content = await fs.readFile(pnpmWorkspacePath, 'utf8');
|
|
27
|
+
const config = yaml.parse(content);
|
|
28
|
+
// pnpm supports the default catalog in two places:
|
|
29
|
+
// 1. Top-level `catalog:` key
|
|
30
|
+
// 2. Under `catalogs: { default: { ... } }`
|
|
31
|
+
const version = catalogName === 'default' ? config.catalog?.[packageName] ?? config.catalogs?.['default']?.[packageName] : config.catalogs?.[catalogName]?.[packageName];
|
|
32
|
+
if (version) {
|
|
33
|
+
return version;
|
|
34
|
+
}
|
|
35
|
+
} catch {
|
|
36
|
+
// Failed to read or parse pnpm-workspace.yaml
|
|
37
|
+
}
|
|
38
|
+
// Couldn't resolve - return original
|
|
39
|
+
return declaredRange;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=resolveVersionRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/util/packageManager/installationInfo/resolveVersionRange.ts"],"sourcesContent":["import fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport yaml from 'yaml'\n\nimport {type WorkspaceInfo} from './types.js'\n\ninterface PnpmWorkspaceConfig {\n catalog?: Record<string, string>\n catalogs?: Record<string, Record<string, string>>\n packages?: string[]\n}\n\n/**\n * Resolves a version range that may use special protocols like `catalog:` or `catalog:name`.\n *\n * @param declaredRange - The version range as declared in package.json\n * @param packageName - The name of the package (needed for catalog lookup)\n * @param workspaceInfo - Workspace configuration for finding catalog definitions\n * @returns The resolved version range, or the original if it can't be resolved\n */\nexport async function resolveVersionRange(\n declaredRange: string,\n packageName: string,\n workspaceInfo: WorkspaceInfo,\n): Promise<string> {\n // Handle catalog: protocol (pnpm workspaces)\n if (declaredRange.startsWith('catalog:')) {\n return resolveCatalogRange(declaredRange, packageName, workspaceInfo)\n }\n\n // Other protocols (workspace:*, etc.) are returned as-is\n // They're handled differently in the dependency resolution\n return declaredRange\n}\n\nasync function resolveCatalogRange(\n declaredRange: string,\n packageName: string,\n workspaceInfo: WorkspaceInfo,\n): Promise<string> {\n // Parse catalog name from \"catalog:\" or \"catalog:name\"\n const catalogName = declaredRange.slice('catalog:'.length) || 'default'\n\n // Read pnpm-workspace.yaml from workspace root\n const pnpmWorkspacePath = path.join(workspaceInfo.root, 'pnpm-workspace.yaml')\n\n try {\n const content = await fs.readFile(pnpmWorkspacePath, 'utf8')\n const config = yaml.parse(content) as PnpmWorkspaceConfig\n\n // pnpm supports the default catalog in two places:\n // 1. Top-level `catalog:` key\n // 2. Under `catalogs: { default: { ... } }`\n const version =\n catalogName === 'default'\n ? (config.catalog?.[packageName] ?? config.catalogs?.['default']?.[packageName])\n : config.catalogs?.[catalogName]?.[packageName]\n\n if (version) {\n return version\n }\n } catch {\n // Failed to read or parse pnpm-workspace.yaml\n }\n\n // Couldn't resolve - return original\n return declaredRange\n}\n"],"names":["fs","path","yaml","resolveVersionRange","declaredRange","packageName","workspaceInfo","startsWith","resolveCatalogRange","catalogName","slice","length","pnpmWorkspacePath","join","root","content","readFile","config","parse","version","catalog","catalogs"],"mappings":"AAAA,OAAOA,QAAQ,mBAAkB;AACjC,OAAOC,UAAU,YAAW;AAE5B,OAAOC,UAAU,OAAM;AAUvB;;;;;;;CAOC,GACD,OAAO,eAAeC,oBACpBC,aAAqB,EACrBC,WAAmB,EACnBC,aAA4B;IAE5B,6CAA6C;IAC7C,IAAIF,cAAcG,UAAU,CAAC,aAAa;QACxC,OAAOC,oBAAoBJ,eAAeC,aAAaC;IACzD;IAEA,yDAAyD;IACzD,2DAA2D;IAC3D,OAAOF;AACT;AAEA,eAAeI,oBACbJ,aAAqB,EACrBC,WAAmB,EACnBC,aAA4B;IAE5B,uDAAuD;IACvD,MAAMG,cAAcL,cAAcM,KAAK,CAAC,WAAWC,MAAM,KAAK;IAE9D,+CAA+C;IAC/C,MAAMC,oBAAoBX,KAAKY,IAAI,CAACP,cAAcQ,IAAI,EAAE;IAExD,IAAI;QACF,MAAMC,UAAU,MAAMf,GAAGgB,QAAQ,CAACJ,mBAAmB;QACrD,MAAMK,SAASf,KAAKgB,KAAK,CAACH;QAE1B,mDAAmD;QACnD,8BAA8B;QAC9B,4CAA4C;QAC5C,MAAMI,UACJV,gBAAgB,YACXQ,OAAOG,OAAO,EAAE,CAACf,YAAY,IAAIY,OAAOI,QAAQ,EAAE,CAAC,UAAU,EAAE,CAAChB,YAAY,GAC7EY,OAAOI,QAAQ,EAAE,CAACZ,YAAY,EAAE,CAACJ,YAAY;QAEnD,IAAIc,SAAS;YACX,OAAOA;QACT;IACF,EAAE,OAAM;IACN,8CAA8C;IAChD;IAEA,qCAAqC;IACrC,OAAOf;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/util/packageManager/installationInfo/types.ts"],"sourcesContent":["import {type PackageManager} from '../packageManagerChoice.js'\n\n/** Lockfile types — excludes 'manual' since lockfiles always map to a real package manager. */\nexport type LockfileType = Exclude<PackageManager, 'manual'>\n\nexport type WorkspaceType =\n | 'bun-workspaces'\n | 'npm-workspaces'\n | 'pnpm-workspaces'\n | 'standalone'\n | 'yarn-workspaces'\n\nexport type SanityPackage = '@sanity/cli' | 'sanity'\n\nexport interface CliInstallationInfo {\n currentExecution: ExecutionContext\n globalInstallations: GlobalInstallation[]\n issues: Issue[]\n packages: Partial<Record<SanityPackage, PackageInfo>>\n workspace: WorkspaceInfo\n}\n\nexport interface ExecutionContext {\n binaryPath: string | null\n packageManager: PackageManager | null\n resolvedFrom: 'global' | 'local' | 'npx' | 'unknown'\n}\n\nexport interface WorkspaceInfo {\n /** True when bunfig.toml exists at workspace root (bun project marker). */\n bunfig: boolean\n hasMultipleLockfiles: boolean\n lockfile: {\n path: string\n type: LockfileType\n } | null\n nearestPackageJson: string | null\n root: string\n type: WorkspaceType\n /** True when .yarnrc.yml exists at workspace root (Yarn Berry / v2+). */\n yarnBerry: boolean\n}\n\nexport interface PackageInfo {\n declared: PackageDeclaration | null\n installed: InstalledPackage | null\n override: PackageOverride | null\n}\n\nexport interface PackageDeclaration {\n declaredVersionRange: string\n dependencyType: 'dependencies' | 'devDependencies'\n packageJsonPath: string\n versionRange: string\n}\n\nexport interface PackageOverride {\n mechanism: 'npm-overrides' | 'pnpm-overrides' | 'yarn-resolutions'\n packageJsonPath: string\n versionRange: string\n}\n\nexport interface InstalledPackage {\n cliDependencyRange: string | null\n path: string\n version: string\n}\n\nexport interface GlobalInstallation {\n isActive: boolean\n packageManager: LockfileType\n packageName: SanityPackage\n /** Filesystem path to the global installation, or null when it can't be determined. */\n path: string | null\n version: string\n}\n\nexport type IssueType =\n | 'cli-not-installed'\n | 'cli-version-incompatible'\n | 'conflicting-cli-dependency'\n | 'declared-not-installed'\n | 'global-cli-incompatible'\n | 'global-local-mismatch'\n | 'multiple-lockfiles'\n | 'override-in-effect'\n | 'redundant-cli-dependency'\n\nexport type IssueSeverity = 'error' | 'info' | 'warning'\n\nexport interface Issue {\n message: string\n packageName: SanityPackage | null\n severity: IssueSeverity\n suggestion: string | null\n type: IssueType\n}\n\nexport {type PackageManager} from '../packageManagerChoice.js'\n"],"names":[],"mappings":"AAkGA,WAA8D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { isInteractive } from '@sanity/cli-core';
|
|
3
|
+
import { getRunningPackageManager } from '@sanity/cli-core/package-manager';
|
|
3
4
|
import { select } from '@sanity/cli-core/ux';
|
|
4
5
|
// eslint-disable-next-line unicorn/no-named-default
|
|
5
6
|
import { default as preferredPM } from 'preferred-pm';
|
|
@@ -157,25 +158,5 @@ async function getMostLikelyInstalledPackageManager(rootDir) {
|
|
|
157
158
|
const running = getRunningPackageManager();
|
|
158
159
|
return running && installed.includes(running) ? running : undefined;
|
|
159
160
|
}
|
|
160
|
-
function getRunningPackageManager() {
|
|
161
|
-
// Yes, the env var is lowercase - it is set by the package managers themselves
|
|
162
|
-
const agent = process.env.npm_config_user_agent || '';
|
|
163
|
-
if (agent.includes('yarn')) {
|
|
164
|
-
return 'yarn';
|
|
165
|
-
}
|
|
166
|
-
if (agent.includes('pnpm')) {
|
|
167
|
-
return 'pnpm';
|
|
168
|
-
}
|
|
169
|
-
if (agent.includes('bun')) {
|
|
170
|
-
return 'bun';
|
|
171
|
-
}
|
|
172
|
-
// Both yarn and pnpm does a `npm/?` thing, thus the slightly different match here
|
|
173
|
-
// Theoretically not needed since we check for yarn/pnpm above, but in case other
|
|
174
|
-
// package managers do the same thing, we'll (hopefully) catch them here.
|
|
175
|
-
if (/^npm\/\d/.test(agent)) {
|
|
176
|
-
return 'npm';
|
|
177
|
-
}
|
|
178
|
-
return undefined;
|
|
179
|
-
}
|
|
180
161
|
|
|
181
162
|
//# sourceMappingURL=packageManagerChoice.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/util/packageManager/packageManagerChoice.ts"],"sourcesContent":["import path from 'node:path'\n\nimport {isInteractive} from '@sanity/cli-core'\nimport {select} from '@sanity/cli-core/ux'\n// eslint-disable-next-line unicorn/no-named-default\nimport {default as preferredPM} from 'preferred-pm'\nimport which from 'which'\n\nexport type PackageManager = 'bun' | 'manual' | 'npm' | 'pnpm' | 'yarn'\n\nconst EXPERIMENTAL = new Set(['bun'])\n\nexport const ALLOWED_PACKAGE_MANAGERS: readonly PackageManager[] = [\n 'npm',\n 'yarn',\n 'pnpm',\n 'bun',\n 'manual',\n] as const\n\nexport const allowedPackageManagersString = ALLOWED_PACKAGE_MANAGERS.join(' | ')\n\n/**\n * Attempts to resolve the most optimal package manager to use to install/upgrade\n * packages/dependencies at a given path. It does so by looking for package manager\n * specific lockfiles. If it finds a lockfile belonging to a certain package manager,\n * it prioritizes this one. However, if that package manager is not installed, it will\n * prompt the user for which one they want to use and hint at the most optimal one\n * not being installed.\n *\n * Note that this function also takes local npm binary paths into account - for instance,\n * `yarn` can be installed as a dependency of the project instead of globally, and it\n * will use that is available.\n *\n * The user can also select 'manual' to skip the process and run their preferred package\n * manager manually. Commands using this function must take this `manual` choice into\n * account and act accordingly if chosen.\n *\n * @param workDir - The working directory where a lockfile is most likely to be present\n * @param options - Pass `interactive: false` to fall back to npm if most optimal is\n * not available, instead of prompting\n * @returns Object of `chosen` and, if a lockfile is found, the `mostOptimal` choice\n */\nexport async function getPackageManagerChoice(\n workDir: string,\n options: {interactive: boolean},\n): Promise<{chosen: PackageManager; mostOptimal?: PackageManager}> {\n const rootDir = workDir || process.cwd()\n const preferred = (await preferredPM(rootDir))?.name\n\n if (preferred && (await hasCommand(preferred, rootDir))) {\n // There is an optimal/preferred package manager, and the user has it installed!\n return {chosen: preferred, mostOptimal: preferred}\n }\n\n const mostLikelyPM = await getMostLikelyInstalledPackageManager(rootDir)\n const interactive =\n typeof options.interactive === 'boolean' ? options.interactive : isInteractive()\n if (!interactive) {\n // We can't ask the user for their preference, so fall back to either the one that is being run\n // or whatever is installed on the system (npm being the preferred choice).\n // Note that the most optimal choice is already picked above if available.\n return {chosen: mostLikelyPM || (await getFallback(rootDir)), mostOptimal: preferred}\n }\n\n // We can ask the user for their preference, hurray!\n const messageSuffix = preferred ? ` (preferred is ${preferred}, but is not installed)` : ''\n const installed = await getAvailablePackageManagers(rootDir)\n const chosen = await select<PackageManager>({\n choices: installed.map((pm) => ({\n name: EXPERIMENTAL.has(pm) ? `${pm} (experimental)` : pm,\n value: pm,\n })),\n default: preferred || mostLikelyPM,\n message: `Package manager to use for installing dependencies?${messageSuffix}`,\n })\n\n return {chosen, mostOptimal: preferred}\n}\n\nasync function getFallback(cwd: string): Promise<PackageManager> {\n if (await hasNpmInstalled(cwd)) {\n return 'npm'\n }\n\n if (await hasYarnInstalled(cwd)) {\n return 'yarn'\n }\n\n if (await hasPnpmInstalled(cwd)) {\n return 'pnpm'\n }\n\n if (await hasBunInstalled(cwd)) {\n return 'bun'\n }\n\n return 'manual'\n}\n\nasync function getAvailablePackageManagers(cwd: string): Promise<PackageManager[]> {\n const [npm, yarn, pnpm, bun] = await Promise.all([\n hasNpmInstalled(cwd),\n hasYarnInstalled(cwd),\n hasPnpmInstalled(cwd),\n hasBunInstalled(cwd),\n ])\n\n const choices = [npm && 'npm', yarn && 'yarn', pnpm && 'pnpm', bun && 'bun', 'manual']\n return choices.filter((pm): pm is PackageManager => pm !== false)\n}\n\nfunction hasNpmInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('npm', cwd)\n}\n\nfunction hasYarnInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('yarn', cwd)\n}\n\nfunction hasPnpmInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('pnpm', cwd)\n}\n\nfunction hasBunInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('bun', cwd)\n}\n\nfunction getNpmRunPath(cwd: string): string {\n let previous\n let cwdPath = path.resolve(cwd)\n const result: string[] = []\n\n while (previous !== cwdPath) {\n result.push(path.join(cwdPath, 'node_modules', '.bin'))\n previous = cwdPath\n cwdPath = path.resolve(cwdPath, '..')\n }\n\n result.push(path.resolve(cwd, process.execPath, '..'))\n\n const pathEnv = process.env[getPathEnvVarKey()]\n return [...result, pathEnv].join(path.delimiter)\n}\n\nexport function getPartialEnvWithNpmPath(cwd: string): NodeJS.ProcessEnv {\n const key = getPathEnvVarKey()\n return {[key]: getNpmRunPath(cwd)}\n}\n\nfunction getPathEnvVarKey(): string {\n if (process.platform !== 'win32') {\n return 'PATH'\n }\n\n return (\n Object.keys(process.env)\n .toReversed()\n .find((key) => key.toUpperCase() === 'PATH') || 'Path'\n )\n}\n\nfunction getCommandPath(cmd: string, cwd?: string): Promise<string | null> {\n const options = cwd ? {path: getNpmRunPath(cwd)} : undefined\n return which(cmd, options).catch(() => null)\n}\n\nfunction hasCommand(cmd: string, cwd?: string): Promise<boolean> {\n return getCommandPath(cmd, cwd).then((cmdPath) => cmdPath !== null)\n}\n\nasync function getMostLikelyInstalledPackageManager(\n rootDir: string,\n): Promise<PackageManager | undefined> {\n const installed = await getAvailablePackageManagers(rootDir)\n const running = getRunningPackageManager()\n return running && installed.includes(running) ? running : undefined\n}\n\nfunction getRunningPackageManager(): PackageManager | undefined {\n // Yes, the env var is lowercase - it is set by the package managers themselves\n const agent = process.env.npm_config_user_agent || ''\n\n if (agent.includes('yarn')) {\n return 'yarn'\n }\n\n if (agent.includes('pnpm')) {\n return 'pnpm'\n }\n\n if (agent.includes('bun')) {\n return 'bun'\n }\n\n // Both yarn and pnpm does a `npm/?` thing, thus the slightly different match here\n // Theoretically not needed since we check for yarn/pnpm above, but in case other\n // package managers do the same thing, we'll (hopefully) catch them here.\n if (/^npm\\/\\d/.test(agent)) {\n return 'npm'\n }\n\n return undefined\n}\n"],"names":["path","isInteractive","select","default","preferredPM","which","EXPERIMENTAL","Set","ALLOWED_PACKAGE_MANAGERS","allowedPackageManagersString","join","getPackageManagerChoice","workDir","options","rootDir","process","cwd","preferred","name","hasCommand","chosen","mostOptimal","mostLikelyPM","getMostLikelyInstalledPackageManager","interactive","getFallback","messageSuffix","installed","getAvailablePackageManagers","choices","map","pm","has","value","message","hasNpmInstalled","hasYarnInstalled","hasPnpmInstalled","hasBunInstalled","npm","yarn","pnpm","bun","Promise","all","filter","getNpmRunPath","previous","cwdPath","resolve","result","push","execPath","pathEnv","env","getPathEnvVarKey","delimiter","getPartialEnvWithNpmPath","key","platform","Object","keys","toReversed","find","toUpperCase","getCommandPath","cmd","undefined","catch","then","cmdPath","running","getRunningPackageManager","includes","agent","npm_config_user_agent","test"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/util/packageManager/packageManagerChoice.ts"],"sourcesContent":["import path from 'node:path'\n\nimport {isInteractive} from '@sanity/cli-core'\nimport {getRunningPackageManager} from '@sanity/cli-core/package-manager'\nimport {select} from '@sanity/cli-core/ux'\n// eslint-disable-next-line unicorn/no-named-default\nimport {default as preferredPM} from 'preferred-pm'\nimport which from 'which'\n\nexport type PackageManager = 'bun' | 'manual' | 'npm' | 'pnpm' | 'yarn'\n\nconst EXPERIMENTAL = new Set(['bun'])\n\nexport const ALLOWED_PACKAGE_MANAGERS: readonly PackageManager[] = [\n 'npm',\n 'yarn',\n 'pnpm',\n 'bun',\n 'manual',\n] as const\n\nexport const allowedPackageManagersString = ALLOWED_PACKAGE_MANAGERS.join(' | ')\n\n/**\n * Attempts to resolve the most optimal package manager to use to install/upgrade\n * packages/dependencies at a given path. It does so by looking for package manager\n * specific lockfiles. If it finds a lockfile belonging to a certain package manager,\n * it prioritizes this one. However, if that package manager is not installed, it will\n * prompt the user for which one they want to use and hint at the most optimal one\n * not being installed.\n *\n * Note that this function also takes local npm binary paths into account - for instance,\n * `yarn` can be installed as a dependency of the project instead of globally, and it\n * will use that is available.\n *\n * The user can also select 'manual' to skip the process and run their preferred package\n * manager manually. Commands using this function must take this `manual` choice into\n * account and act accordingly if chosen.\n *\n * @param workDir - The working directory where a lockfile is most likely to be present\n * @param options - Pass `interactive: false` to fall back to npm if most optimal is\n * not available, instead of prompting\n * @returns Object of `chosen` and, if a lockfile is found, the `mostOptimal` choice\n */\nexport async function getPackageManagerChoice(\n workDir: string,\n options: {interactive: boolean},\n): Promise<{chosen: PackageManager; mostOptimal?: PackageManager}> {\n const rootDir = workDir || process.cwd()\n const preferred = (await preferredPM(rootDir))?.name\n\n if (preferred && (await hasCommand(preferred, rootDir))) {\n // There is an optimal/preferred package manager, and the user has it installed!\n return {chosen: preferred, mostOptimal: preferred}\n }\n\n const mostLikelyPM = await getMostLikelyInstalledPackageManager(rootDir)\n const interactive =\n typeof options.interactive === 'boolean' ? options.interactive : isInteractive()\n if (!interactive) {\n // We can't ask the user for their preference, so fall back to either the one that is being run\n // or whatever is installed on the system (npm being the preferred choice).\n // Note that the most optimal choice is already picked above if available.\n return {chosen: mostLikelyPM || (await getFallback(rootDir)), mostOptimal: preferred}\n }\n\n // We can ask the user for their preference, hurray!\n const messageSuffix = preferred ? ` (preferred is ${preferred}, but is not installed)` : ''\n const installed = await getAvailablePackageManagers(rootDir)\n const chosen = await select<PackageManager>({\n choices: installed.map((pm) => ({\n name: EXPERIMENTAL.has(pm) ? `${pm} (experimental)` : pm,\n value: pm,\n })),\n default: preferred || mostLikelyPM,\n message: `Package manager to use for installing dependencies?${messageSuffix}`,\n })\n\n return {chosen, mostOptimal: preferred}\n}\n\nasync function getFallback(cwd: string): Promise<PackageManager> {\n if (await hasNpmInstalled(cwd)) {\n return 'npm'\n }\n\n if (await hasYarnInstalled(cwd)) {\n return 'yarn'\n }\n\n if (await hasPnpmInstalled(cwd)) {\n return 'pnpm'\n }\n\n if (await hasBunInstalled(cwd)) {\n return 'bun'\n }\n\n return 'manual'\n}\n\nasync function getAvailablePackageManagers(cwd: string): Promise<PackageManager[]> {\n const [npm, yarn, pnpm, bun] = await Promise.all([\n hasNpmInstalled(cwd),\n hasYarnInstalled(cwd),\n hasPnpmInstalled(cwd),\n hasBunInstalled(cwd),\n ])\n\n const choices = [npm && 'npm', yarn && 'yarn', pnpm && 'pnpm', bun && 'bun', 'manual']\n return choices.filter((pm): pm is PackageManager => pm !== false)\n}\n\nfunction hasNpmInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('npm', cwd)\n}\n\nfunction hasYarnInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('yarn', cwd)\n}\n\nfunction hasPnpmInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('pnpm', cwd)\n}\n\nfunction hasBunInstalled(cwd?: string): Promise<boolean> {\n return hasCommand('bun', cwd)\n}\n\nfunction getNpmRunPath(cwd: string): string {\n let previous\n let cwdPath = path.resolve(cwd)\n const result: string[] = []\n\n while (previous !== cwdPath) {\n result.push(path.join(cwdPath, 'node_modules', '.bin'))\n previous = cwdPath\n cwdPath = path.resolve(cwdPath, '..')\n }\n\n result.push(path.resolve(cwd, process.execPath, '..'))\n\n const pathEnv = process.env[getPathEnvVarKey()]\n return [...result, pathEnv].join(path.delimiter)\n}\n\nexport function getPartialEnvWithNpmPath(cwd: string): NodeJS.ProcessEnv {\n const key = getPathEnvVarKey()\n return {[key]: getNpmRunPath(cwd)}\n}\n\nfunction getPathEnvVarKey(): string {\n if (process.platform !== 'win32') {\n return 'PATH'\n }\n\n return (\n Object.keys(process.env)\n .toReversed()\n .find((key) => key.toUpperCase() === 'PATH') || 'Path'\n )\n}\n\nfunction getCommandPath(cmd: string, cwd?: string): Promise<string | null> {\n const options = cwd ? {path: getNpmRunPath(cwd)} : undefined\n return which(cmd, options).catch(() => null)\n}\n\nfunction hasCommand(cmd: string, cwd?: string): Promise<boolean> {\n return getCommandPath(cmd, cwd).then((cmdPath) => cmdPath !== null)\n}\n\nasync function getMostLikelyInstalledPackageManager(\n rootDir: string,\n): Promise<PackageManager | undefined> {\n const installed = await getAvailablePackageManagers(rootDir)\n const running = getRunningPackageManager()\n return running && installed.includes(running) ? running : undefined\n}\n"],"names":["path","isInteractive","getRunningPackageManager","select","default","preferredPM","which","EXPERIMENTAL","Set","ALLOWED_PACKAGE_MANAGERS","allowedPackageManagersString","join","getPackageManagerChoice","workDir","options","rootDir","process","cwd","preferred","name","hasCommand","chosen","mostOptimal","mostLikelyPM","getMostLikelyInstalledPackageManager","interactive","getFallback","messageSuffix","installed","getAvailablePackageManagers","choices","map","pm","has","value","message","hasNpmInstalled","hasYarnInstalled","hasPnpmInstalled","hasBunInstalled","npm","yarn","pnpm","bun","Promise","all","filter","getNpmRunPath","previous","cwdPath","resolve","result","push","execPath","pathEnv","env","getPathEnvVarKey","delimiter","getPartialEnvWithNpmPath","key","platform","Object","keys","toReversed","find","toUpperCase","getCommandPath","cmd","undefined","catch","then","cmdPath","running","includes"],"mappings":"AAAA,OAAOA,UAAU,YAAW;AAE5B,SAAQC,aAAa,QAAO,mBAAkB;AAC9C,SAAQC,wBAAwB,QAAO,mCAAkC;AACzE,SAAQC,MAAM,QAAO,sBAAqB;AAC1C,oDAAoD;AACpD,SAAQC,WAAWC,WAAW,QAAO,eAAc;AACnD,OAAOC,WAAW,QAAO;AAIzB,MAAMC,eAAe,IAAIC,IAAI;IAAC;CAAM;AAEpC,OAAO,MAAMC,2BAAsD;IACjE;IACA;IACA;IACA;IACA;CACD,CAAS;AAEV,OAAO,MAAMC,+BAA+BD,yBAAyBE,IAAI,CAAC,OAAM;AAEhF;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,eAAeC,wBACpBC,OAAe,EACfC,OAA+B;IAE/B,MAAMC,UAAUF,WAAWG,QAAQC,GAAG;IACtC,MAAMC,YAAa,CAAA,MAAMb,YAAYU,QAAO,GAAII;IAEhD,IAAID,aAAc,MAAME,WAAWF,WAAWH,UAAW;QACvD,gFAAgF;QAChF,OAAO;YAACM,QAAQH;YAAWI,aAAaJ;QAAS;IACnD;IAEA,MAAMK,eAAe,MAAMC,qCAAqCT;IAChE,MAAMU,cACJ,OAAOX,QAAQW,WAAW,KAAK,YAAYX,QAAQW,WAAW,GAAGxB;IACnE,IAAI,CAACwB,aAAa;QAChB,+FAA+F;QAC/F,2EAA2E;QAC3E,0EAA0E;QAC1E,OAAO;YAACJ,QAAQE,gBAAiB,MAAMG,YAAYX;YAAWO,aAAaJ;QAAS;IACtF;IAEA,oDAAoD;IACpD,MAAMS,gBAAgBT,YAAY,CAAC,eAAe,EAAEA,UAAU,uBAAuB,CAAC,GAAG;IACzF,MAAMU,YAAY,MAAMC,4BAA4Bd;IACpD,MAAMM,SAAS,MAAMlB,OAAuB;QAC1C2B,SAASF,UAAUG,GAAG,CAAC,CAACC,KAAQ,CAAA;gBAC9Bb,MAAMZ,aAAa0B,GAAG,CAACD,MAAM,GAAGA,GAAG,eAAe,CAAC,GAAGA;gBACtDE,OAAOF;YACT,CAAA;QACA5B,SAASc,aAAaK;QACtBY,SAAS,CAAC,mDAAmD,EAAER,eAAe;IAChF;IAEA,OAAO;QAACN;QAAQC,aAAaJ;IAAS;AACxC;AAEA,eAAeQ,YAAYT,GAAW;IACpC,IAAI,MAAMmB,gBAAgBnB,MAAM;QAC9B,OAAO;IACT;IAEA,IAAI,MAAMoB,iBAAiBpB,MAAM;QAC/B,OAAO;IACT;IAEA,IAAI,MAAMqB,iBAAiBrB,MAAM;QAC/B,OAAO;IACT;IAEA,IAAI,MAAMsB,gBAAgBtB,MAAM;QAC9B,OAAO;IACT;IAEA,OAAO;AACT;AAEA,eAAeY,4BAA4BZ,GAAW;IACpD,MAAM,CAACuB,KAAKC,MAAMC,MAAMC,IAAI,GAAG,MAAMC,QAAQC,GAAG,CAAC;QAC/CT,gBAAgBnB;QAChBoB,iBAAiBpB;QACjBqB,iBAAiBrB;QACjBsB,gBAAgBtB;KACjB;IAED,MAAMa,UAAU;QAACU,OAAO;QAAOC,QAAQ;QAAQC,QAAQ;QAAQC,OAAO;QAAO;KAAS;IACtF,OAAOb,QAAQgB,MAAM,CAAC,CAACd,KAA6BA,OAAO;AAC7D;AAEA,SAASI,gBAAgBnB,GAAY;IACnC,OAAOG,WAAW,OAAOH;AAC3B;AAEA,SAASoB,iBAAiBpB,GAAY;IACpC,OAAOG,WAAW,QAAQH;AAC5B;AAEA,SAASqB,iBAAiBrB,GAAY;IACpC,OAAOG,WAAW,QAAQH;AAC5B;AAEA,SAASsB,gBAAgBtB,GAAY;IACnC,OAAOG,WAAW,OAAOH;AAC3B;AAEA,SAAS8B,cAAc9B,GAAW;IAChC,IAAI+B;IACJ,IAAIC,UAAUjD,KAAKkD,OAAO,CAACjC;IAC3B,MAAMkC,SAAmB,EAAE;IAE3B,MAAOH,aAAaC,QAAS;QAC3BE,OAAOC,IAAI,CAACpD,KAAKW,IAAI,CAACsC,SAAS,gBAAgB;QAC/CD,WAAWC;QACXA,UAAUjD,KAAKkD,OAAO,CAACD,SAAS;IAClC;IAEAE,OAAOC,IAAI,CAACpD,KAAKkD,OAAO,CAACjC,KAAKD,QAAQqC,QAAQ,EAAE;IAEhD,MAAMC,UAAUtC,QAAQuC,GAAG,CAACC,mBAAmB;IAC/C,OAAO;WAAIL;QAAQG;KAAQ,CAAC3C,IAAI,CAACX,KAAKyD,SAAS;AACjD;AAEA,OAAO,SAASC,yBAAyBzC,GAAW;IAClD,MAAM0C,MAAMH;IACZ,OAAO;QAAC,CAACG,IAAI,EAAEZ,cAAc9B;IAAI;AACnC;AAEA,SAASuC;IACP,IAAIxC,QAAQ4C,QAAQ,KAAK,SAAS;QAChC,OAAO;IACT;IAEA,OACEC,OAAOC,IAAI,CAAC9C,QAAQuC,GAAG,EACpBQ,UAAU,GACVC,IAAI,CAAC,CAACL,MAAQA,IAAIM,WAAW,OAAO,WAAW;AAEtD;AAEA,SAASC,eAAeC,GAAW,EAAElD,GAAY;IAC/C,MAAMH,UAAUG,MAAM;QAACjB,MAAM+C,cAAc9B;IAAI,IAAImD;IACnD,OAAO9D,MAAM6D,KAAKrD,SAASuD,KAAK,CAAC,IAAM;AACzC;AAEA,SAASjD,WAAW+C,GAAW,EAAElD,GAAY;IAC3C,OAAOiD,eAAeC,KAAKlD,KAAKqD,IAAI,CAAC,CAACC,UAAYA,YAAY;AAChE;AAEA,eAAe/C,qCACbT,OAAe;IAEf,MAAMa,YAAY,MAAMC,4BAA4Bd;IACpD,MAAMyD,UAAUtE;IAChB,OAAOsE,WAAW5C,UAAU6C,QAAQ,CAACD,WAAWA,UAAUJ;AAC5D"}
|