@sanity/cli 8.15.0 → 8.16.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.
@@ -1,5 +1,8 @@
1
1
  import { getGlobalCliClient } from '@sanity/cli-core';
2
+ import { EXPERIMENTAL_API_WARNING, isHttpError } from '@sanity/client';
2
3
  export const SCHEMA_API_VERSION = 'v2025-03-01';
4
+ /** The dataset schema binding endpoint is only available on the experimental API version. */ export const SCHEMA_BINDING_API_VERSION = 'vX';
5
+ export const SCHEMA_DESCRIPTOR_API_VERSION = 'v2025-06-01';
3
6
  async function getSchemaClient() {
4
7
  return await getGlobalCliClient({
5
8
  apiVersion: SCHEMA_API_VERSION,
@@ -26,6 +29,39 @@ export async function deleteSchema(dataset, projectId, id) {
26
29
  url: `/projects/${projectId}/datasets/${dataset}/schemas/${id}`
27
30
  });
28
31
  }
32
+ /**
33
+ * Gets the schema bound to a dataset, or `null` when the dataset has no binding.
34
+ */ export async function getDatasetSchemaBinding(projectId, dataset) {
35
+ const client = await getGlobalCliClient({
36
+ apiVersion: SCHEMA_BINDING_API_VERSION,
37
+ // The endpoint has no stable version yet, and the warning would interrupt command output.
38
+ // The client splits the warning header on commas, so its second clause is matched separately.
39
+ ignoreWarnings: [
40
+ EXPERIMENTAL_API_WARNING,
41
+ 'which will change without warning'
42
+ ],
43
+ requireUser: true
44
+ });
45
+ try {
46
+ return await client.request({
47
+ url: `/schemas/dataset/${encodeURIComponent(`${projectId}.${dataset}`)}`
48
+ });
49
+ } catch (err) {
50
+ if (isHttpError(err) && err.statusCode === 404) return null;
51
+ throw err;
52
+ }
53
+ }
54
+ /**
55
+ * Gets a schema descriptor from Lexicon by its ID, such as a binding's `schemaVersion`.
56
+ */ export async function getSchemaDescriptor(id) {
57
+ const client = await getGlobalCliClient({
58
+ apiVersion: SCHEMA_DESCRIPTOR_API_VERSION,
59
+ requireUser: true
60
+ });
61
+ return client.request({
62
+ url: `/descriptors/schemas/${encodeURIComponent(id)}`
63
+ });
64
+ }
29
65
  export async function updateSchemas(dataset, projectId, schemas) {
30
66
  const client = await getSchemaClient();
31
67
  return client.request({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/schemas.ts"],"sourcesContent":["import {type StoredWorkspaceSchema} from '@sanity/cli-build/_internal/manifest'\nimport {getGlobalCliClient} from '@sanity/cli-core'\n\nexport const SCHEMA_API_VERSION = 'v2025-03-01'\n\nasync function getSchemaClient() {\n return await getGlobalCliClient({\n apiVersion: SCHEMA_API_VERSION,\n requireUser: true,\n })\n}\n\nexport async function getSchemas(dataset: string, projectId: string, id?: string) {\n const client = await getSchemaClient()\n\n return client.request<StoredWorkspaceSchema[]>({\n method: 'GET',\n url: `/projects/${projectId}/datasets/${dataset}/schemas${id ? `/${id}` : ''}`,\n })\n}\n\nexport async function deleteSchema(dataset: string, projectId: string, id: string) {\n const exists = await getSchemas(dataset, projectId, id)\n\n if (exists?.length === 0) {\n return {\n deleted: false,\n }\n }\n\n const client = await getSchemaClient()\n\n return client.request({\n method: 'DELETE',\n url: `/projects/${projectId}/datasets/${dataset}/schemas/${id}`,\n })\n}\n\nexport async function updateSchemas<T>(dataset: string, projectId: string, schemas: T) {\n const client = await getSchemaClient()\n\n return client.request({\n body: {\n schemas,\n },\n method: 'PUT',\n url: `/projects/${projectId}/datasets/${dataset}/schemas`,\n })\n}\n"],"names":["getGlobalCliClient","SCHEMA_API_VERSION","getSchemaClient","apiVersion","requireUser","getSchemas","dataset","projectId","id","client","request","method","url","deleteSchema","exists","length","deleted","updateSchemas","schemas","body"],"mappings":"AACA,SAAQA,kBAAkB,QAAO,mBAAkB;AAEnD,OAAO,MAAMC,qBAAqB,cAAa;AAE/C,eAAeC;IACb,OAAO,MAAMF,mBAAmB;QAC9BG,YAAYF;QACZG,aAAa;IACf;AACF;AAEA,OAAO,eAAeC,WAAWC,OAAe,EAAEC,SAAiB,EAAEC,EAAW;IAC9E,MAAMC,SAAS,MAAMP;IAErB,OAAOO,OAAOC,OAAO,CAA0B;QAC7CC,QAAQ;QACRC,KAAK,CAAC,UAAU,EAAEL,UAAU,UAAU,EAAED,QAAQ,QAAQ,EAAEE,KAAK,CAAC,CAAC,EAAEA,IAAI,GAAG,IAAI;IAChF;AACF;AAEA,OAAO,eAAeK,aAAaP,OAAe,EAAEC,SAAiB,EAAEC,EAAU;IAC/E,MAAMM,SAAS,MAAMT,WAAWC,SAASC,WAAWC;IAEpD,IAAIM,QAAQC,WAAW,GAAG;QACxB,OAAO;YACLC,SAAS;QACX;IACF;IAEA,MAAMP,SAAS,MAAMP;IAErB,OAAOO,OAAOC,OAAO,CAAC;QACpBC,QAAQ;QACRC,KAAK,CAAC,UAAU,EAAEL,UAAU,UAAU,EAAED,QAAQ,SAAS,EAAEE,IAAI;IACjE;AACF;AAEA,OAAO,eAAeS,cAAiBX,OAAe,EAAEC,SAAiB,EAAEW,OAAU;IACnF,MAAMT,SAAS,MAAMP;IAErB,OAAOO,OAAOC,OAAO,CAAC;QACpBS,MAAM;YACJD;QACF;QACAP,QAAQ;QACRC,KAAK,CAAC,UAAU,EAAEL,UAAU,UAAU,EAAED,QAAQ,QAAQ,CAAC;IAC3D;AACF"}
1
+ {"version":3,"sources":["../../src/services/schemas.ts"],"sourcesContent":["import {type StoredWorkspaceSchema} from '@sanity/cli-build/_internal/manifest'\nimport {getGlobalCliClient} from '@sanity/cli-core'\nimport {EXPERIMENTAL_API_WARNING, isHttpError} from '@sanity/client'\nimport {type SchemaSummary} from '@sanity/schema-descriptor-utils'\n\nexport const SCHEMA_API_VERSION = 'v2025-03-01'\n\n/** The dataset schema binding endpoint is only available on the experimental API version. */\nexport const SCHEMA_BINDING_API_VERSION = 'vX'\n\nexport const SCHEMA_DESCRIPTOR_API_VERSION = 'v2025-06-01'\n\n/**\n * The schema bound to a dataset, as returned by `GET /schemas/dataset/:projectId.:dataset`.\n * Only `_meta` is used: its `types` are hydrated for display and cannot be compiled.\n */\nexport interface DatasetSchemaBinding {\n _meta: {\n producer: 'api' | 'blueprint' | 'mcp' | 'studio'\n /** The Lexicon descriptor ID of the bound schema. Also returned as the `ETag`. */\n schemaVersion: string\n source: string | null\n sourceLabel: string | null\n }\n name: string\n}\n\nasync function getSchemaClient() {\n return await getGlobalCliClient({\n apiVersion: SCHEMA_API_VERSION,\n requireUser: true,\n })\n}\n\nexport async function getSchemas(dataset: string, projectId: string, id?: string) {\n const client = await getSchemaClient()\n\n return client.request<StoredWorkspaceSchema[]>({\n method: 'GET',\n url: `/projects/${projectId}/datasets/${dataset}/schemas${id ? `/${id}` : ''}`,\n })\n}\n\nexport async function deleteSchema(dataset: string, projectId: string, id: string) {\n const exists = await getSchemas(dataset, projectId, id)\n\n if (exists?.length === 0) {\n return {\n deleted: false,\n }\n }\n\n const client = await getSchemaClient()\n\n return client.request({\n method: 'DELETE',\n url: `/projects/${projectId}/datasets/${dataset}/schemas/${id}`,\n })\n}\n\n/**\n * Gets the schema bound to a dataset, or `null` when the dataset has no binding.\n */\nexport async function getDatasetSchemaBinding(\n projectId: string,\n dataset: string,\n): Promise<DatasetSchemaBinding | null> {\n const client = await getGlobalCliClient({\n apiVersion: SCHEMA_BINDING_API_VERSION,\n // The endpoint has no stable version yet, and the warning would interrupt command output.\n // The client splits the warning header on commas, so its second clause is matched separately.\n ignoreWarnings: [EXPERIMENTAL_API_WARNING, 'which will change without warning'],\n requireUser: true,\n })\n\n try {\n return await client.request<DatasetSchemaBinding>({\n url: `/schemas/dataset/${encodeURIComponent(`${projectId}.${dataset}`)}`,\n })\n } catch (err) {\n if (isHttpError(err) && err.statusCode === 404) return null\n throw err\n }\n}\n\n/**\n * Gets a schema descriptor from Lexicon by its ID, such as a binding's `schemaVersion`.\n */\nexport async function getSchemaDescriptor(id: string): Promise<SchemaSummary> {\n const client = await getGlobalCliClient({\n apiVersion: SCHEMA_DESCRIPTOR_API_VERSION,\n requireUser: true,\n })\n\n return client.request<SchemaSummary>({\n url: `/descriptors/schemas/${encodeURIComponent(id)}`,\n })\n}\n\nexport async function updateSchemas<T>(dataset: string, projectId: string, schemas: T) {\n const client = await getSchemaClient()\n\n return client.request({\n body: {\n schemas,\n },\n method: 'PUT',\n url: `/projects/${projectId}/datasets/${dataset}/schemas`,\n })\n}\n"],"names":["getGlobalCliClient","EXPERIMENTAL_API_WARNING","isHttpError","SCHEMA_API_VERSION","SCHEMA_BINDING_API_VERSION","SCHEMA_DESCRIPTOR_API_VERSION","getSchemaClient","apiVersion","requireUser","getSchemas","dataset","projectId","id","client","request","method","url","deleteSchema","exists","length","deleted","getDatasetSchemaBinding","ignoreWarnings","encodeURIComponent","err","statusCode","getSchemaDescriptor","updateSchemas","schemas","body"],"mappings":"AACA,SAAQA,kBAAkB,QAAO,mBAAkB;AACnD,SAAQC,wBAAwB,EAAEC,WAAW,QAAO,iBAAgB;AAGpE,OAAO,MAAMC,qBAAqB,cAAa;AAE/C,2FAA2F,GAC3F,OAAO,MAAMC,6BAA6B,KAAI;AAE9C,OAAO,MAAMC,gCAAgC,cAAa;AAiB1D,eAAeC;IACb,OAAO,MAAMN,mBAAmB;QAC9BO,YAAYJ;QACZK,aAAa;IACf;AACF;AAEA,OAAO,eAAeC,WAAWC,OAAe,EAAEC,SAAiB,EAAEC,EAAW;IAC9E,MAAMC,SAAS,MAAMP;IAErB,OAAOO,OAAOC,OAAO,CAA0B;QAC7CC,QAAQ;QACRC,KAAK,CAAC,UAAU,EAAEL,UAAU,UAAU,EAAED,QAAQ,QAAQ,EAAEE,KAAK,CAAC,CAAC,EAAEA,IAAI,GAAG,IAAI;IAChF;AACF;AAEA,OAAO,eAAeK,aAAaP,OAAe,EAAEC,SAAiB,EAAEC,EAAU;IAC/E,MAAMM,SAAS,MAAMT,WAAWC,SAASC,WAAWC;IAEpD,IAAIM,QAAQC,WAAW,GAAG;QACxB,OAAO;YACLC,SAAS;QACX;IACF;IAEA,MAAMP,SAAS,MAAMP;IAErB,OAAOO,OAAOC,OAAO,CAAC;QACpBC,QAAQ;QACRC,KAAK,CAAC,UAAU,EAAEL,UAAU,UAAU,EAAED,QAAQ,SAAS,EAAEE,IAAI;IACjE;AACF;AAEA;;CAEC,GACD,OAAO,eAAeS,wBACpBV,SAAiB,EACjBD,OAAe;IAEf,MAAMG,SAAS,MAAMb,mBAAmB;QACtCO,YAAYH;QACZ,0FAA0F;QAC1F,8FAA8F;QAC9FkB,gBAAgB;YAACrB;YAA0B;SAAoC;QAC/EO,aAAa;IACf;IAEA,IAAI;QACF,OAAO,MAAMK,OAAOC,OAAO,CAAuB;YAChDE,KAAK,CAAC,iBAAiB,EAAEO,mBAAmB,GAAGZ,UAAU,CAAC,EAAED,SAAS,GAAG;QAC1E;IACF,EAAE,OAAOc,KAAK;QACZ,IAAItB,YAAYsB,QAAQA,IAAIC,UAAU,KAAK,KAAK,OAAO;QACvD,MAAMD;IACR;AACF;AAEA;;CAEC,GACD,OAAO,eAAeE,oBAAoBd,EAAU;IAClD,MAAMC,SAAS,MAAMb,mBAAmB;QACtCO,YAAYF;QACZG,aAAa;IACf;IAEA,OAAOK,OAAOC,OAAO,CAAgB;QACnCE,KAAK,CAAC,qBAAqB,EAAEO,mBAAmBX,KAAK;IACvD;AACF;AAEA,OAAO,eAAee,cAAiBjB,OAAe,EAAEC,SAAiB,EAAEiB,OAAU;IACnF,MAAMf,SAAS,MAAMP;IAErB,OAAOO,OAAOC,OAAO,CAAC;QACpBe,MAAM;YACJD;QACF;QACAb,QAAQ;QACRC,KAAK,CAAC,UAAU,EAAEL,UAAU,UAAU,EAAED,QAAQ,QAAQ,CAAC;IAC3D;AACF"}