@sanity/client 6.8.0-pink-lizard.0 → 6.8.0-pink-lizard.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 (49) hide show
  1. package/dist/_chunks/{createEditLink-f3l2nngi.js → createEditLink-Ege4X8Rp.js} +36 -28
  2. package/dist/_chunks/createEditLink-Ege4X8Rp.js.map +1 -0
  3. package/dist/_chunks/{createEditLink-FiifjNgi.cjs → createEditLink-bPyBa1lS.cjs} +35 -28
  4. package/dist/_chunks/createEditLink-bPyBa1lS.cjs.map +1 -0
  5. package/dist/_chunks/{nodeMiddleware-IjvGQ43x.js → nodeMiddleware-BXOJX6rg.js} +2 -2
  6. package/dist/_chunks/{nodeMiddleware-IjvGQ43x.js.map → nodeMiddleware-BXOJX6rg.js.map} +1 -1
  7. package/dist/_chunks/{nodeMiddleware-4dXPWgpq.cjs → nodeMiddleware-rH1LzcAC.cjs} +2 -2
  8. package/dist/_chunks/{nodeMiddleware-4dXPWgpq.cjs.map → nodeMiddleware-rH1LzcAC.cjs.map} +1 -1
  9. package/dist/csm.cjs +122 -20
  10. package/dist/csm.cjs.map +1 -1
  11. package/dist/csm.d.ts +90 -32
  12. package/dist/csm.js +123 -21
  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 +52 -49
  17. package/dist/stega.browser.cjs.map +1 -1
  18. package/dist/stega.browser.js +52 -49
  19. package/dist/stega.browser.js.map +1 -1
  20. package/dist/stega.cjs +20 -29
  21. package/dist/stega.cjs.map +1 -1
  22. package/dist/stega.d.ts +18 -20
  23. package/dist/stega.js +21 -30
  24. package/dist/stega.js.map +1 -1
  25. package/package.json +2 -2
  26. package/src/csm/applySourceDocuments.test.ts +310 -720
  27. package/src/csm/applySourceDocuments.ts +8 -23
  28. package/src/csm/createEditLink.ts +2 -11
  29. package/src/csm/getPublishedId.ts +1 -3
  30. package/src/csm/index.ts +3 -1
  31. package/src/csm/isArray.ts +1 -0
  32. package/src/csm/isRecord.ts +1 -0
  33. package/src/csm/jsonpath.test.ts +8 -2
  34. package/src/csm/jsonpath.ts +56 -15
  35. package/src/csm/paths.test.ts +237 -0
  36. package/src/csm/paths.ts +163 -0
  37. package/src/csm/resolveEditLink.ts +65 -0
  38. package/src/csm/resolveMapping.ts +10 -9
  39. package/src/csm/resolvedKeyedSourcePath.ts +4 -6
  40. package/src/csm/simplifyPath.ts +3 -3
  41. package/src/csm/types.ts +29 -11
  42. package/src/csm/walkMap.ts +9 -5
  43. package/src/stega/SanityStegaClient.ts +24 -10
  44. package/src/stega/encodeIntoResult.test.ts +12 -21
  45. package/src/stega/encodeIntoResult.ts +5 -15
  46. package/src/stega/stegaEncodeSourceMap.ts +2 -3
  47. package/src/stega/types.ts +11 -7
  48. package/dist/_chunks/createEditLink-FiifjNgi.cjs.map +0 -1
  49. package/dist/_chunks/createEditLink-f3l2nngi.js.map +0 -1
@@ -14,7 +14,7 @@ const UNESCAPE = {
14
14
  "\\'": "'",
15
15
  "\\\\": "\\"
16
16
  };
17
- function jsonPath(path, opts) {
17
+ function jsonPath(path) {
18
18
  return "$".concat(path.map(segment => {
19
19
  if (typeof segment === "string") {
20
20
  const escapedKey = segment.replace(/[\f\n\r\t'\\]/g, match => {
@@ -25,13 +25,13 @@ function jsonPath(path, opts) {
25
25
  if (typeof segment === "number") {
26
26
  return "[".concat(segment, "]");
27
27
  }
28
- if ((opts == null ? void 0 : opts.keyArraySelectors) && segment.key !== "") {
29
- const escapedKey = segment.key.replace(/['\\]/g, match => {
28
+ if (segment._key !== "") {
29
+ const escapedKey = segment._key.replace(/['\\]/g, match => {
30
30
  return ESCAPE[match];
31
31
  });
32
32
  return "[?(@._key=='".concat(escapedKey, "')]");
33
33
  }
34
- return "[".concat(segment.index, "]");
34
+ return "[".concat(segment._index, "]");
35
35
  }).join(""));
36
36
  }
37
37
  function parseJsonPath(path) {
@@ -51,33 +51,47 @@ function parseJsonPath(path) {
51
51
  continue;
52
52
  }
53
53
  if (match[3] !== void 0) {
54
- const key = match[3].replace(/\\(\\')/g, m => {
54
+ const _key = match[3].replace(/\\(\\')/g, m => {
55
55
  return UNESCAPE[m];
56
56
  });
57
57
  parsed.push({
58
- key,
59
- index: -1
58
+ _key,
59
+ _index: -1
60
60
  });
61
61
  continue;
62
62
  }
63
63
  }
64
64
  return parsed;
65
65
  }
66
+ function jsonPathToMappingPath(path) {
67
+ return path.map(segment => {
68
+ if (typeof segment === "string") {
69
+ return segment;
70
+ }
71
+ if (typeof segment === "number") {
72
+ return segment;
73
+ }
74
+ if (segment._index !== -1) {
75
+ return segment._index;
76
+ }
77
+ throw new Error("invalid segment:".concat(JSON.stringify(segment)));
78
+ });
79
+ }
66
80
  function resolveMapping(resultPath, csm) {
67
81
  if (!(csm == null ? void 0 : csm.mappings)) {
68
- return void 0;
82
+ throw new Error("missing mappings");
69
83
  }
70
- const resultJsonPath = jsonPath(resultPath);
71
- if (csm.mappings[resultJsonPath] !== void 0) {
84
+ const resultMappingPath = jsonPath(jsonPathToMappingPath(resultPath));
85
+ if (csm.mappings[resultMappingPath] !== void 0) {
72
86
  return {
73
- mapping: csm.mappings[resultJsonPath],
74
- matchedPath: resultJsonPath,
87
+ mapping: csm.mappings[resultMappingPath],
88
+ matchedPath: resultMappingPath,
75
89
  pathSuffix: ""
76
90
  };
77
91
  }
78
92
  const mappings = Object.entries(csm.mappings).filter(_ref => {
79
93
  let [key] = _ref;
80
- return resultJsonPath.startsWith(key);
94
+ return resultMappingPath.startsWith(key);
81
95
  }).sort((_ref2, _ref3) => {
82
96
  let [key1] = _ref2;
83
97
  let [key2] = _ref3;
@@ -87,7 +101,7 @@ function resolveMapping(resultPath, csm) {
87
101
  return void 0;
88
102
  }
89
103
  const [matchedPath, mapping] = mappings[0];
90
- const pathSuffix = resultJsonPath.substring(matchedPath.length);
104
+ const pathSuffix = resultMappingPath.substring(matchedPath.length);
91
105
  return {
92
106
  mapping,
93
107
  matchedPath,
@@ -105,11 +119,11 @@ function walkMap(value, mappingFn) {
105
119
  if (isArray(value)) {
106
120
  return value.map((v, idx) => {
107
121
  if (isRecord(v)) {
108
- const key = v["_key"];
109
- if (typeof key === "string") {
122
+ const _key = v["_key"];
123
+ if (typeof _key === "string") {
110
124
  return walkMap(v, mappingFn, path.concat({
111
- key,
112
- index: idx
125
+ _key,
126
+ _index: idx
113
127
  }));
114
128
  }
115
129
  }
@@ -139,9 +153,7 @@ function resolvedKeyedSourcePath(options) {
139
153
  } = options;
140
154
  const inferredResultPath = pathSuffix === void 0 ? [] : parseJsonPath(pathSuffix);
141
155
  const inferredPath = keyedResultPath.slice(keyedResultPath.length - inferredResultPath.length);
142
- const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath, {
143
- keyArraySelectors: true
144
- }).slice(1) : "";
156
+ const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath).slice(1) : "";
145
157
  return parseJsonPath(sourceBasePath + inferredPathSuffix);
146
158
  }
147
159
  function simplifyPath(path) {
@@ -152,7 +164,7 @@ function simplifyPath(path) {
152
164
  if (typeof segment === "string") {
153
165
  return index === 0 ? segment : ".".concat(segment);
154
166
  }
155
- return '[_key=="'.concat(segment.key, '"]');
167
+ return '[_key=="'.concat(segment._key, '"]');
156
168
  }).join("");
157
169
  }
158
170
  function createEditLink(options) {
@@ -204,9 +216,5 @@ function createEditLink(options) {
204
216
  }
205
217
  return void 0;
206
218
  }
207
- function encodeJsonPathToUriComponent(path) {
208
- const sourcePath = Array.isArray(path) ? path : parseJsonPath(path);
209
- return encodeURIComponent(sourcePath.map((key, i) => typeof key === "number" ? "[".concat(key, "]") : i > 0 ? ".".concat(key) : key).join(""));
210
- }
211
- export { createEditLink, encodeJsonPathToUriComponent, getPublishedId, jsonPath, parseJsonPath, resolveMapping, resolvedKeyedSourcePath, simplifyPath, walkMap };
212
- //# sourceMappingURL=createEditLink-f3l2nngi.js.map
219
+ export { createEditLink, getPublishedId, jsonPath, parseJsonPath, resolveMapping, resolvedKeyedSourcePath, simplifyPath, walkMap };
220
+ //# sourceMappingURL=createEditLink-Ege4X8Rp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEditLink-Ege4X8Rp.js","sources":["../../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/resolvedKeyedSourcePath.ts","../../src/csm/simplifyPath.ts","../../src/csm/createEditLink.ts"],"sourcesContent":["import type {ContentSourceMapParsedPath, ContentSourceMapPaths, Path} 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 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 throw new Error('missing 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 {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 type {ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function simplifyPath(path: ContentSourceMapParsedPath): string {\n return path\n .map((segment, index) => {\n if (typeof segment === 'number') {\n return `[${segment}]`\n }\n\n if (typeof segment === 'string') {\n return index === 0 ? segment : `.${segment}`\n }\n\n return `[_key==\"${segment._key}\"]`\n })\n .join('')\n}\n","import {getPublishedId} from './getPublishedId'\nimport {parseJsonPath} from './jsonpath'\nimport {resolvedKeyedSourcePath} from './resolvedKeyedSourcePath'\nimport {resolveMapping} from './resolveMapping'\nimport {simplifyPath} from './simplifyPath'\nimport type {CreateEditLinkOptions, EditIntentLink, StudioUrl} from './types'\n\n/** @public */\n// @TODO refactor to creating just the link, with a SourcePath already converted to a \"StudioPathLike\" as input\nexport function createEditLink(\n options: CreateEditLinkOptions,\n): `${StudioUrl}${EditIntentLink}` | undefined {\n const {studioUrl: resolveStudioUrl, 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 sourceBasePath = csm.paths[mapping.source.path]\n\n if (sourceDoc && sourceBasePath) {\n const studioUrl =\n typeof resolveStudioUrl === 'function'\n ? resolveStudioUrl(sourceDoc, parseJsonPath(sourceBasePath))\n : resolveStudioUrl\n if (!studioUrl) return undefined\n const _studioUrl = studioUrl.replace(/\\/$/, '')\n const _path = encodeURIComponent(\n simplifyPath(\n resolvedKeyedSourcePath({\n keyedResultPath: parseJsonPath(sourceBasePath),\n pathSuffix,\n sourceBasePath,\n }),\n ),\n )\n const {_id, _type} = sourceDoc\n const params = new URLSearchParams()\n if (sourceDoc._projectId) {\n params.set('projectId', sourceDoc._projectId)\n }\n if (sourceDoc._dataset) {\n params.set('dataset', sourceDoc._dataset)\n }\n params.set('id', getPublishedId(sourceDoc._id))\n params.set('type', sourceDoc._type)\n params.set('path', decodeURIComponent(_path))\n params.set('baseUrl', _studioUrl)\n return `${_studioUrl}/intent/edit/id=${getPublishedId(\n _id,\n )};type=${_type};path=${_path}?${params}`\n }\n\n return undefined\n}\n"],"names":["ESCAPE","UNESCAPE","jsonPath","path","concat","map","segment","escapedKey","replace","match","_key","_index","join","parseJsonPath","parsed","parseRe","exec","key","m","push","parseInt","jsonPathToMappingPath","Error","JSON","stringify","resolveMapping","resultPath","csm","mappings","resultMappingPath","mapping","matchedPath","pathSuffix","Object","entries","filter","_ref","startsWith","sort","_ref2","_ref3","key1","key2","length","substring","isArray","value","Array","isRecord","walkMap","mappingFn","arguments","undefined","v","idx","fromEntries","_ref4","k","DRAFTS_PREFIX","getPublishedId","id","slice","resolvedKeyedSourcePath","options","keyedResultPath","sourceBasePath","inferredResultPath","inferredPath","inferredPathSuffix","simplifyPath","index","createEditLink","studioUrl","resolveStudioUrl","resultSourceMap","source","type","sourceDoc","documents","document","paths","_studioUrl","_path","encodeURIComponent","_id","_type","params","URLSearchParams","_projectId","set","_dataset","decodeURIComponent"],"mappings":"AAEA,MAAMA,MAAiC,GAAA;EACrC,IAAM,EAAA,KAAA;EACN,IAAM,EAAA,KAAA;EACN,IAAM,EAAA,KAAA;EACN,GAAM,EAAA,KAAA;EACN,GAAK,EAAA,KAAA;EACL,IAAM,EAAA;AACR,CAAA;AAEA,MAAMC,QAAmC,GAAA;EACvC,KAAO,EAAA,IAAA;EACP,KAAO,EAAA,IAAA;EACP,KAAO,EAAA,IAAA;EACP,KAAO,EAAA,GAAA;EACP,KAAO,EAAA,GAAA;EACP,MAAQ,EAAA;AACV,CAAA;AAKO,SAASC,SAASC,IAAiE,EAAA;EACxF,OAAO,GAAI,CAAAC,MAAA,CAAAD,IAAA,CACRE,GAAI,CAACC,OAAY,IAAA;IACZ,IAAA,OAAOA,YAAY,QAAU,EAAA;MAC/B,MAAMC,UAAa,GAAAD,OAAA,CAAQE,OAAQ,CAAA,gBAAA,EAAmBC,KAAU,IAAA;QAC9D,OAAOT,OAAOS,KAAK,CAAA;MAAA,CACpB,CAAA;MACD,OAAO,KAAKL,MAAU,CAAAG,UAAA,EAAA,IAAA,CAAA;IACxB;IAEI,IAAA,OAAOD,YAAY,QAAU,EAAA;MAC/B,OAAO,IAAIF,MAAO,CAAAE,OAAA,EAAA,GAAA,CAAA;IACpB;IAEI,IAAAA,OAAA,CAAQI,SAAS,EAAI,EAAA;MACvB,MAAMH,aAAaD,OAAQ,CAAAI,IAAA,CAAKF,OAAQ,CAAA,QAAA,EAAWC,KAAU,IAAA;QAC3D,OAAOT,OAAOS,KAAK,CAAA;MAAA,CACpB,CAAA;MACD,OAAO,eAAeL,MAAU,CAAAG,UAAA,EAAA,KAAA,CAAA;IAClC;IAEO,OAAA,GAAA,CAAIH,eAAQO,MAAM,EAAA,GAAA,CAAA;EAAA,CAC1B,CACA,CAAAC,IAAA,CAAK,EAAE,CAAA,CAAA;AACZ;AAKO,SAASC,cAAcV,IAAiE,EAAA;EAC7F,MAAMW,SAAqC,EAAC;EAE5C,MAAMC,OAAU,GAAA,mDAAA;EACZ,IAAAN,KAAA;EAEJ,OAAA,CAAQA,KAAQ,GAAAM,OAAA,CAAQC,IAAK,CAAAb,IAAI,OAAO,IAAM,EAAA;IACxC,IAAAM,KAAA,CAAM,CAAC,CAAA,KAAM,KAAW,CAAA,EAAA;MAC1B,MAAMQ,MAAMR,KAAM,CAAA,CAAC,EAAED,OAAQ,CAAA,mBAAA,EAAsBU,CAAM,IAAA;QACvD,OAAOjB,SAASiB,CAAC,CAAA;MAAA,CAClB,CAAA;MAEDJ,MAAA,CAAOK,KAAKF,GAAG,CAAA;MACf;IACF;IAEI,IAAAR,KAAA,CAAM,CAAC,CAAA,KAAM,KAAW,CAAA,EAAA;MAC1BK,MAAA,CAAOK,KAAKC,QAAS,CAAAX,KAAA,CAAM,CAAC,CAAA,EAAG,EAAE,CAAC,CAAA;MAClC;IACF;IAEI,IAAAA,KAAA,CAAM,CAAC,CAAA,KAAM,KAAW,CAAA,EAAA;MAC1B,MAAMC,OAAOD,KAAM,CAAA,CAAC,EAAED,OAAQ,CAAA,UAAA,EAAaU,CAAM,IAAA;QAC/C,OAAOjB,SAASiB,CAAC,CAAA;MAAA,CAClB,CAAA;MAEDJ,MAAA,CAAOK,IAAK,CAAA;QACVT,IAAA;QACAC,MAAQ,EAAA,CAAA;MAAA,CACT,CAAA;MACD;IACF;EACF;EAEO,OAAAG,MAAA;AACT;AA8BO,SAASO,sBAAsBlB,IAAuD,EAAA;EACpF,OAAAA,IAAA,CAAKE,GAAI,CAACC,OAAY,IAAA;IACvB,IAAA,OAAOA,YAAY,QAAU,EAAA;MACxB,OAAAA,OAAA;IACT;IAEI,IAAA,OAAOA,YAAY,QAAU,EAAA;MACxB,OAAAA,OAAA;IACT;IAEI,IAAAA,OAAA,CAAQK,WAAW,CAAI,CAAA,EAAA;MACzB,OAAOL,OAAQ,CAAAK,MAAA;IACjB;IAEA,MAAM,IAAIW,KAAM,CAAA,kBAAA,CAAmBlB,MAAK,CAAAmB,IAAA,CAAAC,SAAA,CAAUlB,OAAO,CAAG,CAAA,CAAA;EAAA,CAC7D,CAAA;AACH;AC/HgB,SAAAmB,cAAAA,CACdC,YACAC,GAOY,EAAA;EACR,IAAA,EAACA,2BAAKC,QAAU,CAAA,EAAA;IACZ,MAAA,IAAIN,MAAM,kBAAkB,CAAA;EAEpC;EACA,MAAMO,iBAAoB,GAAA3B,QAAA,CAASmB,qBAAsB,CAAAK,UAAU,CAAC,CAAA;EAEpE,IAAIC,GAAI,CAAAC,QAAA,CAASC,iBAAiB,CAAA,KAAM,KAAW,CAAA,EAAA;IAC1C,OAAA;MACLC,OAAA,EAASH,GAAI,CAAAC,QAAA,CAASC,iBAAiB,CAAA;MACvCE,WAAa,EAAAF,iBAAA;MACbG,UAAY,EAAA;IAAA,CACd;EACF;EAEM,MAAAJ,QAAA,GAAWK,MAAO,CAAAC,OAAA,CAAQP,GAAI,CAAAC,QAAQ,CACzC,CAAAO,MAAA,CAAOC,IAAA;IAAA,IAAC,CAACnB,GAAG,CAAA,GAAAmB,IAAA;IAAA,OAAMP,iBAAkB,CAAAQ,UAAA,CAAWpB,GAAG,CAAC;EAAA,EACnD,CAAAqB,IAAA,CAAK,CAAAC,KAAA,EAAAC,KAAA;IAAA,IAAC,CAACC,IAAI,CAAA,GAAAF,KAAA;IAAA,IAAG,CAACG,IAAI,CAAM,GAAAF,KAAA;IAAA,OAAAE,IAAA,CAAKC,MAAS,GAAAF,IAAA,CAAKE,MAAM;EAAA,EAAA;EAEjD,IAAAf,QAAA,CAASe,UAAU,CAAG,EAAA;IACjB,OAAA,KAAA,CAAA;EACT;EAEA,MAAM,CAACZ,WAAA,EAAaD,OAAO,CAAA,GAAIF,SAAS,CAAC,CAAA;EACzC,MAAMI,UAAa,GAAAH,iBAAA,CAAkBe,SAAU,CAAAb,WAAA,CAAYY,MAAM,CAAA;EAC1D,OAAA;IAACb,OAAS;IAAAC,WAAA;IAAaC;GAAU;AAC1C;ACxCO,SAASa,QAAQC,KAAyC,EAAA;EAC/D,OAAOA,KAAU,KAAA,IAAA,IAAQC,KAAM,CAAAF,OAAA,CAAQC,KAAK,CAAA;AAC9C;ACFO,SAASE,SAASF,KAAkD,EAAA;EAClE,OAAA,OAAOA,KAAU,KAAA,QAAA,IAAYA,KAAU,KAAA,IAAA;AAChD;ACKO,SAASG,OACdA,CAAAH,KAAA,EACAI,SACA,EACS;EAAA,IADT/C,IAAA,GAAAgD,SAAA,CAAAR,MAAA,QAAAQ,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAmC,EAC1B;EACL,IAAAN,OAAA,CAAQC,KAAK,CAAG,EAAA;IAClB,OAAOA,KAAM,CAAAzC,GAAA,CAAI,CAACgD,CAAA,EAAGC,GAAQ,KAAA;MACvB,IAAAN,QAAA,CAASK,CAAC,CAAG,EAAA;QACT,MAAA3C,IAAA,GAAO2C,EAAE,MAAM,CAAA;QACjB,IAAA,OAAO3C,SAAS,QAAU,EAAA;UACrB,OAAAuC,OAAA,CAAQI,CAAG,EAAAH,SAAA,EAAW/C,IAAK,CAAAC,MAAA,CAAO;YAACM,IAAM;YAAAC,MAAA,EAAQ2C;UAAI,CAAA,CAAC,CAAA;QAC/D;MACF;MAEA,OAAOL,QAAQI,CAAG,EAAAH,SAAA,EAAW/C,IAAK,CAAAC,MAAA,CAAOkD,GAAG,CAAC,CAAA;IAAA,CAC9C,CAAA;EACH;EAEI,IAAAN,QAAA,CAASF,KAAK,CAAG,EAAA;IACnB,OAAOb,MAAO,CAAAsB,WAAA,CACZtB,MAAA,CAAOC,QAAQY,KAAK,CAAA,CAAEzC,IAAImD,KAAA;MAAA,IAAC,CAACC,GAAGJ,CAAC,CAAA,GAAAG,KAAA;MAAA,OAAM,CAACC,CAAG,EAAAR,OAAA,CAAQI,GAAGH,SAAW,EAAA/C,IAAA,CAAKC,OAAOqD,CAAC,CAAC,CAAC,CAAC;IAAA,EAAA,CAClF;EACF;EAEO,OAAAP,SAAA,CAAUJ,OAAO3C,IAAI,CAAA;AAC9B;ACjCA,MAAMuD,aAAgB,GAAA,SAAA;AAGf,SAASC,eAAeC,EAAoB,EAAA;EAC7C,IAAAA,EAAA,CAAGvB,UAAW,CAAAqB,aAAa,CAAG,EAAA;IACzB,OAAAE,EAAA,CAAGC,KAAM,CAAAH,aAAA,CAAcf,MAAM,CAAA;EACtC;EAEO,OAAAiB,EAAA;AACT;ACHO,SAASE,wBAAwBC,OAIT,EAAA;EAC7B,MAAM;IAACC,eAAA;IAAiBhC,UAAY;IAAAiC;EAAA,CAAkB,GAAAF,OAAA;EAEtD,MAAMG,qBAAqBlC,UAAe,KAAA,KAAA,CAAA,GAAY,EAAC,GAAInB,cAAcmB,UAAU,CAAA;EAEnF,MAAMmC,eAAeH,eAAgB,CAAAH,KAAA,CAAMG,eAAgB,CAAArB,MAAA,GAASuB,mBAAmBvB,MAAM,CAAA;EAEvF,MAAAyB,kBAAA,GAAqBD,aAAaxB,MAAS,GAAAzC,QAAA,CAASiE,YAAY,CAAE,CAAAN,KAAA,CAAM,CAAC,CAAI,GAAA,EAAA;EAE5E,OAAAhD,aAAA,CAAcoD,iBAAiBG,kBAAkB,CAAA;AAC1D;ACfO,SAASC,aAAalE,IAA0C,EAAA;EACrE,OAAOA,IACJ,CAAAE,GAAA,CAAI,CAACC,OAAA,EAASgE,KAAU,KAAA;IACnB,IAAA,OAAOhE,YAAY,QAAU,EAAA;MAC/B,OAAO,IAAIF,MAAO,CAAAE,OAAA,EAAA,GAAA,CAAA;IACpB;IAEI,IAAA,OAAOA,YAAY,QAAU,EAAA;MACxB,OAAAgE,KAAA,KAAU,CAAI,GAAAhE,OAAA,GAAU,GAAI,CAAAF,MAAA,CAAAE,OAAA,CAAA;IACrC;IAEO,OAAA,UAAA,CAAWF,eAAQM,IAAI,EAAA,IAAA,CAAA;EAAA,CAC/B,CACA,CAAAE,IAAA,CAAK,EAAE,CAAA;AACZ;ACVO,SAAS2D,eACdR,OAC6C,EAAA;EAC7C,MAAM;IAACS,SAAW,EAAAC,gBAAA;IAAkBC,eAAiB,EAAA/C,GAAA;IAAKD;EAAc,CAAA,GAAAqC,OAAA;EAClE,MAAA;IAACjC;IAASE;EAAU,CAAA,GAAIP,eAAeC,UAAY,EAAAC,GAAG,KAAK,EAAC;EAElE,IAAI,CAACG,OAAS,EAAA;IAEL,OAAA,KAAA,CAAA;EACT;EAEI,IAAAA,OAAA,CAAQ6C,MAAO,CAAAC,IAAA,KAAS,SAAW,EAAA;IAC9B,OAAA,KAAA,CAAA;EACT;EAEI,IAAA9C,OAAA,CAAQ6C,MAAO,CAAAC,IAAA,KAAS,SAAW,EAAA;IAC9B,OAAA,KAAA,CAAA;EACT;EAEA,MAAMC,SAAY,GAAAlD,GAAA,CAAImD,SAAU,CAAAhD,OAAA,CAAQ6C,OAAOI,QAAQ,CAAA;EACvD,MAAMd,cAAiB,GAAAtC,GAAA,CAAIqD,KAAM,CAAAlD,OAAA,CAAQ6C,OAAOxE,IAAI,CAAA;EAEpD,IAAI0E,aAAaZ,cAAgB,EAAA;IACzB,MAAAO,SAAA,GACJ,OAAOC,gBAAqB,KAAA,UAAA,GACxBA,iBAAiBI,SAAW,EAAAhE,aAAA,CAAcoD,cAAc,CAAC,CACzD,GAAAQ,gBAAA;IACN,IAAI,CAACD,SAAA,EAAkB,OAAA,KAAA,CAAA;IACvB,MAAMS,UAAa,GAAAT,SAAA,CAAUhE,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA;IAC9C,MAAM0E,KAAQ,GAAAC,kBAAA,CACZd,YAAA,CACEP,uBAAwB,CAAA;MACtBE,eAAA,EAAiBnD,cAAcoD,cAAc,CAAA;MAC7CjC,UAAA;MACAiC;IAAA,CACD,CACH,CAAA,CACF;IACM,MAAA;MAACmB,GAAK;MAAAC;IAAS,CAAA,GAAAR,SAAA;IACf,MAAAS,MAAA,GAAS,IAAIC,eAAgB,EAAA;IACnC,IAAIV,UAAUW,UAAY,EAAA;MACjBF,MAAA,CAAAG,GAAA,CAAI,WAAa,EAAAZ,SAAA,CAAUW,UAAU,CAAA;IAC9C;IACA,IAAIX,UAAUa,QAAU,EAAA;MACfJ,MAAA,CAAAG,GAAA,CAAI,SAAW,EAAAZ,SAAA,CAAUa,QAAQ,CAAA;IAC1C;IACAJ,MAAA,CAAOG,GAAI,CAAA,IAAA,EAAM9B,cAAe,CAAAkB,SAAA,CAAUO,GAAG,CAAC,CAAA;IACvCE,MAAA,CAAAG,GAAA,CAAI,MAAQ,EAAAZ,SAAA,CAAUQ,KAAK,CAAA;IAClCC,MAAA,CAAOG,GAAI,CAAA,MAAA,EAAQE,kBAAmB,CAAAT,KAAK,CAAC,CAAA;IACrCI,MAAA,CAAAG,GAAA,CAAI,WAAWR,UAAU,CAAA;IACzB,OAAA,EAAA,CAAG7E,mBAAU,kBAAmB,CAAA,CAAAA,MAAA,CAAAuD,cAAA,CACrCyB,GACD,CAAA,EAAA,QAAA,CAAA,CAAShF,MAAK,CAAAiF,KAAA,EAAA,QAAA,CAAA,CAASjF,cAAK,GAAI,CAAA,CAAAA,MAAA,CAAAkF,MAAA,CAAA;EACnC;EAEO,OAAA,KAAA,CAAA;AACT;"}
@@ -16,7 +16,7 @@ const UNESCAPE = {
16
16
  "\\'": "'",
17
17
  "\\\\": "\\"
18
18
  };
19
- function jsonPath(path, opts) {
19
+ function jsonPath(path) {
20
20
  return "$".concat(path.map(segment => {
21
21
  if (typeof segment === "string") {
22
22
  const escapedKey = segment.replace(/[\f\n\r\t'\\]/g, match => {
@@ -27,13 +27,13 @@ function jsonPath(path, opts) {
27
27
  if (typeof segment === "number") {
28
28
  return "[".concat(segment, "]");
29
29
  }
30
- if ((opts == null ? void 0 : opts.keyArraySelectors) && segment.key !== "") {
31
- const escapedKey = segment.key.replace(/['\\]/g, match => {
30
+ if (segment._key !== "") {
31
+ const escapedKey = segment._key.replace(/['\\]/g, match => {
32
32
  return ESCAPE[match];
33
33
  });
34
34
  return "[?(@._key=='".concat(escapedKey, "')]");
35
35
  }
36
- return "[".concat(segment.index, "]");
36
+ return "[".concat(segment._index, "]");
37
37
  }).join(""));
38
38
  }
39
39
  function parseJsonPath(path) {
@@ -53,33 +53,47 @@ function parseJsonPath(path) {
53
53
  continue;
54
54
  }
55
55
  if (match[3] !== void 0) {
56
- const key = match[3].replace(/\\(\\')/g, m => {
56
+ const _key = match[3].replace(/\\(\\')/g, m => {
57
57
  return UNESCAPE[m];
58
58
  });
59
59
  parsed.push({
60
- key,
61
- index: -1
60
+ _key,
61
+ _index: -1
62
62
  });
63
63
  continue;
64
64
  }
65
65
  }
66
66
  return parsed;
67
67
  }
68
+ function jsonPathToMappingPath(path) {
69
+ return path.map(segment => {
70
+ if (typeof segment === "string") {
71
+ return segment;
72
+ }
73
+ if (typeof segment === "number") {
74
+ return segment;
75
+ }
76
+ if (segment._index !== -1) {
77
+ return segment._index;
78
+ }
79
+ throw new Error("invalid segment:".concat(JSON.stringify(segment)));
80
+ });
81
+ }
68
82
  function resolveMapping(resultPath, csm) {
69
83
  if (!(csm == null ? void 0 : csm.mappings)) {
70
- return void 0;
84
+ throw new Error("missing mappings");
71
85
  }
72
- const resultJsonPath = jsonPath(resultPath);
73
- if (csm.mappings[resultJsonPath] !== void 0) {
86
+ const resultMappingPath = jsonPath(jsonPathToMappingPath(resultPath));
87
+ if (csm.mappings[resultMappingPath] !== void 0) {
74
88
  return {
75
- mapping: csm.mappings[resultJsonPath],
76
- matchedPath: resultJsonPath,
89
+ mapping: csm.mappings[resultMappingPath],
90
+ matchedPath: resultMappingPath,
77
91
  pathSuffix: ""
78
92
  };
79
93
  }
80
94
  const mappings = Object.entries(csm.mappings).filter(_ref => {
81
95
  let [key] = _ref;
82
- return resultJsonPath.startsWith(key);
96
+ return resultMappingPath.startsWith(key);
83
97
  }).sort((_ref2, _ref3) => {
84
98
  let [key1] = _ref2;
85
99
  let [key2] = _ref3;
@@ -89,7 +103,7 @@ function resolveMapping(resultPath, csm) {
89
103
  return void 0;
90
104
  }
91
105
  const [matchedPath, mapping] = mappings[0];
92
- const pathSuffix = resultJsonPath.substring(matchedPath.length);
106
+ const pathSuffix = resultMappingPath.substring(matchedPath.length);
93
107
  return {
94
108
  mapping,
95
109
  matchedPath,
@@ -107,11 +121,11 @@ function walkMap(value, mappingFn) {
107
121
  if (isArray(value)) {
108
122
  return value.map((v, idx) => {
109
123
  if (isRecord(v)) {
110
- const key = v["_key"];
111
- if (typeof key === "string") {
124
+ const _key = v["_key"];
125
+ if (typeof _key === "string") {
112
126
  return walkMap(v, mappingFn, path.concat({
113
- key,
114
- index: idx
127
+ _key,
128
+ _index: idx
115
129
  }));
116
130
  }
117
131
  }
@@ -141,9 +155,7 @@ function resolvedKeyedSourcePath(options) {
141
155
  } = options;
142
156
  const inferredResultPath = pathSuffix === void 0 ? [] : parseJsonPath(pathSuffix);
143
157
  const inferredPath = keyedResultPath.slice(keyedResultPath.length - inferredResultPath.length);
144
- const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath, {
145
- keyArraySelectors: true
146
- }).slice(1) : "";
158
+ const inferredPathSuffix = inferredPath.length ? jsonPath(inferredPath).slice(1) : "";
147
159
  return parseJsonPath(sourceBasePath + inferredPathSuffix);
148
160
  }
149
161
  function simplifyPath(path) {
@@ -154,7 +166,7 @@ function simplifyPath(path) {
154
166
  if (typeof segment === "string") {
155
167
  return index === 0 ? segment : ".".concat(segment);
156
168
  }
157
- return '[_key=="'.concat(segment.key, '"]');
169
+ return '[_key=="'.concat(segment._key, '"]');
158
170
  }).join("");
159
171
  }
160
172
  function createEditLink(options) {
@@ -206,12 +218,7 @@ function createEditLink(options) {
206
218
  }
207
219
  return void 0;
208
220
  }
209
- function encodeJsonPathToUriComponent(path) {
210
- const sourcePath = Array.isArray(path) ? path : parseJsonPath(path);
211
- return encodeURIComponent(sourcePath.map((key, i) => typeof key === "number" ? "[".concat(key, "]") : i > 0 ? ".".concat(key) : key).join(""));
212
- }
213
221
  exports.createEditLink = createEditLink;
214
- exports.encodeJsonPathToUriComponent = encodeJsonPathToUriComponent;
215
222
  exports.getPublishedId = getPublishedId;
216
223
  exports.jsonPath = jsonPath;
217
224
  exports.parseJsonPath = parseJsonPath;
@@ -219,4 +226,4 @@ exports.resolveMapping = resolveMapping;
219
226
  exports.resolvedKeyedSourcePath = resolvedKeyedSourcePath;
220
227
  exports.simplifyPath = simplifyPath;
221
228
  exports.walkMap = walkMap;
222
- //# sourceMappingURL=createEditLink-FiifjNgi.cjs.map
229
+ //# sourceMappingURL=createEditLink-bPyBa1lS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEditLink-bPyBa1lS.cjs","sources":["../../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/resolvedKeyedSourcePath.ts","../../src/csm/simplifyPath.ts","../../src/csm/createEditLink.ts"],"sourcesContent":["import type {ContentSourceMapParsedPath, ContentSourceMapPaths, Path} 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 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 throw new Error('missing 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 {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 type {ContentSourceMapParsedPath} from './types'\n\n/**\n * @internal\n */\nexport function simplifyPath(path: ContentSourceMapParsedPath): string {\n return path\n .map((segment, index) => {\n if (typeof segment === 'number') {\n return `[${segment}]`\n }\n\n if (typeof segment === 'string') {\n return index === 0 ? segment : `.${segment}`\n }\n\n return `[_key==\"${segment._key}\"]`\n })\n .join('')\n}\n","import {getPublishedId} from './getPublishedId'\nimport {parseJsonPath} from './jsonpath'\nimport {resolvedKeyedSourcePath} from './resolvedKeyedSourcePath'\nimport {resolveMapping} from './resolveMapping'\nimport {simplifyPath} from './simplifyPath'\nimport type {CreateEditLinkOptions, EditIntentLink, StudioUrl} from './types'\n\n/** @public */\n// @TODO refactor to creating just the link, with a SourcePath already converted to a \"StudioPathLike\" as input\nexport function createEditLink(\n options: CreateEditLinkOptions,\n): `${StudioUrl}${EditIntentLink}` | undefined {\n const {studioUrl: resolveStudioUrl, 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 sourceBasePath = csm.paths[mapping.source.path]\n\n if (sourceDoc && sourceBasePath) {\n const studioUrl =\n typeof resolveStudioUrl === 'function'\n ? resolveStudioUrl(sourceDoc, parseJsonPath(sourceBasePath))\n : resolveStudioUrl\n if (!studioUrl) return undefined\n const _studioUrl = studioUrl.replace(/\\/$/, '')\n const _path = encodeURIComponent(\n simplifyPath(\n resolvedKeyedSourcePath({\n keyedResultPath: parseJsonPath(sourceBasePath),\n pathSuffix,\n sourceBasePath,\n }),\n ),\n )\n const {_id, _type} = sourceDoc\n const params = new URLSearchParams()\n if (sourceDoc._projectId) {\n params.set('projectId', sourceDoc._projectId)\n }\n if (sourceDoc._dataset) {\n params.set('dataset', sourceDoc._dataset)\n }\n params.set('id', getPublishedId(sourceDoc._id))\n params.set('type', sourceDoc._type)\n params.set('path', decodeURIComponent(_path))\n params.set('baseUrl', _studioUrl)\n return `${_studioUrl}/intent/edit/id=${getPublishedId(\n _id,\n )};type=${_type};path=${_path}?${params}`\n }\n\n return undefined\n}\n"],"names":["ESCAPE","UNESCAPE","jsonPath","path","concat","map","segment","escapedKey","replace","match","_key","_index","join","parseJsonPath","parsed","parseRe","exec","key","m","push","parseInt","jsonPathToMappingPath","Error","JSON","stringify","resolveMapping","resultPath","csm","mappings","resultMappingPath","mapping","matchedPath","pathSuffix","Object","entries","filter","_ref","startsWith","sort","_ref2","_ref3","key1","key2","length","substring","isArray","value","Array","isRecord","walkMap","mappingFn","arguments","undefined","v","idx","fromEntries","_ref4","k","DRAFTS_PREFIX","getPublishedId","id","slice","resolvedKeyedSourcePath","options","keyedResultPath","sourceBasePath","inferredResultPath","inferredPath","inferredPathSuffix","simplifyPath","index","createEditLink","studioUrl","resolveStudioUrl","resultSourceMap","source","type","sourceDoc","documents","document","paths","_studioUrl","_path","encodeURIComponent","_id","_type","params","URLSearchParams","_projectId","set","_dataset","decodeURIComponent"],"mappings":"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"}
@@ -1858,7 +1858,7 @@ function defineCreateClientExports(envMiddleware, ClassConstructor) {
1858
1858
  };
1859
1859
  }
1860
1860
  var name = "@sanity/client";
1861
- var version = "6.8.0-pink-lizard.0";
1861
+ var version = "6.8.0-pink-lizard.2";
1862
1862
  const middleware = [debug({
1863
1863
  verbose: true,
1864
1864
  namespace: "sanity:client"
@@ -1879,4 +1879,4 @@ agent({
1879
1879
  maxTotalSockets: 256
1880
1880
  })];
1881
1881
  export { BasePatch, BaseTransaction, ClientError, ObservablePatch, ObservableSanityClient, ObservableTransaction, Patch, SanityClient, ServerError, Transaction, defaultConfig, defineCreateClientExports, middleware, printNoDefaultExport };
1882
- //# sourceMappingURL=nodeMiddleware-IjvGQ43x.js.map
1882
+ //# sourceMappingURL=nodeMiddleware-BXOJX6rg.js.map