next-sanity 0.8.3 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/next-sanity.cjs.development.js +37 -60
- 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 +37 -60
- package/dist/next-sanity.esm.js.map +1 -1
- package/dist/studio/NextStudio.d.ts +5 -1
- package/dist/studio/NextStudioGlobalStyle.d.ts +1 -0
- package/dist/studio/NextStudioNoScript.d.ts +0 -1
- package/dist/studio/ServerStyleSheetDocument.d.ts +1 -1
- package/dist/studio/utils.d.ts +13 -6
- package/lib/cjs/studio.js +18 -5
- package/lib/cjs/studio.js.map +1 -1
- package/lib/dts/studio/NextStudio.d.ts +5 -1
- package/lib/dts/studio/NextStudioGlobalStyle.d.ts +1 -0
- package/lib/dts/studio/NextStudioNoScript.d.ts +0 -1
- package/lib/dts/studio/ServerStyleSheetDocument.d.ts +1 -1
- package/lib/dts/studio/utils.d.ts +13 -6
- package/lib/esm/studio.js +19 -6
- package/lib/esm/studio.js.map +1 -1
- package/package.json +21 -21
- package/src/studio/NextStudio.tsx +8 -0
- package/src/studio/NextStudioGlobalStyle.ts +9 -0
- package/src/studio/utils.ts +24 -11
|
@@ -40,7 +40,6 @@ function _defineProperties(target, props) {
|
|
|
40
40
|
Object.defineProperty(target, descriptor.key, descriptor);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
|
|
44
43
|
function _createClass(Constructor, protoProps, staticProps) {
|
|
45
44
|
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
46
45
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
@@ -56,23 +55,18 @@ var MockAbortController = /*#__PURE__*/function () {
|
|
|
56
55
|
aborted: false
|
|
57
56
|
};
|
|
58
57
|
}
|
|
59
|
-
|
|
60
58
|
var _proto = MockAbortController.prototype;
|
|
61
|
-
|
|
62
59
|
_proto.abort = function abort() {
|
|
63
60
|
this._signal.aborted = true;
|
|
64
61
|
};
|
|
65
|
-
|
|
66
62
|
_createClass(MockAbortController, [{
|
|
67
63
|
key: "signal",
|
|
68
64
|
get: function get() {
|
|
69
65
|
return this._signal;
|
|
70
66
|
}
|
|
71
67
|
}]);
|
|
72
|
-
|
|
73
68
|
return MockAbortController;
|
|
74
69
|
}();
|
|
75
|
-
|
|
76
70
|
function getAborter() {
|
|
77
71
|
return typeof AbortController === 'undefined' ? new MockAbortController() : new AbortController();
|
|
78
72
|
}
|
|
@@ -98,16 +92,13 @@ function getCurrentUser(projectId, abort, token) {
|
|
|
98
92
|
return res != null && res.id ? res : null;
|
|
99
93
|
});
|
|
100
94
|
}
|
|
101
|
-
|
|
102
95
|
function useCurrentUser(projectId) {
|
|
103
96
|
var _useState = react.useState(),
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
97
|
+
data = _useState[0],
|
|
98
|
+
setUser = _useState[1];
|
|
107
99
|
var _useState2 = react.useState(),
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
100
|
+
error = _useState2[0],
|
|
101
|
+
setError = _useState2[1];
|
|
111
102
|
react.useEffect(function () {
|
|
112
103
|
var aborter = getAborter();
|
|
113
104
|
getCurrentUser(projectId, aborter).then(setUser).catch(function (err) {
|
|
@@ -124,27 +115,26 @@ function useCurrentUser(projectId) {
|
|
|
124
115
|
};
|
|
125
116
|
}
|
|
126
117
|
|
|
127
|
-
var EMPTY_PARAMS = {};
|
|
128
|
-
|
|
118
|
+
var EMPTY_PARAMS = {};
|
|
119
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
129
120
|
function createPreviewSubscriptionHook(_ref) {
|
|
130
121
|
var projectId = _ref.projectId,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
122
|
+
dataset = _ref.dataset,
|
|
123
|
+
token = _ref.token,
|
|
124
|
+
EventSource = _ref.EventSource,
|
|
125
|
+
_ref$documentLimit = _ref.documentLimit,
|
|
126
|
+
documentLimit = _ref$documentLimit === void 0 ? 3000 : _ref$documentLimit;
|
|
136
127
|
// Only construct/setup the store when `getStore()` is called
|
|
137
128
|
var store;
|
|
138
129
|
return function usePreviewSubscription(query, options) {
|
|
139
130
|
if (options === void 0) {
|
|
140
131
|
options = {};
|
|
141
132
|
}
|
|
142
|
-
|
|
143
133
|
var _options = options,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
134
|
+
_options$params = _options.params,
|
|
135
|
+
params = _options$params === void 0 ? EMPTY_PARAMS : _options$params,
|
|
136
|
+
initialData = _options.initialData,
|
|
137
|
+
enabled = _options.enabled;
|
|
148
138
|
return useQuerySubscription({
|
|
149
139
|
getStore: getStore,
|
|
150
140
|
projectId: projectId,
|
|
@@ -155,20 +145,17 @@ function createPreviewSubscriptionHook(_ref) {
|
|
|
155
145
|
token: token
|
|
156
146
|
});
|
|
157
147
|
};
|
|
158
|
-
|
|
159
148
|
function getStore(abort) {
|
|
160
149
|
if (!store) {
|
|
161
150
|
store = new Promise(function (resolve) { resolve(_interopNamespace(require('@sanity/groq-store'))); }).then(function (_ref2) {
|
|
162
151
|
var groqStore = _ref2.groqStore;
|
|
163
|
-
|
|
164
152
|
// Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure
|
|
165
153
|
if (abort.signal.aborted) {
|
|
166
|
-
var error = new Error('Cancelling groq store creation');
|
|
167
|
-
|
|
154
|
+
var error = new Error('Cancelling groq store creation');
|
|
155
|
+
// This ensures we can skip it in the catch block same way
|
|
168
156
|
error.name = 'AbortError';
|
|
169
157
|
return Promise.reject(error);
|
|
170
158
|
}
|
|
171
|
-
|
|
172
159
|
return groqStore({
|
|
173
160
|
projectId: projectId,
|
|
174
161
|
dataset: dataset,
|
|
@@ -181,49 +168,41 @@ function createPreviewSubscriptionHook(_ref) {
|
|
|
181
168
|
});
|
|
182
169
|
});
|
|
183
170
|
}
|
|
184
|
-
|
|
185
171
|
return store;
|
|
186
172
|
}
|
|
187
173
|
}
|
|
188
|
-
|
|
189
174
|
function useQuerySubscription(options) {
|
|
190
175
|
var getStore = options.getStore,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
176
|
+
projectId = options.projectId,
|
|
177
|
+
query = options.query,
|
|
178
|
+
initialData = options.initialData,
|
|
179
|
+
_options$enabled = options.enabled,
|
|
180
|
+
enabled = _options$enabled === void 0 ? false : _options$enabled,
|
|
181
|
+
token = options.token;
|
|
198
182
|
var _useState = react.useState(),
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
183
|
+
error = _useState[0],
|
|
184
|
+
setError = _useState[1];
|
|
202
185
|
var _useState2 = react.useState(false),
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
186
|
+
loading = _useState2[0],
|
|
187
|
+
setLoading = _useState2[1];
|
|
206
188
|
var _useState3 = react.useState(),
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
189
|
+
data = _useState3[0],
|
|
190
|
+
setData = _useState3[1];
|
|
191
|
+
var params = useParams(options.params);
|
|
192
|
+
// Use "deep" dependency comparison because params are often not _referentially_ equal,
|
|
211
193
|
// but contains the same shallow properties, eg `{"slug": "some-slug"}`
|
|
212
|
-
|
|
213
194
|
react.useEffect(function () {
|
|
214
195
|
if (!enabled) {
|
|
215
196
|
return;
|
|
216
197
|
}
|
|
217
|
-
|
|
218
198
|
setLoading(true);
|
|
219
199
|
var aborter = getAborter();
|
|
220
200
|
var subscription;
|
|
221
201
|
getCurrentUser(projectId, aborter, token).then(function (user) {
|
|
222
202
|
if (user) {
|
|
223
203
|
return;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
|
|
204
|
+
}
|
|
205
|
+
// eslint-disable-next-line no-console
|
|
227
206
|
console.warn('Not authenticated - preview not available');
|
|
228
207
|
throw new Error('Not authenticated - preview not available');
|
|
229
208
|
}).then(function () {
|
|
@@ -240,13 +219,12 @@ function useQuerySubscription(options) {
|
|
|
240
219
|
return err.name === 'AbortError' ? null : setError(err);
|
|
241
220
|
}).finally(function () {
|
|
242
221
|
return setLoading(false);
|
|
243
|
-
});
|
|
244
|
-
|
|
222
|
+
});
|
|
223
|
+
// eslint-disable-next-line consistent-return
|
|
245
224
|
return function () {
|
|
246
225
|
if (subscription) {
|
|
247
226
|
subscription.unsubscribe();
|
|
248
227
|
}
|
|
249
|
-
|
|
250
228
|
aborter.abort();
|
|
251
229
|
};
|
|
252
230
|
}, [getStore, query, params, enabled, projectId, token]);
|
|
@@ -255,9 +233,8 @@ function useQuerySubscription(options) {
|
|
|
255
233
|
loading: loading,
|
|
256
234
|
error: error
|
|
257
235
|
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
236
|
+
}
|
|
237
|
+
// Return params that are stable with deep equal as long as the key order is the same
|
|
261
238
|
function useParams(params) {
|
|
262
239
|
var stringifiedParams = react.useMemo(function () {
|
|
263
240
|
return JSON.stringify(params);
|
|
@@ -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 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
|
+
{"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'\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":"qNAKMA,aAAN,aACEC,aAAU,CAACC,SAAS,
|
|
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","key","get","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","_ref$documentLimit","documentLimit","query","options","_options$params","params","getStore","initialData","_options$enabled","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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"}
|
package/dist/next-sanity.esm.js
CHANGED
|
@@ -15,7 +15,6 @@ function _defineProperties(target, props) {
|
|
|
15
15
|
Object.defineProperty(target, descriptor.key, descriptor);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
|
|
19
18
|
function _createClass(Constructor, protoProps, staticProps) {
|
|
20
19
|
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
21
20
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
@@ -31,23 +30,18 @@ var MockAbortController = /*#__PURE__*/function () {
|
|
|
31
30
|
aborted: false
|
|
32
31
|
};
|
|
33
32
|
}
|
|
34
|
-
|
|
35
33
|
var _proto = MockAbortController.prototype;
|
|
36
|
-
|
|
37
34
|
_proto.abort = function abort() {
|
|
38
35
|
this._signal.aborted = true;
|
|
39
36
|
};
|
|
40
|
-
|
|
41
37
|
_createClass(MockAbortController, [{
|
|
42
38
|
key: "signal",
|
|
43
39
|
get: function get() {
|
|
44
40
|
return this._signal;
|
|
45
41
|
}
|
|
46
42
|
}]);
|
|
47
|
-
|
|
48
43
|
return MockAbortController;
|
|
49
44
|
}();
|
|
50
|
-
|
|
51
45
|
function getAborter() {
|
|
52
46
|
return typeof AbortController === 'undefined' ? new MockAbortController() : new AbortController();
|
|
53
47
|
}
|
|
@@ -73,16 +67,13 @@ function getCurrentUser(projectId, abort, token) {
|
|
|
73
67
|
return res != null && res.id ? res : null;
|
|
74
68
|
});
|
|
75
69
|
}
|
|
76
|
-
|
|
77
70
|
function useCurrentUser(projectId) {
|
|
78
71
|
var _useState = useState(),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
data = _useState[0],
|
|
73
|
+
setUser = _useState[1];
|
|
82
74
|
var _useState2 = useState(),
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
75
|
+
error = _useState2[0],
|
|
76
|
+
setError = _useState2[1];
|
|
86
77
|
useEffect(function () {
|
|
87
78
|
var aborter = getAborter();
|
|
88
79
|
getCurrentUser(projectId, aborter).then(setUser).catch(function (err) {
|
|
@@ -99,27 +90,26 @@ function useCurrentUser(projectId) {
|
|
|
99
90
|
};
|
|
100
91
|
}
|
|
101
92
|
|
|
102
|
-
var EMPTY_PARAMS = {};
|
|
103
|
-
|
|
93
|
+
var EMPTY_PARAMS = {};
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
104
95
|
function createPreviewSubscriptionHook(_ref) {
|
|
105
96
|
var projectId = _ref.projectId,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
97
|
+
dataset = _ref.dataset,
|
|
98
|
+
token = _ref.token,
|
|
99
|
+
EventSource = _ref.EventSource,
|
|
100
|
+
_ref$documentLimit = _ref.documentLimit,
|
|
101
|
+
documentLimit = _ref$documentLimit === void 0 ? 3000 : _ref$documentLimit;
|
|
111
102
|
// Only construct/setup the store when `getStore()` is called
|
|
112
103
|
var store;
|
|
113
104
|
return function usePreviewSubscription(query, options) {
|
|
114
105
|
if (options === void 0) {
|
|
115
106
|
options = {};
|
|
116
107
|
}
|
|
117
|
-
|
|
118
108
|
var _options = options,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
109
|
+
_options$params = _options.params,
|
|
110
|
+
params = _options$params === void 0 ? EMPTY_PARAMS : _options$params,
|
|
111
|
+
initialData = _options.initialData,
|
|
112
|
+
enabled = _options.enabled;
|
|
123
113
|
return useQuerySubscription({
|
|
124
114
|
getStore: getStore,
|
|
125
115
|
projectId: projectId,
|
|
@@ -130,20 +120,17 @@ function createPreviewSubscriptionHook(_ref) {
|
|
|
130
120
|
token: token
|
|
131
121
|
});
|
|
132
122
|
};
|
|
133
|
-
|
|
134
123
|
function getStore(abort) {
|
|
135
124
|
if (!store) {
|
|
136
125
|
store = import('@sanity/groq-store').then(function (_ref2) {
|
|
137
126
|
var groqStore = _ref2.groqStore;
|
|
138
|
-
|
|
139
127
|
// Skip creating the groq store if we've been unmounted to save memory and reduce gc pressure
|
|
140
128
|
if (abort.signal.aborted) {
|
|
141
|
-
var error = new Error('Cancelling groq store creation');
|
|
142
|
-
|
|
129
|
+
var error = new Error('Cancelling groq store creation');
|
|
130
|
+
// This ensures we can skip it in the catch block same way
|
|
143
131
|
error.name = 'AbortError';
|
|
144
132
|
return Promise.reject(error);
|
|
145
133
|
}
|
|
146
|
-
|
|
147
134
|
return groqStore({
|
|
148
135
|
projectId: projectId,
|
|
149
136
|
dataset: dataset,
|
|
@@ -156,49 +143,41 @@ function createPreviewSubscriptionHook(_ref) {
|
|
|
156
143
|
});
|
|
157
144
|
});
|
|
158
145
|
}
|
|
159
|
-
|
|
160
146
|
return store;
|
|
161
147
|
}
|
|
162
148
|
}
|
|
163
|
-
|
|
164
149
|
function useQuerySubscription(options) {
|
|
165
150
|
var getStore = options.getStore,
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
151
|
+
projectId = options.projectId,
|
|
152
|
+
query = options.query,
|
|
153
|
+
initialData = options.initialData,
|
|
154
|
+
_options$enabled = options.enabled,
|
|
155
|
+
enabled = _options$enabled === void 0 ? false : _options$enabled,
|
|
156
|
+
token = options.token;
|
|
173
157
|
var _useState = useState(),
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
158
|
+
error = _useState[0],
|
|
159
|
+
setError = _useState[1];
|
|
177
160
|
var _useState2 = useState(false),
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
161
|
+
loading = _useState2[0],
|
|
162
|
+
setLoading = _useState2[1];
|
|
181
163
|
var _useState3 = useState(),
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
164
|
+
data = _useState3[0],
|
|
165
|
+
setData = _useState3[1];
|
|
166
|
+
var params = useParams(options.params);
|
|
167
|
+
// Use "deep" dependency comparison because params are often not _referentially_ equal,
|
|
186
168
|
// but contains the same shallow properties, eg `{"slug": "some-slug"}`
|
|
187
|
-
|
|
188
169
|
useEffect(function () {
|
|
189
170
|
if (!enabled) {
|
|
190
171
|
return;
|
|
191
172
|
}
|
|
192
|
-
|
|
193
173
|
setLoading(true);
|
|
194
174
|
var aborter = getAborter();
|
|
195
175
|
var subscription;
|
|
196
176
|
getCurrentUser(projectId, aborter, token).then(function (user) {
|
|
197
177
|
if (user) {
|
|
198
178
|
return;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
179
|
+
}
|
|
180
|
+
// eslint-disable-next-line no-console
|
|
202
181
|
console.warn('Not authenticated - preview not available');
|
|
203
182
|
throw new Error('Not authenticated - preview not available');
|
|
204
183
|
}).then(function () {
|
|
@@ -215,13 +194,12 @@ function useQuerySubscription(options) {
|
|
|
215
194
|
return err.name === 'AbortError' ? null : setError(err);
|
|
216
195
|
}).finally(function () {
|
|
217
196
|
return setLoading(false);
|
|
218
|
-
});
|
|
219
|
-
|
|
197
|
+
});
|
|
198
|
+
// eslint-disable-next-line consistent-return
|
|
220
199
|
return function () {
|
|
221
200
|
if (subscription) {
|
|
222
201
|
subscription.unsubscribe();
|
|
223
202
|
}
|
|
224
|
-
|
|
225
203
|
aborter.abort();
|
|
226
204
|
};
|
|
227
205
|
}, [getStore, query, params, enabled, projectId, token]);
|
|
@@ -230,9 +208,8 @@ function useQuerySubscription(options) {
|
|
|
230
208
|
loading: loading,
|
|
231
209
|
error: error
|
|
232
210
|
};
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
211
|
+
}
|
|
212
|
+
// Return params that are stable with deep equal as long as the key order is the same
|
|
236
213
|
function useParams(params) {
|
|
237
214
|
var stringifiedParams = useMemo(function () {
|
|
238
215
|
return JSON.stringify(params);
|
|
@@ -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 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
|
+
{"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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"}
|
|
@@ -35,6 +35,10 @@ export interface NextStudioProps extends StudioProps {
|
|
|
35
35
|
* Sets the background color of <html>
|
|
36
36
|
*/
|
|
37
37
|
unstable__bg?: NextStudioGlobalStyleProps['bg'];
|
|
38
|
+
/**
|
|
39
|
+
* Sets the font-family of #__next
|
|
40
|
+
*/
|
|
41
|
+
unstable__fontFamily?: NextStudioGlobalStyleProps['fontFamily'];
|
|
38
42
|
/**
|
|
39
43
|
* Don't load the favicon meta tags
|
|
40
44
|
*/
|
|
@@ -44,4 +48,4 @@ export interface NextStudioProps extends StudioProps {
|
|
|
44
48
|
*/
|
|
45
49
|
unstable__noNoScript?: boolean;
|
|
46
50
|
}
|
|
47
|
-
export declare const NextStudio: import("react").MemoExoticComponent<({ children, config, unstable__noGlobalStyle, unstable__noTailwindSvgFix, unstable__head, unstable__document_title, unstable__bg, unstable__noFavicons, unstable__noNoScript, ...props }: NextStudioProps) => JSX.Element>;
|
|
51
|
+
export declare const NextStudio: import("react").MemoExoticComponent<({ children, config, unstable__noGlobalStyle, unstable__noTailwindSvgFix, unstable__head, unstable__document_title, unstable__bg, unstable__fontFamily, unstable__noFavicons, unstable__noNoScript, ...props }: NextStudioProps) => JSX.Element>;
|
|
@@ -29,7 +29,7 @@ import Document, { DocumentContext } from 'next/document';
|
|
|
29
29
|
*/
|
|
30
30
|
export declare class ServerStyleSheetDocument extends Document {
|
|
31
31
|
static getInitialProps(ctx: DocumentContext): Promise<{
|
|
32
|
-
styles: (
|
|
32
|
+
styles: (import("react").ReactFragment | JSX.Element | undefined)[];
|
|
33
33
|
html: string;
|
|
34
34
|
head?: (JSX.Element | null)[] | undefined;
|
|
35
35
|
}>;
|