@sanity/cli 6.0.0-alpha.17 → 6.0.0-alpha.19
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 +833 -912
- package/dist/SanityHelp.js +74 -21
- package/dist/SanityHelp.js.map +1 -1
- package/dist/actions/build/buildApp.js +42 -15
- package/dist/actions/build/buildApp.js.map +1 -1
- package/dist/actions/build/buildStudio.js +21 -9
- package/dist/actions/build/buildStudio.js.map +1 -1
- package/dist/actions/build/buildVendorDependencies.js +3 -16
- package/dist/actions/build/buildVendorDependencies.js.map +1 -1
- package/dist/actions/build/checkStudioDependencyVersions.js +7 -7
- 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/renderDocumentWorker/components/GlobalErrorHandler.js +1 -0
- package/dist/actions/build/renderDocumentWorker/components/GlobalErrorHandler.js.map +1 -1
- package/dist/actions/build/types.js.map +1 -1
- package/dist/actions/build/writeSanityRuntime.js +4 -3
- package/dist/actions/build/writeSanityRuntime.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/resolveDataset.js +26 -0
- package/dist/actions/dataset/resolveDataset.js.map +1 -0
- package/dist/actions/deploy/deployApp.js +1 -8
- package/dist/actions/deploy/deployApp.js.map +1 -1
- package/dist/actions/deploy/deployStudio.js +1 -0
- package/dist/actions/deploy/deployStudio.js.map +1 -1
- 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 +12 -12
- package/dist/actions/dev/startStudioDevServer.js.map +1 -1
- 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 +2 -2
- 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/graphql/SchemaError.js +1 -1
- 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 +2 -1
- package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -1
- 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/gen2/generateTypeQueries.js +1 -1
- package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/gen3/generateTypeQueries.js +1 -1
- package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.js +2 -10
- package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.worker.js +1 -1
- package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -1
- package/dist/actions/graphql/types.js.map +1 -1
- package/dist/actions/init/bootstrapLocalTemplate.js +1 -1
- package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
- package/dist/actions/manifest/extractAppManifest.js.map +1 -1
- package/dist/actions/manifest/extractManifest.js +1 -22
- package/dist/actions/manifest/extractManifest.js.map +1 -1
- package/dist/actions/manifest/types.js.map +1 -1
- package/dist/actions/schema/deploySchemas.js +57 -80
- package/dist/actions/schema/deploySchemas.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/extractSchemaWatcher.js +9 -7
- package/dist/actions/schema/extractSchemaWatcher.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.map +1 -1
- package/dist/actions/schema/types.js +4 -0
- package/dist/actions/schema/types.js.map +1 -1
- package/dist/actions/schema/utils/schemaStoreValidation.js +1 -7
- 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/watchExtractSchema.js +2 -1
- package/dist/actions/schema/watchExtractSchema.js.map +1 -1
- package/dist/actions/versions/getFormatters.js +1 -1
- package/dist/actions/versions/getFormatters.js.map +1 -1
- package/dist/commands/backup/disable.js +0 -6
- package/dist/commands/backup/disable.js.map +1 -1
- package/dist/commands/backup/download.js +0 -6
- package/dist/commands/backup/download.js.map +1 -1
- package/dist/commands/backup/enable.js +0 -6
- package/dist/commands/backup/enable.js.map +1 -1
- package/dist/commands/backup/list.js +4 -7
- package/dist/commands/backup/list.js.map +1 -1
- package/dist/commands/cors/add.js +0 -6
- package/dist/commands/cors/add.js.map +1 -1
- package/dist/commands/cors/delete.js +0 -6
- package/dist/commands/cors/delete.js.map +1 -1
- package/dist/commands/cors/list.js +0 -6
- package/dist/commands/cors/list.js.map +1 -1
- package/dist/commands/dataset/alias/create.js +23 -7
- package/dist/commands/dataset/alias/create.js.map +1 -1
- package/dist/commands/dataset/alias/delete.js +17 -7
- package/dist/commands/dataset/alias/delete.js.map +1 -1
- package/dist/commands/dataset/alias/link.js +17 -7
- package/dist/commands/dataset/alias/link.js.map +1 -1
- package/dist/commands/dataset/alias/unlink.js +17 -7
- package/dist/commands/dataset/alias/unlink.js.map +1 -1
- package/dist/commands/dataset/copy.js +42 -30
- package/dist/commands/dataset/copy.js.map +1 -1
- package/dist/commands/dataset/create.js +29 -7
- package/dist/commands/dataset/create.js.map +1 -1
- package/dist/commands/dataset/delete.js +13 -7
- package/dist/commands/dataset/delete.js.map +1 -1
- package/dist/commands/dataset/embeddings/disable.js +74 -0
- package/dist/commands/dataset/embeddings/disable.js.map +1 -0
- package/dist/commands/dataset/embeddings/enable.js +138 -0
- package/dist/commands/dataset/embeddings/enable.js.map +1 -0
- package/dist/commands/dataset/embeddings/status.js +69 -0
- package/dist/commands/dataset/embeddings/status.js.map +1 -0
- package/dist/commands/dataset/export.js +30 -18
- package/dist/commands/dataset/export.js.map +1 -1
- package/dist/commands/dataset/list.js +19 -7
- package/dist/commands/dataset/list.js.map +1 -1
- package/dist/commands/dataset/visibility/get.js +15 -7
- package/dist/commands/dataset/visibility/get.js.map +1 -1
- package/dist/commands/dataset/visibility/set.js +19 -7
- package/dist/commands/dataset/visibility/set.js.map +1 -1
- package/dist/commands/debug.js +2 -1
- package/dist/commands/debug.js.map +1 -1
- package/dist/commands/documents/create.js +2 -7
- package/dist/commands/documents/create.js.map +1 -1
- package/dist/commands/documents/delete.js +0 -6
- package/dist/commands/documents/delete.js.map +1 -1
- package/dist/commands/documents/get.js +0 -6
- package/dist/commands/documents/get.js.map +1 -1
- package/dist/commands/documents/query.js +0 -6
- package/dist/commands/documents/query.js.map +1 -1
- package/dist/commands/graphql/deploy.js +1 -1
- package/dist/commands/graphql/deploy.js.map +1 -1
- package/dist/commands/graphql/list.js +0 -6
- package/dist/commands/graphql/list.js.map +1 -1
- package/dist/commands/graphql/undeploy.js +0 -6
- package/dist/commands/graphql/undeploy.js.map +1 -1
- package/dist/commands/hook/attempt.js +0 -6
- package/dist/commands/hook/attempt.js.map +1 -1
- package/dist/commands/hook/create.js +0 -6
- package/dist/commands/hook/create.js.map +1 -1
- package/dist/commands/hook/delete.js +0 -6
- package/dist/commands/hook/delete.js.map +1 -1
- package/dist/commands/hook/list.js +0 -6
- package/dist/commands/hook/list.js.map +1 -1
- package/dist/commands/hook/logs.js +1 -7
- package/dist/commands/hook/logs.js.map +1 -1
- package/dist/commands/init.js +13 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/manage.js +0 -1
- package/dist/commands/manage.js.map +1 -1
- package/dist/commands/media/create-aspect.js +1 -1
- package/dist/commands/media/create-aspect.js.map +1 -1
- package/dist/commands/media/delete-aspect.js +0 -6
- package/dist/commands/media/delete-aspect.js.map +1 -1
- package/dist/commands/media/deploy-aspect.js +1 -6
- package/dist/commands/media/deploy-aspect.js.map +1 -1
- package/dist/commands/media/export.js +0 -6
- package/dist/commands/media/export.js.map +1 -1
- package/dist/commands/media/import.js +0 -6
- package/dist/commands/media/import.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 +0 -6
- package/dist/commands/schema/delete.js.map +1 -1
- package/dist/commands/schema/deploy.js +11 -27
- package/dist/commands/schema/deploy.js.map +1 -1
- package/dist/commands/tokens/add.js +0 -6
- package/dist/commands/tokens/add.js.map +1 -1
- package/dist/commands/tokens/delete.js +0 -6
- package/dist/commands/tokens/delete.js.map +1 -1
- package/dist/commands/tokens/list.js +0 -6
- package/dist/commands/tokens/list.js.map +1 -1
- package/dist/commands/users/invite.js +0 -6
- package/dist/commands/users/invite.js.map +1 -1
- package/dist/commands/users/list.js +1 -7
- 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/exports/index.d.ts +62 -2
- package/dist/exports/index.js.map +1 -1
- package/dist/prompts/promptForProject.js +64 -0
- package/dist/prompts/promptForProject.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/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/datasets.js +7 -5
- package/dist/services/datasets.js.map +1 -1
- package/dist/services/embeddings.js +25 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/grants.js +13 -0
- package/dist/services/grants.js.map +1 -0
- package/dist/services/graphql.js.map +1 -1
- package/dist/services/schemas.js +1 -1
- package/dist/services/schemas.js.map +1 -1
- package/dist/types/grants.js +3 -0
- package/dist/types/grants.js.map +1 -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/compareDependencyVersions.js +28 -7
- package/dist/util/compareDependencyVersions.js.map +1 -1
- package/dist/util/errorMessages.js +0 -1
- package/dist/util/errorMessages.js.map +1 -1
- package/dist/util/getSharedServerConfig.js +1 -0
- package/dist/util/getSharedServerConfig.js.map +1 -1
- package/dist/util/packageManager/getPeerDependencies.js +44 -0
- package/dist/util/packageManager/getPeerDependencies.js.map +1 -0
- package/dist/util/sharedFlags.js +19 -0
- package/dist/util/sharedFlags.js.map +1 -0
- package/dist/util/toForwardSlashes.js +8 -0
- package/dist/util/toForwardSlashes.js.map +1 -0
- package/oclif.manifest.json +639 -379
- package/package.json +23 -22
- 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 -29
- 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/util/workerChannels.js +0 -172
- package/dist/util/workerChannels.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/graphql/list.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {getProjectCliClient, SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {\n GRAPHQL_API_VERSION,\n type GraphQLEndpoint,\n listGraphQLEndpoints,\n} from '../../services/graphql.js'\
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/graphql/list.ts"],"sourcesContent":["import {styleText} from 'node:util'\n\nimport {getProjectCliClient, SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {\n GRAPHQL_API_VERSION,\n type GraphQLEndpoint,\n listGraphQLEndpoints,\n} from '../../services/graphql.js'\n\nconst listGraphQLDebug = subdebug('graphql:list')\n\nexport class List extends SanityCommand<typeof List> {\n static override description = 'List all GraphQL endpoints deployed for this project'\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'List GraphQL endpoints for the current project',\n },\n ]\n\n public async run(): Promise<void> {\n await this.parse(List)\n\n const projectId = await this.getProjectId()\n\n let endpoints: GraphQLEndpoint[] | undefined\n try {\n endpoints = await listGraphQLEndpoints(projectId)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n\n listGraphQLDebug(`Error fetching GraphQL endpoints for project ${projectId}`, error)\n this.error(`GraphQL endpoints list retrieval failed:\\n${message}`, {exit: 1})\n }\n\n if (!endpoints || endpoints.length === 0) {\n this.log(\"This project doesn't have any GraphQL endpoints deployed.\")\n return\n }\n\n const client = await getProjectCliClient({\n apiVersion: GRAPHQL_API_VERSION,\n projectId,\n })\n\n this.log('Here are the GraphQL endpoints deployed for this project:')\n for (const [index, endpoint] of endpoints.entries()) {\n const {dataset, tag} = endpoint\n const url = client.getUrl(`/graphql/${dataset}/${tag}`)\n\n this.log(`${index + 1}. ${styleText('bold', 'Dataset:')} ${dataset}`)\n this.log(` ${styleText('bold', 'Tag:')} ${tag}`)\n this.log(` ${styleText('bold', 'Generation:')} ${endpoint.generation}`)\n this.log(` ${styleText('bold', 'Playground:')} ${endpoint.playgroundEnabled}`)\n this.log(` ${styleText('bold', 'URL:')} ${url}\\n`)\n }\n }\n}\n"],"names":["styleText","getProjectCliClient","SanityCommand","subdebug","GRAPHQL_API_VERSION","listGraphQLEndpoints","listGraphQLDebug","List","description","examples","command","run","parse","projectId","getProjectId","endpoints","error","message","Error","String","exit","length","log","client","apiVersion","index","endpoint","entries","dataset","tag","url","getUrl","generation","playgroundEnabled"],"mappings":"AAAA,SAAQA,SAAS,QAAO,YAAW;AAEnC,SAAQC,mBAAmB,EAAEC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AAE7E,SACEC,mBAAmB,EAEnBC,oBAAoB,QACf,4BAA2B;AAElC,MAAMC,mBAAmBH,SAAS;AAElC,OAAO,MAAMI,aAAaL;IACxB,OAAgBM,cAAc,uDAAsD;IACpF,OAAgBC,WAAW;QACzB;YACEC,SAAS;YACTF,aAAa;QACf;KACD,CAAA;IAED,MAAaG,MAAqB;QAChC,MAAM,IAAI,CAACC,KAAK,CAACL;QAEjB,MAAMM,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,IAAIC;QACJ,IAAI;YACFA,YAAY,MAAMV,qBAAqBQ;QACzC,EAAE,OAAOG,OAAO;YACd,MAAMC,UAAUD,iBAAiBE,QAAQF,MAAMC,OAAO,GAAGE,OAAOH;YAEhEV,iBAAiB,CAAC,6CAA6C,EAAEO,WAAW,EAAEG;YAC9E,IAAI,CAACA,KAAK,CAAC,CAAC,0CAA0C,EAAEC,SAAS,EAAE;gBAACG,MAAM;YAAC;QAC7E;QAEA,IAAI,CAACL,aAAaA,UAAUM,MAAM,KAAK,GAAG;YACxC,IAAI,CAACC,GAAG,CAAC;YACT;QACF;QAEA,MAAMC,SAAS,MAAMtB,oBAAoB;YACvCuB,YAAYpB;YACZS;QACF;QAEA,IAAI,CAACS,GAAG,CAAC;QACT,KAAK,MAAM,CAACG,OAAOC,SAAS,IAAIX,UAAUY,OAAO,GAAI;YACnD,MAAM,EAACC,OAAO,EAAEC,GAAG,EAAC,GAAGH;YACvB,MAAMI,MAAMP,OAAOQ,MAAM,CAAC,CAAC,SAAS,EAAEH,QAAQ,CAAC,EAAEC,KAAK;YAEtD,IAAI,CAACP,GAAG,CAAC,GAAGG,QAAQ,EAAE,GAAG,EAAEzB,UAAU,QAAQ,YAAY,KAAK,EAAE4B,SAAS;YACzE,IAAI,CAACN,GAAG,CAAC,CAAC,IAAI,EAAEtB,UAAU,QAAQ,QAAQ,SAAS,EAAE6B,KAAK;YAC1D,IAAI,CAACP,GAAG,CAAC,CAAC,IAAI,EAAEtB,UAAU,QAAQ,eAAe,EAAE,EAAE0B,SAASM,UAAU,EAAE;YAC1E,IAAI,CAACV,GAAG,CAAC,CAAC,IAAI,EAAEtB,UAAU,QAAQ,eAAe,EAAE,EAAE0B,SAASO,iBAAiB,EAAE;YACjF,IAAI,CAACX,GAAG,CAAC,CAAC,IAAI,EAAEtB,UAAU,QAAQ,QAAQ,EAAE,EAAE8B,IAAI,EAAE,CAAC;QACvD;IACF;AACF"}
|
|
@@ -3,7 +3,6 @@ import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
|
3
3
|
import { confirm } from '@sanity/cli-core/ux';
|
|
4
4
|
import { getGraphQLAPIs } from '../../actions/graphql/getGraphQLAPIs.js';
|
|
5
5
|
import { deleteGraphQLAPI } from '../../services/graphql.js';
|
|
6
|
-
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
7
6
|
const undeployGraphqlDebug = subdebug('graphql:undeploy');
|
|
8
7
|
export class Undeploy extends SanityCommand {
|
|
9
8
|
static description = 'Remove a deployed GraphQL API';
|
|
@@ -87,11 +86,6 @@ export class Undeploy extends SanityCommand {
|
|
|
87
86
|
// Get projectId from config if not specified
|
|
88
87
|
if (!projectId) {
|
|
89
88
|
projectId = await this.getProjectId();
|
|
90
|
-
if (!projectId) {
|
|
91
|
-
this.error(NO_PROJECT_ID, {
|
|
92
|
-
exit: 1
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
89
|
}
|
|
96
90
|
// Get dataset from CLI config if not specified
|
|
97
91
|
if (!dataset) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/graphql/undeploy.ts"],"sourcesContent":["import {Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {confirm} from '@sanity/cli-core/ux'\n\nimport {getGraphQLAPIs} from '../../actions/graphql/getGraphQLAPIs.js'\nimport {deleteGraphQLAPI} from '../../services/graphql.js'\
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/graphql/undeploy.ts"],"sourcesContent":["import {Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {confirm} from '@sanity/cli-core/ux'\n\nimport {getGraphQLAPIs} from '../../actions/graphql/getGraphQLAPIs.js'\nimport {deleteGraphQLAPI} from '../../services/graphql.js'\n\nconst undeployGraphqlDebug = subdebug('graphql:undeploy')\n\nexport class Undeploy extends SanityCommand<typeof Undeploy> {\n static override description = 'Remove a deployed GraphQL API'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Undeploy GraphQL API for current project and dataset',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --api ios',\n description: 'Undeploy API with ID \"ios\"',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --dataset staging',\n description: 'Undeploy GraphQL API for staging dataset',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --dataset staging --tag next',\n description: 'Undeploy GraphQL API for staging dataset with \"next\" tag',\n },\n {\n command: '<%= config.bin %> <%= command.id %> --force',\n description: 'Undeploy GraphQL API without confirmation prompt',\n },\n ]\n\n static override flags = {\n api: Flags.string({\n description: 'Undeploy API with this ID (project, dataset and tag flags take precedence)',\n required: false,\n }),\n dataset: Flags.string({\n description: 'Dataset to undeploy GraphQL API from',\n required: false,\n }),\n force: Flags.boolean({\n description: 'Skip confirmation prompt',\n required: false,\n }),\n project: Flags.string({\n description: 'Project ID to delete GraphQL API for',\n required: false,\n }),\n tag: Flags.string({\n default: 'default',\n description: 'Tag to undeploy GraphQL API from',\n required: false,\n }),\n }\n\n public async run(): Promise<void> {\n const {flags} = await this.parse(Undeploy)\n const {api: apiFlag, dataset: datasetFlag, force, project: projectFlag, tag: tagFlag} = flags\n\n let projectId = projectFlag\n let dataset = datasetFlag\n let tag = tagFlag\n\n // If specifying --api, use it for the flags not provided\n if (apiFlag) {\n const workDir = process.cwd()\n const apiDefs = await getGraphQLAPIs(workDir)\n const apiDef = apiDefs.find((def) => def.id === apiFlag)\n\n if (!apiDef) {\n this.error(`GraphQL API \"${apiFlag}\" not found`, {exit: 1})\n }\n\n if (projectId && projectId !== apiDef.projectId) {\n this.warn(`Both --api and --project specified, using --project ${projectId}`)\n } else {\n projectId = apiDef.projectId\n }\n\n if (dataset && dataset !== apiDef.dataset) {\n this.warn(`Both --api and --dataset specified, using --dataset ${dataset}`)\n } else {\n dataset = apiDef.dataset\n }\n\n if (tag && tag !== 'default' && apiDef.tag && tag !== apiDef.tag) {\n this.warn(`Both --api and --tag specified, using --tag ${tag}`)\n } else {\n tag = apiDef.tag || 'default'\n }\n }\n\n // Get projectId from config if not specified\n if (!projectId) {\n projectId = await this.getProjectId()\n }\n\n // Get dataset from CLI config if not specified\n if (!dataset) {\n const cliConfig = await this.getCliConfig()\n dataset = cliConfig.api?.dataset\n }\n\n if (!dataset) {\n this.error(\n 'Dataset is required. Specify it with --dataset or configure it in your project.',\n {\n exit: 1,\n },\n )\n }\n\n // Confirm deletion unless --force is used\n if (!force) {\n const confirmMessage =\n tag === 'default'\n ? `Are you absolutely sure you want to delete the current GraphQL API connected to the \"${dataset}\" dataset in project ${projectId}?`\n : `Are you absolutely sure you want to delete the GraphQL API connected to the \"${dataset}\" dataset in project ${projectId}, tagged \"${tag}\"?`\n\n try {\n const confirmed = await confirm({\n default: false,\n message: confirmMessage,\n })\n\n if (!confirmed) {\n this.log('Operation cancelled')\n return\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(`${error}`)\n undeployGraphqlDebug('User cancelled', err)\n this.error('Operation cancelled', {exit: 1})\n }\n }\n\n try {\n await deleteGraphQLAPI({\n dataset,\n projectId,\n tag,\n })\n\n this.log('GraphQL API deleted')\n } catch (error) {\n const err = error instanceof Error ? error : new Error(`${error}`)\n undeployGraphqlDebug(`Error deleting GraphQL API for ${dataset}/${tag}`, err)\n this.error(`GraphQL API deletion failed:\\n${err.message}`, {exit: 1})\n }\n }\n}\n"],"names":["Flags","SanityCommand","subdebug","confirm","getGraphQLAPIs","deleteGraphQLAPI","undeployGraphqlDebug","Undeploy","description","examples","command","flags","api","string","required","dataset","force","boolean","project","tag","default","run","parse","apiFlag","datasetFlag","projectFlag","tagFlag","projectId","workDir","process","cwd","apiDefs","apiDef","find","def","id","error","exit","warn","getProjectId","cliConfig","getCliConfig","confirmMessage","confirmed","message","log","err","Error"],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { Args } from '@oclif/core';
|
|
|
2
2
|
import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
3
3
|
import { formatFailure } from '../../actions/hook/formatFailure.js';
|
|
4
4
|
import { getHookAttempt } from '../../services/hooks.js';
|
|
5
|
-
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
6
5
|
const attemptDebug = subdebug('hook:attempt');
|
|
7
6
|
export class AttemptHookCommand extends SanityCommand {
|
|
8
7
|
static args = {
|
|
@@ -22,11 +21,6 @@ export class AttemptHookCommand extends SanityCommand {
|
|
|
22
21
|
const { args } = await this.parse(AttemptHookCommand);
|
|
23
22
|
const { attemptId } = args;
|
|
24
23
|
const projectId = await this.getProjectId();
|
|
25
|
-
if (!projectId) {
|
|
26
|
-
this.error(NO_PROJECT_ID, {
|
|
27
|
-
exit: 1
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
24
|
let attempt;
|
|
31
25
|
try {
|
|
32
26
|
attempt = await getHookAttempt({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/hook/attempt.ts"],"sourcesContent":["import {Args} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {formatFailure} from '../../actions/hook/formatFailure.js'\nimport {type DeliveryAttempt} from '../../actions/hook/types.js'\nimport {getHookAttempt} from '../../services/hooks.js'\
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/hook/attempt.ts"],"sourcesContent":["import {Args} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {formatFailure} from '../../actions/hook/formatFailure.js'\nimport {type DeliveryAttempt} from '../../actions/hook/types.js'\nimport {getHookAttempt} from '../../services/hooks.js'\n\nconst attemptDebug = subdebug('hook:attempt')\n\nexport class AttemptHookCommand extends SanityCommand<typeof AttemptHookCommand> {\n static override args = {\n attemptId: Args.string({\n description: 'The delivery attempt ID to get details for',\n required: true,\n }),\n }\n static override description = 'Print details of a given webhook delivery attempt'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %> abc123',\n description: 'Print details of webhook delivery attempt with ID abc123',\n },\n ]\n\n public async run() {\n const {args} = await this.parse(AttemptHookCommand)\n const {attemptId} = args\n\n const projectId = await this.getProjectId()\n\n let attempt: DeliveryAttempt\n try {\n attempt = await getHookAttempt({attemptId, projectId})\n } catch (error) {\n const err = error as Error\n attemptDebug(`Error fetching hook attempt ${attemptId}`, err)\n this.error(`Hook attempt retrieval failed:\\n${err.message}`, {exit: 1})\n }\n\n const {createdAt, failureReason, inProgress, resultBody, resultCode} = attempt\n\n this.log(`Date: ${createdAt}`)\n this.log(`Status: ${this.getStatus(attempt)}`)\n this.log(`Status code: ${resultCode}`)\n\n if (attempt.isFailure) {\n this.log(`Failure: ${formatFailure(attempt)}`)\n }\n\n if (!inProgress && (!failureReason || failureReason === 'http')) {\n const body = resultBody ? `\\n---\\n${resultBody}\\n---\\n` : '<empty>'\n this.log(`Response body: ${body}`)\n }\n }\n\n private getStatus(attempt: DeliveryAttempt): string {\n if (attempt.isFailure) {\n return 'Failed'\n }\n\n if (attempt.inProgress) {\n return 'In progress'\n }\n\n return 'Delivered'\n }\n}\n"],"names":["Args","SanityCommand","subdebug","formatFailure","getHookAttempt","attemptDebug","AttemptHookCommand","args","attemptId","string","description","required","examples","command","run","parse","projectId","getProjectId","attempt","error","err","message","exit","createdAt","failureReason","inProgress","resultBody","resultCode","log","getStatus","isFailure","body"],"mappings":"AAAA,SAAQA,IAAI,QAAO,cAAa;AAChC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AAExD,SAAQC,aAAa,QAAO,sCAAqC;AAEjE,SAAQC,cAAc,QAAO,0BAAyB;AAEtD,MAAMC,eAAeH,SAAS;AAE9B,OAAO,MAAMI,2BAA2BL;IACtC,OAAgBM,OAAO;QACrBC,WAAWR,KAAKS,MAAM,CAAC;YACrBC,aAAa;YACbC,UAAU;QACZ;IACF,EAAC;IACD,OAAgBD,cAAc,oDAAmD;IAEjF,OAAgBE,WAAW;QACzB;YACEC,SAAS;YACTH,aAAa;QACf;KACD,CAAA;IAED,MAAaI,MAAM;QACjB,MAAM,EAACP,IAAI,EAAC,GAAG,MAAM,IAAI,CAACQ,KAAK,CAACT;QAChC,MAAM,EAACE,SAAS,EAAC,GAAGD;QAEpB,MAAMS,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,IAAIC;QACJ,IAAI;YACFA,UAAU,MAAMd,eAAe;gBAACI;gBAAWQ;YAAS;QACtD,EAAE,OAAOG,OAAO;YACd,MAAMC,MAAMD;YACZd,aAAa,CAAC,4BAA4B,EAAEG,WAAW,EAAEY;YACzD,IAAI,CAACD,KAAK,CAAC,CAAC,gCAAgC,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QACvE;QAEA,MAAM,EAACC,SAAS,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAEC,UAAU,EAAC,GAAGT;QAEvE,IAAI,CAACU,GAAG,CAAC,CAAC,MAAM,EAAEL,WAAW;QAC7B,IAAI,CAACK,GAAG,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACC,SAAS,CAACX,UAAU;QAC7C,IAAI,CAACU,GAAG,CAAC,CAAC,aAAa,EAAED,YAAY;QAErC,IAAIT,QAAQY,SAAS,EAAE;YACrB,IAAI,CAACF,GAAG,CAAC,CAAC,SAAS,EAAEzB,cAAce,UAAU;QAC/C;QAEA,IAAI,CAACO,cAAe,CAAA,CAACD,iBAAiBA,kBAAkB,MAAK,GAAI;YAC/D,MAAMO,OAAOL,aAAa,CAAC,OAAO,EAAEA,WAAW,OAAO,CAAC,GAAG;YAC1D,IAAI,CAACE,GAAG,CAAC,CAAC,eAAe,EAAEG,MAAM;QACnC;IACF;IAEQF,UAAUX,OAAwB,EAAU;QAClD,IAAIA,QAAQY,SAAS,EAAE;YACrB,OAAO;QACT;QAEA,IAAIZ,QAAQO,UAAU,EAAE;YACtB,OAAO;QACT;QAEA,OAAO;IACT;AACF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { getSanityUrl, SanityCommand, subdebug } from '@sanity/cli-core';
|
|
2
2
|
import open from 'open';
|
|
3
3
|
import { getProjectById } from '../../services/projects.js';
|
|
4
|
-
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
5
4
|
const createHookDebug = subdebug('hook:create');
|
|
6
5
|
export class CreateHookCommand extends SanityCommand {
|
|
7
6
|
static description = 'Create a new webhook for the current project';
|
|
@@ -13,11 +12,6 @@ export class CreateHookCommand extends SanityCommand {
|
|
|
13
12
|
];
|
|
14
13
|
async run() {
|
|
15
14
|
const projectId = await this.getProjectId();
|
|
16
|
-
if (!projectId) {
|
|
17
|
-
this.error(NO_PROJECT_ID, {
|
|
18
|
-
exit: 1
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
15
|
let projectInfo;
|
|
22
16
|
try {
|
|
23
17
|
projectInfo = await getProjectById(projectId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/hook/create.ts"],"sourcesContent":["import {getSanityUrl, SanityCommand, subdebug} from '@sanity/cli-core'\nimport open from 'open'\n\nimport {getProjectById} from '../../services/projects.js'\
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/hook/create.ts"],"sourcesContent":["import {getSanityUrl, SanityCommand, subdebug} from '@sanity/cli-core'\nimport open from 'open'\n\nimport {getProjectById} from '../../services/projects.js'\n\nconst createHookDebug = subdebug('hook:create')\n\nexport class CreateHookCommand extends SanityCommand<typeof CreateHookCommand> {\n static override description = 'Create a new webhook for the current project'\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Create a new webhook for the current project',\n },\n ]\n\n public async run() {\n const projectId = await this.getProjectId()\n\n let projectInfo: {organizationId?: string | null}\n try {\n projectInfo = await getProjectById(projectId)\n } catch (error) {\n const err = error as Error\n createHookDebug(`Error fetching project info for project ${projectId}`, err)\n this.error(`Failed to fetch project information:\\n${err.message}`, {exit: 1})\n }\n\n const organizationId = projectInfo.organizationId || 'personal'\n const manageUrl = `${getSanityUrl()}/organizations/${organizationId}/project/${projectId}/api/webhooks/new`\n\n this.log(`Opening ${manageUrl}`)\n\n try {\n await open(manageUrl)\n } catch (error) {\n const err = error as Error\n createHookDebug('Error opening browser', err)\n this.error(`Failed to open browser:\\n${err.message}`, {exit: 1})\n }\n }\n}\n"],"names":["getSanityUrl","SanityCommand","subdebug","open","getProjectById","createHookDebug","CreateHookCommand","description","examples","command","run","projectId","getProjectId","projectInfo","error","err","message","exit","organizationId","manageUrl","log"],"mappings":"AAAA,SAAQA,YAAY,EAAEC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACtE,OAAOC,UAAU,OAAM;AAEvB,SAAQC,cAAc,QAAO,6BAA4B;AAEzD,MAAMC,kBAAkBH,SAAS;AAEjC,OAAO,MAAMI,0BAA0BL;IACrC,OAAgBM,cAAc,+CAA8C;IAC5E,OAAgBC,WAAW;QACzB;YACEC,SAAS;YACTF,aAAa;QACf;KACD,CAAA;IAED,MAAaG,MAAM;QACjB,MAAMC,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,IAAIC;QACJ,IAAI;YACFA,cAAc,MAAMT,eAAeO;QACrC,EAAE,OAAOG,OAAO;YACd,MAAMC,MAAMD;YACZT,gBAAgB,CAAC,wCAAwC,EAAEM,WAAW,EAAEI;YACxE,IAAI,CAACD,KAAK,CAAC,CAAC,sCAAsC,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QAC7E;QAEA,MAAMC,iBAAiBL,YAAYK,cAAc,IAAI;QACrD,MAAMC,YAAY,GAAGnB,eAAe,eAAe,EAAEkB,eAAe,SAAS,EAAEP,UAAU,iBAAiB,CAAC;QAE3G,IAAI,CAACS,GAAG,CAAC,CAAC,QAAQ,EAAED,WAAW;QAE/B,IAAI;YACF,MAAMhB,KAAKgB;QACb,EAAE,OAAOL,OAAO;YACd,MAAMC,MAAMD;YACZT,gBAAgB,yBAAyBU;YACzC,IAAI,CAACD,KAAK,CAAC,CAAC,yBAAyB,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QAChE;IACF;AACF"}
|
|
@@ -2,7 +2,6 @@ import { Args } from '@oclif/core';
|
|
|
2
2
|
import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
3
3
|
import { select } from '@sanity/cli-core/ux';
|
|
4
4
|
import { deleteHookForProject, listHooksForProject } from '../../services/hooks.js';
|
|
5
|
-
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
6
5
|
const deleteHookDebug = subdebug('hook:delete');
|
|
7
6
|
export class Delete extends SanityCommand {
|
|
8
7
|
static args = {
|
|
@@ -25,11 +24,6 @@ export class Delete extends SanityCommand {
|
|
|
25
24
|
async run() {
|
|
26
25
|
const { args } = await this.parse(Delete);
|
|
27
26
|
const projectId = await this.getProjectId();
|
|
28
|
-
if (!projectId) {
|
|
29
|
-
this.error(NO_PROJECT_ID, {
|
|
30
|
-
exit: 1
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
27
|
// Get the hook ID to delete
|
|
34
28
|
const hookId = await this.promptForHook(args.name, projectId);
|
|
35
29
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/hook/delete.ts"],"sourcesContent":["import {Args} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {select} from '@sanity/cli-core/ux'\n\nimport {type Hook} from '../../actions/hook/types'\nimport {deleteHookForProject, listHooksForProject} from '../../services/hooks.js'\
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/hook/delete.ts"],"sourcesContent":["import {Args} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {select} from '@sanity/cli-core/ux'\n\nimport {type Hook} from '../../actions/hook/types'\nimport {deleteHookForProject, listHooksForProject} from '../../services/hooks.js'\n\nconst deleteHookDebug = subdebug('hook:delete')\n\nexport class Delete extends SanityCommand<typeof Delete> {\n static override args = {\n name: Args.string({\n description: 'Name of hook to delete (will prompt if not provided)',\n required: false,\n }),\n }\n\n static override description = 'Delete a hook within your project'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'Interactively select and delete a hook',\n },\n {\n command: '<%= config.bin %> <%= command.id %> my-hook',\n description: 'Delete a specific hook by name',\n },\n ]\n\n public async run(): Promise<void> {\n const {args} = await this.parse(Delete)\n\n const projectId = await this.getProjectId()\n\n // Get the hook ID to delete\n const hookId = await this.promptForHook(args.name, projectId)\n\n try {\n await deleteHookForProject(projectId, hookId)\n\n this.log('Hook deleted')\n } catch (error) {\n const err = error as Error\n deleteHookDebug(`Error deleting hook ${hookId} for project ${projectId}`, err)\n this.error(`Hook deletion failed:\\n${err.message}`, {exit: 1})\n }\n }\n\n private async promptForHook(\n specifiedName: string | undefined,\n projectId: string,\n ): Promise<string> {\n let hooks: Hook[]\n try {\n hooks = await listHooksForProject(projectId)\n } catch (error) {\n const err = error as Error\n deleteHookDebug(`Error fetching hooks for project ${projectId}`, err)\n this.error(`Failed to fetch hooks:\\n${err.message}`, {exit: 1})\n }\n\n if (hooks.length === 0) {\n this.error('No hooks configured for this project.', {exit: 1})\n }\n\n // If hook name is specified, find it in the list\n if (specifiedName) {\n const specifiedNameLower = specifiedName.toLowerCase()\n const selectedHook = hooks.find((hook) => hook.name.toLowerCase() === specifiedNameLower)\n\n if (!selectedHook) {\n this.error(`Hook with name \"${specifiedName}\" not found`, {exit: 1})\n }\n\n return selectedHook.id\n }\n\n // If no hook name specified, prompt user to select one\n const choices = hooks.map((hook) => ({\n name: hook.name,\n value: hook.id,\n }))\n\n const selectedId = await select({\n choices,\n message: 'Select hook to delete',\n })\n\n return selectedId\n }\n}\n"],"names":["Args","SanityCommand","subdebug","select","deleteHookForProject","listHooksForProject","deleteHookDebug","Delete","args","name","string","description","required","examples","command","run","parse","projectId","getProjectId","hookId","promptForHook","log","error","err","message","exit","specifiedName","hooks","length","specifiedNameLower","toLowerCase","selectedHook","find","hook","id","choices","map","value","selectedId"],"mappings":"AAAA,SAAQA,IAAI,QAAO,cAAa;AAChC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACxD,SAAQC,MAAM,QAAO,sBAAqB;AAG1C,SAAQC,oBAAoB,EAAEC,mBAAmB,QAAO,0BAAyB;AAEjF,MAAMC,kBAAkBJ,SAAS;AAEjC,OAAO,MAAMK,eAAeN;IAC1B,OAAgBO,OAAO;QACrBC,MAAMT,KAAKU,MAAM,CAAC;YAChBC,aAAa;YACbC,UAAU;QACZ;IACF,EAAC;IAED,OAAgBD,cAAc,oCAAmC;IAEjE,OAAgBE,WAAW;QACzB;YACEC,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;KACD,CAAA;IAED,MAAaI,MAAqB;QAChC,MAAM,EAACP,IAAI,EAAC,GAAG,MAAM,IAAI,CAACQ,KAAK,CAACT;QAEhC,MAAMU,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,4BAA4B;QAC5B,MAAMC,SAAS,MAAM,IAAI,CAACC,aAAa,CAACZ,KAAKC,IAAI,EAAEQ;QAEnD,IAAI;YACF,MAAMb,qBAAqBa,WAAWE;YAEtC,IAAI,CAACE,GAAG,CAAC;QACX,EAAE,OAAOC,OAAO;YACd,MAAMC,MAAMD;YACZhB,gBAAgB,CAAC,oBAAoB,EAAEa,OAAO,aAAa,EAAEF,WAAW,EAAEM;YAC1E,IAAI,CAACD,KAAK,CAAC,CAAC,uBAAuB,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QAC9D;IACF;IAEA,MAAcL,cACZM,aAAiC,EACjCT,SAAiB,EACA;QACjB,IAAIU;QACJ,IAAI;YACFA,QAAQ,MAAMtB,oBAAoBY;QACpC,EAAE,OAAOK,OAAO;YACd,MAAMC,MAAMD;YACZhB,gBAAgB,CAAC,iCAAiC,EAAEW,WAAW,EAAEM;YACjE,IAAI,CAACD,KAAK,CAAC,CAAC,wBAAwB,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QAC/D;QAEA,IAAIE,MAAMC,MAAM,KAAK,GAAG;YACtB,IAAI,CAACN,KAAK,CAAC,yCAAyC;gBAACG,MAAM;YAAC;QAC9D;QAEA,iDAAiD;QACjD,IAAIC,eAAe;YACjB,MAAMG,qBAAqBH,cAAcI,WAAW;YACpD,MAAMC,eAAeJ,MAAMK,IAAI,CAAC,CAACC,OAASA,KAAKxB,IAAI,CAACqB,WAAW,OAAOD;YAEtE,IAAI,CAACE,cAAc;gBACjB,IAAI,CAACT,KAAK,CAAC,CAAC,gBAAgB,EAAEI,cAAc,WAAW,CAAC,EAAE;oBAACD,MAAM;gBAAC;YACpE;YAEA,OAAOM,aAAaG,EAAE;QACxB;QAEA,uDAAuD;QACvD,MAAMC,UAAUR,MAAMS,GAAG,CAAC,CAACH,OAAU,CAAA;gBACnCxB,MAAMwB,KAAKxB,IAAI;gBACf4B,OAAOJ,KAAKC,EAAE;YAChB,CAAA;QAEA,MAAMI,aAAa,MAAMnC,OAAO;YAC9BgC;YACAX,SAAS;QACX;QAEA,OAAOc;IACT;AACF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
2
2
|
import { listHooksForProject } from '../../services/hooks.js';
|
|
3
|
-
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
4
3
|
const listHookDebug = subdebug('hook:list');
|
|
5
4
|
export class List extends SanityCommand {
|
|
6
5
|
static description = 'List hooks for a given project';
|
|
@@ -13,11 +12,6 @@ export class List extends SanityCommand {
|
|
|
13
12
|
async run() {
|
|
14
13
|
// Ensure we have project context
|
|
15
14
|
const projectId = await this.getProjectId();
|
|
16
|
-
if (!projectId) {
|
|
17
|
-
this.error(NO_PROJECT_ID, {
|
|
18
|
-
exit: 1
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
15
|
let hooks;
|
|
22
16
|
try {
|
|
23
17
|
hooks = await listHooksForProject(projectId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/hook/list.ts"],"sourcesContent":["import {SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {type Hook} from '../../actions/hook/types'\nimport {listHooksForProject} from '../../services/hooks.js'\
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/hook/list.ts"],"sourcesContent":["import {SanityCommand, subdebug} from '@sanity/cli-core'\n\nimport {type Hook} from '../../actions/hook/types'\nimport {listHooksForProject} from '../../services/hooks.js'\n\nconst listHookDebug = subdebug('hook:list')\n\nexport class List extends SanityCommand<typeof List> {\n static override description = 'List hooks for a given project'\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'List hooks for a given project',\n },\n ]\n\n public async run() {\n // Ensure we have project context\n const projectId = await this.getProjectId()\n\n let hooks: Hook[]\n try {\n hooks = await listHooksForProject(projectId)\n } catch (error) {\n const err = error as Error\n\n listHookDebug(`Error fetching hooks for project ${projectId}`, err)\n this.error(`Hook list retrieval failed:\\n${err.message}`, {exit: 1})\n }\n\n for (const hook of hooks) {\n this.log(`Name: ${hook.name}`)\n this.log(`Dataset: ${hook.dataset}`)\n this.log(`URL: ${hook.url}`)\n\n if (hook.type === 'document') {\n this.log(`HTTP method: ${hook.httpMethod}`)\n\n if (hook.description) {\n this.log(`Description: ${hook.description}`)\n }\n }\n\n this.log('')\n }\n }\n}\n"],"names":["SanityCommand","subdebug","listHooksForProject","listHookDebug","List","description","examples","command","run","projectId","getProjectId","hooks","error","err","message","exit","hook","log","name","dataset","url","type","httpMethod"],"mappings":"AAAA,SAAQA,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AAGxD,SAAQC,mBAAmB,QAAO,0BAAyB;AAE3D,MAAMC,gBAAgBF,SAAS;AAE/B,OAAO,MAAMG,aAAaJ;IACxB,OAAgBK,cAAc,iCAAgC;IAC9D,OAAgBC,WAAW;QACzB;YACEC,SAAS;YACTF,aAAa;QACf;KACD,CAAA;IAED,MAAaG,MAAM;QACjB,iCAAiC;QACjC,MAAMC,YAAY,MAAM,IAAI,CAACC,YAAY;QAEzC,IAAIC;QACJ,IAAI;YACFA,QAAQ,MAAMT,oBAAoBO;QACpC,EAAE,OAAOG,OAAO;YACd,MAAMC,MAAMD;YAEZT,cAAc,CAAC,iCAAiC,EAAEM,WAAW,EAAEI;YAC/D,IAAI,CAACD,KAAK,CAAC,CAAC,6BAA6B,EAAEC,IAAIC,OAAO,EAAE,EAAE;gBAACC,MAAM;YAAC;QACpE;QAEA,KAAK,MAAMC,QAAQL,MAAO;YACxB,IAAI,CAACM,GAAG,CAAC,CAAC,MAAM,EAAED,KAAKE,IAAI,EAAE;YAC7B,IAAI,CAACD,GAAG,CAAC,CAAC,SAAS,EAAED,KAAKG,OAAO,EAAE;YACnC,IAAI,CAACF,GAAG,CAAC,CAAC,KAAK,EAAED,KAAKI,GAAG,EAAE;YAE3B,IAAIJ,KAAKK,IAAI,KAAK,YAAY;gBAC5B,IAAI,CAACJ,GAAG,CAAC,CAAC,aAAa,EAAED,KAAKM,UAAU,EAAE;gBAE1C,IAAIN,KAAKX,WAAW,EAAE;oBACpB,IAAI,CAACY,GAAG,CAAC,CAAC,aAAa,EAAED,KAAKX,WAAW,EAAE;gBAC7C;YACF;YAEA,IAAI,CAACY,GAAG,CAAC;QACX;IACF;AACF"}
|
|
@@ -2,10 +2,9 @@ import { inspect, styleText } from 'node:util';
|
|
|
2
2
|
import { Args, Flags } from '@oclif/core';
|
|
3
3
|
import { SanityCommand, subdebug } from '@sanity/cli-core';
|
|
4
4
|
import { select } from '@sanity/cli-core/ux';
|
|
5
|
-
import
|
|
5
|
+
import groupBy from 'lodash-es/groupBy.js';
|
|
6
6
|
import { formatFailure } from '../../actions/hook/formatFailure.js';
|
|
7
7
|
import { getHookAttemptsForProject, getHookMessagesForProject, getHooksForProject } from '../../services/hooks.js';
|
|
8
|
-
import { NO_PROJECT_ID } from '../../util/errorMessages.js';
|
|
9
8
|
const logsHookDebug = subdebug('hook:logs');
|
|
10
9
|
export class LogsHookCommand extends SanityCommand {
|
|
11
10
|
static args = {
|
|
@@ -35,11 +34,6 @@ export class LogsHookCommand extends SanityCommand {
|
|
|
35
34
|
const { args, flags } = await this.parse(LogsHookCommand);
|
|
36
35
|
// Ensure we have project context
|
|
37
36
|
const projectId = await this.getProjectId();
|
|
38
|
-
if (!projectId) {
|
|
39
|
-
this.error(NO_PROJECT_ID, {
|
|
40
|
-
exit: 1
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
37
|
// Get hooks for the project
|
|
44
38
|
let hooks;
|
|
45
39
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/hook/logs.ts"],"sourcesContent":["import {inspect, styleText} from 'node:util'\n\nimport {Args, Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {select} from '@sanity/cli-core/ux'\nimport {groupBy} from 'lodash-es'\n\nimport {formatFailure} from '../../actions/hook/formatFailure.js'\nimport {type DeliveryAttempt, type Hook, type HookMessage} from '../../actions/hook/types'\nimport {\n getHookAttemptsForProject,\n getHookMessagesForProject,\n getHooksForProject,\n} from '../../services/hooks.js'\nimport {NO_PROJECT_ID} from '../../util/errorMessages.js'\n\nconst logsHookDebug = subdebug('hook:logs')\n\nexport class LogsHookCommand extends SanityCommand<typeof LogsHookCommand> {\n static override args = {\n name: Args.string({\n description: 'Name of the hook to show logs for',\n required: false,\n }),\n }\n\n static override description = 'List latest log entries for a given hook'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'List latest log entries for a given hook',\n },\n {\n command: '<%= config.bin %> <%= command.id %> [NAME]',\n description: 'List latest log entries for a specific hook by name',\n },\n ]\n\n static override flags = {\n detailed: Flags.boolean({\n description: 'Include detailed payload and attempts',\n required: false,\n }),\n }\n\n public async run() {\n const {args, flags} = await this.parse(LogsHookCommand)\n\n // Ensure we have project context\n const projectId = await this.getProjectId()\n if (!projectId) {\n this.error(NO_PROJECT_ID, {exit: 1})\n }\n\n // Get hooks for the project\n let hooks: Hook[]\n try {\n hooks = await getHooksForProject(projectId)\n } catch (error) {\n const err = error as Error\n logsHookDebug(`Error fetching hooks for project ${projectId}`, err)\n this.error(`Hook list retrieval failed:\\n${err.message}`, {exit: 1})\n }\n\n if (hooks.length === 0) {\n this.error('No hooks currently registered', {exit: 1})\n }\n\n // If hook name is provided, find that specific hook\n let selectedHook: Hook | undefined\n if (args.name) {\n selectedHook = hooks.find((hook) => hook.name.toLowerCase() === args.name?.toLowerCase())\n if (!selectedHook) {\n this.error(`Hook with name \"${args.name}\" not found`, {exit: 1})\n }\n } else if (hooks.length === 1) {\n // If only one hook exists, use that\n selectedHook = hooks[0]\n } else {\n // Otherwise prompt user to select a hook\n selectedHook = await this.selectHook(hooks)\n }\n\n if (!selectedHook) {\n this.error('No hook selected', {exit: 1})\n }\n\n // Fetch messages and attempts for the selected hook\n let messages: HookMessage[]\n let attempts: DeliveryAttempt[] = []\n try {\n ;[messages, attempts] = await Promise.all([\n getHookMessagesForProject({\n hookId: selectedHook.id,\n projectId,\n }),\n getHookAttemptsForProject({\n hookId: selectedHook.id,\n projectId,\n }),\n ])\n } catch (error) {\n const err = error as Error\n logsHookDebug(`Error fetching logs for hook ${selectedHook.id}`, err)\n this.error(`Hook logs retrieval failed:\\n${err.message}`, {exit: 1})\n }\n\n // Group attempts by message ID\n const groupedAttempts = groupBy(attempts, 'messageId')\n\n // Populate messages with attempts\n const populated = messages.map((msg): HookMessage & {attempts: DeliveryAttempt[]} => ({\n ...msg,\n attempts: groupedAttempts[msg.id] || [],\n }))\n\n const totalMessages = messages.length - 1\n\n for (const [i, message] of populated.entries()) {\n this.printMessage(message, {detailed: flags.detailed})\n this.printSeparator(totalMessages === i)\n }\n }\n\n private formatAttemptDate(dateString: string): string {\n try {\n return new Date(dateString).toISOString().replace(/\\.\\d+Z$/, 'Z')\n } catch {\n return dateString // fallback to original if parsing fails\n }\n }\n\n private printMessage(\n message: HookMessage & {attempts: DeliveryAttempt[]},\n options: {detailed?: boolean},\n ) {\n const {detailed} = options\n\n this.log(`Date: ${message.createdAt}`)\n this.log(`Status: ${message.status}`)\n if (message.resultCode) {\n this.log(`Result code: ${message.resultCode}`)\n }\n\n if (message.failureCount > 0) {\n this.log(`Failures: ${message.failureCount}`)\n }\n\n if (detailed) {\n this.log('Payload:')\n try {\n const payload = JSON.parse(message.payload)\n this.log(inspect(payload, {colors: true}))\n } catch (error) {\n this.log(`Payload (raw): ${message.payload}`)\n logsHookDebug('Failed to parse payload JSON:', error)\n }\n }\n\n if (detailed && message.attempts && message.attempts.length > 0) {\n this.log('Attempts:')\n for (const attempt of message.attempts) {\n const date = this.formatAttemptDate(attempt.createdAt)\n const prefix = ` [${date}]`\n\n if (attempt.inProgress) {\n this.log(`${prefix} ${styleText('yellow', 'Pending')}`)\n } else if (attempt.isFailure) {\n const failure = formatFailure(attempt, {includeHelp: true})\n this.log(`${prefix} ${styleText('yellow', `Failure: ${failure}`)}`)\n } else {\n this.log(`${prefix} Success: HTTP ${attempt.resultCode} (${attempt.duration}ms)`)\n }\n }\n }\n\n // Leave some empty space between messages\n this.log('')\n }\n\n private printSeparator(skip: boolean) {\n if (!skip) {\n this.log('---\\n')\n }\n }\n\n private async selectHook(hooks: Hook[]) {\n const hookId = await select({\n choices: hooks.map((hook) => ({\n name: hook.name,\n value: hook.id,\n })),\n message: 'Select hook to list logs for',\n })\n\n return hooks.find((hook) => hook.id === hookId)\n }\n}\n"],"names":["inspect","styleText","Args","Flags","SanityCommand","subdebug","select","groupBy","formatFailure","getHookAttemptsForProject","getHookMessagesForProject","getHooksForProject","NO_PROJECT_ID","logsHookDebug","LogsHookCommand","args","name","string","description","required","examples","command","flags","detailed","boolean","run","parse","projectId","getProjectId","error","exit","hooks","err","message","length","selectedHook","find","hook","toLowerCase","selectHook","messages","attempts","Promise","all","hookId","id","groupedAttempts","populated","map","msg","totalMessages","i","entries","printMessage","printSeparator","formatAttemptDate","dateString","Date","toISOString","replace","options","log","createdAt","status","resultCode","failureCount","payload","JSON","colors","attempt","date","prefix","inProgress","isFailure","failure","includeHelp","duration","skip","choices","value"],"mappings":"AAAA,SAAQA,OAAO,EAAEC,SAAS,QAAO,YAAW;AAE5C,SAAQC,IAAI,EAAEC,KAAK,QAAO,cAAa;AACvC,SAAQC,aAAa,EAAEC,QAAQ,QAAO,mBAAkB;AACxD,SAAQC,MAAM,QAAO,sBAAqB;AAC1C,SAAQC,OAAO,QAAO,YAAW;AAEjC,SAAQC,aAAa,QAAO,sCAAqC;AAEjE,SACEC,yBAAyB,EACzBC,yBAAyB,EACzBC,kBAAkB,QACb,0BAAyB;AAChC,SAAQC,aAAa,QAAO,8BAA6B;AAEzD,MAAMC,gBAAgBR,SAAS;AAE/B,OAAO,MAAMS,wBAAwBV;IACnC,OAAgBW,OAAO;QACrBC,MAAMd,KAAKe,MAAM,CAAC;YAChBC,aAAa;YACbC,UAAU;QACZ;IACF,EAAC;IAED,OAAgBD,cAAc,2CAA0C;IAExE,OAAgBE,WAAW;QACzB;YACEC,SAAS;YACTH,aAAa;QACf;QACA;YACEG,SAAS;YACTH,aAAa;QACf;KACD,CAAA;IAED,OAAgBI,QAAQ;QACtBC,UAAUpB,MAAMqB,OAAO,CAAC;YACtBN,aAAa;YACbC,UAAU;QACZ;IACF,EAAC;IAED,MAAaM,MAAM;QACjB,MAAM,EAACV,IAAI,EAAEO,KAAK,EAAC,GAAG,MAAM,IAAI,CAACI,KAAK,CAACZ;QAEvC,iCAAiC;QACjC,MAAMa,YAAY,MAAM,IAAI,CAACC,YAAY;QACzC,IAAI,CAACD,WAAW;YACd,IAAI,CAACE,KAAK,CAACjB,eAAe;gBAACkB,MAAM;YAAC;QACpC;QAEA,4BAA4B;QAC5B,IAAIC;QACJ,IAAI;YACFA,QAAQ,MAAMpB,mBAAmBgB;QACnC,EAAE,OAAOE,OAAO;YACd,MAAMG,MAAMH;YACZhB,cAAc,CAAC,iCAAiC,EAAEc,WAAW,EAAEK;YAC/D,IAAI,CAACH,KAAK,CAAC,CAAC,6BAA6B,EAAEG,IAAIC,OAAO,EAAE,EAAE;gBAACH,MAAM;YAAC;QACpE;QAEA,IAAIC,MAAMG,MAAM,KAAK,GAAG;YACtB,IAAI,CAACL,KAAK,CAAC,iCAAiC;gBAACC,MAAM;YAAC;QACtD;QAEA,oDAAoD;QACpD,IAAIK;QACJ,IAAIpB,KAAKC,IAAI,EAAE;YACbmB,eAAeJ,MAAMK,IAAI,CAAC,CAACC,OAASA,KAAKrB,IAAI,CAACsB,WAAW,OAAOvB,KAAKC,IAAI,EAAEsB;YAC3E,IAAI,CAACH,cAAc;gBACjB,IAAI,CAACN,KAAK,CAAC,CAAC,gBAAgB,EAAEd,KAAKC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAACc,MAAM;gBAAC;YAChE;QACF,OAAO,IAAIC,MAAMG,MAAM,KAAK,GAAG;YAC7B,oCAAoC;YACpCC,eAAeJ,KAAK,CAAC,EAAE;QACzB,OAAO;YACL,yCAAyC;YACzCI,eAAe,MAAM,IAAI,CAACI,UAAU,CAACR;QACvC;QAEA,IAAI,CAACI,cAAc;YACjB,IAAI,CAACN,KAAK,CAAC,oBAAoB;gBAACC,MAAM;YAAC;QACzC;QAEA,oDAAoD;QACpD,IAAIU;QACJ,IAAIC,WAA8B,EAAE;QACpC,IAAI;;YACD,CAACD,UAAUC,SAAS,GAAG,MAAMC,QAAQC,GAAG,CAAC;gBACxCjC,0BAA0B;oBACxBkC,QAAQT,aAAaU,EAAE;oBACvBlB;gBACF;gBACAlB,0BAA0B;oBACxBmC,QAAQT,aAAaU,EAAE;oBACvBlB;gBACF;aACD;QACH,EAAE,OAAOE,OAAO;YACd,MAAMG,MAAMH;YACZhB,cAAc,CAAC,6BAA6B,EAAEsB,aAAaU,EAAE,EAAE,EAAEb;YACjE,IAAI,CAACH,KAAK,CAAC,CAAC,6BAA6B,EAAEG,IAAIC,OAAO,EAAE,EAAE;gBAACH,MAAM;YAAC;QACpE;QAEA,+BAA+B;QAC/B,MAAMgB,kBAAkBvC,QAAQkC,UAAU;QAE1C,kCAAkC;QAClC,MAAMM,YAAYP,SAASQ,GAAG,CAAC,CAACC,MAAsD,CAAA;gBACpF,GAAGA,GAAG;gBACNR,UAAUK,eAAe,CAACG,IAAIJ,EAAE,CAAC,IAAI,EAAE;YACzC,CAAA;QAEA,MAAMK,gBAAgBV,SAASN,MAAM,GAAG;QAExC,KAAK,MAAM,CAACiB,GAAGlB,QAAQ,IAAIc,UAAUK,OAAO,GAAI;YAC9C,IAAI,CAACC,YAAY,CAACpB,SAAS;gBAACV,UAAUD,MAAMC,QAAQ;YAAA;YACpD,IAAI,CAAC+B,cAAc,CAACJ,kBAAkBC;QACxC;IACF;IAEQI,kBAAkBC,UAAkB,EAAU;QACpD,IAAI;YACF,OAAO,IAAIC,KAAKD,YAAYE,WAAW,GAAGC,OAAO,CAAC,WAAW;QAC/D,EAAE,OAAM;YACN,OAAOH,WAAW,wCAAwC;;QAC5D;IACF;IAEQH,aACNpB,OAAoD,EACpD2B,OAA6B,EAC7B;QACA,MAAM,EAACrC,QAAQ,EAAC,GAAGqC;QAEnB,IAAI,CAACC,GAAG,CAAC,CAAC,MAAM,EAAE5B,QAAQ6B,SAAS,EAAE;QACrC,IAAI,CAACD,GAAG,CAAC,CAAC,QAAQ,EAAE5B,QAAQ8B,MAAM,EAAE;QACpC,IAAI9B,QAAQ+B,UAAU,EAAE;YACtB,IAAI,CAACH,GAAG,CAAC,CAAC,aAAa,EAAE5B,QAAQ+B,UAAU,EAAE;QAC/C;QAEA,IAAI/B,QAAQgC,YAAY,GAAG,GAAG;YAC5B,IAAI,CAACJ,GAAG,CAAC,CAAC,UAAU,EAAE5B,QAAQgC,YAAY,EAAE;QAC9C;QAEA,IAAI1C,UAAU;YACZ,IAAI,CAACsC,GAAG,CAAC;YACT,IAAI;gBACF,MAAMK,UAAUC,KAAKzC,KAAK,CAACO,QAAQiC,OAAO;gBAC1C,IAAI,CAACL,GAAG,CAAC7D,QAAQkE,SAAS;oBAACE,QAAQ;gBAAI;YACzC,EAAE,OAAOvC,OAAO;gBACd,IAAI,CAACgC,GAAG,CAAC,CAAC,eAAe,EAAE5B,QAAQiC,OAAO,EAAE;gBAC5CrD,cAAc,iCAAiCgB;YACjD;QACF;QAEA,IAAIN,YAAYU,QAAQQ,QAAQ,IAAIR,QAAQQ,QAAQ,CAACP,MAAM,GAAG,GAAG;YAC/D,IAAI,CAAC2B,GAAG,CAAC;YACT,KAAK,MAAMQ,WAAWpC,QAAQQ,QAAQ,CAAE;gBACtC,MAAM6B,OAAO,IAAI,CAACf,iBAAiB,CAACc,QAAQP,SAAS;gBACrD,MAAMS,SAAS,CAAC,GAAG,EAAED,KAAK,CAAC,CAAC;gBAE5B,IAAID,QAAQG,UAAU,EAAE;oBACtB,IAAI,CAACX,GAAG,CAAC,GAAGU,OAAO,CAAC,EAAEtE,UAAU,UAAU,YAAY;gBACxD,OAAO,IAAIoE,QAAQI,SAAS,EAAE;oBAC5B,MAAMC,UAAUlE,cAAc6D,SAAS;wBAACM,aAAa;oBAAI;oBACzD,IAAI,CAACd,GAAG,CAAC,GAAGU,OAAO,CAAC,EAAEtE,UAAU,UAAU,CAAC,SAAS,EAAEyE,SAAS,GAAG;gBACpE,OAAO;oBACL,IAAI,CAACb,GAAG,CAAC,GAAGU,OAAO,eAAe,EAAEF,QAAQL,UAAU,CAAC,EAAE,EAAEK,QAAQO,QAAQ,CAAC,GAAG,CAAC;gBAClF;YACF;QACF;QAEA,0CAA0C;QAC1C,IAAI,CAACf,GAAG,CAAC;IACX;IAEQP,eAAeuB,IAAa,EAAE;QACpC,IAAI,CAACA,MAAM;YACT,IAAI,CAAChB,GAAG,CAAC;QACX;IACF;IAEA,MAActB,WAAWR,KAAa,EAAE;QACtC,MAAMa,SAAS,MAAMtC,OAAO;YAC1BwE,SAAS/C,MAAMiB,GAAG,CAAC,CAACX,OAAU,CAAA;oBAC5BrB,MAAMqB,KAAKrB,IAAI;oBACf+D,OAAO1C,KAAKQ,EAAE;gBAChB,CAAA;YACAZ,SAAS;QACX;QAEA,OAAOF,MAAMK,IAAI,CAAC,CAACC,OAASA,KAAKQ,EAAE,KAAKD;IAC1C;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/hook/logs.ts"],"sourcesContent":["import {inspect, styleText} from 'node:util'\n\nimport {Args, Flags} from '@oclif/core'\nimport {SanityCommand, subdebug} from '@sanity/cli-core'\nimport {select} from '@sanity/cli-core/ux'\nimport groupBy from 'lodash-es/groupBy.js'\n\nimport {formatFailure} from '../../actions/hook/formatFailure.js'\nimport {type DeliveryAttempt, type Hook, type HookMessage} from '../../actions/hook/types'\nimport {\n getHookAttemptsForProject,\n getHookMessagesForProject,\n getHooksForProject,\n} from '../../services/hooks.js'\n\nconst logsHookDebug = subdebug('hook:logs')\n\nexport class LogsHookCommand extends SanityCommand<typeof LogsHookCommand> {\n static override args = {\n name: Args.string({\n description: 'Name of the hook to show logs for',\n required: false,\n }),\n }\n\n static override description = 'List latest log entries for a given hook'\n\n static override examples = [\n {\n command: '<%= config.bin %> <%= command.id %>',\n description: 'List latest log entries for a given hook',\n },\n {\n command: '<%= config.bin %> <%= command.id %> [NAME]',\n description: 'List latest log entries for a specific hook by name',\n },\n ]\n\n static override flags = {\n detailed: Flags.boolean({\n description: 'Include detailed payload and attempts',\n required: false,\n }),\n }\n\n public async run() {\n const {args, flags} = await this.parse(LogsHookCommand)\n\n // Ensure we have project context\n const projectId = await this.getProjectId()\n\n // Get hooks for the project\n let hooks: Hook[]\n try {\n hooks = await getHooksForProject(projectId)\n } catch (error) {\n const err = error as Error\n logsHookDebug(`Error fetching hooks for project ${projectId}`, err)\n this.error(`Hook list retrieval failed:\\n${err.message}`, {exit: 1})\n }\n\n if (hooks.length === 0) {\n this.error('No hooks currently registered', {exit: 1})\n }\n\n // If hook name is provided, find that specific hook\n let selectedHook: Hook | undefined\n if (args.name) {\n selectedHook = hooks.find((hook) => hook.name.toLowerCase() === args.name?.toLowerCase())\n if (!selectedHook) {\n this.error(`Hook with name \"${args.name}\" not found`, {exit: 1})\n }\n } else if (hooks.length === 1) {\n // If only one hook exists, use that\n selectedHook = hooks[0]\n } else {\n // Otherwise prompt user to select a hook\n selectedHook = await this.selectHook(hooks)\n }\n\n if (!selectedHook) {\n this.error('No hook selected', {exit: 1})\n }\n\n // Fetch messages and attempts for the selected hook\n let messages: HookMessage[]\n let attempts: DeliveryAttempt[] = []\n try {\n ;[messages, attempts] = await Promise.all([\n getHookMessagesForProject({\n hookId: selectedHook.id,\n projectId,\n }),\n getHookAttemptsForProject({\n hookId: selectedHook.id,\n projectId,\n }),\n ])\n } catch (error) {\n const err = error as Error\n logsHookDebug(`Error fetching logs for hook ${selectedHook.id}`, err)\n this.error(`Hook logs retrieval failed:\\n${err.message}`, {exit: 1})\n }\n\n // Group attempts by message ID\n const groupedAttempts = groupBy(attempts, 'messageId')\n\n // Populate messages with attempts\n const populated = messages.map((msg): HookMessage & {attempts: DeliveryAttempt[]} => ({\n ...msg,\n attempts: groupedAttempts[msg.id] || [],\n }))\n\n const totalMessages = messages.length - 1\n\n for (const [i, message] of populated.entries()) {\n this.printMessage(message, {detailed: flags.detailed})\n this.printSeparator(totalMessages === i)\n }\n }\n\n private formatAttemptDate(dateString: string): string {\n try {\n return new Date(dateString).toISOString().replace(/\\.\\d+Z$/, 'Z')\n } catch {\n return dateString // fallback to original if parsing fails\n }\n }\n\n private printMessage(\n message: HookMessage & {attempts: DeliveryAttempt[]},\n options: {detailed?: boolean},\n ) {\n const {detailed} = options\n\n this.log(`Date: ${message.createdAt}`)\n this.log(`Status: ${message.status}`)\n if (message.resultCode) {\n this.log(`Result code: ${message.resultCode}`)\n }\n\n if (message.failureCount > 0) {\n this.log(`Failures: ${message.failureCount}`)\n }\n\n if (detailed) {\n this.log('Payload:')\n try {\n const payload = JSON.parse(message.payload)\n this.log(inspect(payload, {colors: true}))\n } catch (error) {\n this.log(`Payload (raw): ${message.payload}`)\n logsHookDebug('Failed to parse payload JSON:', error)\n }\n }\n\n if (detailed && message.attempts && message.attempts.length > 0) {\n this.log('Attempts:')\n for (const attempt of message.attempts) {\n const date = this.formatAttemptDate(attempt.createdAt)\n const prefix = ` [${date}]`\n\n if (attempt.inProgress) {\n this.log(`${prefix} ${styleText('yellow', 'Pending')}`)\n } else if (attempt.isFailure) {\n const failure = formatFailure(attempt, {includeHelp: true})\n this.log(`${prefix} ${styleText('yellow', `Failure: ${failure}`)}`)\n } else {\n this.log(`${prefix} Success: HTTP ${attempt.resultCode} (${attempt.duration}ms)`)\n }\n }\n }\n\n // Leave some empty space between messages\n this.log('')\n }\n\n private printSeparator(skip: boolean) {\n if (!skip) {\n this.log('---\\n')\n }\n }\n\n private async selectHook(hooks: Hook[]) {\n const hookId = await select({\n choices: hooks.map((hook) => ({\n name: hook.name,\n value: hook.id,\n })),\n message: 'Select hook to list logs for',\n })\n\n return hooks.find((hook) => hook.id === hookId)\n }\n}\n"],"names":["inspect","styleText","Args","Flags","SanityCommand","subdebug","select","groupBy","formatFailure","getHookAttemptsForProject","getHookMessagesForProject","getHooksForProject","logsHookDebug","LogsHookCommand","args","name","string","description","required","examples","command","flags","detailed","boolean","run","parse","projectId","getProjectId","hooks","error","err","message","exit","length","selectedHook","find","hook","toLowerCase","selectHook","messages","attempts","Promise","all","hookId","id","groupedAttempts","populated","map","msg","totalMessages","i","entries","printMessage","printSeparator","formatAttemptDate","dateString","Date","toISOString","replace","options","log","createdAt","status","resultCode","failureCount","payload","JSON","colors","attempt","date","prefix","inProgress","isFailure","failure","includeHelp","duration","skip","choices","value"],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @Todo will remove by time migration of this command is complete
|
|
2
1
|
import { existsSync } from 'node:fs';
|
|
3
2
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
3
|
import path from 'node:path';
|
|
@@ -12,7 +11,7 @@ import { DatasetImportCommand } from '@sanity/import';
|
|
|
12
11
|
import { frameworks } from '@vercel/frameworks';
|
|
13
12
|
import { detectFrameworkRecord, LocalFileSystemDetector } from '@vercel/fs-detectors';
|
|
14
13
|
import { execa } from 'execa';
|
|
15
|
-
import
|
|
14
|
+
import deburr from 'lodash-es/deburr.js';
|
|
16
15
|
import { getProviderName } from '../actions/auth/getProviderName.js';
|
|
17
16
|
import { login } from '../actions/auth/login/login.js';
|
|
18
17
|
import { createDataset } from '../actions/dataset/create.js';
|
|
@@ -46,6 +45,7 @@ import { getCliUser } from '../services/user.js';
|
|
|
46
45
|
import { CLIInitStepCompleted } from '../telemetry/init.telemetry.js';
|
|
47
46
|
import { absolutify, validateEmptyPath } from '../util/fsUtils.js';
|
|
48
47
|
import { getProjectDefaults } from '../util/getProjectDefaults.js';
|
|
48
|
+
import { getPeerDependencies } from '../util/packageManager/getPeerDependencies.js';
|
|
49
49
|
import { installDeclaredPackages, installNewPackages } from '../util/packageManager/installPackages.js';
|
|
50
50
|
import { getPartialEnvWithNpmPath } from '../util/packageManager/packageManagerChoice.js';
|
|
51
51
|
const debug = subdebug('init');
|
|
@@ -1142,11 +1142,17 @@ export class InitCommand extends SanityCommand {
|
|
|
1142
1142
|
}
|
|
1143
1143
|
case 'yarn':
|
|
1144
1144
|
{
|
|
1145
|
-
await
|
|
1146
|
-
|
|
1147
|
-
'
|
|
1148
|
-
|
|
1149
|
-
|
|
1145
|
+
const peerDeps = await getPeerDependencies('next-sanity@11', workDir);
|
|
1146
|
+
await installNewPackages({
|
|
1147
|
+
packageManager: 'yarn',
|
|
1148
|
+
packages: [
|
|
1149
|
+
'next-sanity@11',
|
|
1150
|
+
...peerDeps
|
|
1151
|
+
]
|
|
1152
|
+
}, {
|
|
1153
|
+
output: this.output,
|
|
1154
|
+
workDir
|
|
1155
|
+
});
|
|
1150
1156
|
break;
|
|
1151
1157
|
}
|
|
1152
1158
|
default:
|