@sanity/client 6.8.1 → 6.8.2

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 (33) hide show
  1. package/dist/_chunks/{nodeMiddleware-qN-CHKIQ.js → nodeMiddleware-AMBlbOIf.js} +2 -2
  2. package/dist/_chunks/{nodeMiddleware-qN-CHKIQ.js.map → nodeMiddleware-AMBlbOIf.js.map} +1 -1
  3. package/dist/_chunks/{nodeMiddleware-Vb3-cVrJ.cjs → nodeMiddleware-mFD9fwlM.cjs} +2 -2
  4. package/dist/_chunks/{nodeMiddleware-Vb3-cVrJ.cjs.map → nodeMiddleware-mFD9fwlM.cjs.map} +1 -1
  5. package/dist/_chunks/{resolveEditInfo-hVGpZYTe.js → resolveEditInfo-Yk61Qm6L.js} +2 -16
  6. package/dist/_chunks/resolveEditInfo-Yk61Qm6L.js.map +1 -0
  7. package/dist/_chunks/{resolveEditInfo-2keGcJpx.cjs → resolveEditInfo-mxszjGr8.cjs} +2 -16
  8. package/dist/_chunks/resolveEditInfo-mxszjGr8.cjs.map +1 -0
  9. package/dist/csm.cjs +1 -5
  10. package/dist/csm.cjs.map +1 -1
  11. package/dist/csm.d.ts +1 -4
  12. package/dist/csm.js +2 -6
  13. package/dist/csm.js.map +1 -1
  14. package/dist/index.cjs +1 -1
  15. package/dist/index.js +2 -2
  16. package/dist/stega.browser.cjs +4 -42
  17. package/dist/stega.browser.cjs.map +1 -1
  18. package/dist/stega.browser.js +4 -42
  19. package/dist/stega.browser.js.map +1 -1
  20. package/dist/stega.cjs +6 -34
  21. package/dist/stega.cjs.map +1 -1
  22. package/dist/stega.d.ts +0 -4
  23. package/dist/stega.js +7 -35
  24. package/dist/stega.js.map +1 -1
  25. package/package.json +3 -3
  26. package/src/csm/createEditUrl.ts +0 -10
  27. package/src/csm/resolveEditInfo.ts +1 -3
  28. package/src/csm/resolveEditUrl.ts +1 -3
  29. package/src/csm/types.ts +1 -4
  30. package/src/stega/SanityStegaClient.ts +2 -10
  31. package/src/stega/stegaEncodeSourceMap.ts +1 -17
  32. package/dist/_chunks/resolveEditInfo-2keGcJpx.cjs.map +0 -1
  33. package/dist/_chunks/resolveEditInfo-hVGpZYTe.js.map +0 -1
@@ -313,8 +313,6 @@ function getPublishedId(id) {
313
313
  function createEditUrl(options) {
314
314
  const {
315
315
  baseUrl,
316
- projectId,
317
- dataset,
318
316
  workspace: _workspace = "default",
319
317
  tool: _tool = "default",
320
318
  id: _id,
@@ -324,12 +322,6 @@ function createEditUrl(options) {
324
322
  if (!baseUrl) {
325
323
  throw new Error("baseUrl is required");
326
324
  }
327
- if (!projectId) {
328
- throw new Error("projectId is required");
329
- }
330
- if (!dataset) {
331
- throw new Error("dataset is required");
332
- }
333
325
  if (!path) {
334
326
  throw new Error("path is required");
335
327
  }
@@ -345,8 +337,6 @@ function createEditUrl(options) {
345
337
  const stringifiedPath = toString(jsonPathToStudioPath(path));
346
338
  const searchParams = new URLSearchParams({
347
339
  baseUrl,
348
- projectId,
349
- dataset,
350
340
  id,
351
341
  type,
352
342
  path: stringifiedPath
@@ -397,14 +387,10 @@ function resolveEditInfo(options) {
397
387
  if (!baseUrl) return void 0;
398
388
  const {
399
389
  _id,
400
- _type,
401
- _dataset = options.projectId,
402
- _projectId = options.dataset
390
+ _type
403
391
  } = sourceDoc;
404
392
  return {
405
393
  baseUrl,
406
- projectId: _projectId,
407
- dataset: _dataset,
408
394
  workspace,
409
395
  tool,
410
396
  id: _id,
@@ -430,4 +416,4 @@ function resolveStudioBaseRoute(studioUrl) {
430
416
  };
431
417
  }
432
418
  export { createEditUrl, get, getPublishedId, jsonPath, jsonPathToStudioPath, parseJsonPath, reKeySegment, resolveEditInfo, resolveMapping, resolveStudioBaseRoute, studioPath, studioPathToJsonPath, toString, walkMap };
433
- //# sourceMappingURL=resolveEditInfo-hVGpZYTe.js.map
419
+ //# sourceMappingURL=resolveEditInfo-Yk61Qm6L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveEditInfo-Yk61Qm6L.js","sources":["../../src/csm/studioPath.ts","../../src/csm/jsonPath.ts","../../src/csm/resolveMapping.ts","../../src/csm/isArray.ts","../../src/csm/isRecord.ts","../../src/csm/walkMap.ts","../../src/csm/getPublishedId.ts","../../src/csm/createEditUrl.ts","../../src/csm/resolveEditInfo.ts"],"sourcesContent":["/** @alpha */\nexport type KeyedSegment = {_key: string}\n\n/** @alpha */\nexport type IndexTuple = [number | '', number | '']\n\n/** @alpha */\nexport type PathSegment = string | number | KeyedSegment | IndexTuple\n\n/** @alpha */\nexport type Path = PathSegment[]\n\nconst rePropName =\n /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g\n/** @internal */\nexport const reKeySegment = /_key\\s*==\\s*['\"](.*)['\"]/\nconst reIndexTuple = /^\\d*:\\d*$/\n\n/** @internal */\nexport function isIndexSegment(segment: PathSegment): segment is number {\n return typeof segment === 'number' || (typeof segment === 'string' && /^\\[\\d+\\]$/.test(segment))\n}\n\n/** @internal */\nexport function isKeySegment(segment: PathSegment): segment is KeyedSegment {\n if (typeof segment === 'string') {\n return reKeySegment.test(segment.trim())\n }\n\n return typeof segment === 'object' && '_key' in segment\n}\n\n/** @internal */\nexport function isIndexTuple(segment: PathSegment): segment is IndexTuple {\n if (typeof segment === 'string' && reIndexTuple.test(segment)) {\n return true\n }\n\n if (!Array.isArray(segment) || segment.length !== 2) {\n return false\n }\n\n const [from, to] = segment\n return (typeof from === 'number' || from === '') && (typeof to === 'number' || to === '')\n}\n\n/** @internal */\nexport function get<Result = unknown, Fallback = unknown>(\n obj: unknown,\n path: Path | string,\n defaultVal?: Fallback,\n): Result | typeof defaultVal {\n const select = typeof path === 'string' ? fromString(path) : path\n if (!Array.isArray(select)) {\n throw new Error('Path must be an array or a string')\n }\n\n let acc: unknown | undefined = obj\n for (let i = 0; i < select.length; i++) {\n const segment = select[i]\n if (isIndexSegment(segment)) {\n if (!Array.isArray(acc)) {\n return defaultVal\n }\n\n acc = acc[segment]\n }\n\n if (isKeySegment(segment)) {\n if (!Array.isArray(acc)) {\n return defaultVal\n }\n\n acc = acc.find((item) => item._key === segment._key)\n }\n\n if (typeof segment === 'string') {\n acc =\n typeof acc === 'object' && acc !== null\n ? ((acc as Record<string, unknown>)[segment] as Result)\n : undefined\n }\n\n if (typeof acc === 'undefined') {\n return defaultVal\n }\n }\n\n return acc as Result\n}\n\n/** @alpha */\nexport function toString(path: Path): string {\n if (!Array.isArray(path)) {\n throw new Error('Path is not an array')\n }\n\n return path.reduce<string>((target, segment, i) => {\n const segmentType = typeof segment\n if (segmentType === 'number') {\n return `${target}[${segment}]`\n }\n\n if (segmentType === 'string') {\n const separator = i === 0 ? '' : '.'\n return `${target}${separator}${segment}`\n }\n\n if (isKeySegment(segment) && segment._key) {\n return `${target}[_key==\"${segment._key}\"]`\n }\n\n if (Array.isArray(segment)) {\n const [from, to] = segment\n return `${target}[${from}:${to}]`\n }\n\n throw new Error(`Unsupported path segment \\`${JSON.stringify(segment)}\\``)\n }, '')\n}\n\n/** @alpha */\nexport function fromString(path: string): Path {\n if (typeof path !== 'string') {\n throw new Error('Path is not a string')\n }\n\n const segments = path.match(rePropName)\n if (!segments) {\n throw new Error('Invalid path string')\n }\n\n return segments.map(parsePathSegment)\n}\n\nfunction parsePathSegment(segment: string): PathSegment {\n if (isIndexSegment(segment)) {\n return parseIndexSegment(segment)\n }\n\n if (isKeySegment(segment)) {\n return parseKeySegment(segment)\n }\n\n if (isIndexTuple(segment)) {\n return parseIndexTupleSegment(segment)\n }\n\n return segment\n}\n\nfunction parseIndexSegment(segment: string): PathSegment {\n return Number(segment.replace(/[^\\d]/g, ''))\n}\n\nfunction parseKeySegment(segment: string): KeyedSegment {\n const segments = segment.match(reKeySegment)\n return {_key: segments![1]}\n}\n\nfunction parseIndexTupleSegment(segment: string): IndexTuple {\n const [from, to] = segment.split(':').map((seg) => (seg === '' ? seg : Number(seg)))\n return [from, to]\n}\n","import * as studioPath from './studioPath'\nimport type {\n ContentSourceMapParsedPath,\n ContentSourceMapParsedPathKeyedSegment,\n ContentSourceMapPaths,\n Path,\n} from './types'\n\nconst ESCAPE: Record<string, string> = {\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n \"'\": \"\\\\'\",\n '\\\\': '\\\\\\\\',\n}\n\nconst UNESCAPE: Record<string, string> = {\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t',\n \"\\\\'\": \"'\",\n '\\\\\\\\': '\\\\',\n}\n\n/**\n * @internal\n */\nexport function jsonPath(path: ContentSourceMapParsedPath): ContentSourceMapPaths[number] {\n return `$${path\n .map((segment) => {\n if (typeof segment === 'string') {\n const escapedKey = segment.replace(/[\\f\\n\\r\\t'\\\\]/g, (match) => {\n return ESCAPE[match]\n })\n return `['${escapedKey}']`\n }\n\n if (typeof segment === 'number') {\n return `[${segment}]`\n }\n\n if (segment._key !== '') {\n const escapedKey = segment._key.replace(/['\\\\]/g, (match) => {\n return ESCAPE[match]\n })\n return `[?(@._key=='${escapedKey}')]`\n }\n\n return `[${segment._index}]`\n })\n .join('')}`\n}\n\n/**\n * @internal\n */\nexport function parseJsonPath(path: ContentSourceMapPaths[number]): ContentSourceMapParsedPath {\n const parsed: ContentSourceMapParsedPath = []\n\n const parseRe = /\\['(.*?)'\\]|\\[(\\d+)\\]|\\[\\?\\(@\\._key=='(.*?)'\\)\\]/g\n let match: RegExpExecArray | null\n\n while ((match = parseRe.exec(path)) !== null) {\n if (match[1] !== undefined) {\n const key = match[1].replace(/\\\\(\\\\|f|n|r|t|')/g, (m) => {\n return UNESCAPE[m]\n })\n\n parsed.push(key)\n continue\n }\n\n if (match[2] !== undefined) {\n parsed.push(parseInt(match[2], 10))\n continue\n }\n\n if (match[3] !== undefined) {\n const _key = match[3].replace(/\\\\(\\\\')/g, (m) => {\n return UNESCAPE[m]\n })\n\n parsed.push({\n _key,\n _index: -1,\n })\n continue\n }\n }\n\n return parsed\n}\n\n/**\n * @internal\n */\nexport function jsonPathToStudioPath(path: ContentSourceMapParsedPath): Path {\n return path.map((segment) => {\n if (typeof segment === 'string') {\n return segment\n }\n\n if (typeof segment === 'number') {\n return segment\n }\n\n if (segment._key !== '') {\n return {_key: segment._key}\n }\n\n if (segment._index !== -1) {\n return segment._index\n }\n\n throw new Error(`invalid segment:${JSON.stringify(segment)}`)\n })\n}\n\n/**\n * @internal\n */\nexport function studioPathToJsonPath(path: Path | string): ContentSourceMapParsedPath {\n const parsedPath = typeof path === 'string' ? studioPath.fromString(path) : path\n\n return parsedPath.map((segment) => {\n if (typeof segment === 'string') {\n return segment\n }\n\n if (typeof segment === 'number') {\n return segment\n }\n\n if (Array.isArray(segment)) {\n throw new Error(`IndexTuple segments aren't supported:${JSON.stringify(segment)}`)\n }\n\n if (isContentSourceMapParsedPathKeyedSegment(segment)) {\n return segment\n }\n\n if (segment._key) {\n return {_key: segment._key, _index: -1}\n }\n\n throw new Error(`invalid segment:${JSON.stringify(segment)}`)\n })\n}\n\nfunction isContentSourceMapParsedPathKeyedSegment(\n segment: studioPath.PathSegment | ContentSourceMapParsedPath[number],\n): segment is ContentSourceMapParsedPathKeyedSegment {\n return typeof segment === 'object' && '_key' in segment && '_index' in segment\n}\n\n/**\n * @internal\n */\nexport function jsonPathToMappingPath(path: ContentSourceMapParsedPath): (string | number)[] {\n return path.map((segment) => {\n if (typeof segment === 'string') {\n return segment\n }\n\n if (typeof segment === 'number') {\n return segment\n }\n\n if (segment._index !== -1) {\n return segment._index\n }\n\n throw new Error(`invalid segment:${JSON.stringify(segment)}`)\n })\n}\n","import {jsonPath, jsonPathToMappingPath} from './jsonPath'\nimport type {ContentSourceMap, ContentSourceMapMapping, ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function resolveMapping(\n resultPath: ContentSourceMapParsedPath,\n csm?: ContentSourceMap,\n):\n | {\n mapping: ContentSourceMapMapping\n matchedPath: string\n pathSuffix: string\n }\n | undefined {\n if (!csm?.mappings) {\n return undefined\n }\n const resultMappingPath = jsonPath(jsonPathToMappingPath(resultPath))\n\n if (csm.mappings[resultMappingPath] !== undefined) {\n return {\n mapping: csm.mappings[resultMappingPath],\n matchedPath: resultMappingPath,\n pathSuffix: '',\n }\n }\n\n const mappings = Object.entries(csm.mappings)\n .filter(([key]) => resultMappingPath.startsWith(key))\n .sort(([key1], [key2]) => key2.length - key1.length)\n\n if (mappings.length == 0) {\n return undefined\n }\n\n const [matchedPath, mapping] = mappings[0]\n const pathSuffix = resultMappingPath.substring(matchedPath.length)\n return {mapping, matchedPath, pathSuffix}\n}\n","/** @internal */\nexport function isArray(value: unknown): value is Array<unknown> {\n return value !== null && Array.isArray(value)\n}\n","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n","import {isArray} from './isArray'\nimport {isRecord} from './isRecord'\nimport type {ContentSourceMapParsedPath, WalkMapFn} from './types'\n\n/**\n * generic way to walk a nested object or array and apply a mapping function to each value\n * @internal\n */\nexport function walkMap(\n value: unknown,\n mappingFn: WalkMapFn,\n path: ContentSourceMapParsedPath = [],\n): unknown {\n if (isArray(value)) {\n return value.map((v, idx) => {\n if (isRecord(v)) {\n const _key = v['_key']\n if (typeof _key === 'string') {\n return walkMap(v, mappingFn, path.concat({_key, _index: idx}))\n }\n }\n\n return walkMap(v, mappingFn, path.concat(idx))\n })\n }\n\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [k, walkMap(v, mappingFn, path.concat(k))]),\n )\n }\n\n return mappingFn(value, path)\n}\n","const DRAFTS_PREFIX = 'drafts.'\n\n/** @internal */\nexport function getPublishedId(id: string): string {\n if (id.startsWith(DRAFTS_PREFIX)) {\n return id.slice(DRAFTS_PREFIX.length)\n }\n\n return id\n}\n","import {getPublishedId} from './getPublishedId'\nimport {jsonPathToStudioPath} from './jsonPath'\nimport * as studioPath from './studioPath'\nimport type {CreateEditUrlOptions, EditIntentUrl, StudioBaseUrl} from './types'\n\n/** @internal */\nexport function createEditUrl(options: CreateEditUrlOptions): `${StudioBaseUrl}${EditIntentUrl}` {\n const {\n baseUrl,\n workspace: _workspace = 'default',\n tool: _tool = 'default',\n id: _id,\n type,\n path,\n } = options\n\n if (!baseUrl) {\n throw new Error('baseUrl is required')\n }\n if (!path) {\n throw new Error('path is required')\n }\n if (!_id) {\n throw new Error('id is required')\n }\n if (baseUrl !== '/' && baseUrl.endsWith('/')) {\n throw new Error('baseUrl must not end with a slash')\n }\n\n const workspace = _workspace === 'default' ? undefined : _workspace\n const tool = _tool === 'default' ? undefined : _tool\n // eslint-disable-next-line no-warning-comments\n // @TODO allow passing draft prefixed IDs, to better open the right perspective mode\n const id = getPublishedId(_id)\n const stringifiedPath = studioPath.toString(jsonPathToStudioPath(path))\n\n // eslint-disable-next-line no-warning-comments\n // @TODO Using searchParams as a temporary workaround until `@sanity/overlays` can decode state from the path reliably\n const searchParams = new URLSearchParams({\n baseUrl,\n id,\n type,\n path: stringifiedPath,\n })\n if (workspace) {\n searchParams.set('workspace', workspace)\n }\n if (tool) {\n searchParams.set('tool', tool)\n }\n\n const segments = [baseUrl === '/' ? '' : baseUrl]\n if (workspace) {\n segments.push(workspace)\n }\n if (tool) {\n segments.push(tool)\n }\n const routerParams = [`id=${id}`, `type=${type}`, `path=${encodeURIComponent(stringifiedPath)}`]\n segments.push('intent', 'edit', `${routerParams.join(';')}?${searchParams}`)\n return segments.join('/') as unknown as `${StudioBaseUrl}${EditIntentUrl}`\n}\n","import {parseJsonPath} from './jsonPath'\nimport {resolveMapping} from './resolveMapping'\nimport type {\n CreateEditUrlOptions,\n ResolveEditInfoOptions,\n StudioBaseRoute,\n StudioBaseUrl,\n StudioUrl,\n} from './types'\n\n/** @internal */\nexport function resolveEditInfo(options: ResolveEditInfoOptions): CreateEditUrlOptions | undefined {\n const {resultSourceMap: csm, resultPath} = options\n const {mapping, pathSuffix} = resolveMapping(resultPath, csm) || {}\n\n if (!mapping) {\n // console.warn('no mapping for path', { path: resultPath, sourceMap: csm })\n return undefined\n }\n\n if (mapping.source.type === 'literal') {\n return undefined\n }\n\n if (mapping.source.type === 'unknown') {\n return undefined\n }\n\n const sourceDoc = csm.documents[mapping.source.document]\n const sourcePath = csm.paths[mapping.source.path]\n\n if (sourceDoc && sourcePath) {\n const {baseUrl, workspace, tool} = resolveStudioBaseRoute(\n typeof options.studioUrl === 'function' ? options.studioUrl(sourceDoc) : options.studioUrl,\n )\n if (!baseUrl) return undefined\n const {_id, _type} = sourceDoc\n return {\n baseUrl,\n workspace,\n tool,\n id: _id,\n type: _type,\n path: parseJsonPath(sourcePath + pathSuffix),\n } satisfies CreateEditUrlOptions\n }\n\n return undefined\n}\n\n/** @internal */\nexport function resolveStudioBaseRoute(studioUrl: StudioUrl): StudioBaseRoute {\n let baseUrl: StudioBaseUrl = typeof studioUrl === 'string' ? studioUrl : studioUrl.baseUrl\n if (baseUrl !== '/') {\n baseUrl = baseUrl.replace(/\\/$/, '')\n }\n if (typeof studioUrl === 'string') {\n return {baseUrl}\n }\n return {...studioUrl, baseUrl}\n}\n"],"names":["rePropName","reKeySegment","reIndexTuple","isIndexSegment","segment","test","isKeySegment","trim","isIndexTuple","Array","isArray","length","from","to","get","obj","path","defaultVal","select","fromString","Error","acc","i","find","item","_key","toString","reduce","target","segmentType","concat","separator","stringify","segments","match","map","parsePathSegment","parseIndexSegment","parseKeySegment","parseIndexTupleSegment","Number","replace","split","seg","ESCAPE","UNESCAPE","jsonPath","escapedKey","_index","join","parseJsonPath","parsed","parseRe","exec","key","m","push","parseInt","jsonPathToStudioPath","JSON","studioPathToJsonPath","parsedPath","studioPath.fromString","isContentSourceMapParsedPathKeyedSegment","jsonPathToMappingPath","resolveMapping","resultPath","csm","mappings","resultMappingPath","mapping","matchedPath","pathSuffix","Object","entries","filter","_ref","startsWith","sort","_ref2","_ref3","key1","key2","substring","value","isRecord","walkMap","mappingFn","arguments","undefined","v","idx","fromEntries","_ref4","k","DRAFTS_PREFIX","getPublishedId","id","slice","createEditUrl","options","baseUrl","workspace","_workspace","tool","_tool","_id","type","endsWith","stringifiedPath","studioPath.toString","searchParams","URLSearchParams","set","routerParams","encodeURIComponent","resolveEditInfo","resultSourceMap","source","sourceDoc","documents","document","sourcePath","paths","resolveStudioBaseRoute","studioUrl","_type"],"mappings":"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"}
@@ -315,8 +315,6 @@ function getPublishedId(id) {
315
315
  function createEditUrl(options) {
316
316
  const {
317
317
  baseUrl,
318
- projectId,
319
- dataset,
320
318
  workspace: _workspace = "default",
321
319
  tool: _tool = "default",
322
320
  id: _id,
@@ -326,12 +324,6 @@ function createEditUrl(options) {
326
324
  if (!baseUrl) {
327
325
  throw new Error("baseUrl is required");
328
326
  }
329
- if (!projectId) {
330
- throw new Error("projectId is required");
331
- }
332
- if (!dataset) {
333
- throw new Error("dataset is required");
334
- }
335
327
  if (!path) {
336
328
  throw new Error("path is required");
337
329
  }
@@ -347,8 +339,6 @@ function createEditUrl(options) {
347
339
  const stringifiedPath = toString(jsonPathToStudioPath(path));
348
340
  const searchParams = new URLSearchParams({
349
341
  baseUrl,
350
- projectId,
351
- dataset,
352
342
  id,
353
343
  type,
354
344
  path: stringifiedPath
@@ -399,14 +389,10 @@ function resolveEditInfo(options) {
399
389
  if (!baseUrl) return void 0;
400
390
  const {
401
391
  _id,
402
- _type,
403
- _dataset = options.projectId,
404
- _projectId = options.dataset
392
+ _type
405
393
  } = sourceDoc;
406
394
  return {
407
395
  baseUrl,
408
- projectId: _projectId,
409
- dataset: _dataset,
410
396
  workspace,
411
397
  tool,
412
398
  id: _id,
@@ -445,4 +431,4 @@ exports.studioPath = studioPath;
445
431
  exports.studioPathToJsonPath = studioPathToJsonPath;
446
432
  exports.toString = toString;
447
433
  exports.walkMap = walkMap;
448
- //# sourceMappingURL=resolveEditInfo-2keGcJpx.cjs.map
434
+ //# sourceMappingURL=resolveEditInfo-mxszjGr8.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveEditInfo-mxszjGr8.cjs","sources":["../../src/csm/studioPath.ts","../../src/csm/jsonPath.ts","../../src/csm/resolveMapping.ts","../../src/csm/isArray.ts","../../src/csm/isRecord.ts","../../src/csm/walkMap.ts","../../src/csm/getPublishedId.ts","../../src/csm/createEditUrl.ts","../../src/csm/resolveEditInfo.ts"],"sourcesContent":["/** @alpha */\nexport type KeyedSegment = {_key: string}\n\n/** @alpha */\nexport type IndexTuple = [number | '', number | '']\n\n/** @alpha */\nexport type PathSegment = string | number | KeyedSegment | IndexTuple\n\n/** @alpha */\nexport type Path = PathSegment[]\n\nconst rePropName =\n /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g\n/** @internal */\nexport const reKeySegment = /_key\\s*==\\s*['\"](.*)['\"]/\nconst reIndexTuple = /^\\d*:\\d*$/\n\n/** @internal */\nexport function isIndexSegment(segment: PathSegment): segment is number {\n return typeof segment === 'number' || (typeof segment === 'string' && /^\\[\\d+\\]$/.test(segment))\n}\n\n/** @internal */\nexport function isKeySegment(segment: PathSegment): segment is KeyedSegment {\n if (typeof segment === 'string') {\n return reKeySegment.test(segment.trim())\n }\n\n return typeof segment === 'object' && '_key' in segment\n}\n\n/** @internal */\nexport function isIndexTuple(segment: PathSegment): segment is IndexTuple {\n if (typeof segment === 'string' && reIndexTuple.test(segment)) {\n return true\n }\n\n if (!Array.isArray(segment) || segment.length !== 2) {\n return false\n }\n\n const [from, to] = segment\n return (typeof from === 'number' || from === '') && (typeof to === 'number' || to === '')\n}\n\n/** @internal */\nexport function get<Result = unknown, Fallback = unknown>(\n obj: unknown,\n path: Path | string,\n defaultVal?: Fallback,\n): Result | typeof defaultVal {\n const select = typeof path === 'string' ? fromString(path) : path\n if (!Array.isArray(select)) {\n throw new Error('Path must be an array or a string')\n }\n\n let acc: unknown | undefined = obj\n for (let i = 0; i < select.length; i++) {\n const segment = select[i]\n if (isIndexSegment(segment)) {\n if (!Array.isArray(acc)) {\n return defaultVal\n }\n\n acc = acc[segment]\n }\n\n if (isKeySegment(segment)) {\n if (!Array.isArray(acc)) {\n return defaultVal\n }\n\n acc = acc.find((item) => item._key === segment._key)\n }\n\n if (typeof segment === 'string') {\n acc =\n typeof acc === 'object' && acc !== null\n ? ((acc as Record<string, unknown>)[segment] as Result)\n : undefined\n }\n\n if (typeof acc === 'undefined') {\n return defaultVal\n }\n }\n\n return acc as Result\n}\n\n/** @alpha */\nexport function toString(path: Path): string {\n if (!Array.isArray(path)) {\n throw new Error('Path is not an array')\n }\n\n return path.reduce<string>((target, segment, i) => {\n const segmentType = typeof segment\n if (segmentType === 'number') {\n return `${target}[${segment}]`\n }\n\n if (segmentType === 'string') {\n const separator = i === 0 ? '' : '.'\n return `${target}${separator}${segment}`\n }\n\n if (isKeySegment(segment) && segment._key) {\n return `${target}[_key==\"${segment._key}\"]`\n }\n\n if (Array.isArray(segment)) {\n const [from, to] = segment\n return `${target}[${from}:${to}]`\n }\n\n throw new Error(`Unsupported path segment \\`${JSON.stringify(segment)}\\``)\n }, '')\n}\n\n/** @alpha */\nexport function fromString(path: string): Path {\n if (typeof path !== 'string') {\n throw new Error('Path is not a string')\n }\n\n const segments = path.match(rePropName)\n if (!segments) {\n throw new Error('Invalid path string')\n }\n\n return segments.map(parsePathSegment)\n}\n\nfunction parsePathSegment(segment: string): PathSegment {\n if (isIndexSegment(segment)) {\n return parseIndexSegment(segment)\n }\n\n if (isKeySegment(segment)) {\n return parseKeySegment(segment)\n }\n\n if (isIndexTuple(segment)) {\n return parseIndexTupleSegment(segment)\n }\n\n return segment\n}\n\nfunction parseIndexSegment(segment: string): PathSegment {\n return Number(segment.replace(/[^\\d]/g, ''))\n}\n\nfunction parseKeySegment(segment: string): KeyedSegment {\n const segments = segment.match(reKeySegment)\n return {_key: segments![1]}\n}\n\nfunction parseIndexTupleSegment(segment: string): IndexTuple {\n const [from, to] = segment.split(':').map((seg) => (seg === '' ? seg : Number(seg)))\n return [from, to]\n}\n","import * as studioPath from './studioPath'\nimport type {\n ContentSourceMapParsedPath,\n ContentSourceMapParsedPathKeyedSegment,\n ContentSourceMapPaths,\n Path,\n} from './types'\n\nconst ESCAPE: Record<string, string> = {\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n \"'\": \"\\\\'\",\n '\\\\': '\\\\\\\\',\n}\n\nconst UNESCAPE: Record<string, string> = {\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t',\n \"\\\\'\": \"'\",\n '\\\\\\\\': '\\\\',\n}\n\n/**\n * @internal\n */\nexport function jsonPath(path: ContentSourceMapParsedPath): ContentSourceMapPaths[number] {\n return `$${path\n .map((segment) => {\n if (typeof segment === 'string') {\n const escapedKey = segment.replace(/[\\f\\n\\r\\t'\\\\]/g, (match) => {\n return ESCAPE[match]\n })\n return `['${escapedKey}']`\n }\n\n if (typeof segment === 'number') {\n return `[${segment}]`\n }\n\n if (segment._key !== '') {\n const escapedKey = segment._key.replace(/['\\\\]/g, (match) => {\n return ESCAPE[match]\n })\n return `[?(@._key=='${escapedKey}')]`\n }\n\n return `[${segment._index}]`\n })\n .join('')}`\n}\n\n/**\n * @internal\n */\nexport function parseJsonPath(path: ContentSourceMapPaths[number]): ContentSourceMapParsedPath {\n const parsed: ContentSourceMapParsedPath = []\n\n const parseRe = /\\['(.*?)'\\]|\\[(\\d+)\\]|\\[\\?\\(@\\._key=='(.*?)'\\)\\]/g\n let match: RegExpExecArray | null\n\n while ((match = parseRe.exec(path)) !== null) {\n if (match[1] !== undefined) {\n const key = match[1].replace(/\\\\(\\\\|f|n|r|t|')/g, (m) => {\n return UNESCAPE[m]\n })\n\n parsed.push(key)\n continue\n }\n\n if (match[2] !== undefined) {\n parsed.push(parseInt(match[2], 10))\n continue\n }\n\n if (match[3] !== undefined) {\n const _key = match[3].replace(/\\\\(\\\\')/g, (m) => {\n return UNESCAPE[m]\n })\n\n parsed.push({\n _key,\n _index: -1,\n })\n continue\n }\n }\n\n return parsed\n}\n\n/**\n * @internal\n */\nexport function jsonPathToStudioPath(path: ContentSourceMapParsedPath): Path {\n return path.map((segment) => {\n if (typeof segment === 'string') {\n return segment\n }\n\n if (typeof segment === 'number') {\n return segment\n }\n\n if (segment._key !== '') {\n return {_key: segment._key}\n }\n\n if (segment._index !== -1) {\n return segment._index\n }\n\n throw new Error(`invalid segment:${JSON.stringify(segment)}`)\n })\n}\n\n/**\n * @internal\n */\nexport function studioPathToJsonPath(path: Path | string): ContentSourceMapParsedPath {\n const parsedPath = typeof path === 'string' ? studioPath.fromString(path) : path\n\n return parsedPath.map((segment) => {\n if (typeof segment === 'string') {\n return segment\n }\n\n if (typeof segment === 'number') {\n return segment\n }\n\n if (Array.isArray(segment)) {\n throw new Error(`IndexTuple segments aren't supported:${JSON.stringify(segment)}`)\n }\n\n if (isContentSourceMapParsedPathKeyedSegment(segment)) {\n return segment\n }\n\n if (segment._key) {\n return {_key: segment._key, _index: -1}\n }\n\n throw new Error(`invalid segment:${JSON.stringify(segment)}`)\n })\n}\n\nfunction isContentSourceMapParsedPathKeyedSegment(\n segment: studioPath.PathSegment | ContentSourceMapParsedPath[number],\n): segment is ContentSourceMapParsedPathKeyedSegment {\n return typeof segment === 'object' && '_key' in segment && '_index' in segment\n}\n\n/**\n * @internal\n */\nexport function jsonPathToMappingPath(path: ContentSourceMapParsedPath): (string | number)[] {\n return path.map((segment) => {\n if (typeof segment === 'string') {\n return segment\n }\n\n if (typeof segment === 'number') {\n return segment\n }\n\n if (segment._index !== -1) {\n return segment._index\n }\n\n throw new Error(`invalid segment:${JSON.stringify(segment)}`)\n })\n}\n","import {jsonPath, jsonPathToMappingPath} from './jsonPath'\nimport type {ContentSourceMap, ContentSourceMapMapping, ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function resolveMapping(\n resultPath: ContentSourceMapParsedPath,\n csm?: ContentSourceMap,\n):\n | {\n mapping: ContentSourceMapMapping\n matchedPath: string\n pathSuffix: string\n }\n | undefined {\n if (!csm?.mappings) {\n return undefined\n }\n const resultMappingPath = jsonPath(jsonPathToMappingPath(resultPath))\n\n if (csm.mappings[resultMappingPath] !== undefined) {\n return {\n mapping: csm.mappings[resultMappingPath],\n matchedPath: resultMappingPath,\n pathSuffix: '',\n }\n }\n\n const mappings = Object.entries(csm.mappings)\n .filter(([key]) => resultMappingPath.startsWith(key))\n .sort(([key1], [key2]) => key2.length - key1.length)\n\n if (mappings.length == 0) {\n return undefined\n }\n\n const [matchedPath, mapping] = mappings[0]\n const pathSuffix = resultMappingPath.substring(matchedPath.length)\n return {mapping, matchedPath, pathSuffix}\n}\n","/** @internal */\nexport function isArray(value: unknown): value is Array<unknown> {\n return value !== null && Array.isArray(value)\n}\n","/** @internal */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n","import {isArray} from './isArray'\nimport {isRecord} from './isRecord'\nimport type {ContentSourceMapParsedPath, WalkMapFn} from './types'\n\n/**\n * generic way to walk a nested object or array and apply a mapping function to each value\n * @internal\n */\nexport function walkMap(\n value: unknown,\n mappingFn: WalkMapFn,\n path: ContentSourceMapParsedPath = [],\n): unknown {\n if (isArray(value)) {\n return value.map((v, idx) => {\n if (isRecord(v)) {\n const _key = v['_key']\n if (typeof _key === 'string') {\n return walkMap(v, mappingFn, path.concat({_key, _index: idx}))\n }\n }\n\n return walkMap(v, mappingFn, path.concat(idx))\n })\n }\n\n if (isRecord(value)) {\n return Object.fromEntries(\n Object.entries(value).map(([k, v]) => [k, walkMap(v, mappingFn, path.concat(k))]),\n )\n }\n\n return mappingFn(value, path)\n}\n","const DRAFTS_PREFIX = 'drafts.'\n\n/** @internal */\nexport function getPublishedId(id: string): string {\n if (id.startsWith(DRAFTS_PREFIX)) {\n return id.slice(DRAFTS_PREFIX.length)\n }\n\n return id\n}\n","import {getPublishedId} from './getPublishedId'\nimport {jsonPathToStudioPath} from './jsonPath'\nimport * as studioPath from './studioPath'\nimport type {CreateEditUrlOptions, EditIntentUrl, StudioBaseUrl} from './types'\n\n/** @internal */\nexport function createEditUrl(options: CreateEditUrlOptions): `${StudioBaseUrl}${EditIntentUrl}` {\n const {\n baseUrl,\n workspace: _workspace = 'default',\n tool: _tool = 'default',\n id: _id,\n type,\n path,\n } = options\n\n if (!baseUrl) {\n throw new Error('baseUrl is required')\n }\n if (!path) {\n throw new Error('path is required')\n }\n if (!_id) {\n throw new Error('id is required')\n }\n if (baseUrl !== '/' && baseUrl.endsWith('/')) {\n throw new Error('baseUrl must not end with a slash')\n }\n\n const workspace = _workspace === 'default' ? undefined : _workspace\n const tool = _tool === 'default' ? undefined : _tool\n // eslint-disable-next-line no-warning-comments\n // @TODO allow passing draft prefixed IDs, to better open the right perspective mode\n const id = getPublishedId(_id)\n const stringifiedPath = studioPath.toString(jsonPathToStudioPath(path))\n\n // eslint-disable-next-line no-warning-comments\n // @TODO Using searchParams as a temporary workaround until `@sanity/overlays` can decode state from the path reliably\n const searchParams = new URLSearchParams({\n baseUrl,\n id,\n type,\n path: stringifiedPath,\n })\n if (workspace) {\n searchParams.set('workspace', workspace)\n }\n if (tool) {\n searchParams.set('tool', tool)\n }\n\n const segments = [baseUrl === '/' ? '' : baseUrl]\n if (workspace) {\n segments.push(workspace)\n }\n if (tool) {\n segments.push(tool)\n }\n const routerParams = [`id=${id}`, `type=${type}`, `path=${encodeURIComponent(stringifiedPath)}`]\n segments.push('intent', 'edit', `${routerParams.join(';')}?${searchParams}`)\n return segments.join('/') as unknown as `${StudioBaseUrl}${EditIntentUrl}`\n}\n","import {parseJsonPath} from './jsonPath'\nimport {resolveMapping} from './resolveMapping'\nimport type {\n CreateEditUrlOptions,\n ResolveEditInfoOptions,\n StudioBaseRoute,\n StudioBaseUrl,\n StudioUrl,\n} from './types'\n\n/** @internal */\nexport function resolveEditInfo(options: ResolveEditInfoOptions): CreateEditUrlOptions | undefined {\n const {resultSourceMap: csm, resultPath} = options\n const {mapping, pathSuffix} = resolveMapping(resultPath, csm) || {}\n\n if (!mapping) {\n // console.warn('no mapping for path', { path: resultPath, sourceMap: csm })\n return undefined\n }\n\n if (mapping.source.type === 'literal') {\n return undefined\n }\n\n if (mapping.source.type === 'unknown') {\n return undefined\n }\n\n const sourceDoc = csm.documents[mapping.source.document]\n const sourcePath = csm.paths[mapping.source.path]\n\n if (sourceDoc && sourcePath) {\n const {baseUrl, workspace, tool} = resolveStudioBaseRoute(\n typeof options.studioUrl === 'function' ? options.studioUrl(sourceDoc) : options.studioUrl,\n )\n if (!baseUrl) return undefined\n const {_id, _type} = sourceDoc\n return {\n baseUrl,\n workspace,\n tool,\n id: _id,\n type: _type,\n path: parseJsonPath(sourcePath + pathSuffix),\n } satisfies CreateEditUrlOptions\n }\n\n return undefined\n}\n\n/** @internal */\nexport function resolveStudioBaseRoute(studioUrl: StudioUrl): StudioBaseRoute {\n let baseUrl: StudioBaseUrl = typeof studioUrl === 'string' ? studioUrl : studioUrl.baseUrl\n if (baseUrl !== '/') {\n baseUrl = baseUrl.replace(/\\/$/, '')\n }\n if (typeof studioUrl === 'string') {\n return {baseUrl}\n }\n return {...studioUrl, baseUrl}\n}\n"],"names":["rePropName","reKeySegment","reIndexTuple","isIndexSegment","segment","test","isKeySegment","trim","isIndexTuple","Array","isArray","length","from","to","get","obj","path","defaultVal","select","fromString","Error","acc","i","find","item","_key","toString","reduce","target","segmentType","concat","separator","stringify","segments","match","map","parsePathSegment","parseIndexSegment","parseKeySegment","parseIndexTupleSegment","Number","replace","split","seg","ESCAPE","UNESCAPE","jsonPath","escapedKey","_index","join","parseJsonPath","parsed","parseRe","exec","key","m","push","parseInt","jsonPathToStudioPath","JSON","studioPathToJsonPath","parsedPath","studioPath.fromString","isContentSourceMapParsedPathKeyedSegment","jsonPathToMappingPath","resolveMapping","resultPath","csm","mappings","resultMappingPath","mapping","matchedPath","pathSuffix","Object","entries","filter","_ref","startsWith","sort","_ref2","_ref3","key1","key2","substring","value","isRecord","walkMap","mappingFn","arguments","undefined","v","idx","fromEntries","_ref4","k","DRAFTS_PREFIX","getPublishedId","id","slice","createEditUrl","options","baseUrl","workspace","_workspace","tool","_tool","_id","type","endsWith","stringifiedPath","studioPath.toString","searchParams","URLSearchParams","set","routerParams","encodeURIComponent","resolveEditInfo","resultSourceMap","source","sourceDoc","documents","document","sourcePath","paths","resolveStudioBaseRoute","studioUrl","_type"],"mappings":"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"}
package/dist/csm.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', {
4
4
  value: true
5
5
  });
6
- var resolveEditInfo = require('./_chunks/resolveEditInfo-2keGcJpx.cjs');
6
+ var resolveEditInfo = require('./_chunks/resolveEditInfo-mxszjGr8.cjs');
7
7
  const defaultUpdateFunction = changed => changed;
8
8
  function applySourceDocuments(result, resultSourceMap, getCachedDocument) {
9
9
  let updateFn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : defaultUpdateFunction;
@@ -55,15 +55,11 @@ function resolvedKeyedSourcePath(options) {
55
55
  }
56
56
  function resolveEditUrl(options) {
57
57
  const {
58
- projectId,
59
- dataset,
60
58
  resultSourceMap,
61
59
  studioUrl
62
60
  } = options;
63
61
  const resultPath = resolveEditInfo.studioPathToJsonPath(options.resultPath);
64
62
  const editInfo = resolveEditInfo.resolveEditInfo({
65
- projectId,
66
- dataset,
67
63
  resultPath,
68
64
  resultSourceMap,
69
65
  studioUrl
package/dist/csm.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"csm.cjs","sources":["../src/csm/applySourceDocuments.ts","../src/csm/resolvedKeyedSourcePath.ts","../src/csm/resolveEditUrl.ts"],"sourcesContent":["import {parseJsonPath} from './jsonPath'\nimport {resolveMapping} from './resolveMapping'\nimport * as paths from './studioPath'\nimport type {\n Any,\n ApplySourceDocumentsUpdateFunction,\n ContentSourceMap,\n ContentSourceMapDocuments,\n Path,\n SanityDocument,\n} from './types'\nimport {walkMap} from './walkMap'\n\nconst defaultUpdateFunction = <T = unknown>(changed: T): T => changed\n\n/**\n * Optimistically applies source documents to a result, using the content source map to trace fields.\n * Can be used to apply mutations to documents being edited in a Studio, or any mutation on Content Lake, to a result with extremely low latency.\n * @alpha\n */\nexport function applySourceDocuments<Result = unknown>(\n result: Result,\n resultSourceMap: ContentSourceMap | undefined,\n getCachedDocument: (\n sourceDocument: ContentSourceMapDocuments[number],\n ) => SanityDocument | undefined,\n updateFn: ApplySourceDocumentsUpdateFunction = defaultUpdateFunction,\n): Result {\n if (!resultSourceMap) return result\n\n return walkMap(JSON.parse(JSON.stringify(result)), (value, path) => {\n const resolveMappingResult = resolveMapping(path, resultSourceMap)\n if (!resolveMappingResult) {\n // console.warn('no mapping for path', path)\n return value\n }\n\n const {mapping, pathSuffix} = resolveMappingResult\n if (mapping.type !== 'value') {\n return value\n }\n\n if (mapping.source.type !== 'documentValue') {\n return value\n }\n\n const sourceDocument = resultSourceMap.documents[mapping.source.document]\n const sourcePath = resultSourceMap.paths[mapping.source.path]\n\n if (sourceDocument) {\n const cachedDocument = getCachedDocument(sourceDocument)\n if (!cachedDocument) {\n return value\n }\n\n const parsedPath = parseJsonPath(sourcePath + pathSuffix)\n const changedValue = cachedDocument\n ? paths.get<Result[keyof Result]>(cachedDocument, paths.toString(parsedPath as Path), value)\n : value\n return value === changedValue\n ? value\n : updateFn<Result[keyof Result]>(changedValue as Any, {\n cachedDocument,\n previousValue: value as Result[keyof Result],\n sourceDocument,\n sourcePath: parsedPath,\n })\n }\n\n return value\n }) as Result\n}\n","import {jsonPath, parseJsonPath} from './jsonPath'\nimport type {ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function resolvedKeyedSourcePath(options: {\n keyedResultPath: ContentSourceMapParsedPath\n pathSuffix?: string\n sourceBasePath: string\n}): ContentSourceMapParsedPath {\n const {keyedResultPath, pathSuffix, sourceBasePath} = options\n\n const inferredResultPath = pathSuffix === undefined ? [] : parseJsonPath(pathSuffix)\n\n const inferredPath = keyedResultPath.slice(keyedResultPath.length - inferredResultPath.length)\n\n const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath).slice(1) : ''\n\n return parseJsonPath(sourceBasePath + inferredPathSuffix)\n}\n","import {createEditUrl} from './createEditUrl'\nimport {studioPathToJsonPath} from './jsonPath'\nimport {resolveEditInfo} from './resolveEditInfo'\nimport type {ResolveEditUrlOptions} from './types'\n\n/** @alpha */\nexport function resolveEditUrl(\n options: ResolveEditUrlOptions,\n): ReturnType<typeof createEditUrl> | undefined {\n const {projectId, dataset, resultSourceMap, studioUrl} = options\n const resultPath = studioPathToJsonPath(options.resultPath)\n\n const editInfo = resolveEditInfo({\n projectId,\n dataset,\n resultPath,\n resultSourceMap,\n studioUrl,\n })\n if (!editInfo) {\n return undefined\n }\n\n return createEditUrl(editInfo)\n}\n"],"names":["defaultUpdateFunction","changed","applySourceDocuments","result","resultSourceMap","getCachedDocument","updateFn","walkMap","JSON","parse","stringify","value","path","resolveMappingResult","resolveMapping","mapping","pathSuffix","type","source","sourceDocument","documents","document","sourcePath","paths","cachedDocument","parsedPath","parseJsonPath","changedValue","paths.get","paths.toString","toString","previousValue","resolvedKeyedSourcePath","options","keyedResultPath","sourceBasePath","inferredResultPath","inferredPath","slice","length","inferredPathSuffix","jsonPath","resolveEditUrl","projectId","dataset","studioUrl","resultPath","studioPathToJsonPath","editInfo","resolveEditInfo","createEditUrl"],"mappings":"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"}
1
+ {"version":3,"file":"csm.cjs","sources":["../src/csm/applySourceDocuments.ts","../src/csm/resolvedKeyedSourcePath.ts","../src/csm/resolveEditUrl.ts"],"sourcesContent":["import {parseJsonPath} from './jsonPath'\nimport {resolveMapping} from './resolveMapping'\nimport * as paths from './studioPath'\nimport type {\n Any,\n ApplySourceDocumentsUpdateFunction,\n ContentSourceMap,\n ContentSourceMapDocuments,\n Path,\n SanityDocument,\n} from './types'\nimport {walkMap} from './walkMap'\n\nconst defaultUpdateFunction = <T = unknown>(changed: T): T => changed\n\n/**\n * Optimistically applies source documents to a result, using the content source map to trace fields.\n * Can be used to apply mutations to documents being edited in a Studio, or any mutation on Content Lake, to a result with extremely low latency.\n * @alpha\n */\nexport function applySourceDocuments<Result = unknown>(\n result: Result,\n resultSourceMap: ContentSourceMap | undefined,\n getCachedDocument: (\n sourceDocument: ContentSourceMapDocuments[number],\n ) => SanityDocument | undefined,\n updateFn: ApplySourceDocumentsUpdateFunction = defaultUpdateFunction,\n): Result {\n if (!resultSourceMap) return result\n\n return walkMap(JSON.parse(JSON.stringify(result)), (value, path) => {\n const resolveMappingResult = resolveMapping(path, resultSourceMap)\n if (!resolveMappingResult) {\n // console.warn('no mapping for path', path)\n return value\n }\n\n const {mapping, pathSuffix} = resolveMappingResult\n if (mapping.type !== 'value') {\n return value\n }\n\n if (mapping.source.type !== 'documentValue') {\n return value\n }\n\n const sourceDocument = resultSourceMap.documents[mapping.source.document]\n const sourcePath = resultSourceMap.paths[mapping.source.path]\n\n if (sourceDocument) {\n const cachedDocument = getCachedDocument(sourceDocument)\n if (!cachedDocument) {\n return value\n }\n\n const parsedPath = parseJsonPath(sourcePath + pathSuffix)\n const changedValue = cachedDocument\n ? paths.get<Result[keyof Result]>(cachedDocument, paths.toString(parsedPath as Path), value)\n : value\n return value === changedValue\n ? value\n : updateFn<Result[keyof Result]>(changedValue as Any, {\n cachedDocument,\n previousValue: value as Result[keyof Result],\n sourceDocument,\n sourcePath: parsedPath,\n })\n }\n\n return value\n }) as Result\n}\n","import {jsonPath, parseJsonPath} from './jsonPath'\nimport type {ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function resolvedKeyedSourcePath(options: {\n keyedResultPath: ContentSourceMapParsedPath\n pathSuffix?: string\n sourceBasePath: string\n}): ContentSourceMapParsedPath {\n const {keyedResultPath, pathSuffix, sourceBasePath} = options\n\n const inferredResultPath = pathSuffix === undefined ? [] : parseJsonPath(pathSuffix)\n\n const inferredPath = keyedResultPath.slice(keyedResultPath.length - inferredResultPath.length)\n\n const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath).slice(1) : ''\n\n return parseJsonPath(sourceBasePath + inferredPathSuffix)\n}\n","import {createEditUrl} from './createEditUrl'\nimport {studioPathToJsonPath} from './jsonPath'\nimport {resolveEditInfo} from './resolveEditInfo'\nimport type {ResolveEditUrlOptions} from './types'\n\n/** @alpha */\nexport function resolveEditUrl(\n options: ResolveEditUrlOptions,\n): ReturnType<typeof createEditUrl> | undefined {\n const {resultSourceMap, studioUrl} = options\n const resultPath = studioPathToJsonPath(options.resultPath)\n\n const editInfo = resolveEditInfo({\n resultPath,\n resultSourceMap,\n studioUrl,\n })\n if (!editInfo) {\n return undefined\n }\n\n return createEditUrl(editInfo)\n}\n"],"names":["defaultUpdateFunction","changed","applySourceDocuments","result","resultSourceMap","getCachedDocument","updateFn","walkMap","JSON","parse","stringify","value","path","resolveMappingResult","resolveMapping","mapping","pathSuffix","type","source","sourceDocument","documents","document","sourcePath","paths","cachedDocument","parsedPath","parseJsonPath","changedValue","paths.get","paths.toString","toString","previousValue","resolvedKeyedSourcePath","options","keyedResultPath","sourceBasePath","inferredResultPath","inferredPath","slice","length","inferredPathSuffix","jsonPath","resolveEditUrl","studioUrl","resultPath","studioPathToJsonPath","editInfo","resolveEditInfo","createEditUrl"],"mappings":";;;;;;AAaA,MAAMA,qBAAA,GAAsCC,OAAkB,IAAAA,OAAA;AAOvD,SAASC,oBACdA,CAAAC,MAAA,EACAC,eACA,EAAAC,iBAAA,EAIQ;EAAA,IADRC,+EAA+CN,qBACvC;EACR,IAAI,CAACI,eAAA,EAAwB,OAAAD,MAAA;EAEtB,OAAAI,eAAA,CAAAA,OAAA,CAAQC,IAAK,CAAAC,KAAA,CAAMD,IAAK,CAAAE,SAAA,CAAUP,MAAM,CAAC,CAAA,EAAG,CAACQ,KAAA,EAAOC,IAAS,KAAA;IAC5D,MAAAC,oBAAA,GAAuBC,eAAAA,CAAAA,cAAe,CAAAF,IAAA,EAAMR,eAAe,CAAA;IACjE,IAAI,CAACS,oBAAsB,EAAA;MAElB,OAAAF,KAAA;IACT;IAEM,MAAA;MAACI,OAAS;MAAAC;IAAc,CAAA,GAAAH,oBAAA;IAC1B,IAAAE,OAAA,CAAQE,SAAS,OAAS,EAAA;MACrB,OAAAN,KAAA;IACT;IAEI,IAAAI,OAAA,CAAQG,MAAO,CAAAD,IAAA,KAAS,eAAiB,EAAA;MACpC,OAAAN,KAAA;IACT;IAEA,MAAMQ,cAAiB,GAAAf,eAAA,CAAgBgB,SAAU,CAAAL,OAAA,CAAQG,OAAOG,QAAQ,CAAA;IACxE,MAAMC,UAAa,GAAAlB,eAAA,CAAgBmB,KAAM,CAAAR,OAAA,CAAQG,OAAON,IAAI,CAAA;IAE5D,IAAIO,cAAgB,EAAA;MACZ,MAAAK,cAAA,GAAiBnB,kBAAkBc,cAAc,CAAA;MACvD,IAAI,CAACK,cAAgB,EAAA;QACZ,OAAAb,KAAA;MACT;MAEM,MAAAc,UAAA,GAAaC,eAAAA,CAAAA,aAAc,CAAAJ,UAAA,GAAaN,UAAU,CAAA;MAClD,MAAAW,YAAA,GAAeH,cACjB,GAAAI,eAAAA,CAAAA,GAAgC,CAAAJ,cAAA,EAAgBK,eAAe,CAAAC,QAAA,CAAAL,UAAkB,CAAG,EAAAd,KAAK,CACzF,GAAAA,KAAA;MACJ,OAAOA,KAAU,KAAAgB,YAAA,GACbhB,KACA,GAAAL,QAAA,CAA+BqB,YAAqB,EAAA;QAClDH,cAAA;QACAO,aAAe,EAAApB,KAAA;QACfQ,cAAA;QACAG,UAAY,EAAAG;MAAA,CACb,CAAA;IACP;IAEO,OAAAd,KAAA;EAAA,CACR,CAAA;AACH;ACjEO,SAASqB,wBAAwBC,OAIT,EAAA;EAC7B,MAAM;IAACC,eAAA;IAAiBlB,UAAY;IAAAmB;EAAA,CAAkB,GAAAF,OAAA;EAEtD,MAAMG,qBAAqBpB,UAAe,KAAA,KAAA,CAAA,GAAY,EAAC,GAAIU,eAAAA,CAAAA,cAAcV,UAAU,CAAA;EAEnF,MAAMqB,eAAeH,eAAgB,CAAAI,KAAA,CAAMJ,eAAgB,CAAAK,MAAA,GAASH,mBAAmBG,MAAM,CAAA;EAEvF,MAAAC,kBAAA,GAAqBH,aAAaE,MAAS,GAAAE,eAAA,CAAAA,QAAA,CAASJ,YAAY,CAAE,CAAAC,KAAA,CAAM,CAAC,CAAI,GAAA,EAAA;EAE5E,OAAAZ,eAAA,CAAAA,aAAA,CAAcS,iBAAiBK,kBAAkB,CAAA;AAC1D;ACdO,SAASE,eACdT,OAC8C,EAAA;EACxC,MAAA;IAAC7B,eAAiB;IAAAuC;EAAa,CAAA,GAAAV,OAAA;EAC/B,MAAAW,UAAA,GAAaC,eAAAA,CAAAA,oBAAqB,CAAAZ,OAAA,CAAQW,UAAU,CAAA;EAE1D,MAAME,WAAWC,eAAAA,CAAAA,eAAgB,CAAA;IAC/BH,UAAA;IACAxC,eAAA;IACAuC;EAAA,CACD,CAAA;EACD,IAAI,CAACG,QAAU,EAAA;IACN,OAAA,KAAA,CAAA;EACT;EAEA,OAAOE,eAAAA,CAAAA,cAAcF,QAAQ,CAAA;AAC/B;;;;;;;;;;;;;"}
package/dist/csm.d.ts CHANGED
@@ -142,8 +142,6 @@ export declare function createEditUrl(
142
142
  /** @internal */
143
143
  export declare interface CreateEditUrlOptions {
144
144
  baseUrl: string
145
- projectId: string
146
- dataset: string
147
145
  workspace?: string
148
146
  tool?: string
149
147
  id: string
@@ -225,8 +223,7 @@ export declare function resolveEditInfo(
225
223
  ): CreateEditUrlOptions | undefined
226
224
 
227
225
  /** @alpha */
228
- export declare interface ResolveEditInfoOptions
229
- extends Pick<CreateEditUrlOptions, 'projectId' | 'dataset'> {
226
+ export declare interface ResolveEditInfoOptions {
230
227
  studioUrl: StudioUrl | ResolveStudioUrl
231
228
  resultSourceMap: ContentSourceMap
232
229
  resultPath: ContentSourceMapParsedPath
package/dist/csm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { walkMap, resolveMapping, parseJsonPath, get, toString, jsonPath, studioPathToJsonPath, resolveEditInfo, createEditUrl } from './_chunks/resolveEditInfo-hVGpZYTe.js';
2
- export { getPublishedId, jsonPathToStudioPath, studioPath } from './_chunks/resolveEditInfo-hVGpZYTe.js';
1
+ import { walkMap, resolveMapping, parseJsonPath, get, toString, jsonPath, studioPathToJsonPath, resolveEditInfo, createEditUrl } from './_chunks/resolveEditInfo-Yk61Qm6L.js';
2
+ export { getPublishedId, jsonPathToStudioPath, studioPath } from './_chunks/resolveEditInfo-Yk61Qm6L.js';
3
3
  const defaultUpdateFunction = changed => changed;
4
4
  function applySourceDocuments(result, resultSourceMap, getCachedDocument) {
5
5
  let updateFn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : defaultUpdateFunction;
@@ -51,15 +51,11 @@ function resolvedKeyedSourcePath(options) {
51
51
  }
52
52
  function resolveEditUrl(options) {
53
53
  const {
54
- projectId,
55
- dataset,
56
54
  resultSourceMap,
57
55
  studioUrl
58
56
  } = options;
59
57
  const resultPath = studioPathToJsonPath(options.resultPath);
60
58
  const editInfo = resolveEditInfo({
61
- projectId,
62
- dataset,
63
59
  resultPath,
64
60
  resultSourceMap,
65
61
  studioUrl
package/dist/csm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"csm.js","sources":["../src/csm/applySourceDocuments.ts","../src/csm/resolvedKeyedSourcePath.ts","../src/csm/resolveEditUrl.ts"],"sourcesContent":["import {parseJsonPath} from './jsonPath'\nimport {resolveMapping} from './resolveMapping'\nimport * as paths from './studioPath'\nimport type {\n Any,\n ApplySourceDocumentsUpdateFunction,\n ContentSourceMap,\n ContentSourceMapDocuments,\n Path,\n SanityDocument,\n} from './types'\nimport {walkMap} from './walkMap'\n\nconst defaultUpdateFunction = <T = unknown>(changed: T): T => changed\n\n/**\n * Optimistically applies source documents to a result, using the content source map to trace fields.\n * Can be used to apply mutations to documents being edited in a Studio, or any mutation on Content Lake, to a result with extremely low latency.\n * @alpha\n */\nexport function applySourceDocuments<Result = unknown>(\n result: Result,\n resultSourceMap: ContentSourceMap | undefined,\n getCachedDocument: (\n sourceDocument: ContentSourceMapDocuments[number],\n ) => SanityDocument | undefined,\n updateFn: ApplySourceDocumentsUpdateFunction = defaultUpdateFunction,\n): Result {\n if (!resultSourceMap) return result\n\n return walkMap(JSON.parse(JSON.stringify(result)), (value, path) => {\n const resolveMappingResult = resolveMapping(path, resultSourceMap)\n if (!resolveMappingResult) {\n // console.warn('no mapping for path', path)\n return value\n }\n\n const {mapping, pathSuffix} = resolveMappingResult\n if (mapping.type !== 'value') {\n return value\n }\n\n if (mapping.source.type !== 'documentValue') {\n return value\n }\n\n const sourceDocument = resultSourceMap.documents[mapping.source.document]\n const sourcePath = resultSourceMap.paths[mapping.source.path]\n\n if (sourceDocument) {\n const cachedDocument = getCachedDocument(sourceDocument)\n if (!cachedDocument) {\n return value\n }\n\n const parsedPath = parseJsonPath(sourcePath + pathSuffix)\n const changedValue = cachedDocument\n ? paths.get<Result[keyof Result]>(cachedDocument, paths.toString(parsedPath as Path), value)\n : value\n return value === changedValue\n ? value\n : updateFn<Result[keyof Result]>(changedValue as Any, {\n cachedDocument,\n previousValue: value as Result[keyof Result],\n sourceDocument,\n sourcePath: parsedPath,\n })\n }\n\n return value\n }) as Result\n}\n","import {jsonPath, parseJsonPath} from './jsonPath'\nimport type {ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function resolvedKeyedSourcePath(options: {\n keyedResultPath: ContentSourceMapParsedPath\n pathSuffix?: string\n sourceBasePath: string\n}): ContentSourceMapParsedPath {\n const {keyedResultPath, pathSuffix, sourceBasePath} = options\n\n const inferredResultPath = pathSuffix === undefined ? [] : parseJsonPath(pathSuffix)\n\n const inferredPath = keyedResultPath.slice(keyedResultPath.length - inferredResultPath.length)\n\n const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath).slice(1) : ''\n\n return parseJsonPath(sourceBasePath + inferredPathSuffix)\n}\n","import {createEditUrl} from './createEditUrl'\nimport {studioPathToJsonPath} from './jsonPath'\nimport {resolveEditInfo} from './resolveEditInfo'\nimport type {ResolveEditUrlOptions} from './types'\n\n/** @alpha */\nexport function resolveEditUrl(\n options: ResolveEditUrlOptions,\n): ReturnType<typeof createEditUrl> | undefined {\n const {projectId, dataset, resultSourceMap, studioUrl} = options\n const resultPath = studioPathToJsonPath(options.resultPath)\n\n const editInfo = resolveEditInfo({\n projectId,\n dataset,\n resultPath,\n resultSourceMap,\n studioUrl,\n })\n if (!editInfo) {\n return undefined\n }\n\n return createEditUrl(editInfo)\n}\n"],"names":["defaultUpdateFunction","changed","applySourceDocuments","result","resultSourceMap","getCachedDocument","updateFn","walkMap","JSON","parse","stringify","value","path","resolveMappingResult","resolveMapping","mapping","pathSuffix","type","source","sourceDocument","documents","document","sourcePath","paths","cachedDocument","parsedPath","parseJsonPath","changedValue","paths.get","paths.toString","previousValue","resolvedKeyedSourcePath","options","keyedResultPath","sourceBasePath","inferredResultPath","inferredPath","slice","length","inferredPathSuffix","jsonPath","resolveEditUrl","projectId","dataset","studioUrl","resultPath","studioPathToJsonPath","editInfo","resolveEditInfo","createEditUrl"],"mappings":";;AAaA,MAAMA,qBAAA,GAAsCC,OAAkB,IAAAA,OAAA;AAOvD,SAASC,oBACdA,CAAAC,MAAA,EACAC,eACA,EAAAC,iBAAA,EAIQ;EAAA,IADRC,+EAA+CN,qBACvC;EACR,IAAI,CAACI,eAAA,EAAwB,OAAAD,MAAA;EAEtB,OAAAI,OAAA,CAAQC,IAAK,CAAAC,KAAA,CAAMD,IAAK,CAAAE,SAAA,CAAUP,MAAM,CAAC,CAAA,EAAG,CAACQ,KAAA,EAAOC,IAAS,KAAA;IAC5D,MAAAC,oBAAA,GAAuBC,cAAe,CAAAF,IAAA,EAAMR,eAAe,CAAA;IACjE,IAAI,CAACS,oBAAsB,EAAA;MAElB,OAAAF,KAAA;IACT;IAEM,MAAA;MAACI,OAAS;MAAAC;IAAc,CAAA,GAAAH,oBAAA;IAC1B,IAAAE,OAAA,CAAQE,SAAS,OAAS,EAAA;MACrB,OAAAN,KAAA;IACT;IAEI,IAAAI,OAAA,CAAQG,MAAO,CAAAD,IAAA,KAAS,eAAiB,EAAA;MACpC,OAAAN,KAAA;IACT;IAEA,MAAMQ,cAAiB,GAAAf,eAAA,CAAgBgB,SAAU,CAAAL,OAAA,CAAQG,OAAOG,QAAQ,CAAA;IACxE,MAAMC,UAAa,GAAAlB,eAAA,CAAgBmB,KAAM,CAAAR,OAAA,CAAQG,OAAON,IAAI,CAAA;IAE5D,IAAIO,cAAgB,EAAA;MACZ,MAAAK,cAAA,GAAiBnB,kBAAkBc,cAAc,CAAA;MACvD,IAAI,CAACK,cAAgB,EAAA;QACZ,OAAAb,KAAA;MACT;MAEM,MAAAc,UAAA,GAAaC,aAAc,CAAAJ,UAAA,GAAaN,UAAU,CAAA;MAClD,MAAAW,YAAA,GAAeH,cACjB,GAAAI,GAAgC,CAAAJ,cAAA,EAAgBK,QAAe,CAAAJ,UAAkB,CAAG,EAAAd,KAAK,CACzF,GAAAA,KAAA;MACJ,OAAOA,KAAU,KAAAgB,YAAA,GACbhB,KACA,GAAAL,QAAA,CAA+BqB,YAAqB,EAAA;QAClDH,cAAA;QACAM,aAAe,EAAAnB,KAAA;QACfQ,cAAA;QACAG,UAAY,EAAAG;MAAA,CACb,CAAA;IACP;IAEO,OAAAd,KAAA;EAAA,CACR,CAAA;AACH;ACjEO,SAASoB,wBAAwBC,OAIT,EAAA;EAC7B,MAAM;IAACC,eAAA;IAAiBjB,UAAY;IAAAkB;EAAA,CAAkB,GAAAF,OAAA;EAEtD,MAAMG,qBAAqBnB,UAAe,KAAA,KAAA,CAAA,GAAY,EAAC,GAAIU,cAAcV,UAAU,CAAA;EAEnF,MAAMoB,eAAeH,eAAgB,CAAAI,KAAA,CAAMJ,eAAgB,CAAAK,MAAA,GAASH,mBAAmBG,MAAM,CAAA;EAEvF,MAAAC,kBAAA,GAAqBH,aAAaE,MAAS,GAAAE,QAAA,CAASJ,YAAY,CAAE,CAAAC,KAAA,CAAM,CAAC,CAAI,GAAA,EAAA;EAE5E,OAAAX,aAAA,CAAcQ,iBAAiBK,kBAAkB,CAAA;AAC1D;ACdO,SAASE,eACdT,OAC8C,EAAA;EAC9C,MAAM;IAACU,SAAA;IAAWC,OAAS;IAAAvC,eAAA;IAAiBwC;GAAa,GAAAZ,OAAA;EACnD,MAAAa,UAAA,GAAaC,oBAAqB,CAAAd,OAAA,CAAQa,UAAU,CAAA;EAE1D,MAAME,WAAWC,eAAgB,CAAA;IAC/BN,SAAA;IACAC,OAAA;IACAE,UAAA;IACAzC,eAAA;IACAwC;EAAA,CACD,CAAA;EACD,IAAI,CAACG,QAAU,EAAA;IACN,OAAA,KAAA,CAAA;EACT;EAEA,OAAOE,cAAcF,QAAQ,CAAA;AAC/B;"}
1
+ {"version":3,"file":"csm.js","sources":["../src/csm/applySourceDocuments.ts","../src/csm/resolvedKeyedSourcePath.ts","../src/csm/resolveEditUrl.ts"],"sourcesContent":["import {parseJsonPath} from './jsonPath'\nimport {resolveMapping} from './resolveMapping'\nimport * as paths from './studioPath'\nimport type {\n Any,\n ApplySourceDocumentsUpdateFunction,\n ContentSourceMap,\n ContentSourceMapDocuments,\n Path,\n SanityDocument,\n} from './types'\nimport {walkMap} from './walkMap'\n\nconst defaultUpdateFunction = <T = unknown>(changed: T): T => changed\n\n/**\n * Optimistically applies source documents to a result, using the content source map to trace fields.\n * Can be used to apply mutations to documents being edited in a Studio, or any mutation on Content Lake, to a result with extremely low latency.\n * @alpha\n */\nexport function applySourceDocuments<Result = unknown>(\n result: Result,\n resultSourceMap: ContentSourceMap | undefined,\n getCachedDocument: (\n sourceDocument: ContentSourceMapDocuments[number],\n ) => SanityDocument | undefined,\n updateFn: ApplySourceDocumentsUpdateFunction = defaultUpdateFunction,\n): Result {\n if (!resultSourceMap) return result\n\n return walkMap(JSON.parse(JSON.stringify(result)), (value, path) => {\n const resolveMappingResult = resolveMapping(path, resultSourceMap)\n if (!resolveMappingResult) {\n // console.warn('no mapping for path', path)\n return value\n }\n\n const {mapping, pathSuffix} = resolveMappingResult\n if (mapping.type !== 'value') {\n return value\n }\n\n if (mapping.source.type !== 'documentValue') {\n return value\n }\n\n const sourceDocument = resultSourceMap.documents[mapping.source.document]\n const sourcePath = resultSourceMap.paths[mapping.source.path]\n\n if (sourceDocument) {\n const cachedDocument = getCachedDocument(sourceDocument)\n if (!cachedDocument) {\n return value\n }\n\n const parsedPath = parseJsonPath(sourcePath + pathSuffix)\n const changedValue = cachedDocument\n ? paths.get<Result[keyof Result]>(cachedDocument, paths.toString(parsedPath as Path), value)\n : value\n return value === changedValue\n ? value\n : updateFn<Result[keyof Result]>(changedValue as Any, {\n cachedDocument,\n previousValue: value as Result[keyof Result],\n sourceDocument,\n sourcePath: parsedPath,\n })\n }\n\n return value\n }) as Result\n}\n","import {jsonPath, parseJsonPath} from './jsonPath'\nimport type {ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function resolvedKeyedSourcePath(options: {\n keyedResultPath: ContentSourceMapParsedPath\n pathSuffix?: string\n sourceBasePath: string\n}): ContentSourceMapParsedPath {\n const {keyedResultPath, pathSuffix, sourceBasePath} = options\n\n const inferredResultPath = pathSuffix === undefined ? [] : parseJsonPath(pathSuffix)\n\n const inferredPath = keyedResultPath.slice(keyedResultPath.length - inferredResultPath.length)\n\n const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath).slice(1) : ''\n\n return parseJsonPath(sourceBasePath + inferredPathSuffix)\n}\n","import {createEditUrl} from './createEditUrl'\nimport {studioPathToJsonPath} from './jsonPath'\nimport {resolveEditInfo} from './resolveEditInfo'\nimport type {ResolveEditUrlOptions} from './types'\n\n/** @alpha */\nexport function resolveEditUrl(\n options: ResolveEditUrlOptions,\n): ReturnType<typeof createEditUrl> | undefined {\n const {resultSourceMap, studioUrl} = options\n const resultPath = studioPathToJsonPath(options.resultPath)\n\n const editInfo = resolveEditInfo({\n resultPath,\n resultSourceMap,\n studioUrl,\n })\n if (!editInfo) {\n return undefined\n }\n\n return createEditUrl(editInfo)\n}\n"],"names":["defaultUpdateFunction","changed","applySourceDocuments","result","resultSourceMap","getCachedDocument","updateFn","walkMap","JSON","parse","stringify","value","path","resolveMappingResult","resolveMapping","mapping","pathSuffix","type","source","sourceDocument","documents","document","sourcePath","paths","cachedDocument","parsedPath","parseJsonPath","changedValue","paths.get","paths.toString","previousValue","resolvedKeyedSourcePath","options","keyedResultPath","sourceBasePath","inferredResultPath","inferredPath","slice","length","inferredPathSuffix","jsonPath","resolveEditUrl","studioUrl","resultPath","studioPathToJsonPath","editInfo","resolveEditInfo","createEditUrl"],"mappings":";;AAaA,MAAMA,qBAAA,GAAsCC,OAAkB,IAAAA,OAAA;AAOvD,SAASC,oBACdA,CAAAC,MAAA,EACAC,eACA,EAAAC,iBAAA,EAIQ;EAAA,IADRC,+EAA+CN,qBACvC;EACR,IAAI,CAACI,eAAA,EAAwB,OAAAD,MAAA;EAEtB,OAAAI,OAAA,CAAQC,IAAK,CAAAC,KAAA,CAAMD,IAAK,CAAAE,SAAA,CAAUP,MAAM,CAAC,CAAA,EAAG,CAACQ,KAAA,EAAOC,IAAS,KAAA;IAC5D,MAAAC,oBAAA,GAAuBC,cAAe,CAAAF,IAAA,EAAMR,eAAe,CAAA;IACjE,IAAI,CAACS,oBAAsB,EAAA;MAElB,OAAAF,KAAA;IACT;IAEM,MAAA;MAACI,OAAS;MAAAC;IAAc,CAAA,GAAAH,oBAAA;IAC1B,IAAAE,OAAA,CAAQE,SAAS,OAAS,EAAA;MACrB,OAAAN,KAAA;IACT;IAEI,IAAAI,OAAA,CAAQG,MAAO,CAAAD,IAAA,KAAS,eAAiB,EAAA;MACpC,OAAAN,KAAA;IACT;IAEA,MAAMQ,cAAiB,GAAAf,eAAA,CAAgBgB,SAAU,CAAAL,OAAA,CAAQG,OAAOG,QAAQ,CAAA;IACxE,MAAMC,UAAa,GAAAlB,eAAA,CAAgBmB,KAAM,CAAAR,OAAA,CAAQG,OAAON,IAAI,CAAA;IAE5D,IAAIO,cAAgB,EAAA;MACZ,MAAAK,cAAA,GAAiBnB,kBAAkBc,cAAc,CAAA;MACvD,IAAI,CAACK,cAAgB,EAAA;QACZ,OAAAb,KAAA;MACT;MAEM,MAAAc,UAAA,GAAaC,aAAc,CAAAJ,UAAA,GAAaN,UAAU,CAAA;MAClD,MAAAW,YAAA,GAAeH,cACjB,GAAAI,GAAgC,CAAAJ,cAAA,EAAgBK,QAAe,CAAAJ,UAAkB,CAAG,EAAAd,KAAK,CACzF,GAAAA,KAAA;MACJ,OAAOA,KAAU,KAAAgB,YAAA,GACbhB,KACA,GAAAL,QAAA,CAA+BqB,YAAqB,EAAA;QAClDH,cAAA;QACAM,aAAe,EAAAnB,KAAA;QACfQ,cAAA;QACAG,UAAY,EAAAG;MAAA,CACb,CAAA;IACP;IAEO,OAAAd,KAAA;EAAA,CACR,CAAA;AACH;ACjEO,SAASoB,wBAAwBC,OAIT,EAAA;EAC7B,MAAM;IAACC,eAAA;IAAiBjB,UAAY;IAAAkB;EAAA,CAAkB,GAAAF,OAAA;EAEtD,MAAMG,qBAAqBnB,UAAe,KAAA,KAAA,CAAA,GAAY,EAAC,GAAIU,cAAcV,UAAU,CAAA;EAEnF,MAAMoB,eAAeH,eAAgB,CAAAI,KAAA,CAAMJ,eAAgB,CAAAK,MAAA,GAASH,mBAAmBG,MAAM,CAAA;EAEvF,MAAAC,kBAAA,GAAqBH,aAAaE,MAAS,GAAAE,QAAA,CAASJ,YAAY,CAAE,CAAAC,KAAA,CAAM,CAAC,CAAI,GAAA,EAAA;EAE5E,OAAAX,aAAA,CAAcQ,iBAAiBK,kBAAkB,CAAA;AAC1D;ACdO,SAASE,eACdT,OAC8C,EAAA;EACxC,MAAA;IAAC5B,eAAiB;IAAAsC;EAAa,CAAA,GAAAV,OAAA;EAC/B,MAAAW,UAAA,GAAaC,oBAAqB,CAAAZ,OAAA,CAAQW,UAAU,CAAA;EAE1D,MAAME,WAAWC,eAAgB,CAAA;IAC/BH,UAAA;IACAvC,eAAA;IACAsC;EAAA,CACD,CAAA;EACD,IAAI,CAACG,QAAU,EAAA;IACN,OAAA,KAAA,CAAA;EACT;EAEA,OAAOE,cAAcF,QAAQ,CAAA;AAC/B;"}
package/dist/index.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', {
4
4
  value: true
5
5
  });
6
- var nodeMiddleware = require('./_chunks/nodeMiddleware-Vb3-cVrJ.cjs');
6
+ var nodeMiddleware = require('./_chunks/nodeMiddleware-mFD9fwlM.cjs');
7
7
  var getIt = require('get-it');
8
8
  function defineDeprecatedCreateClient(createClient) {
9
9
  return function deprecatedCreateClient(config) {
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { printNoDefaultExport, defineCreateClientExports, SanityClient, middleware } from './_chunks/nodeMiddleware-qN-CHKIQ.js';
2
- export { BasePatch, BaseTransaction, ClientError, ObservablePatch, ObservableSanityClient, ObservableTransaction, Patch, ServerError, Transaction } from './_chunks/nodeMiddleware-qN-CHKIQ.js';
1
+ import { printNoDefaultExport, defineCreateClientExports, SanityClient, middleware } from './_chunks/nodeMiddleware-AMBlbOIf.js';
2
+ export { BasePatch, BaseTransaction, ClientError, ObservablePatch, ObservableSanityClient, ObservableTransaction, Patch, ServerError, Transaction } from './_chunks/nodeMiddleware-AMBlbOIf.js';
3
3
  export { adapter as unstable__adapter, environment as unstable__environment } from 'get-it';
4
4
  function defineDeprecatedCreateClient(createClient) {
5
5
  return function deprecatedCreateClient(config) {
@@ -180,8 +180,6 @@ function jsonPathToMappingPath(path) {
180
180
  function createEditUrl(options) {
181
181
  const {
182
182
  baseUrl,
183
- projectId,
184
- dataset,
185
183
  workspace: _workspace = "default",
186
184
  tool: _tool = "default",
187
185
  id: _id,
@@ -191,12 +189,6 @@ function createEditUrl(options) {
191
189
  if (!baseUrl) {
192
190
  throw new Error("baseUrl is required");
193
191
  }
194
- if (!projectId) {
195
- throw new Error("projectId is required");
196
- }
197
- if (!dataset) {
198
- throw new Error("dataset is required");
199
- }
200
192
  if (!path) {
201
193
  throw new Error("path is required");
202
194
  }
@@ -212,8 +204,6 @@ function createEditUrl(options) {
212
204
  const stringifiedPath = toString(jsonPathToStudioPath(path));
213
205
  const searchParams = new URLSearchParams({
214
206
  baseUrl,
215
- projectId,
216
- dataset,
217
207
  id,
218
208
  type,
219
209
  path: stringifiedPath
@@ -373,7 +363,7 @@ const filterDefault = _ref5 => {
373
363
  };
374
364
  const denylist = /* @__PURE__ */new Set(["color", "colour", "currency", "email", "format", "gid", "hex", "href", "hsl", "hsla", "icon", "id", "index", "key", "language", "layout", "link", "linkAction", "locale", "lqip", "page", "path", "ref", "rgb", "rgba", "route", "secret", "slug", "status", "tag", "template", "theme", "type", "unit", "url", "username", "variant", "website"]);
375
365
  const TRUNCATE_LENGTH = 20;
376
- function stegaEncodeSourceMap(result, resultSourceMap, config, clientConfig) {
366
+ function stegaEncodeSourceMap(result, resultSourceMap, config) {
377
367
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
378
368
  const {
379
369
  filter,
@@ -411,16 +401,6 @@ function stegaEncodeSourceMap(result, resultSourceMap, config, clientConfig) {
411
401
  encoded: [],
412
402
  skipped: []
413
403
  };
414
- const {
415
- projectId,
416
- dataset
417
- } = clientConfig;
418
- if (!projectId) {
419
- throw new Error("Missing projectId");
420
- }
421
- if (!dataset) {
422
- throw new Error("Missing dataset");
423
- }
424
404
  const resultWithStega = encodeIntoResult(result, resultSourceMap, _ref6 => {
425
405
  let {
426
406
  sourcePath,
@@ -465,16 +445,12 @@ function stegaEncodeSourceMap(result, resultSourceMap, config, clientConfig) {
465
445
  if (!baseUrl) return value;
466
446
  const {
467
447
  _id: id,
468
- _type: type,
469
- _dataset = clientConfig.projectId,
470
- _projectId = clientConfig.dataset
448
+ _type: type
471
449
  } = sourceDocument;
472
450
  return stega.vercelStegaCombine(value, {
473
451
  origin: "sanity.io",
474
452
  href: createEditUrl({
475
453
  baseUrl,
476
- projectId: _projectId,
477
- dataset: _dataset,
478
454
  workspace,
479
455
  tool,
480
456
  id,
@@ -593,14 +569,7 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
593
569
  result: _result,
594
570
  resultSourceMap
595
571
  } = res;
596
- const {
597
- projectId,
598
- dataset
599
- } = this.config();
600
- const result = stegaEncodeSourceMap(_result, resultSourceMap, this.stegaConfig, {
601
- projectId,
602
- dataset
603
- });
572
+ const result = stegaEncodeSourceMap(_result, resultSourceMap, this.stegaConfig);
604
573
  return originalFilterResponse ? result : {
605
574
  ...res,
606
575
  result
@@ -677,14 +646,7 @@ const _SanityStegaClient = class _SanityStegaClient extends browserMiddleware.Sa
677
646
  result: _result,
678
647
  resultSourceMap
679
648
  } = res;
680
- const {
681
- projectId,
682
- dataset
683
- } = this.config();
684
- const result = stegaEncodeSourceMap(_result, resultSourceMap, this.stegaConfig, {
685
- projectId,
686
- dataset
687
- });
649
+ const result = stegaEncodeSourceMap(_result, resultSourceMap, this.stegaConfig);
688
650
  return originalFilterResponse ? result : {
689
651
  ...res,
690
652
  result