@sanity/client 7.26.2 → 8.1.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.
Files changed (133) hide show
  1. package/README.md +63 -341
  2. package/dist/browserUpload-2tz6Sdqp.js +87 -0
  3. package/dist/browserUpload-2tz6Sdqp.js.map +1 -0
  4. package/dist/browserUpload-CwpNx7Vl.js +87 -0
  5. package/dist/browserUpload-CwpNx7Vl.js.map +1 -0
  6. package/dist/config-3wiPP-sZ.js +126 -0
  7. package/dist/config-3wiPP-sZ.js.map +1 -0
  8. package/dist/csm.d.ts +122 -335
  9. package/dist/csm.js +79 -91
  10. package/dist/csm.js.map +1 -1
  11. package/dist/dist-C9ExSk2R.js +73 -0
  12. package/dist/dist-C9ExSk2R.js.map +1 -0
  13. package/dist/dist-Z8cIRxoB.js +69 -0
  14. package/dist/dist-Z8cIRxoB.js.map +1 -0
  15. package/dist/index.d.ts +112 -6722
  16. package/dist/index.js +2950 -2848
  17. package/dist/index.js.map +1 -1
  18. package/dist/{index.d.cts → index.node.d.ts} +4529 -5322
  19. package/dist/index.node.js +3264 -0
  20. package/dist/index.node.js.map +1 -0
  21. package/dist/isRecord-Kfmt-nk-.js +7 -0
  22. package/dist/isRecord-Kfmt-nk-.js.map +1 -0
  23. package/dist/media-library.d.ts +9 -100
  24. package/dist/media-library.js +36 -14
  25. package/dist/media-library.js.map +1 -1
  26. package/dist/request-BhMuKj0D.js +373 -0
  27. package/dist/request-BhMuKj0D.js.map +1 -0
  28. package/dist/request-SnMg7nUX.js +355 -0
  29. package/dist/request-SnMg7nUX.js.map +1 -0
  30. package/dist/resolveEditInfo-Cz-smq3a.js +339 -0
  31. package/dist/resolveEditInfo-Cz-smq3a.js.map +1 -0
  32. package/dist/rolldown-runtime-vyAXikos.js +9 -0
  33. package/dist/stega.d.ts +78 -7137
  34. package/dist/stega.js +27 -20
  35. package/dist/stega.js.map +1 -1
  36. package/dist/stegaClean-C18wLWau.js +21 -0
  37. package/dist/stegaClean-C18wLWau.js.map +1 -0
  38. package/dist/stegaEncodeSourceMap-DbM2fTN4.js +373 -0
  39. package/dist/stegaEncodeSourceMap-DbM2fTN4.js.map +1 -0
  40. package/dist/stegaEncodeSourceMap-YR3NQ3iz.js +163 -0
  41. package/dist/stegaEncodeSourceMap-YR3NQ3iz.js.map +1 -0
  42. package/dist/{index.browser.d.cts → types-BODIEY7F.d.ts} +4196 -5258
  43. package/dist/types-CfGzbXrl.d.ts +108 -0
  44. package/package.json +80 -142
  45. package/src/SanityClient.ts +101 -137
  46. package/src/agent/actions/AgentActionsClient.ts +12 -12
  47. package/src/agent/actions/commonTypes.ts +2 -1
  48. package/src/agent/actions/generate.ts +26 -6
  49. package/src/agent/actions/patch.ts +27 -7
  50. package/src/agent/actions/prompt.ts +19 -5
  51. package/src/agent/actions/transform.ts +23 -5
  52. package/src/agent/actions/translate.ts +23 -5
  53. package/src/assets/AssetsClient.ts +121 -24
  54. package/src/csm/applySourceDocuments.ts +5 -5
  55. package/src/csm/createEditUrl.ts +1 -1
  56. package/src/csm/draftUtils.ts +23 -5
  57. package/src/csm/index.ts +2 -2
  58. package/src/csm/studioPath.ts +2 -1
  59. package/src/csm/types.ts +8 -2
  60. package/src/data/dataMethods.ts +784 -349
  61. package/src/data/eventsource.ts +82 -49
  62. package/src/data/listen.ts +18 -23
  63. package/src/data/live.ts +60 -35
  64. package/src/data/resolveEventSourceFetch.ts +104 -0
  65. package/src/datasets/DatasetsClient.ts +58 -41
  66. package/src/defineCreateClient.ts +38 -22
  67. package/src/functions/FunctionsClient.ts +66 -0
  68. package/src/functions/invoke.ts +176 -0
  69. package/src/http/browserMiddleware.ts +7 -1
  70. package/src/http/browserUpload.ts +163 -0
  71. package/src/http/errors.ts +61 -6
  72. package/src/http/nodeMiddleware.ts +94 -30
  73. package/src/http/request.ts +304 -87
  74. package/src/http/requestOptions.ts +131 -15
  75. package/src/{index.browser.ts → index.node.ts} +9 -4
  76. package/src/index.ts +4 -3
  77. package/src/mediaLibrary/MediaLibraryVideoClient.ts +27 -12
  78. package/src/projects/ProjectsClient.ts +18 -16
  79. package/src/releases/ReleasesClient.ts +38 -33
  80. package/src/stega/index.ts +1 -2
  81. package/src/stega/stegaEncodeSourceMap.ts +5 -0
  82. package/src/stega/types.ts +2 -2
  83. package/src/types.ts +328 -103
  84. package/src/users/UsersClient.ts +10 -14
  85. package/src/util/shareReplayLatest.ts +1 -1
  86. package/src/validators.ts +1 -1
  87. package/src/warnings.ts +13 -2
  88. package/dist/_chunks-cjs/config.cjs +0 -206
  89. package/dist/_chunks-cjs/config.cjs.map +0 -1
  90. package/dist/_chunks-cjs/isRecord.cjs +0 -6
  91. package/dist/_chunks-cjs/isRecord.cjs.map +0 -1
  92. package/dist/_chunks-cjs/resolveEditInfo.cjs +0 -334
  93. package/dist/_chunks-cjs/resolveEditInfo.cjs.map +0 -1
  94. package/dist/_chunks-cjs/stegaClean.cjs +0 -46
  95. package/dist/_chunks-cjs/stegaClean.cjs.map +0 -1
  96. package/dist/_chunks-cjs/stegaEncodeSourceMap.cjs +0 -388
  97. package/dist/_chunks-cjs/stegaEncodeSourceMap.cjs.map +0 -1
  98. package/dist/_chunks-es/config.js +0 -207
  99. package/dist/_chunks-es/config.js.map +0 -1
  100. package/dist/_chunks-es/isRecord.js +0 -7
  101. package/dist/_chunks-es/isRecord.js.map +0 -1
  102. package/dist/_chunks-es/resolveEditInfo.js +0 -335
  103. package/dist/_chunks-es/resolveEditInfo.js.map +0 -1
  104. package/dist/_chunks-es/stegaClean.js +0 -47
  105. package/dist/_chunks-es/stegaClean.js.map +0 -1
  106. package/dist/_chunks-es/stegaEncodeSourceMap.js +0 -389
  107. package/dist/_chunks-es/stegaEncodeSourceMap.js.map +0 -1
  108. package/dist/csm.cjs +0 -99
  109. package/dist/csm.cjs.map +0 -1
  110. package/dist/csm.d.cts +0 -391
  111. package/dist/index.browser.cjs +0 -3106
  112. package/dist/index.browser.cjs.map +0 -1
  113. package/dist/index.browser.d.ts +0 -6802
  114. package/dist/index.browser.js +0 -3082
  115. package/dist/index.browser.js.map +0 -1
  116. package/dist/index.cjs +0 -2946
  117. package/dist/index.cjs.map +0 -1
  118. package/dist/media-library.cjs +0 -20
  119. package/dist/media-library.cjs.map +0 -1
  120. package/dist/media-library.d.cts +0 -117
  121. package/dist/stega.browser.cjs +0 -29
  122. package/dist/stega.browser.cjs.map +0 -1
  123. package/dist/stega.browser.d.cts +0 -7200
  124. package/dist/stega.browser.d.ts +0 -7200
  125. package/dist/stega.browser.js +0 -24
  126. package/dist/stega.browser.js.map +0 -1
  127. package/dist/stega.cjs +0 -29
  128. package/dist/stega.cjs.map +0 -1
  129. package/dist/stega.d.cts +0 -7200
  130. package/src/data/eventsourcePolyfill.ts +0 -7
  131. package/umd/.gitkeep +0 -1
  132. package/umd/sanityClient.js +0 -6543
  133. package/umd/sanityClient.min.js +0 -6
@@ -3,12 +3,10 @@ import {parseJsonPath} from './jsonPath'
3
3
  import {resolveMapping} from './resolveMapping'
4
4
  import * as paths from './studioPath'
5
5
  import type {
6
- Any,
7
6
  ApplySourceDocumentsUpdateFunction,
8
7
  ClientPerspective,
9
8
  ContentSourceMap,
10
9
  ContentSourceMapDocuments,
11
- Path,
12
10
  SanityDocument,
13
11
  } from './types'
14
12
  import {walkMap} from './walkMap'
@@ -24,7 +22,9 @@ export function applySourceDocuments<Result = unknown>(
24
22
  getCachedDocument: (
25
23
  sourceDocument: ContentSourceMapDocuments[number],
26
24
  ) =>
27
- (Partial<SanityDocument> & Required<Pick<SanityDocument, '_id' | '_type'>>) | null | undefined,
25
+ | (Partial<SanityDocument> & Required<Pick<SanityDocument, '_id' | '_type'>>)
26
+ | null
27
+ | undefined,
28
28
  updateFn: ApplySourceDocumentsUpdateFunction,
29
29
  perspective: Exclude<ClientPerspective, 'raw'>,
30
30
  ): Result {
@@ -53,7 +53,7 @@ export function applySourceDocuments<Result = unknown>(
53
53
 
54
54
  if (sourceDocument) {
55
55
  const parsedPath = parseJsonPath(sourcePath + pathSuffix)
56
- const stringifiedPath = paths.toString(parsedPath as Path)
56
+ const stringifiedPath = paths.toString(parsedPath)
57
57
  const cachedDocument = cachedDocuments[mapping.source.document]
58
58
 
59
59
  if (!cachedDocument) {
@@ -65,7 +65,7 @@ export function applySourceDocuments<Result = unknown>(
65
65
  : value
66
66
  return value === changedValue
67
67
  ? value
68
- : updateFn<Result[keyof Result]>(changedValue as Any, {
68
+ : updateFn<Result[keyof Result]>(changedValue as Result[keyof Result], {
69
69
  cachedDocument,
70
70
  previousValue: value as Result[keyof Result],
71
71
  sourceDocument,
@@ -36,7 +36,7 @@ export function createEditUrl(options: CreateEditUrlOptions): `${StudioBaseUrl}$
36
36
  ? studioPath.toString(jsonPathToStudioPath(path))
37
37
  : path
38
38
 
39
- // eslint-disable-next-line no-warning-comments
39
+ // oxlint-disable-next-line no-warning-comments
40
40
  // @TODO Using searchParams as a temporary workaround until `@sanity/overlays` can decode state from the path reliably
41
41
  const searchParams = new URLSearchParams({
42
42
  baseUrl,
@@ -32,11 +32,24 @@ export function isPublishedId(id: string): id is PublishedId {
32
32
  return !isDraftId(id) && !isVersionId(id)
33
33
  }
34
34
 
35
+ /**
36
+ * A phantom brand like `DraftId` has no runtime representation, so it can never be produced
37
+ * by narrowing a string - there's nothing to check. These two functions are the only places
38
+ * allowed to assert a plain string into a branded id.
39
+ */
40
+ function asDraftId(value: string): DraftId {
41
+ return value as DraftId
42
+ }
43
+
44
+ function asPublishedId(value: string): PublishedId {
45
+ return value as PublishedId
46
+ }
47
+
35
48
  /** @internal */
36
49
  export function getDraftId(id: string): DraftId {
37
50
  if (isVersionId(id)) {
38
51
  const publishedId = getPublishedId(id)
39
- return (DRAFTS_PREFIX + publishedId) as DraftId
52
+ return asDraftId(DRAFTS_PREFIX + publishedId)
40
53
  }
41
54
 
42
55
  return isDraftId(id) ? id : ((DRAFTS_PREFIX + id) as DraftId)
@@ -60,7 +73,6 @@ export function getVersionId(id: string, version: string): string {
60
73
  */
61
74
  export function getVersionFromId(id: string): string | undefined {
62
75
  if (!isVersionId(id)) return undefined
63
- // eslint-disable-next-line unused-imports/no-unused-vars
64
76
  const [_versionPrefix, versionId, ..._publishedId] = id.split(PATH_SEPARATOR)
65
77
 
66
78
  return versionId
@@ -70,12 +82,18 @@ export function getVersionFromId(id: string): string | undefined {
70
82
  export function getPublishedId(id: string): PublishedId {
71
83
  if (isVersionId(id)) {
72
84
  // make sure to only remove the versions prefix and the bundle name
73
- return id.split(PATH_SEPARATOR).slice(2).join(PATH_SEPARATOR) as PublishedId as PublishedId
85
+ return asPublishedId(id.split(PATH_SEPARATOR).slice(2).join(PATH_SEPARATOR))
74
86
  }
75
87
 
76
88
  if (isDraftId(id)) {
77
- return id.slice(DRAFTS_PREFIX.length) as PublishedId
89
+ return asPublishedId(id.slice(DRAFTS_PREFIX.length))
90
+ }
91
+
92
+ if (isPublishedId(id)) {
93
+ return id
78
94
  }
79
95
 
80
- return id as PublishedId
96
+ // Unreachable: `isPublishedId` is defined as `!isDraftId(id) && !isVersionId(id)`, both of
97
+ // which were already checked (and found false) above, so this can never execute.
98
+ throw new Error(`Unable to resolve a published id from "${id}"`)
81
99
  }
package/src/csm/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- import * as studioPath from './studioPath'
2
- export {studioPath}
1
+ /** @alpha */
2
+ export * as studioPath from './studioPath'
3
3
  export * from './applySourceDocuments'
4
4
  export {createEditUrl} from './createEditUrl'
5
5
  export {
@@ -45,6 +45,7 @@ export function isIndexTuple(segment: PathSegment): segment is IndexTuple {
45
45
  }
46
46
 
47
47
  /** @internal */
48
+ // oxlint-disable-next-line typescript/no-unnecessary-type-parameters -- caller-supplied return type; removing it breaks `get<Result>(...)` call sites
48
49
  export function get<Result = unknown, Fallback = unknown>(
49
50
  obj: unknown,
50
51
  path: Path | string,
@@ -55,7 +56,7 @@ export function get<Result = unknown, Fallback = unknown>(
55
56
  throw new Error('Path must be an array or a string')
56
57
  }
57
58
 
58
- let acc: unknown | undefined = obj
59
+ let acc: unknown = obj
59
60
  for (let i = 0; i < select.length; i++) {
60
61
  const segment = select[i]
61
62
  if (isIndexSegment(segment)) {
package/src/csm/types.ts CHANGED
@@ -33,11 +33,17 @@ export type ContentSourceMapParsedPathKeyedSegment = {_key: string; _index: numb
33
33
 
34
34
  /** @alpha */
35
35
  export type ContentSourceMapParsedPath = (
36
- string | number | ContentSourceMapParsedPathKeyedSegment
36
+ | string
37
+ | number
38
+ | ContentSourceMapParsedPathKeyedSegment
37
39
  )[]
38
40
 
39
41
  /** @alpha */
40
- export type StudioBaseUrl = `/${string}` | `${string}.sanity.studio` | `https://${string}` | string
42
+ export type StudioBaseUrl =
43
+ | `/${string}`
44
+ | `${string}.sanity.studio`
45
+ | `https://${string}`
46
+ | (string & {})
41
47
 
42
48
  /** @alpha */
43
49
  export type StudioBaseRoute = {baseUrl: StudioBaseUrl; workspace?: string; tool?: string}