next-sanity 13.0.0-cache-components.23 → 13.0.0-cache-components.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { t as isCorsOriginError } from "../../../isCorsOriginError.js";
2
2
  import { i as PerspectiveType, n as DefinedFetchType, r as DefinedLiveProps, t as DefineLiveOptions } from "../../../types.js";
3
- import { t as ResolvePerspectiveFromCookies } from "../../../resolvePerspectiveFromCookies.js";
3
+ import { n as ResolvePerspectiveFromCookies, t as parseTags } from "../../../parseTags.js";
4
4
  /**
5
5
  * @public
6
6
  */
@@ -13,5 +13,5 @@ declare function defineLive(_config: DefineLiveOptions): {
13
13
  * @public
14
14
  */
15
15
  declare const resolvePerspectiveFromCookies: ResolvePerspectiveFromCookies;
16
- export { type PerspectiveType as LivePerspective, defineLive, isCorsOriginError, resolvePerspectiveFromCookies };
16
+ export { type PerspectiveType as LivePerspective, defineLive, isCorsOriginError, parseTags, resolvePerspectiveFromCookies };
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/live/conditions/default/index.ts"],"mappings":";;;;AAcA;;iBAAgB,UAAA,CAAW,OAAA,EAAS,iBAAA;EAClC,WAAA,EAAa,gBAAA;EACb,UAAA,EAAY,KAAA,CAAM,aAAA,CAAc,gBAAA;AAAA;;;;;cASrB,6BAAA,EAA+B,6BAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/live/conditions/default/index.ts"],"mappings":";;;AAeA;;;AAAA,iBAAgB,UAAA,CAAW,OAAA,EAAS,iBAAA;EAClC,WAAA,EAAa,gBAAA;EACb,UAAA,EAAY,KAAA,CAAM,aAAA,CAAc,gBAAA;AAAA;;;;;cASrB,6BAAA,EAA+B,6BAAA"}
@@ -1,10 +1,11 @@
1
1
  import { t as isCorsOriginError } from "../../../isCorsOriginError.js";
2
+ import { t as parseTags } from "../../../parseTags.js";
2
3
  function defineLive(_config) {
3
4
  throw new Error(`defineLive can't be imported by a client component`);
4
5
  }
5
6
  const resolvePerspectiveFromCookies = () => {
6
7
  throw new Error(`resolvePerspectiveFromCookies can't be imported by a client component`);
7
8
  };
8
- export { defineLive, isCorsOriginError, resolvePerspectiveFromCookies };
9
+ export { defineLive, isCorsOriginError, parseTags, resolvePerspectiveFromCookies };
9
10
 
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../src/live/conditions/default/index.ts"],"sourcesContent":["// This is the fallback export condition for `import 'next-sanity/live'`,\n// it should have the same type definitions as the other conditions so that userland don't have to worry about setting the right\n// `customCondition` in their `tsconfig.json` in order to get accurate typings.\n// The implementation here though should all throw errors, as importing this file means userland made a mistake and somehow a client component is\n// trying to pull in something it shouldn't.\n\nimport type {ResolvePerspectiveFromCookies} from '#live/resolvePerspectiveFromCookies'\nimport type {DefinedFetchType, DefinedLiveProps, DefineLiveOptions} from '#live/types'\n\nexport {isCorsOriginError} from '#live/isCorsOriginError'\n\n/**\n * @public\n */\nexport function defineLive(_config: DefineLiveOptions): {\n sanityFetch: DefinedFetchType\n SanityLive: React.ComponentType<DefinedLiveProps>\n} {\n throw new Error(`defineLive can't be imported by a client component`)\n}\n\n/**\n * Resolves the perspective from the cookie that is set by `import { defineEnableDraftMode } from \"next-sanity/draft-mode\"`\n * @public\n */\nexport const resolvePerspectiveFromCookies: ResolvePerspectiveFromCookies = () => {\n throw new Error(`resolvePerspectiveFromCookies can't be imported by a client component`)\n}\n\nexport type {PerspectiveType as LivePerspective} from '#live/types'\n"],"mappings":";AAcA,SAAgB,WAAW,SAGzB;AACA,OAAM,IAAI,MAAM,qDAAqD;;AAOvE,MAAa,sCAAqE;AAChF,OAAM,IAAI,MAAM,wEAAwE"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/live/conditions/default/index.ts"],"sourcesContent":["// This is the fallback export condition for `import 'next-sanity/live'`,\n// it should have the same type definitions as the other conditions so that userland don't have to worry about setting the right\n// `customCondition` in their `tsconfig.json` in order to get accurate typings.\n// The implementation here though should all throw errors, as importing this file means userland made a mistake and somehow a client component is\n// trying to pull in something it shouldn't.\n\nimport type {ResolvePerspectiveFromCookies} from '#live/resolvePerspectiveFromCookies'\nimport type {DefinedFetchType, DefinedLiveProps, DefineLiveOptions} from '#live/types'\n\nexport {isCorsOriginError} from '#live/isCorsOriginError'\nexport {parseTags} from '#live/parseTags'\n\n/**\n * @public\n */\nexport function defineLive(_config: DefineLiveOptions): {\n sanityFetch: DefinedFetchType\n SanityLive: React.ComponentType<DefinedLiveProps>\n} {\n throw new Error(`defineLive can't be imported by a client component`)\n}\n\n/**\n * Resolves the perspective from the cookie that is set by `import { defineEnableDraftMode } from \"next-sanity/draft-mode\"`\n * @public\n */\nexport const resolvePerspectiveFromCookies: ResolvePerspectiveFromCookies = () => {\n throw new Error(`resolvePerspectiveFromCookies can't be imported by a client component`)\n}\n\nexport type {PerspectiveType as LivePerspective} from '#live/types'\n"],"mappings":";;AAeA,SAAgB,WAAW,SAGzB;AACA,OAAM,IAAI,MAAM,qDAAqD;;AAOvE,MAAa,sCAAqE;AAChF,OAAM,IAAI,MAAM,wEAAwE"}
@@ -1,9 +1,9 @@
1
1
  import { t as isCorsOriginError } from "../../../isCorsOriginError.js";
2
2
  import { i as PerspectiveType, n as DefinedFetchType, r as DefinedLiveProps, t as DefineLiveOptions } from "../../../types.js";
3
- import { n as resolvePerspectiveFromCookies } from "../../../resolvePerspectiveFromCookies.js";
3
+ import { r as resolvePerspectiveFromCookies, t as parseTags } from "../../../parseTags.js";
4
4
  declare function defineLive(config: DefineLiveOptions): {
5
5
  sanityFetch: DefinedFetchType;
6
6
  SanityLive: React.ComponentType<DefinedLiveProps>;
7
7
  };
8
- export { type PerspectiveType as LivePerspective, defineLive, isCorsOriginError, resolvePerspectiveFromCookies };
8
+ export { type PerspectiveType as LivePerspective, defineLive, isCorsOriginError, parseTags, resolvePerspectiveFromCookies };
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import { t as isCorsOriginError } from "../../../isCorsOriginError.js";
2
2
  import { n as PUBLISHED_SYNC_TAG_PREFIX, r as revalidate, t as DRAFT_SYNC_TAG_PREFIX } from "../../../constants.js";
3
+ import { t as parseTags } from "../../../parseTags.js";
3
4
  import { t as resolvePerspectiveFromCookies } from "../../../resolvePerspectiveFromCookies.js";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  import { SanityLive } from "next-sanity/live/client-components";
@@ -15,8 +16,8 @@ function defineLive(config) {
15
16
  allowReconfigure: false,
16
17
  useCdn: true
17
18
  });
18
- const { token: originalToken } = client.config();
19
- const fetch = async function fetch({ query, params = {}, perspective = "published", stega = false, tags: customCacheTags = [], requestTag = "next-loader.fetch.cache-components" }) {
19
+ const { token: originalToken, perspective: originalPerspective = "published" } = client.config();
20
+ const fetch = async function fetch({ query, params = {}, perspective = originalPerspective, stega = false, tags: customCacheTags = [], requestTag = "next-loader.fetch.cache-components" }) {
20
21
  const useCdn = perspective === "published";
21
22
  const { result, resultSourceMap, syncTags } = await client.fetch(query, await params, {
22
23
  filterResponse: false,
@@ -71,6 +72,6 @@ function defineLive(config) {
71
72
  SanityLive: Live
72
73
  };
73
74
  }
74
- export { defineLive, isCorsOriginError, resolvePerspectiveFromCookies };
75
+ export { defineLive, isCorsOriginError, parseTags, resolvePerspectiveFromCookies };
75
76
 
76
77
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SanityLiveClientComponent"],"sources":["../../../../src/live/conditions/next-js/defineLive.tsx"],"sourcesContent":["import type {DefinedFetchType, DefinedLiveProps, DefineLiveOptions} from '#live/types'\n\nimport {DRAFT_SYNC_TAG_PREFIX, PUBLISHED_SYNC_TAG_PREFIX, revalidate} from '#live/constants'\nimport {SanityLive as SanityLiveClientComponent} from 'next-sanity/live/client-components'\nimport {actionRefresh, actionUpdateTags} from 'next-sanity/live/server-actions'\nimport {cacheLife, cacheTag} from 'next/cache'\nimport {preconnect} from 'react-dom'\n\nexport function defineLive(config: DefineLiveOptions): {\n sanityFetch: DefinedFetchType\n SanityLive: React.ComponentType<DefinedLiveProps>\n} {\n const {client: _client, serverToken, browserToken} = config\n\n if (!_client) {\n throw new Error('`client` is required for `defineLive` to function')\n }\n\n if (process.env.NODE_ENV !== 'production' && !serverToken && serverToken !== false) {\n console.warn(\n 'No `serverToken` provided to `defineLive`. This means that only published content will be fetched and respond to live events. You can silence this warning by setting `serverToken: false`.',\n )\n }\n\n if (process.env.NODE_ENV !== 'production' && !browserToken && browserToken !== false) {\n console.warn(\n 'No `browserToken` provided to `defineLive`. This means that live previewing drafts will only work when using the Presentation Tool in your Sanity Studio. To support live previewing drafts stand-alone, provide a `browserToken`. It is shared with the browser so it should only have Viewer rights or lower. You can silence this warning by setting `browserToken: false`.',\n )\n }\n\n const client = _client.withConfig({allowReconfigure: false, useCdn: true})\n const {token: originalToken} = client.config()\n\n const fetch: DefinedFetchType = async function fetch({\n query,\n params = {},\n perspective = 'published',\n stega = false,\n tags: customCacheTags = [],\n requestTag = 'next-loader.fetch.cache-components',\n }) {\n const useCdn = perspective === 'published'\n\n const {result, resultSourceMap, syncTags} = await client.fetch(query, await params, {\n filterResponse: false,\n returnQuery: false,\n perspective,\n useCdn,\n stega,\n cacheMode: useCdn ? 'noStale' : undefined,\n tag: requestTag,\n token: perspective === 'published' ? originalToken : serverToken || originalToken, // @TODO can pass undefined instead of config.token here?\n })\n const tags = [\n ...customCacheTags,\n ...(syncTags || []).map(\n (tag) =>\n `${perspective === 'published' ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`,\n ),\n ]\n /**\n * The tags used here, are expired later on in the `expireTags` Server Action with the `expireTag` function from `next/cache`\n */\n cacheTag(...tags)\n /**\n * Sanity Live handles on-demand revalidation, so the default 15min time based revalidation is too short,\n * userland can still set a shorter revalidate time by calling `cacheLife` themselves.\n */\n cacheLife({revalidate})\n\n return {data: result, sourceMap: resultSourceMap || null, tags}\n }\n\n const Live: React.ComponentType<DefinedLiveProps> = function Live(props) {\n const {\n includeAllDocuments = false,\n action = actionUpdateTags,\n restartAction = actionRefresh,\n reconnectAction = actionRefresh,\n goAwayAction,\n welcomeAction,\n refreshOnMount = false,\n refreshOnFocus = false,\n refreshOnReconnect = false,\n requestTag = 'next-loader.live.cache-components',\n } = props\n\n const shouldIncludeDrafts = typeof browserToken === 'string' && includeAllDocuments\n\n const {projectId, dataset, apiHost, apiVersion, useProjectHostname, requestTagPrefix} =\n client.config()\n\n // Preconnect to the Live Event API origin early, as the Sanity API is almost always on a different origin than the app\n const {origin} = new URL(client.getUrl('', false))\n preconnect(origin)\n\n return (\n <SanityLiveClientComponent\n config={{\n projectId,\n dataset,\n apiHost,\n apiVersion,\n useProjectHostname,\n requestTagPrefix,\n token: shouldIncludeDrafts ? browserToken : undefined,\n }}\n includeAllDocuments={shouldIncludeDrafts}\n action={action}\n reconnectAction={reconnectAction === false ? undefined : reconnectAction}\n restartAction={restartAction === false ? undefined : restartAction}\n welcomeAction={welcomeAction}\n goAwayAction={goAwayAction}\n requestTag={requestTag}\n refreshOnMount={refreshOnMount}\n refreshOnFocus={refreshOnFocus}\n refreshOnReconnect={refreshOnReconnect}\n />\n )\n }\n Live.displayName = 'SanityLiveServerComponent'\n\n return {\n sanityFetch: fetch,\n SanityLive: Live,\n }\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,WAAW,QAGzB;CACA,MAAM,EAAC,QAAQ,SAAS,aAAa,iBAAgB;AAErD,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oDAAoD;AAGtE,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,eAAe,gBAAgB,MAC3E,SAAQ,KACN,8LACD;AAGH,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,gBAAgB,iBAAiB,MAC7E,SAAQ,KACN,iXACD;CAGH,MAAM,SAAS,QAAQ,WAAW;EAAC,kBAAkB;EAAO,QAAQ;EAAK,CAAC;CAC1E,MAAM,EAAC,OAAO,kBAAiB,OAAO,QAAQ;CAE9C,MAAM,QAA0B,eAAe,MAAM,EACnD,OACA,SAAS,EAAE,EACX,cAAc,aACd,QAAQ,OACR,MAAM,kBAAkB,EAAE,EAC1B,aAAa,wCACZ;EACD,MAAM,SAAS,gBAAgB;EAE/B,MAAM,EAAC,QAAQ,iBAAiB,aAAY,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;GAClF,gBAAgB;GAChB,aAAa;GACb;GACA;GACA;GACA,WAAW,SAAS,YAAY,KAAA;GAChC,KAAK;GACL,OAAO,gBAAgB,cAAc,gBAAgB,eAAe;GACrE,CAAC;EACF,MAAM,OAAO,CACX,GAAG,iBACH,IAAI,YAAY,EAAE,EAAE,KACjB,QACC,GAAG,gBAAgB,cAAc,4BAA4B,wBAAwB,MACxF,CACF;AAID,WAAS,GAAG,KAAK;AAKjB,YAAU,EAAC,YAAW,CAAC;AAEvB,SAAO;GAAC,MAAM;GAAQ,WAAW,mBAAmB;GAAM;GAAK;;CAGjE,MAAM,OAA8C,SAAS,KAAK,OAAO;EACvE,MAAM,EACJ,sBAAsB,OACtB,SAAS,kBACT,gBAAgB,eAChB,kBAAkB,eAClB,cACA,eACA,iBAAiB,OACjB,iBAAiB,OACjB,qBAAqB,OACrB,aAAa,wCACX;EAEJ,MAAM,sBAAsB,OAAO,iBAAiB,YAAY;EAEhE,MAAM,EAAC,WAAW,SAAS,SAAS,YAAY,oBAAoB,qBAClE,OAAO,QAAQ;EAGjB,MAAM,EAAC,WAAU,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC;AAClD,aAAW,OAAO;AAElB,SACE,oBAACA,YAAAA;GACC,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA,OAAO,sBAAsB,eAAe,KAAA;IAC7C;GACD,qBAAqB;GACb;GACR,iBAAiB,oBAAoB,QAAQ,KAAA,IAAY;GACzD,eAAe,kBAAkB,QAAQ,KAAA,IAAY;GACtC;GACD;GACF;GACI;GACA;GACI;IACpB;;AAGN,MAAK,cAAc;AAEnB,QAAO;EACL,aAAa;EACb,YAAY;EACb"}
1
+ {"version":3,"file":"index.js","names":["SanityLiveClientComponent"],"sources":["../../../../src/live/conditions/next-js/defineLive.tsx"],"sourcesContent":["import type {DefinedFetchType, DefinedLiveProps, DefineLiveOptions} from '#live/types'\n\nimport {DRAFT_SYNC_TAG_PREFIX, PUBLISHED_SYNC_TAG_PREFIX, revalidate} from '#live/constants'\nimport {SanityLive as SanityLiveClientComponent} from 'next-sanity/live/client-components'\nimport {actionRefresh, actionUpdateTags} from 'next-sanity/live/server-actions'\nimport {cacheLife, cacheTag} from 'next/cache'\nimport {preconnect} from 'react-dom'\n\nexport function defineLive(config: DefineLiveOptions): {\n sanityFetch: DefinedFetchType\n SanityLive: React.ComponentType<DefinedLiveProps>\n} {\n const {client: _client, serverToken, browserToken} = config\n\n if (!_client) {\n throw new Error('`client` is required for `defineLive` to function')\n }\n\n if (process.env.NODE_ENV !== 'production' && !serverToken && serverToken !== false) {\n console.warn(\n 'No `serverToken` provided to `defineLive`. This means that only published content will be fetched and respond to live events. You can silence this warning by setting `serverToken: false`.',\n )\n }\n\n if (process.env.NODE_ENV !== 'production' && !browserToken && browserToken !== false) {\n console.warn(\n 'No `browserToken` provided to `defineLive`. This means that live previewing drafts will only work when using the Presentation Tool in your Sanity Studio. To support live previewing drafts stand-alone, provide a `browserToken`. It is shared with the browser so it should only have Viewer rights or lower. You can silence this warning by setting `browserToken: false`.',\n )\n }\n\n const client = _client.withConfig({allowReconfigure: false, useCdn: true})\n const {token: originalToken, perspective: originalPerspective = 'published'} = client.config()\n\n const fetch: DefinedFetchType = async function fetch({\n query,\n params = {},\n perspective = originalPerspective,\n stega = false,\n tags: customCacheTags = [],\n requestTag = 'next-loader.fetch.cache-components',\n }) {\n const useCdn = perspective === 'published'\n\n const {result, resultSourceMap, syncTags} = await client.fetch(query, await params, {\n filterResponse: false,\n returnQuery: false,\n perspective,\n useCdn,\n stega,\n cacheMode: useCdn ? 'noStale' : undefined,\n tag: requestTag,\n token: perspective === 'published' ? originalToken : serverToken || originalToken, // @TODO can pass undefined instead of config.token here?\n })\n const tags = [\n ...customCacheTags,\n ...(syncTags || []).map(\n (tag) =>\n `${perspective === 'published' ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`,\n ),\n ]\n /**\n * The tags used here, are expired later on in the `expireTags` Server Action with the `expireTag` function from `next/cache`\n */\n cacheTag(...tags)\n /**\n * Sanity Live handles on-demand revalidation, so the default 15min time based revalidation is too short,\n * userland can still set a shorter revalidate time by calling `cacheLife` themselves.\n */\n cacheLife({revalidate})\n\n return {data: result, sourceMap: resultSourceMap || null, tags}\n }\n\n const Live: React.ComponentType<DefinedLiveProps> = function Live(props) {\n const {\n includeAllDocuments = false,\n action = actionUpdateTags,\n restartAction = actionRefresh,\n reconnectAction = actionRefresh,\n goAwayAction,\n welcomeAction,\n refreshOnMount = false,\n refreshOnFocus = false,\n refreshOnReconnect = false,\n requestTag = 'next-loader.live.cache-components',\n } = props\n\n const shouldIncludeDrafts = typeof browserToken === 'string' && includeAllDocuments\n\n const {projectId, dataset, apiHost, apiVersion, useProjectHostname, requestTagPrefix} =\n client.config()\n\n // Preconnect to the Live Event API origin early, as the Sanity API is almost always on a different origin than the app\n const {origin} = new URL(client.getUrl('', false))\n preconnect(origin)\n\n return (\n <SanityLiveClientComponent\n config={{\n projectId,\n dataset,\n apiHost,\n apiVersion,\n useProjectHostname,\n requestTagPrefix,\n token: shouldIncludeDrafts ? browserToken : undefined,\n }}\n includeAllDocuments={shouldIncludeDrafts}\n action={action}\n reconnectAction={reconnectAction === false ? undefined : reconnectAction}\n restartAction={restartAction === false ? undefined : restartAction}\n welcomeAction={welcomeAction}\n goAwayAction={goAwayAction}\n requestTag={requestTag}\n refreshOnMount={refreshOnMount}\n refreshOnFocus={refreshOnFocus}\n refreshOnReconnect={refreshOnReconnect}\n />\n )\n }\n Live.displayName = 'SanityLiveServerComponent'\n\n return {\n sanityFetch: fetch,\n SanityLive: Live,\n }\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,WAAW,QAGzB;CACA,MAAM,EAAC,QAAQ,SAAS,aAAa,iBAAgB;AAErD,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oDAAoD;AAGtE,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,eAAe,gBAAgB,MAC3E,SAAQ,KACN,8LACD;AAGH,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,gBAAgB,iBAAiB,MAC7E,SAAQ,KACN,iXACD;CAGH,MAAM,SAAS,QAAQ,WAAW;EAAC,kBAAkB;EAAO,QAAQ;EAAK,CAAC;CAC1E,MAAM,EAAC,OAAO,eAAe,aAAa,sBAAsB,gBAAe,OAAO,QAAQ;CAE9F,MAAM,QAA0B,eAAe,MAAM,EACnD,OACA,SAAS,EAAE,EACX,cAAc,qBACd,QAAQ,OACR,MAAM,kBAAkB,EAAE,EAC1B,aAAa,wCACZ;EACD,MAAM,SAAS,gBAAgB;EAE/B,MAAM,EAAC,QAAQ,iBAAiB,aAAY,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;GAClF,gBAAgB;GAChB,aAAa;GACb;GACA;GACA;GACA,WAAW,SAAS,YAAY,KAAA;GAChC,KAAK;GACL,OAAO,gBAAgB,cAAc,gBAAgB,eAAe;GACrE,CAAC;EACF,MAAM,OAAO,CACX,GAAG,iBACH,IAAI,YAAY,EAAE,EAAE,KACjB,QACC,GAAG,gBAAgB,cAAc,4BAA4B,wBAAwB,MACxF,CACF;AAID,WAAS,GAAG,KAAK;AAKjB,YAAU,EAAC,YAAW,CAAC;AAEvB,SAAO;GAAC,MAAM;GAAQ,WAAW,mBAAmB;GAAM;GAAK;;CAGjE,MAAM,OAA8C,SAAS,KAAK,OAAO;EACvE,MAAM,EACJ,sBAAsB,OACtB,SAAS,kBACT,gBAAgB,eAChB,kBAAkB,eAClB,cACA,eACA,iBAAiB,OACjB,iBAAiB,OACjB,qBAAqB,OACrB,aAAa,wCACX;EAEJ,MAAM,sBAAsB,OAAO,iBAAiB,YAAY;EAEhE,MAAM,EAAC,WAAW,SAAS,SAAS,YAAY,oBAAoB,qBAClE,OAAO,QAAQ;EAGjB,MAAM,EAAC,WAAU,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC;AAClD,aAAW,OAAO;AAElB,SACE,oBAACA,YAAAA;GACC,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA,OAAO,sBAAsB,eAAe,KAAA;IAC7C;GACD,qBAAqB;GACb;GACR,iBAAiB,oBAAoB,QAAQ,KAAA,IAAY;GACzD,eAAe,kBAAkB,QAAQ,KAAA,IAAY;GACtC;GACD;GACF;GACI;GACA;GACI;IACpB;;AAGN,MAAK,cAAc;AAEnB,QAAO;EACL,aAAa;EACb,YAAY;EACb"}
@@ -1,9 +1,9 @@
1
1
  import { t as isCorsOriginError } from "../../../isCorsOriginError.js";
2
2
  import { i as PerspectiveType, n as DefinedFetchType, r as DefinedLiveProps, t as DefineLiveOptions } from "../../../types.js";
3
- import { n as resolvePerspectiveFromCookies } from "../../../resolvePerspectiveFromCookies.js";
3
+ import { r as resolvePerspectiveFromCookies, t as parseTags } from "../../../parseTags.js";
4
4
  declare function defineLive(config: DefineLiveOptions): {
5
5
  sanityFetch: DefinedFetchType;
6
6
  SanityLive: React.ComponentType<DefinedLiveProps>;
7
7
  };
8
- export { type PerspectiveType as LivePerspective, defineLive, isCorsOriginError, resolvePerspectiveFromCookies };
8
+ export { type PerspectiveType as LivePerspective, defineLive, isCorsOriginError, parseTags, resolvePerspectiveFromCookies };
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/live/conditions/react-server/defineLive.tsx"],"mappings":";;;iBAUgB,UAAA,CAAW,MAAA,EAAQ,iBAAA;EACjC,WAAA,EAAa,gBAAA;EACb,UAAA,EAAY,KAAA,CAAM,aAAA,CAAc,gBAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/live/conditions/react-server/defineLive.tsx"],"mappings":";;;iBAWgB,UAAA,CAAW,MAAA,EAAQ,iBAAA;EACjC,WAAA,EAAa,gBAAA;EACb,UAAA,EAAY,KAAA,CAAM,aAAA,CAAc,gBAAA;AAAA"}
@@ -1,4 +1,6 @@
1
1
  import { t as isCorsOriginError } from "../../../isCorsOriginError.js";
2
+ import { n as PUBLISHED_SYNC_TAG_PREFIX, t as DRAFT_SYNC_TAG_PREFIX } from "../../../constants.js";
3
+ import { t as parseTags } from "../../../parseTags.js";
2
4
  import { t as sanitizePerspective } from "../../../sanitizePerspective.js";
3
5
  import { t as resolvePerspectiveFromCookies } from "../../../resolvePerspectiveFromCookies.js";
4
6
  import { perspectiveCookieName } from "@sanity/preview-url-secret/constants";
@@ -16,11 +18,11 @@ function defineLive(config) {
16
18
  allowReconfigure: false,
17
19
  useCdn: false
18
20
  });
19
- const { token: originalToken } = client.config();
21
+ const { token: originalToken, perspective: originalPerspective = "published" } = client.config();
20
22
  const studioUrlDefined = typeof client.config().stega.studioUrl !== "undefined";
21
23
  const sanityFetch = async function sanityFetch({ query, params = {}, stega: _stega, tags = ["sanity"], perspective: _perspective, tag, requestTag = tag ?? "next-loader.fetch" }) {
22
24
  const stega = _stega ?? (stegaEnabled && studioUrlDefined && (await draftMode()).isEnabled);
23
- const perspective = _perspective ?? await resolveCookiePerspective();
25
+ const perspective = _perspective ?? await resolveCookiePerspective(originalPerspective === "raw" ? "published" : originalPerspective);
24
26
  const useCdn = perspective === "published";
25
27
  const revalidate = false;
26
28
  const { syncTags } = await client.fetch(query, await params, {
@@ -36,7 +38,7 @@ function defineLive(config) {
36
38
  cacheMode: useCdn ? "noStale" : void 0,
37
39
  tag: [requestTag, "fetch-sync-tags"].filter(Boolean).join(".")
38
40
  });
39
- const cacheTags = [...tags, ...syncTags?.map((tag) => `sanity:${tag}`) || []];
41
+ const cacheTags = [...tags, ...syncTags?.map((tag) => `${perspective === "published" ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`) || []];
40
42
  const { result, resultSourceMap } = await client.fetch(query, await params, {
41
43
  filterResponse: false,
42
44
  perspective,
@@ -90,9 +92,9 @@ function defineLive(config) {
90
92
  SanityLive: SanityLive$2
91
93
  };
92
94
  }
93
- async function resolveCookiePerspective() {
94
- return (await draftMode()).isEnabled ? (await cookies()).has(perspectiveCookieName) ? sanitizePerspective((await cookies()).get(perspectiveCookieName)?.value, "drafts") : "drafts" : "published";
95
+ async function resolveCookiePerspective(fallback) {
96
+ return (await draftMode()).isEnabled ? (await cookies()).has(perspectiveCookieName) ? sanitizePerspective((await cookies()).get(perspectiveCookieName)?.value, "drafts") : "drafts" : fallback;
95
97
  }
96
- export { defineLive, isCorsOriginError, resolvePerspectiveFromCookies };
98
+ export { defineLive, isCorsOriginError, parseTags, resolvePerspectiveFromCookies };
97
99
 
98
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SanityLive","SanityLiveClientComponent"],"sources":["../../../../src/live/conditions/react-server/defineLive.tsx"],"sourcesContent":["import type {DefinedFetchType, DefinedLiveProps, DefineLiveOptions} from '#live/types'\n\nimport {sanitizePerspective} from '#live/sanitizePerspective'\nimport {type ClientPerspective, type QueryParams} from '@sanity/client'\nimport {perspectiveCookieName} from '@sanity/preview-url-secret/constants'\nimport {SanityLive as SanityLiveClientComponent} from 'next-sanity/live/client-components'\nimport {actionRefresh, actionUpdateTags} from 'next-sanity/live/server-actions'\nimport {cookies, draftMode} from 'next/headers'\nimport {preconnect} from 'react-dom'\n\nexport function defineLive(config: DefineLiveOptions): {\n sanityFetch: DefinedFetchType\n SanityLive: React.ComponentType<DefinedLiveProps>\n} {\n const {client: _client, serverToken, browserToken, stega: stegaEnabled = true} = config\n\n if (!_client) {\n throw new Error('`client` is required for `defineLive` to function')\n }\n\n if (process.env.NODE_ENV !== 'production' && !serverToken && serverToken !== false) {\n console.warn(\n 'No `serverToken` provided to `defineLive`. This means that only published content will be fetched and respond to live events. You can silence this warning by setting `serverToken: false`.',\n )\n }\n\n if (process.env.NODE_ENV !== 'production' && !browserToken && browserToken !== false) {\n console.warn(\n 'No `browserToken` provided to `defineLive`. This means that live previewing drafts will only work when using the Presentation Tool in your Sanity Studio. To support live previewing drafts stand-alone, provide a `browserToken`. It is shared with the browser so it should only have Viewer rights or lower. You can silence this warning by setting `browserToken: false`.',\n )\n }\n\n const client = _client.withConfig({allowReconfigure: false, useCdn: false})\n const {token: originalToken} = client.config()\n const studioUrlDefined = typeof client.config().stega.studioUrl !== 'undefined'\n\n const sanityFetch: DefinedFetchType = async function sanityFetch<\n const QueryString extends string,\n >({\n query,\n params = {},\n stega: _stega,\n tags = ['sanity'],\n perspective: _perspective,\n tag,\n requestTag = tag ?? 'next-loader.fetch',\n }: {\n query: QueryString\n params?: QueryParams | Promise<QueryParams>\n stega?: boolean\n tags?: string[]\n perspective?: Exclude<ClientPerspective, 'raw'>\n tag?: string\n requestTag?: string\n }) {\n const stega = _stega ?? (stegaEnabled && studioUrlDefined && (await draftMode()).isEnabled)\n const perspective = _perspective ?? (await resolveCookiePerspective())\n const useCdn = perspective === 'published'\n const revalidate = false\n\n // fetch the tags first, with revalidate to 1s to ensure we get the latest tags, eventually\n const {syncTags} = await client.fetch(query, await params, {\n filterResponse: false,\n perspective: perspective as ClientPerspective,\n stega: false,\n returnQuery: false,\n next: {revalidate, tags: [...tags, 'sanity:fetch-sync-tags']},\n useCdn,\n cacheMode: useCdn ? 'noStale' : undefined,\n tag: [requestTag, 'fetch-sync-tags'].filter(Boolean).join('.'),\n })\n\n const cacheTags = [...tags, ...(syncTags?.map((tag) => `sanity:${tag}`) || [])]\n\n const {result, resultSourceMap} = await client.fetch(query, await params, {\n filterResponse: false,\n perspective: perspective as ClientPerspective,\n stega,\n token: perspective !== 'published' && serverToken ? serverToken : originalToken,\n next: {revalidate, tags: cacheTags},\n useCdn,\n cacheMode: useCdn ? 'noStale' : undefined,\n tag: requestTag,\n })\n return {data: result, sourceMap: resultSourceMap || null, tags: cacheTags}\n }\n\n const SanityLive: React.ComponentType<DefinedLiveProps> = async function SanityLive(props) {\n const {\n includeAllDocuments = (await draftMode()).isEnabled,\n action = actionUpdateTags,\n restartAction = actionRefresh,\n reconnectAction = actionRefresh,\n goAwayAction,\n welcomeAction,\n refreshOnMount,\n refreshOnFocus,\n refreshOnReconnect,\n requestTag = 'next-loader.live',\n } = props\n const {projectId, dataset, apiHost, apiVersion, useProjectHostname, requestTagPrefix} =\n client.config()\n const shouldIncludeAllDocuments = typeof browserToken === 'string' && includeAllDocuments\n\n // Preconnect to the Live Event API origin early, as the Sanity API is almost always on a different origin than the app\n const {origin} = new URL(client.getUrl('', false))\n preconnect(origin)\n\n return (\n <SanityLiveClientComponent\n config={{\n projectId,\n dataset,\n apiHost,\n apiVersion,\n useProjectHostname,\n requestTagPrefix,\n token: shouldIncludeAllDocuments ? browserToken : undefined,\n }}\n includeAllDocuments={shouldIncludeAllDocuments}\n action={action}\n reconnectAction={reconnectAction === false ? undefined : reconnectAction}\n restartAction={restartAction === false ? undefined : restartAction}\n welcomeAction={welcomeAction}\n goAwayAction={goAwayAction}\n requestTag={requestTag}\n refreshOnMount={refreshOnMount}\n refreshOnFocus={refreshOnFocus}\n refreshOnReconnect={refreshOnReconnect}\n />\n )\n }\n SanityLive.displayName = 'SanityLiveServerComponent'\n\n return {\n sanityFetch,\n SanityLive,\n }\n}\n\nasync function resolveCookiePerspective(): Promise<Exclude<ClientPerspective, 'raw'>> {\n return (await draftMode()).isEnabled\n ? (await cookies()).has(perspectiveCookieName)\n ? sanitizePerspective((await cookies()).get(perspectiveCookieName)?.value, 'drafts')\n : 'drafts'\n : 'published'\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,WAAW,QAGzB;CACA,MAAM,EAAC,QAAQ,SAAS,aAAa,cAAc,OAAO,eAAe,SAAQ;AAEjF,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oDAAoD;AAGtE,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,eAAe,gBAAgB,MAC3E,SAAQ,KACN,8LACD;AAGH,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,gBAAgB,iBAAiB,MAC7E,SAAQ,KACN,iXACD;CAGH,MAAM,SAAS,QAAQ,WAAW;EAAC,kBAAkB;EAAO,QAAQ;EAAM,CAAC;CAC3E,MAAM,EAAC,OAAO,kBAAiB,OAAO,QAAQ;CAC9C,MAAM,mBAAmB,OAAO,OAAO,QAAQ,CAAC,MAAM,cAAc;CAEpE,MAAM,cAAgC,eAAe,YAEnD,EACA,OACA,SAAS,EAAE,EACX,OAAO,QACP,OAAO,CAAC,SAAS,EACjB,aAAa,cACb,KACA,aAAa,OAAO,uBASnB;EACD,MAAM,QAAQ,WAAW,gBAAgB,qBAAqB,MAAM,WAAW,EAAE;EACjF,MAAM,cAAc,gBAAiB,MAAM,0BAA0B;EACrE,MAAM,SAAS,gBAAgB;EAC/B,MAAM,aAAa;EAGnB,MAAM,EAAC,aAAY,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;GACzD,gBAAgB;GACH;GACb,OAAO;GACP,aAAa;GACb,MAAM;IAAC;IAAY,MAAM,CAAC,GAAG,MAAM,yBAAyB;IAAC;GAC7D;GACA,WAAW,SAAS,YAAY,KAAA;GAChC,KAAK,CAAC,YAAY,kBAAkB,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;GAC/D,CAAC;EAEF,MAAM,YAAY,CAAC,GAAG,MAAM,GAAI,UAAU,KAAK,QAAQ,UAAU,MAAM,IAAI,EAAE,CAAE;EAE/E,MAAM,EAAC,QAAQ,oBAAmB,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;GACxE,gBAAgB;GACH;GACb;GACA,OAAO,gBAAgB,eAAe,cAAc,cAAc;GAClE,MAAM;IAAC;IAAY,MAAM;IAAU;GACnC;GACA,WAAW,SAAS,YAAY,KAAA;GAChC,KAAK;GACN,CAAC;AACF,SAAO;GAAC,MAAM;GAAQ,WAAW,mBAAmB;GAAM,MAAM;GAAU;;CAG5E,MAAMA,eAAoD,eAAeA,aAAW,OAAO;EACzF,MAAM,EACJ,uBAAuB,MAAM,WAAW,EAAE,WAC1C,SAAS,kBACT,gBAAgB,eAChB,kBAAkB,eAClB,cACA,eACA,gBACA,gBACA,oBACA,aAAa,uBACX;EACJ,MAAM,EAAC,WAAW,SAAS,SAAS,YAAY,oBAAoB,qBAClE,OAAO,QAAQ;EACjB,MAAM,4BAA4B,OAAO,iBAAiB,YAAY;EAGtE,MAAM,EAAC,WAAU,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC;AAClD,aAAW,OAAO;AAElB,SACE,oBAACC,YAAAA;GACC,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA,OAAO,4BAA4B,eAAe,KAAA;IACnD;GACD,qBAAqB;GACb;GACR,iBAAiB,oBAAoB,QAAQ,KAAA,IAAY;GACzD,eAAe,kBAAkB,QAAQ,KAAA,IAAY;GACtC;GACD;GACF;GACI;GACA;GACI;IACpB;;AAGN,cAAW,cAAc;AAEzB,QAAO;EACL;EACA,YAAA;EACD;;AAGH,eAAe,2BAAuE;AACpF,SAAQ,MAAM,WAAW,EAAE,aACtB,MAAM,SAAS,EAAE,IAAI,sBAAsB,GAC1C,qBAAqB,MAAM,SAAS,EAAE,IAAI,sBAAsB,EAAE,OAAO,SAAS,GAClF,WACF"}
1
+ {"version":3,"file":"index.js","names":["SanityLive","SanityLiveClientComponent"],"sources":["../../../../src/live/conditions/react-server/defineLive.tsx"],"sourcesContent":["import type {DefinedFetchType, DefinedLiveProps, DefineLiveOptions} from '#live/types'\n\nimport {DRAFT_SYNC_TAG_PREFIX, PUBLISHED_SYNC_TAG_PREFIX} from '#live/constants'\nimport {sanitizePerspective} from '#live/sanitizePerspective'\nimport {type ClientPerspective, type QueryParams} from '@sanity/client'\nimport {perspectiveCookieName} from '@sanity/preview-url-secret/constants'\nimport {SanityLive as SanityLiveClientComponent} from 'next-sanity/live/client-components'\nimport {actionRefresh, actionUpdateTags} from 'next-sanity/live/server-actions'\nimport {cookies, draftMode} from 'next/headers'\nimport {preconnect} from 'react-dom'\n\nexport function defineLive(config: DefineLiveOptions): {\n sanityFetch: DefinedFetchType\n SanityLive: React.ComponentType<DefinedLiveProps>\n} {\n const {client: _client, serverToken, browserToken, stega: stegaEnabled = true} = config\n\n if (!_client) {\n throw new Error('`client` is required for `defineLive` to function')\n }\n\n if (process.env.NODE_ENV !== 'production' && !serverToken && serverToken !== false) {\n console.warn(\n 'No `serverToken` provided to `defineLive`. This means that only published content will be fetched and respond to live events. You can silence this warning by setting `serverToken: false`.',\n )\n }\n\n if (process.env.NODE_ENV !== 'production' && !browserToken && browserToken !== false) {\n console.warn(\n 'No `browserToken` provided to `defineLive`. This means that live previewing drafts will only work when using the Presentation Tool in your Sanity Studio. To support live previewing drafts stand-alone, provide a `browserToken`. It is shared with the browser so it should only have Viewer rights or lower. You can silence this warning by setting `browserToken: false`.',\n )\n }\n\n const client = _client.withConfig({allowReconfigure: false, useCdn: false})\n const {token: originalToken, perspective: originalPerspective = 'published'} = client.config()\n const studioUrlDefined = typeof client.config().stega.studioUrl !== 'undefined'\n\n const sanityFetch: DefinedFetchType = async function sanityFetch<\n const QueryString extends string,\n >({\n query,\n params = {},\n stega: _stega,\n tags = ['sanity'],\n perspective: _perspective,\n tag,\n requestTag = tag ?? 'next-loader.fetch',\n }: {\n query: QueryString\n params?: QueryParams | Promise<QueryParams>\n stega?: boolean\n tags?: string[]\n perspective?: Exclude<ClientPerspective, 'raw'>\n tag?: string\n requestTag?: string\n }) {\n const stega = _stega ?? (stegaEnabled && studioUrlDefined && (await draftMode()).isEnabled)\n const perspective =\n _perspective ??\n (await resolveCookiePerspective(\n originalPerspective === 'raw' ? 'published' : originalPerspective,\n ))\n const useCdn = perspective === 'published'\n const revalidate = false\n\n // fetch the tags first, with revalidate to 1s to ensure we get the latest tags, eventually\n const {syncTags} = await client.fetch(query, await params, {\n filterResponse: false,\n perspective: perspective as ClientPerspective,\n stega: false,\n returnQuery: false,\n next: {revalidate, tags: [...tags, 'sanity:fetch-sync-tags']},\n useCdn,\n cacheMode: useCdn ? 'noStale' : undefined,\n tag: [requestTag, 'fetch-sync-tags'].filter(Boolean).join('.'),\n })\n\n const cacheTags = [\n ...tags,\n ...(syncTags?.map(\n (tag) =>\n `${perspective === 'published' ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`,\n ) || []),\n ]\n\n const {result, resultSourceMap} = await client.fetch(query, await params, {\n filterResponse: false,\n perspective: perspective as ClientPerspective,\n stega,\n token: perspective !== 'published' && serverToken ? serverToken : originalToken,\n next: {revalidate, tags: cacheTags},\n useCdn,\n cacheMode: useCdn ? 'noStale' : undefined,\n tag: requestTag,\n })\n return {data: result, sourceMap: resultSourceMap || null, tags: cacheTags}\n }\n\n const SanityLive: React.ComponentType<DefinedLiveProps> = async function SanityLive(props) {\n const {\n includeAllDocuments = (await draftMode()).isEnabled,\n action = actionUpdateTags,\n restartAction = actionRefresh,\n reconnectAction = actionRefresh,\n goAwayAction,\n welcomeAction,\n refreshOnMount,\n refreshOnFocus,\n refreshOnReconnect,\n requestTag = 'next-loader.live',\n } = props\n const {projectId, dataset, apiHost, apiVersion, useProjectHostname, requestTagPrefix} =\n client.config()\n const shouldIncludeAllDocuments = typeof browserToken === 'string' && includeAllDocuments\n\n // Preconnect to the Live Event API origin early, as the Sanity API is almost always on a different origin than the app\n const {origin} = new URL(client.getUrl('', false))\n preconnect(origin)\n\n return (\n <SanityLiveClientComponent\n config={{\n projectId,\n dataset,\n apiHost,\n apiVersion,\n useProjectHostname,\n requestTagPrefix,\n token: shouldIncludeAllDocuments ? browserToken : undefined,\n }}\n includeAllDocuments={shouldIncludeAllDocuments}\n action={action}\n reconnectAction={reconnectAction === false ? undefined : reconnectAction}\n restartAction={restartAction === false ? undefined : restartAction}\n welcomeAction={welcomeAction}\n goAwayAction={goAwayAction}\n requestTag={requestTag}\n refreshOnMount={refreshOnMount}\n refreshOnFocus={refreshOnFocus}\n refreshOnReconnect={refreshOnReconnect}\n />\n )\n }\n SanityLive.displayName = 'SanityLiveServerComponent'\n\n return {\n sanityFetch,\n SanityLive,\n }\n}\n\nasync function resolveCookiePerspective(\n fallback: Exclude<ClientPerspective, 'raw'>,\n): Promise<Exclude<ClientPerspective, 'raw'>> {\n return (await draftMode()).isEnabled\n ? (await cookies()).has(perspectiveCookieName)\n ? sanitizePerspective((await cookies()).get(perspectiveCookieName)?.value, 'drafts')\n : 'drafts'\n : fallback\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAgB,WAAW,QAGzB;CACA,MAAM,EAAC,QAAQ,SAAS,aAAa,cAAc,OAAO,eAAe,SAAQ;AAEjF,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,oDAAoD;AAGtE,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,eAAe,gBAAgB,MAC3E,SAAQ,KACN,8LACD;AAGH,KAAI,QAAQ,IAAI,aAAa,gBAAgB,CAAC,gBAAgB,iBAAiB,MAC7E,SAAQ,KACN,iXACD;CAGH,MAAM,SAAS,QAAQ,WAAW;EAAC,kBAAkB;EAAO,QAAQ;EAAM,CAAC;CAC3E,MAAM,EAAC,OAAO,eAAe,aAAa,sBAAsB,gBAAe,OAAO,QAAQ;CAC9F,MAAM,mBAAmB,OAAO,OAAO,QAAQ,CAAC,MAAM,cAAc;CAEpE,MAAM,cAAgC,eAAe,YAEnD,EACA,OACA,SAAS,EAAE,EACX,OAAO,QACP,OAAO,CAAC,SAAS,EACjB,aAAa,cACb,KACA,aAAa,OAAO,uBASnB;EACD,MAAM,QAAQ,WAAW,gBAAgB,qBAAqB,MAAM,WAAW,EAAE;EACjF,MAAM,cACJ,gBACC,MAAM,yBACL,wBAAwB,QAAQ,cAAc,oBAC/C;EACH,MAAM,SAAS,gBAAgB;EAC/B,MAAM,aAAa;EAGnB,MAAM,EAAC,aAAY,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;GACzD,gBAAgB;GACH;GACb,OAAO;GACP,aAAa;GACb,MAAM;IAAC;IAAY,MAAM,CAAC,GAAG,MAAM,yBAAyB;IAAC;GAC7D;GACA,WAAW,SAAS,YAAY,KAAA;GAChC,KAAK,CAAC,YAAY,kBAAkB,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;GAC/D,CAAC;EAEF,MAAM,YAAY,CAChB,GAAG,MACH,GAAI,UAAU,KACX,QACC,GAAG,gBAAgB,cAAc,4BAA4B,wBAAwB,MACxF,IAAI,EAAE,CACR;EAED,MAAM,EAAC,QAAQ,oBAAmB,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;GACxE,gBAAgB;GACH;GACb;GACA,OAAO,gBAAgB,eAAe,cAAc,cAAc;GAClE,MAAM;IAAC;IAAY,MAAM;IAAU;GACnC;GACA,WAAW,SAAS,YAAY,KAAA;GAChC,KAAK;GACN,CAAC;AACF,SAAO;GAAC,MAAM;GAAQ,WAAW,mBAAmB;GAAM,MAAM;GAAU;;CAG5E,MAAMA,eAAoD,eAAeA,aAAW,OAAO;EACzF,MAAM,EACJ,uBAAuB,MAAM,WAAW,EAAE,WAC1C,SAAS,kBACT,gBAAgB,eAChB,kBAAkB,eAClB,cACA,eACA,gBACA,gBACA,oBACA,aAAa,uBACX;EACJ,MAAM,EAAC,WAAW,SAAS,SAAS,YAAY,oBAAoB,qBAClE,OAAO,QAAQ;EACjB,MAAM,4BAA4B,OAAO,iBAAiB,YAAY;EAGtE,MAAM,EAAC,WAAU,IAAI,IAAI,OAAO,OAAO,IAAI,MAAM,CAAC;AAClD,aAAW,OAAO;AAElB,SACE,oBAACC,YAAAA;GACC,QAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA,OAAO,4BAA4B,eAAe,KAAA;IACnD;GACD,qBAAqB;GACb;GACR,iBAAiB,oBAAoB,QAAQ,KAAA,IAAY;GACzD,eAAe,kBAAkB,QAAQ,KAAA,IAAY;GACtC;GACD;GACF;GACI;GACA;GACI;IACpB;;AAGN,cAAW,cAAc;AAEzB,QAAO;EACL;EACA,YAAA;EACD;;AAGH,eAAe,yBACb,UAC4C;AAC5C,SAAQ,MAAM,WAAW,EAAE,aACtB,MAAM,SAAS,EAAE,IAAI,sBAAsB,GAC1C,qBAAqB,MAAM,SAAS,EAAE,IAAI,sBAAsB,EAAE,OAAO,SAAS,GAClF,WACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.default.d.ts","names":[],"sources":["../../../src/live/server-actions/index.default.ts"],"mappings":";;;AAYA;;iBAAsB,gBAAA,CACpB,KAAA,EAAO,OAAA,CAAQ,SAAA;EAAY,IAAA;AAAA,IAC3B,OAAA,EAAS,uBAAA,GACR,OAAA;;;;iBAsCmB,aAAA,CAAA,GAAiB,OAAA"}
1
+ {"version":3,"file":"index.default.d.ts","names":[],"sources":["../../../src/live/server-actions/index.default.ts"],"mappings":";;;AAYA;;iBAAsB,gBAAA,CACpB,KAAA,EAAO,OAAA,CAAQ,SAAA;EAAY,IAAA;AAAA,IAC3B,OAAA,EAAS,uBAAA,GACR,OAAA;;;;iBAuCmB,aAAA,CAAA,GAAiB,OAAA"}
@@ -1,5 +1,5 @@
1
1
  "use server";
2
- import { n as PUBLISHED_SYNC_TAG_PREFIX, t as DRAFT_SYNC_TAG_PREFIX } from "../../constants.js";
2
+ import { t as parseTags } from "../../parseTags.js";
3
3
  import { draftMode } from "next/headers";
4
4
  import { refresh, revalidateTag, updateTag } from "next/cache";
5
5
  async function actionUpdateTags(event, context) {
@@ -15,13 +15,13 @@ async function actionUpdateTags(event, context) {
15
15
  });
16
16
  return;
17
17
  }
18
- const tags = event.tags.map((tag) => `${DRAFT_SYNC_TAG_PREFIX}${tag}`);
18
+ const tags = parseTags(event.tags, context);
19
19
  for (const tag of tags) updateTag(tag);
20
20
  console.log(`<SanityLive includeAllDocuments /> updated tags: ${tags.join(", ")}`);
21
21
  } else {
22
22
  revalidateTag("sanity:fetch-sync-tags", "max");
23
23
  console.log(`<SanityLive /> revalidated tag: "sanity:fetch-sync-tags" with cache profile "max"`);
24
- const tags = event.tags.map((tag) => `${PUBLISHED_SYNC_TAG_PREFIX}${tag}`);
24
+ const tags = parseTags(event.tags, context);
25
25
  for (const tag of tags) updateTag(tag);
26
26
  console.log(`<SanityLive /> updated tags: ${tags.join(", ")}`);
27
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.default.js","names":[],"sources":["../../../src/live/server-actions/index.default.ts"],"sourcesContent":["'use server'\n\nimport type {SanityLiveActionContext} from '#live/types'\nimport type {LiveEvent} from '@sanity/client'\n\nimport {DRAFT_SYNC_TAG_PREFIX, PUBLISHED_SYNC_TAG_PREFIX} from '#live/constants'\nimport {refresh, revalidateTag, updateTag} from 'next/cache'\nimport {draftMode} from 'next/headers'\n\n/**\n * Used by `<SanityLive action={actionRevalidateTags} />`\n */\nexport async function actionUpdateTags(\n event: Extract<LiveEvent, {type: 'message'}>,\n context: SanityLiveActionContext,\n): Promise<void> {\n if (!Array.isArray(event.tags)) {\n console.warn(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> action called with non-array tags`,\n event,\n )\n return undefined\n }\n if (context.includeAllDocuments) {\n if (!(await draftMode()).isEnabled) {\n console.warn('<SanityLive includeAllDocuments /> action called in non-draft mode, ignoring', {\n event,\n context,\n })\n return undefined\n }\n const tags = event.tags.map((tag) => `${DRAFT_SYNC_TAG_PREFIX}${tag}`)\n for (const tag of tags) {\n updateTag(tag)\n }\n // oxlint-disable-next-line no-console\n console.log(`<SanityLive includeAllDocuments /> updated tags: ${tags.join(', ')}`)\n } else {\n revalidateTag('sanity:fetch-sync-tags', 'max')\n // oxlint-disable-next-line no-console\n console.log(`<SanityLive /> revalidated tag: \"sanity:fetch-sync-tags\" with cache profile \"max\"`)\n const tags = event.tags.map((tag) => `${PUBLISHED_SYNC_TAG_PREFIX}${tag}`)\n for (const tag of tags) {\n updateTag(tag)\n }\n // oxlint-disable-next-line no-console\n console.log(`<SanityLive /> updated tags: ${tags.join(', ')}`)\n }\n}\n\n/**\n * Used by `<SanityLive reconnectAction={actionRefresh} restartAction={actionRefresh} />`\n */\nexport async function actionRefresh(): Promise<void> {\n refresh()\n}\n"],"mappings":";;;;AAYA,eAAsB,iBACpB,OACA,SACe;AACf,KAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,EAAE;AAC9B,UAAQ,KACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,uCACzE,MACD;AACD;;AAEF,KAAI,QAAQ,qBAAqB;AAC/B,MAAI,EAAE,MAAM,WAAW,EAAE,WAAW;AAClC,WAAQ,KAAK,gFAAgF;IAC3F;IACA;IACD,CAAC;AACF;;EAEF,MAAM,OAAO,MAAM,KAAK,KAAK,QAAQ,GAAG,wBAAwB,MAAM;AACtE,OAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,UAAQ,IAAI,oDAAoD,KAAK,KAAK,KAAK,GAAG;QAC7E;AACL,gBAAc,0BAA0B,MAAM;AAE9C,UAAQ,IAAI,oFAAoF;EAChG,MAAM,OAAO,MAAM,KAAK,KAAK,QAAQ,GAAG,4BAA4B,MAAM;AAC1E,OAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,UAAQ,IAAI,gCAAgC,KAAK,KAAK,KAAK,GAAG;;;AAOlE,eAAsB,gBAA+B;AACnD,UAAS"}
1
+ {"version":3,"file":"index.default.js","names":[],"sources":["../../../src/live/server-actions/index.default.ts"],"sourcesContent":["'use server'\n\nimport type {SanityLiveActionContext} from '#live/types'\nimport type {LiveEvent} from '@sanity/client'\n\nimport {parseTags} from '#live/parseTags'\nimport {refresh, revalidateTag, updateTag} from 'next/cache'\nimport {draftMode} from 'next/headers'\n\n/**\n * Used by `<SanityLive action={actionRevalidateTags} />`\n */\nexport async function actionUpdateTags(\n event: Extract<LiveEvent, {type: 'message'}>,\n context: SanityLiveActionContext,\n): Promise<void> {\n if (!Array.isArray(event.tags)) {\n console.warn(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> action called with non-array tags`,\n event,\n )\n return undefined\n }\n\n if (context.includeAllDocuments) {\n if (!(await draftMode()).isEnabled) {\n console.warn('<SanityLive includeAllDocuments /> action called in non-draft mode, ignoring', {\n event,\n context,\n })\n return undefined\n }\n const tags = parseTags(event.tags, context)\n for (const tag of tags) {\n updateTag(tag)\n }\n // oxlint-disable-next-line no-console\n console.log(`<SanityLive includeAllDocuments /> updated tags: ${tags.join(', ')}`)\n } else {\n revalidateTag('sanity:fetch-sync-tags', 'max')\n // oxlint-disable-next-line no-console\n console.log(`<SanityLive /> revalidated tag: \"sanity:fetch-sync-tags\" with cache profile \"max\"`)\n const tags = parseTags(event.tags, context)\n for (const tag of tags) {\n updateTag(tag)\n }\n // oxlint-disable-next-line no-console\n console.log(`<SanityLive /> updated tags: ${tags.join(', ')}`)\n }\n}\n\n/**\n * Used by `<SanityLive reconnectAction={actionRefresh} restartAction={actionRefresh} />`\n */\nexport async function actionRefresh(): Promise<void> {\n refresh()\n}\n"],"mappings":";;;;AAYA,eAAsB,iBACpB,OACA,SACe;AACf,KAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,EAAE;AAC9B,UAAQ,KACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,uCACzE,MACD;AACD;;AAGF,KAAI,QAAQ,qBAAqB;AAC/B,MAAI,EAAE,MAAM,WAAW,EAAE,WAAW;AAClC,WAAQ,KAAK,gFAAgF;IAC3F;IACA;IACD,CAAC;AACF;;EAEF,MAAM,OAAO,UAAU,MAAM,MAAM,QAAQ;AAC3C,OAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,UAAQ,IAAI,oDAAoD,KAAK,KAAK,KAAK,GAAG;QAC7E;AACL,gBAAc,0BAA0B,MAAM;AAE9C,UAAQ,IAAI,oFAAoF;EAChG,MAAM,OAAO,UAAU,MAAM,MAAM,QAAQ;AAC3C,OAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,UAAQ,IAAI,gCAAgC,KAAK,KAAK,KAAK,GAAG;;;AAOlE,eAAsB,gBAA+B;AACnD,UAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.next-js.d.ts","names":[],"sources":["../../../src/live/server-actions/index.next-js.ts"],"mappings":";;;AAYA;;iBAAsB,gBAAA,CACpB,KAAA,EAAO,OAAA,CAAQ,SAAA;EAAY,IAAA;AAAA,IAC3B,OAAA,EAAS,uBAAA,GACR,OAAA;;;;iBAiCmB,aAAA,CAAA,GAAiB,OAAA"}
1
+ {"version":3,"file":"index.next-js.d.ts","names":[],"sources":["../../../src/live/server-actions/index.next-js.ts"],"mappings":";;;AAYA;;iBAAsB,gBAAA,CACpB,KAAA,EAAO,OAAA,CAAQ,SAAA;EAAY,IAAA;AAAA,IAC3B,OAAA,EAAS,uBAAA,GACR,OAAA;;;;iBA8BmB,aAAA,CAAA,GAAiB,OAAA"}
@@ -1,5 +1,5 @@
1
1
  "use server";
2
- import { n as PUBLISHED_SYNC_TAG_PREFIX, t as DRAFT_SYNC_TAG_PREFIX } from "../../constants.js";
2
+ import { t as parseTags } from "../../parseTags.js";
3
3
  import { draftMode } from "next/headers";
4
4
  import { refresh, updateTag } from "next/cache";
5
5
  async function actionUpdateTags(event, context) {
@@ -15,7 +15,7 @@ async function actionUpdateTags(event, context) {
15
15
  refresh();
16
16
  return;
17
17
  }
18
- const tags = event.tags.map((tag) => `${context.includeAllDocuments ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`);
18
+ const tags = parseTags(event.tags, context);
19
19
  for (const tag of tags) updateTag(tag);
20
20
  console.log(`<SanityLive ${context.includeAllDocuments ? "includeAllDocuments " : ""}/> updated tags: ${tags.join(", ")}`);
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.next-js.js","names":[],"sources":["../../../src/live/server-actions/index.next-js.ts"],"sourcesContent":["'use server'\n\nimport type {SanityLiveActionContext} from '#live/types'\nimport type {LiveEvent} from '@sanity/client'\n\nimport {DRAFT_SYNC_TAG_PREFIX, PUBLISHED_SYNC_TAG_PREFIX} from '#live/constants'\nimport {refresh, updateTag} from 'next/cache'\nimport {draftMode} from 'next/headers'\n\n/**\n * Used by `<SanityLive action={actionRevalidateTags} />`\n */\nexport async function actionUpdateTags(\n event: Extract<LiveEvent, {type: 'message'}>,\n context: SanityLiveActionContext,\n): Promise<void> {\n if (!Array.isArray(event.tags)) {\n console.warn(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> action called with non-array tags`,\n event,\n )\n return undefined\n }\n if ((await draftMode()).isEnabled) {\n console.warn(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> action called in draft mode, cache is bypassed in draft mode so the refresh() function is called instead of updateTag()`,\n {event, context},\n )\n refresh()\n return undefined\n }\n\n const tags = event.tags.map(\n (tag) =>\n `${context.includeAllDocuments ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`,\n )\n for (const tag of tags) {\n updateTag(tag)\n }\n // oxlint-disable-next-line no-console\n console.log(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> updated tags: ${tags.join(', ')}`,\n )\n}\n\n/**\n * Used by `<SanityLive reconnectAction={actionRefresh} restartAction={actionRefresh} />`\n */\nexport async function actionRefresh(): Promise<void> {\n refresh()\n}\n"],"mappings":";;;;AAYA,eAAsB,iBACpB,OACA,SACe;AACf,KAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,EAAE;AAC9B,UAAQ,KACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,uCACzE,MACD;AACD;;AAEF,MAAK,MAAM,WAAW,EAAE,WAAW;AACjC,UAAQ,KACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,6HACzE;GAAC;GAAO;GAAQ,CACjB;AACD,WAAS;AACT;;CAGF,MAAM,OAAO,MAAM,KAAK,KACrB,QACC,GAAG,QAAQ,sBAAsB,4BAA4B,wBAAwB,MACxF;AACD,MAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,SAAQ,IACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,mBAAmB,KAAK,KAAK,KAAK,GAC5G;;AAMH,eAAsB,gBAA+B;AACnD,UAAS"}
1
+ {"version":3,"file":"index.next-js.js","names":[],"sources":["../../../src/live/server-actions/index.next-js.ts"],"sourcesContent":["'use server'\n\nimport type {SanityLiveActionContext} from '#live/types'\nimport type {LiveEvent} from '@sanity/client'\n\nimport {parseTags} from '#live/parseTags'\nimport {refresh, updateTag} from 'next/cache'\nimport {draftMode} from 'next/headers'\n\n/**\n * Used by `<SanityLive action={actionRevalidateTags} />`\n */\nexport async function actionUpdateTags(\n event: Extract<LiveEvent, {type: 'message'}>,\n context: SanityLiveActionContext,\n): Promise<void> {\n if (!Array.isArray(event.tags)) {\n console.warn(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> action called with non-array tags`,\n event,\n )\n return undefined\n }\n if ((await draftMode()).isEnabled) {\n console.warn(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> action called in draft mode, cache is bypassed in draft mode so the refresh() function is called instead of updateTag()`,\n {event, context},\n )\n refresh()\n return undefined\n }\n\n const tags = parseTags(event.tags, context)\n for (const tag of tags) {\n updateTag(tag)\n }\n // oxlint-disable-next-line no-console\n console.log(\n `<SanityLive ${context.includeAllDocuments ? 'includeAllDocuments ' : ''}/> updated tags: ${tags.join(', ')}`,\n )\n}\n\n/**\n * Used by `<SanityLive reconnectAction={actionRefresh} restartAction={actionRefresh} />`\n */\nexport async function actionRefresh(): Promise<void> {\n refresh()\n}\n"],"mappings":";;;;AAYA,eAAsB,iBACpB,OACA,SACe;AACf,KAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,EAAE;AAC9B,UAAQ,KACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,uCACzE,MACD;AACD;;AAEF,MAAK,MAAM,WAAW,EAAE,WAAW;AACjC,UAAQ,KACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,6HACzE;GAAC;GAAO;GAAQ,CACjB;AACD,WAAS;AACT;;CAGF,MAAM,OAAO,UAAU,MAAM,MAAM,QAAQ;AAC3C,MAAK,MAAM,OAAO,KAChB,WAAU,IAAI;AAGhB,SAAQ,IACN,eAAe,QAAQ,sBAAsB,yBAAyB,GAAG,mBAAmB,KAAK,KAAK,KAAK,GAC5G;;AAMH,eAAsB,gBAA+B;AACnD,UAAS"}
@@ -0,0 +1,53 @@
1
+ import { a as SanityLiveActionContext } from "./types.js";
2
+ import { cookies } from "next/headers";
3
+ import { ClientPerspective, LiveEvent, SyncTag } from "@sanity/client";
4
+ type ResolvePerspectiveFromCookies = (options: {
5
+ /**
6
+ * You must await the cookies() function from next/headers
7
+ * and pass it here.
8
+ * Example:
9
+ * ```ts
10
+ * import { cookies } from 'next/headers'
11
+ *
12
+ * const perspective = await resolvePerspectiveFromCookies({cookies: await cookies()})
13
+ * ```
14
+ */
15
+ cookies: Awaited<ReturnType<typeof cookies>>;
16
+ }) => Promise<Exclude<ClientPerspective, "raw">>;
17
+ /**
18
+ * Resolves the perspective from the cookie that is set by `import { defineEnableDraftMode } from "next-sanity/draft-mode"`
19
+ * @public
20
+ */
21
+ declare const resolvePerspectiveFromCookies: ({
22
+ cookies: jar
23
+ }: {
24
+ cookies: Awaited<ReturnType<typeof cookies>>;
25
+ }) => Promise<Exclude<ClientPerspective, "raw">>;
26
+ declare const PUBLISHED_SYNC_TAG_PREFIX = "sp:";
27
+ declare const DRAFT_SYNC_TAG_PREFIX = "sd:";
28
+ /**
29
+ * Prefixes live event tags according to the conventions used by `defineLive().sanityFetch()`
30
+ * so that they can be used with `import {updateTag} from 'next/cache'`.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * import {updateTag} from 'next/cache'
35
+ * import {parseTags} from 'next-sanity/live'
36
+ * import {SanityLive} from '#sanity/live
37
+ *
38
+ * <SanityLive
39
+ * action={async (event, context) => {
40
+ * 'use server'
41
+ *
42
+ * for (const tag of parseTags(event.tags, context)) {
43
+ * updateTag(tag)
44
+ * }
45
+ * }}
46
+ * />
47
+ * ```
48
+ */
49
+ declare function parseTags<const Tags extends Extract<LiveEvent, {
50
+ type: "message";
51
+ }>["tags"]>(tags: Tags, context: SanityLiveActionContext): `${typeof PUBLISHED_SYNC_TAG_PREFIX | typeof DRAFT_SYNC_TAG_PREFIX}${SyncTag}`[];
52
+ export { ResolvePerspectiveFromCookies as n, resolvePerspectiveFromCookies as r, parseTags as t };
53
+ //# sourceMappingURL=parseTags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTags.d.ts","names":[],"sources":["../src/live/shared/resolvePerspectiveFromCookies.ts","../src/live/shared/constants.ts","../src/live/shared/parseTags.ts"],"mappings":";;;KAOY,6BAAA,IAAiC,OAAA;;AAA7C;;;;;;;;;EAWE,OAAA,EAAS,OAAA,CAAQ,UAAA,QAAkB,OAAA;AAAA,MAC/B,OAAA,CAAQ,OAAA,CAAQ,iBAAA;;;;;cAMT,6BAAA;EACX,OAAA,EAAS;AAAA;EAET,OAAA,EAAS,OAAA,CAAQ,UAAA,QAAkB,OAAA;AAAA,MACjC,OAAA,CAAQ,OAAA,CAAQ,iBAAA;AAAA,cCxBP,yBAAA;AAAA,cACA,qBAAA;;ADCb;;;;;;;;;;;;;;;;;;;;iBEoBgB,SAAA,oBAA6B,OAAA,CAAQ,SAAA;EAAY,IAAA;AAAA,WAAA,CAC/D,IAAA,EAAM,IAAA,EACN,OAAA,EAAS,uBAAA,aACE,yBAAA,UAAmC,qBAAA,GAAwB,OAAA"}
@@ -0,0 +1,11 @@
1
+ import { n as PUBLISHED_SYNC_TAG_PREFIX, t as DRAFT_SYNC_TAG_PREFIX } from "./constants.js";
2
+ function parseTags(tags, context) {
3
+ if (!Array.isArray(tags)) throw new TypeError("tags must be an array", { cause: {
4
+ tags,
5
+ context
6
+ } });
7
+ return tags.map((tag) => `${context.includeAllDocuments ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}`);
8
+ }
9
+ export { parseTags as t };
10
+
11
+ //# sourceMappingURL=parseTags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTags.js","names":[],"sources":["../src/live/shared/parseTags.ts"],"sourcesContent":["import type {LiveEvent, SyncTag} from '@sanity/client'\n\nimport type {SanityLiveActionContext} from './types'\n\nimport {DRAFT_SYNC_TAG_PREFIX, PUBLISHED_SYNC_TAG_PREFIX} from './constants'\n\n/**\n * Prefixes live event tags according to the conventions used by `defineLive().sanityFetch()`\n * so that they can be used with `import {updateTag} from 'next/cache'`.\n *\n * @example\n * ```tsx\n * import {updateTag} from 'next/cache'\n * import {parseTags} from 'next-sanity/live'\n * import {SanityLive} from '#sanity/live\n *\n * <SanityLive\n * action={async (event, context) => {\n * 'use server'\n *\n * for (const tag of parseTags(event.tags, context)) {\n * updateTag(tag)\n * }\n * }}\n * />\n * ```\n */\nexport function parseTags<const Tags extends Extract<LiveEvent, {type: 'message'}>['tags']>(\n tags: Tags,\n context: SanityLiveActionContext,\n): `${typeof PUBLISHED_SYNC_TAG_PREFIX | typeof DRAFT_SYNC_TAG_PREFIX}${SyncTag}`[] {\n if (!Array.isArray(tags)) {\n throw new TypeError('tags must be an array', {cause: {tags, context}})\n }\n return tags.map(\n (tag) =>\n `${context.includeAllDocuments ? PUBLISHED_SYNC_TAG_PREFIX : DRAFT_SYNC_TAG_PREFIX}${tag}` as const,\n )\n}\n"],"mappings":";AA2BA,SAAgB,UACd,MACA,SACkF;AAClF,KAAI,CAAC,MAAM,QAAQ,KAAK,CACtB,OAAM,IAAI,UAAU,yBAAyB,EAAC,OAAO;EAAC;EAAM;EAAQ,EAAC,CAAC;AAExE,QAAO,KAAK,KACT,QACC,GAAG,QAAQ,sBAAsB,4BAA4B,wBAAwB,MACxF"}
@@ -12,7 +12,7 @@ async function actionPerspectiveChange(perspective) {
12
12
  const nextPerspective = Array.isArray(sanitizedPerspective) ? sanitizedPerspective.join(",") : sanitizedPerspective;
13
13
  const jar = await cookies();
14
14
  if (nextPerspective === jar.get(perspectiveCookieName)?.value) {
15
- console.debug("Perspective is the same, skipping", nextPerspective);
15
+ console.debug("actionPerspectiveChange", "Perspective is the same, skipping", nextPerspective);
16
16
  return;
17
17
  }
18
18
  jar.set(perspectiveCookieName, nextPerspective, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/visual-editing/server-actions/index.ts"],"sourcesContent":["'use server'\n\nimport type {ClientPerspective} from '@sanity/client'\nimport type {HistoryRefresh} from '@sanity/visual-editing/react'\n\nimport {sanitizePerspective} from '#live/sanitizePerspective'\nimport {perspectiveCookieName} from '@sanity/preview-url-secret/constants'\nimport {refresh} from 'next/cache'\nimport {cookies} from 'next/headers'\n\n/**\n * @internal CAUTION: this is an internal action and does not follow semver. Using it directly is at your own risk.\n */\nexport async function actionRefresh(_payload: HistoryRefresh): Promise<void> {\n refresh()\n}\n\n/**\n * @internal CAUTION: this is an internal action and does not follow semver. Using it directly is at your own risk.\n */\nexport async function actionPerspectiveChange(perspective: ClientPerspective): Promise<void> {\n const sanitizedPerspective = sanitizePerspective(perspective, 'drafts')\n if (\n !sanitizedPerspective ||\n (Array.isArray(sanitizedPerspective) && sanitizedPerspective.length === 0)\n ) {\n throw new Error(`Invalid perspective`, {cause: perspective})\n }\n\n const nextPerspective = Array.isArray(sanitizedPerspective)\n ? sanitizedPerspective.join(',')\n : sanitizedPerspective\n const jar = await cookies()\n if (nextPerspective === jar.get(perspectiveCookieName)?.value) {\n // oxlint-disable-next-line no-console\n console.debug('Perspective is the same, skipping', nextPerspective)\n return\n }\n jar.set(perspectiveCookieName, nextPerspective, {\n httpOnly: true,\n path: '/',\n secure: true,\n sameSite: 'none',\n })\n\n refresh()\n}\n"],"mappings":";;;;;AAaA,eAAsB,cAAc,UAAyC;AAC3E,UAAS;;AAMX,eAAsB,wBAAwB,aAA+C;CAC3F,MAAM,uBAAuB,oBAAoB,aAAa,SAAS;AACvE,KACE,CAAC,wBACA,MAAM,QAAQ,qBAAqB,IAAI,qBAAqB,WAAW,EAExE,OAAM,IAAI,MAAM,uBAAuB,EAAC,OAAO,aAAY,CAAC;CAG9D,MAAM,kBAAkB,MAAM,QAAQ,qBAAqB,GACvD,qBAAqB,KAAK,IAAI,GAC9B;CACJ,MAAM,MAAM,MAAM,SAAS;AAC3B,KAAI,oBAAoB,IAAI,IAAI,sBAAsB,EAAE,OAAO;AAE7D,UAAQ,MAAM,qCAAqC,gBAAgB;AACnE;;AAEF,KAAI,IAAI,uBAAuB,iBAAiB;EAC9C,UAAU;EACV,MAAM;EACN,QAAQ;EACR,UAAU;EACX,CAAC;AAEF,UAAS"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/visual-editing/server-actions/index.ts"],"sourcesContent":["'use server'\n\nimport type {ClientPerspective} from '@sanity/client'\nimport type {HistoryRefresh} from '@sanity/visual-editing/react'\n\nimport {sanitizePerspective} from '#live/sanitizePerspective'\nimport {perspectiveCookieName} from '@sanity/preview-url-secret/constants'\nimport {refresh} from 'next/cache'\nimport {cookies} from 'next/headers'\n\n/**\n * @internal CAUTION: this is an internal action and does not follow semver. Using it directly is at your own risk.\n */\nexport async function actionRefresh(_payload: HistoryRefresh): Promise<void> {\n refresh()\n}\n\n/**\n * @internal CAUTION: this is an internal action and does not follow semver. Using it directly is at your own risk.\n */\nexport async function actionPerspectiveChange(perspective: ClientPerspective): Promise<void> {\n const sanitizedPerspective = sanitizePerspective(perspective, 'drafts')\n if (\n !sanitizedPerspective ||\n (Array.isArray(sanitizedPerspective) && sanitizedPerspective.length === 0)\n ) {\n throw new Error(`Invalid perspective`, {cause: perspective})\n }\n\n const nextPerspective = Array.isArray(sanitizedPerspective)\n ? sanitizedPerspective.join(',')\n : sanitizedPerspective\n const jar = await cookies()\n if (nextPerspective === jar.get(perspectiveCookieName)?.value) {\n // oxlint-disable-next-line no-console\n console.debug('actionPerspectiveChange', 'Perspective is the same, skipping', nextPerspective)\n return\n }\n jar.set(perspectiveCookieName, nextPerspective, {\n httpOnly: true,\n path: '/',\n secure: true,\n sameSite: 'none',\n })\n\n refresh()\n}\n"],"mappings":";;;;;AAaA,eAAsB,cAAc,UAAyC;AAC3E,UAAS;;AAMX,eAAsB,wBAAwB,aAA+C;CAC3F,MAAM,uBAAuB,oBAAoB,aAAa,SAAS;AACvE,KACE,CAAC,wBACA,MAAM,QAAQ,qBAAqB,IAAI,qBAAqB,WAAW,EAExE,OAAM,IAAI,MAAM,uBAAuB,EAAC,OAAO,aAAY,CAAC;CAG9D,MAAM,kBAAkB,MAAM,QAAQ,qBAAqB,GACvD,qBAAqB,KAAK,IAAI,GAC9B;CACJ,MAAM,MAAM,MAAM,SAAS;AAC3B,KAAI,oBAAoB,IAAI,IAAI,sBAAsB,EAAE,OAAO;AAE7D,UAAQ,MAAM,2BAA2B,qCAAqC,gBAAgB;AAC9F;;AAEF,KAAI,IAAI,uBAAuB,iBAAiB;EAC9C,UAAU;EACV,MAAM;EACN,QAAQ;EACR,UAAU;EACX,CAAC;AAEF,UAAS"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-sanity",
3
- "version": "13.0.0-cache-components.23",
3
+ "version": "13.0.0-cache-components.24",
4
4
  "description": "Sanity.io toolkit for Next.js",
5
5
  "keywords": [
6
6
  "live",
@@ -1,26 +0,0 @@
1
- import { cookies } from "next/headers";
2
- import { ClientPerspective } from "@sanity/client";
3
- type ResolvePerspectiveFromCookies = (options: {
4
- /**
5
- * You must await the cookies() function from next/headers
6
- * and pass it here.
7
- * Example:
8
- * ```ts
9
- * import { cookies } from 'next/headers'
10
- *
11
- * const perspective = await resolvePerspectiveFromCookies({cookies: await cookies()})
12
- * ```
13
- */
14
- cookies: Awaited<ReturnType<typeof cookies>>;
15
- }) => Promise<Exclude<ClientPerspective, "raw">>;
16
- /**
17
- * Resolves the perspective from the cookie that is set by `import { defineEnableDraftMode } from "next-sanity/draft-mode"`
18
- * @public
19
- */
20
- declare const resolvePerspectiveFromCookies: ({
21
- cookies: jar
22
- }: {
23
- cookies: Awaited<ReturnType<typeof cookies>>;
24
- }) => Promise<Exclude<ClientPerspective, "raw">>;
25
- export { resolvePerspectiveFromCookies as n, ResolvePerspectiveFromCookies as t };
26
- //# sourceMappingURL=resolvePerspectiveFromCookies.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolvePerspectiveFromCookies.d.ts","names":[],"sources":["../src/live/shared/resolvePerspectiveFromCookies.ts"],"mappings":";;KAOY,6BAAA,IAAiC,OAAA;EAA7C;;;;;;;;;;EAWE,OAAA,EAAS,OAAA,CAAQ,UAAA,QAAkB,OAAA;AAAA,MAC/B,OAAA,CAAQ,OAAA,CAAQ,iBAAA;;;;;cAMT,6BAAA;EACX,OAAA,EAAS;AAAA;EAET,OAAA,EAAS,OAAA,CAAQ,UAAA,QAAkB,OAAA;AAAA,MACjC,OAAA,CAAQ,OAAA,CAAQ,iBAAA"}