@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/manifest/extractAppManifest.ts"],"sourcesContent":["import {getCliConfig} from '@sanity/cli-core'\nimport {spinner} from '@sanity/cli-core/ux'\n\nimport {getErrorMessage} from '../../util/getErrorMessage.js'\nimport {type
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/extractAppManifest.ts"],"sourcesContent":["import {readFile} from 'node:fs/promises'\nimport {relative, resolve} from 'node:path'\n\nimport {getCliConfig} from '@sanity/cli-core'\nimport {spinner} from '@sanity/cli-core/ux'\n\nimport {getErrorMessage} from '../../util/getErrorMessage.js'\nimport {type AppManifest} from './types.js'\n\ninterface ExtractAppManifestOptions {\n workDir: string\n}\n\n/**\n * Resolves app.icon from config (a file path) to an SVG string for the manifest.\n * The manifest expects the SVG string inline, not a path.\n * Brett sanitizes SVGs so it's skipped here.\n */\nasync function readIconFromPath(workDir: string, iconPath: string): Promise<string> {\n const resolvedPath = resolve(workDir, iconPath)\n const pathRelativeToWorkDir = relative(workDir, resolvedPath)\n if (pathRelativeToWorkDir.startsWith('..')) {\n throw new Error(\n `Icon path \"${iconPath}\" resolves outside the project directory and is not allowed.`,\n )\n }\n\n let content: string\n try {\n content = await readFile(resolvedPath, 'utf8')\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n throw new Error(\n `Could not read icon file at \"${iconPath}\" (resolved: ${resolvedPath}): ${message}`,\n )\n }\n\n const trimmed = content.trim()\n if (!/<svg[\\s>]/i.test(trimmed)) {\n throw new Error(\n `Icon file at \"${iconPath}\" does not contain an SVG element. App manifest icons must be SVG files.`,\n )\n }\n\n return trimmed\n}\n\n/**\n *\n * This functions slightly differently from the studio manifest extraction function.\n * We don't need to parse very complicated information like schemas and tools.\n * The app icon in config is a file path (e.g. relative to project root); its content is read and inlined in the manifest.\n */\nexport async function extractAppManifest(\n options: ExtractAppManifestOptions,\n): Promise<AppManifest | undefined> {\n const {workDir} = options\n const {app} = await getCliConfig(workDir)\n if (!app) {\n return undefined\n }\n\n const spin = spinner('Extracting manifest').start()\n\n try {\n let icon: string | undefined\n if (app.icon) {\n icon = await readIconFromPath(workDir, app.icon)\n }\n\n if (!icon && !app.title) {\n spin.succeed('Manifest creation skipped: no icon or title found in app configuration')\n return undefined\n }\n\n const manifest: AppManifest = {\n version: '1',\n ...(icon ? {icon} : {}),\n ...(app.title ? {title: app.title} : {}),\n }\n\n spin.succeed(`Extracted manifest`)\n\n return manifest\n } catch (err) {\n const message = getErrorMessage(err)\n spin.fail(message)\n throw err\n }\n}\n"],"names":["readFile","relative","resolve","getCliConfig","spinner","getErrorMessage","readIconFromPath","workDir","iconPath","resolvedPath","pathRelativeToWorkDir","startsWith","Error","content","err","message","String","trimmed","trim","test","extractAppManifest","options","app","undefined","spin","start","icon","title","succeed","manifest","version","fail"],"mappings":"AAAA,SAAQA,QAAQ,QAAO,mBAAkB;AACzC,SAAQC,QAAQ,EAAEC,OAAO,QAAO,YAAW;AAE3C,SAAQC,YAAY,QAAO,mBAAkB;AAC7C,SAAQC,OAAO,QAAO,sBAAqB;AAE3C,SAAQC,eAAe,QAAO,gCAA+B;AAO7D;;;;CAIC,GACD,eAAeC,iBAAiBC,OAAe,EAAEC,QAAgB;IAC/D,MAAMC,eAAeP,QAAQK,SAASC;IACtC,MAAME,wBAAwBT,SAASM,SAASE;IAChD,IAAIC,sBAAsBC,UAAU,CAAC,OAAO;QAC1C,MAAM,IAAIC,MACR,CAAC,WAAW,EAAEJ,SAAS,4DAA4D,CAAC;IAExF;IAEA,IAAIK;IACJ,IAAI;QACFA,UAAU,MAAMb,SAASS,cAAc;IACzC,EAAE,OAAOK,KAAK;QACZ,MAAMC,UAAUD,eAAeF,QAAQE,IAAIC,OAAO,GAAGC,OAAOF;QAC5D,MAAM,IAAIF,MACR,CAAC,6BAA6B,EAAEJ,SAAS,aAAa,EAAEC,aAAa,GAAG,EAAEM,SAAS;IAEvF;IAEA,MAAME,UAAUJ,QAAQK,IAAI;IAC5B,IAAI,CAAC,aAAaC,IAAI,CAACF,UAAU;QAC/B,MAAM,IAAIL,MACR,CAAC,cAAc,EAAEJ,SAAS,wEAAwE,CAAC;IAEvG;IAEA,OAAOS;AACT;AAEA;;;;;CAKC,GACD,OAAO,eAAeG,mBACpBC,OAAkC;IAElC,MAAM,EAACd,OAAO,EAAC,GAAGc;IAClB,MAAM,EAACC,GAAG,EAAC,GAAG,MAAMnB,aAAaI;IACjC,IAAI,CAACe,KAAK;QACR,OAAOC;IACT;IAEA,MAAMC,OAAOpB,QAAQ,uBAAuBqB,KAAK;IAEjD,IAAI;QACF,IAAIC;QACJ,IAAIJ,IAAII,IAAI,EAAE;YACZA,OAAO,MAAMpB,iBAAiBC,SAASe,IAAII,IAAI;QACjD;QAEA,IAAI,CAACA,QAAQ,CAACJ,IAAIK,KAAK,EAAE;YACvBH,KAAKI,OAAO,CAAC;YACb,OAAOL;QACT;QAEA,MAAMM,WAAwB;YAC5BC,SAAS;YACT,GAAIJ,OAAO;gBAACA;YAAI,IAAI,CAAC,CAAC;YACtB,GAAIJ,IAAIK,KAAK,GAAG;gBAACA,OAAOL,IAAIK,KAAK;YAAA,IAAI,CAAC,CAAC;QACzC;QAEAH,KAAKI,OAAO,CAAC,CAAC,kBAAkB,CAAC;QAEjC,OAAOC;IACT,EAAE,OAAOf,KAAK;QACZ,MAAMC,UAAUV,gBAAgBS;QAChCU,KAAKO,IAAI,CAAChB;QACV,MAAMD;IACR;AACF"}
|
|
@@ -1,93 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { join, resolve } from 'node:path';
|
|
4
|
-
import { getTimer } from '@sanity/cli-core';
|
|
1
|
+
import { findProjectRoot, getTimer, studioWorkerTask } from '@sanity/cli-core';
|
|
5
2
|
import { spinner } from '@sanity/cli-core/ux';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
export const MANIFEST_FILENAME = 'create-manifest.json';
|
|
10
|
-
const SCHEMA_FILENAME_SUFFIX = '.create-schema.json';
|
|
11
|
-
const TOOLS_FILENAME_SUFFIX = '.create-tools.json';
|
|
12
|
-
/** Escape-hatch env flags to change action behavior */ const FEATURE_ENABLED_ENV_NAME = 'SANITY_CLI_EXTRACT_MANIFEST_ENABLED';
|
|
13
|
-
const EXTRACT_MANIFEST_ENABLED = process.env[FEATURE_ENABLED_ENV_NAME] !== 'false';
|
|
14
|
-
const EXTRACT_MANIFEST_LOG_ERRORS = process.env.SANITY_CLI_EXTRACT_MANIFEST_LOG_ERRORS === 'true';
|
|
3
|
+
import { SchemaExtractionError } from '../schema/utils/SchemaExtractionError.js';
|
|
4
|
+
import { manifestDebug } from './debug.js';
|
|
5
|
+
import { writeManifestFile } from './writeManifestFile.js';
|
|
15
6
|
const CREATE_TIMER = 'create-manifest';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
try {
|
|
24
|
-
await extractManifest(options);
|
|
25
|
-
return undefined;
|
|
26
|
-
} catch (err) {
|
|
27
|
-
if (EXTRACT_MANIFEST_LOG_ERRORS) {
|
|
28
|
-
options.output.error(err);
|
|
29
|
-
}
|
|
30
|
-
return err;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async function extractManifest(options) {
|
|
34
|
-
const { flags, workDir } = options;
|
|
35
|
-
const staticPath = resolve(join(workDir, flags.path));
|
|
36
|
-
const path = join(staticPath, MANIFEST_FILENAME);
|
|
7
|
+
export async function extractManifest(outPath) {
|
|
8
|
+
const projectRoot = await findProjectRoot(process.cwd());
|
|
9
|
+
manifestDebug('Project root %o', projectRoot);
|
|
10
|
+
const workDir = projectRoot.directory;
|
|
11
|
+
const configPath = projectRoot.path;
|
|
37
12
|
const timer = getTimer();
|
|
38
13
|
timer.start(CREATE_TIMER);
|
|
39
14
|
const spin = spinner('Extracting manifest').start();
|
|
40
15
|
try {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
16
|
+
const result = await studioWorkerTask(new URL('extractManifest.worker.js', import.meta.url), {
|
|
17
|
+
name: 'extractManifest',
|
|
18
|
+
studioRootPath: workDir,
|
|
19
|
+
workerData: {
|
|
20
|
+
configPath,
|
|
21
|
+
workDir
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
manifestDebug('Result %o', result);
|
|
25
|
+
if (result.type === 'error') {
|
|
26
|
+
throw new SchemaExtractionError(result.error, result.validation);
|
|
27
|
+
}
|
|
28
|
+
await writeManifestFile({
|
|
29
|
+
outPath,
|
|
30
|
+
workDir,
|
|
31
|
+
workspaceManifests: result.workspaceManifests
|
|
44
32
|
});
|
|
45
|
-
const workspaceFiles = await writeWorkspaceFiles(workspaceManifests, staticPath);
|
|
46
|
-
const manifest = {
|
|
47
|
-
/**
|
|
48
|
-
* Version history:
|
|
49
|
-
* 1: Initial release.
|
|
50
|
-
* 2: Added tools file.
|
|
51
|
-
* 3. Added studioVersion field.
|
|
52
|
-
*/ createdAt: new Date().toISOString(),
|
|
53
|
-
studioVersion: await readModuleVersion(workDir, 'sanity'),
|
|
54
|
-
version: 3,
|
|
55
|
-
workspaces: workspaceFiles
|
|
56
|
-
};
|
|
57
|
-
await writeFile(path, JSON.stringify(manifest, null, 2));
|
|
58
33
|
const manifestDuration = timer.end(CREATE_TIMER);
|
|
59
34
|
spin.succeed(`Extracted manifest (${manifestDuration.toFixed(0)}ms)`);
|
|
60
35
|
} catch (err) {
|
|
61
|
-
|
|
36
|
+
manifestDebug('Error extracting manifest', err);
|
|
37
|
+
spin.fail();
|
|
62
38
|
throw err;
|
|
63
39
|
}
|
|
64
40
|
}
|
|
65
|
-
async function getWorkspaceManifests(workDir) {
|
|
66
|
-
const workspaces = await importStudioConfig(workDir);
|
|
67
|
-
return await extractWorkspaceManifest(workspaces);
|
|
68
|
-
}
|
|
69
|
-
function writeWorkspaceFiles(manifestWorkspaces, staticPath) {
|
|
70
|
-
const output = manifestWorkspaces.map((workspace)=>writeWorkspaceFile(workspace, staticPath));
|
|
71
|
-
return Promise.all(output);
|
|
72
|
-
}
|
|
73
|
-
async function writeWorkspaceFile(workspace, staticPath) {
|
|
74
|
-
const [schemaFilename, toolsFilename] = await Promise.all([
|
|
75
|
-
createFile(staticPath, workspace.schema, SCHEMA_FILENAME_SUFFIX),
|
|
76
|
-
createFile(staticPath, workspace.tools, TOOLS_FILENAME_SUFFIX)
|
|
77
|
-
]);
|
|
78
|
-
return {
|
|
79
|
-
...workspace,
|
|
80
|
-
schema: schemaFilename,
|
|
81
|
-
tools: toolsFilename
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
const createFile = async (path, content, filenameSuffix)=>{
|
|
85
|
-
const stringifiedContent = JSON.stringify(content, null, 2);
|
|
86
|
-
const hash = createHash('sha1').update(stringifiedContent).digest('hex');
|
|
87
|
-
const filename = `${hash.slice(0, 8)}${filenameSuffix}`;
|
|
88
|
-
// workspaces with identical data will overwrite each others file. This is ok, since they are identical and can be shared
|
|
89
|
-
await writeFile(join(path, filename), stringifiedContent);
|
|
90
|
-
return filename;
|
|
91
|
-
};
|
|
92
41
|
|
|
93
42
|
//# sourceMappingURL=extractManifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/manifest/extractManifest.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/extractManifest.ts"],"sourcesContent":["import {findProjectRoot, getTimer, studioWorkerTask} from '@sanity/cli-core'\nimport {spinner} from '@sanity/cli-core/ux'\n\nimport {type ExtractSchemaWorkerError} from '../schema/types.js'\nimport {SchemaExtractionError} from '../schema/utils/SchemaExtractionError.js'\nimport {manifestDebug} from './debug.js'\nimport {type CreateWorkspaceManifest, type ExtractManifestWorkerData} from './types'\nimport {writeManifestFile} from './writeManifestFile.js'\n\nconst CREATE_TIMER = 'create-manifest'\n\ninterface ExtractManifestWorkerResult {\n type: 'success'\n workspaceManifests: CreateWorkspaceManifest[]\n}\n\ntype ExtractManifestWorkerMessage = ExtractManifestWorkerResult | ExtractSchemaWorkerError\n\nexport async function extractManifest(outPath: string): Promise<void> {\n const projectRoot = await findProjectRoot(process.cwd())\n\n manifestDebug('Project root %o', projectRoot)\n\n const workDir = projectRoot.directory\n const configPath = projectRoot.path\n\n const timer = getTimer()\n timer.start(CREATE_TIMER)\n const spin = spinner('Extracting manifest').start()\n\n try {\n const result = await studioWorkerTask<ExtractManifestWorkerMessage>(\n new URL('extractManifest.worker.js', import.meta.url),\n {\n name: 'extractManifest',\n studioRootPath: workDir,\n workerData: {configPath, workDir} satisfies ExtractManifestWorkerData,\n },\n )\n\n manifestDebug('Result %o', result)\n\n if (result.type === 'error') {\n throw new SchemaExtractionError(result.error, result.validation)\n }\n\n await writeManifestFile({\n outPath,\n workDir,\n workspaceManifests: result.workspaceManifests,\n })\n\n const manifestDuration = timer.end(CREATE_TIMER)\n\n spin.succeed(`Extracted manifest (${manifestDuration.toFixed(0)}ms)`)\n } catch (err) {\n manifestDebug('Error extracting manifest', err)\n spin.fail()\n\n throw err\n }\n}\n"],"names":["findProjectRoot","getTimer","studioWorkerTask","spinner","SchemaExtractionError","manifestDebug","writeManifestFile","CREATE_TIMER","extractManifest","outPath","projectRoot","process","cwd","workDir","directory","configPath","path","timer","start","spin","result","URL","url","name","studioRootPath","workerData","type","error","validation","workspaceManifests","manifestDuration","end","succeed","toFixed","err","fail"],"mappings":"AAAA,SAAQA,eAAe,EAAEC,QAAQ,EAAEC,gBAAgB,QAAO,mBAAkB;AAC5E,SAAQC,OAAO,QAAO,sBAAqB;AAG3C,SAAQC,qBAAqB,QAAO,2CAA0C;AAC9E,SAAQC,aAAa,QAAO,aAAY;AAExC,SAAQC,iBAAiB,QAAO,yBAAwB;AAExD,MAAMC,eAAe;AASrB,OAAO,eAAeC,gBAAgBC,OAAe;IACnD,MAAMC,cAAc,MAAMV,gBAAgBW,QAAQC,GAAG;IAErDP,cAAc,mBAAmBK;IAEjC,MAAMG,UAAUH,YAAYI,SAAS;IACrC,MAAMC,aAAaL,YAAYM,IAAI;IAEnC,MAAMC,QAAQhB;IACdgB,MAAMC,KAAK,CAACX;IACZ,MAAMY,OAAOhB,QAAQ,uBAAuBe,KAAK;IAEjD,IAAI;QACF,MAAME,SAAS,MAAMlB,iBACnB,IAAImB,IAAI,6BAA6B,YAAYC,GAAG,GACpD;YACEC,MAAM;YACNC,gBAAgBX;YAChBY,YAAY;gBAACV;gBAAYF;YAAO;QAClC;QAGFR,cAAc,aAAae;QAE3B,IAAIA,OAAOM,IAAI,KAAK,SAAS;YAC3B,MAAM,IAAItB,sBAAsBgB,OAAOO,KAAK,EAAEP,OAAOQ,UAAU;QACjE;QAEA,MAAMtB,kBAAkB;YACtBG;YACAI;YACAgB,oBAAoBT,OAAOS,kBAAkB;QAC/C;QAEA,MAAMC,mBAAmBb,MAAMc,GAAG,CAACxB;QAEnCY,KAAKa,OAAO,CAAC,CAAC,oBAAoB,EAAEF,iBAAiBG,OAAO,CAAC,GAAG,GAAG,CAAC;IACtE,EAAE,OAAOC,KAAK;QACZ7B,cAAc,6BAA6B6B;QAC3Cf,KAAKgB,IAAI;QAET,MAAMD;IACR;AACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isMainThread, parentPort, workerData } from 'node:worker_threads';
|
|
2
|
+
import { getStudioWorkspaces, subdebug } from '@sanity/cli-core';
|
|
3
|
+
import { extractValidationFromSchemaError } from '../schema/utils/extractValidationFromSchemaError.js';
|
|
4
|
+
import { extractWorkspaceManifest } from './extractWorkspaceManifest.js';
|
|
5
|
+
import { extractManifestWorkerData } from './types.js';
|
|
6
|
+
if (isMainThread || !parentPort) {
|
|
7
|
+
throw new Error('Should only be run in a worker!');
|
|
8
|
+
}
|
|
9
|
+
const debug = subdebug('extractManifest.worker');
|
|
10
|
+
const { configPath, workDir } = extractManifestWorkerData.parse(workerData);
|
|
11
|
+
try {
|
|
12
|
+
debug('Extracting workspace manifests from config path %s', configPath);
|
|
13
|
+
const workspaces = await getStudioWorkspaces(configPath);
|
|
14
|
+
debug('Workspaces %o', workspaces);
|
|
15
|
+
const workspaceManifests = await extractWorkspaceManifest(workspaces, workDir);
|
|
16
|
+
parentPort.postMessage({
|
|
17
|
+
type: 'success',
|
|
18
|
+
workspaceManifests
|
|
19
|
+
});
|
|
20
|
+
} catch (error) {
|
|
21
|
+
debug('Error extracting workspace manifests', error);
|
|
22
|
+
const validation = await extractValidationFromSchemaError(error, workDir);
|
|
23
|
+
parentPort.postMessage({
|
|
24
|
+
error: error instanceof Error ? error.message : String(error),
|
|
25
|
+
type: 'error',
|
|
26
|
+
validation
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=extractManifest.worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/manifest/extractManifest.worker.ts"],"sourcesContent":["import {isMainThread, parentPort, workerData} from 'node:worker_threads'\n\nimport {getStudioWorkspaces, subdebug} from '@sanity/cli-core'\n\nimport {extractValidationFromSchemaError} from '../schema/utils/extractValidationFromSchemaError.js'\nimport {extractWorkspaceManifest} from './extractWorkspaceManifest.js'\nimport {extractManifestWorkerData} from './types.js'\n\nif (isMainThread || !parentPort) {\n throw new Error('Should only be run in a worker!')\n}\n\nconst debug = subdebug('extractManifest.worker')\n\nconst {configPath, workDir} = extractManifestWorkerData.parse(workerData)\n\ntry {\n debug('Extracting workspace manifests from config path %s', configPath)\n const workspaces = await getStudioWorkspaces(configPath)\n debug('Workspaces %o', workspaces)\n const workspaceManifests = await extractWorkspaceManifest(workspaces, workDir)\n\n parentPort.postMessage({\n type: 'success',\n workspaceManifests,\n })\n} catch (error) {\n debug('Error extracting workspace manifests', error)\n const validation = await extractValidationFromSchemaError(error, workDir)\n parentPort.postMessage({\n error: error instanceof Error ? error.message : String(error),\n type: 'error',\n validation,\n })\n}\n"],"names":["isMainThread","parentPort","workerData","getStudioWorkspaces","subdebug","extractValidationFromSchemaError","extractWorkspaceManifest","extractManifestWorkerData","Error","debug","configPath","workDir","parse","workspaces","workspaceManifests","postMessage","type","error","validation","message","String"],"mappings":"AAAA,SAAQA,YAAY,EAAEC,UAAU,EAAEC,UAAU,QAAO,sBAAqB;AAExE,SAAQC,mBAAmB,EAAEC,QAAQ,QAAO,mBAAkB;AAE9D,SAAQC,gCAAgC,QAAO,sDAAqD;AACpG,SAAQC,wBAAwB,QAAO,gCAA+B;AACtE,SAAQC,yBAAyB,QAAO,aAAY;AAEpD,IAAIP,gBAAgB,CAACC,YAAY;IAC/B,MAAM,IAAIO,MAAM;AAClB;AAEA,MAAMC,QAAQL,SAAS;AAEvB,MAAM,EAACM,UAAU,EAAEC,OAAO,EAAC,GAAGJ,0BAA0BK,KAAK,CAACV;AAE9D,IAAI;IACFO,MAAM,sDAAsDC;IAC5D,MAAMG,aAAa,MAAMV,oBAAoBO;IAC7CD,MAAM,iBAAiBI;IACvB,MAAMC,qBAAqB,MAAMR,yBAAyBO,YAAYF;IAEtEV,WAAWc,WAAW,CAAC;QACrBC,MAAM;QACNF;IACF;AACF,EAAE,OAAOG,OAAO;IACdR,MAAM,wCAAwCQ;IAC9C,MAAMC,aAAa,MAAMb,iCAAiCY,OAAON;IACjEV,WAAWc,WAAW,CAAC;QACrBE,OAAOA,iBAAiBT,QAAQS,MAAME,OAAO,GAAGC,OAAOH;QACvDD,MAAM;QACNE;IACF;AACF"}
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const MAX_CUSTOM_PROPERTY_DEPTH = 5;
|
|
11
|
-
export function extractWorkspaceManifest(workspaces) {
|
|
12
|
-
return workspaces.map((workspace)=>{
|
|
13
|
-
const serializedSchema = extractManifestSchemaTypes(workspace.schema);
|
|
14
|
-
const serializedTools = extractManifestTools(workspace.tools);
|
|
15
|
-
return {
|
|
16
|
-
basePath: workspace.basePath,
|
|
17
|
-
dataset: workspace.dataset,
|
|
18
|
-
icon: resolveIcon({
|
|
1
|
+
import { resolveLocalPackage } from '@sanity/cli-core';
|
|
2
|
+
import { resolveIcon } from './iconResolver.js';
|
|
3
|
+
import { transformType } from './schemaTypeTransformer.js';
|
|
4
|
+
/**
|
|
5
|
+
* Extracts manifest data from an array of workspaces
|
|
6
|
+
*/ export function extractWorkspaceManifest(workspaces, workDir) {
|
|
7
|
+
return Promise.all(workspaces.map(async (workspace)=>{
|
|
8
|
+
const [icon, serializedSchema, serializedTools] = await Promise.all([
|
|
9
|
+
resolveIcon({
|
|
19
10
|
icon: workspace.icon,
|
|
20
11
|
subtitle: workspace.subtitle,
|
|
21
|
-
title: workspace.title
|
|
12
|
+
title: workspace.title,
|
|
13
|
+
workDir
|
|
22
14
|
}),
|
|
15
|
+
extractManifestSchemaTypes(workspace.schema, workDir),
|
|
16
|
+
extractManifestTools(workspace.tools, workDir)
|
|
17
|
+
]);
|
|
18
|
+
return {
|
|
19
|
+
basePath: workspace.basePath,
|
|
20
|
+
dataset: workspace.dataset,
|
|
21
|
+
icon,
|
|
23
22
|
mediaLibrary: workspace.mediaLibrary,
|
|
24
23
|
name: workspace.name,
|
|
25
24
|
projectId: workspace.projectId,
|
|
@@ -28,379 +27,39 @@ export function extractWorkspaceManifest(workspaces) {
|
|
|
28
27
|
title: workspace.title,
|
|
29
28
|
tools: serializedTools
|
|
30
29
|
};
|
|
31
|
-
});
|
|
30
|
+
}));
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
33
|
* Extracts all serializable properties from userland schema types,
|
|
35
|
-
* so they best-effort can be used as definitions for Schema.compile
|
|
36
|
-
|
|
34
|
+
* so they best-effort can be used as definitions for Schema.compile.
|
|
35
|
+
*
|
|
36
|
+
* @internal
|
|
37
|
+
*/ export async function extractManifestSchemaTypes(schema, workDir) {
|
|
37
38
|
const typeNames = schema.getTypeNames();
|
|
38
39
|
const context = {
|
|
39
40
|
schema
|
|
40
41
|
};
|
|
42
|
+
const { createSchema } = await resolveLocalPackage('sanity', workDir);
|
|
41
43
|
const studioDefaultTypeNames = createSchema({
|
|
42
44
|
name: 'default',
|
|
43
45
|
types: []
|
|
44
46
|
}).getTypeNames();
|
|
45
47
|
return typeNames.filter((typeName)=>!studioDefaultTypeNames.includes(typeName)).map((typeName)=>schema.get(typeName)).filter((type)=>type !== undefined).map((type)=>transformType(type, context));
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const crossDatasetRefProps = isCrossDatasetReference(type) ? transformCrossDatasetReference(type) : {};
|
|
51
|
-
const globalRefProps = isGlobalDocumentReference(type) ? transformGlobalDocumentReference(type) : {};
|
|
52
|
-
const objectFields = type.jsonType === 'object' && type.type && isCustomized(type) ? {
|
|
53
|
-
fields: getCustomFields(type).map((objectField)=>transformField(objectField, context))
|
|
54
|
-
} : {};
|
|
55
|
-
return {
|
|
56
|
-
...retainCustomTypeProps(type),
|
|
57
|
-
...transformValidation(type.validation),
|
|
58
|
-
...ensureString('description', type.description),
|
|
59
|
-
...objectFields,
|
|
60
|
-
...arrayProps,
|
|
61
|
-
...referenceProps,
|
|
62
|
-
...crossDatasetRefProps,
|
|
63
|
-
...globalRefProps,
|
|
64
|
-
...ensureConditional('readOnly', type.readOnly),
|
|
65
|
-
...ensureConditional('hidden', type.hidden),
|
|
66
|
-
...transformFieldsets(type),
|
|
67
|
-
// fieldset prop gets instrumented via getCustomFields
|
|
68
|
-
...ensureString('fieldset', type.fieldset),
|
|
69
|
-
...transformBlockType(type, context)
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
function transformFieldsets(type) {
|
|
73
|
-
if (type.jsonType !== 'object') {
|
|
74
|
-
return {};
|
|
75
|
-
}
|
|
76
|
-
const fieldsets = type.fieldsets?.filter((fs)=>!fs.single).map((fs)=>{
|
|
77
|
-
const options = isRecord(fs.options) ? {
|
|
78
|
-
options: retainSerializableProps(fs.options)
|
|
79
|
-
} : {};
|
|
80
|
-
return {
|
|
81
|
-
name: fs.name,
|
|
82
|
-
...ensureCustomTitle(fs.name, fs.title),
|
|
83
|
-
...ensureString('description', fs.description),
|
|
84
|
-
...ensureConditional('readOnly', fs.readOnly),
|
|
85
|
-
...ensureConditional('hidden', fs.hidden),
|
|
86
|
-
...options
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
return fieldsets?.length ? {
|
|
90
|
-
fieldsets
|
|
91
|
-
} : {};
|
|
92
|
-
}
|
|
93
|
-
function transformType(type, context) {
|
|
94
|
-
const typeName = type.type ? type.type.name : type.jsonType;
|
|
95
|
-
return {
|
|
96
|
-
...transformCommonTypeFields(type, typeName, context),
|
|
97
|
-
name: type.name,
|
|
98
|
-
type: typeName,
|
|
99
|
-
...ensureCustomTitle(type.name, type.title)
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
function retainCustomTypeProps(type) {
|
|
103
|
-
const manuallySerializedFields = new Set([
|
|
104
|
-
'__experimental_actions',
|
|
105
|
-
'__experimental_formPreviewTitle',
|
|
106
|
-
'__experimental_omnisearch_visibility',
|
|
107
|
-
'__experimental_search',
|
|
108
|
-
'components',
|
|
109
|
-
'description',
|
|
110
|
-
'fields',
|
|
111
|
-
'fieldsets',
|
|
112
|
-
//only exists on fields
|
|
113
|
-
'group',
|
|
114
|
-
'groups',
|
|
115
|
-
'hidden',
|
|
116
|
-
'icon',
|
|
117
|
-
'jsonType',
|
|
118
|
-
//explicitly added
|
|
119
|
-
'name',
|
|
120
|
-
'of',
|
|
121
|
-
'orderings',
|
|
122
|
-
'preview',
|
|
123
|
-
'readOnly',
|
|
124
|
-
'title',
|
|
125
|
-
'to',
|
|
126
|
-
// not serialized
|
|
127
|
-
'type',
|
|
128
|
-
'validation'
|
|
129
|
-
]);
|
|
130
|
-
const typeWithoutManuallyHandledFields = Object.fromEntries(Object.entries(type).filter(([key])=>!manuallySerializedFields.has(key)));
|
|
131
|
-
return retainSerializableProps(typeWithoutManuallyHandledFields);
|
|
132
|
-
}
|
|
133
|
-
function retainSerializableProps(maybeSerializable, depth = 0) {
|
|
134
|
-
if (depth > MAX_CUSTOM_PROPERTY_DEPTH) {
|
|
135
|
-
return undefined;
|
|
136
|
-
}
|
|
137
|
-
if (!isDefined(maybeSerializable)) {
|
|
138
|
-
return undefined;
|
|
139
|
-
}
|
|
140
|
-
if (isPrimitive(maybeSerializable)) {
|
|
141
|
-
// cull empty strings
|
|
142
|
-
if (maybeSerializable === '') {
|
|
143
|
-
return undefined;
|
|
144
|
-
}
|
|
145
|
-
return maybeSerializable;
|
|
146
|
-
}
|
|
147
|
-
// url-schemes ect..
|
|
148
|
-
if (maybeSerializable instanceof RegExp) {
|
|
149
|
-
return maybeSerializable.toString();
|
|
150
|
-
}
|
|
151
|
-
if (Array.isArray(maybeSerializable)) {
|
|
152
|
-
const arrayItems = maybeSerializable.map((item)=>retainSerializableProps(item, depth + 1)).filter((item)=>isDefined(item));
|
|
153
|
-
return arrayItems.length > 0 ? arrayItems : undefined;
|
|
154
|
-
}
|
|
155
|
-
if (isRecord(maybeSerializable)) {
|
|
156
|
-
const serializableEntries = Object.entries(maybeSerializable).map(([key, value])=>{
|
|
157
|
-
return [
|
|
158
|
-
key,
|
|
159
|
-
retainSerializableProps(value, depth + 1)
|
|
160
|
-
];
|
|
161
|
-
}).filter(([, value])=>isDefined(value));
|
|
162
|
-
return serializableEntries.length > 0 ? Object.fromEntries(serializableEntries) : undefined;
|
|
163
|
-
}
|
|
164
|
-
return undefined;
|
|
165
|
-
}
|
|
166
|
-
function transformField(field, context) {
|
|
167
|
-
const fieldType = field.type;
|
|
168
|
-
const typeName = getDefinedTypeName(fieldType) ?? fieldType.name;
|
|
169
|
-
return {
|
|
170
|
-
...transformCommonTypeFields(fieldType, typeName, context),
|
|
171
|
-
name: field.name,
|
|
172
|
-
type: typeName,
|
|
173
|
-
...ensureCustomTitle(field.name, fieldType.title),
|
|
174
|
-
// this prop gets added synthetically via getCustomFields
|
|
175
|
-
...ensureString('fieldset', field.fieldset)
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
function transformArrayMember(arrayMember, context) {
|
|
179
|
-
return {
|
|
180
|
-
of: arrayMember.of.map((type)=>{
|
|
181
|
-
const typeName = getDefinedTypeName(type) ?? type.name;
|
|
182
|
-
return {
|
|
183
|
-
...transformCommonTypeFields(type, typeName, context),
|
|
184
|
-
type: typeName,
|
|
185
|
-
...typeName === type.name ? {} : {
|
|
186
|
-
name: type.name
|
|
187
|
-
},
|
|
188
|
-
...ensureCustomTitle(type.name, type.title)
|
|
189
|
-
};
|
|
190
|
-
})
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
function transformReference(reference) {
|
|
194
|
-
return {
|
|
195
|
-
to: (reference.to ?? []).map((type)=>{
|
|
196
|
-
return {
|
|
197
|
-
...retainCustomTypeProps(type),
|
|
198
|
-
type: type.name
|
|
199
|
-
};
|
|
200
|
-
})
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
function transformCrossDatasetReference(reference) {
|
|
204
|
-
return {
|
|
205
|
-
to: (reference.to ?? []).map((crossDataset)=>{
|
|
206
|
-
const preview = crossDataset.preview?.select ? {
|
|
207
|
-
preview: {
|
|
208
|
-
select: crossDataset.preview.select
|
|
209
|
-
}
|
|
210
|
-
} : {};
|
|
211
|
-
return {
|
|
212
|
-
type: crossDataset.type,
|
|
213
|
-
...ensureCustomTitle(crossDataset.type, crossDataset.title),
|
|
214
|
-
...preview
|
|
215
|
-
};
|
|
216
|
-
})
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
function transformGlobalDocumentReference(reference) {
|
|
220
|
-
return {
|
|
221
|
-
to: (reference.to ?? []).map((crossDataset)=>{
|
|
222
|
-
const preview = crossDataset.preview?.select ? {
|
|
223
|
-
preview: {
|
|
224
|
-
select: crossDataset.preview.select
|
|
225
|
-
}
|
|
226
|
-
} : {};
|
|
227
|
-
return {
|
|
228
|
-
type: crossDataset.type,
|
|
229
|
-
...ensureCustomTitle(crossDataset.type, crossDataset.title),
|
|
230
|
-
...preview
|
|
231
|
-
};
|
|
232
|
-
})
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
const transformTypeValidationRule = (rule)=>{
|
|
236
|
-
return {
|
|
237
|
-
...rule,
|
|
238
|
-
constraint: 'constraint' in rule && (typeof rule.constraint === 'string' ? rule.constraint.toLowerCase() : retainSerializableProps(rule.constraint))
|
|
239
|
-
};
|
|
240
|
-
};
|
|
241
|
-
const validationRuleTransformers = {
|
|
242
|
-
type: transformTypeValidationRule
|
|
243
|
-
};
|
|
244
|
-
function transformValidation(validation) {
|
|
245
|
-
const validationArray = (Array.isArray(validation) ? validation : [
|
|
246
|
-
validation
|
|
247
|
-
]).filter((value)=>typeof value === 'object' && '_type' in value);
|
|
248
|
-
// we dont want type in the output as that is implicitly given by the typedef itself an will only bloat the payload
|
|
249
|
-
const disallowedFlags = new Set([
|
|
250
|
-
'type'
|
|
251
|
-
]);
|
|
252
|
-
// Validation rules that refer to other fields use symbols, which cannot be serialized. It would
|
|
253
|
-
// be possible to transform these to a serializable type, but we haven't implemented that for now.
|
|
254
|
-
const disallowedConstraintTypes = new Set([
|
|
255
|
-
ConcreteRuleClass.FIELD_REF
|
|
256
|
-
]);
|
|
257
|
-
const serializedValidation = validationArray.map(({ _level, _message, _rules })=>{
|
|
258
|
-
const message = typeof _message === 'string' ? {
|
|
259
|
-
message: _message
|
|
260
|
-
} : {};
|
|
261
|
-
const serializedRules = _rules.filter((rule)=>{
|
|
262
|
-
if (!('constraint' in rule)) {
|
|
263
|
-
return false;
|
|
264
|
-
}
|
|
265
|
-
const { constraint, flag } = rule;
|
|
266
|
-
if (disallowedFlags.has(flag)) {
|
|
267
|
-
return false;
|
|
268
|
-
}
|
|
269
|
-
return !(typeof constraint === 'object' && 'type' in constraint && disallowedConstraintTypes.has(constraint.type));
|
|
270
|
-
}).map((rule)=>{
|
|
271
|
-
const transformer = validationRuleTransformers[rule.flag] ?? ((spec)=>retainSerializableProps(spec));
|
|
272
|
-
const transformedRule = transformer(rule);
|
|
273
|
-
if (!transformedRule) {
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
return transformedRule;
|
|
277
|
-
}).filter((rule)=>rule !== undefined);
|
|
278
|
-
return {
|
|
279
|
-
level: _level,
|
|
280
|
-
rules: serializedRules,
|
|
281
|
-
...message
|
|
282
|
-
};
|
|
283
|
-
}).filter((group)=>group.rules.length > 0);
|
|
284
|
-
return serializedValidation.length > 0 ? {
|
|
285
|
-
validation: serializedValidation
|
|
286
|
-
} : {};
|
|
287
|
-
}
|
|
288
|
-
function ensureCustomTitle(typeName, value) {
|
|
289
|
-
const titleObject = ensureString('title', value);
|
|
290
|
-
const defaultTitle = startCase(typeName);
|
|
291
|
-
// omit title if its the same as default, to reduce payload
|
|
292
|
-
if (titleObject.title === defaultTitle) {
|
|
293
|
-
return {};
|
|
294
|
-
}
|
|
295
|
-
return titleObject;
|
|
296
|
-
}
|
|
297
|
-
function ensureString(key, value) {
|
|
298
|
-
if (typeof value === 'string') {
|
|
299
|
-
return {
|
|
300
|
-
[key]: value
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
return {};
|
|
304
|
-
}
|
|
305
|
-
function ensureConditional(key, value) {
|
|
306
|
-
if (typeof value === 'boolean') {
|
|
307
|
-
return {
|
|
308
|
-
[key]: value
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
if (typeof value === 'function') {
|
|
312
|
-
return {
|
|
313
|
-
[key]: 'conditional'
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
return {};
|
|
317
|
-
}
|
|
318
|
-
function transformBlockType(blockType, context) {
|
|
319
|
-
if (blockType.jsonType !== 'object' || !isType(blockType, 'block')) {
|
|
320
|
-
return {};
|
|
321
|
-
}
|
|
322
|
-
const childrenField = blockType.fields?.find((field)=>field.name === 'children');
|
|
323
|
-
if (!childrenField) {
|
|
324
|
-
return {};
|
|
325
|
-
}
|
|
326
|
-
const ofType = childrenField.type.of;
|
|
327
|
-
if (!ofType) {
|
|
328
|
-
return {};
|
|
329
|
-
}
|
|
330
|
-
const spanType = ofType.find((memberType)=>memberType.name === 'span');
|
|
331
|
-
if (!spanType) {
|
|
332
|
-
return {};
|
|
333
|
-
}
|
|
334
|
-
const inlineObjectTypes = ofType.filter((memberType)=>memberType.name !== 'span') || [];
|
|
335
|
-
return {
|
|
336
|
-
lists: resolveEnabledListItems(blockType),
|
|
337
|
-
marks: {
|
|
338
|
-
annotations: spanType.annotations.map((t)=>transformType(t, context)),
|
|
339
|
-
decorators: resolveEnabledDecorators(spanType)
|
|
340
|
-
},
|
|
341
|
-
of: inlineObjectTypes.map((t)=>transformType(t, context)),
|
|
342
|
-
styles: resolveEnabledStyles(blockType)
|
|
343
|
-
};
|
|
344
|
-
}
|
|
345
|
-
function resolveEnabledStyles(blockType) {
|
|
346
|
-
const styleField = blockType.fields?.find((btField)=>btField.name === 'style');
|
|
347
|
-
return resolveTitleValueArray(styleField?.type?.options?.list);
|
|
348
|
-
}
|
|
349
|
-
function resolveEnabledDecorators(spanType) {
|
|
350
|
-
return 'decorators' in spanType ? resolveTitleValueArray(spanType.decorators) : undefined;
|
|
351
|
-
}
|
|
352
|
-
function resolveEnabledListItems(blockType) {
|
|
353
|
-
const listField = blockType.fields?.find((btField)=>btField.name === 'listItem');
|
|
354
|
-
return resolveTitleValueArray(listField?.type?.options?.list);
|
|
355
|
-
}
|
|
356
|
-
function resolveTitleValueArray(possibleArray) {
|
|
357
|
-
if (!possibleArray || !Array.isArray(possibleArray)) {
|
|
358
|
-
return undefined;
|
|
359
|
-
}
|
|
360
|
-
const titledValues = possibleArray.filter((d)=>isRecord(d) && !!d.value && isString(d.value)).map((item)=>{
|
|
361
|
-
return {
|
|
362
|
-
value: item.value,
|
|
363
|
-
...ensureString('title', item.title)
|
|
364
|
-
};
|
|
365
|
-
});
|
|
366
|
-
if (!titledValues?.length) {
|
|
367
|
-
return undefined;
|
|
368
|
-
}
|
|
369
|
-
return titledValues;
|
|
370
|
-
}
|
|
371
|
-
const extractManifestTools = (tools)=>tools.map((tool)=>{
|
|
49
|
+
/**
|
|
50
|
+
* Extracts tool information from workspace tools
|
|
51
|
+
*/ const extractManifestTools = async (tools, workDir)=>Promise.all(tools.map(async (tool)=>{
|
|
372
52
|
const { __internalApplicationType: type, icon, name, title } = tool;
|
|
373
53
|
return {
|
|
374
|
-
icon: resolveIcon({
|
|
54
|
+
icon: await resolveIcon({
|
|
375
55
|
icon: icon,
|
|
376
|
-
title
|
|
56
|
+
title,
|
|
57
|
+
workDir
|
|
377
58
|
}),
|
|
378
59
|
name,
|
|
379
60
|
title,
|
|
380
61
|
type: type || null
|
|
381
62
|
};
|
|
382
|
-
});
|
|
383
|
-
const resolveIcon = (props)=>{
|
|
384
|
-
const sheet = new ServerStyleSheet();
|
|
385
|
-
try {
|
|
386
|
-
/**
|
|
387
|
-
* You must render the element first so
|
|
388
|
-
* the style-sheet above can be populated
|
|
389
|
-
*/ const element = renderToString(sheet.collectStyles(/*#__PURE__*/ _jsx(SchemaIcon, {
|
|
390
|
-
...props
|
|
391
|
-
})));
|
|
392
|
-
const styleTags = sheet.getStyleTags();
|
|
393
|
-
/**
|
|
394
|
-
* We can then create a single string
|
|
395
|
-
* of HTML combining our styles and element
|
|
396
|
-
* before purifying below.
|
|
397
|
-
*/ const html = `${styleTags}${element}`.trim();
|
|
398
|
-
return DOMPurify.sanitize(html, config);
|
|
399
|
-
} catch {
|
|
400
|
-
return null;
|
|
401
|
-
} finally{
|
|
402
|
-
sheet.seal();
|
|
403
|
-
}
|
|
404
|
-
};
|
|
63
|
+
}));
|
|
405
64
|
|
|
406
65
|
//# sourceMappingURL=extractWorkspaceManifest.js.map
|