next-sanity 0.4.0 → 0.4.1-beta.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/README.md +1 -1
- package/dist/next-sanity.cjs.development.js +2 -0
- package/dist/next-sanity.cjs.development.js.map +1 -1
- package/dist/next-sanity.cjs.production.min.js +1 -1
- package/dist/next-sanity.cjs.production.min.js.map +1 -1
- package/dist/next-sanity.esm.js +2 -0
- package/dist/next-sanity.esm.js.map +1 -1
- package/dist/useSubscription.d.ts +2 -1
- package/package.json +5 -5
- package/src/useSubscription.ts +3 -1
package/README.md
CHANGED
|
@@ -71,7 +71,7 @@ export const config = {
|
|
|
71
71
|
**/
|
|
72
72
|
dataset: process.env.NEXT_PUBLIC_SANITY_DATASET || 'production',
|
|
73
73
|
projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID,
|
|
74
|
-
apiVersion: '2021-
|
|
74
|
+
apiVersion: '2021-10-21', // Learn more: https://www.sanity.io/docs/api-versioning
|
|
75
75
|
/**
|
|
76
76
|
* Set useCdn to `false` if your application require the freshest possible
|
|
77
77
|
* data always (potentially slightly slower and a bit more expensive).
|
|
@@ -100,6 +100,7 @@ var EMPTY_PARAMS = {};
|
|
|
100
100
|
function createPreviewSubscriptionHook(_ref) {
|
|
101
101
|
var projectId = _ref.projectId,
|
|
102
102
|
dataset = _ref.dataset,
|
|
103
|
+
useGroqBeta = _ref.useGroqBeta,
|
|
103
104
|
_ref$documentLimit = _ref.documentLimit,
|
|
104
105
|
documentLimit = _ref$documentLimit === void 0 ? 3000 : _ref$documentLimit;
|
|
105
106
|
// Only construct/setup the store when `getStore()` is called
|
|
@@ -132,6 +133,7 @@ function createPreviewSubscriptionHook(_ref) {
|
|
|
132
133
|
projectId: projectId,
|
|
133
134
|
dataset: dataset,
|
|
134
135
|
documentLimit: documentLimit,
|
|
136
|
+
useGroqBeta: useGroqBeta,
|
|
135
137
|
listen: true,
|
|
136
138
|
overlayDrafts: true,
|
|
137
139
|
subscriptionThrottleMs: 10
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-sanity.cjs.development.js","sources":["../src/client.ts","../src/imageUrlBuilder.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/portableText.tsx"],"sourcesContent":["import sanityClient from '@sanity/client'\nimport {ClientConfig} from './types'\n\nexport function createClient(config: ClientConfig) {\n return sanityClient(config)\n}\n","import getImageUrlBuilder from '@sanity/image-url'\nimport {ProjectConfig} from './types'\n\nexport function createImageUrlBuilder({projectId, dataset}: ProjectConfig) {\n return getImageUrlBuilder({projectId, dataset})\n}\n","export interface Aborter {\n abort(): void\n signal?: AbortSignal\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? {signal: undefined, abort: noop}\n : new AbortController()\n}\n\nfunction noop() {\n // intentional noop\n}\n","import {useEffect, useState} from 'react'\nimport {CurrentUser} from './types'\nimport {getAborter, Aborter} from './aborter'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(projectId: string, abort?: Aborter): Promise<CurrentUser | null> {\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort?.signal,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\n .catch((err: Error) => (err.name === 'AbortError' ? null : Promise.reject(err)))\n}\n\nfunction useCurrentUser(projectId: string) {\n const [data, setUser] = useState<CurrentUser | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n const aborter = getAborter()\n getCurrentUser(projectId, aborter).then(setUser).catch(setError)\n return () => aborter.abort()\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useDeepCompareEffectNoCheck as useDeepCompareEffect} from 'use-deep-compare-effect'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\ninterface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Record<string, unknown>\n initialData?: R\n}\n\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n documentLimit = 3000,\n}: ProjectConfig & {documentLimit?: number}) {\n // Only construct/setup the store when `getStore()` is called\n let store: Promise<GroqStore>\n\n return function usePreviewSubscription<R = any>(\n query: string,\n options: SubscriptionOptions<R> = {}\n ) {\n const {params = EMPTY_PARAMS, initialData, enabled} = options\n return useQuerySubscription<R>({\n getStore,\n projectId,\n query,\n params,\n initialData: initialData as any,\n enabled: enabled ? typeof window !== 'undefined' : false,\n })\n }\n\n function getStore() {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) =>\n groqStore({\n projectId,\n dataset,\n documentLimit,\n listen: true,\n overlayDrafts: true,\n subscriptionThrottleMs: 10,\n })\n )\n }\n return store\n }\n}\n\nfunction useQuerySubscription<R = any>(options: {\n getStore: () => Promise<GroqStore>\n projectId: string\n query: string\n params: Record<string, unknown>\n initialData: R\n enabled: boolean\n}) {\n const {getStore, projectId, query, params, initialData, enabled = false} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n\n // Use \"deep\" dependency comparison because params are often not _referentially_ equal,\n // but contains the same shallow properties, eg `{\"slug\": \"some-slug\"}`\n useDeepCompareEffect(() => {\n if (!enabled) {\n return () => {\n /* intentional noop */\n }\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter)\n .then((user) => {\n if (user) {\n return\n }\n\n // eslint-disable-next-line no-console\n console.warn('Not authenticated - preview not available')\n throw new Error('Not authenticated - preview not available')\n })\n .then(getStore)\n .then((store) => {\n subscription = store.subscribe(query, params, (err, result) => {\n if (err) {\n setError(err)\n } else {\n setData(result)\n }\n })\n })\n .catch(setError)\n .finally(() => setLoading(false))\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n","import React from 'react'\nimport SanityPortableText, {\n PortableTextProps,\n PortableTextSerializers,\n} from '@sanity/block-content-to-react'\nimport {ProjectConfig} from './types'\n\nexport function createPortableTextComponent({\n projectId,\n dataset,\n serializers,\n}: ProjectConfig & {serializers?: PortableTextSerializers}) {\n return function PortableText(props: PortableTextProps) {\n return (\n <SanityPortableText\n projectId={projectId}\n dataset={dataset}\n serializers={serializers}\n {...props}\n />\n )\n }\n}\n"],"names":["createClient","config","sanityClient","createImageUrlBuilder","projectId","dataset","getImageUrlBuilder","getAborter","AbortController","signal","undefined","abort","noop","createCurrentUserHook","useCurrentUser","getCurrentUser","fetch","credentials","then","res","json","id","catch","err","name","Promise","reject","useState","data","setUser","error","setError","useEffect","aborter","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useDeepCompareEffect","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","createPortableTextComponent","serializers","PortableText","props","React","SanityPortableText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next-sanity.cjs.development.js","sources":["../src/client.ts","../src/imageUrlBuilder.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/portableText.tsx"],"sourcesContent":["import sanityClient from '@sanity/client'\nimport {ClientConfig} from './types'\n\nexport function createClient(config: ClientConfig) {\n return sanityClient(config)\n}\n","import getImageUrlBuilder from '@sanity/image-url'\nimport {ProjectConfig} from './types'\n\nexport function createImageUrlBuilder({projectId, dataset}: ProjectConfig) {\n return getImageUrlBuilder({projectId, dataset})\n}\n","export interface Aborter {\n abort(): void\n signal?: AbortSignal\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? {signal: undefined, abort: noop}\n : new AbortController()\n}\n\nfunction noop() {\n // intentional noop\n}\n","import {useEffect, useState} from 'react'\nimport {CurrentUser} from './types'\nimport {getAborter, Aborter} from './aborter'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(projectId: string, abort?: Aborter): Promise<CurrentUser | null> {\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort?.signal,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\n .catch((err: Error) => (err.name === 'AbortError' ? null : Promise.reject(err)))\n}\n\nfunction useCurrentUser(projectId: string) {\n const [data, setUser] = useState<CurrentUser | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n const aborter = getAborter()\n getCurrentUser(projectId, aborter).then(setUser).catch(setError)\n return () => aborter.abort()\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useDeepCompareEffectNoCheck as useDeepCompareEffect} from 'use-deep-compare-effect'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\ninterface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Record<string, unknown>\n initialData?: R\n}\n\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n useGroqBeta,\n documentLimit = 3000,\n}: ProjectConfig & {documentLimit?: number; useGroqBeta?: boolean}) {\n // Only construct/setup the store when `getStore()` is called\n let store: Promise<GroqStore>\n\n return function usePreviewSubscription<R = any>(\n query: string,\n options: SubscriptionOptions<R> = {}\n ) {\n const {params = EMPTY_PARAMS, initialData, enabled} = options\n return useQuerySubscription<R>({\n getStore,\n projectId,\n query,\n params,\n initialData: initialData as any,\n enabled: enabled ? typeof window !== 'undefined' : false,\n })\n }\n\n function getStore() {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) =>\n groqStore({\n projectId,\n dataset,\n documentLimit,\n useGroqBeta,\n listen: true,\n overlayDrafts: true,\n subscriptionThrottleMs: 10,\n })\n )\n }\n return store\n }\n}\n\nfunction useQuerySubscription<R = any>(options: {\n getStore: () => Promise<GroqStore>\n projectId: string\n query: string\n params: Record<string, unknown>\n initialData: R\n enabled: boolean\n}) {\n const {getStore, projectId, query, params, initialData, enabled = false} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n\n // Use \"deep\" dependency comparison because params are often not _referentially_ equal,\n // but contains the same shallow properties, eg `{\"slug\": \"some-slug\"}`\n useDeepCompareEffect(() => {\n if (!enabled) {\n return () => {\n /* intentional noop */\n }\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter)\n .then((user) => {\n if (user) {\n return\n }\n\n // eslint-disable-next-line no-console\n console.warn('Not authenticated - preview not available')\n throw new Error('Not authenticated - preview not available')\n })\n .then(getStore)\n .then((store) => {\n subscription = store.subscribe(query, params, (err, result) => {\n if (err) {\n setError(err)\n } else {\n setData(result)\n }\n })\n })\n .catch(setError)\n .finally(() => setLoading(false))\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n","import React from 'react'\nimport SanityPortableText, {\n PortableTextProps,\n PortableTextSerializers,\n} from '@sanity/block-content-to-react'\nimport {ProjectConfig} from './types'\n\nexport function createPortableTextComponent({\n projectId,\n dataset,\n serializers,\n}: ProjectConfig & {serializers?: PortableTextSerializers}) {\n return function PortableText(props: PortableTextProps) {\n return (\n <SanityPortableText\n projectId={projectId}\n dataset={dataset}\n serializers={serializers}\n {...props}\n />\n )\n }\n}\n"],"names":["createClient","config","sanityClient","createImageUrlBuilder","projectId","dataset","getImageUrlBuilder","getAborter","AbortController","signal","undefined","abort","noop","createCurrentUserHook","useCurrentUser","getCurrentUser","fetch","credentials","then","res","json","id","catch","err","name","Promise","reject","useState","data","setUser","error","setError","useEffect","aborter","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","useGroqBeta","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useDeepCompareEffect","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","createPortableTextComponent","serializers","PortableText","props","React","SanityPortableText"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAGgBA,aAAaC;AAC3B,SAAOC,YAAY,CAACD,MAAD,CAAnB;AACD;;SCFeE;MAAuBC,iBAAAA;MAAWC,eAAAA;AAChD,SAAOC,kBAAkB,CAAC;AAACF,IAAAA,SAAS,EAATA,SAAD;AAAYC,IAAAA,OAAO,EAAPA;AAAZ,GAAD,CAAzB;AACD;;SCAeE;AACd,SAAO,OAAOC,eAAP,KAA2B,WAA3B,GACH;AAACC,IAAAA,MAAM,EAAEC,SAAT;AAAoBC,IAAAA,KAAK,EAAEC;AAA3B,GADG,GAEH,IAAIJ,eAAJ,EAFJ;AAGD;;AAED,SAASI,IAAT;AAEC;;SCTeC;MAAuBT,iBAAAA;AACrC,SAAO;AAAA,WAAMU,cAAc,CAACV,SAAD,CAApB;AAAA,GAAP;AACD;AAED,SAAgBW,eAAeX,WAAmBO;AAChD,SAAOK,KAAK,cAAYZ,SAAZ,iCAAmD;AAC7Da,IAAAA,WAAW,EAAE,SADgD;AAE7DR,IAAAA,MAAM,EAAEE,KAAF,oBAAEA,KAAK,CAAEF;AAF8C,GAAnD,CAAL,CAIJS,IAJI,CAIC,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,IAAJ,EAAT;AAAA,GAJD,EAKJF,IALI,CAKC,UAACC,GAAD;AAAA,WAAUA,GAAG,QAAH,IAAAA,GAAG,CAAEE,EAAL,GAAUF,GAAV,GAAgB,IAA1B;AAAA,GALD,EAMJG,KANI,CAME,UAACC,GAAD;AAAA,WAAiBA,GAAG,CAACC,IAAJ,KAAa,YAAb,GAA4B,IAA5B,GAAmCC,OAAO,CAACC,MAAR,CAAeH,GAAf,CAApD;AAAA,GANF,CAAP;AAOD;;AAED,SAAST,cAAT,CAAwBV,SAAxB;AACE,kBAAwBuB,cAAQ,EAAhC;AAAA,MAAOC,IAAP;AAAA,MAAaC,OAAb;;AACA,mBAA0BF,cAAQ,EAAlC;AAAA,MAAOG,KAAP;AAAA,MAAcC,QAAd;;AAEAC,EAAAA,eAAS,CAAC;AACR,QAAMC,OAAO,GAAG1B,UAAU,EAA1B;AACAQ,IAAAA,cAAc,CAACX,SAAD,EAAY6B,OAAZ,CAAd,CAAmCf,IAAnC,CAAwCW,OAAxC,EAAiDP,KAAjD,CAAuDS,QAAvD;AACA,WAAO;AAAA,aAAME,OAAO,CAACtB,KAAR,EAAN;AAAA,KAAP;AACD,GAJQ,EAIN,CAACP,SAAD,CAJM,CAAT;AAMA,SAAO;AAACwB,IAAAA,IAAI,EAAJA,IAAD;AAAOE,IAAAA,KAAK,EAALA,KAAP;AAAcI,IAAAA,OAAO,EAAEN,IAAI,KAAK,IAAT,IAAiB,CAACE;AAAzC,GAAP;AACD;;ACtBD,IAAMK,YAAY,GAAG,EAArB;AAQA,SAAgBC;MACdhC,iBAAAA;MACAC,eAAAA;MACAgC,mBAAAA;gCACAC;MAAAA,gDAAgB;AAEhB;AACA,MAAIC,KAAJ;AAEA,SAAO,SAASC,sBAAT,CACLC,KADK,EAELC,OAFK;QAELA;AAAAA,MAAAA,UAAkC;;;AAElC,mBAAsDA,OAAtD;AAAA,mCAAOC,MAAP;AAAA,QAAOA,MAAP,gCAAgBR,YAAhB;AAAA,QAA8BS,WAA9B,YAA8BA,WAA9B;AAAA,QAA2CC,OAA3C,YAA2CA,OAA3C;AACA,WAAOC,oBAAoB,CAAI;AAC7BC,MAAAA,QAAQ,EAARA,QAD6B;AAE7B3C,MAAAA,SAAS,EAATA,SAF6B;AAG7BqC,MAAAA,KAAK,EAALA,KAH6B;AAI7BE,MAAAA,MAAM,EAANA,MAJ6B;AAK7BC,MAAAA,WAAW,EAAEA,WALgB;AAM7BC,MAAAA,OAAO,EAAEA,OAAO,GAAG,OAAOG,MAAP,KAAkB,WAArB,GAAmC;AANtB,KAAJ,CAA3B;AAQD,GAbD;;AAeA,WAASD,QAAT;AACE,QAAI,CAACR,KAAL,EAAY;AACVA,MAAAA,KAAK,GAAG,mEAAO,oBAAP,QAA6BrB,IAA7B,CAAkC;AAAA,YAAE+B,SAAF,SAAEA,SAAF;AAAA,eACxCA,SAAS,CAAC;AACR7C,UAAAA,SAAS,EAATA,SADQ;AAERC,UAAAA,OAAO,EAAPA,OAFQ;AAGRiC,UAAAA,aAAa,EAAbA,aAHQ;AAIRD,UAAAA,WAAW,EAAXA,WAJQ;AAKRa,UAAAA,MAAM,EAAE,IALA;AAMRC,UAAAA,aAAa,EAAE,IANP;AAORC,UAAAA,sBAAsB,EAAE;AAPhB,SAAD,CAD+B;AAAA,OAAlC,CAAR;AAWD;;AACD,WAAOb,KAAP;AACD;AACF;;AAED,SAASO,oBAAT,CAAuCJ,OAAvC;AAQE,MAAOK,QAAP,GAA2EL,OAA3E,CAAOK,QAAP;AAAA,MAAiB3C,SAAjB,GAA2EsC,OAA3E,CAAiBtC,SAAjB;AAAA,MAA4BqC,KAA5B,GAA2EC,OAA3E,CAA4BD,KAA5B;AAAA,MAAmCE,MAAnC,GAA2ED,OAA3E,CAAmCC,MAAnC;AAAA,MAA2CC,WAA3C,GAA2EF,OAA3E,CAA2CE,WAA3C;AAAA,yBAA2EF,OAA3E,CAAwDG,OAAxD;AAAA,MAAwDA,OAAxD,iCAAkE,KAAlE;;AACA,kBAA0BlB,cAAQ,EAAlC;AAAA,MAAOG,KAAP;AAAA,MAAcC,QAAd;;AACA,mBAA8BJ,cAAQ,CAAC,KAAD,CAAtC;AAAA,MAAOO,OAAP;AAAA,MAAgBmB,UAAhB;;AACA,mBAAwB1B,cAAQ,EAAhC;AAAA,MAAOC,IAAP;AAAA,MAAa0B,OAAb;AAGA;;;AACAC,EAAAA,gDAAoB,CAAC;AACnB,QAAI,CAACV,OAAL,EAAc;AACZ,aAAO;AACL;AACD,OAFD;AAGD;;AAEDQ,IAAAA,UAAU,CAAC,IAAD,CAAV;AAEA,QAAMpB,OAAO,GAAG1B,UAAU,EAA1B;AACA,QAAIiD,YAAJ;AACAzC,IAAAA,cAAc,CAACX,SAAD,EAAY6B,OAAZ,CAAd,CACGf,IADH,CACQ,UAACuC,IAAD;AACJ,UAAIA,IAAJ,EAAU;AACR;AACD;;;AAGDC,MAAAA,OAAO,CAACC,IAAR,CAAa,2CAAb;AACA,YAAM,IAAIC,KAAJ,CAAU,2CAAV,CAAN;AACD,KATH,EAUG1C,IAVH,CAUQ6B,QAVR,EAWG7B,IAXH,CAWQ,UAACqB,KAAD;AACJiB,MAAAA,YAAY,GAAGjB,KAAK,CAACsB,SAAN,CAAgBpB,KAAhB,EAAuBE,MAAvB,EAA+B,UAACpB,GAAD,EAAMuC,MAAN;AAC5C,YAAIvC,GAAJ,EAAS;AACPQ,UAAAA,QAAQ,CAACR,GAAD,CAAR;AACD,SAFD,MAEO;AACL+B,UAAAA,OAAO,CAACQ,MAAD,CAAP;AACD;AACF,OANc,CAAf;AAOD,KAnBH,EAoBGxC,KApBH,CAoBSS,QApBT,EAqBGgC,OArBH,CAqBW;AAAA,aAAMV,UAAU,CAAC,KAAD,CAAhB;AAAA,KArBX;AAuBA,WAAO;AACL,UAAIG,YAAJ,EAAkB;AAChBA,QAAAA,YAAY,CAACQ,WAAb;AACD;;AAED/B,MAAAA,OAAO,CAACtB,KAAR;AACD,KAND;AAOD,GAzCmB,EAyCjB,CAACoC,QAAD,EAAWN,KAAX,EAAkBE,MAAlB,EAA0BE,OAA1B,CAzCiB,CAApB;AA2CA,SAAO;AACLjB,IAAAA,IAAI,EAAE,OAAOA,IAAP,KAAgB,WAAhB,GAA8BgB,WAA9B,GAA4ChB,IAD7C;AAELM,IAAAA,OAAO,EAAPA,OAFK;AAGLJ,IAAAA,KAAK,EAALA;AAHK,GAAP;AAKD;;SCjHemC;MACd7D,iBAAAA;MACAC,eAAAA;MACA6D,mBAAAA;AAEA,SAAO,SAASC,YAAT,CAAsBC,KAAtB;AACL,WACEC,4BAAA,CAACC,kBAAD;AACElE,MAAAA,SAAS,EAAEA;AACXC,MAAAA,OAAO,EAAEA;AACT6D,MAAAA,WAAW,EAAEA;OACTE,MAJN,CADF;AAQD,GATD;AAUD;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("@sanity/client")),r=e(require("@sanity/image-url")),n=require("react"),o=e(n),i=require("use-deep-compare-effect"),a=e(require("@sanity/block-content-to-react")),u=e(require("groq"));function c(){return"undefined"==typeof AbortController?{signal:void 0,abort:s}:new AbortController}function s(){}function f(e,t){return fetch("https://"+e+".api.sanity.io/v1/users/me",{credentials:"include",signal:null==t?void 0:t.signal}).then((function(e){return e.json()})).then((function(e){return null!=e&&e.id?e:null})).catch((function(e){return"AbortError"===e.name?null:Promise.reject(e)}))}var l={};exports.groq=u,exports.createClient=function(e){return t(e)},exports.createCurrentUserHook=function(e){var t=e.projectId;return function(){return function(e){var t=n.useState(),r=t[0],o=t[1],i=n.useState(),a=i[0],u=i[1];return n.useEffect((function(){var t=c();return f(e,t).then(o).catch(u),function(){return t.abort()}}),[e]),{data:r,error:a,loading:null!==r||!a}}(t)}},exports.createImageUrlBuilder=function(e){return r({projectId:e.projectId,dataset:e.dataset})},exports.createPortableTextComponent=function(e){var t=e.projectId,r=e.dataset,n=e.serializers;return function(e){return o.createElement(a,Object.assign({projectId:t,dataset:r,serializers:n},e))}},exports.createPreviewSubscriptionHook=function(e){var t,r=e.projectId,o=e.dataset,a=e.
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("@sanity/client")),r=e(require("@sanity/image-url")),n=require("react"),o=e(n),i=require("use-deep-compare-effect"),a=e(require("@sanity/block-content-to-react")),u=e(require("groq"));function c(){return"undefined"==typeof AbortController?{signal:void 0,abort:s}:new AbortController}function s(){}function f(e,t){return fetch("https://"+e+".api.sanity.io/v1/users/me",{credentials:"include",signal:null==t?void 0:t.signal}).then((function(e){return e.json()})).then((function(e){return null!=e&&e.id?e:null})).catch((function(e){return"AbortError"===e.name?null:Promise.reject(e)}))}var l={};exports.groq=u,exports.createClient=function(e){return t(e)},exports.createCurrentUserHook=function(e){var t=e.projectId;return function(){return function(e){var t=n.useState(),r=t[0],o=t[1],i=n.useState(),a=i[0],u=i[1];return n.useEffect((function(){var t=c();return f(e,t).then(o).catch(u),function(){return t.abort()}}),[e]),{data:r,error:a,loading:null!==r||!a}}(t)}},exports.createImageUrlBuilder=function(e){return r({projectId:e.projectId,dataset:e.dataset})},exports.createPortableTextComponent=function(e){var t=e.projectId,r=e.dataset,n=e.serializers;return function(e){return o.createElement(a,Object.assign({projectId:t,dataset:r,serializers:n},e))}},exports.createPreviewSubscriptionHook=function(e){var t,r=e.projectId,o=e.dataset,a=e.useGroqBeta,u=e.documentLimit,s=void 0===u?3e3:u;return function(e,t){void 0===t&&(t={});var o=t.params;return function(e){var t=e.getStore,r=e.projectId,o=e.query,a=e.params,u=e.initialData,s=e.enabled,l=void 0!==s&&s,d=n.useState(),p=d[0],v=d[1],b=n.useState(!1),h=b[0],m=b[1],g=n.useState(),j=g[0],y=g[1];return i.useDeepCompareEffectNoCheck((function(){if(!l)return function(){};m(!0);var e,n=c();return f(r,n).then((function(e){if(!e)throw console.warn("Not authenticated - preview not available"),new Error("Not authenticated - preview not available")})).then(t).then((function(t){e=t.subscribe(o,a,(function(e,t){e?v(e):y(t)}))})).catch(v).finally((function(){return m(!1)})),function(){e&&e.unsubscribe(),n.abort()}}),[t,o,a,l]),{data:void 0===j?u:j,loading:h,error:p}}({getStore:d,projectId:r,query:e,params:void 0===o?l:o,initialData:t.initialData,enabled:!!t.enabled&&"undefined"!=typeof window})};function d(){return t||(t=new Promise((function(e){e(function(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t.default=e,t}(require("@sanity/groq-store")))})).then((function(e){return(0,e.groqStore)({projectId:r,dataset:o,documentLimit:s,useGroqBeta:a,listen:!0,overlayDrafts:!0,subscriptionThrottleMs:10})}))),t}};
|
|
2
2
|
//# sourceMappingURL=next-sanity.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-sanity.cjs.production.min.js","sources":["../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/client.ts","../src/imageUrlBuilder.ts","../src/portableText.tsx"],"sourcesContent":["export interface Aborter {\n abort(): void\n signal?: AbortSignal\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? {signal: undefined, abort: noop}\n : new AbortController()\n}\n\nfunction noop() {\n // intentional noop\n}\n","import {useEffect, useState} from 'react'\nimport {CurrentUser} from './types'\nimport {getAborter, Aborter} from './aborter'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(projectId: string, abort?: Aborter): Promise<CurrentUser | null> {\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort?.signal,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\n .catch((err: Error) => (err.name === 'AbortError' ? null : Promise.reject(err)))\n}\n\nfunction useCurrentUser(projectId: string) {\n const [data, setUser] = useState<CurrentUser | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n const aborter = getAborter()\n getCurrentUser(projectId, aborter).then(setUser).catch(setError)\n return () => aborter.abort()\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useDeepCompareEffectNoCheck as useDeepCompareEffect} from 'use-deep-compare-effect'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\ninterface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Record<string, unknown>\n initialData?: R\n}\n\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n documentLimit = 3000,\n}: ProjectConfig & {documentLimit?: number}) {\n // Only construct/setup the store when `getStore()` is called\n let store: Promise<GroqStore>\n\n return function usePreviewSubscription<R = any>(\n query: string,\n options: SubscriptionOptions<R> = {}\n ) {\n const {params = EMPTY_PARAMS, initialData, enabled} = options\n return useQuerySubscription<R>({\n getStore,\n projectId,\n query,\n params,\n initialData: initialData as any,\n enabled: enabled ? typeof window !== 'undefined' : false,\n })\n }\n\n function getStore() {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) =>\n groqStore({\n projectId,\n dataset,\n documentLimit,\n listen: true,\n overlayDrafts: true,\n subscriptionThrottleMs: 10,\n })\n )\n }\n return store\n }\n}\n\nfunction useQuerySubscription<R = any>(options: {\n getStore: () => Promise<GroqStore>\n projectId: string\n query: string\n params: Record<string, unknown>\n initialData: R\n enabled: boolean\n}) {\n const {getStore, projectId, query, params, initialData, enabled = false} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n\n // Use \"deep\" dependency comparison because params are often not _referentially_ equal,\n // but contains the same shallow properties, eg `{\"slug\": \"some-slug\"}`\n useDeepCompareEffect(() => {\n if (!enabled) {\n return () => {\n /* intentional noop */\n }\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter)\n .then((user) => {\n if (user) {\n return\n }\n\n // eslint-disable-next-line no-console\n console.warn('Not authenticated - preview not available')\n throw new Error('Not authenticated - preview not available')\n })\n .then(getStore)\n .then((store) => {\n subscription = store.subscribe(query, params, (err, result) => {\n if (err) {\n setError(err)\n } else {\n setData(result)\n }\n })\n })\n .catch(setError)\n .finally(() => setLoading(false))\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n","import sanityClient from '@sanity/client'\nimport {ClientConfig} from './types'\n\nexport function createClient(config: ClientConfig) {\n return sanityClient(config)\n}\n","import getImageUrlBuilder from '@sanity/image-url'\nimport {ProjectConfig} from './types'\n\nexport function createImageUrlBuilder({projectId, dataset}: ProjectConfig) {\n return getImageUrlBuilder({projectId, dataset})\n}\n","import React from 'react'\nimport SanityPortableText, {\n PortableTextProps,\n PortableTextSerializers,\n} from '@sanity/block-content-to-react'\nimport {ProjectConfig} from './types'\n\nexport function createPortableTextComponent({\n projectId,\n dataset,\n serializers,\n}: ProjectConfig & {serializers?: PortableTextSerializers}) {\n return function PortableText(props: PortableTextProps) {\n return (\n <SanityPortableText\n projectId={projectId}\n dataset={dataset}\n serializers={serializers}\n {...props}\n />\n )\n }\n}\n"],"names":["getAborter","AbortController","signal","undefined","abort","noop","getCurrentUser","projectId","fetch","credentials","then","res","json","id","catch","err","name","Promise","reject","EMPTY_PARAMS","config","sanityClient","useState","data","setUser","error","setError","useEffect","aborter","loading","useCurrentUser","getImageUrlBuilder","dataset","serializers","props","React","SanityPortableText","store","documentLimit","query","options","params","getStore","initialData","enabled","setLoading","setData","useDeepCompareEffect","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","useQuerySubscription","window","groqStore","listen","overlayDrafts","subscriptionThrottleMs"],"mappings":"2VAKgBA,UACoB,oBAApBC,gBACV,CAACC,YAAQC,EAAWC,MAAOC,GAC3B,IAAIJ,gBAGV,SAASI,cCHOC,EAAeC,EAAmBH,UACzCI,iBAAiBD,+BAAuC,CAC7DE,YAAa,UACbP,aAAQE,SAAAA,EAAOF,SAEdQ,MAAK,SAACC,UAAQA,EAAIC,UAClBF,MAAK,SAACC,gBAASA,GAAAA,EAAKE,GAAKF,EAAM,QAC/BG,OAAM,SAACC,SAA6B,eAAbA,EAAIC,KAAwB,KAAOC,QAAQC,OAAOH,MCR9E,IAAMI,EAAe,gDCJQC,UACpBC,EAAaD,kDFAiBb,IAAAA,iBAC9B,kBAaT,SAAwBA,SACEe,aAAjBC,OAAMC,SACaF,aAAnBG,OAAOC,cAEdC,aAAU,eACFC,EAAU5B,WAChBM,EAAeC,EAAWqB,GAASlB,KAAKc,GAASV,MAAMY,GAChD,kBAAME,EAAQxB,WACpB,CAACG,IAEG,CAACgB,KAAAA,EAAME,MAAAA,EAAOI,QAAkB,OAATN,IAAkBE,GAvBnCK,CAAevB,sDGDrBwB,EAAmB,CAACxB,YADUA,UACCyB,UADUA,+DCKhDzB,IAAAA,UACAyB,IAAAA,QACAC,IAAAA,mBAEO,SAAsBC,UAEzBC,gBAACC,iBACC7B,UAAWA,EACXyB,QAASA,EACTC,YAAaA,GACTC,
|
|
1
|
+
{"version":3,"file":"next-sanity.cjs.production.min.js","sources":["../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/client.ts","../src/imageUrlBuilder.ts","../src/portableText.tsx"],"sourcesContent":["export interface Aborter {\n abort(): void\n signal?: AbortSignal\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? {signal: undefined, abort: noop}\n : new AbortController()\n}\n\nfunction noop() {\n // intentional noop\n}\n","import {useEffect, useState} from 'react'\nimport {CurrentUser} from './types'\nimport {getAborter, Aborter} from './aborter'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(projectId: string, abort?: Aborter): Promise<CurrentUser | null> {\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort?.signal,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\n .catch((err: Error) => (err.name === 'AbortError' ? null : Promise.reject(err)))\n}\n\nfunction useCurrentUser(projectId: string) {\n const [data, setUser] = useState<CurrentUser | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n const aborter = getAborter()\n getCurrentUser(projectId, aborter).then(setUser).catch(setError)\n return () => aborter.abort()\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useDeepCompareEffectNoCheck as useDeepCompareEffect} from 'use-deep-compare-effect'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\ninterface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Record<string, unknown>\n initialData?: R\n}\n\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n useGroqBeta,\n documentLimit = 3000,\n}: ProjectConfig & {documentLimit?: number; useGroqBeta?: boolean}) {\n // Only construct/setup the store when `getStore()` is called\n let store: Promise<GroqStore>\n\n return function usePreviewSubscription<R = any>(\n query: string,\n options: SubscriptionOptions<R> = {}\n ) {\n const {params = EMPTY_PARAMS, initialData, enabled} = options\n return useQuerySubscription<R>({\n getStore,\n projectId,\n query,\n params,\n initialData: initialData as any,\n enabled: enabled ? typeof window !== 'undefined' : false,\n })\n }\n\n function getStore() {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) =>\n groqStore({\n projectId,\n dataset,\n documentLimit,\n useGroqBeta,\n listen: true,\n overlayDrafts: true,\n subscriptionThrottleMs: 10,\n })\n )\n }\n return store\n }\n}\n\nfunction useQuerySubscription<R = any>(options: {\n getStore: () => Promise<GroqStore>\n projectId: string\n query: string\n params: Record<string, unknown>\n initialData: R\n enabled: boolean\n}) {\n const {getStore, projectId, query, params, initialData, enabled = false} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n\n // Use \"deep\" dependency comparison because params are often not _referentially_ equal,\n // but contains the same shallow properties, eg `{\"slug\": \"some-slug\"}`\n useDeepCompareEffect(() => {\n if (!enabled) {\n return () => {\n /* intentional noop */\n }\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter)\n .then((user) => {\n if (user) {\n return\n }\n\n // eslint-disable-next-line no-console\n console.warn('Not authenticated - preview not available')\n throw new Error('Not authenticated - preview not available')\n })\n .then(getStore)\n .then((store) => {\n subscription = store.subscribe(query, params, (err, result) => {\n if (err) {\n setError(err)\n } else {\n setData(result)\n }\n })\n })\n .catch(setError)\n .finally(() => setLoading(false))\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n","import sanityClient from '@sanity/client'\nimport {ClientConfig} from './types'\n\nexport function createClient(config: ClientConfig) {\n return sanityClient(config)\n}\n","import getImageUrlBuilder from '@sanity/image-url'\nimport {ProjectConfig} from './types'\n\nexport function createImageUrlBuilder({projectId, dataset}: ProjectConfig) {\n return getImageUrlBuilder({projectId, dataset})\n}\n","import React from 'react'\nimport SanityPortableText, {\n PortableTextProps,\n PortableTextSerializers,\n} from '@sanity/block-content-to-react'\nimport {ProjectConfig} from './types'\n\nexport function createPortableTextComponent({\n projectId,\n dataset,\n serializers,\n}: ProjectConfig & {serializers?: PortableTextSerializers}) {\n return function PortableText(props: PortableTextProps) {\n return (\n <SanityPortableText\n projectId={projectId}\n dataset={dataset}\n serializers={serializers}\n {...props}\n />\n )\n }\n}\n"],"names":["getAborter","AbortController","signal","undefined","abort","noop","getCurrentUser","projectId","fetch","credentials","then","res","json","id","catch","err","name","Promise","reject","EMPTY_PARAMS","config","sanityClient","useState","data","setUser","error","setError","useEffect","aborter","loading","useCurrentUser","getImageUrlBuilder","dataset","serializers","props","React","SanityPortableText","store","useGroqBeta","documentLimit","query","options","params","getStore","initialData","enabled","setLoading","setData","useDeepCompareEffect","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","useQuerySubscription","window","groqStore","listen","overlayDrafts","subscriptionThrottleMs"],"mappings":"2VAKgBA,UACoB,oBAApBC,gBACV,CAACC,YAAQC,EAAWC,MAAOC,GAC3B,IAAIJ,gBAGV,SAASI,cCHOC,EAAeC,EAAmBH,UACzCI,iBAAiBD,+BAAuC,CAC7DE,YAAa,UACbP,aAAQE,SAAAA,EAAOF,SAEdQ,MAAK,SAACC,UAAQA,EAAIC,UAClBF,MAAK,SAACC,gBAASA,GAAAA,EAAKE,GAAKF,EAAM,QAC/BG,OAAM,SAACC,SAA6B,eAAbA,EAAIC,KAAwB,KAAOC,QAAQC,OAAOH,MCR9E,IAAMI,EAAe,gDCJQC,UACpBC,EAAaD,kDFAiBb,IAAAA,iBAC9B,kBAaT,SAAwBA,SACEe,aAAjBC,OAAMC,SACaF,aAAnBG,OAAOC,cAEdC,aAAU,eACFC,EAAU5B,WAChBM,EAAeC,EAAWqB,GAASlB,KAAKc,GAASV,MAAMY,GAChD,kBAAME,EAAQxB,WACpB,CAACG,IAEG,CAACgB,KAAAA,EAAME,MAAAA,EAAOI,QAAkB,OAATN,IAAkBE,GAvBnCK,CAAevB,sDGDrBwB,EAAmB,CAACxB,YADUA,UACCyB,UADUA,+DCKhDzB,IAAAA,UACAyB,IAAAA,QACAC,IAAAA,mBAEO,SAAsBC,UAEzBC,gBAACC,iBACC7B,UAAWA,EACXyB,QAASA,EACTC,YAAaA,GACTC,4DHING,EANJ9B,IAAAA,UACAyB,IAAAA,QACAM,IAAAA,gBACAC,cAAAA,aAAgB,aAKT,SACLC,EACAC,YAAAA,IAAAA,EAAkC,UAEoBA,EAA/CC,cA6BX,SAAuCD,OAQ9BE,EAAoEF,EAApEE,SAAUpC,EAA0DkC,EAA1DlC,UAAWiC,EAA+CC,EAA/CD,MAAOE,EAAwCD,EAAxCC,OAAQE,EAAgCH,EAAhCG,cAAgCH,EAAnBI,QAAAA,kBAC9BvB,aAAnBG,OAAOC,SACgBJ,YAAS,GAAhCO,OAASiB,SACQxB,aAAjBC,OAAMwB,cAIbC,+BAAqB,eACdH,SACI,aAKTC,GAAW,OAGPG,EADErB,EAAU5B,WAEhBM,EAAeC,EAAWqB,GACvBlB,MAAK,SAACwC,OACDA,QAKJC,QAAQC,KAAK,6CACP,IAAIC,MAAM,gDAEjB3C,KAAKiC,GACLjC,MAAK,SAAC2B,GACLY,EAAeZ,EAAMiB,UAAUd,EAAOE,GAAQ,SAAC3B,EAAKwC,GAC9CxC,EACFW,EAASX,GAETgC,EAAQQ,SAIbzC,MAAMY,GACN8B,SAAQ,kBAAMV,GAAW,MAErB,WACDG,GACFA,EAAaQ,cAGf7B,EAAQxB,WAET,CAACuC,EAAUH,EAAOE,EAAQG,IAEtB,CACLtB,UAAsB,IAATA,EAAuBqB,EAAcrB,EAClDM,QAAAA,EACAJ,MAAAA,GAzFOiC,CAAwB,CAC7Bf,SAAAA,EACApC,UAAAA,EACAiC,MAAAA,EACAE,kBALcvB,IAMdyB,YANoDH,EAAxBG,YAO5BC,UAPoDJ,EAAXI,SAOJ,oBAAXc,mBAIrBhB,WACFN,IACHA,EAAQ,8QAAO,2BAAsB3B,MAAK,mBACxCkD,IAD0CA,WAChC,CACRrD,UAAAA,EACAyB,QAAAA,EACAO,cAAAA,EACAD,YAAAA,EACAuB,QAAQ,EACRC,eAAe,EACfC,uBAAwB,SAIvB1B"}
|
package/dist/next-sanity.esm.js
CHANGED
|
@@ -74,6 +74,7 @@ var EMPTY_PARAMS = {};
|
|
|
74
74
|
function createPreviewSubscriptionHook(_ref) {
|
|
75
75
|
var projectId = _ref.projectId,
|
|
76
76
|
dataset = _ref.dataset,
|
|
77
|
+
useGroqBeta = _ref.useGroqBeta,
|
|
77
78
|
_ref$documentLimit = _ref.documentLimit,
|
|
78
79
|
documentLimit = _ref$documentLimit === void 0 ? 3000 : _ref$documentLimit;
|
|
79
80
|
// Only construct/setup the store when `getStore()` is called
|
|
@@ -106,6 +107,7 @@ function createPreviewSubscriptionHook(_ref) {
|
|
|
106
107
|
projectId: projectId,
|
|
107
108
|
dataset: dataset,
|
|
108
109
|
documentLimit: documentLimit,
|
|
110
|
+
useGroqBeta: useGroqBeta,
|
|
109
111
|
listen: true,
|
|
110
112
|
overlayDrafts: true,
|
|
111
113
|
subscriptionThrottleMs: 10
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-sanity.esm.js","sources":["../src/client.ts","../src/imageUrlBuilder.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/portableText.tsx"],"sourcesContent":["import sanityClient from '@sanity/client'\nimport {ClientConfig} from './types'\n\nexport function createClient(config: ClientConfig) {\n return sanityClient(config)\n}\n","import getImageUrlBuilder from '@sanity/image-url'\nimport {ProjectConfig} from './types'\n\nexport function createImageUrlBuilder({projectId, dataset}: ProjectConfig) {\n return getImageUrlBuilder({projectId, dataset})\n}\n","export interface Aborter {\n abort(): void\n signal?: AbortSignal\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? {signal: undefined, abort: noop}\n : new AbortController()\n}\n\nfunction noop() {\n // intentional noop\n}\n","import {useEffect, useState} from 'react'\nimport {CurrentUser} from './types'\nimport {getAborter, Aborter} from './aborter'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(projectId: string, abort?: Aborter): Promise<CurrentUser | null> {\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort?.signal,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\n .catch((err: Error) => (err.name === 'AbortError' ? null : Promise.reject(err)))\n}\n\nfunction useCurrentUser(projectId: string) {\n const [data, setUser] = useState<CurrentUser | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n const aborter = getAborter()\n getCurrentUser(projectId, aborter).then(setUser).catch(setError)\n return () => aborter.abort()\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useDeepCompareEffectNoCheck as useDeepCompareEffect} from 'use-deep-compare-effect'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\ninterface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Record<string, unknown>\n initialData?: R\n}\n\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n documentLimit = 3000,\n}: ProjectConfig & {documentLimit?: number}) {\n // Only construct/setup the store when `getStore()` is called\n let store: Promise<GroqStore>\n\n return function usePreviewSubscription<R = any>(\n query: string,\n options: SubscriptionOptions<R> = {}\n ) {\n const {params = EMPTY_PARAMS, initialData, enabled} = options\n return useQuerySubscription<R>({\n getStore,\n projectId,\n query,\n params,\n initialData: initialData as any,\n enabled: enabled ? typeof window !== 'undefined' : false,\n })\n }\n\n function getStore() {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) =>\n groqStore({\n projectId,\n dataset,\n documentLimit,\n listen: true,\n overlayDrafts: true,\n subscriptionThrottleMs: 10,\n })\n )\n }\n return store\n }\n}\n\nfunction useQuerySubscription<R = any>(options: {\n getStore: () => Promise<GroqStore>\n projectId: string\n query: string\n params: Record<string, unknown>\n initialData: R\n enabled: boolean\n}) {\n const {getStore, projectId, query, params, initialData, enabled = false} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n\n // Use \"deep\" dependency comparison because params are often not _referentially_ equal,\n // but contains the same shallow properties, eg `{\"slug\": \"some-slug\"}`\n useDeepCompareEffect(() => {\n if (!enabled) {\n return () => {\n /* intentional noop */\n }\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter)\n .then((user) => {\n if (user) {\n return\n }\n\n // eslint-disable-next-line no-console\n console.warn('Not authenticated - preview not available')\n throw new Error('Not authenticated - preview not available')\n })\n .then(getStore)\n .then((store) => {\n subscription = store.subscribe(query, params, (err, result) => {\n if (err) {\n setError(err)\n } else {\n setData(result)\n }\n })\n })\n .catch(setError)\n .finally(() => setLoading(false))\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n","import React from 'react'\nimport SanityPortableText, {\n PortableTextProps,\n PortableTextSerializers,\n} from '@sanity/block-content-to-react'\nimport {ProjectConfig} from './types'\n\nexport function createPortableTextComponent({\n projectId,\n dataset,\n serializers,\n}: ProjectConfig & {serializers?: PortableTextSerializers}) {\n return function PortableText(props: PortableTextProps) {\n return (\n <SanityPortableText\n projectId={projectId}\n dataset={dataset}\n serializers={serializers}\n {...props}\n />\n )\n }\n}\n"],"names":["createClient","config","sanityClient","createImageUrlBuilder","projectId","dataset","getImageUrlBuilder","getAborter","AbortController","signal","undefined","abort","noop","createCurrentUserHook","useCurrentUser","getCurrentUser","fetch","credentials","then","res","json","id","catch","err","name","Promise","reject","useState","data","setUser","error","setError","useEffect","aborter","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useDeepCompareEffect","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","createPortableTextComponent","serializers","PortableText","props","React","SanityPortableText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"next-sanity.esm.js","sources":["../src/client.ts","../src/imageUrlBuilder.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/portableText.tsx"],"sourcesContent":["import sanityClient from '@sanity/client'\nimport {ClientConfig} from './types'\n\nexport function createClient(config: ClientConfig) {\n return sanityClient(config)\n}\n","import getImageUrlBuilder from '@sanity/image-url'\nimport {ProjectConfig} from './types'\n\nexport function createImageUrlBuilder({projectId, dataset}: ProjectConfig) {\n return getImageUrlBuilder({projectId, dataset})\n}\n","export interface Aborter {\n abort(): void\n signal?: AbortSignal\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? {signal: undefined, abort: noop}\n : new AbortController()\n}\n\nfunction noop() {\n // intentional noop\n}\n","import {useEffect, useState} from 'react'\nimport {CurrentUser} from './types'\nimport {getAborter, Aborter} from './aborter'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(projectId: string, abort?: Aborter): Promise<CurrentUser | null> {\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort?.signal,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\n .catch((err: Error) => (err.name === 'AbortError' ? null : Promise.reject(err)))\n}\n\nfunction useCurrentUser(projectId: string) {\n const [data, setUser] = useState<CurrentUser | null>()\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n const aborter = getAborter()\n getCurrentUser(projectId, aborter).then(setUser).catch(setError)\n return () => aborter.abort()\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useDeepCompareEffectNoCheck as useDeepCompareEffect} from 'use-deep-compare-effect'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\ninterface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Record<string, unknown>\n initialData?: R\n}\n\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n useGroqBeta,\n documentLimit = 3000,\n}: ProjectConfig & {documentLimit?: number; useGroqBeta?: boolean}) {\n // Only construct/setup the store when `getStore()` is called\n let store: Promise<GroqStore>\n\n return function usePreviewSubscription<R = any>(\n query: string,\n options: SubscriptionOptions<R> = {}\n ) {\n const {params = EMPTY_PARAMS, initialData, enabled} = options\n return useQuerySubscription<R>({\n getStore,\n projectId,\n query,\n params,\n initialData: initialData as any,\n enabled: enabled ? typeof window !== 'undefined' : false,\n })\n }\n\n function getStore() {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) =>\n groqStore({\n projectId,\n dataset,\n documentLimit,\n useGroqBeta,\n listen: true,\n overlayDrafts: true,\n subscriptionThrottleMs: 10,\n })\n )\n }\n return store\n }\n}\n\nfunction useQuerySubscription<R = any>(options: {\n getStore: () => Promise<GroqStore>\n projectId: string\n query: string\n params: Record<string, unknown>\n initialData: R\n enabled: boolean\n}) {\n const {getStore, projectId, query, params, initialData, enabled = false} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n\n // Use \"deep\" dependency comparison because params are often not _referentially_ equal,\n // but contains the same shallow properties, eg `{\"slug\": \"some-slug\"}`\n useDeepCompareEffect(() => {\n if (!enabled) {\n return () => {\n /* intentional noop */\n }\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter)\n .then((user) => {\n if (user) {\n return\n }\n\n // eslint-disable-next-line no-console\n console.warn('Not authenticated - preview not available')\n throw new Error('Not authenticated - preview not available')\n })\n .then(getStore)\n .then((store) => {\n subscription = store.subscribe(query, params, (err, result) => {\n if (err) {\n setError(err)\n } else {\n setData(result)\n }\n })\n })\n .catch(setError)\n .finally(() => setLoading(false))\n\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n","import React from 'react'\nimport SanityPortableText, {\n PortableTextProps,\n PortableTextSerializers,\n} from '@sanity/block-content-to-react'\nimport {ProjectConfig} from './types'\n\nexport function createPortableTextComponent({\n projectId,\n dataset,\n serializers,\n}: ProjectConfig & {serializers?: PortableTextSerializers}) {\n return function PortableText(props: PortableTextProps) {\n return (\n <SanityPortableText\n projectId={projectId}\n dataset={dataset}\n serializers={serializers}\n {...props}\n />\n )\n }\n}\n"],"names":["createClient","config","sanityClient","createImageUrlBuilder","projectId","dataset","getImageUrlBuilder","getAborter","AbortController","signal","undefined","abort","noop","createCurrentUserHook","useCurrentUser","getCurrentUser","fetch","credentials","then","res","json","id","catch","err","name","Promise","reject","useState","data","setUser","error","setError","useEffect","aborter","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","useGroqBeta","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useDeepCompareEffect","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","createPortableTextComponent","serializers","PortableText","props","React","SanityPortableText"],"mappings":"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"}
|
|
@@ -4,8 +4,9 @@ interface SubscriptionOptions<R = any> {
|
|
|
4
4
|
params?: Record<string, unknown>;
|
|
5
5
|
initialData?: R;
|
|
6
6
|
}
|
|
7
|
-
export declare function createPreviewSubscriptionHook({ projectId, dataset, documentLimit, }: ProjectConfig & {
|
|
7
|
+
export declare function createPreviewSubscriptionHook({ projectId, dataset, useGroqBeta, documentLimit, }: ProjectConfig & {
|
|
8
8
|
documentLimit?: number;
|
|
9
|
+
useGroqBeta?: boolean;
|
|
9
10
|
}): <R = any>(query: string, options?: SubscriptionOptions<R>) => {
|
|
10
11
|
data: R;
|
|
11
12
|
loading: boolean;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-sanity",
|
|
3
3
|
"description": "Sanity.io toolkit for Next.js",
|
|
4
|
-
"version": "0.4.0",
|
|
4
|
+
"version": "0.4.1-beta.0",
|
|
5
5
|
"author": "Sanity.io <hello@sanity.io>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"sideEffects": false,
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@sanity/block-content-to-react": "^3.0.0",
|
|
29
|
-
"@sanity/client": "^2.
|
|
30
|
-
"@sanity/groq-store": "^0.
|
|
31
|
-
"@sanity/image-url": "^0.
|
|
32
|
-
"groq": "^2.
|
|
29
|
+
"@sanity/client": "^2.23.1",
|
|
30
|
+
"@sanity/groq-store": "^0.3.0-beta.0",
|
|
31
|
+
"@sanity/image-url": "^1.0.1",
|
|
32
|
+
"groq": "^2.15.0",
|
|
33
33
|
"use-deep-compare-effect": "^1.6.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
package/src/useSubscription.ts
CHANGED
|
@@ -16,8 +16,9 @@ interface SubscriptionOptions<R = any> {
|
|
|
16
16
|
export function createPreviewSubscriptionHook({
|
|
17
17
|
projectId,
|
|
18
18
|
dataset,
|
|
19
|
+
useGroqBeta,
|
|
19
20
|
documentLimit = 3000,
|
|
20
|
-
}: ProjectConfig & {documentLimit?: number}) {
|
|
21
|
+
}: ProjectConfig & {documentLimit?: number; useGroqBeta?: boolean}) {
|
|
21
22
|
// Only construct/setup the store when `getStore()` is called
|
|
22
23
|
let store: Promise<GroqStore>
|
|
23
24
|
|
|
@@ -43,6 +44,7 @@ export function createPreviewSubscriptionHook({
|
|
|
43
44
|
projectId,
|
|
44
45
|
dataset,
|
|
45
46
|
documentLimit,
|
|
47
|
+
useGroqBeta,
|
|
46
48
|
listen: true,
|
|
47
49
|
overlayDrafts: true,
|
|
48
50
|
subscriptionThrottleMs: 10,
|