@sanity/client 6.8.5 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{browserMiddleware-zle5A-pb.cjs → browserMiddleware-QFfeiNj_.cjs} +6 -3
- package/dist/_chunks/browserMiddleware-QFfeiNj_.cjs.map +1 -0
- package/dist/_chunks/{browserMiddleware-Oa7zKwEN.js → browserMiddleware-qjpIf6pt.js} +6 -3
- package/dist/_chunks/browserMiddleware-qjpIf6pt.js.map +1 -0
- package/dist/_chunks/{nodeMiddleware-bGSmG7B9.cjs → nodeMiddleware-1sT0QRFz.cjs} +7 -4
- package/dist/_chunks/nodeMiddleware-1sT0QRFz.cjs.map +1 -0
- package/dist/_chunks/{nodeMiddleware-5MFY92Mp.js → nodeMiddleware-FR4SCkjH.js} +7 -4
- package/dist/_chunks/nodeMiddleware-FR4SCkjH.js.map +1 -0
- package/dist/index.browser.cjs +1 -1
- package/dist/index.browser.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/stega.browser.cjs +75 -19
- package/dist/stega.browser.cjs.map +1 -1
- package/dist/stega.browser.js +76 -20
- package/dist/stega.browser.js.map +1 -1
- package/dist/stega.cjs +75 -19
- package/dist/stega.cjs.map +1 -1
- package/dist/stega.d.ts +14 -14
- package/dist/stega.js +76 -20
- package/dist/stega.js.map +1 -1
- package/package.json +10 -10
- package/src/config.ts +2 -2
- package/src/data/dataMethods.ts +5 -0
- package/src/stega/SanityStegaClient.ts +58 -20
- package/src/stega/config.ts +23 -3
- package/src/stega/filterDefault.ts +19 -1
- package/src/stega/stegaEncodeSourceMap.ts +3 -2
- package/src/stega/types.ts +2 -11
- package/umd/sanityClient.js +5 -2
- package/umd/sanityClient.min.js +3 -3
- package/dist/_chunks/browserMiddleware-Oa7zKwEN.js.map +0 -1
- package/dist/_chunks/browserMiddleware-zle5A-pb.cjs.map +0 -1
- package/dist/_chunks/nodeMiddleware-5MFY92Mp.js.map +0 -1
- package/dist/_chunks/nodeMiddleware-bGSmG7B9.cjs.map +0 -1
package/dist/stega.cjs
CHANGED
|
@@ -3,15 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
var nodeMiddleware = require('./_chunks/nodeMiddleware-
|
|
6
|
+
var nodeMiddleware = require('./_chunks/nodeMiddleware-1sT0QRFz.cjs');
|
|
7
7
|
var operators = require('rxjs/operators');
|
|
8
8
|
var stega = require('@vercel/stega');
|
|
9
9
|
var resolveEditInfo = require('./_chunks/resolveEditInfo-ELDmigrd.cjs');
|
|
10
10
|
var getIt = require('get-it');
|
|
11
11
|
const defaultStegaConfig = {
|
|
12
12
|
enabled: false,
|
|
13
|
-
filter: props => props.filterDefault(props)
|
|
14
|
-
vercelStegaCombineSkip: "auto"
|
|
13
|
+
filter: props => props.filterDefault(props)
|
|
15
14
|
};
|
|
16
15
|
function splitConfig(config) {
|
|
17
16
|
const {
|
|
@@ -20,7 +19,9 @@ function splitConfig(config) {
|
|
|
20
19
|
} = config;
|
|
21
20
|
return {
|
|
22
21
|
clientConfig,
|
|
23
|
-
stegaConfig: stega
|
|
22
|
+
stegaConfig: typeof stega === "boolean" ? {
|
|
23
|
+
enabled: stega
|
|
24
|
+
} : stega
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
27
|
const initStegaConfig = (config, prevConfig) => {
|
|
@@ -43,6 +44,19 @@ const initStegaConfig = (config, prevConfig) => {
|
|
|
43
44
|
}
|
|
44
45
|
return newConfig;
|
|
45
46
|
};
|
|
47
|
+
function splitStegaConfigFromFetchOptions(options, initializedStegaConfig) {
|
|
48
|
+
const {
|
|
49
|
+
stega = {},
|
|
50
|
+
...fetchOptions
|
|
51
|
+
} = options;
|
|
52
|
+
const stegaConfig = initStegaConfig(typeof stega === "boolean" ? {
|
|
53
|
+
enabled: stega
|
|
54
|
+
} : stega, initializedStegaConfig);
|
|
55
|
+
return {
|
|
56
|
+
fetchOptions,
|
|
57
|
+
stegaConfig
|
|
58
|
+
};
|
|
59
|
+
}
|
|
46
60
|
function encodeIntoResult(result, csm, encoder) {
|
|
47
61
|
return resolveEditInfo.walkMap(result, (value, path) => {
|
|
48
62
|
if (typeof value !== "string") {
|
|
@@ -77,8 +91,12 @@ function encodeIntoResult(result, csm, encoder) {
|
|
|
77
91
|
}
|
|
78
92
|
const filterDefault = _ref => {
|
|
79
93
|
let {
|
|
80
|
-
sourcePath
|
|
94
|
+
sourcePath,
|
|
95
|
+
value
|
|
81
96
|
} = _ref;
|
|
97
|
+
if (isValidDate(value) || isValidURL(value)) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
82
100
|
const endPath = sourcePath.at(-1);
|
|
83
101
|
if (sourcePath.at(-2) === "slug" && endPath === "current") {
|
|
84
102
|
return false;
|
|
@@ -104,12 +122,22 @@ const filterDefault = _ref => {
|
|
|
104
122
|
return true;
|
|
105
123
|
};
|
|
106
124
|
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"]);
|
|
125
|
+
function isValidDate(dateString) {
|
|
126
|
+
return Number.isNaN(Number(dateString)) ? Boolean(Date.parse(dateString)) : false;
|
|
127
|
+
}
|
|
128
|
+
function isValidURL(url) {
|
|
129
|
+
try {
|
|
130
|
+
new URL(url, url.startsWith("/") ? "https://acme.com" : void 0);
|
|
131
|
+
} catch {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
107
136
|
const TRUNCATE_LENGTH = 20;
|
|
108
137
|
function stegaEncodeSourceMap(result, resultSourceMap, config) {
|
|
109
138
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
110
139
|
const {
|
|
111
140
|
filter,
|
|
112
|
-
vercelStegaCombineSkip,
|
|
113
141
|
logger,
|
|
114
142
|
enabled
|
|
115
143
|
} = config;
|
|
@@ -199,7 +227,9 @@ function stegaEncodeSourceMap(result, resultSourceMap, config) {
|
|
|
199
227
|
type,
|
|
200
228
|
path: sourcePath
|
|
201
229
|
})
|
|
202
|
-
},
|
|
230
|
+
},
|
|
231
|
+
// We use custom logic to determine if we should skip encoding
|
|
232
|
+
false);
|
|
203
233
|
});
|
|
204
234
|
if (logger) {
|
|
205
235
|
const isSkipping = report.skipped.length;
|
|
@@ -277,10 +307,11 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
|
|
|
277
307
|
}
|
|
278
308
|
};
|
|
279
309
|
}
|
|
280
|
-
super.config(newConfig);
|
|
281
310
|
const {
|
|
311
|
+
clientConfig,
|
|
282
312
|
stegaConfig
|
|
283
313
|
} = splitConfig(newConfig);
|
|
314
|
+
super.config(clientConfig);
|
|
284
315
|
this.stegaConfig = initStegaConfig(stegaConfig, this.stegaConfig || {});
|
|
285
316
|
return this;
|
|
286
317
|
}
|
|
@@ -290,14 +321,26 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
|
|
|
290
321
|
* @param newConfig - New client configuration properties, shallowly merged with existing configuration
|
|
291
322
|
*/
|
|
292
323
|
withConfig(newConfig) {
|
|
324
|
+
const thisConfig = this.config();
|
|
325
|
+
const {
|
|
326
|
+
stegaConfig
|
|
327
|
+
} = splitConfig(newConfig || {});
|
|
293
328
|
return new _ObservableSanityStegaClient(__privateGet(this, _httpRequest), {
|
|
294
|
-
...
|
|
295
|
-
...newConfig
|
|
329
|
+
...thisConfig,
|
|
330
|
+
...newConfig,
|
|
331
|
+
stega: {
|
|
332
|
+
...(thisConfig.stega || {}),
|
|
333
|
+
...(stegaConfig || {})
|
|
334
|
+
}
|
|
296
335
|
});
|
|
297
336
|
}
|
|
298
337
|
fetch(query, params) {
|
|
299
|
-
let
|
|
300
|
-
|
|
338
|
+
let _options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
339
|
+
const {
|
|
340
|
+
stegaConfig,
|
|
341
|
+
fetchOptions: options
|
|
342
|
+
} = splitStegaConfigFromFetchOptions(_options, this.stegaConfig);
|
|
343
|
+
if (!stegaConfig.enabled) {
|
|
301
344
|
return super.fetch(query, params, options);
|
|
302
345
|
}
|
|
303
346
|
const {
|
|
@@ -311,7 +354,7 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
|
|
|
311
354
|
result: _result,
|
|
312
355
|
resultSourceMap
|
|
313
356
|
} = res;
|
|
314
|
-
const result = stegaEncodeSourceMap(_result, resultSourceMap,
|
|
357
|
+
const result = stegaEncodeSourceMap(_result, resultSourceMap, stegaConfig);
|
|
315
358
|
return originalFilterResponse ? result : {
|
|
316
359
|
...res,
|
|
317
360
|
result
|
|
@@ -352,10 +395,11 @@ const _SanityStegaClient = class _SanityStegaClient extends nodeMiddleware.Sanit
|
|
|
352
395
|
}
|
|
353
396
|
};
|
|
354
397
|
}
|
|
355
|
-
super.config(newConfig);
|
|
356
398
|
const {
|
|
399
|
+
clientConfig,
|
|
357
400
|
stegaConfig
|
|
358
401
|
} = splitConfig(newConfig);
|
|
402
|
+
super.config(clientConfig);
|
|
359
403
|
this.stegaConfig = initStegaConfig(stegaConfig, {
|
|
360
404
|
...(this.stegaConfig || {})
|
|
361
405
|
});
|
|
@@ -367,14 +411,26 @@ const _SanityStegaClient = class _SanityStegaClient extends nodeMiddleware.Sanit
|
|
|
367
411
|
* @param newConfig - New client configuration properties, shallowly merged with existing configuration
|
|
368
412
|
*/
|
|
369
413
|
withConfig(newConfig) {
|
|
414
|
+
const thisConfig = this.config();
|
|
415
|
+
const {
|
|
416
|
+
stegaConfig
|
|
417
|
+
} = splitConfig(newConfig || {});
|
|
370
418
|
return new _SanityStegaClient(__privateGet(this, _httpRequest2), {
|
|
371
|
-
...
|
|
372
|
-
...newConfig
|
|
419
|
+
...thisConfig,
|
|
420
|
+
...newConfig,
|
|
421
|
+
stega: {
|
|
422
|
+
...(thisConfig.stega || {}),
|
|
423
|
+
...(stegaConfig || {})
|
|
424
|
+
}
|
|
373
425
|
});
|
|
374
426
|
}
|
|
375
427
|
fetch(query, params) {
|
|
376
|
-
let
|
|
377
|
-
|
|
428
|
+
let _options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
429
|
+
const {
|
|
430
|
+
stegaConfig,
|
|
431
|
+
fetchOptions: options
|
|
432
|
+
} = splitStegaConfigFromFetchOptions(_options, this.stegaConfig);
|
|
433
|
+
if (!stegaConfig.enabled) {
|
|
378
434
|
return super.fetch(query, params, options);
|
|
379
435
|
}
|
|
380
436
|
const {
|
|
@@ -388,7 +444,7 @@ const _SanityStegaClient = class _SanityStegaClient extends nodeMiddleware.Sanit
|
|
|
388
444
|
result: _result,
|
|
389
445
|
resultSourceMap
|
|
390
446
|
} = res;
|
|
391
|
-
const result = stegaEncodeSourceMap(_result, resultSourceMap,
|
|
447
|
+
const result = stegaEncodeSourceMap(_result, resultSourceMap, stegaConfig);
|
|
392
448
|
return originalFilterResponse ? result : {
|
|
393
449
|
...res,
|
|
394
450
|
result
|
package/dist/stega.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stega.cjs","sources":["../src/stega/config.ts","../src/stega/encodeIntoResult.ts","../src/stega/filterDefault.ts","../src/stega/stegaEncodeSourceMap.ts","../src/stega/SanityStegaClient.ts","../src/stega/vercelStegaCleanAll.ts","../src/stega/index.ts"],"sourcesContent":["import type {ClientConfig} from '../types'\nimport type {ClientStegaConfig, InitializedStegaConfig, StegaConfig} from './types'\n\nexport const defaultStegaConfig: StegaConfig = {\n enabled: false,\n filter: (props) => props.filterDefault(props),\n vercelStegaCombineSkip: 'auto',\n}\n\nexport function splitConfig(config: ClientStegaConfig): {\n clientConfig: ClientConfig\n stegaConfig: StegaConfig\n} {\n const {stega = {}, ...clientConfig} = config\n return {clientConfig, stegaConfig: stega}\n}\n\nexport const initStegaConfig = (\n config: Partial<StegaConfig>,\n prevConfig: Partial<StegaConfig>,\n): InitializedStegaConfig => {\n const specifiedConfig = Object.assign({} as StegaConfig, prevConfig, config)\n const newConfig = Object.assign({} as InitializedStegaConfig, defaultStegaConfig, specifiedConfig)\n\n if ('encodeSourceMap' in newConfig) {\n throw new Error(\n `It looks like you're using options meant for '@sanity/preview-kit/client'. 'encodeSourceMap' is not supported in '@sanity/client/stega'. Did you mean 'enabled'?`,\n )\n }\n\n if ('encodeSourceMapAtPath' in newConfig) {\n throw new Error(\n `It looks like you're using options meant for '@sanity/preview-kit/client'. 'encodeSourceMapAtPath' is not supported in '@sanity/client/stega'. Did you mean 'filter'?`,\n )\n }\n\n if (typeof newConfig.enabled !== 'boolean') {\n throw new Error(`config.enabled must be a boolean, received ${newConfig.enabled}`)\n }\n\n if (newConfig.enabled && newConfig.studioUrl === undefined) {\n throw new Error(`config.studioUrl must be defined when config.enabled is true`)\n }\n\n if (\n newConfig.enabled &&\n typeof newConfig.studioUrl !== 'string' &&\n typeof newConfig.studioUrl !== 'function'\n ) {\n throw new Error(\n `config.studioUrl must be a string or a function, received ${newConfig.studioUrl}`,\n )\n }\n\n return newConfig\n}\n","import {parseJsonPath} from '../csm/jsonPath'\nimport {resolveMapping} from '../csm/resolveMapping'\nimport type {ContentSourceMap} from '../csm/types'\nimport {walkMap} from '../csm/walkMap'\nimport type {Encoder} from './types'\n\n/**\n * @internal\n */\nexport function encodeIntoResult<Result>(\n result: Result,\n csm: ContentSourceMap,\n encoder: Encoder,\n): Result {\n return walkMap(result, (value, path) => {\n // Only map strings, we could extend this in the future to support other types like integers...\n if (typeof value !== 'string') {\n return value\n }\n\n const resolveMappingResult = resolveMapping(path, csm)\n if (!resolveMappingResult) {\n return value\n }\n\n const {mapping, matchedPath} = 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 = csm.documents[mapping.source.document!]\n const sourcePath = csm.paths[mapping.source.path]\n\n const matchPathSegments = parseJsonPath(matchedPath)\n const sourcePathSegments = parseJsonPath(sourcePath)\n const fullSourceSegments = sourcePathSegments.concat(path.slice(matchPathSegments.length))\n\n return encoder({\n sourcePath: fullSourceSegments,\n sourceDocument,\n resultPath: path,\n value,\n })\n }) as Result\n}\n","import type {FilterDefault} from './types'\n\nexport const filterDefault: FilterDefault = ({sourcePath}) => {\n const endPath = sourcePath.at(-1)\n // Never encode slugs\n if (sourcePath.at(-2) === 'slug' && endPath === 'current') {\n return false\n }\n\n // Skip underscored keys, needs better heuristics but it works for now\n if (typeof endPath === 'string' && endPath.startsWith('_')) {\n return false\n }\n\n /**\n * Best effort infer Portable Text paths that should not be encoded.\n * Nothing is for certain, and the below implementation may cause paths that aren't Portable Text and otherwise be safe to encode to be skipped.\n * However, that's ok as userland can always opt-in with the `encodeSourceMapAtPath` option and mark known safe paths as such, which will override this heuristic.\n */\n // If the path ends in marks[number] it's likely a PortableTextSpan: https://github.com/portabletext/types/blob/e54eb24f136d8efd51a46c6a190e7c46e79b5380/src/portableText.ts#LL154C16-L154C16\n if (typeof endPath === 'number' && sourcePath.at(-2) === 'marks') {\n return false\n }\n // Or if it's [number].markDefs[number].href it's likely a PortableTextLink: https://github.com/portabletext/types/blob/e54eb24f136d8efd51a46c6a190e7c46e79b5380/src/portableText.ts#L163\n if (\n endPath === 'href' &&\n typeof sourcePath.at(-2) === 'number' &&\n sourcePath.at(-3) === 'markDefs'\n ) {\n return false\n }\n // Otherwise we have to deal with special properties of PortableTextBlock, and we can't confidently know if it's actually a `_type: 'block'` array item or not.\n // All we know is that if it is indeed a block, and we encode the strings on these keys it'll for sure break the PortableText rendering and thus we skip encoding.\n // https://github.com/portabletext/types/blob/e54eb24f136d8efd51a46c6a190e7c46e79b5380/src/portableText.ts#L48-L58\n if (endPath === 'style' || endPath === 'listItem') {\n return false\n }\n\n // Don't encode into anything that is suggested it'll render for SEO in meta tags\n if (\n sourcePath.some(\n (path) => path === 'meta' || path === 'metadata' || path === 'openGraph' || path === 'seo',\n )\n ) {\n return false\n }\n\n // Finally, we ignore a bunch of paths that are typically used for page building\n if (typeof endPath === 'string' && denylist.has(endPath)) {\n return false\n }\n\n return true\n}\n\nconst denylist = new Set([\n 'color',\n 'colour',\n 'currency',\n 'email',\n 'format',\n 'gid',\n 'hex',\n 'href',\n 'hsl',\n 'hsla',\n 'icon',\n 'id',\n 'index',\n 'key',\n 'language',\n 'layout',\n 'link',\n 'linkAction',\n 'locale',\n 'lqip',\n 'page',\n 'path',\n 'ref',\n 'rgb',\n 'rgba',\n 'route',\n 'secret',\n 'slug',\n 'status',\n 'tag',\n 'template',\n 'theme',\n 'type',\n 'unit',\n 'url',\n 'username',\n 'variant',\n 'website',\n])\n","import {vercelStegaCombine} from '@vercel/stega'\n\nimport {createEditUrl} from '../csm/createEditUrl'\nimport {jsonPathToStudioPath} from '../csm/jsonPath'\nimport {resolveStudioBaseRoute} from '../csm/resolveEditInfo'\nimport {reKeySegment, toString as studioPathToString} from '../csm/studioPath'\nimport {encodeIntoResult} from './encodeIntoResult'\nimport {filterDefault} from './filterDefault'\nimport {ContentSourceMap, ContentSourceMapParsedPath, InitializedStegaConfig} from './types'\n\nconst TRUNCATE_LENGTH = 20\n\n/**\n * Uses `@vercel/stega` to embed edit info JSON into strings in your query result.\n * The JSON payloads are added using invisible characters so they don't show up visually.\n * The edit info is generated from the Content Source Map (CSM) that is returned from Sanity for the query.\n * @public\n */\nexport function stegaEncodeSourceMap<Result = unknown>(\n result: Result,\n resultSourceMap: ContentSourceMap | undefined,\n config: InitializedStegaConfig,\n): Result {\n const {filter, vercelStegaCombineSkip, logger, enabled} = config\n if (!enabled) {\n const msg = \"config.enabled must be true, don't call this function otherwise\"\n logger?.error?.(`[@sanity/client/stega]: ${msg}`, {result, resultSourceMap, config})\n throw new TypeError(msg)\n }\n\n if (!resultSourceMap) {\n logger?.error?.('[@sanity/client/stega]: Missing Content Source Map from response body', {\n result,\n resultSourceMap,\n config,\n })\n return result\n }\n\n if (!config.studioUrl) {\n const msg = 'config.studioUrl must be defined'\n logger?.error?.(`[@sanity/client/stega]: ${msg}`, {result, resultSourceMap, config})\n throw new TypeError(msg)\n }\n\n const report: Record<'encoded' | 'skipped', {path: string; length: number; value: string}[]> = {\n encoded: [],\n skipped: [],\n }\n\n const resultWithStega = encodeIntoResult(\n result,\n resultSourceMap,\n ({sourcePath, sourceDocument, resultPath, value}) => {\n // Allow userland to control when to opt-out of encoding\n if (\n (typeof filter === 'function'\n ? filter({sourcePath, resultPath, filterDefault, sourceDocument, value})\n : filterDefault({sourcePath, resultPath, filterDefault, sourceDocument, value})) === false\n ) {\n if (logger) {\n report.skipped.push({\n path: prettyPathForLogging(sourcePath),\n value: `${value.slice(0, TRUNCATE_LENGTH)}${\n value.length > TRUNCATE_LENGTH ? '...' : ''\n }`,\n length: value.length,\n })\n }\n return value\n }\n\n if (logger) {\n report.encoded.push({\n path: prettyPathForLogging(sourcePath),\n value: `${value.slice(0, TRUNCATE_LENGTH)}${value.length > TRUNCATE_LENGTH ? '...' : ''}`,\n length: value.length,\n })\n }\n\n const {baseUrl, workspace, tool} = resolveStudioBaseRoute(\n typeof config.studioUrl === 'function'\n ? config.studioUrl(sourceDocument)\n : config.studioUrl!,\n )\n if (!baseUrl) return value\n const {_id: id, _type: type} = sourceDocument\n\n return vercelStegaCombine(\n value,\n {\n origin: 'sanity.io',\n href: createEditUrl({\n baseUrl,\n workspace,\n tool,\n id,\n type,\n path: sourcePath,\n }),\n },\n vercelStegaCombineSkip,\n )\n },\n )\n\n if (logger) {\n const isSkipping = report.skipped.length\n const isEncoding = report.encoded.length\n if (isSkipping || isEncoding) {\n ;(logger?.groupCollapsed || logger.log)?.(\n '[@sanity/client/stega]: Encoding source map into result',\n )\n logger.log?.(\n `[@sanity/client/stega]: Paths encoded: ${report.encoded.length}, skipped: ${report.skipped.length}`,\n )\n }\n if (report.encoded.length > 0) {\n logger?.log?.(`[@sanity/client/stega]: Table of encoded paths`)\n ;(logger?.table || logger.log)?.(report.encoded)\n }\n if (report.skipped.length > 0) {\n const skipped = new Set<string>()\n for (const {path} of report.skipped) {\n skipped.add(path.replace(reKeySegment, '0').replace(/\\[\\d+\\]/g, '[]'))\n }\n logger?.log?.(`[@sanity/client/stega]: List of skipped paths`, [...skipped.values()])\n }\n\n if (isSkipping || isEncoding) {\n logger?.groupEnd?.()\n }\n }\n\n return resultWithStega\n}\n\nfunction prettyPathForLogging(path: ContentSourceMapParsedPath): string {\n return studioPathToString(jsonPathToStudioPath(path))\n}\n","import {Observable} from 'rxjs'\nimport {map} from 'rxjs/operators'\n\nimport {defaultConfig} from '../config'\nimport {ObservableSanityClient, SanityClient} from '../SanityClient'\nimport type {\n Any,\n ClientConfig,\n FilteredResponseQueryOptions,\n HttpRequest,\n QueryParams,\n RawQueryResponse,\n UnfilteredResponseQueryOptions,\n} from '../types'\nimport {defaultStegaConfig, initStegaConfig, splitConfig} from './config'\nimport {stegaEncodeSourceMap} from './stegaEncodeSourceMap'\nimport {ClientStegaConfig, InitializedClientStegaConfig, InitializedStegaConfig} from './types'\n\n/** @public */\nexport class ObservableSanityStegaClient extends ObservableSanityClient {\n /**\n * Private properties\n */\n #httpRequest: HttpRequest\n private stegaConfig: InitializedStegaConfig\n\n constructor(httpRequest: HttpRequest, config: ClientStegaConfig = defaultConfig) {\n const {clientConfig, stegaConfig} = splitConfig(config)\n super(httpRequest, clientConfig)\n\n this.#httpRequest = httpRequest\n this.stegaConfig = initStegaConfig(stegaConfig, defaultStegaConfig)\n }\n\n /**\n * Clone the client - returns a new instance\n */\n clone(): ObservableSanityStegaClient {\n return new ObservableSanityStegaClient(this.#httpRequest, this.config())\n }\n\n /**\n * Returns the current client configuration\n */\n config(): InitializedClientStegaConfig\n /**\n * Reconfigure the client. Note that this _mutates_ the current client.\n */\n config(newConfig?: Partial<ClientStegaConfig>): this\n config(newConfig?: Partial<ClientStegaConfig>): ClientStegaConfig | this {\n if (newConfig === undefined) {\n return {...super.config(), stega: {...this.stegaConfig}}\n }\n\n super.config(newConfig)\n\n const {stegaConfig} = splitConfig(newConfig)\n\n this.stegaConfig = initStegaConfig(stegaConfig, this.stegaConfig || {})\n return this\n }\n\n /**\n * Clone the client with a new (partial) configuration.\n *\n * @param newConfig - New client configuration properties, shallowly merged with existing configuration\n */\n withConfig(newConfig?: Partial<ClientConfig>): ObservableSanityStegaClient {\n return new ObservableSanityStegaClient(this.#httpRequest, {...this.config(), ...newConfig})\n }\n\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n */\n fetch<R = Any>(query: string): Observable<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Query parameters\n */\n fetch<R = Any, Q = QueryParams>(query: string, params: Q): Observable<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: FilteredResponseQueryOptions,\n ): Observable<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: UnfilteredResponseQueryOptions,\n ): Observable<RawQueryResponse<R>>\n fetch<R, Q extends QueryParams>(\n query: string,\n params?: Q,\n options: FilteredResponseQueryOptions | UnfilteredResponseQueryOptions = {},\n ): Observable<RawQueryResponse<R> | R> {\n if (!this.stegaConfig.enabled) {\n return super.fetch<R, Q>(query, params, options as Any)\n }\n const {filterResponse: originalFilterResponse = true} = options\n return super\n .fetch<R, Q>(\n query,\n params,\n Object.assign({}, options as Any, {\n filterResponse: false,\n resultSourceMap: 'withKeyArraySelector',\n }),\n )\n .pipe(\n map((res: Any) => {\n const {result: _result, resultSourceMap} = res as RawQueryResponse<R>\n const result = stegaEncodeSourceMap(_result, resultSourceMap, this.stegaConfig)\n return originalFilterResponse ? result : {...res, result}\n }),\n )\n }\n}\n\n/** @public */\nexport class SanityStegaClient extends SanityClient {\n /**\n * Observable version of the Sanity client, with the same configuration as the promise-based one\n */\n observable: ObservableSanityStegaClient\n\n /**\n * Private properties\n */\n #httpRequest: HttpRequest\n private stegaConfig: InitializedStegaConfig\n\n constructor(httpRequest: HttpRequest, config: ClientStegaConfig = defaultConfig) {\n const {clientConfig, stegaConfig} = splitConfig(config)\n super(httpRequest, clientConfig)\n\n this.#httpRequest = httpRequest\n this.stegaConfig = initStegaConfig(stegaConfig, defaultStegaConfig)\n\n this.observable = new ObservableSanityStegaClient(httpRequest, config)\n }\n\n /**\n * Clone the client - returns a new instance\n */\n clone(): SanityStegaClient {\n return new SanityStegaClient(this.#httpRequest, this.config())\n }\n\n /**\n * Returns the current client configuration\n */\n config(): InitializedClientStegaConfig\n /**\n * Reconfigure the client. Note that this _mutates_ the current client.\n */\n config(newConfig?: Partial<ClientStegaConfig>): this\n config(newConfig?: Partial<ClientStegaConfig>): ClientStegaConfig | this {\n if (newConfig === undefined) {\n return {...super.config(), stega: {...this.stegaConfig}}\n }\n\n super.config(newConfig)\n\n const {stegaConfig} = splitConfig(newConfig)\n\n this.stegaConfig = initStegaConfig(stegaConfig, {...(this.stegaConfig || {})})\n return this\n }\n\n /**\n * Clone the client with a new (partial) configuration.\n *\n * @param newConfig - New client configuration properties, shallowly merged with existing configuration\n */\n withConfig(newConfig?: Partial<ClientStegaConfig>): SanityStegaClient {\n return new SanityStegaClient(this.#httpRequest, {...this.config(), ...newConfig})\n }\n\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n */\n fetch<R = Any>(query: string): Promise<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Optional query parameters\n */\n fetch<R = Any, Q = QueryParams>(query: string, params: Q): Promise<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Optional query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: FilteredResponseQueryOptions,\n ): Promise<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Optional query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: UnfilteredResponseQueryOptions,\n ): Promise<RawQueryResponse<R>>\n fetch<R, Q extends QueryParams>(\n query: string,\n params?: Q,\n options: FilteredResponseQueryOptions | UnfilteredResponseQueryOptions = {},\n ): Promise<RawQueryResponse<R> | R> {\n if (!this.stegaConfig.enabled) {\n return super.fetch<R, Q>(query, params, options as Any)\n }\n const {filterResponse: originalFilterResponse = true} = options\n return super\n .fetch<R, Q>(\n query,\n params,\n Object.assign({}, options as Any, {\n filterResponse: false,\n resultSourceMap: 'withKeyArraySelector',\n }),\n )\n .then((res: Any) => {\n const {result: _result, resultSourceMap} = res as RawQueryResponse<R>\n const result = stegaEncodeSourceMap(_result, resultSourceMap, this.stegaConfig)\n return originalFilterResponse ? result : {...res, result}\n })\n }\n}\n","import {vercelStegaSplit} from '@vercel/stega'\n\n/**\n * Can take a `result` JSON from a `const {result} = client.fetch(query, params, {filterResponse: false})`\n * and remove all stega-encoded data from it.\n * @alpha\n */\nexport function vercelStegaCleanAll<Result = unknown>(result: Result): Result {\n return JSON.parse(\n JSON.stringify(result, (key, value) => {\n if (typeof value !== 'string') return value\n return vercelStegaSplit(value).cleaned\n }),\n )\n}\n","export * from '../defineCreateClient'\n\nimport defineCreateClientExports from '../defineCreateClient'\nimport envMiddleware from '../http/nodeMiddleware'\nimport {SanityStegaClient} from './SanityStegaClient'\nimport type {ClientStegaConfig} from './types'\n\nconst exp = defineCreateClientExports<SanityStegaClient, ClientStegaConfig>(\n envMiddleware,\n SanityStegaClient,\n)\n\nexport * from './shared'\n\n/** @public */\nexport const requester = exp.requester\n\n/** @public */\nexport const createClient = exp.createClient\n"],"names":["defaultStegaConfig","enabled","filter","props","filterDefault","vercelStegaCombineSkip","splitConfig","config","stega","clientConfig","stegaConfig","initStegaConfig","prevConfig","specifiedConfig","Object","assign","newConfig","Error","concat","studioUrl","encodeIntoResult","result","csm","encoder","walkMap","value","path","resolveMappingResult","resolveMapping","mapping","matchedPath","type","source","sourceDocument","documents","document","sourcePath","paths","matchPathSegments","parseJsonPath","sourcePathSegments","fullSourceSegments","slice","length","resultPath","_ref","endPath","at","startsWith","some","denylist","has","Set","TRUNCATE_LENGTH","stegaEncodeSourceMap","resultSourceMap","_a","_b","_c","_d","_e","_f","_g","_h","_i","logger","msg","error","call","TypeError","report","encoded","skipped","resultWithStega","_ref2","push","prettyPathForLogging","baseUrl","workspace","tool","resolveStudioBaseRoute","_id","id","_type","vercelStegaCombine","origin","href","createEditUrl","isSkipping","isEncoding","groupCollapsed","log","table","add","replace","reKeySegment","values","groupEnd","studioPathToString","jsonPathToStudioPath","_httpRequest","_ObservableSanityStegaClient","ObservableSanityClient","constructor","httpRequest","arguments","undefined","defaultConfig","__privateAdd","__privateSet","clone","__privateGet","withConfig","fetch","query","params","options","filterResponse","originalFilterResponse","pipe","map","res","_result","WeakMap","ObservableSanityStegaClient","_SanityStegaClient","SanityClient","observable","then","SanityStegaClient","vercelStegaCleanAll","JSON","parse","stringify","key","vercelStegaSplit","cleaned","exp","defineCreateClientExports","envMiddleware","middleware","requester","createClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stega.cjs","sources":["../src/stega/config.ts","../src/stega/encodeIntoResult.ts","../src/stega/filterDefault.ts","../src/stega/stegaEncodeSourceMap.ts","../src/stega/SanityStegaClient.ts","../src/stega/vercelStegaCleanAll.ts","../src/stega/index.ts"],"sourcesContent":["import type {\n ClientConfig,\n FilteredResponseQueryOptions,\n UnfilteredResponseQueryOptions,\n} from '../types'\nimport type {ClientStegaConfig, InitializedStegaConfig, StegaConfig} from './types'\n\nexport const defaultStegaConfig: StegaConfig = {\n enabled: false,\n filter: (props) => props.filterDefault(props),\n}\n\nexport function splitConfig(config: ClientStegaConfig): {\n clientConfig: ClientConfig\n stegaConfig: StegaConfig\n} {\n const {stega = {}, ...clientConfig} = config\n return {clientConfig, stegaConfig: typeof stega === 'boolean' ? {enabled: stega} : stega}\n}\n\nexport const initStegaConfig = (\n config: Partial<StegaConfig>,\n prevConfig: Partial<StegaConfig>,\n): InitializedStegaConfig => {\n const specifiedConfig = Object.assign({} as StegaConfig, prevConfig, config)\n const newConfig = Object.assign({} as InitializedStegaConfig, defaultStegaConfig, specifiedConfig)\n\n if ('encodeSourceMap' in newConfig) {\n throw new Error(\n `It looks like you're using options meant for '@sanity/preview-kit/client'. 'encodeSourceMap' is not supported in '@sanity/client/stega'. Did you mean 'enabled'?`,\n )\n }\n\n if ('encodeSourceMapAtPath' in newConfig) {\n throw new Error(\n `It looks like you're using options meant for '@sanity/preview-kit/client'. 'encodeSourceMapAtPath' is not supported in '@sanity/client/stega'. Did you mean 'filter'?`,\n )\n }\n\n if (typeof newConfig.enabled !== 'boolean') {\n throw new Error(`config.enabled must be a boolean, received ${newConfig.enabled}`)\n }\n\n if (newConfig.enabled && newConfig.studioUrl === undefined) {\n throw new Error(`config.studioUrl must be defined when config.enabled is true`)\n }\n\n if (\n newConfig.enabled &&\n typeof newConfig.studioUrl !== 'string' &&\n typeof newConfig.studioUrl !== 'function'\n ) {\n throw new Error(\n `config.studioUrl must be a string or a function, received ${newConfig.studioUrl}`,\n )\n }\n\n return newConfig\n}\n\nexport function splitStegaConfigFromFetchOptions(\n options: (FilteredResponseQueryOptions | UnfilteredResponseQueryOptions) & {\n stega?: boolean | StegaConfig\n },\n initializedStegaConfig: InitializedStegaConfig,\n): {\n fetchOptions: FilteredResponseQueryOptions | UnfilteredResponseQueryOptions\n stegaConfig: InitializedStegaConfig\n} {\n const {stega = {}, ...fetchOptions} = options\n const stegaConfig = initStegaConfig(\n typeof stega === 'boolean' ? {enabled: stega} : stega,\n initializedStegaConfig,\n )\n return {fetchOptions, stegaConfig}\n}\n","import {parseJsonPath} from '../csm/jsonPath'\nimport {resolveMapping} from '../csm/resolveMapping'\nimport type {ContentSourceMap} from '../csm/types'\nimport {walkMap} from '../csm/walkMap'\nimport type {Encoder} from './types'\n\n/**\n * @internal\n */\nexport function encodeIntoResult<Result>(\n result: Result,\n csm: ContentSourceMap,\n encoder: Encoder,\n): Result {\n return walkMap(result, (value, path) => {\n // Only map strings, we could extend this in the future to support other types like integers...\n if (typeof value !== 'string') {\n return value\n }\n\n const resolveMappingResult = resolveMapping(path, csm)\n if (!resolveMappingResult) {\n return value\n }\n\n const {mapping, matchedPath} = 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 = csm.documents[mapping.source.document!]\n const sourcePath = csm.paths[mapping.source.path]\n\n const matchPathSegments = parseJsonPath(matchedPath)\n const sourcePathSegments = parseJsonPath(sourcePath)\n const fullSourceSegments = sourcePathSegments.concat(path.slice(matchPathSegments.length))\n\n return encoder({\n sourcePath: fullSourceSegments,\n sourceDocument,\n resultPath: path,\n value,\n })\n }) as Result\n}\n","import type {FilterDefault} from './types'\n\nexport const filterDefault: FilterDefault = ({sourcePath, value}) => {\n // Skips encoding on URL or Date strings, similar to the `skip: 'auto'` parameter in vercelStegaCombine()\n if (isValidDate(value) || isValidURL(value)) {\n return false\n }\n\n const endPath = sourcePath.at(-1)\n // Never encode slugs\n if (sourcePath.at(-2) === 'slug' && endPath === 'current') {\n return false\n }\n\n // Skip underscored keys, needs better heuristics but it works for now\n if (typeof endPath === 'string' && endPath.startsWith('_')) {\n return false\n }\n\n /**\n * Best effort infer Portable Text paths that should not be encoded.\n * Nothing is for certain, and the below implementation may cause paths that aren't Portable Text and otherwise be safe to encode to be skipped.\n * However, that's ok as userland can always opt-in with the `encodeSourceMapAtPath` option and mark known safe paths as such, which will override this heuristic.\n */\n // If the path ends in marks[number] it's likely a PortableTextSpan: https://github.com/portabletext/types/blob/e54eb24f136d8efd51a46c6a190e7c46e79b5380/src/portableText.ts#LL154C16-L154C16\n if (typeof endPath === 'number' && sourcePath.at(-2) === 'marks') {\n return false\n }\n // Or if it's [number].markDefs[number].href it's likely a PortableTextLink: https://github.com/portabletext/types/blob/e54eb24f136d8efd51a46c6a190e7c46e79b5380/src/portableText.ts#L163\n if (\n endPath === 'href' &&\n typeof sourcePath.at(-2) === 'number' &&\n sourcePath.at(-3) === 'markDefs'\n ) {\n return false\n }\n // Otherwise we have to deal with special properties of PortableTextBlock, and we can't confidently know if it's actually a `_type: 'block'` array item or not.\n // All we know is that if it is indeed a block, and we encode the strings on these keys it'll for sure break the PortableText rendering and thus we skip encoding.\n // https://github.com/portabletext/types/blob/e54eb24f136d8efd51a46c6a190e7c46e79b5380/src/portableText.ts#L48-L58\n if (endPath === 'style' || endPath === 'listItem') {\n return false\n }\n\n // Don't encode into anything that is suggested it'll render for SEO in meta tags\n if (\n sourcePath.some(\n (path) => path === 'meta' || path === 'metadata' || path === 'openGraph' || path === 'seo',\n )\n ) {\n return false\n }\n\n // Finally, we ignore a bunch of paths that are typically used for page building\n if (typeof endPath === 'string' && denylist.has(endPath)) {\n return false\n }\n\n return true\n}\n\nconst denylist = new Set([\n 'color',\n 'colour',\n 'currency',\n 'email',\n 'format',\n 'gid',\n 'hex',\n 'href',\n 'hsl',\n 'hsla',\n 'icon',\n 'id',\n 'index',\n 'key',\n 'language',\n 'layout',\n 'link',\n 'linkAction',\n 'locale',\n 'lqip',\n 'page',\n 'path',\n 'ref',\n 'rgb',\n 'rgba',\n 'route',\n 'secret',\n 'slug',\n 'status',\n 'tag',\n 'template',\n 'theme',\n 'type',\n 'unit',\n 'url',\n 'username',\n 'variant',\n 'website',\n])\n\nfunction isValidDate(dateString: string) {\n return Number.isNaN(Number(dateString)) ? Boolean(Date.parse(dateString)) : false\n}\n\nfunction isValidURL(url: string) {\n try {\n new URL(url, url.startsWith('/') ? 'https://acme.com' : undefined)\n } catch {\n return false\n }\n return true\n}\n","import {vercelStegaCombine} from '@vercel/stega'\n\nimport {createEditUrl} from '../csm/createEditUrl'\nimport {jsonPathToStudioPath} from '../csm/jsonPath'\nimport {resolveStudioBaseRoute} from '../csm/resolveEditInfo'\nimport {reKeySegment, toString as studioPathToString} from '../csm/studioPath'\nimport {encodeIntoResult} from './encodeIntoResult'\nimport {filterDefault} from './filterDefault'\nimport {ContentSourceMap, ContentSourceMapParsedPath, InitializedStegaConfig} from './types'\n\nconst TRUNCATE_LENGTH = 20\n\n/**\n * Uses `@vercel/stega` to embed edit info JSON into strings in your query result.\n * The JSON payloads are added using invisible characters so they don't show up visually.\n * The edit info is generated from the Content Source Map (CSM) that is returned from Sanity for the query.\n * @public\n */\nexport function stegaEncodeSourceMap<Result = unknown>(\n result: Result,\n resultSourceMap: ContentSourceMap | undefined,\n config: InitializedStegaConfig,\n): Result {\n const {filter, logger, enabled} = config\n if (!enabled) {\n const msg = \"config.enabled must be true, don't call this function otherwise\"\n logger?.error?.(`[@sanity/client/stega]: ${msg}`, {result, resultSourceMap, config})\n throw new TypeError(msg)\n }\n\n if (!resultSourceMap) {\n logger?.error?.('[@sanity/client/stega]: Missing Content Source Map from response body', {\n result,\n resultSourceMap,\n config,\n })\n return result\n }\n\n if (!config.studioUrl) {\n const msg = 'config.studioUrl must be defined'\n logger?.error?.(`[@sanity/client/stega]: ${msg}`, {result, resultSourceMap, config})\n throw new TypeError(msg)\n }\n\n const report: Record<'encoded' | 'skipped', {path: string; length: number; value: string}[]> = {\n encoded: [],\n skipped: [],\n }\n\n const resultWithStega = encodeIntoResult(\n result,\n resultSourceMap,\n ({sourcePath, sourceDocument, resultPath, value}) => {\n // Allow userland to control when to opt-out of encoding\n if (\n (typeof filter === 'function'\n ? filter({sourcePath, resultPath, filterDefault, sourceDocument, value})\n : filterDefault({sourcePath, resultPath, filterDefault, sourceDocument, value})) === false\n ) {\n if (logger) {\n report.skipped.push({\n path: prettyPathForLogging(sourcePath),\n value: `${value.slice(0, TRUNCATE_LENGTH)}${\n value.length > TRUNCATE_LENGTH ? '...' : ''\n }`,\n length: value.length,\n })\n }\n return value\n }\n\n if (logger) {\n report.encoded.push({\n path: prettyPathForLogging(sourcePath),\n value: `${value.slice(0, TRUNCATE_LENGTH)}${value.length > TRUNCATE_LENGTH ? '...' : ''}`,\n length: value.length,\n })\n }\n\n const {baseUrl, workspace, tool} = resolveStudioBaseRoute(\n typeof config.studioUrl === 'function'\n ? config.studioUrl(sourceDocument)\n : config.studioUrl!,\n )\n if (!baseUrl) return value\n const {_id: id, _type: type} = sourceDocument\n\n return vercelStegaCombine(\n value,\n {\n origin: 'sanity.io',\n href: createEditUrl({\n baseUrl,\n workspace,\n tool,\n id,\n type,\n path: sourcePath,\n }),\n },\n // We use custom logic to determine if we should skip encoding\n false,\n )\n },\n )\n\n if (logger) {\n const isSkipping = report.skipped.length\n const isEncoding = report.encoded.length\n if (isSkipping || isEncoding) {\n ;(logger?.groupCollapsed || logger.log)?.(\n '[@sanity/client/stega]: Encoding source map into result',\n )\n logger.log?.(\n `[@sanity/client/stega]: Paths encoded: ${report.encoded.length}, skipped: ${report.skipped.length}`,\n )\n }\n if (report.encoded.length > 0) {\n logger?.log?.(`[@sanity/client/stega]: Table of encoded paths`)\n ;(logger?.table || logger.log)?.(report.encoded)\n }\n if (report.skipped.length > 0) {\n const skipped = new Set<string>()\n for (const {path} of report.skipped) {\n skipped.add(path.replace(reKeySegment, '0').replace(/\\[\\d+\\]/g, '[]'))\n }\n logger?.log?.(`[@sanity/client/stega]: List of skipped paths`, [...skipped.values()])\n }\n\n if (isSkipping || isEncoding) {\n logger?.groupEnd?.()\n }\n }\n\n return resultWithStega\n}\n\nfunction prettyPathForLogging(path: ContentSourceMapParsedPath): string {\n return studioPathToString(jsonPathToStudioPath(path))\n}\n","import {Observable} from 'rxjs'\nimport {map} from 'rxjs/operators'\n\nimport {defaultConfig} from '../config'\nimport {ObservableSanityClient, SanityClient} from '../SanityClient'\nimport type {\n Any,\n ClientConfig,\n FilteredResponseQueryOptions,\n HttpRequest,\n QueryParams,\n RawQueryResponse,\n UnfilteredResponseQueryOptions,\n} from '../types'\nimport {\n defaultStegaConfig,\n initStegaConfig,\n splitConfig,\n splitStegaConfigFromFetchOptions,\n} from './config'\nimport {stegaEncodeSourceMap} from './stegaEncodeSourceMap'\nimport {\n ClientStegaConfig,\n InitializedClientStegaConfig,\n InitializedStegaConfig,\n StegaConfig,\n} from './types'\n\n/** @public */\nexport class ObservableSanityStegaClient extends ObservableSanityClient {\n /**\n * Private properties\n */\n #httpRequest: HttpRequest\n private stegaConfig: InitializedStegaConfig\n\n constructor(httpRequest: HttpRequest, config: ClientStegaConfig = defaultConfig) {\n const {clientConfig, stegaConfig} = splitConfig(config)\n super(httpRequest, clientConfig)\n\n this.#httpRequest = httpRequest\n this.stegaConfig = initStegaConfig(stegaConfig, defaultStegaConfig)\n }\n\n /**\n * Clone the client - returns a new instance\n */\n clone(): ObservableSanityStegaClient {\n return new ObservableSanityStegaClient(this.#httpRequest, this.config())\n }\n\n /**\n * Returns the current client configuration\n */\n config(): InitializedClientStegaConfig\n /**\n * Reconfigure the client. Note that this _mutates_ the current client.\n */\n config(newConfig?: Partial<ClientStegaConfig>): this\n config(newConfig?: Partial<ClientStegaConfig>): ClientStegaConfig | this {\n if (newConfig === undefined) {\n return {...super.config(), stega: {...this.stegaConfig}}\n }\n\n const {clientConfig, stegaConfig} = splitConfig(newConfig)\n super.config(clientConfig)\n\n this.stegaConfig = initStegaConfig(stegaConfig, this.stegaConfig || {})\n return this\n }\n\n /**\n * Clone the client with a new (partial) configuration.\n *\n * @param newConfig - New client configuration properties, shallowly merged with existing configuration\n */\n withConfig(newConfig?: Partial<ClientConfig>): ObservableSanityStegaClient {\n const thisConfig = this.config()\n const {stegaConfig} = splitConfig(newConfig || {})\n return new ObservableSanityStegaClient(this.#httpRequest, {\n ...thisConfig,\n ...newConfig,\n stega: {\n ...(thisConfig.stega || {}),\n ...(stegaConfig || {}),\n },\n })\n }\n\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n */\n fetch<R = Any>(query: string): Observable<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Query parameters\n */\n fetch<R = Any, Q = QueryParams>(query: string, params: Q): Observable<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: FilteredResponseQueryOptions & {stega?: boolean | StegaConfig},\n ): Observable<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: UnfilteredResponseQueryOptions & {stega?: boolean | StegaConfig},\n ): Observable<RawQueryResponse<R>>\n fetch<R, Q extends QueryParams>(\n query: string,\n params?: Q,\n _options: (FilteredResponseQueryOptions | UnfilteredResponseQueryOptions) & {\n stega?: boolean | StegaConfig\n } = {},\n ): Observable<RawQueryResponse<R> | R> {\n const {stegaConfig, fetchOptions: options} = splitStegaConfigFromFetchOptions(\n _options,\n this.stegaConfig,\n )\n if (!stegaConfig.enabled) {\n return super.fetch<R, Q>(query, params, options as Any)\n }\n const {filterResponse: originalFilterResponse = true} = options\n return super\n .fetch<R, Q>(\n query,\n params,\n Object.assign({}, options as Any, {\n filterResponse: false,\n resultSourceMap: 'withKeyArraySelector',\n }),\n )\n .pipe(\n map((res: Any) => {\n const {result: _result, resultSourceMap} = res as RawQueryResponse<R>\n const result = stegaEncodeSourceMap(_result, resultSourceMap, stegaConfig)\n return originalFilterResponse ? result : {...res, result}\n }),\n )\n }\n}\n\n/** @public */\nexport class SanityStegaClient extends SanityClient {\n /**\n * Observable version of the Sanity client, with the same configuration as the promise-based one\n */\n observable: ObservableSanityStegaClient\n\n /**\n * Private properties\n */\n #httpRequest: HttpRequest\n private stegaConfig: InitializedStegaConfig\n\n constructor(httpRequest: HttpRequest, config: ClientStegaConfig = defaultConfig) {\n const {clientConfig, stegaConfig} = splitConfig(config)\n super(httpRequest, clientConfig)\n\n this.#httpRequest = httpRequest\n this.stegaConfig = initStegaConfig(stegaConfig, defaultStegaConfig)\n\n this.observable = new ObservableSanityStegaClient(httpRequest, config)\n }\n\n /**\n * Clone the client - returns a new instance\n */\n clone(): SanityStegaClient {\n return new SanityStegaClient(this.#httpRequest, this.config())\n }\n\n /**\n * Returns the current client configuration\n */\n config(): InitializedClientStegaConfig\n /**\n * Reconfigure the client. Note that this _mutates_ the current client.\n */\n config(newConfig?: Partial<ClientStegaConfig>): this\n config(newConfig?: Partial<ClientStegaConfig>): ClientStegaConfig | this {\n if (newConfig === undefined) {\n return {...super.config(), stega: {...this.stegaConfig}}\n }\n\n const {clientConfig, stegaConfig} = splitConfig(newConfig)\n super.config(clientConfig)\n\n this.stegaConfig = initStegaConfig(stegaConfig, {...(this.stegaConfig || {})})\n return this\n }\n\n /**\n * Clone the client with a new (partial) configuration.\n *\n * @param newConfig - New client configuration properties, shallowly merged with existing configuration\n */\n withConfig(newConfig?: Partial<ClientStegaConfig>): SanityStegaClient {\n const thisConfig = this.config()\n const {stegaConfig} = splitConfig(newConfig || {})\n return new SanityStegaClient(this.#httpRequest, {\n ...thisConfig,\n ...newConfig,\n stega: {\n ...(thisConfig.stega || {}),\n ...(stegaConfig || {}),\n },\n })\n }\n\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n */\n fetch<R = Any>(query: string): Promise<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Optional query parameters\n */\n fetch<R = Any, Q = QueryParams>(query: string, params: Q): Promise<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Optional query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: FilteredResponseQueryOptions & {stega?: boolean | StegaConfig},\n ): Promise<R>\n /**\n * Perform a GROQ-query against the configured dataset.\n *\n * @param query - GROQ-query to perform\n * @param params - Optional query parameters\n * @param options - Request options\n */\n fetch<R = Any, Q = QueryParams>(\n query: string,\n params: Q | undefined,\n options: UnfilteredResponseQueryOptions & {stega?: boolean | StegaConfig},\n ): Promise<RawQueryResponse<R>>\n fetch<R, Q extends QueryParams>(\n query: string,\n params?: Q,\n _options: (FilteredResponseQueryOptions | UnfilteredResponseQueryOptions) & {\n stega?: boolean | StegaConfig\n } = {},\n ): Promise<RawQueryResponse<R> | R> {\n const {stegaConfig, fetchOptions: options} = splitStegaConfigFromFetchOptions(\n _options,\n this.stegaConfig,\n )\n if (!stegaConfig.enabled) {\n return super.fetch<R, Q>(query, params, options as Any)\n }\n const {filterResponse: originalFilterResponse = true} = options\n return super\n .fetch<R, Q>(\n query,\n params,\n Object.assign({}, options as Any, {\n filterResponse: false,\n resultSourceMap: 'withKeyArraySelector',\n }),\n )\n .then((res: Any) => {\n const {result: _result, resultSourceMap} = res as RawQueryResponse<R>\n const result = stegaEncodeSourceMap(_result, resultSourceMap, stegaConfig)\n return originalFilterResponse ? result : {...res, result}\n })\n }\n}\n","import {vercelStegaSplit} from '@vercel/stega'\n\n/**\n * Can take a `result` JSON from a `const {result} = client.fetch(query, params, {filterResponse: false})`\n * and remove all stega-encoded data from it.\n * @alpha\n */\nexport function vercelStegaCleanAll<Result = unknown>(result: Result): Result {\n return JSON.parse(\n JSON.stringify(result, (key, value) => {\n if (typeof value !== 'string') return value\n return vercelStegaSplit(value).cleaned\n }),\n )\n}\n","export * from '../defineCreateClient'\n\nimport defineCreateClientExports from '../defineCreateClient'\nimport envMiddleware from '../http/nodeMiddleware'\nimport {SanityStegaClient} from './SanityStegaClient'\nimport type {ClientStegaConfig} from './types'\n\nconst exp = defineCreateClientExports<SanityStegaClient, ClientStegaConfig>(\n envMiddleware,\n SanityStegaClient,\n)\n\nexport * from './shared'\n\n/** @public */\nexport const requester = exp.requester\n\n/** @public */\nexport const createClient = exp.createClient\n"],"names":["defaultStegaConfig","enabled","filter","props","filterDefault","splitConfig","config","stega","clientConfig","stegaConfig","initStegaConfig","prevConfig","specifiedConfig","Object","assign","newConfig","Error","concat","studioUrl","splitStegaConfigFromFetchOptions","options","initializedStegaConfig","fetchOptions","encodeIntoResult","result","csm","encoder","walkMap","value","path","resolveMappingResult","resolveMapping","mapping","matchedPath","type","source","sourceDocument","documents","document","sourcePath","paths","matchPathSegments","parseJsonPath","sourcePathSegments","fullSourceSegments","slice","length","resultPath","_ref","isValidDate","isValidURL","endPath","at","startsWith","some","denylist","has","Set","dateString","Number","isNaN","Boolean","Date","parse","url","URL","TRUNCATE_LENGTH","stegaEncodeSourceMap","resultSourceMap","_a","_b","_c","_d","_e","_f","_g","_h","_i","logger","msg","error","call","TypeError","report","encoded","skipped","resultWithStega","_ref2","push","prettyPathForLogging","baseUrl","workspace","tool","resolveStudioBaseRoute","_id","id","_type","vercelStegaCombine","origin","href","createEditUrl","isSkipping","isEncoding","groupCollapsed","log","table","add","replace","reKeySegment","values","groupEnd","studioPathToString","jsonPathToStudioPath","_httpRequest","_ObservableSanityStegaClient","ObservableSanityClient","constructor","httpRequest","arguments","undefined","defaultConfig","__privateAdd","__privateSet","clone","__privateGet","withConfig","thisConfig","fetch","query","params","_options","filterResponse","originalFilterResponse","pipe","map","res","_result","WeakMap","ObservableSanityStegaClient","_SanityStegaClient","SanityClient","observable","then","SanityStegaClient","vercelStegaCleanAll","JSON","stringify","key","vercelStegaSplit","cleaned","exp","defineCreateClientExports","envMiddleware","middleware","requester","createClient"],"mappings":"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"}
|
package/dist/stega.d.ts
CHANGED
|
@@ -341,7 +341,7 @@ export declare type ClientPerspective = 'previewDrafts' | 'published' | 'raw'
|
|
|
341
341
|
|
|
342
342
|
/** @public */
|
|
343
343
|
export declare interface ClientStegaConfig extends ClientConfig {
|
|
344
|
-
stega?: StegaConfig
|
|
344
|
+
stega?: StegaConfig | boolean
|
|
345
345
|
}
|
|
346
346
|
|
|
347
347
|
/** @public */
|
|
@@ -1628,7 +1628,9 @@ export declare class ObservableSanityStegaClient extends ObservableSanityClient
|
|
|
1628
1628
|
fetch<R = Any, Q = QueryParams>(
|
|
1629
1629
|
query: string,
|
|
1630
1630
|
params: Q | undefined,
|
|
1631
|
-
options: FilteredResponseQueryOptions
|
|
1631
|
+
options: FilteredResponseQueryOptions & {
|
|
1632
|
+
stega?: boolean | StegaConfig
|
|
1633
|
+
},
|
|
1632
1634
|
): Observable<R>
|
|
1633
1635
|
/**
|
|
1634
1636
|
* Perform a GROQ-query against the configured dataset.
|
|
@@ -1640,7 +1642,9 @@ export declare class ObservableSanityStegaClient extends ObservableSanityClient
|
|
|
1640
1642
|
fetch<R = Any, Q = QueryParams>(
|
|
1641
1643
|
query: string,
|
|
1642
1644
|
params: Q | undefined,
|
|
1643
|
-
options: UnfilteredResponseQueryOptions
|
|
1645
|
+
options: UnfilteredResponseQueryOptions & {
|
|
1646
|
+
stega?: boolean | StegaConfig
|
|
1647
|
+
},
|
|
1644
1648
|
): Observable<RawQueryResponse<R>>
|
|
1645
1649
|
}
|
|
1646
1650
|
|
|
@@ -2576,7 +2580,9 @@ export declare class SanityStegaClient extends SanityClient {
|
|
|
2576
2580
|
fetch<R = Any, Q = QueryParams>(
|
|
2577
2581
|
query: string,
|
|
2578
2582
|
params: Q | undefined,
|
|
2579
|
-
options: FilteredResponseQueryOptions
|
|
2583
|
+
options: FilteredResponseQueryOptions & {
|
|
2584
|
+
stega?: boolean | StegaConfig
|
|
2585
|
+
},
|
|
2580
2586
|
): Promise<R>
|
|
2581
2587
|
/**
|
|
2582
2588
|
* Perform a GROQ-query against the configured dataset.
|
|
@@ -2588,7 +2594,9 @@ export declare class SanityStegaClient extends SanityClient {
|
|
|
2588
2594
|
fetch<R = Any, Q = QueryParams>(
|
|
2589
2595
|
query: string,
|
|
2590
2596
|
params: Q | undefined,
|
|
2591
|
-
options: UnfilteredResponseQueryOptions
|
|
2597
|
+
options: UnfilteredResponseQueryOptions & {
|
|
2598
|
+
stega?: boolean | StegaConfig
|
|
2599
|
+
},
|
|
2592
2600
|
): Promise<RawQueryResponse<R>>
|
|
2593
2601
|
}
|
|
2594
2602
|
|
|
@@ -2649,18 +2657,10 @@ export declare interface StegaConfig {
|
|
|
2649
2657
|
* Specify a `console.log` compatible logger to see debug logs, which keys are encoded and which are not.
|
|
2650
2658
|
*/
|
|
2651
2659
|
logger?: Logger
|
|
2652
|
-
/**
|
|
2653
|
-
* Override the `skip` parameter in `vercelStegaCombine`
|
|
2654
|
-
* @defaultValue `'auto'`
|
|
2655
|
-
*/
|
|
2656
|
-
vercelStegaCombineSkip?: 'auto' | boolean
|
|
2657
2660
|
}
|
|
2658
2661
|
|
|
2659
2662
|
/** @public */
|
|
2660
|
-
export declare type StegaConfigRequiredKeys = Extract<
|
|
2661
|
-
keyof StegaConfig,
|
|
2662
|
-
'enabled' | 'filter' | 'vercelStegaCombineSkip'
|
|
2663
|
-
>
|
|
2663
|
+
export declare type StegaConfigRequiredKeys = Extract<keyof StegaConfig, 'enabled' | 'filter'>
|
|
2664
2664
|
|
|
2665
2665
|
/**
|
|
2666
2666
|
* Uses `@vercel/stega` to embed edit info JSON into strings in your query result.
|
package/dist/stega.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { ObservableSanityClient, defaultConfig, SanityClient, defineCreateClientExports, middleware } from './_chunks/nodeMiddleware-
|
|
2
|
-
export { BasePatch, BaseTransaction, ClientError, ObservablePatch, ObservableTransaction, Patch, ServerError, Transaction } from './_chunks/nodeMiddleware-
|
|
1
|
+
import { ObservableSanityClient, defaultConfig, SanityClient, defineCreateClientExports, middleware } from './_chunks/nodeMiddleware-FR4SCkjH.js';
|
|
2
|
+
export { BasePatch, BaseTransaction, ClientError, ObservablePatch, ObservableTransaction, Patch, ServerError, Transaction } from './_chunks/nodeMiddleware-FR4SCkjH.js';
|
|
3
3
|
import { map } from 'rxjs/operators';
|
|
4
4
|
import { vercelStegaCombine, vercelStegaSplit } from '@vercel/stega';
|
|
5
5
|
import { walkMap, resolveMapping, parseJsonPath, resolveStudioBaseRoute, createEditUrl, reKeySegment, toString, jsonPathToStudioPath } from './_chunks/resolveEditInfo-R2JexMKb.js';
|
|
6
6
|
export { adapter as unstable__adapter, environment as unstable__environment } from 'get-it';
|
|
7
7
|
const defaultStegaConfig = {
|
|
8
8
|
enabled: false,
|
|
9
|
-
filter: props => props.filterDefault(props)
|
|
10
|
-
vercelStegaCombineSkip: "auto"
|
|
9
|
+
filter: props => props.filterDefault(props)
|
|
11
10
|
};
|
|
12
11
|
function splitConfig(config) {
|
|
13
12
|
const {
|
|
@@ -16,7 +15,9 @@ function splitConfig(config) {
|
|
|
16
15
|
} = config;
|
|
17
16
|
return {
|
|
18
17
|
clientConfig,
|
|
19
|
-
stegaConfig: stega
|
|
18
|
+
stegaConfig: typeof stega === "boolean" ? {
|
|
19
|
+
enabled: stega
|
|
20
|
+
} : stega
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
23
|
const initStegaConfig = (config, prevConfig) => {
|
|
@@ -39,6 +40,19 @@ const initStegaConfig = (config, prevConfig) => {
|
|
|
39
40
|
}
|
|
40
41
|
return newConfig;
|
|
41
42
|
};
|
|
43
|
+
function splitStegaConfigFromFetchOptions(options, initializedStegaConfig) {
|
|
44
|
+
const {
|
|
45
|
+
stega = {},
|
|
46
|
+
...fetchOptions
|
|
47
|
+
} = options;
|
|
48
|
+
const stegaConfig = initStegaConfig(typeof stega === "boolean" ? {
|
|
49
|
+
enabled: stega
|
|
50
|
+
} : stega, initializedStegaConfig);
|
|
51
|
+
return {
|
|
52
|
+
fetchOptions,
|
|
53
|
+
stegaConfig
|
|
54
|
+
};
|
|
55
|
+
}
|
|
42
56
|
function encodeIntoResult(result, csm, encoder) {
|
|
43
57
|
return walkMap(result, (value, path) => {
|
|
44
58
|
if (typeof value !== "string") {
|
|
@@ -73,8 +87,12 @@ function encodeIntoResult(result, csm, encoder) {
|
|
|
73
87
|
}
|
|
74
88
|
const filterDefault = _ref => {
|
|
75
89
|
let {
|
|
76
|
-
sourcePath
|
|
90
|
+
sourcePath,
|
|
91
|
+
value
|
|
77
92
|
} = _ref;
|
|
93
|
+
if (isValidDate(value) || isValidURL(value)) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
78
96
|
const endPath = sourcePath.at(-1);
|
|
79
97
|
if (sourcePath.at(-2) === "slug" && endPath === "current") {
|
|
80
98
|
return false;
|
|
@@ -100,12 +118,22 @@ const filterDefault = _ref => {
|
|
|
100
118
|
return true;
|
|
101
119
|
};
|
|
102
120
|
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"]);
|
|
121
|
+
function isValidDate(dateString) {
|
|
122
|
+
return Number.isNaN(Number(dateString)) ? Boolean(Date.parse(dateString)) : false;
|
|
123
|
+
}
|
|
124
|
+
function isValidURL(url) {
|
|
125
|
+
try {
|
|
126
|
+
new URL(url, url.startsWith("/") ? "https://acme.com" : void 0);
|
|
127
|
+
} catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
103
132
|
const TRUNCATE_LENGTH = 20;
|
|
104
133
|
function stegaEncodeSourceMap(result, resultSourceMap, config) {
|
|
105
134
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
106
135
|
const {
|
|
107
136
|
filter,
|
|
108
|
-
vercelStegaCombineSkip,
|
|
109
137
|
logger,
|
|
110
138
|
enabled
|
|
111
139
|
} = config;
|
|
@@ -195,7 +223,9 @@ function stegaEncodeSourceMap(result, resultSourceMap, config) {
|
|
|
195
223
|
type,
|
|
196
224
|
path: sourcePath
|
|
197
225
|
})
|
|
198
|
-
},
|
|
226
|
+
},
|
|
227
|
+
// We use custom logic to determine if we should skip encoding
|
|
228
|
+
false);
|
|
199
229
|
});
|
|
200
230
|
if (logger) {
|
|
201
231
|
const isSkipping = report.skipped.length;
|
|
@@ -273,10 +303,11 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
|
|
|
273
303
|
}
|
|
274
304
|
};
|
|
275
305
|
}
|
|
276
|
-
super.config(newConfig);
|
|
277
306
|
const {
|
|
307
|
+
clientConfig,
|
|
278
308
|
stegaConfig
|
|
279
309
|
} = splitConfig(newConfig);
|
|
310
|
+
super.config(clientConfig);
|
|
280
311
|
this.stegaConfig = initStegaConfig(stegaConfig, this.stegaConfig || {});
|
|
281
312
|
return this;
|
|
282
313
|
}
|
|
@@ -286,14 +317,26 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
|
|
|
286
317
|
* @param newConfig - New client configuration properties, shallowly merged with existing configuration
|
|
287
318
|
*/
|
|
288
319
|
withConfig(newConfig) {
|
|
320
|
+
const thisConfig = this.config();
|
|
321
|
+
const {
|
|
322
|
+
stegaConfig
|
|
323
|
+
} = splitConfig(newConfig || {});
|
|
289
324
|
return new _ObservableSanityStegaClient(__privateGet(this, _httpRequest), {
|
|
290
|
-
...
|
|
291
|
-
...newConfig
|
|
325
|
+
...thisConfig,
|
|
326
|
+
...newConfig,
|
|
327
|
+
stega: {
|
|
328
|
+
...(thisConfig.stega || {}),
|
|
329
|
+
...(stegaConfig || {})
|
|
330
|
+
}
|
|
292
331
|
});
|
|
293
332
|
}
|
|
294
333
|
fetch(query, params) {
|
|
295
|
-
let
|
|
296
|
-
|
|
334
|
+
let _options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
335
|
+
const {
|
|
336
|
+
stegaConfig,
|
|
337
|
+
fetchOptions: options
|
|
338
|
+
} = splitStegaConfigFromFetchOptions(_options, this.stegaConfig);
|
|
339
|
+
if (!stegaConfig.enabled) {
|
|
297
340
|
return super.fetch(query, params, options);
|
|
298
341
|
}
|
|
299
342
|
const {
|
|
@@ -307,7 +350,7 @@ const _ObservableSanityStegaClient = class _ObservableSanityStegaClient extends
|
|
|
307
350
|
result: _result,
|
|
308
351
|
resultSourceMap
|
|
309
352
|
} = res;
|
|
310
|
-
const result = stegaEncodeSourceMap(_result, resultSourceMap,
|
|
353
|
+
const result = stegaEncodeSourceMap(_result, resultSourceMap, stegaConfig);
|
|
311
354
|
return originalFilterResponse ? result : {
|
|
312
355
|
...res,
|
|
313
356
|
result
|
|
@@ -348,10 +391,11 @@ const _SanityStegaClient = class _SanityStegaClient extends SanityClient {
|
|
|
348
391
|
}
|
|
349
392
|
};
|
|
350
393
|
}
|
|
351
|
-
super.config(newConfig);
|
|
352
394
|
const {
|
|
395
|
+
clientConfig,
|
|
353
396
|
stegaConfig
|
|
354
397
|
} = splitConfig(newConfig);
|
|
398
|
+
super.config(clientConfig);
|
|
355
399
|
this.stegaConfig = initStegaConfig(stegaConfig, {
|
|
356
400
|
...(this.stegaConfig || {})
|
|
357
401
|
});
|
|
@@ -363,14 +407,26 @@ const _SanityStegaClient = class _SanityStegaClient extends SanityClient {
|
|
|
363
407
|
* @param newConfig - New client configuration properties, shallowly merged with existing configuration
|
|
364
408
|
*/
|
|
365
409
|
withConfig(newConfig) {
|
|
410
|
+
const thisConfig = this.config();
|
|
411
|
+
const {
|
|
412
|
+
stegaConfig
|
|
413
|
+
} = splitConfig(newConfig || {});
|
|
366
414
|
return new _SanityStegaClient(__privateGet(this, _httpRequest2), {
|
|
367
|
-
...
|
|
368
|
-
...newConfig
|
|
415
|
+
...thisConfig,
|
|
416
|
+
...newConfig,
|
|
417
|
+
stega: {
|
|
418
|
+
...(thisConfig.stega || {}),
|
|
419
|
+
...(stegaConfig || {})
|
|
420
|
+
}
|
|
369
421
|
});
|
|
370
422
|
}
|
|
371
423
|
fetch(query, params) {
|
|
372
|
-
let
|
|
373
|
-
|
|
424
|
+
let _options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
425
|
+
const {
|
|
426
|
+
stegaConfig,
|
|
427
|
+
fetchOptions: options
|
|
428
|
+
} = splitStegaConfigFromFetchOptions(_options, this.stegaConfig);
|
|
429
|
+
if (!stegaConfig.enabled) {
|
|
374
430
|
return super.fetch(query, params, options);
|
|
375
431
|
}
|
|
376
432
|
const {
|
|
@@ -384,7 +440,7 @@ const _SanityStegaClient = class _SanityStegaClient extends SanityClient {
|
|
|
384
440
|
result: _result,
|
|
385
441
|
resultSourceMap
|
|
386
442
|
} = res;
|
|
387
|
-
const result = stegaEncodeSourceMap(_result, resultSourceMap,
|
|
443
|
+
const result = stegaEncodeSourceMap(_result, resultSourceMap, stegaConfig);
|
|
388
444
|
return originalFilterResponse ? result : {
|
|
389
445
|
...res,
|
|
390
446
|
result
|