next-sanity 0.6.2 → 0.6.3
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/currentUser.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/next-sanity.cjs.development.js.map +1 -1
- package/dist/next-sanity.cjs.production.min.js.map +1 -1
- package/dist/next-sanity.esm.js.map +1 -1
- package/dist/pages/[[...studio]].d.ts +2 -0
- package/package.json +63 -61
- package/src/client.ts +1 -1
- package/src/currentUser.ts +2 -1
- package/src/index.ts +2 -1
- package/src/useSubscription.ts +4 -3
package/README.md
CHANGED
|
@@ -77,7 +77,7 @@ export const config = {
|
|
|
77
77
|
* Authenticated request (like preview) will always bypass the CDN
|
|
78
78
|
**/
|
|
79
79
|
useCdn: process.env.NODE_ENV === 'production',
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
/**
|
|
82
82
|
* OPTIONAL config to enable authentication with custom token
|
|
83
83
|
* You might need this if you host the preview on a different url than Sanity Studio
|
package/dist/currentUser.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import type { Aborter as AborterForExport } from './aborter';
|
|
|
3
3
|
export declare type ClientConfig = ClientConfigForExport;
|
|
4
4
|
export declare type SanityClient = SanityClientForExport;
|
|
5
5
|
export declare type Aborter = AborterForExport;
|
|
6
|
-
export * from './types';
|
|
7
6
|
export * from './client';
|
|
8
7
|
export { createCurrentUserHook } from './currentUser';
|
|
8
|
+
export * from './types';
|
|
9
9
|
export { createPreviewSubscriptionHook } from './useSubscription';
|
|
10
10
|
export { default as groq } from 'groq';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-sanity.cjs.development.js","sources":["../src/client.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts"],"sourcesContent":["import sanityClient from '@sanity/client'\nimport type {ClientConfig, SanityClient} from '@sanity/client'\n\nexport function createClient(config: ClientConfig): SanityClient {\n return sanityClient(config)\n}\n","export interface Aborter {\n abort(): void\n signal: AbortSignal\n}\n\nclass MockAbortController {\n _signal = {aborted: false}\n get signal() {\n return this._signal as AbortSignal\n }\n abort() {\n this._signal.aborted = true\n }\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? new MockAbortController()\n : new AbortController()\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 // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(\n projectId: string,\n abort: Aborter,\n token?: string\n): Promise<CurrentUser | null> {\n const headers = token ? {Authorization: `Bearer ${token}`} : undefined\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort.signal,\n headers,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\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)\n .then(setUser)\n .catch((err: Error) => err.name !== 'AbortError' && setError(err))\n\n return () => {\n aborter.abort()\n }\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState, useEffect, useMemo} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter, Aborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\nexport type Params = Record<string, unknown>\nexport interface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Params\n initialData?: R\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n token,\n EventSource,\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 token,\n })\n }\n\n function getStore(abort: Aborter) {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) => {\n // Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure\n if (abort.signal.aborted) {\n const error = new Error('Cancelling groq store creation')\n // This ensures we can skip it in the catch block same way\n error.name = 'AbortError'\n return Promise.reject(error)\n }\n\n return groqStore({\n projectId,\n dataset,\n documentLimit,\n token,\n EventSource,\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: (abort: Aborter) => Promise<GroqStore>\n projectId: string\n query: string\n params: Params\n initialData: R\n enabled: boolean\n token?: string\n}) {\n const {getStore, projectId, query, initialData, enabled = false, token} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n const params = useParams(options.params)\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 useEffect(() => {\n if (!enabled) {\n return\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter, token)\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(aborter))\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((err: Error) => (err.name === 'AbortError' ? null : setError(err)))\n .finally(() => setLoading(false))\n\n // eslint-disable-next-line consistent-return\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled, projectId, token])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n\n// Return params that are stable with deep equal as long as the key order is the same\nfunction useParams(params: Params): Params {\n const stringifiedParams = useMemo(() => JSON.stringify(params), [params])\n return useMemo(() => JSON.parse(stringifiedParams), [stringifiedParams])\n}\n"],"names":["createClient","config","sanityClient","MockAbortController","aborted","abort","_signal","getAborter","AbortController","createCurrentUserHook","projectId","useCurrentUser","getCurrentUser","token","headers","Authorization","undefined","fetch","credentials","signal","then","res","json","id","useState","data","setUser","error","setError","useEffect","aborter","catch","err","name","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","dataset","EventSource","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","Error","Promise","reject","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useParams","subscription","user","console","warn","subscribe","result","finally","unsubscribe","stringifiedParams","useMemo","JSON","stringify","parse"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAGgBA,aAAaC;EAC3B,OAAOC,YAAY,CAACD,MAAD,CAAnB;AACD;;;;;;;;;;;;;;;;;;;;;ICAKE;EAAN;IACE,YAAA,GAAU;MAACC,OAAO,EAAE;KAApB;;;;;SAIAC,QAAA;IACE,KAAKC,OAAL,CAAaF,OAAb,GAAuB,IAAvB;;;;;SAJF;MACE,OAAO,KAAKE,OAAZ;;;;;;;AAOJ,SAAgBC;EACd,OAAO,OAAOC,eAAP,KAA2B,WAA3B,GACH,IAAIL,mBAAJ,EADG,GAEH,IAAIK,eAAJ,EAFJ;AAGD;;SCfeC;MAAuBC,iBAAAA;;EAErC,OAAO;IAAA,OAAMC,cAAc,CAACD,SAAD,CAApB;GAAP;AACD;AAED,SAAgBE,eACdF,WACAL,OACAQ;EAEA,IAAMC,OAAO,GAAGD,KAAK,GAAG;IAACE,aAAa,cAAYF;GAA7B,GAAwCG,SAA7D;EACA,OAAOC,KAAK,cAAYP,SAAZ,iCAAmD;IAC7DQ,WAAW,EAAE,SADgD;IAE7DC,MAAM,EAAEd,KAAK,CAACc,MAF+C;IAG7DL,OAAO,EAAPA;GAHU,CAAL,CAKJM,IALI,CAKC,UAACC,GAAD;IAAA,OAASA,GAAG,CAACC,IAAJ,EAAT;GALD,EAMJF,IANI,CAMC,UAACC,GAAD;IAAA,OAAUA,GAAG,QAAH,IAAAA,GAAG,CAAEE,EAAL,GAAUF,GAAV,GAAgB,IAA1B;GAND,CAAP;AAOD;;AAED,SAASV,cAAT,CAAwBD,SAAxB;EACE,gBAAwBc,cAAQ,EAAhC;MAAOC,IAAP;MAAaC,OAAb;;EACA,iBAA0BF,cAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EAEAC,eAAS,CAAC;IACR,IAAMC,OAAO,GAAGvB,UAAU,EAA1B;IACAK,cAAc,CAACF,SAAD,EAAYoB,OAAZ,CAAd,CACGV,IADH,CACQM,OADR,EAEGK,KAFH,CAES,UAACC,GAAD;MAAA,OAAgBA,GAAG,CAACC,IAAJ,KAAa,YAAb,IAA6BL,QAAQ,CAACI,GAAD,CAArD;KAFT;IAIA,OAAO;MACLF,OAAO,CAACzB,KAAR;KADF;GANO,EASN,CAACK,SAAD,CATM,CAAT;EAWA,OAAO;IAACe,IAAI,EAAJA,IAAD;IAAOE,KAAK,EAALA,KAAP;IAAcO,OAAO,EAAET,IAAI,KAAK,IAAT,IAAiB,CAACE;GAAhD;AACD;;AClCD,IAAMQ,YAAY,GAAG,EAArB;;AAUA,SAAgBC;MACd1B,iBAAAA;MACA2B,eAAAA;MACAxB,aAAAA;MACAyB,mBAAAA;gCACAC;MAAAA,gDAAgB;;EAGhB,IAAIC,KAAJ;EAEA,OAAO,SAASC,sBAAT,CACLC,KADK,EAELC,OAFK;QAELA;MAAAA,UAAkC;;;IAElC,eAAsDA,OAAtD;mCAAOC,MAAP;QAAOA,MAAP,gCAAgBT,YAAhB;QAA8BU,WAA9B,YAA8BA,WAA9B;QAA2CC,OAA3C,YAA2CA,OAA3C;IACA,OAAOC,oBAAoB,CAAI;MAC7BC,QAAQ,EAARA,QAD6B;MAE7BtC,SAAS,EAATA,SAF6B;MAG7BgC,KAAK,EAALA,KAH6B;MAI7BE,MAAM,EAANA,MAJ6B;MAK7BC,WAAW,EAAEA,WALgB;MAM7BC,OAAO,EAAEA,OAAO,GAAG,OAAOG,MAAP,KAAkB,WAArB,GAAmC,KANtB;MAO7BpC,KAAK,EAALA;KAPyB,CAA3B;GALF;;EAgBA,SAASmC,QAAT,CAAkB3C,KAAlB;IACE,IAAI,CAACmC,KAAL,EAAY;MACVA,KAAK,GAAG,mEAAO,oBAAP,QAA6BpB,IAA7B,CAAkC;YAAE8B,kBAAAA;;;QAE1C,IAAI7C,KAAK,CAACc,MAAN,CAAaf,OAAjB,EAA0B;UACxB,IAAMuB,KAAK,GAAG,IAAIwB,KAAJ,CAAU,gCAAV,CAAd,CADwB;;UAGxBxB,KAAK,CAACM,IAAN,GAAa,YAAb;UACA,OAAOmB,OAAO,CAACC,MAAR,CAAe1B,KAAf,CAAP;;;QAGF,OAAOuB,SAAS,CAAC;UACfxC,SAAS,EAATA,SADe;UAEf2B,OAAO,EAAPA,OAFe;UAGfE,aAAa,EAAbA,aAHe;UAIf1B,KAAK,EAALA,KAJe;UAKfyB,WAAW,EAAXA,WALe;UAMfgB,MAAM,EAAE,IANO;UAOfC,aAAa,EAAE,IAPA;UAQfC,sBAAsB,EAAE;SARV,CAAhB;OATM,CAAR;;;IAqBF,OAAOhB,KAAP;;AAEH;;AAED,SAASO,oBAAT,CAAuCJ,OAAvC;EASE,IAAOK,QAAP,GAA0EL,OAA1E,CAAOK,QAAP;MAAiBtC,SAAjB,GAA0EiC,OAA1E,CAAiBjC,SAAjB;MAA4BgC,KAA5B,GAA0EC,OAA1E,CAA4BD,KAA5B;MAAmCG,WAAnC,GAA0EF,OAA1E,CAAmCE,WAAnC;yBAA0EF,OAA1E,CAAgDG,OAAhD;MAAgDA,OAAhD,iCAA0D,KAA1D;MAAiEjC,KAAjE,GAA0E8B,OAA1E,CAAiE9B,KAAjE;;EACA,gBAA0BW,cAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EACA,iBAA8BJ,cAAQ,CAAC,KAAD,CAAtC;MAAOU,OAAP;MAAgBuB,UAAhB;;EACA,iBAAwBjC,cAAQ,EAAhC;MAAOC,IAAP;MAAaiC,OAAb;;EACA,IAAMd,MAAM,GAAGe,SAAS,CAAChB,OAAO,CAACC,MAAT,CAAxB;;;EAIAf,eAAS,CAAC;IACR,IAAI,CAACiB,OAAL,EAAc;MACZ;;;IAGFW,UAAU,CAAC,IAAD,CAAV;IAEA,IAAM3B,OAAO,GAAGvB,UAAU,EAA1B;IACA,IAAIqD,YAAJ;IACAhD,cAAc,CAACF,SAAD,EAAYoB,OAAZ,EAAqBjB,KAArB,CAAd,CACGO,IADH,CACQ,UAACyC,IAAD;MACJ,IAAIA,IAAJ,EAAU;QACR;;;;MAIFC,OAAO,CAACC,IAAR,CAAa,2CAAb;MACA,MAAM,IAAIZ,KAAJ,CAAU,2CAAV,CAAN;KARJ,EAUG/B,IAVH,CAUQ;MAAA,OAAM4B,QAAQ,CAAClB,OAAD,CAAd;KAVR,EAWGV,IAXH,CAWQ,UAACoB,KAAD;MACJoB,YAAY,GAAGpB,KAAK,CAACwB,SAAN,CAAgBtB,KAAhB,EAAuBE,MAAvB,EAA+B,UAACZ,GAAD,EAAMiC,MAAN;QAC5C,IAAIjC,GAAJ,EAAS;UACPJ,QAAQ,CAACI,GAAD,CAAR;SADF,MAEO;UACL0B,OAAO,CAACO,MAAD,CAAP;;OAJW,CAAf;KAZJ,EAoBGlC,KApBH,CAoBS,UAACC,GAAD;MAAA,OAAiBA,GAAG,CAACC,IAAJ,KAAa,YAAb,GAA4B,IAA5B,GAAmCL,QAAQ,CAACI,GAAD,CAA5D;KApBT,EAqBGkC,OArBH,CAqBW;MAAA,OAAMT,UAAU,CAAC,KAAD,CAAhB;KArBX;;IAwBA,OAAO;MACL,IAAIG,YAAJ,EAAkB;QAChBA,YAAY,CAACO,WAAb;;;MAGFrC,OAAO,CAACzB,KAAR;KALF;GAjCO,EAwCN,CAAC2C,QAAD,EAAWN,KAAX,EAAkBE,MAAlB,EAA0BE,OAA1B,EAAmCpC,SAAnC,EAA8CG,KAA9C,CAxCM,CAAT;EA0CA,OAAO;IACLY,IAAI,EAAE,OAAOA,IAAP,KAAgB,WAAhB,GAA8BoB,WAA9B,GAA4CpB,IAD7C;IAELS,OAAO,EAAPA,OAFK;IAGLP,KAAK,EAALA;GAHF;AAKD;;;AAGD,SAASgC,SAAT,CAAmBf,MAAnB;EACE,IAAMwB,iBAAiB,GAAGC,aAAO,CAAC;IAAA,OAAMC,IAAI,CAACC,SAAL,CAAe3B,MAAf,CAAN;GAAD,EAA+B,CAACA,MAAD,CAA/B,CAAjC;EACA,OAAOyB,aAAO,CAAC;IAAA,OAAMC,IAAI,CAACE,KAAL,CAAWJ,iBAAX,CAAN;GAAD,EAAsC,CAACA,iBAAD,CAAtC,CAAd;AACD;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"next-sanity.cjs.development.js","sources":["../src/client.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts"],"sourcesContent":["import type {ClientConfig, SanityClient} from '@sanity/client'\nimport sanityClient from '@sanity/client'\n\nexport function createClient(config: ClientConfig): SanityClient {\n return sanityClient(config)\n}\n","export interface Aborter {\n abort(): void\n signal: AbortSignal\n}\n\nclass MockAbortController {\n _signal = {aborted: false}\n get signal() {\n return this._signal as AbortSignal\n }\n abort() {\n this._signal.aborted = true\n }\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? new MockAbortController()\n : new AbortController()\n}\n","import {useEffect, useState} from 'react'\n\nimport {Aborter, getAborter} from './aborter'\nimport {CurrentUser} from './types'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(\n projectId: string,\n abort: Aborter,\n token?: string\n): Promise<CurrentUser | null> {\n const headers = token ? {Authorization: `Bearer ${token}`} : undefined\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort.signal,\n headers,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\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)\n .then(setUser)\n .catch((err: Error) => err.name !== 'AbortError' && setError(err))\n\n return () => {\n aborter.abort()\n }\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useEffect, useMemo, useState} from 'react'\n\nimport {Aborter, getAborter} from './aborter'\nimport {getCurrentUser} from './currentUser'\nimport {ProjectConfig} from './types'\n\nconst EMPTY_PARAMS = {}\n\nexport type Params = Record<string, unknown>\nexport interface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Params\n initialData?: R\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n token,\n EventSource,\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 token,\n })\n }\n\n function getStore(abort: Aborter) {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) => {\n // Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure\n if (abort.signal.aborted) {\n const error = new Error('Cancelling groq store creation')\n // This ensures we can skip it in the catch block same way\n error.name = 'AbortError'\n return Promise.reject(error)\n }\n\n return groqStore({\n projectId,\n dataset,\n documentLimit,\n token,\n EventSource,\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: (abort: Aborter) => Promise<GroqStore>\n projectId: string\n query: string\n params: Params\n initialData: R\n enabled: boolean\n token?: string\n}) {\n const {getStore, projectId, query, initialData, enabled = false, token} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n const params = useParams(options.params)\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 useEffect(() => {\n if (!enabled) {\n return\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter, token)\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(aborter))\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((err: Error) => (err.name === 'AbortError' ? null : setError(err)))\n .finally(() => setLoading(false))\n\n // eslint-disable-next-line consistent-return\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled, projectId, token])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n\n// Return params that are stable with deep equal as long as the key order is the same\nfunction useParams(params: Params): Params {\n const stringifiedParams = useMemo(() => JSON.stringify(params), [params])\n return useMemo(() => JSON.parse(stringifiedParams), [stringifiedParams])\n}\n"],"names":["createClient","config","sanityClient","MockAbortController","aborted","abort","_signal","getAborter","AbortController","createCurrentUserHook","projectId","useCurrentUser","getCurrentUser","token","headers","Authorization","undefined","fetch","credentials","signal","then","res","json","id","useState","data","setUser","error","setError","useEffect","aborter","catch","err","name","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","dataset","EventSource","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","Error","Promise","reject","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useParams","subscription","user","console","warn","subscribe","result","finally","unsubscribe","stringifiedParams","useMemo","JSON","stringify","parse"],"mappings":"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"}
|
|
@@ -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"],"sourcesContent":["export interface Aborter {\n abort(): void\n signal: AbortSignal\n}\n\nclass MockAbortController {\n _signal = {aborted: false}\n get signal() {\n return this._signal as AbortSignal\n }\n abort() {\n this._signal.aborted = true\n }\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? new MockAbortController()\n : new AbortController()\n}\n","import {useEffect, useState} from 'react'\nimport {
|
|
1
|
+
{"version":3,"file":"next-sanity.cjs.production.min.js","sources":["../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts","../src/client.ts"],"sourcesContent":["export interface Aborter {\n abort(): void\n signal: AbortSignal\n}\n\nclass MockAbortController {\n _signal = {aborted: false}\n get signal() {\n return this._signal as AbortSignal\n }\n abort() {\n this._signal.aborted = true\n }\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? new MockAbortController()\n : new AbortController()\n}\n","import {useEffect, useState} from 'react'\n\nimport {Aborter, getAborter} from './aborter'\nimport {CurrentUser} from './types'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(\n projectId: string,\n abort: Aborter,\n token?: string\n): Promise<CurrentUser | null> {\n const headers = token ? {Authorization: `Bearer ${token}`} : undefined\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort.signal,\n headers,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\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)\n .then(setUser)\n .catch((err: Error) => err.name !== 'AbortError' && setError(err))\n\n return () => {\n aborter.abort()\n }\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useEffect, useMemo, useState} from 'react'\n\nimport {Aborter, getAborter} from './aborter'\nimport {getCurrentUser} from './currentUser'\nimport {ProjectConfig} from './types'\n\nconst EMPTY_PARAMS = {}\n\nexport type Params = Record<string, unknown>\nexport interface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Params\n initialData?: R\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n token,\n EventSource,\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 token,\n })\n }\n\n function getStore(abort: Aborter) {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) => {\n // Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure\n if (abort.signal.aborted) {\n const error = new Error('Cancelling groq store creation')\n // This ensures we can skip it in the catch block same way\n error.name = 'AbortError'\n return Promise.reject(error)\n }\n\n return groqStore({\n projectId,\n dataset,\n documentLimit,\n token,\n EventSource,\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: (abort: Aborter) => Promise<GroqStore>\n projectId: string\n query: string\n params: Params\n initialData: R\n enabled: boolean\n token?: string\n}) {\n const {getStore, projectId, query, initialData, enabled = false, token} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n const params = useParams(options.params)\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 useEffect(() => {\n if (!enabled) {\n return\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter, token)\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(aborter))\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((err: Error) => (err.name === 'AbortError' ? null : setError(err)))\n .finally(() => setLoading(false))\n\n // eslint-disable-next-line consistent-return\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled, projectId, token])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n\n// Return params that are stable with deep equal as long as the key order is the same\nfunction useParams(params: Params): Params {\n const stringifiedParams = useMemo(() => JSON.stringify(params), [params])\n return useMemo(() => JSON.parse(stringifiedParams), [stringifiedParams])\n}\n","import type {ClientConfig, SanityClient} from '@sanity/client'\nimport sanityClient from '@sanity/client'\n\nexport function createClient(config: ClientConfig): SanityClient {\n return sanityClient(config)\n}\n"],"names":["MockAbortController","this","aborted","abort","_signal","getAborter","AbortController","getCurrentUser","projectId","token","fetch","credentials","signal","headers","Authorization","undefined","then","res","json","id","EMPTY_PARAMS","config","sanityClient","useState","data","setUser","error","setError","useEffect","aborter","catch","err","name","loading","useCurrentUser","store","dataset","EventSource","documentLimit","query","options","params","getStore","initialData","enabled","setLoading","setData","stringifiedParams","useMemo","JSON","stringify","parse","useParams","subscription","user","console","warn","Error","subscribe","result","finally","unsubscribe","useQuerySubscription","window","groqStore","Promise","reject","listen","overlayDrafts","subscriptionThrottleMs"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-sanity.esm.js","sources":["../src/client.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts"],"sourcesContent":["import sanityClient from '@sanity/client'\nimport type {ClientConfig, SanityClient} from '@sanity/client'\n\nexport function createClient(config: ClientConfig): SanityClient {\n return sanityClient(config)\n}\n","export interface Aborter {\n abort(): void\n signal: AbortSignal\n}\n\nclass MockAbortController {\n _signal = {aborted: false}\n get signal() {\n return this._signal as AbortSignal\n }\n abort() {\n this._signal.aborted = true\n }\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? new MockAbortController()\n : new AbortController()\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 // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(\n projectId: string,\n abort: Aborter,\n token?: string\n): Promise<CurrentUser | null> {\n const headers = token ? {Authorization: `Bearer ${token}`} : undefined\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort.signal,\n headers,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\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)\n .then(setUser)\n .catch((err: Error) => err.name !== 'AbortError' && setError(err))\n\n return () => {\n aborter.abort()\n }\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {useState, useEffect, useMemo} from 'react'\nimport {GroqStore, Subscription} from '@sanity/groq-store'\nimport {ProjectConfig} from './types'\nimport {getCurrentUser} from './currentUser'\nimport {getAborter, Aborter} from './aborter'\n\nconst EMPTY_PARAMS = {}\n\nexport type Params = Record<string, unknown>\nexport interface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Params\n initialData?: R\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n token,\n EventSource,\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 token,\n })\n }\n\n function getStore(abort: Aborter) {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) => {\n // Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure\n if (abort.signal.aborted) {\n const error = new Error('Cancelling groq store creation')\n // This ensures we can skip it in the catch block same way\n error.name = 'AbortError'\n return Promise.reject(error)\n }\n\n return groqStore({\n projectId,\n dataset,\n documentLimit,\n token,\n EventSource,\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: (abort: Aborter) => Promise<GroqStore>\n projectId: string\n query: string\n params: Params\n initialData: R\n enabled: boolean\n token?: string\n}) {\n const {getStore, projectId, query, initialData, enabled = false, token} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n const params = useParams(options.params)\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 useEffect(() => {\n if (!enabled) {\n return\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter, token)\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(aborter))\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((err: Error) => (err.name === 'AbortError' ? null : setError(err)))\n .finally(() => setLoading(false))\n\n // eslint-disable-next-line consistent-return\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled, projectId, token])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n\n// Return params that are stable with deep equal as long as the key order is the same\nfunction useParams(params: Params): Params {\n const stringifiedParams = useMemo(() => JSON.stringify(params), [params])\n return useMemo(() => JSON.parse(stringifiedParams), [stringifiedParams])\n}\n"],"names":["createClient","config","sanityClient","MockAbortController","aborted","abort","_signal","getAborter","AbortController","createCurrentUserHook","projectId","useCurrentUser","getCurrentUser","token","headers","Authorization","undefined","fetch","credentials","signal","then","res","json","id","useState","data","setUser","error","setError","useEffect","aborter","catch","err","name","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","dataset","EventSource","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","Error","Promise","reject","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useParams","subscription","user","console","warn","subscribe","result","finally","unsubscribe","stringifiedParams","useMemo","JSON","stringify","parse"],"mappings":";;;;SAGgBA,aAAaC;EAC3B,OAAOC,YAAY,CAACD,MAAD,CAAnB;AACD;;;;;;;;;;;;;;;;;;;;;ICAKE;EAAN;IACE,YAAA,GAAU;MAACC,OAAO,EAAE;KAApB;;;;;SAIAC,QAAA;IACE,KAAKC,OAAL,CAAaF,OAAb,GAAuB,IAAvB;;;;;SAJF;MACE,OAAO,KAAKE,OAAZ;;;;;;;AAOJ,SAAgBC;EACd,OAAO,OAAOC,eAAP,KAA2B,WAA3B,GACH,IAAIL,mBAAJ,EADG,GAEH,IAAIK,eAAJ,EAFJ;AAGD;;SCfeC;MAAuBC,iBAAAA;;EAErC,OAAO;IAAA,OAAMC,cAAc,CAACD,SAAD,CAApB;GAAP;AACD;AAED,SAAgBE,eACdF,WACAL,OACAQ;EAEA,IAAMC,OAAO,GAAGD,KAAK,GAAG;IAACE,aAAa,cAAYF;GAA7B,GAAwCG,SAA7D;EACA,OAAOC,KAAK,cAAYP,SAAZ,iCAAmD;IAC7DQ,WAAW,EAAE,SADgD;IAE7DC,MAAM,EAAEd,KAAK,CAACc,MAF+C;IAG7DL,OAAO,EAAPA;GAHU,CAAL,CAKJM,IALI,CAKC,UAACC,GAAD;IAAA,OAASA,GAAG,CAACC,IAAJ,EAAT;GALD,EAMJF,IANI,CAMC,UAACC,GAAD;IAAA,OAAUA,GAAG,QAAH,IAAAA,GAAG,CAAEE,EAAL,GAAUF,GAAV,GAAgB,IAA1B;GAND,CAAP;AAOD;;AAED,SAASV,cAAT,CAAwBD,SAAxB;EACE,gBAAwBc,QAAQ,EAAhC;MAAOC,IAAP;MAAaC,OAAb;;EACA,iBAA0BF,QAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EAEAC,SAAS,CAAC;IACR,IAAMC,OAAO,GAAGvB,UAAU,EAA1B;IACAK,cAAc,CAACF,SAAD,EAAYoB,OAAZ,CAAd,CACGV,IADH,CACQM,OADR,EAEGK,KAFH,CAES,UAACC,GAAD;MAAA,OAAgBA,GAAG,CAACC,IAAJ,KAAa,YAAb,IAA6BL,QAAQ,CAACI,GAAD,CAArD;KAFT;IAIA,OAAO;MACLF,OAAO,CAACzB,KAAR;KADF;GANO,EASN,CAACK,SAAD,CATM,CAAT;EAWA,OAAO;IAACe,IAAI,EAAJA,IAAD;IAAOE,KAAK,EAALA,KAAP;IAAcO,OAAO,EAAET,IAAI,KAAK,IAAT,IAAiB,CAACE;GAAhD;AACD;;AClCD,IAAMQ,YAAY,GAAG,EAArB;;AAUA,SAAgBC;MACd1B,iBAAAA;MACA2B,eAAAA;MACAxB,aAAAA;MACAyB,mBAAAA;gCACAC;MAAAA,gDAAgB;;EAGhB,IAAIC,KAAJ;EAEA,OAAO,SAASC,sBAAT,CACLC,KADK,EAELC,OAFK;QAELA;MAAAA,UAAkC;;;IAElC,eAAsDA,OAAtD;mCAAOC,MAAP;QAAOA,MAAP,gCAAgBT,YAAhB;QAA8BU,WAA9B,YAA8BA,WAA9B;QAA2CC,OAA3C,YAA2CA,OAA3C;IACA,OAAOC,oBAAoB,CAAI;MAC7BC,QAAQ,EAARA,QAD6B;MAE7BtC,SAAS,EAATA,SAF6B;MAG7BgC,KAAK,EAALA,KAH6B;MAI7BE,MAAM,EAANA,MAJ6B;MAK7BC,WAAW,EAAEA,WALgB;MAM7BC,OAAO,EAAEA,OAAO,GAAG,OAAOG,MAAP,KAAkB,WAArB,GAAmC,KANtB;MAO7BpC,KAAK,EAALA;KAPyB,CAA3B;GALF;;EAgBA,SAASmC,QAAT,CAAkB3C,KAAlB;IACE,IAAI,CAACmC,KAAL,EAAY;MACVA,KAAK,GAAG,OAAO,oBAAP,EAA6BpB,IAA7B,CAAkC;YAAE8B,kBAAAA;;;QAE1C,IAAI7C,KAAK,CAACc,MAAN,CAAaf,OAAjB,EAA0B;UACxB,IAAMuB,KAAK,GAAG,IAAIwB,KAAJ,CAAU,gCAAV,CAAd,CADwB;;UAGxBxB,KAAK,CAACM,IAAN,GAAa,YAAb;UACA,OAAOmB,OAAO,CAACC,MAAR,CAAe1B,KAAf,CAAP;;;QAGF,OAAOuB,SAAS,CAAC;UACfxC,SAAS,EAATA,SADe;UAEf2B,OAAO,EAAPA,OAFe;UAGfE,aAAa,EAAbA,aAHe;UAIf1B,KAAK,EAALA,KAJe;UAKfyB,WAAW,EAAXA,WALe;UAMfgB,MAAM,EAAE,IANO;UAOfC,aAAa,EAAE,IAPA;UAQfC,sBAAsB,EAAE;SARV,CAAhB;OATM,CAAR;;;IAqBF,OAAOhB,KAAP;;AAEH;;AAED,SAASO,oBAAT,CAAuCJ,OAAvC;EASE,IAAOK,QAAP,GAA0EL,OAA1E,CAAOK,QAAP;MAAiBtC,SAAjB,GAA0EiC,OAA1E,CAAiBjC,SAAjB;MAA4BgC,KAA5B,GAA0EC,OAA1E,CAA4BD,KAA5B;MAAmCG,WAAnC,GAA0EF,OAA1E,CAAmCE,WAAnC;yBAA0EF,OAA1E,CAAgDG,OAAhD;MAAgDA,OAAhD,iCAA0D,KAA1D;MAAiEjC,KAAjE,GAA0E8B,OAA1E,CAAiE9B,KAAjE;;EACA,gBAA0BW,QAAQ,EAAlC;MAAOG,KAAP;MAAcC,QAAd;;EACA,iBAA8BJ,QAAQ,CAAC,KAAD,CAAtC;MAAOU,OAAP;MAAgBuB,UAAhB;;EACA,iBAAwBjC,QAAQ,EAAhC;MAAOC,IAAP;MAAaiC,OAAb;;EACA,IAAMd,MAAM,GAAGe,SAAS,CAAChB,OAAO,CAACC,MAAT,CAAxB;;;EAIAf,SAAS,CAAC;IACR,IAAI,CAACiB,OAAL,EAAc;MACZ;;;IAGFW,UAAU,CAAC,IAAD,CAAV;IAEA,IAAM3B,OAAO,GAAGvB,UAAU,EAA1B;IACA,IAAIqD,YAAJ;IACAhD,cAAc,CAACF,SAAD,EAAYoB,OAAZ,EAAqBjB,KAArB,CAAd,CACGO,IADH,CACQ,UAACyC,IAAD;MACJ,IAAIA,IAAJ,EAAU;QACR;;;;MAIFC,OAAO,CAACC,IAAR,CAAa,2CAAb;MACA,MAAM,IAAIZ,KAAJ,CAAU,2CAAV,CAAN;KARJ,EAUG/B,IAVH,CAUQ;MAAA,OAAM4B,QAAQ,CAAClB,OAAD,CAAd;KAVR,EAWGV,IAXH,CAWQ,UAACoB,KAAD;MACJoB,YAAY,GAAGpB,KAAK,CAACwB,SAAN,CAAgBtB,KAAhB,EAAuBE,MAAvB,EAA+B,UAACZ,GAAD,EAAMiC,MAAN;QAC5C,IAAIjC,GAAJ,EAAS;UACPJ,QAAQ,CAACI,GAAD,CAAR;SADF,MAEO;UACL0B,OAAO,CAACO,MAAD,CAAP;;OAJW,CAAf;KAZJ,EAoBGlC,KApBH,CAoBS,UAACC,GAAD;MAAA,OAAiBA,GAAG,CAACC,IAAJ,KAAa,YAAb,GAA4B,IAA5B,GAAmCL,QAAQ,CAACI,GAAD,CAA5D;KApBT,EAqBGkC,OArBH,CAqBW;MAAA,OAAMT,UAAU,CAAC,KAAD,CAAhB;KArBX;;IAwBA,OAAO;MACL,IAAIG,YAAJ,EAAkB;QAChBA,YAAY,CAACO,WAAb;;;MAGFrC,OAAO,CAACzB,KAAR;KALF;GAjCO,EAwCN,CAAC2C,QAAD,EAAWN,KAAX,EAAkBE,MAAlB,EAA0BE,OAA1B,EAAmCpC,SAAnC,EAA8CG,KAA9C,CAxCM,CAAT;EA0CA,OAAO;IACLY,IAAI,EAAE,OAAOA,IAAP,KAAgB,WAAhB,GAA8BoB,WAA9B,GAA4CpB,IAD7C;IAELS,OAAO,EAAPA,OAFK;IAGLP,KAAK,EAALA;GAHF;AAKD;;;AAGD,SAASgC,SAAT,CAAmBf,MAAnB;EACE,IAAMwB,iBAAiB,GAAGC,OAAO,CAAC;IAAA,OAAMC,IAAI,CAACC,SAAL,CAAe3B,MAAf,CAAN;GAAD,EAA+B,CAACA,MAAD,CAA/B,CAAjC;EACA,OAAOyB,OAAO,CAAC;IAAA,OAAMC,IAAI,CAACE,KAAL,CAAWJ,iBAAX,CAAN;GAAD,EAAsC,CAACA,iBAAD,CAAtC,CAAd;AACD;;;;"}
|
|
1
|
+
{"version":3,"file":"next-sanity.esm.js","sources":["../src/client.ts","../src/aborter.ts","../src/currentUser.ts","../src/useSubscription.ts"],"sourcesContent":["import type {ClientConfig, SanityClient} from '@sanity/client'\nimport sanityClient from '@sanity/client'\n\nexport function createClient(config: ClientConfig): SanityClient {\n return sanityClient(config)\n}\n","export interface Aborter {\n abort(): void\n signal: AbortSignal\n}\n\nclass MockAbortController {\n _signal = {aborted: false}\n get signal() {\n return this._signal as AbortSignal\n }\n abort() {\n this._signal.aborted = true\n }\n}\n\nexport function getAborter(): Aborter {\n return typeof AbortController === 'undefined'\n ? new MockAbortController()\n : new AbortController()\n}\n","import {useEffect, useState} from 'react'\n\nimport {Aborter, getAborter} from './aborter'\nimport {CurrentUser} from './types'\n\nexport function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n return () => useCurrentUser(projectId)\n}\n\nexport function getCurrentUser(\n projectId: string,\n abort: Aborter,\n token?: string\n): Promise<CurrentUser | null> {\n const headers = token ? {Authorization: `Bearer ${token}`} : undefined\n return fetch(`https://${projectId}.api.sanity.io/v1/users/me`, {\n credentials: 'include',\n signal: abort.signal,\n headers,\n })\n .then((res) => res.json())\n .then((res) => (res?.id ? res : null))\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)\n .then(setUser)\n .catch((err: Error) => err.name !== 'AbortError' && setError(err))\n\n return () => {\n aborter.abort()\n }\n }, [projectId])\n\n return {data, error, loading: data !== null || !error}\n}\n","import {GroqStore, Subscription} from '@sanity/groq-store'\nimport {useEffect, useMemo, useState} from 'react'\n\nimport {Aborter, getAborter} from './aborter'\nimport {getCurrentUser} from './currentUser'\nimport {ProjectConfig} from './types'\n\nconst EMPTY_PARAMS = {}\n\nexport type Params = Record<string, unknown>\nexport interface SubscriptionOptions<R = any> {\n enabled?: boolean\n params?: Params\n initialData?: R\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function createPreviewSubscriptionHook({\n projectId,\n dataset,\n token,\n EventSource,\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 token,\n })\n }\n\n function getStore(abort: Aborter) {\n if (!store) {\n store = import('@sanity/groq-store').then(({groqStore}) => {\n // Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure\n if (abort.signal.aborted) {\n const error = new Error('Cancelling groq store creation')\n // This ensures we can skip it in the catch block same way\n error.name = 'AbortError'\n return Promise.reject(error)\n }\n\n return groqStore({\n projectId,\n dataset,\n documentLimit,\n token,\n EventSource,\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: (abort: Aborter) => Promise<GroqStore>\n projectId: string\n query: string\n params: Params\n initialData: R\n enabled: boolean\n token?: string\n}) {\n const {getStore, projectId, query, initialData, enabled = false, token} = options\n const [error, setError] = useState<Error>()\n const [loading, setLoading] = useState(false)\n const [data, setData] = useState<R>()\n const params = useParams(options.params)\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 useEffect(() => {\n if (!enabled) {\n return\n }\n\n setLoading(true)\n\n const aborter = getAborter()\n let subscription: Subscription | undefined\n getCurrentUser(projectId, aborter, token)\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(aborter))\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((err: Error) => (err.name === 'AbortError' ? null : setError(err)))\n .finally(() => setLoading(false))\n\n // eslint-disable-next-line consistent-return\n return () => {\n if (subscription) {\n subscription.unsubscribe()\n }\n\n aborter.abort()\n }\n }, [getStore, query, params, enabled, projectId, token])\n\n return {\n data: typeof data === 'undefined' ? initialData : data,\n loading,\n error,\n }\n}\n\n// Return params that are stable with deep equal as long as the key order is the same\nfunction useParams(params: Params): Params {\n const stringifiedParams = useMemo(() => JSON.stringify(params), [params])\n return useMemo(() => JSON.parse(stringifiedParams), [stringifiedParams])\n}\n"],"names":["createClient","config","sanityClient","MockAbortController","aborted","abort","_signal","getAborter","AbortController","createCurrentUserHook","projectId","useCurrentUser","getCurrentUser","token","headers","Authorization","undefined","fetch","credentials","signal","then","res","json","id","useState","data","setUser","error","setError","useEffect","aborter","catch","err","name","loading","EMPTY_PARAMS","createPreviewSubscriptionHook","dataset","EventSource","documentLimit","store","usePreviewSubscription","query","options","params","initialData","enabled","useQuerySubscription","getStore","window","groqStore","Error","Promise","reject","listen","overlayDrafts","subscriptionThrottleMs","setLoading","setData","useParams","subscription","user","console","warn","subscribe","result","finally","unsubscribe","stringifiedParams","useMemo","JSON","stringify","parse"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,28 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-sanity",
|
|
3
|
+
"version": "0.6.3",
|
|
3
4
|
"description": "Sanity.io toolkit for Next.js",
|
|
4
|
-
"
|
|
5
|
-
|
|
5
|
+
"keywords": [
|
|
6
|
+
"sanity",
|
|
7
|
+
"sanity.io",
|
|
8
|
+
"next.js",
|
|
9
|
+
"studio",
|
|
10
|
+
"studio-v3"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/sanity-io/next-sanity#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/sanity-io/next-sanity/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+ssh://git@github.com/sanity-io/next-sanity.git"
|
|
19
|
+
},
|
|
6
20
|
"license": "MIT",
|
|
21
|
+
"author": "Sanity.io <hello@sanity.io>",
|
|
7
22
|
"sideEffects": false,
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"source": "./src/index.ts",
|
|
26
|
+
"require": "./dist/index.js",
|
|
27
|
+
"default": "./dist/next-sanity.esm.js"
|
|
28
|
+
},
|
|
29
|
+
"./package.json": "./package.json"
|
|
30
|
+
},
|
|
8
31
|
"main": "dist/index.js",
|
|
9
|
-
"typings": "dist/index.d.ts",
|
|
10
32
|
"module": "dist/next-sanity.esm.js",
|
|
33
|
+
"typings": "dist/index.d.ts",
|
|
11
34
|
"files": [
|
|
12
35
|
"dist",
|
|
36
|
+
"lib",
|
|
13
37
|
"src"
|
|
14
38
|
],
|
|
15
|
-
"engines": {
|
|
16
|
-
"node": ">=12"
|
|
17
|
-
},
|
|
18
39
|
"scripts": {
|
|
19
|
-
"start": "tsdx watch",
|
|
20
40
|
"build": "tsdx build",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"prepublishOnly": "
|
|
25
|
-
"
|
|
41
|
+
"coverage": "npm test -- --coverage",
|
|
42
|
+
"format": "npm run prettier -- --write . && npm run lint -- --fix",
|
|
43
|
+
"lint": "eslint --ignore-path .gitignore .",
|
|
44
|
+
"prepublishOnly": "npm run lint && npm run build && npm test",
|
|
45
|
+
"prettier": "npx prettier --ignore-path .gitignore",
|
|
46
|
+
"start": "tsdx watch",
|
|
47
|
+
"test": "jest",
|
|
48
|
+
"type-check": "tsc --noEmit"
|
|
49
|
+
},
|
|
50
|
+
"browserslist": "chrome 59, safari 11, firefox 56, edge 14, ie 11",
|
|
51
|
+
"prettier": {
|
|
52
|
+
"bracketSpacing": false,
|
|
53
|
+
"printWidth": 98,
|
|
54
|
+
"semi": false,
|
|
55
|
+
"singleQuote": true
|
|
26
56
|
},
|
|
27
57
|
"dependencies": {
|
|
28
58
|
"@sanity/client": "^3.3.3",
|
|
@@ -32,69 +62,41 @@
|
|
|
32
62
|
"devDependencies": {
|
|
33
63
|
"@async-fn/jest": "^1.5.3",
|
|
34
64
|
"@testing-library/react-hooks": "^7.0.2",
|
|
35
|
-
"@types/
|
|
65
|
+
"@types/eventsource": "^1.1.9",
|
|
66
|
+
"@types/jest": "^27.5.2",
|
|
36
67
|
"@types/react": "^17.0.17",
|
|
37
68
|
"@types/react-dom": "^17.0.9",
|
|
38
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
39
|
-
"
|
|
40
|
-
"eslint": "^
|
|
69
|
+
"@typescript-eslint/eslint-plugin": "^5.33.0",
|
|
70
|
+
"eslint": "^8.21.0",
|
|
71
|
+
"eslint-config-next": "^12.2.4",
|
|
41
72
|
"eslint-config-prettier": "^8.5.0",
|
|
42
|
-
"eslint-config-
|
|
43
|
-
"eslint-config-sanity": "^5.1.0",
|
|
73
|
+
"eslint-config-sanity": "^6.0.0",
|
|
44
74
|
"eslint-plugin-prettier": "^4.2.1",
|
|
75
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
76
|
+
"eslint-plugin-simple-import-sort": "^7.0.0",
|
|
77
|
+
"jest": "^28.1.3",
|
|
78
|
+
"jest-environment-jsdom": "^28.1.3",
|
|
79
|
+
"next": "^12.2.4",
|
|
80
|
+
"parcel": "^2.7.0",
|
|
45
81
|
"prettier": "^2.7.1",
|
|
82
|
+
"prettier-plugin-packagejson": "^2.2.18",
|
|
46
83
|
"react": ">=17.0.2",
|
|
47
84
|
"react-dom": "^17.0.2",
|
|
48
85
|
"semantic-release": "^19.0.3",
|
|
49
86
|
"tsdx": "^0.14.1",
|
|
50
|
-
"tslib": "^2.4.0",
|
|
51
87
|
"typescript": "^4.7.4"
|
|
52
88
|
},
|
|
53
89
|
"peerDependencies": {
|
|
54
|
-
"react": "
|
|
55
|
-
},
|
|
56
|
-
"repository": {
|
|
57
|
-
"type": "git",
|
|
58
|
-
"url": "git+ssh://git@github.com/sanity-io/next-sanity.git"
|
|
59
|
-
},
|
|
60
|
-
"bugs": {
|
|
61
|
-
"url": "https://github.com/sanity-io/next-sanity/issues"
|
|
90
|
+
"react": "^16.3 || ^17"
|
|
62
91
|
},
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
"sanity",
|
|
66
|
-
"sanity.io",
|
|
67
|
-
"next.js"
|
|
68
|
-
],
|
|
69
|
-
"eslintConfig": {
|
|
70
|
-
"root": true,
|
|
71
|
-
"env": {
|
|
72
|
-
"node": true,
|
|
73
|
-
"browser": true
|
|
74
|
-
},
|
|
75
|
-
"parser": "@typescript-eslint/parser",
|
|
76
|
-
"extends": [
|
|
77
|
-
"plugin:@typescript-eslint/recommended",
|
|
78
|
-
"sanity",
|
|
79
|
-
"sanity/react",
|
|
80
|
-
"sanity/typescript",
|
|
81
|
-
"prettier"
|
|
82
|
-
],
|
|
83
|
-
"rules": {
|
|
84
|
-
"prettier/prettier": "error",
|
|
85
|
-
"@typescript-eslint/explicit-module-boundary-types": "off"
|
|
86
|
-
},
|
|
87
|
-
"plugins": [
|
|
88
|
-
"@typescript-eslint",
|
|
89
|
-
"prettier",
|
|
90
|
-
"react"
|
|
91
|
-
]
|
|
92
|
+
"engines": {
|
|
93
|
+
"node": ">=12"
|
|
92
94
|
},
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
"targets": {
|
|
96
|
+
"studio": {
|
|
97
|
+
"distDir": "./lib",
|
|
98
|
+
"isLibrary": true,
|
|
99
|
+
"source": "./src/studio/index.ts"
|
|
98
100
|
}
|
|
99
101
|
}
|
|
100
102
|
}
|
package/src/client.ts
CHANGED
package/src/currentUser.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {useEffect, useState} from 'react'
|
|
2
|
+
|
|
3
|
+
import {Aborter, getAborter} from './aborter'
|
|
2
4
|
import {CurrentUser} from './types'
|
|
3
|
-
import {getAborter, Aborter} from './aborter'
|
|
4
5
|
|
|
5
6
|
export function createCurrentUserHook({projectId}: {projectId: string; dataset?: string}) {
|
|
6
7
|
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type {
|
|
|
2
2
|
ClientConfig as ClientConfigForExport,
|
|
3
3
|
SanityClient as SanityClientForExport,
|
|
4
4
|
} from '@sanity/client'
|
|
5
|
+
|
|
5
6
|
import type {Aborter as AborterForExport} from './aborter'
|
|
6
7
|
|
|
7
8
|
// Re-export to support --isolatedMode and other strict mode features
|
|
@@ -9,8 +10,8 @@ export type ClientConfig = ClientConfigForExport
|
|
|
9
10
|
export type SanityClient = SanityClientForExport
|
|
10
11
|
export type Aborter = AborterForExport
|
|
11
12
|
|
|
12
|
-
export * from './types'
|
|
13
13
|
export * from './client'
|
|
14
14
|
export {createCurrentUserHook} from './currentUser'
|
|
15
|
+
export * from './types'
|
|
15
16
|
export {createPreviewSubscriptionHook} from './useSubscription'
|
|
16
17
|
export {default as groq} from 'groq'
|
package/src/useSubscription.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {useState, useEffect, useMemo} from 'react'
|
|
2
1
|
import {GroqStore, Subscription} from '@sanity/groq-store'
|
|
3
|
-
import {
|
|
2
|
+
import {useEffect, useMemo, useState} from 'react'
|
|
3
|
+
|
|
4
|
+
import {Aborter, getAborter} from './aborter'
|
|
4
5
|
import {getCurrentUser} from './currentUser'
|
|
5
|
-
import {
|
|
6
|
+
import {ProjectConfig} from './types'
|
|
6
7
|
|
|
7
8
|
const EMPTY_PARAMS = {}
|
|
8
9
|
|