@sanity/cli 6.0.0-alpha.9 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +602 -258
- package/bin/run.js +2 -0
- package/dist/SanityHelp.js +51 -23
- package/dist/SanityHelp.js.map +1 -1
- package/dist/actions/auth/authServer.js +28 -22
- package/dist/actions/auth/authServer.js.map +1 -1
- package/dist/actions/auth/login/getProvider.js +49 -38
- package/dist/actions/auth/login/getProvider.js.map +1 -1
- package/dist/actions/auth/login/getSSOProvider.js +25 -19
- package/dist/actions/auth/login/getSSOProvider.js.map +1 -1
- package/dist/actions/auth/login/login.js +12 -33
- package/dist/actions/auth/login/login.js.map +1 -1
- package/dist/actions/auth/types.js.map +1 -1
- package/dist/actions/backup/downloadAsset.js +9 -9
- package/dist/actions/backup/downloadAsset.js.map +1 -1
- package/dist/actions/backup/downloadDocument.js +8 -8
- package/dist/actions/backup/downloadDocument.js.map +1 -1
- package/dist/actions/build/buildApp.js +55 -18
- package/dist/actions/build/buildApp.js.map +1 -1
- package/dist/actions/build/buildStaticFiles.js +3 -2
- package/dist/actions/build/buildStaticFiles.js.map +1 -1
- package/dist/actions/build/buildStudio.js +72 -44
- package/dist/actions/build/buildStudio.js.map +1 -1
- package/dist/actions/build/buildVendorDependencies.js +18 -52
- package/dist/actions/build/buildVendorDependencies.js.map +1 -1
- package/dist/actions/build/checkRequiredDependencies.js +13 -8
- package/dist/actions/build/checkRequiredDependencies.js.map +1 -1
- package/dist/actions/build/checkStudioDependencyVersions.js +19 -17
- package/dist/actions/build/checkStudioDependencyVersions.js.map +1 -1
- package/dist/actions/build/createExternalFromImportMap.js +1 -1
- package/dist/actions/build/createExternalFromImportMap.js.map +1 -1
- package/dist/actions/build/determineBasePath.js +5 -2
- package/dist/actions/build/determineBasePath.js.map +1 -1
- package/dist/actions/build/getViteConfig.js +47 -4
- package/dist/actions/build/getViteConfig.js.map +1 -1
- package/dist/actions/build/handlePrereleaseVersions.js +44 -0
- package/dist/actions/build/handlePrereleaseVersions.js.map +1 -0
- package/dist/actions/build/renderDocument.js +6 -10
- package/dist/actions/build/renderDocument.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js +4 -4
- package/dist/actions/build/renderDocumentWorker/components/BasicDocument.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js +3 -3
- package/dist/actions/build/renderDocumentWorker/components/DefaultDocument.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js +1 -0
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js +2 -2
- package/dist/actions/build/renderDocumentWorker/getDocumentComponent.js.map +1 -1
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js +1 -1
- package/dist/actions/build/renderDocumentWorker/renderDocumentWorker.js.map +1 -1
- package/dist/actions/build/shouldAutoUpdate.js +2 -0
- package/dist/actions/build/shouldAutoUpdate.js.map +1 -1
- package/dist/actions/build/types.js.map +1 -1
- package/dist/actions/build/writeFavicons.js +3 -5
- package/dist/actions/build/writeFavicons.js.map +1 -1
- package/dist/actions/build/writeSanityRuntime.js +4 -3
- package/dist/actions/build/writeSanityRuntime.js.map +1 -1
- package/dist/actions/codemods/reactIconsV3.js +2 -2
- package/dist/actions/codemods/reactIconsV3.js.map +1 -1
- package/dist/actions/dataset/create.js +7 -1
- package/dist/actions/dataset/create.js.map +1 -1
- package/dist/actions/dataset/determineDatasetAclMode.js.map +1 -1
- package/dist/actions/dataset/resolveDataset.js +26 -0
- package/dist/actions/dataset/resolveDataset.js.map +1 -0
- package/dist/actions/debug/formatters.js +22 -0
- package/dist/actions/debug/formatters.js.map +1 -0
- package/dist/actions/deploy/createStudioUserApplication.js +17 -4
- package/dist/actions/deploy/createStudioUserApplication.js.map +1 -1
- package/dist/actions/deploy/deployApp.js +41 -15
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/deploy/deployStudio.js +92 -44
- package/dist/actions/deploy/deployStudio.js.map +1 -1
- package/dist/actions/deploy/deployStudioSchemasAndManifests.js +55 -0
- package/dist/actions/deploy/deployStudioSchemasAndManifests.js.map +1 -0
- package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js +120 -0
- package/dist/actions/deploy/deployStudioSchemasAndManifests.worker.js.map +1 -0
- package/dist/actions/deploy/findUserApplicationForStudio.js +35 -12
- package/dist/actions/deploy/findUserApplicationForStudio.js.map +1 -1
- package/dist/actions/deploy/types.js +10 -1
- package/dist/actions/deploy/types.js.map +1 -1
- package/dist/actions/deploy/urlUtils.js +21 -0
- package/dist/actions/deploy/urlUtils.js.map +1 -0
- package/dist/actions/dev/getDashboardAppUrl.js +48 -0
- package/dist/actions/dev/getDashboardAppUrl.js.map +1 -0
- package/dist/actions/dev/getDevServerConfig.js +7 -3
- package/dist/actions/dev/getDevServerConfig.js.map +1 -1
- package/dist/actions/dev/startAppDevServer.js +3 -3
- package/dist/actions/dev/startAppDevServer.js.map +1 -1
- package/dist/actions/dev/startStudioDevServer.js +14 -14
- package/dist/actions/dev/startStudioDevServer.js.map +1 -1
- package/dist/actions/doctor/checks/cliInstallation.js +56 -0
- package/dist/actions/doctor/checks/cliInstallation.js.map +1 -0
- package/dist/actions/doctor/checks/index.js +16 -0
- package/dist/actions/doctor/checks/index.js.map +1 -0
- package/dist/actions/doctor/runDoctorChecks.js +56 -0
- package/dist/actions/doctor/runDoctorChecks.js.map +1 -0
- package/dist/actions/doctor/types.js +3 -0
- package/dist/actions/doctor/types.js.map +1 -0
- package/dist/actions/documents/types.js.map +1 -1
- package/dist/actions/documents/validate.js +11 -2
- package/dist/actions/documents/validate.js.map +1 -1
- package/dist/actions/documents/validateDocuments.worker.js +4 -4
- package/dist/actions/documents/validateDocuments.worker.js.map +1 -1
- package/dist/actions/documents/validation/reporters/jsonReporter.js +1 -1
- package/dist/actions/documents/validation/reporters/jsonReporter.js.map +1 -1
- package/dist/actions/documents/validation/reporters/ndjsonReporter.js +1 -1
- package/dist/actions/documents/validation/reporters/ndjsonReporter.js.map +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/formatDocumentValidation.js.map +1 -1
- package/dist/actions/documents/validation/reporters/prettyReporter/tree.js +108 -0
- package/dist/actions/documents/validation/reporters/prettyReporter/tree.js.map +1 -0
- package/dist/actions/graphql/SchemaError.js +4 -26
- package/dist/actions/graphql/SchemaError.js.map +1 -1
- package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js +540 -0
- package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js.map +1 -0
- package/dist/actions/graphql/__tests__/fixtures/test-studio.js +1143 -0
- package/dist/actions/graphql/__tests__/fixtures/test-studio.js.map +1 -0
- package/dist/actions/graphql/__tests__/fixtures/union-refs.js +591 -0
- package/dist/actions/graphql/__tests__/fixtures/union-refs.js.map +1 -0
- package/dist/actions/graphql/__tests__/helpers.js +23 -0
- package/dist/actions/graphql/__tests__/helpers.js.map +1 -0
- package/dist/actions/graphql/extractFromSanitySchema.js +5 -5
- package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -1
- package/dist/actions/graphql/extractGraphQLAPIs.js +150 -0
- package/dist/actions/graphql/extractGraphQLAPIs.js.map +1 -0
- package/dist/actions/graphql/extractGraphQLAPIs.worker.js +12 -0
- package/dist/actions/graphql/extractGraphQLAPIs.worker.js.map +1 -0
- package/dist/actions/graphql/gen1/generateTypeFilters.js +1 -1
- package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -1
- package/dist/actions/graphql/gen1/generateTypeQueries.js +2 -1
- package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen1/index.js +5 -5
- package/dist/actions/graphql/gen1/index.js.map +1 -1
- package/dist/actions/graphql/gen2/generateTypeQueries.js +1 -1
- package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen2/index.js +6 -6
- package/dist/actions/graphql/gen2/index.js.map +1 -1
- package/dist/actions/graphql/gen3/generateTypeQueries.js +3 -4
- package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen3/index.js +6 -7
- package/dist/actions/graphql/gen3/index.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.js +15 -57
- package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.worker.js +75 -106
- package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -1
- package/dist/actions/graphql/helpers.js +13 -0
- package/dist/actions/graphql/helpers.js.map +1 -1
- package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js +187 -0
- package/dist/actions/graphql/resolveGraphQLApisFromWorkspaces.js.map +1 -0
- package/dist/actions/graphql/types.js +1 -1
- package/dist/actions/graphql/types.js.map +1 -1
- package/dist/actions/init/bootstrapLocalTemplate.js +10 -8
- package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
- package/dist/actions/init/bootstrapRemoteTemplate.js +6 -5
- package/dist/actions/init/bootstrapRemoteTemplate.js.map +1 -1
- package/dist/actions/init/bootstrapTemplate.js.map +1 -1
- package/dist/actions/init/checkNextJsReactCompatibility.js +1 -1
- package/dist/actions/init/checkNextJsReactCompatibility.js.map +1 -1
- package/dist/actions/init/createAppCliConfig.js.map +1 -1
- package/dist/actions/init/createCliConfig.js.map +1 -1
- package/dist/actions/init/createPackageManifest.js +21 -9
- package/dist/actions/init/createPackageManifest.js.map +1 -1
- package/dist/actions/init/remoteTemplate.js +1 -2
- package/dist/actions/init/remoteTemplate.js.map +1 -1
- package/dist/actions/init/sdkAppDependencies.js +19 -0
- package/dist/actions/init/sdkAppDependencies.js.map +1 -0
- package/dist/actions/init/studioDependencies.js.map +1 -0
- package/dist/actions/init/templates/appQuickstart.js +1 -22
- package/dist/actions/init/templates/appQuickstart.js.map +1 -1
- package/dist/actions/init/templates/appSanityUi.js +3 -22
- package/dist/actions/init/templates/appSanityUi.js.map +1 -1
- package/dist/actions/init/types.js.map +1 -1
- package/dist/actions/manifest/SchemaIcon.js +6 -4
- package/dist/actions/manifest/SchemaIcon.js.map +1 -1
- package/dist/actions/manifest/blockTypeTransformer.js +67 -0
- package/dist/actions/manifest/blockTypeTransformer.js.map +1 -0
- package/dist/actions/manifest/debug.js +4 -0
- package/dist/actions/manifest/debug.js.map +1 -0
- package/dist/actions/manifest/extractAppManifest.js +39 -22
- package/dist/actions/manifest/extractAppManifest.js.map +1 -1
- package/dist/actions/manifest/extractManifest.js +27 -78
- package/dist/actions/manifest/extractManifest.js.map +1 -1
- package/dist/actions/manifest/extractManifest.worker.js +30 -0
- package/dist/actions/manifest/extractManifest.worker.js.map +1 -0
- package/dist/actions/manifest/extractWorkspaceManifest.js +31 -372
- package/dist/actions/manifest/extractWorkspaceManifest.js.map +1 -1
- package/dist/actions/manifest/iconResolver.js +30 -0
- package/dist/actions/manifest/iconResolver.js.map +1 -0
- package/dist/actions/manifest/referenceTransformer.js +51 -0
- package/dist/actions/manifest/referenceTransformer.js.map +1 -0
- package/dist/actions/manifest/schemaTypeHelpers.js +2 -2
- package/dist/actions/manifest/schemaTypeHelpers.js.map +1 -1
- package/dist/actions/manifest/schemaTypeTransformer.js +168 -0
- package/dist/actions/manifest/schemaTypeTransformer.js.map +1 -0
- package/dist/actions/manifest/transformerUtils.js +40 -0
- package/dist/actions/manifest/transformerUtils.js.map +1 -0
- package/dist/actions/manifest/types.js +5 -0
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/manifest/validationTransformer.js +84 -0
- package/dist/actions/manifest/validationTransformer.js.map +1 -0
- package/dist/actions/manifest/writeManifestFile.js +30 -0
- package/dist/actions/manifest/writeManifestFile.js.map +1 -0
- package/dist/actions/manifest/writeWorkspaceFiles.js +30 -0
- package/dist/actions/manifest/writeWorkspaceFiles.js.map +1 -0
- package/dist/actions/mcp/detectAvailableEditors.js +16 -4
- package/dist/actions/mcp/detectAvailableEditors.js.map +1 -1
- package/dist/actions/mcp/editorConfigs.js +64 -6
- package/dist/actions/mcp/editorConfigs.js.map +1 -1
- package/dist/actions/mcp/setupMCP.js.map +1 -1
- package/dist/actions/mcp/writeMCPConfig.js +27 -15
- package/dist/actions/mcp/writeMCPConfig.js.map +1 -1
- package/dist/actions/media/buildNdjsonIndex.js +32 -0
- package/dist/actions/media/buildNdjsonIndex.js.map +1 -0
- package/dist/actions/media/importAspects.js +2 -11
- package/dist/actions/media/importAspects.js.map +1 -1
- package/dist/actions/media/importMedia.js +22 -18
- package/dist/actions/media/importMedia.js.map +1 -1
- package/dist/actions/organizations/findOrganizationByUserName.js +5 -0
- package/dist/actions/organizations/findOrganizationByUserName.js.map +1 -0
- package/dist/actions/organizations/getOrganization.js +3 -2
- package/dist/actions/organizations/getOrganization.js.map +1 -1
- package/dist/actions/organizations/getOrganizationChoices.js +27 -19
- package/dist/actions/organizations/getOrganizationChoices.js.map +1 -1
- package/dist/actions/organizations/types.js +3 -0
- package/dist/actions/organizations/types.js.map +1 -0
- package/dist/actions/projects/getManageUrl.js +1 -2
- package/dist/actions/projects/getManageUrl.js.map +1 -1
- package/dist/actions/schema/deleteSchemaAction.js +14 -30
- package/dist/actions/schema/deleteSchemaAction.js.map +1 -1
- package/dist/actions/schema/deploySchemas.js +22 -91
- package/dist/actions/schema/deploySchemas.js.map +1 -1
- package/dist/actions/schema/extractSanitySchema.worker.js +0 -5
- package/dist/actions/schema/extractSanitySchema.worker.js.map +1 -1
- package/dist/actions/schema/extractSanityWorkspace.worker.js +24 -0
- package/dist/actions/schema/extractSanityWorkspace.worker.js.map +1 -0
- package/dist/actions/schema/extractSchema.js +8 -40
- package/dist/actions/schema/extractSchema.js.map +1 -1
- package/dist/actions/schema/extractSchemaWatcher.js +128 -0
- package/dist/actions/schema/extractSchemaWatcher.js.map +1 -0
- package/dist/actions/schema/formatSchemaValidation.js +5 -1
- package/dist/actions/schema/formatSchemaValidation.js.map +1 -1
- package/dist/actions/schema/getExtractOptions.js +16 -0
- package/dist/actions/schema/getExtractOptions.js.map +1 -0
- package/dist/actions/schema/listSchemas.js +53 -56
- package/dist/actions/schema/listSchemas.js.map +1 -1
- package/dist/actions/schema/matchSchemaPattern.js +22 -0
- package/dist/actions/schema/matchSchemaPattern.js.map +1 -0
- package/dist/actions/schema/runSchemaExtraction.js +39 -0
- package/dist/actions/schema/runSchemaExtraction.js.map +1 -0
- package/dist/actions/schema/types.js +8 -0
- package/dist/actions/schema/types.js.map +1 -1
- package/dist/actions/schema/uniqueWorkspaces.worker.js +24 -0
- package/dist/actions/schema/uniqueWorkspaces.worker.js.map +1 -0
- package/dist/actions/schema/updateWorkspaceSchema.js +63 -0
- package/dist/actions/schema/updateWorkspaceSchema.js.map +1 -0
- package/dist/actions/schema/uploadSchemaToLexicon.js +87 -0
- package/dist/actions/schema/uploadSchemaToLexicon.js.map +1 -0
- package/dist/actions/schema/utils/SchemaExtractionError.js +10 -0
- package/dist/actions/schema/utils/SchemaExtractionError.js.map +1 -0
- package/dist/actions/schema/utils/schemaStoreValidation.js +1 -15
- package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js +1 -1
- package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -1
- package/dist/actions/schema/validateSchema.worker.js +1 -8
- package/dist/actions/schema/validateSchema.worker.js.map +1 -1
- package/dist/actions/schema/watchExtractSchema.js +72 -0
- package/dist/actions/schema/watchExtractSchema.js.map +1 -0
- package/dist/actions/telemetry/isTrueish.js +10 -0
- package/dist/actions/telemetry/isTrueish.js.map +1 -0
- package/dist/actions/telemetry/resolveConsent.js +2 -1
- package/dist/actions/telemetry/resolveConsent.js.map +1 -1
- package/dist/actions/telemetry/setConsent.js +2 -1
- package/dist/actions/telemetry/setConsent.js.map +1 -1
- package/dist/actions/users/getMembersForProject.js.map +1 -1
- package/dist/actions/users/getPendingInvitations.js +1 -1
- package/dist/actions/users/getPendingInvitations.js.map +1 -1
- package/dist/actions/users/types.js.map +1 -1
- package/dist/actions/versions/filterSanityModules.js.map +1 -1
- package/dist/actions/versions/findSanityModulesVersions.js +2 -3
- package/dist/actions/versions/findSanityModulesVersions.js.map +1 -1
- package/dist/actions/versions/getFormatters.js +1 -1
- package/dist/actions/versions/getFormatters.js.map +1 -1
- package/dist/actions/versions/tryFindLatestVersion.js +1 -1
- package/dist/actions/versions/tryFindLatestVersion.js.map +1 -1
- package/dist/commands/backup/disable.js +22 -7
- package/dist/commands/backup/disable.js.map +1 -1
- package/dist/commands/backup/download.js +19 -10
- package/dist/commands/backup/download.js.map +1 -1
- package/dist/commands/backup/enable.js +22 -7
- package/dist/commands/backup/enable.js.map +1 -1
- package/dist/commands/backup/list.js +20 -8
- package/dist/commands/backup/list.js.map +1 -1
- package/dist/commands/build.js +2 -5
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cors/add.js +20 -7
- package/dist/commands/cors/add.js.map +1 -1
- package/dist/commands/cors/delete.js +22 -7
- package/dist/commands/cors/delete.js.map +1 -1
- package/dist/commands/cors/list.js +22 -7
- package/dist/commands/cors/list.js.map +1 -1
- package/dist/commands/dataset/alias/create.js +26 -7
- package/dist/commands/dataset/alias/create.js.map +1 -1
- package/dist/commands/dataset/alias/delete.js +20 -7
- package/dist/commands/dataset/alias/delete.js.map +1 -1
- package/dist/commands/dataset/alias/link.js +20 -7
- package/dist/commands/dataset/alias/link.js.map +1 -1
- package/dist/commands/dataset/alias/unlink.js +20 -7
- package/dist/commands/dataset/alias/unlink.js.map +1 -1
- package/dist/commands/dataset/copy.js +45 -30
- package/dist/commands/dataset/copy.js.map +1 -1
- package/dist/commands/dataset/create.js +32 -7
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/dataset/delete.js +16 -7
- package/dist/commands/dataset/delete.js.map +1 -1
- package/dist/commands/dataset/embeddings/disable.js +77 -0
- package/dist/commands/dataset/embeddings/disable.js.map +1 -0
- package/dist/commands/dataset/embeddings/enable.js +141 -0
- package/dist/commands/dataset/embeddings/enable.js.map +1 -0
- package/dist/commands/dataset/embeddings/status.js +72 -0
- package/dist/commands/dataset/embeddings/status.js.map +1 -0
- package/dist/commands/dataset/export.js +25 -16
- package/dist/commands/dataset/export.js.map +1 -1
- package/dist/commands/dataset/import.js +306 -1
- package/dist/commands/dataset/import.js.map +1 -1
- package/dist/commands/dataset/list.js +22 -7
- package/dist/commands/dataset/list.js.map +1 -1
- package/dist/commands/dataset/visibility/get.js +18 -7
- package/dist/commands/dataset/visibility/get.js.map +1 -1
- package/dist/commands/dataset/visibility/set.js +22 -7
- package/dist/commands/dataset/visibility/set.js.map +1 -1
- package/dist/commands/debug.js +4 -2
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/deploy.js +22 -11
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.js +2 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.js +125 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/documents/create.js +19 -12
- package/dist/commands/documents/create.js.map +1 -1
- package/dist/commands/documents/delete.js +19 -12
- package/dist/commands/documents/delete.js.map +1 -1
- package/dist/commands/documents/get.js +17 -12
- package/dist/commands/documents/get.js.map +1 -1
- package/dist/commands/documents/query.js +26 -18
- package/dist/commands/documents/query.js.map +1 -1
- package/dist/commands/documents/validate.js +32 -10
- package/dist/commands/documents/validate.js.map +1 -1
- package/dist/commands/graphql/deploy.js +58 -30
- package/dist/commands/graphql/deploy.js.map +1 -1
- package/dist/commands/graphql/list.js +15 -7
- package/dist/commands/graphql/list.js.map +1 -1
- package/dist/commands/graphql/undeploy.js +37 -19
- package/dist/commands/graphql/undeploy.js.map +1 -1
- package/dist/commands/hook/attempt.js +22 -7
- package/dist/commands/hook/attempt.js.map +1 -1
- package/dist/commands/hook/create.js +23 -8
- package/dist/commands/hook/create.js.map +1 -1
- package/dist/commands/hook/delete.js +22 -7
- package/dist/commands/hook/delete.js.map +1 -1
- package/dist/commands/hook/list.js +22 -7
- package/dist/commands/hook/list.js.map +1 -1
- package/dist/commands/hook/logs.js +21 -8
- package/dist/commands/hook/logs.js.map +1 -1
- package/dist/commands/init.js +46 -28
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +19 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +8 -6
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/manage.js +0 -1
- package/dist/commands/manage.js.map +1 -1
- package/dist/commands/manifest/extract.js +14 -10
- package/dist/commands/manifest/extract.js.map +1 -1
- package/dist/commands/mcp/configure.js +1 -1
- package/dist/commands/mcp/configure.js.map +1 -1
- package/dist/commands/media/create-aspect.js +4 -4
- package/dist/commands/media/create-aspect.js.map +1 -1
- package/dist/commands/media/delete-aspect.js +9 -7
- package/dist/commands/media/delete-aspect.js.map +1 -1
- package/dist/commands/media/deploy-aspect.js +22 -9
- package/dist/commands/media/deploy-aspect.js.map +1 -1
- package/dist/commands/media/export.js +9 -7
- package/dist/commands/media/export.js.map +1 -1
- package/dist/commands/media/import.js +10 -8
- package/dist/commands/media/import.js.map +1 -1
- package/dist/commands/preview.js +2 -4
- package/dist/commands/preview.js.map +1 -1
- package/dist/commands/projects/list.js +2 -1
- package/dist/commands/projects/list.js.map +1 -1
- package/dist/commands/schema/delete.js +33 -34
- package/dist/commands/schema/delete.js.map +1 -1
- package/dist/commands/schema/deploy.js +19 -30
- package/dist/commands/schema/deploy.js.map +1 -1
- package/dist/commands/schema/extract.js +32 -4
- package/dist/commands/schema/extract.js.map +1 -1
- package/dist/commands/schema/list.js +10 -31
- package/dist/commands/schema/list.js.map +1 -1
- package/dist/commands/tokens/add.js +24 -7
- package/dist/commands/tokens/add.js.map +1 -1
- package/dist/commands/tokens/delete.js +20 -7
- package/dist/commands/tokens/delete.js.map +1 -1
- package/dist/commands/tokens/list.js +20 -7
- package/dist/commands/tokens/list.js.map +1 -1
- package/dist/commands/users/invite.js +24 -7
- package/dist/commands/users/invite.js.map +1 -1
- package/dist/commands/users/list.js +76 -33
- package/dist/commands/users/list.js.map +1 -1
- package/dist/commands/versions.js +1 -1
- package/dist/commands/versions.js.map +1 -1
- package/dist/config/createCliConfig.js +1 -2
- package/dist/config/createCliConfig.js.map +1 -1
- package/dist/exports/_internal.d.ts +132 -0
- package/dist/exports/_internal.js +4 -0
- package/dist/exports/_internal.js.map +1 -0
- package/dist/exports/index.d.ts +113 -0
- package/dist/exports/index.js +6 -0
- package/dist/exports/index.js.map +1 -0
- package/dist/hooks/init/checkForUpdates.js +14 -0
- package/dist/hooks/init/checkForUpdates.js.map +1 -0
- package/dist/hooks/prerun/flushTelemetry.worker.js +1 -1
- package/dist/hooks/prerun/flushTelemetry.worker.js.map +1 -1
- package/dist/hooks/prerun/injectEnvVariables.js +9 -1
- package/dist/hooks/prerun/injectEnvVariables.js.map +1 -1
- package/dist/hooks/prerun/setupTelemetry.js +9 -3
- package/dist/hooks/prerun/setupTelemetry.js.map +1 -1
- package/dist/prompts/promptForProject.js +64 -0
- package/dist/prompts/promptForProject.js.map +1 -0
- package/dist/{actions/auth/login/promptProviders.js → prompts/promptForProviders.js} +3 -3
- package/dist/prompts/promptForProviders.js.map +1 -0
- package/dist/prompts/selectMediaLibrary.js +1 -1
- package/dist/prompts/selectMediaLibrary.js.map +1 -1
- package/dist/server/devServer.js +4 -2
- package/dist/server/devServer.js.map +1 -1
- package/dist/server/previewServer.js +2 -2
- package/dist/server/previewServer.js.map +1 -1
- package/dist/server/vite/plugin-schema-extraction.js +201 -0
- package/dist/server/vite/plugin-schema-extraction.js.map +1 -0
- package/dist/server/vite/plugin-typegen.js +217 -0
- package/dist/server/vite/plugin-typegen.js.map +1 -0
- package/dist/services/auth.js +42 -3
- package/dist/services/auth.js.map +1 -1
- package/dist/services/datasets.js +7 -5
- package/dist/services/datasets.js.map +1 -1
- package/dist/services/docs.js +2 -2
- package/dist/services/docs.js.map +1 -1
- package/dist/services/embeddings.js +25 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/getUrlHeaders.js +7 -18
- package/dist/services/getUrlHeaders.js.map +1 -1
- package/dist/services/grants.js +13 -0
- package/dist/services/grants.js.map +1 -0
- package/dist/services/graphql.js +1 -1
- package/dist/services/graphql.js.map +1 -1
- package/dist/services/projects.js +4 -2
- package/dist/services/projects.js.map +1 -1
- package/dist/services/schemas.js +1 -1
- package/dist/services/schemas.js.map +1 -1
- package/dist/services/telemetry.js +2 -1
- package/dist/services/telemetry.js.map +1 -1
- package/dist/services/userApplications.js +21 -6
- package/dist/services/userApplications.js.map +1 -1
- package/dist/telemetry/extractSchema.telemetry.js +10 -0
- package/dist/telemetry/extractSchema.telemetry.js.map +1 -1
- package/dist/types/grants.js +3 -0
- package/dist/types/grants.js.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/util/checkProjectPermissions.js +21 -0
- package/dist/util/checkProjectPermissions.js.map +1 -0
- package/dist/util/cliClient.js +5 -3
- package/dist/util/cliClient.js.map +1 -1
- package/dist/util/compareDependencyVersions.js +74 -38
- package/dist/util/compareDependencyVersions.js.map +1 -1
- package/dist/util/createExpiringConfig.js +64 -0
- package/dist/util/createExpiringConfig.js.map +1 -0
- package/dist/util/detectFramework.js +135 -0
- package/dist/util/detectFramework.js.map +1 -0
- package/dist/util/errorMessages.js +0 -1
- package/dist/util/errorMessages.js.map +1 -1
- package/dist/util/extractDocumentsFromNdjsonOrTarball.js +1 -2
- package/dist/util/extractDocumentsFromNdjsonOrTarball.js.map +1 -1
- package/dist/util/getCliVersion.js +1 -1
- package/dist/util/getCliVersion.js.map +1 -1
- package/dist/util/getLocalPackageVersion.js +31 -23
- package/dist/util/getLocalPackageVersion.js.map +1 -1
- package/dist/util/getProjectDefaults.js.map +1 -1
- package/dist/util/getSharedServerConfig.js +1 -0
- package/dist/util/getSharedServerConfig.js.map +1 -1
- package/dist/util/getWorkspace.js +1 -1
- package/dist/util/getWorkspace.js.map +1 -1
- package/dist/util/isSchemaError.js +11 -0
- package/dist/util/isSchemaError.js.map +1 -0
- package/dist/util/isTar.js +8 -0
- package/dist/util/isTar.js.map +1 -0
- package/dist/util/packageManager/getPeerDependencies.js +44 -0
- package/dist/util/packageManager/getPeerDependencies.js.map +1 -0
- package/dist/util/packageManager/installationInfo/analyzeIssues.js +225 -0
- package/dist/util/packageManager/installationInfo/analyzeIssues.js.map +1 -0
- package/dist/util/packageManager/installationInfo/commands.js +73 -0
- package/dist/util/packageManager/installationInfo/commands.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectCliInstallation.js +66 -0
- package/dist/util/packageManager/installationInfo/detectCliInstallation.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectGlobals.js +295 -0
- package/dist/util/packageManager/installationInfo/detectGlobals.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectPackages.js +190 -0
- package/dist/util/packageManager/installationInfo/detectPackages.js.map +1 -0
- package/dist/util/packageManager/installationInfo/detectWorkspace.js +192 -0
- package/dist/util/packageManager/installationInfo/detectWorkspace.js.map +1 -0
- package/dist/util/packageManager/installationInfo/index.js +4 -0
- package/dist/util/packageManager/installationInfo/index.js.map +1 -0
- package/dist/util/packageManager/installationInfo/readJsonFile.js +14 -0
- package/dist/util/packageManager/installationInfo/readJsonFile.js.map +1 -0
- package/dist/util/packageManager/installationInfo/resolveVersionRange.js +42 -0
- package/dist/util/packageManager/installationInfo/resolveVersionRange.js.map +1 -0
- package/dist/util/packageManager/installationInfo/types.js +3 -0
- package/dist/util/packageManager/installationInfo/types.js.map +1 -0
- package/dist/util/packageManager/packageManagerChoice.js +1 -20
- package/dist/util/packageManager/packageManagerChoice.js.map +1 -1
- package/dist/util/packageManager/upgradePackages.js +4 -1
- package/dist/util/packageManager/upgradePackages.js.map +1 -1
- package/dist/util/promiseRaceWithTimeout.js +28 -0
- package/dist/util/promiseRaceWithTimeout.js.map +1 -0
- package/dist/util/readdirRecursive.js.map +1 -1
- package/dist/util/resolveLatestVersions.js +2 -2
- package/dist/util/resolveLatestVersions.js.map +1 -1
- package/dist/util/sharedFlags.js +54 -0
- package/dist/util/sharedFlags.js.map +1 -0
- package/dist/util/telemetry/cleanupOldTelemetryFiles.js +30 -0
- package/dist/util/telemetry/cleanupOldTelemetryFiles.js.map +1 -0
- package/dist/util/telemetry/createTelemetryStore.js +95 -0
- package/dist/util/telemetry/createTelemetryStore.js.map +1 -0
- package/dist/util/telemetry/createTraceId.js +10 -0
- package/dist/util/telemetry/createTraceId.js.map +1 -0
- package/dist/util/telemetry/findTelemetryFiles.js +35 -0
- package/dist/util/telemetry/findTelemetryFiles.js.map +1 -0
- package/dist/util/telemetry/flushTelemetryFiles.js +118 -0
- package/dist/util/telemetry/flushTelemetryFiles.js.map +1 -0
- package/dist/util/telemetry/generateTelemetryFilePath.js +30 -0
- package/dist/util/telemetry/generateTelemetryFilePath.js.map +1 -0
- package/dist/util/telemetry/logger.js +59 -0
- package/dist/util/telemetry/logger.js.map +1 -0
- package/dist/util/telemetry/readNDJSON.js +28 -0
- package/dist/util/telemetry/readNDJSON.js.map +1 -0
- package/dist/util/telemetry/telemetryStoreDebug.js +7 -0
- package/dist/util/telemetry/telemetryStoreDebug.js.map +1 -0
- package/dist/util/telemetry/trace.js +150 -0
- package/dist/util/telemetry/trace.js.map +1 -0
- package/dist/util/toForwardSlashes.js +8 -0
- package/dist/util/toForwardSlashes.js.map +1 -0
- package/dist/util/update/fetchLatestVersion.js +21 -0
- package/dist/util/update/fetchLatestVersion.js.map +1 -0
- package/dist/util/update/getUpdateCommand.js +20 -0
- package/dist/util/update/getUpdateCommand.js.map +1 -0
- package/dist/util/update/isInstalledUsingYarn.js +17 -0
- package/dist/util/update/isInstalledUsingYarn.js.map +1 -0
- package/dist/util/update/showNotificationUpdate.js +31 -0
- package/dist/util/update/showNotificationUpdate.js.map +1 -0
- package/dist/util/update/updateChecker.js +60 -0
- package/dist/util/update/updateChecker.js.map +1 -0
- package/dist/util/update/updateCheckerDebug.js +4 -0
- package/dist/util/update/updateCheckerDebug.js.map +1 -0
- package/oclif.config.js +1 -0
- package/oclif.manifest.json +900 -107
- package/package.json +72 -71
- package/static/favicons/apple-touch-icon.png +0 -0
- package/static/favicons/favicon-192.png +0 -0
- package/static/favicons/favicon-512.png +0 -0
- package/static/favicons/favicon-96.png +0 -0
- package/static/favicons/favicon.ico +0 -0
- package/static/favicons/favicon.svg +12 -0
- package/dist/actions/auth/login/promptProviders.js.map +0 -1
- package/dist/actions/dev/getCoreAppUrl.js +0 -10
- package/dist/actions/dev/getCoreAppUrl.js.map +0 -1
- package/dist/actions/schema/schemaStoreTypes.js +0 -19
- package/dist/actions/schema/schemaStoreTypes.js.map +0 -1
- package/dist/actions/schema/utils/manifestExtractor.js +0 -33
- package/dist/actions/schema/utils/manifestExtractor.js.map +0 -1
- package/dist/actions/schema/utils/manifestReader.js +0 -71
- package/dist/actions/schema/utils/manifestReader.js.map +0 -1
- package/dist/index.d.ts +0 -2326
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/studioDependencies.js.map +0 -1
- package/dist/typings/deepSortObject.d.js +0 -2
- package/dist/typings/deepSortObject.d.js.map +0 -1
- package/dist/util/findNdjsonEntry.js +0 -21
- package/dist/util/findNdjsonEntry.js.map +0 -1
- package/dist/util/importStudioConfig.js +0 -40
- package/dist/util/importStudioConfig.js.map +0 -1
- package/dist/util/readModuleVersion.js +0 -15
- package/dist/util/readModuleVersion.js.map +0 -1
- package/dist/util/readPackageJson.js +0 -44
- package/dist/util/readPackageJson.js.map +0 -1
- package/dist/util/readPackageManifest.js +0 -46
- package/dist/util/readPackageManifest.js.map +0 -1
- package/dist/util/uniqBy.js +0 -14
- package/dist/util/uniqBy.js.map +0 -1
- package/dist/util/workerChannels.js +0 -172
- package/dist/util/workerChannels.js.map +0 -1
- /package/dist/{studioDependencies.js → actions/init/studioDependencies.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/actions/graphql/__tests__/fixtures/union-refs.ts"],"sourcesContent":["import {Schema} from '@sanity/schema'\n\nconst root = {\n name: 'title',\n of: [\n {\n to: [{type: 'union'}, {type: 'a'}],\n type: 'reference',\n },\n ],\n type: 'array',\n}\n\nconst union = {\n fields: [\n {\n name: 'body',\n of: [\n {\n to: [{type: 'a'}, {type: 'b'}, {type: 'union'}],\n type: 'reference',\n },\n {type: 'a'},\n ],\n type: 'array',\n },\n ],\n name: 'union',\n type: 'document',\n}\n\nconst a = {\n fields: [{name: 'title', type: 'string'}],\n name: 'a',\n type: 'document',\n}\nconst b = {\n fields: [{name: 'title', type: 'string'}],\n name: 'b',\n type: 'document',\n}\n\nexport default Schema.compile({\n types: [\n root,\n union,\n a,\n b,\n {\n fields: [\n {\n name: 'lat',\n title: 'Latitude',\n type: 'number',\n },\n {\n name: 'lng',\n title: 'Longitude',\n type: 'number',\n },\n {\n name: 'alt',\n title: 'Altitude',\n type: 'number',\n },\n ],\n name: 'geopoint',\n title: 'Geographical Point',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'originalFilename',\n readOnly: true,\n title: 'Original file name',\n type: 'string',\n },\n {\n name: 'label',\n title: 'Label',\n type: 'string',\n },\n {\n name: 'title',\n title: 'Title',\n type: 'string',\n },\n {\n name: 'description',\n title: 'Description',\n type: 'string',\n },\n {\n name: 'altText',\n title: 'Alternative text',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'sha1hash',\n readOnly: true,\n title: 'SHA1 hash',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'extension',\n readOnly: true,\n title: 'File extension',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'mimeType',\n readOnly: true,\n title: 'Mime type',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'size',\n readOnly: true,\n title: 'File size in bytes',\n type: 'number',\n },\n {\n fieldset: 'system',\n name: 'assetId',\n readOnly: true,\n title: 'Asset ID',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'path',\n readOnly: true,\n title: 'Path',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'url',\n readOnly: true,\n title: 'Url',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'source',\n readOnly: true,\n title: 'Source',\n type: 'sanity.assetSourceData',\n },\n ],\n fieldsets: [\n {\n description: 'These fields are managed by the system and not editable',\n name: 'system',\n title: 'System fields',\n },\n ],\n name: 'sanity.fileAsset',\n orderings: [\n {\n by: [{direction: 'desc', field: 'size'}],\n name: 'fileSizeDesc',\n title: 'File size',\n },\n ],\n preview: {\n prepare(doc: Record<string, unknown>) {\n return {\n subtitle: `${doc.mimeType} (${((doc.size as number) / 1024 / 1024).toFixed(2)} MB)`,\n title: (doc.title as string) || ((doc.path as string) ?? '').split('/').at(-1),\n }\n },\n select: {\n mimeType: 'mimeType',\n path: 'path',\n size: 'size',\n title: 'originalFilename',\n },\n },\n title: 'File',\n type: 'document',\n },\n {\n fields: [\n {\n name: 'x',\n type: 'number',\n },\n {\n name: 'y',\n type: 'number',\n },\n {\n name: 'height',\n type: 'number',\n },\n {\n name: 'width',\n type: 'number',\n },\n ],\n name: 'sanity.imageHotspot',\n title: 'Image hotspot',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'location',\n type: 'geopoint',\n },\n {\n fieldset: 'extra',\n name: 'dimensions',\n title: 'Dimensions',\n type: 'sanity.imageDimensions',\n },\n {\n fieldset: 'extra',\n name: 'palette',\n title: 'Palette',\n type: 'sanity.imagePalette',\n },\n {\n name: 'lqip',\n readOnly: true,\n title: 'LQIP (Low-Quality Image Placeholder)',\n type: 'string',\n },\n {\n name: 'blurHash',\n readOnly: true,\n title: 'BlurHash',\n type: 'string',\n },\n {\n name: 'thumbHash',\n readOnly: true,\n title: 'ThumbHash',\n type: 'string',\n },\n {\n name: 'hasAlpha',\n readOnly: true,\n title: 'Has alpha channel',\n type: 'boolean',\n },\n {\n name: 'isOpaque',\n readOnly: true,\n title: 'Is opaque',\n type: 'boolean',\n },\n ],\n fieldsets: [\n {\n name: 'extra',\n options: {\n collapsable: true,\n },\n title: 'Extra metadata…',\n },\n ],\n name: 'sanity.imageMetadata',\n title: 'Image metadata',\n type: 'object',\n },\n {\n fields: [\n {\n description: 'A canonical name for the source this asset is originating from',\n name: 'name',\n title: 'Source name',\n type: 'string',\n },\n {\n description:\n 'The unique ID for the asset within the originating source so you can programatically find back to it',\n name: 'id',\n title: 'Asset Source ID',\n type: 'string',\n },\n {\n description: 'A URL to find more information about this asset in the originating source',\n name: 'url',\n title: 'Asset information URL',\n type: 'string',\n },\n ],\n name: 'sanity.assetSourceData',\n title: 'Asset Source Data',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'top',\n type: 'number',\n },\n {\n name: 'bottom',\n type: 'number',\n },\n {\n name: 'left',\n type: 'number',\n },\n {\n name: 'right',\n type: 'number',\n },\n ],\n name: 'sanity.imageCrop',\n title: 'Image crop',\n type: 'object',\n },\n {\n fields: [\n {name: 'height', readOnly: true, title: 'Height', type: 'number'},\n {name: 'width', readOnly: true, title: 'Width', type: 'number'},\n {name: 'aspectRatio', readOnly: true, title: 'Aspect ratio', type: 'number'},\n ],\n name: 'sanity.imageDimensions',\n title: 'Image dimensions',\n type: 'object',\n },\n {\n fields: [\n {name: 'darkMuted', title: 'Dark Muted', type: 'sanity.imagePaletteSwatch'},\n {name: 'lightVibrant', title: 'Light Vibrant', type: 'sanity.imagePaletteSwatch'},\n {name: 'darkVibrant', title: 'Dark Vibrant', type: 'sanity.imagePaletteSwatch'},\n {name: 'vibrant', title: 'Vibrant', type: 'sanity.imagePaletteSwatch'},\n {name: 'dominant', title: 'Dominant', type: 'sanity.imagePaletteSwatch'},\n {name: 'lightMuted', title: 'Light Muted', type: 'sanity.imagePaletteSwatch'},\n {name: 'muted', title: 'Muted', type: 'sanity.imagePaletteSwatch'},\n ],\n name: 'sanity.imagePalette',\n title: 'Image palette',\n type: 'object',\n },\n {\n fields: [\n {name: 'background', readOnly: true, title: 'Background', type: 'string'},\n {name: 'foreground', readOnly: true, title: 'Foreground', type: 'string'},\n {name: 'population', readOnly: true, title: 'Population', type: 'number'},\n {name: 'title', readOnly: true, title: 'String', type: 'string'},\n ],\n name: 'sanity.imagePaletteSwatch',\n title: 'Image palette swatch',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'originalFilename',\n readOnly: true,\n title: 'Original file name',\n type: 'string',\n },\n {\n name: 'label',\n title: 'Label',\n type: 'string',\n },\n {\n name: 'title',\n title: 'Title',\n type: 'string',\n },\n {\n name: 'description',\n title: 'Description',\n type: 'string',\n },\n {\n name: 'altText',\n title: 'Alternative text',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'sha1hash',\n readOnly: true,\n title: 'SHA1 hash',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'extension',\n readOnly: true,\n title: 'File extension',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'mimeType',\n readOnly: true,\n title: 'Mime type',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'size',\n readOnly: true,\n title: 'File size in bytes',\n type: 'number',\n },\n {\n fieldset: 'system',\n name: 'assetId',\n readOnly: true,\n title: 'Asset ID',\n type: 'string',\n },\n {\n fieldset: 'system',\n hidden: true,\n name: 'uploadId',\n readOnly: true,\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'path',\n readOnly: true,\n title: 'Path',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'url',\n readOnly: true,\n title: 'Url',\n type: 'string',\n },\n {\n name: 'metadata',\n title: 'Metadata',\n type: 'sanity.imageMetadata',\n },\n {\n fieldset: 'system',\n name: 'source',\n readOnly: true,\n title: 'Source',\n type: 'sanity.assetSourceData',\n },\n ],\n fieldsets: [\n {\n description: 'These fields are managed by the system and not editable',\n name: 'system',\n title: 'System fields',\n },\n ],\n name: 'sanity.imageAsset',\n orderings: [\n {\n by: [{direction: 'desc', field: 'size'}],\n name: 'fileSizeDesc',\n title: 'File size',\n },\n ],\n preview: {\n prepare(doc: Record<string, unknown>) {\n return {\n media: {asset: {_ref: doc.id}},\n subtitle: `${doc.mimeType} (${((doc.size as number) / 1024 / 1024).toFixed(2)} MB)`,\n title: (doc.title as string) || ((doc.path as string) ?? '').split('/').at(-1),\n }\n },\n select: {\n id: '_id',\n mimeType: 'mimeType',\n size: 'size',\n title: 'originalFilename',\n },\n },\n title: 'Image',\n type: 'document',\n },\n ],\n})\n"],"names":["Schema","root","name","of","to","type","union","fields","a","b","compile","types","title","readOnly","fieldset","fieldsets","description","orderings","by","direction","field","preview","prepare","doc","subtitle","mimeType","size","toFixed","path","split","at","select","options","collapsable","hidden","media","asset","_ref","id"],"mappings":"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BACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;aACD;YACDH,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBACEL,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACES,UAAU;oBACVZ,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACES,UAAU;oBACVZ,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;aACD;YACDU,WAAW;gBACT;oBACEb,MAAM;oBACN8B,SAAS;wBACPC,aAAa;oBACf;oBACArB,OAAO;gBACT;aACD;YACDV,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBACES,aAAa;oBACbd,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEW,aACE;oBACFd,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEW,aAAa;oBACbd,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;aACD;YACDH,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBACEL,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;aACD;YACDH,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBAACL,MAAM;oBAAUW,UAAU;oBAAMD,OAAO;oBAAUP,MAAM;gBAAQ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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import orderBy from 'lodash-es/orderBy.js';
|
|
2
|
+
export function sortGraphQLSchema(schema) {
|
|
3
|
+
const interfaces = orderBy(schema.interfaces, (iface)=>iface.name).map((iface)=>({
|
|
4
|
+
...iface,
|
|
5
|
+
fields: orderBy(iface.fields, (field)=>field.fieldName)
|
|
6
|
+
}));
|
|
7
|
+
const queries = orderBy(schema.queries, (query)=>query.fieldName).map((query)=>({
|
|
8
|
+
...query,
|
|
9
|
+
args: orderBy(query.args, (arg)=>arg.name)
|
|
10
|
+
}));
|
|
11
|
+
const types = orderBy(schema.types, (type)=>type.name).map((type)=>({
|
|
12
|
+
...type,
|
|
13
|
+
fields: orderBy('fields' in type ? type.fields : [], (field)=>field.fieldName)
|
|
14
|
+
}));
|
|
15
|
+
return {
|
|
16
|
+
generation: schema.generation,
|
|
17
|
+
interfaces,
|
|
18
|
+
queries,
|
|
19
|
+
types
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/graphql/__tests__/helpers.ts"],"sourcesContent":["import orderBy from 'lodash-es/orderBy.js'\n\nimport {type GeneratedApiSpecification} from '../types.js'\n\nexport function sortGraphQLSchema(schema: GeneratedApiSpecification) {\n const interfaces = orderBy(schema.interfaces, (iface) => iface.name).map((iface) => ({\n ...iface,\n fields: orderBy(iface.fields, (field) => field.fieldName),\n }))\n const queries = orderBy(schema.queries, (query) => query.fieldName).map((query) => ({\n ...query,\n args: orderBy(query.args, (arg) => arg.name),\n }))\n\n const types = orderBy(schema.types, (type) => type.name).map((type) => ({\n ...type,\n fields: orderBy(\n 'fields' in type ? (type.fields as {fieldName: string}[]) : [],\n (field) => field.fieldName,\n ),\n }))\n\n return {generation: schema.generation, interfaces, queries, types}\n}\n"],"names":["orderBy","sortGraphQLSchema","schema","interfaces","iface","name","map","fields","field","fieldName","queries","query","args","arg","types","type","generation"],"mappings":"AAAA,OAAOA,aAAa,uBAAsB;AAI1C,OAAO,SAASC,kBAAkBC,MAAiC;IACjE,MAAMC,aAAaH,QAAQE,OAAOC,UAAU,EAAE,CAACC,QAAUA,MAAMC,IAAI,EAAEC,GAAG,CAAC,CAACF,QAAW,CAAA;YACnF,GAAGA,KAAK;YACRG,QAAQP,QAAQI,MAAMG,MAAM,EAAE,CAACC,QAAUA,MAAMC,SAAS;QAC1D,CAAA;IACA,MAAMC,UAAUV,QAAQE,OAAOQ,OAAO,EAAE,CAACC,QAAUA,MAAMF,SAAS,EAAEH,GAAG,CAAC,CAACK,QAAW,CAAA;YAClF,GAAGA,KAAK;YACRC,MAAMZ,QAAQW,MAAMC,IAAI,EAAE,CAACC,MAAQA,IAAIR,IAAI;QAC7C,CAAA;IAEA,MAAMS,QAAQd,QAAQE,OAAOY,KAAK,EAAE,CAACC,OAASA,KAAKV,IAAI,EAAEC,GAAG,CAAC,CAACS,OAAU,CAAA;YACtE,GAAGA,IAAI;YACPR,QAAQP,QACN,YAAYe,OAAQA,KAAKR,MAAM,GAA6B,EAAE,EAC9D,CAACC,QAAUA,MAAMC,SAAS;QAE9B,CAAA;IAEA,OAAO;QAACO,YAAYd,OAAOc,UAAU;QAAEb;QAAYO;QAASI;IAAK;AACnE"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* eslint-disable unicorn/consistent-function-scoping */ import { generateHelpUrl } from '@sanity/generate-help-url';
|
|
2
2
|
import { Schema } from '@sanity/schema';
|
|
3
3
|
import { isDeprecationConfiguration } from '@sanity/types';
|
|
4
|
-
import
|
|
4
|
+
import startCase from 'lodash-es/startCase.js';
|
|
5
|
+
import uniqBy from 'lodash-es/uniqBy.js';
|
|
5
6
|
import { oneline } from 'oneline';
|
|
6
7
|
import { SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE } from './helpUrls.js';
|
|
7
8
|
import { SchemaError } from './SchemaError.js';
|
|
8
|
-
import { internal } from './types.js';
|
|
9
9
|
const skipTypes = new Set([
|
|
10
10
|
'document',
|
|
11
11
|
'reference'
|
|
@@ -287,14 +287,14 @@ export function extractFromSanitySchema(sanitySchema, extractOptions = {}) {
|
|
|
287
287
|
const objectIsBlock = isBlockType(def);
|
|
288
288
|
const objectFields = objectIsBlock ? fields.filter((field)=>!disabledBlockFields.has(field.name)) : fields;
|
|
289
289
|
return {
|
|
290
|
+
_internal: {
|
|
291
|
+
...getDeprecation(def)
|
|
292
|
+
},
|
|
290
293
|
description: getDescription(def),
|
|
291
294
|
fields: objectFields.map((field)=>isArrayOfBlocks(field) ? buildRawField(field, name) : convertType(field, name, {
|
|
292
295
|
fieldName: field.name,
|
|
293
296
|
...getDeprecation(def)
|
|
294
297
|
})),
|
|
295
|
-
[internal]: {
|
|
296
|
-
...getDeprecation(def)
|
|
297
|
-
},
|
|
298
298
|
kind: 'Type',
|
|
299
299
|
name,
|
|
300
300
|
type: 'Object'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/graphql/extractFromSanitySchema.ts"],"sourcesContent":["/* eslint-disable unicorn/consistent-function-scoping */\nimport {generateHelpUrl} from '@sanity/generate-help-url'\nimport {Schema} from '@sanity/schema'\nimport {\n type ArraySchemaType,\n type Schema as CompiledSchema,\n type CrossDatasetReferenceSchemaType,\n type IntrinsicTypeName,\n isDeprecationConfiguration,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type SchemaType,\n} from '@sanity/types'\nimport {startCase, uniqBy} from 'lodash-es'\nimport {oneline} from 'oneline'\n\nimport {SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE} from './helpUrls.js'\nimport {SchemaError} from './SchemaError.js'\nimport {\n type ApiSpecification,\n type ConvertedFieldDefinition,\n type ConvertedInterface,\n type ConvertedType,\n type ConvertedUnion,\n type Deprecation,\n internal,\n} from './types.js'\n\nconst skipTypes = new Set(['document', 'reference'])\nconst allowedJsonTypes = new Set(['array', 'object'])\nconst disallowedCustomizedMembers = new Set(['array', 'block', 'file', 'image', 'object'])\nconst disabledBlockFields = new Set(['markDefs'])\nconst scalars = new Set(['boolean', 'number', 'string'])\n\nfunction getBaseType(baseSchema: CompiledSchema, typeName: IntrinsicTypeName): SchemaType {\n if (typeName === 'crossDatasetReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'crossDatasetReference',\n },\n ],\n }).get('__placeholder__')\n }\n if (typeName === 'globalDocumentReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'globalDocumentReference',\n },\n ],\n }).get('__placeholder__')\n }\n\n return Schema.compile({\n parent: baseSchema,\n types: [{name: `__placeholder__`, options: {hotspot: true}, type: typeName}],\n }).get('__placeholder__')\n}\n\nfunction getTypeName(str: string): string {\n const name = startCase(str).replaceAll(/\\s+/g, '')\n return name === 'Number' ? 'Float' : name\n}\n\nfunction isBaseType(type: SchemaType): boolean {\n return (\n type.name !== type.jsonType &&\n allowedJsonTypes.has(type.jsonType) &&\n !skipTypes.has(type.name) &&\n !isReference(type)\n )\n}\n\nfunction isBlockType(typeDef: ObjectField | SchemaType): boolean {\n if (typeDef.name === 'block') {\n return true\n }\n\n if (typeDef.type) {\n return isBlockType(typeDef.type)\n }\n\n return false\n}\n\nfunction hasBlockParent(typeDef: SchemaType): boolean {\n if (typeDef.type && typeDef.type.name === 'block' && !typeDef.type.type) {\n return true\n }\n\n return Boolean(typeDef.type && hasBlockParent(typeDef.type))\n}\n\nfunction isArrayOfBlocks(typeDef: ObjectField | SchemaType): boolean {\n const type = typeDef.type || typeDef\n if (!('jsonType' in type) || type.jsonType !== 'array') {\n return false\n }\n\n return (type.of || []).some((item) => hasBlockParent(item))\n}\n\nfunction isType(typeDef: ObjectField | ObjectFieldType | SchemaType, typeName: string): boolean {\n let type: ObjectField | ObjectFieldType | SchemaType | undefined = typeDef\n while (type) {\n if (type.name === typeName || (type.type && type.type.name === typeName)) {\n return true\n }\n\n type = type.type\n }\n return false\n}\n\nfunction isReference(\n typeDef: ObjectField | ObjectFieldType | SchemaType,\n): typeDef is ReferenceSchemaType {\n return isType(typeDef, 'reference')\n}\n\nfunction isCrossDatasetReference(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n return isType(typeDef, 'crossDatasetReference')\n}\n\nfunction getCrossDatasetReferenceMetadata(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n if (!isCrossDatasetReference(typeDef)) return\n\n function getTypeNames(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if (!('to' in type)) return getTypeNames(type.type)\n return type.to.map((t) => t.type).filter((t): t is string => typeof t === 'string')\n }\n\n function getDataset(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if ('dataset' in type && typeof type.dataset === 'string') return type.dataset\n if (type.type) return getDataset(type.type)\n }\n\n const typeNames = getTypeNames(typeDef)\n if (!typeNames) return\n\n const dataset = getDataset(typeDef)\n if (typeof dataset !== 'string') return\n\n return {dataset, typeNames}\n}\n\nexport function extractFromSanitySchema(\n sanitySchema: CompiledSchema,\n extractOptions: {nonNullDocumentFields?: boolean; withUnionCache?: boolean} = {},\n): ApiSpecification {\n const {nonNullDocumentFields, withUnionCache} = extractOptions\n const unionRecursionGuards = new Set<string>()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const unionDefinitionCache = new Map<string, any>()\n const hasErrors =\n sanitySchema._validation &&\n sanitySchema._validation.some((group) =>\n group.problems.some((problem) => problem.severity === 'error'),\n )\n\n if (hasErrors && Array.isArray(sanitySchema._validation)) {\n throw new SchemaError(sanitySchema._validation)\n }\n\n const sanityTypes = sanitySchema._original?.types || []\n const typeNames = sanitySchema.getTypeNames()\n const unionTypes: ConvertedUnion[] = []\n const types: ConvertedType[] = []\n\n for (const typeName of typeNames) {\n const schemaType = sanitySchema.get(typeName)\n if (schemaType === undefined) {\n continue\n }\n if (!isBaseType(schemaType)) {\n continue\n }\n\n const convertedType = convertType(schemaType)\n types.push(convertedType)\n }\n\n const withUnions = [...types, ...unionTypes]\n return {interfaces: [getDocumentInterfaceDefinition()], types: withUnions}\n\n function isTopLevelType(typeName: string): boolean {\n return typeNames.includes(typeName)\n }\n\n function mapFieldType(field: ObjectField | ObjectFieldType | SchemaType): string {\n if (!field.type) {\n throw new Error('Field has no type!')\n }\n\n const jsonType = 'jsonType' in field ? field.jsonType : ''\n const isScalar = scalars.has(jsonType)\n if (isScalar && jsonType === 'number') {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n } else if (isScalar) {\n return getTypeName(jsonType)\n }\n\n const type = field.type.type || field.type\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (type.type) {\n return mapFieldType(type)\n }\n\n switch (type.name) {\n case 'number': {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n }\n default: {\n return getTypeName(type.name)\n }\n }\n }\n\n function isArrayType(type: ObjectField | SchemaType): type is ArraySchemaType {\n return Boolean(\n ('jsonType' in type && type.jsonType === 'array') ||\n (type.type && type.type.jsonType === 'array'),\n )\n }\n\n function _convertType(\n type: ObjectField | SchemaType,\n parent: string,\n options: {isField?: boolean},\n ): ConvertedType {\n let name: string | undefined\n if (type.type) {\n name = type.type.name\n } else if ('jsonType' in type) {\n name = type.jsonType\n }\n\n if (isReference(type)) {\n return getReferenceDefinition(type)\n }\n\n if (isArrayType(type)) {\n return getArrayDefinition(type, parent, options)\n }\n\n if (name === 'document') {\n return getDocumentDefinition(type as ObjectSchemaType)\n }\n\n if (name === 'block' || name === 'object') {\n return getObjectDefinition(type, parent)\n }\n\n if (hasFields(type)) {\n return getObjectDefinition(type, parent)\n }\n\n return {\n description: getDescription(type),\n type: mapFieldType(type),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n }\n\n function convertType(\n type: ObjectField | SchemaType,\n parent?: string,\n props: Partial<Deprecation> & {fieldName?: string} = {},\n ): ConvertedType {\n const mapped = _convertType(type, parent || '', {isField: Boolean(props.fieldName)})\n const gqlName = props.fieldName || mapped.name\n const originalName = type.name\n const original = gqlName === originalName ? {} : {originalName: originalName}\n const crossDatasetReferenceMetadata = getCrossDatasetReferenceMetadata(type)\n\n return {\n ...getDeprecation(type.type),\n ...props,\n ...mapped,\n ...original,\n ...(crossDatasetReferenceMetadata && {crossDatasetReferenceMetadata}),\n }\n }\n\n function isField(def: ObjectField | SchemaType): def is ObjectField {\n return !('jsonType' in def) || !def.jsonType\n }\n\n function getObjectDefinition(def: ObjectField | SchemaType, parent?: string): ConvertedType {\n const isInline = isField(def)\n const isDocument = def.type ? def.type.name === 'document' : false\n const actualType = isInline ? def.type : def\n\n if (typeNeedsHoisting(actualType)) {\n throw createLiftTypeError(def.name, parent || '', actualType.name)\n }\n\n if (isInline && parent && def.type.name === 'object') {\n throw createLiftTypeError(def.name, parent)\n }\n\n if (parent && def.type && isTopLevelType(def.type.name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {type: getTypeName(def.type.name)} as any\n }\n\n const name = `${parent || ''}${getTypeName(def.name)}`\n const fields = collectFields(def)\n const firstUnprefixed = Math.max(\n 0,\n fields.findIndex((field) => field.name[0] !== '_'),\n )\n\n const keyField = createStringField('_key')\n\n fields.splice(firstUnprefixed, 0, keyField)\n\n if (!isDocument) {\n fields.splice(firstUnprefixed + 1, 0, createStringField('_type'))\n }\n\n const objectIsBlock = isBlockType(def)\n const objectFields = objectIsBlock\n ? fields.filter((field) => !disabledBlockFields.has(field.name))\n : fields\n\n return {\n description: getDescription(def),\n fields: objectFields.map((field) =>\n isArrayOfBlocks(field)\n ? buildRawField(field, name)\n : (convertType(field, name, {\n fieldName: field.name,\n ...getDeprecation(def),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any),\n ),\n [internal]: {\n ...getDeprecation(def),\n },\n kind: 'Type',\n name,\n type: 'Object',\n }\n }\n\n function buildRawField(field: ObjectField, parentName: string) {\n return {\n ...convertType(field, parentName, {fieldName: `${field.name}Raw`}),\n isRawAlias: true,\n type: 'JSON',\n }\n }\n\n function createStringField(name: string): ObjectField {\n return {\n name,\n type: {\n jsonType: 'string',\n name: 'string',\n type: {jsonType: 'string', name: 'string', type: undefined},\n },\n }\n }\n\n function collectFields(def: ObjectField | SchemaType) {\n const fields = gatherAllFields(def)\n if (fields.length > 0) {\n return fields\n }\n\n const extended = getBaseType(sanitySchema, def.name as IntrinsicTypeName)\n return gatherAllFields(extended)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getReferenceDefinition(def: SchemaType): any {\n const base = {description: getDescription(def), isReference: true}\n const candidates = arrayify(gatherAllReferenceCandidates(def))\n if (candidates.length === 0) {\n throw new Error('No candidates for reference')\n }\n\n if (candidates.length === 1) {\n return {type: getTypeName(candidates[0].type.name), ...base}\n }\n\n const allTypeNames = candidates.map((c) => getTypeName(c.type.name))\n const targetTypes = [...new Set(allTypeNames)].toSorted()\n const name = targetTypes.join('Or')\n\n // Register the union type if we haven't seen it before\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n kind: 'Union',\n name,\n types: targetTypes,\n })\n }\n\n return {\n type: name,\n ...base,\n }\n }\n\n function getArrayDefinition(\n def: ArraySchemaType,\n parent: string,\n options: {isField?: boolean} = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const base = {description: getDescription(def), kind: 'List'}\n const name = !options.isField && def.name ? {name: getTypeName(def.name)} : {}\n const candidates = def.type?.type && 'of' in def.type ? arrayify(def.type.of) : def.of\n\n return candidates.length === 1\n ? {\n children: getArrayChildDefinition(candidates[0], def),\n ...base,\n ...name,\n }\n : {\n children: getUnionDefinition(candidates, def, {grandParent: parent}),\n ...base,\n ...name,\n }\n }\n\n function getArrayChildDefinition(child: SchemaType, arrayDef: SchemaType) {\n if (typeNeedsHoisting(child)) {\n // Seems to be inline? Should be hoisted?\n throw createLiftTypeError(child.name, arrayDef.name)\n }\n\n if (isReference(child)) {\n return getReferenceDefinition(child)\n }\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (scalars.has(child.jsonType) && !scalars.has(child.name)) {\n return {type: mapFieldType(child)}\n }\n\n return {type: getTypeName(child.name)}\n }\n\n function typeNeedsHoisting(type: SchemaType & {isCustomized?: boolean}): boolean {\n if (type.name === 'object') {\n return true\n }\n\n if (type.jsonType === 'object' && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && disallowedCustomizedMembers.has(type.name)) {\n return true\n }\n\n return false\n }\n\n function getUnionDefinition(\n candidates: ObjectSchemaType[],\n parent: SchemaType,\n options: {grandParent?: string} = {},\n ) {\n if (candidates.length < 2) {\n throw new Error('Not enough candidates for a union type')\n }\n\n // #1482: When creating union definition do not get caught in recursion loop\n // for types that reference themselves\n const guardPathName = `${typeof parent === 'object' ? parent.name : parent}`\n if (unionRecursionGuards.has(guardPathName)) {\n return {}\n }\n\n const unionCacheKey = `${options.grandParent}-${guardPathName}-${candidates\n .map((c) => c.type?.name)\n .join('-')}`\n if (withUnionCache && unionDefinitionCache.has(unionCacheKey)) {\n return unionDefinitionCache.get(unionCacheKey)\n }\n\n try {\n unionRecursionGuards.add(guardPathName)\n\n for (const [i, def] of candidates.entries()) {\n if (typeNeedsHoisting(def)) {\n throw createLiftTypeArrayError(\n i,\n parent.name,\n def.type ? def.type.name : def.name,\n options.grandParent,\n )\n }\n }\n\n const converted = candidates.map((def) => convertType(def))\n\n const getName = (def: {type: string | {name: string}}): string =>\n typeof def.type === 'string' ? def.type : def.type.name\n\n // We might end up with union types being returned - these needs to be flattened\n // so that an ImageOr(PersonOrPet) becomes ImageOrPersonOrPet\n // eslint-disable-next-line unicorn/no-array-reduce\n const flattened = converted.reduce(\n (acc, candidate) => {\n const union = unionTypes.find((item) => item.name === candidate.type)\n return union\n ? // eslint-disable-next-line unicorn/prefer-spread\n acc.concat(union.types.map((type) => ({isReference: candidate.isReference, type})))\n : [...acc, candidate]\n },\n [] as {isReference?: boolean; name?: string; type: string | {name: string}}[],\n )\n\n let allCandidatesAreDocuments = true\n const refs: (string | {name: string})[] = []\n const inlineObjs: string[] = []\n const allTypeNames: string[] = []\n for (const def of flattened) {\n if (def.isReference) {\n refs.push(def.type)\n }\n if (!isReference) {\n inlineObjs.push(def.name || '')\n }\n\n const typeName = typeof def.type === 'string' ? def.type : def.type.name\n\n // Here we remove duplicates, as they might appear twice due to in-line usage of types as well as references\n if (def.name || def.type) {\n allTypeNames.push(def.isReference ? typeName : def.name || '')\n }\n\n const typeDef = sanityTypes.find((type) => type.name === getName(def))\n if (!typeDef || typeDef.type !== 'document') {\n allCandidatesAreDocuments = false\n }\n }\n\n const interfaces = allCandidatesAreDocuments ? ['Document'] : undefined\n const possibleTypes = [...new Set(allTypeNames)].toSorted()\n\n if (possibleTypes.length < 2) {\n throw new Error(`Not enough types for a union type. Parent: ${parent.name}`)\n }\n\n const name = possibleTypes.join('Or')\n\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n interfaces,\n kind: 'Union',\n name,\n types: possibleTypes,\n })\n }\n\n const references = refs.length > 0 ? refs : undefined\n const inlineObjects = inlineObjs.length > 0 ? inlineObjs : undefined\n\n const unionDefinition = isReference(parent)\n ? {references, type: name}\n : {inlineObjects, references, type: name}\n\n unionDefinitionCache.set(unionCacheKey, unionDefinition)\n return unionDefinition\n } finally {\n unionRecursionGuards.delete(guardPathName)\n }\n }\n\n function getDocumentDefinition(def: ObjectSchemaType) {\n const objectDef = getObjectDefinition(def)\n const fields = [...getDocumentInterfaceFields(def), ...objectDef.fields]\n\n return {...objectDef, fields, interfaces: ['Document']}\n }\n\n function getDocumentInterfaceDefinition(): ConvertedInterface {\n return {\n description: 'A Sanity document',\n fields: getDocumentInterfaceFields(),\n kind: 'Interface',\n name: 'Document',\n }\n }\n\n function getDocumentInterfaceFields(type?: ObjectSchemaType): ConvertedFieldDefinition[] {\n const isNullable = typeof nonNullDocumentFields === 'boolean' ? !nonNullDocumentFields : true\n return [\n {\n description: 'Document ID',\n fieldName: '_id',\n isNullable,\n type: 'ID',\n ...getDeprecation(type),\n },\n {\n description: 'Document type',\n fieldName: '_type',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was created',\n fieldName: '_createdAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was last modified',\n fieldName: '_updatedAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Current document revision',\n fieldName: '_rev',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n ]\n }\n\n function arrayify(thing: unknown) {\n if (Array.isArray(thing)) {\n return thing\n }\n\n return thing === null || thing === undefined ? [] : [thing]\n }\n\n function hasValidationFlag(\n field: ObjectField | ObjectFieldType | SchemaType,\n flag: string,\n ): boolean {\n return (\n 'validation' in field &&\n Array.isArray(field.validation) &&\n field.validation.some(\n (rule) => rule && '_rules' in rule && rule._rules.some((item) => item.flag === flag),\n )\n )\n }\n\n function getDescription(type: ObjectField | SchemaType): string | undefined {\n const description = type.type && type.type.description\n return typeof description === 'string' ? description : undefined\n }\n\n function gatherAllReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const allFields = gatherReferenceCandidates(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const refTo = 'to' in type ? type.to : []\n return 'type' in type && type.type ? [...gatherReferenceCandidates(type.type), ...refTo] : refTo\n }\n\n function gatherAllFields(type: ObjectField | SchemaType) {\n const allFields = gatherFields(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherFields(type: ObjectField | SchemaType): ObjectField[] {\n if ('fields' in type) {\n return type.type ? [...gatherFields(type.type), ...type.fields] : type.fields\n }\n\n return []\n }\n\n function hasFieldsLikeShape(type: unknown): type is {fields: unknown} {\n return typeof type === 'object' && type !== null && 'fields' in type\n }\n\n function hasArrayOfFields(type: unknown): type is {fields: ObjectField[]} {\n return hasFieldsLikeShape(type) && Array.isArray(type.fields)\n }\n\n function hasFields(type: ObjectField | SchemaType): boolean {\n if (hasArrayOfFields(type)) {\n return gatherAllFields(type).length > 0\n }\n\n return 'type' in type && type.type ? hasFields(type.type) : false\n }\n}\n\nfunction createLiftTypeArrayError(\n index: number,\n parent: string,\n inlineType = 'object',\n grandParent = '',\n) {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n const context = [grandParent, parent].filter(Boolean).join('/')\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} at index ${index} for type/field ${context}.\n To use this type with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nfunction createLiftTypeError(typeName: string, parent: string, inlineType = 'object') {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} \"${typeName}\" for field/type \"${parent}\".\n To use this field with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nclass HelpfulError extends Error {\n helpUrl?: string\n\n constructor(message: string, helpUrl?: string) {\n super(message)\n this.name = 'HelpfulError'\n this.helpUrl = helpUrl\n }\n}\n\nfunction getDeprecation(type?: ObjectField | ObjectFieldType | SchemaType): Partial<Deprecation> {\n return isDeprecationConfiguration(type)\n ? {\n deprecationReason: type.deprecated.reason,\n }\n : {}\n}\n"],"names":["generateHelpUrl","Schema","isDeprecationConfiguration","startCase","uniqBy","oneline","SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE","SchemaError","internal","skipTypes","Set","allowedJsonTypes","disallowedCustomizedMembers","disabledBlockFields","scalars","getBaseType","baseSchema","typeName","compile","parent","types","name","to","type","get","options","hotspot","getTypeName","str","replaceAll","isBaseType","jsonType","has","isReference","isBlockType","typeDef","hasBlockParent","Boolean","isArrayOfBlocks","of","some","item","isType","isCrossDatasetReference","getCrossDatasetReferenceMetadata","getTypeNames","map","t","filter","getDataset","dataset","typeNames","extractFromSanitySchema","sanitySchema","extractOptions","nonNullDocumentFields","withUnionCache","unionRecursionGuards","unionDefinitionCache","Map","hasErrors","_validation","group","problems","problem","severity","Array","isArray","sanityTypes","_original","unionTypes","schemaType","undefined","convertedType","convertType","push","withUnions","interfaces","getDocumentInterfaceDefinition","isTopLevelType","includes","mapFieldType","field","Error","isScalar","hasValidationFlag","isArrayType","_convertType","getReferenceDefinition","getArrayDefinition","getDocumentDefinition","getObjectDefinition","hasFields","description","getDescription","props","mapped","isField","fieldName","gqlName","originalName","original","crossDatasetReferenceMetadata","getDeprecation","def","isInline","isDocument","actualType","typeNeedsHoisting","createLiftTypeError","fields","collectFields","firstUnprefixed","Math","max","findIndex","keyField","createStringField","splice","objectIsBlock","objectFields","buildRawField","kind","parentName","isRawAlias","gatherAllFields","length","extended","base","candidates","arrayify","gatherAllReferenceCandidates","allTypeNames","c","targetTypes","toSorted","join","children","getArrayChildDefinition","getUnionDefinition","grandParent","child","arrayDef","isCustomized","guardPathName","unionCacheKey","add","i","entries","createLiftTypeArrayError","converted","getName","flattened","reduce","acc","candidate","union","find","concat","allCandidatesAreDocuments","refs","inlineObjs","possibleTypes","references","inlineObjects","unionDefinition","set","delete","objectDef","getDocumentInterfaceFields","isNullable","thing","flag","validation","rule","_rules","allFields","gatherReferenceCandidates","refTo","gatherFields","hasFieldsLikeShape","hasArrayOfFields","index","inlineType","helpUrl","context","HelpfulError","message","deprecationReason","deprecated","reason"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/graphql/extractFromSanitySchema.ts"],"sourcesContent":["/* eslint-disable unicorn/consistent-function-scoping */\nimport {generateHelpUrl} from '@sanity/generate-help-url'\nimport {Schema} from '@sanity/schema'\nimport {\n type ArraySchemaType,\n type Schema as CompiledSchema,\n type CrossDatasetReferenceSchemaType,\n type IntrinsicTypeName,\n isDeprecationConfiguration,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type SchemaType,\n} from '@sanity/types'\nimport startCase from 'lodash-es/startCase.js'\nimport uniqBy from 'lodash-es/uniqBy.js'\nimport {oneline} from 'oneline'\n\nimport {SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE} from './helpUrls.js'\nimport {SchemaError} from './SchemaError.js'\nimport {\n type ApiSpecification,\n type ConvertedFieldDefinition,\n type ConvertedInterface,\n type ConvertedType,\n type ConvertedUnion,\n type Deprecation,\n} from './types.js'\n\nconst skipTypes = new Set(['document', 'reference'])\nconst allowedJsonTypes = new Set(['array', 'object'])\nconst disallowedCustomizedMembers = new Set(['array', 'block', 'file', 'image', 'object'])\nconst disabledBlockFields = new Set(['markDefs'])\nconst scalars = new Set(['boolean', 'number', 'string'])\n\nfunction getBaseType(baseSchema: CompiledSchema, typeName: IntrinsicTypeName): SchemaType {\n if (typeName === 'crossDatasetReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'crossDatasetReference',\n },\n ],\n }).get('__placeholder__')\n }\n if (typeName === 'globalDocumentReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'globalDocumentReference',\n },\n ],\n }).get('__placeholder__')\n }\n\n return Schema.compile({\n parent: baseSchema,\n types: [{name: `__placeholder__`, options: {hotspot: true}, type: typeName}],\n }).get('__placeholder__')\n}\n\nfunction getTypeName(str: string): string {\n const name = startCase(str).replaceAll(/\\s+/g, '')\n return name === 'Number' ? 'Float' : name\n}\n\nfunction isBaseType(type: SchemaType): boolean {\n return (\n type.name !== type.jsonType &&\n allowedJsonTypes.has(type.jsonType) &&\n !skipTypes.has(type.name) &&\n !isReference(type)\n )\n}\n\nfunction isBlockType(typeDef: ObjectField | SchemaType): boolean {\n if (typeDef.name === 'block') {\n return true\n }\n\n if (typeDef.type) {\n return isBlockType(typeDef.type)\n }\n\n return false\n}\n\nfunction hasBlockParent(typeDef: SchemaType): boolean {\n if (typeDef.type && typeDef.type.name === 'block' && !typeDef.type.type) {\n return true\n }\n\n return Boolean(typeDef.type && hasBlockParent(typeDef.type))\n}\n\nfunction isArrayOfBlocks(typeDef: ObjectField | SchemaType): boolean {\n const type = typeDef.type || typeDef\n if (!('jsonType' in type) || type.jsonType !== 'array') {\n return false\n }\n\n return (type.of || []).some((item) => hasBlockParent(item))\n}\n\nfunction isType(typeDef: ObjectField | ObjectFieldType | SchemaType, typeName: string): boolean {\n let type: ObjectField | ObjectFieldType | SchemaType | undefined = typeDef\n while (type) {\n if (type.name === typeName || (type.type && type.type.name === typeName)) {\n return true\n }\n\n type = type.type\n }\n return false\n}\n\nfunction isReference(\n typeDef: ObjectField | ObjectFieldType | SchemaType,\n): typeDef is ReferenceSchemaType {\n return isType(typeDef, 'reference')\n}\n\nfunction isCrossDatasetReference(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n return isType(typeDef, 'crossDatasetReference')\n}\n\nfunction getCrossDatasetReferenceMetadata(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n if (!isCrossDatasetReference(typeDef)) return\n\n function getTypeNames(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if (!('to' in type)) return getTypeNames(type.type)\n return type.to.map((t) => t.type).filter((t): t is string => typeof t === 'string')\n }\n\n function getDataset(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if ('dataset' in type && typeof type.dataset === 'string') return type.dataset\n if (type.type) return getDataset(type.type)\n }\n\n const typeNames = getTypeNames(typeDef)\n if (!typeNames) return\n\n const dataset = getDataset(typeDef)\n if (typeof dataset !== 'string') return\n\n return {dataset, typeNames}\n}\n\nexport function extractFromSanitySchema(\n sanitySchema: CompiledSchema,\n extractOptions: {nonNullDocumentFields?: boolean; withUnionCache?: boolean} = {},\n): ApiSpecification {\n const {nonNullDocumentFields, withUnionCache} = extractOptions\n const unionRecursionGuards = new Set<string>()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const unionDefinitionCache = new Map<string, any>()\n const hasErrors =\n sanitySchema._validation &&\n sanitySchema._validation.some((group) =>\n group.problems.some((problem) => problem.severity === 'error'),\n )\n\n if (hasErrors && Array.isArray(sanitySchema._validation)) {\n throw new SchemaError(sanitySchema._validation)\n }\n\n const sanityTypes = sanitySchema._original?.types || []\n const typeNames = sanitySchema.getTypeNames()\n const unionTypes: ConvertedUnion[] = []\n const types: ConvertedType[] = []\n\n for (const typeName of typeNames) {\n const schemaType = sanitySchema.get(typeName)\n if (schemaType === undefined) {\n continue\n }\n if (!isBaseType(schemaType)) {\n continue\n }\n\n const convertedType = convertType(schemaType)\n types.push(convertedType)\n }\n\n const withUnions = [...types, ...unionTypes]\n return {interfaces: [getDocumentInterfaceDefinition()], types: withUnions}\n\n function isTopLevelType(typeName: string): boolean {\n return typeNames.includes(typeName)\n }\n\n function mapFieldType(field: ObjectField | ObjectFieldType | SchemaType): string {\n if (!field.type) {\n throw new Error('Field has no type!')\n }\n\n const jsonType = 'jsonType' in field ? field.jsonType : ''\n const isScalar = scalars.has(jsonType)\n if (isScalar && jsonType === 'number') {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n } else if (isScalar) {\n return getTypeName(jsonType)\n }\n\n const type = field.type.type || field.type\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (type.type) {\n return mapFieldType(type)\n }\n\n switch (type.name) {\n case 'number': {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n }\n default: {\n return getTypeName(type.name)\n }\n }\n }\n\n function isArrayType(type: ObjectField | SchemaType): type is ArraySchemaType {\n return Boolean(\n ('jsonType' in type && type.jsonType === 'array') ||\n (type.type && type.type.jsonType === 'array'),\n )\n }\n\n function _convertType(\n type: ObjectField | SchemaType,\n parent: string,\n options: {isField?: boolean},\n ): ConvertedType {\n let name: string | undefined\n if (type.type) {\n name = type.type.name\n } else if ('jsonType' in type) {\n name = type.jsonType\n }\n\n if (isReference(type)) {\n return getReferenceDefinition(type)\n }\n\n if (isArrayType(type)) {\n return getArrayDefinition(type, parent, options)\n }\n\n if (name === 'document') {\n return getDocumentDefinition(type as ObjectSchemaType)\n }\n\n if (name === 'block' || name === 'object') {\n return getObjectDefinition(type, parent)\n }\n\n if (hasFields(type)) {\n return getObjectDefinition(type, parent)\n }\n\n return {\n description: getDescription(type),\n type: mapFieldType(type),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n }\n\n function convertType(\n type: ObjectField | SchemaType,\n parent?: string,\n props: Partial<Deprecation> & {fieldName?: string} = {},\n ): ConvertedType {\n const mapped = _convertType(type, parent || '', {isField: Boolean(props.fieldName)})\n const gqlName = props.fieldName || mapped.name\n const originalName = type.name\n const original = gqlName === originalName ? {} : {originalName: originalName}\n const crossDatasetReferenceMetadata = getCrossDatasetReferenceMetadata(type)\n\n return {\n ...getDeprecation(type.type),\n ...props,\n ...mapped,\n ...original,\n ...(crossDatasetReferenceMetadata && {crossDatasetReferenceMetadata}),\n }\n }\n\n function isField(def: ObjectField | SchemaType): def is ObjectField {\n return !('jsonType' in def) || !def.jsonType\n }\n\n function getObjectDefinition(def: ObjectField | SchemaType, parent?: string): ConvertedType {\n const isInline = isField(def)\n const isDocument = def.type ? def.type.name === 'document' : false\n const actualType = isInline ? def.type : def\n\n if (typeNeedsHoisting(actualType)) {\n throw createLiftTypeError(def.name, parent || '', actualType.name)\n }\n\n if (isInline && parent && def.type.name === 'object') {\n throw createLiftTypeError(def.name, parent)\n }\n\n if (parent && def.type && isTopLevelType(def.type.name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {type: getTypeName(def.type.name)} as any\n }\n\n const name = `${parent || ''}${getTypeName(def.name)}`\n const fields = collectFields(def)\n const firstUnprefixed = Math.max(\n 0,\n fields.findIndex((field) => field.name[0] !== '_'),\n )\n\n const keyField = createStringField('_key')\n\n fields.splice(firstUnprefixed, 0, keyField)\n\n if (!isDocument) {\n fields.splice(firstUnprefixed + 1, 0, createStringField('_type'))\n }\n\n const objectIsBlock = isBlockType(def)\n const objectFields = objectIsBlock\n ? fields.filter((field) => !disabledBlockFields.has(field.name))\n : fields\n\n return {\n _internal: {\n ...getDeprecation(def),\n },\n description: getDescription(def),\n fields: objectFields.map((field) =>\n isArrayOfBlocks(field)\n ? buildRawField(field, name)\n : (convertType(field, name, {\n fieldName: field.name,\n ...getDeprecation(def),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any),\n ),\n kind: 'Type',\n name,\n type: 'Object',\n }\n }\n\n function buildRawField(field: ObjectField, parentName: string) {\n return {\n ...convertType(field, parentName, {fieldName: `${field.name}Raw`}),\n isRawAlias: true,\n type: 'JSON',\n }\n }\n\n function createStringField(name: string): ObjectField {\n return {\n name,\n type: {\n jsonType: 'string',\n name: 'string',\n type: {jsonType: 'string', name: 'string', type: undefined},\n },\n }\n }\n\n function collectFields(def: ObjectField | SchemaType) {\n const fields = gatherAllFields(def)\n if (fields.length > 0) {\n return fields\n }\n\n const extended = getBaseType(sanitySchema, def.name as IntrinsicTypeName)\n return gatherAllFields(extended)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getReferenceDefinition(def: SchemaType): any {\n const base = {description: getDescription(def), isReference: true}\n const candidates = arrayify(gatherAllReferenceCandidates(def))\n if (candidates.length === 0) {\n throw new Error('No candidates for reference')\n }\n\n if (candidates.length === 1) {\n return {type: getTypeName(candidates[0].type.name), ...base}\n }\n\n const allTypeNames = candidates.map((c) => getTypeName(c.type.name))\n const targetTypes = [...new Set(allTypeNames)].toSorted()\n const name = targetTypes.join('Or')\n\n // Register the union type if we haven't seen it before\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n kind: 'Union',\n name,\n types: targetTypes,\n })\n }\n\n return {\n type: name,\n ...base,\n }\n }\n\n function getArrayDefinition(\n def: ArraySchemaType,\n parent: string,\n options: {isField?: boolean} = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const base = {description: getDescription(def), kind: 'List'}\n const name = !options.isField && def.name ? {name: getTypeName(def.name)} : {}\n const candidates = def.type?.type && 'of' in def.type ? arrayify(def.type.of) : def.of\n\n return candidates.length === 1\n ? {\n children: getArrayChildDefinition(candidates[0], def),\n ...base,\n ...name,\n }\n : {\n children: getUnionDefinition(candidates, def, {grandParent: parent}),\n ...base,\n ...name,\n }\n }\n\n function getArrayChildDefinition(child: SchemaType, arrayDef: SchemaType) {\n if (typeNeedsHoisting(child)) {\n // Seems to be inline? Should be hoisted?\n throw createLiftTypeError(child.name, arrayDef.name)\n }\n\n if (isReference(child)) {\n return getReferenceDefinition(child)\n }\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (scalars.has(child.jsonType) && !scalars.has(child.name)) {\n return {type: mapFieldType(child)}\n }\n\n return {type: getTypeName(child.name)}\n }\n\n function typeNeedsHoisting(type: SchemaType & {isCustomized?: boolean}): boolean {\n if (type.name === 'object') {\n return true\n }\n\n if (type.jsonType === 'object' && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && disallowedCustomizedMembers.has(type.name)) {\n return true\n }\n\n return false\n }\n\n function getUnionDefinition(\n candidates: ObjectSchemaType[],\n parent: SchemaType,\n options: {grandParent?: string} = {},\n ) {\n if (candidates.length < 2) {\n throw new Error('Not enough candidates for a union type')\n }\n\n // #1482: When creating union definition do not get caught in recursion loop\n // for types that reference themselves\n const guardPathName = `${typeof parent === 'object' ? parent.name : parent}`\n if (unionRecursionGuards.has(guardPathName)) {\n return {}\n }\n\n const unionCacheKey = `${options.grandParent}-${guardPathName}-${candidates\n .map((c) => c.type?.name)\n .join('-')}`\n if (withUnionCache && unionDefinitionCache.has(unionCacheKey)) {\n return unionDefinitionCache.get(unionCacheKey)\n }\n\n try {\n unionRecursionGuards.add(guardPathName)\n\n for (const [i, def] of candidates.entries()) {\n if (typeNeedsHoisting(def)) {\n throw createLiftTypeArrayError(\n i,\n parent.name,\n def.type ? def.type.name : def.name,\n options.grandParent,\n )\n }\n }\n\n const converted = candidates.map((def) => convertType(def))\n\n const getName = (def: {type: string | {name: string}}): string =>\n typeof def.type === 'string' ? def.type : def.type.name\n\n // We might end up with union types being returned - these needs to be flattened\n // so that an ImageOr(PersonOrPet) becomes ImageOrPersonOrPet\n // eslint-disable-next-line unicorn/no-array-reduce\n const flattened = converted.reduce(\n (acc, candidate) => {\n const union = unionTypes.find((item) => item.name === candidate.type)\n return union\n ? // eslint-disable-next-line unicorn/prefer-spread\n acc.concat(union.types.map((type) => ({isReference: candidate.isReference, type})))\n : [...acc, candidate]\n },\n [] as {isReference?: boolean; name?: string; type: string | {name: string}}[],\n )\n\n let allCandidatesAreDocuments = true\n const refs: (string | {name: string})[] = []\n const inlineObjs: string[] = []\n const allTypeNames: string[] = []\n for (const def of flattened) {\n if (def.isReference) {\n refs.push(def.type)\n }\n if (!isReference) {\n inlineObjs.push(def.name || '')\n }\n\n const typeName = typeof def.type === 'string' ? def.type : def.type.name\n\n // Here we remove duplicates, as they might appear twice due to in-line usage of types as well as references\n if (def.name || def.type) {\n allTypeNames.push(def.isReference ? typeName : def.name || '')\n }\n\n const typeDef = sanityTypes.find((type) => type.name === getName(def))\n if (!typeDef || typeDef.type !== 'document') {\n allCandidatesAreDocuments = false\n }\n }\n\n const interfaces = allCandidatesAreDocuments ? ['Document'] : undefined\n const possibleTypes = [...new Set(allTypeNames)].toSorted()\n\n if (possibleTypes.length < 2) {\n throw new Error(`Not enough types for a union type. Parent: ${parent.name}`)\n }\n\n const name = possibleTypes.join('Or')\n\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n interfaces,\n kind: 'Union',\n name,\n types: possibleTypes,\n })\n }\n\n const references = refs.length > 0 ? refs : undefined\n const inlineObjects = inlineObjs.length > 0 ? inlineObjs : undefined\n\n const unionDefinition = isReference(parent)\n ? {references, type: name}\n : {inlineObjects, references, type: name}\n\n unionDefinitionCache.set(unionCacheKey, unionDefinition)\n return unionDefinition\n } finally {\n unionRecursionGuards.delete(guardPathName)\n }\n }\n\n function getDocumentDefinition(def: ObjectSchemaType) {\n const objectDef = getObjectDefinition(def)\n const fields = [...getDocumentInterfaceFields(def), ...objectDef.fields]\n\n return {...objectDef, fields, interfaces: ['Document']}\n }\n\n function getDocumentInterfaceDefinition(): ConvertedInterface {\n return {\n description: 'A Sanity document',\n fields: getDocumentInterfaceFields(),\n kind: 'Interface',\n name: 'Document',\n }\n }\n\n function getDocumentInterfaceFields(type?: ObjectSchemaType): ConvertedFieldDefinition[] {\n const isNullable = typeof nonNullDocumentFields === 'boolean' ? !nonNullDocumentFields : true\n return [\n {\n description: 'Document ID',\n fieldName: '_id',\n isNullable,\n type: 'ID',\n ...getDeprecation(type),\n },\n {\n description: 'Document type',\n fieldName: '_type',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was created',\n fieldName: '_createdAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was last modified',\n fieldName: '_updatedAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Current document revision',\n fieldName: '_rev',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n ]\n }\n\n function arrayify(thing: unknown) {\n if (Array.isArray(thing)) {\n return thing\n }\n\n return thing === null || thing === undefined ? [] : [thing]\n }\n\n function hasValidationFlag(\n field: ObjectField | ObjectFieldType | SchemaType,\n flag: string,\n ): boolean {\n return (\n 'validation' in field &&\n Array.isArray(field.validation) &&\n field.validation.some(\n (rule) => rule && '_rules' in rule && rule._rules.some((item) => item.flag === flag),\n )\n )\n }\n\n function getDescription(type: ObjectField | SchemaType): string | undefined {\n const description = type.type && type.type.description\n return typeof description === 'string' ? description : undefined\n }\n\n function gatherAllReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const allFields = gatherReferenceCandidates(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const refTo = 'to' in type ? type.to : []\n return 'type' in type && type.type ? [...gatherReferenceCandidates(type.type), ...refTo] : refTo\n }\n\n function gatherAllFields(type: ObjectField | SchemaType) {\n const allFields = gatherFields(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherFields(type: ObjectField | SchemaType): ObjectField[] {\n if ('fields' in type) {\n return type.type ? [...gatherFields(type.type), ...type.fields] : type.fields\n }\n\n return []\n }\n\n function hasFieldsLikeShape(type: unknown): type is {fields: unknown} {\n return typeof type === 'object' && type !== null && 'fields' in type\n }\n\n function hasArrayOfFields(type: unknown): type is {fields: ObjectField[]} {\n return hasFieldsLikeShape(type) && Array.isArray(type.fields)\n }\n\n function hasFields(type: ObjectField | SchemaType): boolean {\n if (hasArrayOfFields(type)) {\n return gatherAllFields(type).length > 0\n }\n\n return 'type' in type && type.type ? hasFields(type.type) : false\n }\n}\n\nfunction createLiftTypeArrayError(\n index: number,\n parent: string,\n inlineType = 'object',\n grandParent = '',\n) {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n const context = [grandParent, parent].filter(Boolean).join('/')\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} at index ${index} for type/field ${context}.\n To use this type with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nfunction createLiftTypeError(typeName: string, parent: string, inlineType = 'object') {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} \"${typeName}\" for field/type \"${parent}\".\n To use this field with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nclass HelpfulError extends Error {\n helpUrl?: string\n\n constructor(message: string, helpUrl?: string) {\n super(message)\n this.name = 'HelpfulError'\n this.helpUrl = helpUrl\n }\n}\n\nfunction getDeprecation(type?: ObjectField | ObjectFieldType | SchemaType): Partial<Deprecation> {\n return isDeprecationConfiguration(type)\n ? {\n deprecationReason: type.deprecated.reason,\n }\n : {}\n}\n"],"names":["generateHelpUrl","Schema","isDeprecationConfiguration","startCase","uniqBy","oneline","SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE","SchemaError","skipTypes","Set","allowedJsonTypes","disallowedCustomizedMembers","disabledBlockFields","scalars","getBaseType","baseSchema","typeName","compile","parent","types","name","to","type","get","options","hotspot","getTypeName","str","replaceAll","isBaseType","jsonType","has","isReference","isBlockType","typeDef","hasBlockParent","Boolean","isArrayOfBlocks","of","some","item","isType","isCrossDatasetReference","getCrossDatasetReferenceMetadata","getTypeNames","map","t","filter","getDataset","dataset","typeNames","extractFromSanitySchema","sanitySchema","extractOptions","nonNullDocumentFields","withUnionCache","unionRecursionGuards","unionDefinitionCache","Map","hasErrors","_validation","group","problems","problem","severity","Array","isArray","sanityTypes","_original","unionTypes","schemaType","undefined","convertedType","convertType","push","withUnions","interfaces","getDocumentInterfaceDefinition","isTopLevelType","includes","mapFieldType","field","Error","isScalar","hasValidationFlag","isArrayType","_convertType","getReferenceDefinition","getArrayDefinition","getDocumentDefinition","getObjectDefinition","hasFields","description","getDescription","props","mapped","isField","fieldName","gqlName","originalName","original","crossDatasetReferenceMetadata","getDeprecation","def","isInline","isDocument","actualType","typeNeedsHoisting","createLiftTypeError","fields","collectFields","firstUnprefixed","Math","max","findIndex","keyField","createStringField","splice","objectIsBlock","objectFields","_internal","buildRawField","kind","parentName","isRawAlias","gatherAllFields","length","extended","base","candidates","arrayify","gatherAllReferenceCandidates","allTypeNames","c","targetTypes","toSorted","join","children","getArrayChildDefinition","getUnionDefinition","grandParent","child","arrayDef","isCustomized","guardPathName","unionCacheKey","add","i","entries","createLiftTypeArrayError","converted","getName","flattened","reduce","acc","candidate","union","find","concat","allCandidatesAreDocuments","refs","inlineObjs","possibleTypes","references","inlineObjects","unionDefinition","set","delete","objectDef","getDocumentInterfaceFields","isNullable","thing","flag","validation","rule","_rules","allFields","gatherReferenceCandidates","refTo","gatherFields","hasFieldsLikeShape","hasArrayOfFields","index","inlineType","helpUrl","context","HelpfulError","message","deprecationReason","deprecated","reason"],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { isMainThread } from 'node:worker_threads';
|
|
2
|
+
import { findStudioConfigPath, getCliConfig, studioWorkerTask, subdebug } from '@sanity/cli-core';
|
|
3
|
+
import { isSchemaError } from '../../util/isSchemaError.js';
|
|
4
|
+
import { extractFromSanitySchema } from './extractFromSanitySchema.js';
|
|
5
|
+
import { resolveGraphQLApis } from './resolveGraphQLApisFromWorkspaces.js';
|
|
6
|
+
import { SchemaError } from './SchemaError.js';
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Main-thread orchestrator
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
export async function extractGraphQLAPIs(workDir, options) {
|
|
11
|
+
if (!isMainThread) {
|
|
12
|
+
throw new Error('extractGraphQLAPIs() must be called from the main thread');
|
|
13
|
+
}
|
|
14
|
+
const [cliConfig, configPath] = await Promise.all([
|
|
15
|
+
getCliConfig(workDir),
|
|
16
|
+
findStudioConfigPath(workDir)
|
|
17
|
+
]);
|
|
18
|
+
const result = await studioWorkerTask(new URL('extractGraphQLAPIs.worker.js', import.meta.url), {
|
|
19
|
+
name: 'extractGraphQLAPIs',
|
|
20
|
+
studioRootPath: workDir,
|
|
21
|
+
workerData: {
|
|
22
|
+
cliConfig: extractGraphQLConfig(cliConfig),
|
|
23
|
+
configPath,
|
|
24
|
+
nonNullDocumentFieldsFlag: options.nonNullDocumentFieldsFlag,
|
|
25
|
+
withUnionCache: options.withUnionCache,
|
|
26
|
+
workDir
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
if (result.configErrors?.length) {
|
|
30
|
+
throw new SchemaError(result.configErrors);
|
|
31
|
+
}
|
|
32
|
+
return result.apis;
|
|
33
|
+
}
|
|
34
|
+
function extractGraphQLConfig(config) {
|
|
35
|
+
return {
|
|
36
|
+
graphql: config.graphql
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const debug = subdebug('graphql:extractGraphQLAPIs:worker');
|
|
40
|
+
export async function extractGraphQLAPIsWorker(port, data, deps) {
|
|
41
|
+
const { cliConfig, configPath, nonNullDocumentFieldsFlag, withUnionCache, workDir } = data;
|
|
42
|
+
// Load workspaces — this loads sanity.config.ts through Vite, caching `sanity` in the process
|
|
43
|
+
let workspaces;
|
|
44
|
+
try {
|
|
45
|
+
workspaces = await deps.getStudioWorkspaces(configPath);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
if (isSchemaError(err)) {
|
|
48
|
+
const validation = err.schema._validation ?? [];
|
|
49
|
+
const configErrors = validation.map((g)=>({
|
|
50
|
+
...g,
|
|
51
|
+
problems: g.problems.filter((p)=>p.severity === 'error')
|
|
52
|
+
})).filter((g)=>g.problems.length > 0);
|
|
53
|
+
// Only treat error-severity problems as schema errors. If the validation
|
|
54
|
+
// only contains warnings, re-throw the original error so it isn't silently
|
|
55
|
+
// swallowed — warnings alone should not block deployment.
|
|
56
|
+
if (configErrors.length === 0) {
|
|
57
|
+
throw err;
|
|
58
|
+
}
|
|
59
|
+
port.postMessage({
|
|
60
|
+
apis: [],
|
|
61
|
+
configErrors
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
// Resolve which GraphQL APIs to deploy from workspace + CLI config
|
|
68
|
+
const resolvedApis = resolveGraphQLApis({
|
|
69
|
+
cliConfig,
|
|
70
|
+
workspaces
|
|
71
|
+
});
|
|
72
|
+
// Get createSchema from sanity (0ms — already cached by ViteNodeRunner)
|
|
73
|
+
const { createSchema } = await deps.resolveLocalPackage('sanity', workDir);
|
|
74
|
+
// Build default schema to identify built-in types that should be filtered out
|
|
75
|
+
const defaultSchema = createSchema({
|
|
76
|
+
name: 'default',
|
|
77
|
+
types: []
|
|
78
|
+
});
|
|
79
|
+
const defaultTypes = defaultSchema.getTypeNames();
|
|
80
|
+
const isCustomType = (type)=>!defaultTypes.includes(type.name);
|
|
81
|
+
// For each API: create compiled schema, extract GraphQL spec, catch SchemaError
|
|
82
|
+
const results = [];
|
|
83
|
+
for (const api of resolvedApis){
|
|
84
|
+
const apiBase = {
|
|
85
|
+
dataset: api.dataset,
|
|
86
|
+
filterSuffix: api.filterSuffix,
|
|
87
|
+
generation: api.generation,
|
|
88
|
+
id: api.id,
|
|
89
|
+
nonNullDocumentFields: api.nonNullDocumentFields,
|
|
90
|
+
playground: api.playground,
|
|
91
|
+
projectId: api.projectId,
|
|
92
|
+
tag: api.tag
|
|
93
|
+
};
|
|
94
|
+
try {
|
|
95
|
+
const schema = createSchema({
|
|
96
|
+
name: 'default',
|
|
97
|
+
types: api.schemaTypes.filter((type)=>isCustomType(type))
|
|
98
|
+
});
|
|
99
|
+
const extracted = extractFromSanitySchema(schema, {
|
|
100
|
+
nonNullDocumentFields: nonNullDocumentFieldsFlag === undefined ? api.nonNullDocumentFields : nonNullDocumentFieldsFlag,
|
|
101
|
+
withUnionCache
|
|
102
|
+
});
|
|
103
|
+
results.push({
|
|
104
|
+
...apiBase,
|
|
105
|
+
extracted
|
|
106
|
+
});
|
|
107
|
+
} catch (err) {
|
|
108
|
+
if (err instanceof SchemaError) {
|
|
109
|
+
results.push({
|
|
110
|
+
...apiBase,
|
|
111
|
+
schemaErrors: err.problemGroups
|
|
112
|
+
});
|
|
113
|
+
} else if (isSchemaError(err)) {
|
|
114
|
+
// Sanity's internal schema error from createSchema() — different class from our
|
|
115
|
+
// SchemaError, but carries structured validation data on err.schema._validation.
|
|
116
|
+
// This is low-probability since getStudioWorkspaces() above already validated,
|
|
117
|
+
// but createSchema() on filtered types could still surface issues.
|
|
118
|
+
const validation = err.schema._validation ?? [];
|
|
119
|
+
const errorGroups = validation.map((g)=>({
|
|
120
|
+
...g,
|
|
121
|
+
problems: g.problems.filter((p)=>p.severity === 'error')
|
|
122
|
+
})).filter((g)=>g.problems.length > 0);
|
|
123
|
+
if (errorGroups.length > 0) {
|
|
124
|
+
results.push({
|
|
125
|
+
...apiBase,
|
|
126
|
+
schemaErrors: errorGroups
|
|
127
|
+
});
|
|
128
|
+
} else {
|
|
129
|
+
// Warning-only or empty _validation — fall through to generic error with the
|
|
130
|
+
// message, matching the global path which re-throws warning-only errors.
|
|
131
|
+
results.push({
|
|
132
|
+
...apiBase,
|
|
133
|
+
extractionError: err instanceof Error ? err.message : String(err)
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
debug('Schema extraction failed for %s/%s: %O', apiBase.dataset, apiBase.tag ?? 'default', err);
|
|
138
|
+
results.push({
|
|
139
|
+
...apiBase,
|
|
140
|
+
extractionError: err instanceof Error ? err.message : String(err)
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
port.postMessage({
|
|
146
|
+
apis: results
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//# sourceMappingURL=extractGraphQLAPIs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/graphql/extractGraphQLAPIs.ts"],"sourcesContent":["import {isMainThread, type MessagePort} from 'node:worker_threads'\n\nimport {\n type CliConfig,\n findStudioConfigPath,\n getCliConfig,\n studioWorkerTask,\n subdebug,\n} from '@sanity/cli-core'\n\nimport {isSchemaError} from '../../util/isSchemaError.js'\nimport {extractFromSanitySchema} from './extractFromSanitySchema.js'\nimport {resolveGraphQLApis, type Workspace} from './resolveGraphQLApisFromWorkspaces.js'\nimport {SchemaError} from './SchemaError.js'\nimport {\n type ExtractedGraphQLAPI,\n type GraphQLAPIConfig,\n type GraphQLWorkerResult,\n type SchemaDefinitionish,\n} from './types.js'\n\n// ---------------------------------------------------------------------------\n// Main-thread orchestrator\n// ---------------------------------------------------------------------------\n\nexport async function extractGraphQLAPIs(\n workDir: string,\n options: {nonNullDocumentFieldsFlag?: boolean; withUnionCache?: boolean},\n): Promise<ExtractedGraphQLAPI[]> {\n if (!isMainThread) {\n throw new Error('extractGraphQLAPIs() must be called from the main thread')\n }\n\n const [cliConfig, configPath] = await Promise.all([\n getCliConfig(workDir),\n findStudioConfigPath(workDir),\n ])\n\n const result = await studioWorkerTask<GraphQLWorkerResult>(\n new URL('extractGraphQLAPIs.worker.js', import.meta.url),\n {\n name: 'extractGraphQLAPIs',\n studioRootPath: workDir,\n workerData: {\n cliConfig: extractGraphQLConfig(cliConfig),\n configPath,\n nonNullDocumentFieldsFlag: options.nonNullDocumentFieldsFlag,\n withUnionCache: options.withUnionCache,\n workDir,\n },\n },\n )\n\n if (result.configErrors?.length) {\n throw new SchemaError(result.configErrors)\n }\n\n return result.apis\n}\n\nfunction extractGraphQLConfig(config: CliConfig) {\n return {\n graphql: config.graphql,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Worker logic (runs inside the worker thread)\n// ---------------------------------------------------------------------------\n\nexport interface ExtractWorkerData {\n configPath: string\n workDir: string\n\n cliConfig?: {graphql?: GraphQLAPIConfig[]}\n nonNullDocumentFieldsFlag?: boolean\n withUnionCache?: boolean\n}\n\nexport interface ExtractWorkerDeps {\n getStudioWorkspaces: (configPath: string) => Promise<unknown[]>\n resolveLocalPackage: <T>(name: string, workDir: string) => Promise<T>\n}\n\nconst debug = subdebug('graphql:extractGraphQLAPIs:worker')\n\nexport async function extractGraphQLAPIsWorker(\n port: MessagePort,\n data: ExtractWorkerData,\n deps: ExtractWorkerDeps,\n): Promise<void> {\n const {cliConfig, configPath, nonNullDocumentFieldsFlag, withUnionCache, workDir} = data\n\n // Load workspaces — this loads sanity.config.ts through Vite, caching `sanity` in the process\n let workspaces: Workspace[]\n try {\n workspaces = (await deps.getStudioWorkspaces(configPath)) as Workspace[]\n } catch (err) {\n if (isSchemaError(err)) {\n const validation = err.schema._validation ?? []\n const configErrors = validation\n .map((g) => ({...g, problems: g.problems.filter((p) => p.severity === 'error')}))\n .filter((g) => g.problems.length > 0)\n\n // Only treat error-severity problems as schema errors. If the validation\n // only contains warnings, re-throw the original error so it isn't silently\n // swallowed — warnings alone should not block deployment.\n if (configErrors.length === 0) {\n throw err\n }\n\n port.postMessage({apis: [], configErrors} satisfies GraphQLWorkerResult)\n return\n }\n throw err\n }\n\n // Resolve which GraphQL APIs to deploy from workspace + CLI config\n const resolvedApis = resolveGraphQLApis({cliConfig, workspaces})\n\n // Get createSchema from sanity (0ms — already cached by ViteNodeRunner)\n const {createSchema} = await deps.resolveLocalPackage<typeof import('sanity')>('sanity', workDir)\n\n // Build default schema to identify built-in types that should be filtered out\n const defaultSchema = createSchema({name: 'default', types: []})\n const defaultTypes = defaultSchema.getTypeNames()\n const isCustomType = (type: SchemaDefinitionish) => !defaultTypes.includes(type.name)\n\n // For each API: create compiled schema, extract GraphQL spec, catch SchemaError\n const results: ExtractedGraphQLAPI[] = []\n\n for (const api of resolvedApis) {\n const apiBase: Omit<ExtractedGraphQLAPI, 'extracted' | 'extractionError' | 'schemaErrors'> = {\n dataset: api.dataset,\n filterSuffix: api.filterSuffix,\n generation: api.generation,\n id: api.id,\n nonNullDocumentFields: api.nonNullDocumentFields,\n playground: api.playground,\n projectId: api.projectId,\n tag: api.tag,\n }\n\n try {\n const schema = createSchema({\n name: 'default',\n types: api.schemaTypes.filter((type) => isCustomType(type)),\n })\n\n const extracted = extractFromSanitySchema(schema, {\n nonNullDocumentFields:\n nonNullDocumentFieldsFlag === undefined\n ? api.nonNullDocumentFields\n : nonNullDocumentFieldsFlag,\n withUnionCache,\n })\n\n results.push({...apiBase, extracted})\n } catch (err) {\n if (err instanceof SchemaError) {\n results.push({...apiBase, schemaErrors: err.problemGroups})\n } else if (isSchemaError(err)) {\n // Sanity's internal schema error from createSchema() — different class from our\n // SchemaError, but carries structured validation data on err.schema._validation.\n // This is low-probability since getStudioWorkspaces() above already validated,\n // but createSchema() on filtered types could still surface issues.\n const validation = err.schema._validation ?? []\n const errorGroups = validation\n .map((g) => ({...g, problems: g.problems.filter((p) => p.severity === 'error')}))\n .filter((g) => g.problems.length > 0)\n if (errorGroups.length > 0) {\n results.push({...apiBase, schemaErrors: errorGroups})\n } else {\n // Warning-only or empty _validation — fall through to generic error with the\n // message, matching the global path which re-throws warning-only errors.\n results.push({\n ...apiBase,\n extractionError: err instanceof Error ? err.message : String(err),\n })\n }\n } else {\n debug(\n 'Schema extraction failed for %s/%s: %O',\n apiBase.dataset,\n apiBase.tag ?? 'default',\n err,\n )\n results.push({\n ...apiBase,\n extractionError: err instanceof Error ? err.message : String(err),\n })\n }\n }\n }\n\n port.postMessage({apis: results} satisfies GraphQLWorkerResult)\n}\n"],"names":["isMainThread","findStudioConfigPath","getCliConfig","studioWorkerTask","subdebug","isSchemaError","extractFromSanitySchema","resolveGraphQLApis","SchemaError","extractGraphQLAPIs","workDir","options","Error","cliConfig","configPath","Promise","all","result","URL","url","name","studioRootPath","workerData","extractGraphQLConfig","nonNullDocumentFieldsFlag","withUnionCache","configErrors","length","apis","config","graphql","debug","extractGraphQLAPIsWorker","port","data","deps","workspaces","getStudioWorkspaces","err","validation","schema","_validation","map","g","problems","filter","p","severity","postMessage","resolvedApis","createSchema","resolveLocalPackage","defaultSchema","types","defaultTypes","getTypeNames","isCustomType","type","includes","results","api","apiBase","dataset","filterSuffix","generation","id","nonNullDocumentFields","playground","projectId","tag","schemaTypes","extracted","undefined","push","schemaErrors","problemGroups","errorGroups","extractionError","message","String"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isMainThread, parentPort, workerData } from 'node:worker_threads';
|
|
2
|
+
import { getStudioWorkspaces, resolveLocalPackage } from '@sanity/cli-core';
|
|
3
|
+
import { extractGraphQLAPIsWorker } from './extractGraphQLAPIs.js';
|
|
4
|
+
if (isMainThread || !parentPort) {
|
|
5
|
+
throw new Error('This module must be run as a worker thread');
|
|
6
|
+
}
|
|
7
|
+
await extractGraphQLAPIsWorker(parentPort, workerData, {
|
|
8
|
+
getStudioWorkspaces,
|
|
9
|
+
resolveLocalPackage
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=extractGraphQLAPIs.worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/graphql/extractGraphQLAPIs.worker.ts"],"sourcesContent":["import {isMainThread, parentPort, workerData} from 'node:worker_threads'\n\nimport {getStudioWorkspaces, resolveLocalPackage} from '@sanity/cli-core'\n\nimport {extractGraphQLAPIsWorker, type ExtractWorkerData} from './extractGraphQLAPIs.js'\n\nif (isMainThread || !parentPort) {\n throw new Error('This module must be run as a worker thread')\n}\n\nawait extractGraphQLAPIsWorker(parentPort, workerData as ExtractWorkerData, {\n getStudioWorkspaces,\n resolveLocalPackage,\n})\n"],"names":["isMainThread","parentPort","workerData","getStudioWorkspaces","resolveLocalPackage","extractGraphQLAPIsWorker","Error"],"mappings":"AAAA,SAAQA,YAAY,EAAEC,UAAU,EAAEC,UAAU,QAAO,sBAAqB;AAExE,SAAQC,mBAAmB,EAAEC,mBAAmB,QAAO,mBAAkB;AAEzE,SAAQC,wBAAwB,QAA+B,0BAAyB;AAExF,IAAIL,gBAAgB,CAACC,YAAY;IAC/B,MAAM,IAAIK,MAAM;AAClB;AAEA,MAAMD,yBAAyBJ,YAAYC,YAAiC;IAC1EC;IACAC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/actions/graphql/gen1/generateTypeFilters.ts"],"sourcesContent":["import {flatten} from 'lodash-es'\n\nimport {isNonUnion} from '../helpers.js'\nimport {\n type ConvertedField,\n type ConvertedFieldDefinition,\n type ConvertedType,\n type ConvertedUnion,\n type InputFilterField,\n type InputObjectType,\n} from '../types.js'\n\ntype FilterCreator = (field: ConvertedField) => InputFilterField[]\n\nconst filterCreators: Record<string, FilterCreator> = {\n Boolean: createBooleanFilters,\n Date: createDateFilters,\n Datetime: createDateFilters,\n Float: createNumberFilters,\n ID: createIdFilters,\n Integer: createNumberFilters,\n Object: createObjectFilters,\n String: createStringFilters,\n Url: createStringFilters,\n}\n\nexport function generateTypeFilters(types: (ConvertedType | ConvertedUnion)[]): InputObjectType[] {\n const queryable = types\n .filter((type) => isNonUnion(type))\n .filter(\n (type) => type.type === 'Object' && type.interfaces && type.interfaces.includes('Document'),\n )\n\n return queryable.map((type) => {\n const name = `${type.name}Filter`\n const fields = flatten(type.fields.map((field) => createFieldFilters(field))).filter(Boolean)\n return {fields: [...fields, ...getDocumentFilters()], kind: 'InputObject', name}\n })\n}\n\nfunction createFieldFilters(field: ConvertedField) {\n if (filterCreators[field.type]) {\n return filterCreators[field.type](field)\n }\n\n if (field.kind === 'List') {\n return createListFilters()\n }\n\n if (field.isReference) {\n return createReferenceFilters(field)\n }\n\n return createInlineTypeFilters()\n}\n\nfunction getFieldName(field: ConvertedField, modifier = '') {\n const suffix = modifier ? `_${modifier}` : ''\n return `${field.fieldName}${suffix}`\n}\n\nfunction getDocumentFilters(): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'REFERENCES',\n },\n description: 'All documents references the given document ID',\n fieldName: 'references',\n type: 'ID',\n },\n {\n constraint: {\n comparator: 'IS_DRAFT',\n field: '_id',\n },\n description: 'All documents that are drafts',\n fieldName: 'is_draft',\n type: 'Boolean',\n },\n ]\n}\n\nfunction createIsDefinedFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'IS_DEFINED',\n field: field.fieldName,\n },\n description: 'All documents that have a value for this field',\n fieldName: getFieldName(field, 'is_defined'),\n type: 'Boolean',\n }\n}\n\nfunction createEqualityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are equal to given value',\n fieldName: getFieldName(field),\n type: field.type,\n }\n}\n\nfunction createInequalityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'NOT_EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are not equal to given value',\n fieldName: getFieldName(field, 'not'),\n type: field.type,\n }\n}\n\nfunction createDefaultFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [createEqualityFilter(field), createInequalityFilter(field), createIsDefinedFilter(field)]\n}\n\nfunction createGtLtFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'LT',\n field: field.fieldName,\n },\n description: 'All documents are less than given value',\n fieldName: getFieldName(field, 'lt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'LTE',\n field: field.fieldName,\n },\n description: 'All documents are less than or equal to given value',\n fieldName: getFieldName(field, 'lte'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GT',\n field: field.fieldName,\n },\n description: 'All documents are greater than given value',\n fieldName: getFieldName(field, 'gt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GTE',\n field: field.fieldName,\n },\n description: 'All documents are greater than or equal to given value',\n fieldName: getFieldName(field, 'gte'),\n type: field.type,\n },\n ]\n}\n\nfunction createBooleanFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createDefaultFilters(field)\n}\n\nfunction createIdFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createStringFilters(field)\n}\n\nfunction createDateFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createStringFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n ...createDefaultFilters(field),\n {\n constraint: {\n comparator: 'MATCHES',\n field: field.fieldName,\n },\n description: 'All documents contain (match) the given word/words',\n fieldName: getFieldName(field, 'matches'),\n type: 'String',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'IN',\n field: field.fieldName,\n },\n description: 'All documents match one of the given values',\n fieldName: getFieldName(field, 'in'),\n kind: 'List',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'NOT_IN',\n field: field.fieldName,\n },\n description: 'None of the values match any of the given values',\n fieldName: getFieldName(field, 'not_in'),\n kind: 'List',\n },\n ]\n}\n\nfunction createNumberFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createObjectFilters(_field: ConvertedFieldDefinition): InputFilterField[] {\n return []\n}\n\nfunction createListFilters(): InputFilterField[] {\n return []\n}\n\nfunction createInlineTypeFilters(): InputFilterField[] {\n return []\n}\n\nfunction createReferenceFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'EQUALS',\n field: `${field.fieldName}._ref`,\n },\n fieldName: getFieldName(field),\n type: 'ID',\n },\n ]\n}\n"],"names":["flatten","isNonUnion","filterCreators","Boolean","createBooleanFilters","Date","createDateFilters","Datetime","Float","createNumberFilters","ID","createIdFilters","Integer","Object","createObjectFilters","String","createStringFilters","Url","generateTypeFilters","types","queryable","filter","type","interfaces","includes","map","name","fields","field","createFieldFilters","getDocumentFilters","kind","createListFilters","isReference","createReferenceFilters","createInlineTypeFilters","getFieldName","modifier","suffix","fieldName","constraint","comparator","description","createIsDefinedFilter","createEqualityFilter","createInequalityFilter","createDefaultFilters","createGtLtFilters","children","isNullable","_field"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/actions/graphql/gen1/generateTypeFilters.ts"],"sourcesContent":["import flatten from 'lodash-es/flatten.js'\n\nimport {isNonUnion} from '../helpers.js'\nimport {\n type ConvertedField,\n type ConvertedFieldDefinition,\n type ConvertedType,\n type ConvertedUnion,\n type InputFilterField,\n type InputObjectType,\n} from '../types.js'\n\ntype FilterCreator = (field: ConvertedField) => InputFilterField[]\n\nconst filterCreators: Record<string, FilterCreator> = {\n Boolean: createBooleanFilters,\n Date: createDateFilters,\n Datetime: createDateFilters,\n Float: createNumberFilters,\n ID: createIdFilters,\n Integer: createNumberFilters,\n Object: createObjectFilters,\n String: createStringFilters,\n Url: createStringFilters,\n}\n\nexport function generateTypeFilters(types: (ConvertedType | ConvertedUnion)[]): InputObjectType[] {\n const queryable = types\n .filter((type) => isNonUnion(type))\n .filter(\n (type) => type.type === 'Object' && type.interfaces && type.interfaces.includes('Document'),\n )\n\n return queryable.map((type) => {\n const name = `${type.name}Filter`\n const fields = flatten(type.fields.map((field) => createFieldFilters(field))).filter(Boolean)\n return {fields: [...fields, ...getDocumentFilters()], kind: 'InputObject', name}\n })\n}\n\nfunction createFieldFilters(field: ConvertedField) {\n if (filterCreators[field.type]) {\n return filterCreators[field.type](field)\n }\n\n if (field.kind === 'List') {\n return createListFilters()\n }\n\n if (field.isReference) {\n return createReferenceFilters(field)\n }\n\n return createInlineTypeFilters()\n}\n\nfunction getFieldName(field: ConvertedField, modifier = '') {\n const suffix = modifier ? `_${modifier}` : ''\n return `${field.fieldName}${suffix}`\n}\n\nfunction getDocumentFilters(): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'REFERENCES',\n },\n description: 'All documents references the given document ID',\n fieldName: 'references',\n type: 'ID',\n },\n {\n constraint: {\n comparator: 'IS_DRAFT',\n field: '_id',\n },\n description: 'All documents that are drafts',\n fieldName: 'is_draft',\n type: 'Boolean',\n },\n ]\n}\n\nfunction createIsDefinedFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'IS_DEFINED',\n field: field.fieldName,\n },\n description: 'All documents that have a value for this field',\n fieldName: getFieldName(field, 'is_defined'),\n type: 'Boolean',\n }\n}\n\nfunction createEqualityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are equal to given value',\n fieldName: getFieldName(field),\n type: field.type,\n }\n}\n\nfunction createInequalityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'NOT_EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are not equal to given value',\n fieldName: getFieldName(field, 'not'),\n type: field.type,\n }\n}\n\nfunction createDefaultFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [createEqualityFilter(field), createInequalityFilter(field), createIsDefinedFilter(field)]\n}\n\nfunction createGtLtFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'LT',\n field: field.fieldName,\n },\n description: 'All documents are less than given value',\n fieldName: getFieldName(field, 'lt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'LTE',\n field: field.fieldName,\n },\n description: 'All documents are less than or equal to given value',\n fieldName: getFieldName(field, 'lte'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GT',\n field: field.fieldName,\n },\n description: 'All documents are greater than given value',\n fieldName: getFieldName(field, 'gt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GTE',\n field: field.fieldName,\n },\n description: 'All documents are greater than or equal to given value',\n fieldName: getFieldName(field, 'gte'),\n type: field.type,\n },\n ]\n}\n\nfunction createBooleanFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createDefaultFilters(field)\n}\n\nfunction createIdFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createStringFilters(field)\n}\n\nfunction createDateFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createStringFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n ...createDefaultFilters(field),\n {\n constraint: {\n comparator: 'MATCHES',\n field: field.fieldName,\n },\n description: 'All documents contain (match) the given word/words',\n fieldName: getFieldName(field, 'matches'),\n type: 'String',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'IN',\n field: field.fieldName,\n },\n description: 'All documents match one of the given values',\n fieldName: getFieldName(field, 'in'),\n kind: 'List',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'NOT_IN',\n field: field.fieldName,\n },\n description: 'None of the values match any of the given values',\n fieldName: getFieldName(field, 'not_in'),\n kind: 'List',\n },\n ]\n}\n\nfunction createNumberFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createObjectFilters(_field: ConvertedFieldDefinition): InputFilterField[] {\n return []\n}\n\nfunction createListFilters(): InputFilterField[] {\n return []\n}\n\nfunction createInlineTypeFilters(): InputFilterField[] {\n return []\n}\n\nfunction createReferenceFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'EQUALS',\n field: `${field.fieldName}._ref`,\n },\n fieldName: getFieldName(field),\n type: 'ID',\n },\n ]\n}\n"],"names":["flatten","isNonUnion","filterCreators","Boolean","createBooleanFilters","Date","createDateFilters","Datetime","Float","createNumberFilters","ID","createIdFilters","Integer","Object","createObjectFilters","String","createStringFilters","Url","generateTypeFilters","types","queryable","filter","type","interfaces","includes","map","name","fields","field","createFieldFilters","getDocumentFilters","kind","createListFilters","isReference","createReferenceFilters","createInlineTypeFilters","getFieldName","modifier","suffix","fieldName","constraint","comparator","description","createIsDefinedFilter","createEqualityFilter","createInequalityFilter","createDefaultFilters","createGtLtFilters","children","isNullable","_field"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import startCase from 'lodash-es/startCase.js';
|
|
2
|
+
import upperFirst from 'lodash-es/upperFirst.js';
|
|
2
3
|
import pluralize from 'pluralize-esm';
|
|
3
4
|
import { isNonUnion } from '../helpers.js';
|
|
4
5
|
function pluralizeTypeName(name) {
|