@devite/nuxt-sanity 2.19.0 → 2.19.1

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/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devite/nuxt-sanity",
3
- "version": "2.19.0",
3
+ "version": "2.19.1",
4
4
  "configKey": "sanity",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
package/dist/module.mjs CHANGED
@@ -3,7 +3,7 @@ import defu from 'defu';
3
3
  import { randomBytes } from 'node:crypto';
4
4
 
5
5
  const name = "@devite/nuxt-sanity";
6
- const version = "2.19.0";
6
+ const version = "2.19.1";
7
7
 
8
8
  const CONFIG_KEY = "sanity";
9
9
  const module$1 = defineNuxtModule({
@@ -6,11 +6,6 @@ export interface UseSanityQueryOptions<T> extends AsyncDataOptions<T> {
6
6
  client?: 'default' | 'minimal';
7
7
  perspective?: 'drafts' | 'preview-drafts' | 'published' | 'raw';
8
8
  }
9
- export interface SanityQueryResponse<T> {
10
- data: T;
11
- sourceMap?: ContentSourceMap;
12
- encodeDataAttribute?: EncodeDataAttributeFunction;
13
- }
14
9
  export type AsyncSanityData<T, E> = _AsyncSanityData<T, E> & Promise<_AsyncSanityData<T, E>>;
15
10
  interface AsyncDataExecuteOptions {
16
11
  _initial?: boolean;
@@ -26,6 +21,6 @@ export interface _AsyncSanityData<T, E> {
26
21
  error: Ref<E | null>;
27
22
  status: Ref<AsyncDataRequestStatus>;
28
23
  }
29
- export declare function useLazySanityQuery<T = unknown, E = Error>(query: string, params?: QueryParams, options?: UseSanityQueryOptions<SanityQueryResponse<T | null>>): AsyncSanityData<T | null, E>;
30
- export declare function useSanityQuery<T = unknown, E = Error>(query: string, _params?: QueryParams, options?: UseSanityQueryOptions<SanityQueryResponse<T | null>>, lazy?: boolean): AsyncSanityData<T | null, E>;
24
+ export declare function useLazySanityQuery<T = unknown, E = Error>(query: string, params?: QueryParams, options?: UseSanityQueryOptions<T | null>): AsyncSanityData<T | null, E>;
25
+ export declare function useSanityQuery<T = unknown, E = Error>(query: string, _params?: QueryParams, options?: UseSanityQueryOptions<T | null>, lazy?: boolean): AsyncSanityData<T | null, E>;
31
26
  export {};
@@ -4,6 +4,7 @@ import { reactive, ref } from "vue";
4
4
  import defu from "defu";
5
5
  import useSanityClient from "../utils/useSanityClient.js";
6
6
  import { useSanityVisualEditingState } from "./visual_editing_state.js";
7
+ import { useNuxtApp } from "#imports";
7
8
  import { useRuntimeConfig } from "#imports";
8
9
  export function useLazySanityQuery(query, params = {}, options = {}) {
9
10
  return useSanityQuery(query, params, options, true);
@@ -19,37 +20,45 @@ export function useSanityQuery(query, _params = {}, options = {}, lazy = false)
19
20
  options.watch ||= [];
20
21
  options.watch.push(reactiveParams);
21
22
  }
22
- const data = ref(null);
23
23
  const sourceMap = ref(null);
24
24
  const encodeDataAttribute = ref(() => {
25
25
  });
26
26
  function updateRefs(resultData, resultSourceMap, resultEncodeDataAttribute) {
27
- data.value = resultData;
27
+ pendingData.data.value = resultData;
28
28
  sourceMap.value = resultSourceMap || null;
29
29
  if (resultEncodeDataAttribute) encodeDataAttribute.value = resultEncodeDataAttribute;
30
30
  }
31
- const fetchFunc = () => new Promise((resolve) => {
32
- (visualEditingEnabled ? import("../utils/visualEditing/fetchSanityData") : import("../utils/default/fetchSanityData")).then(async ({ fetchSanityData }) => {
33
- const client = import.meta.server ? (await import("../server/utils/useSanityClient.js")).default(clientType, sanityConfig) : await useSanityClient(visualEditingEnabled, clientType, sanityConfig);
34
- function onDataUpdate(resultData, resultSourceMap, resultEncodeDataAttribute) {
35
- if (resultEncodeDataAttribute)
36
- encodeDataAttribute.value = resultEncodeDataAttribute;
37
- resolve({ data: resultData, sourceMap: resultSourceMap });
38
- }
39
- const fetchSanityDataFunc = fetchSanityData;
40
- fetchSanityDataFunc(query, reactiveParams, client, perspective, onDataUpdate);
31
+ const fetchFunc = () => {
32
+ const sanityFetchPromises = useNuxtApp()._sanityFetchPromises ||= /* @__PURE__ */ new Map();
33
+ if (sanityFetchPromises.has(key)) {
34
+ return sanityFetchPromises.get(key);
35
+ }
36
+ const fetchPromise = new Promise((resolve) => {
37
+ (visualEditingEnabled ? import("../utils/visualEditing/fetchSanityData") : import("../utils/default/fetchSanityData")).then(async ({ fetchSanityData }) => {
38
+ const client = import.meta.server ? (await import("../server/utils/useSanityClient.js")).default(clientType, sanityConfig) : await useSanityClient(visualEditingEnabled, clientType, sanityConfig);
39
+ function onDataUpdate(resultData, resultSourceMap, resultEncodeDataAttribute) {
40
+ updateRefs(resultData, resultSourceMap, resultEncodeDataAttribute);
41
+ resolve(resultData);
42
+ sanityFetchPromises.delete(key);
43
+ }
44
+ const fetchSanityDataFunc = fetchSanityData;
45
+ fetchSanityDataFunc(query, reactiveParams, client, perspective, onDataUpdate);
46
+ });
41
47
  });
42
- });
48
+ sanityFetchPromises.set(key, fetchPromise);
49
+ return fetchPromise;
50
+ };
43
51
  const key = "sanity-" + hash(query + (reactiveParams ? JSON.stringify(reactiveParams) : ""));
44
52
  const pendingData = lazy ? useLazyAsyncData(key, fetchFunc, options) : useAsyncData(key, fetchFunc, options);
53
+ Object.assign(
54
+ pendingData,
55
+ { sourceMap, encodeDataAttribute }
56
+ );
45
57
  if (visualEditingEnabled && import.meta.client) {
46
58
  import("../utils/visualEditing/subscribeToChanges.js").then(async ({ subscribeToChanges }) => {
47
59
  const client = await useSanityClient(visualEditingEnabled, clientType, sanityConfig);
48
60
  subscribeToChanges(query, reactiveParams, client, updateRefs);
49
61
  });
50
62
  }
51
- return Object.assign(new Promise((resolve) => pendingData.then(({ data: { value } }) => {
52
- updateRefs(value.data, value.sourceMap);
53
- resolve({ ...pendingData, data, sourceMap, encodeDataAttribute });
54
- })), { ...pendingData, data, sourceMap, encodeDataAttribute });
63
+ return pendingData;
55
64
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devite/nuxt-sanity",
3
- "version": "2.19.0",
3
+ "version": "2.19.1",
4
4
  "description": "Advanced Sanity integration for Nuxt.js.",
5
5
  "repository": "devite-io/nuxt-sanity",
6
6
  "license": "MIT",
@@ -26,6 +26,18 @@
26
26
  "files": [
27
27
  "dist"
28
28
  ],
29
+ "scripts": {
30
+ "prepack": "nuxt-module-build build",
31
+ "dev": "nuxi dev playground",
32
+ "dev:cms": "cd playground/cms && pnpm dev",
33
+ "dev:build": "nuxi build playground",
34
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
35
+ "release": "pnpm lint && pnpm test && pnpm prepack && git push && changelogen --release && pnpm publish --access=public && git push --follow-tags",
36
+ "lint": "eslint --fix .",
37
+ "test": "vitest run --passWithNoTests",
38
+ "test:watch": "vitest watch",
39
+ "test:types": "vue-tsc --noEmit"
40
+ },
29
41
  "dependencies": {
30
42
  "@nuxt/image": "^2.0.0",
31
43
  "@portabletext/vue": "^1.0.14",
@@ -58,6 +70,20 @@
58
70
  "vue-router": "^4.6.4",
59
71
  "vue-tsc": "^3.2.4"
60
72
  },
73
+ "pnpm": {
74
+ "overrides": {
75
+ "sharp": "0.34.4",
76
+ "css-tree": "2.2.1"
77
+ },
78
+ "onlyBuiltDependencies": [
79
+ "@parcel/watcher",
80
+ "@swc/core",
81
+ "esbuild",
82
+ "scrollmirror",
83
+ "sharp",
84
+ "yarn"
85
+ ]
86
+ },
61
87
  "resolutions": {
62
88
  "@devite/nuxt-sanity": "link:."
63
89
  },
@@ -65,16 +91,5 @@
65
91
  "externals": [
66
92
  "@sanity/client"
67
93
  ]
68
- },
69
- "scripts": {
70
- "dev": "nuxi dev playground",
71
- "dev:cms": "cd playground/cms && pnpm dev",
72
- "dev:build": "nuxi build playground",
73
- "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground",
74
- "release": "pnpm lint && pnpm test && pnpm prepack && git push && changelogen --release && pnpm publish --access=public && git push --follow-tags",
75
- "lint": "eslint --fix .",
76
- "test": "vitest run --passWithNoTests",
77
- "test:watch": "vitest watch",
78
- "test:types": "vue-tsc --noEmit"
79
94
  }
80
- }
95
+ }