@contentful/field-editor-shared 2.17.1-canary.59 → 2.17.2-canary.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.
@@ -43,10 +43,13 @@ function useContentTypes(source) {
43
43
  const queryClient = (0, _queryClient.useQueryClient)();
44
44
  const spaceId = 'ids' in source ? source.ids.space : '';
45
45
  const environmentId = 'ids' in source ? source.ids.environmentAlias ?? source.ids.environment : '';
46
- const queryParams = (0, _react.useMemo)(()=>({
46
+ const queryKey = (0, _react.useMemo)(()=>(0, _queryKeys.createGetManyContentTypesKey)(spaceId, environmentId, {
47
47
  limit: 1000
48
- }), []);
49
- const { data: contentTypes = [] } = (0, _queryClient.useQuery)((0, _queryKeys.createGetManyContentTypesKey)(spaceId, environmentId, queryParams), async ()=>{
48
+ }), [
49
+ spaceId,
50
+ environmentId
51
+ ]);
52
+ const { data: contentTypes = [] } = (0, _queryClient.useQuery)(queryKey, async ()=>{
50
53
  const allContentTypes = [];
51
54
  const limit = 1000;
52
55
  let skip = 0;
@@ -73,19 +76,17 @@ function useContentTypes(source) {
73
76
  }
74
77
  const unsubscribe = navigator.onSlideInNavigation(({ oldSlideLevel, newSlideLevel })=>{
75
78
  if (oldSlideLevel > newSlideLevel) {
76
- void queryClient.invalidateQueries((0, _queryKeys.createGetManyContentTypesKey)(spaceId, environmentId, queryParams));
79
+ void queryClient.invalidateQueries(queryKey);
77
80
  }
78
81
  });
79
82
  return unsubscribe;
80
83
  }, [
81
84
  navigator,
82
85
  queryClient,
83
- spaceId,
84
- environmentId,
85
- queryParams
86
+ queryKey
86
87
  ]);
87
88
  const invalidate = ()=>{
88
- return queryClient.invalidateQueries((0, _queryKeys.createGetManyContentTypesKey)(spaceId, environmentId, queryParams));
89
+ return queryClient.invalidateQueries(queryKey);
89
90
  };
90
91
  return {
91
92
  contentTypes,
package/dist/cjs/index.js CHANGED
@@ -75,9 +75,6 @@ _export(exports, {
75
75
  PredefinedValuesError: function() {
76
76
  return _PredefinedValuesError.PredefinedValuesError;
77
77
  },
78
- SharedQueryClientProvider: function() {
79
- return _queryClient.SharedQueryClientProvider;
80
- },
81
78
  SpaceAPI: function() {
82
79
  return _appsdk.SpaceAPI;
83
80
  },
@@ -95,12 +92,6 @@ _export(exports, {
95
92
  },
96
93
  toLocaleString: function() {
97
94
  return _shortenStorageUnit.toLocaleString;
98
- },
99
- useQuery: function() {
100
- return _queryClient.useQuery;
101
- },
102
- useQueryClient: function() {
103
- return _queryClient.useQueryClient;
104
95
  }
105
96
  });
106
97
  const _ModalDialogLauncher = /*#__PURE__*/ _interop_require_wildcard(require("./ModalDialogLauncher"));
@@ -117,13 +108,11 @@ _export_star(require("./types"), exports);
117
108
  _export_star(require("./hooks/useActiveLocales"), exports);
118
109
  _export_star(require("./hooks/useReleaseStatus"), exports);
119
110
  _export_star(require("./hooks/useLocalePublishStatus"), exports);
120
- _export_star(require("./hooks/useContentTypes"), exports);
121
111
  _export_star(require("./LocalePublishingEntityStatusBadge"), exports);
122
112
  _export_star(require("./ReleaseEntityStatusBadge"), exports);
123
113
  _export_star(require("./utils/determineReleaseAction"), exports);
124
114
  _export_star(require("./utils/getEntityReleaseStatus"), exports);
125
115
  _export_star(require("./utils/getReleaseStatusBadgeConfig"), exports);
126
- const _queryClient = require("./queryClient");
127
116
  _export_star(require("./queryKeys"), exports);
128
117
  function _export_star(from, to) {
129
118
  Object.keys(from).forEach(function(k) {
@@ -20,6 +20,7 @@ _export(exports, {
20
20
  }
21
21
  });
22
22
  const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
23
+ const _reactquery = require("@tanstack/react-query");
23
24
  function _getRequireWildcardCache(nodeInterop) {
24
25
  if (typeof WeakMap !== "function") return null;
25
26
  var cacheBabelInterop = new WeakMap();
@@ -61,19 +62,11 @@ function _interop_require_wildcard(obj, nodeInterop) {
61
62
  }
62
63
  return newObj;
63
64
  }
64
- let RQQueryClient;
65
- let useRQ;
66
- let useHostQueryClient = ()=>undefined;
67
- try {
68
- const rq = require('@tanstack/react-query');
69
- RQQueryClient = rq.QueryClient;
70
- useRQ = rq.useQuery;
71
- useHostQueryClient = rq.useQueryClient;
72
- } catch {}
73
65
  const clientContext = /*#__PURE__*/ _react.createContext(undefined);
66
+ let sharedQueryClientInstance;
74
67
  function useMaybeHostQueryClient() {
75
68
  try {
76
- return useHostQueryClient();
69
+ return (0, _reactquery.useQueryClient)();
77
70
  } catch {
78
71
  return undefined;
79
72
  }
@@ -86,31 +79,28 @@ function useQueryClient() {
86
79
  return client;
87
80
  }
88
81
  if (hostClient) return hostClient;
89
- if (!RQQueryClient) {
90
- throw new Error('@tanstack/react-query is required to use QueryClient. Please install it as a dependency: npm install @tanstack/react-query');
91
- }
92
- return new RQQueryClient({
93
- defaultOptions: {
94
- queries: {
95
- useErrorBoundary: false,
96
- refetchOnWindowFocus: false,
97
- refetchOnReconnect: true,
98
- refetchOnMount: false,
99
- staleTime: Infinity,
100
- retry: false
82
+ if (!sharedQueryClientInstance) {
83
+ sharedQueryClientInstance = new _reactquery.QueryClient({
84
+ defaultOptions: {
85
+ queries: {
86
+ useErrorBoundary: false,
87
+ refetchOnWindowFocus: false,
88
+ refetchOnReconnect: true,
89
+ refetchOnMount: false,
90
+ staleTime: Infinity,
91
+ retry: false
92
+ }
101
93
  }
102
- }
103
- });
94
+ });
95
+ }
96
+ return sharedQueryClientInstance;
104
97
  }, [
105
98
  client,
106
99
  hostClient
107
100
  ]);
108
101
  }
109
102
  function useQuery(queryKey, queryFn, options) {
110
- if (!useRQ) {
111
- throw new Error('@tanstack/react-query is required to use useQuery. Please install it as a dependency: npm install @tanstack/react-query');
112
- }
113
- return useRQ(queryKey, queryFn, {
103
+ return (0, _reactquery.useQuery)(queryKey, queryFn, {
114
104
  ...options,
115
105
  context: clientContext
116
106
  });
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ SharedQueryClientProvider: function() {
13
+ return _queryClient.SharedQueryClientProvider;
14
+ },
15
+ useQuery: function() {
16
+ return _queryClient.useQuery;
17
+ },
18
+ useQueryClient: function() {
19
+ return _queryClient.useQueryClient;
20
+ }
21
+ });
22
+ const _queryClient = require("./queryClient");
23
+ _export_star(require("./hooks/useContentTypes"), exports);
24
+ function _export_star(from, to) {
25
+ Object.keys(from).forEach(function(k) {
26
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
27
+ Object.defineProperty(to, k, {
28
+ enumerable: true,
29
+ get: function() {
30
+ return from[k];
31
+ }
32
+ });
33
+ }
34
+ });
35
+ return from;
36
+ }
@@ -22,10 +22,13 @@ export function useContentTypes(source) {
22
22
  const queryClient = useQueryClient();
23
23
  const spaceId = 'ids' in source ? source.ids.space : '';
24
24
  const environmentId = 'ids' in source ? source.ids.environmentAlias ?? source.ids.environment : '';
25
- const queryParams = useMemo(()=>({
25
+ const queryKey = useMemo(()=>createGetManyContentTypesKey(spaceId, environmentId, {
26
26
  limit: 1000
27
- }), []);
28
- const { data: contentTypes = [] } = useQuery(createGetManyContentTypesKey(spaceId, environmentId, queryParams), async ()=>{
27
+ }), [
28
+ spaceId,
29
+ environmentId
30
+ ]);
31
+ const { data: contentTypes = [] } = useQuery(queryKey, async ()=>{
29
32
  const allContentTypes = [];
30
33
  const limit = 1000;
31
34
  let skip = 0;
@@ -52,19 +55,17 @@ export function useContentTypes(source) {
52
55
  }
53
56
  const unsubscribe = navigator.onSlideInNavigation(({ oldSlideLevel, newSlideLevel })=>{
54
57
  if (oldSlideLevel > newSlideLevel) {
55
- void queryClient.invalidateQueries(createGetManyContentTypesKey(spaceId, environmentId, queryParams));
58
+ void queryClient.invalidateQueries(queryKey);
56
59
  }
57
60
  });
58
61
  return unsubscribe;
59
62
  }, [
60
63
  navigator,
61
64
  queryClient,
62
- spaceId,
63
- environmentId,
64
- queryParams
65
+ queryKey
65
66
  ]);
66
67
  const invalidate = ()=>{
67
- return queryClient.invalidateQueries(createGetManyContentTypesKey(spaceId, environmentId, queryParams));
68
+ return queryClient.invalidateQueries(queryKey);
68
69
  };
69
70
  return {
70
71
  contentTypes,
package/dist/esm/index.js CHANGED
@@ -12,11 +12,9 @@ export * from './types';
12
12
  export * from './hooks/useActiveLocales';
13
13
  export * from './hooks/useReleaseStatus';
14
14
  export * from './hooks/useLocalePublishStatus';
15
- export * from './hooks/useContentTypes';
16
15
  export * from './LocalePublishingEntityStatusBadge';
17
16
  export * from './ReleaseEntityStatusBadge';
18
17
  export * from './utils/determineReleaseAction';
19
18
  export * from './utils/getEntityReleaseStatus';
20
19
  export * from './utils/getReleaseStatusBadgeConfig';
21
- export { SharedQueryClientProvider, useQueryClient, useQuery } from './queryClient';
22
20
  export * from './queryKeys';
@@ -1,14 +1,7 @@
1
1
  import * as React from 'react';
2
- let RQQueryClient;
3
- let useRQ;
4
- let useHostQueryClient = ()=>undefined;
5
- try {
6
- const rq = require('@tanstack/react-query');
7
- RQQueryClient = rq.QueryClient;
8
- useRQ = rq.useQuery;
9
- useHostQueryClient = rq.useQueryClient;
10
- } catch {}
2
+ import { QueryClient, useQuery as useRQ, useQueryClient as useHostQueryClient } from '@tanstack/react-query';
11
3
  const clientContext = /*#__PURE__*/ React.createContext(undefined);
4
+ let sharedQueryClientInstance;
12
5
  function useMaybeHostQueryClient() {
13
6
  try {
14
7
  return useHostQueryClient();
@@ -24,30 +17,27 @@ export function useQueryClient() {
24
17
  return client;
25
18
  }
26
19
  if (hostClient) return hostClient;
27
- if (!RQQueryClient) {
28
- throw new Error('@tanstack/react-query is required to use QueryClient. Please install it as a dependency: npm install @tanstack/react-query');
29
- }
30
- return new RQQueryClient({
31
- defaultOptions: {
32
- queries: {
33
- useErrorBoundary: false,
34
- refetchOnWindowFocus: false,
35
- refetchOnReconnect: true,
36
- refetchOnMount: false,
37
- staleTime: Infinity,
38
- retry: false
20
+ if (!sharedQueryClientInstance) {
21
+ sharedQueryClientInstance = new QueryClient({
22
+ defaultOptions: {
23
+ queries: {
24
+ useErrorBoundary: false,
25
+ refetchOnWindowFocus: false,
26
+ refetchOnReconnect: true,
27
+ refetchOnMount: false,
28
+ staleTime: Infinity,
29
+ retry: false
30
+ }
39
31
  }
40
- }
41
- });
32
+ });
33
+ }
34
+ return sharedQueryClientInstance;
42
35
  }, [
43
36
  client,
44
37
  hostClient
45
38
  ]);
46
39
  }
47
40
  export function useQuery(queryKey, queryFn, options) {
48
- if (!useRQ) {
49
- throw new Error('@tanstack/react-query is required to use useQuery. Please install it as a dependency: npm install @tanstack/react-query');
50
- }
51
41
  return useRQ(queryKey, queryFn, {
52
42
  ...options,
53
43
  context: clientContext
@@ -0,0 +1,2 @@
1
+ export { SharedQueryClientProvider, useQueryClient, useQuery } from './queryClient';
2
+ export * from './hooks/useContentTypes';
@@ -14,11 +14,9 @@ export * from './types';
14
14
  export * from './hooks/useActiveLocales';
15
15
  export * from './hooks/useReleaseStatus';
16
16
  export * from './hooks/useLocalePublishStatus';
17
- export * from './hooks/useContentTypes';
18
17
  export * from './LocalePublishingEntityStatusBadge';
19
18
  export * from './ReleaseEntityStatusBadge';
20
19
  export * from './utils/determineReleaseAction';
21
20
  export * from './utils/getEntityReleaseStatus';
22
21
  export * from './utils/getReleaseStatusBadgeConfig';
23
- export { SharedQueryClientProvider, useQueryClient, useQuery } from './queryClient';
24
22
  export * from './queryKeys';
@@ -1,10 +1,13 @@
1
1
  import * as React from 'react';
2
- import type { QueryClient, UseQueryOptions, UseQueryResult, QueryKey, QueryFunction } from '@tanstack/react-query';
2
+ import { QueryClient, type UseQueryOptions, type UseQueryResult, type QueryKey, type QueryFunction } from '@tanstack/react-query';
3
3
  export declare function useQueryClient(): QueryClient;
4
4
  export declare function useQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryKey: TQueryKey, queryFn: QueryFunction<TQueryFnData, TQueryKey>, options?: Omit<UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'queryKey' | 'queryFn'>): UseQueryResult<TData, TError>;
5
5
  /**
6
6
  * Provides access to a query client either by sharing an existing client or
7
7
  * creating a new one.
8
+ *
9
+ * @param client - Optional QueryClient instance. When provided (e.g., in tests),
10
+ * it takes priority over any host client or singleton.
8
11
  */
9
12
  export declare function SharedQueryClientProvider({ children, client: providedClient, }: React.PropsWithChildren<{
10
13
  client?: QueryClient;
@@ -1,14 +1,10 @@
1
1
  /**
2
- * Query key factories matching user_interface repository structure.
2
+ * Query key factories for React Query cache management.
3
3
  *
4
- * IMPORTANT: These must stay in sync with user_interface to enable cache sharing.
5
- * When updating, check the corresponding file in user_interface repository.
4
+ * These factories provide consistent query keys across the application.
6
5
  */
7
6
  /**
8
7
  * Creates a query key for fetching a single entry.
9
- * Matches the structure used in user_interface for cache sharing.
10
- *
11
- * Source: https://github.com/contentful/user_interface/blob/main/src/javascripts/core/react-query/cma/entry/useGetEntry.ts
12
8
  *
13
9
  * @param spaceId - The space ID
14
10
  * @param environmentId - The environment ID
@@ -18,9 +14,6 @@
18
14
  export declare const createGetEntryKey: (spaceId: string, environmentId: string, entryId: string) => string[];
19
15
  /**
20
16
  * Creates a query key for fetching a single asset.
21
- * Matches the structure used in user_interface for cache sharing.
22
- *
23
- * Source: https://github.com/contentful/user_interface/blob/main/src/javascripts/core/react-query/cma/asset/useGetAsset.ts
24
17
  *
25
18
  * @param spaceId - The space ID
26
19
  * @param environmentId - The environment ID
@@ -30,9 +23,6 @@ export declare const createGetEntryKey: (spaceId: string, environmentId: string,
30
23
  export declare const createGetAssetKey: (spaceId: string, environmentId: string, assetId: string) => string[];
31
24
  /**
32
25
  * Creates a query key for fetching a single space.
33
- * Matches the structure used in user_interface for cache sharing.
34
- *
35
- * Source: https://github.com/contentful/user_interface/blob/main/src/javascripts/core/react-query/cma/space/useGetSpace.ts
36
26
  *
37
27
  * @param spaceId - The space ID to fetch
38
28
  * @returns Query key array for React Query
@@ -40,9 +30,6 @@ export declare const createGetAssetKey: (spaceId: string, environmentId: string,
40
30
  export declare const createGetSpaceKey: (spaceId: string) => string[];
41
31
  /**
42
32
  * Creates a query key for fetching multiple locales.
43
- * Matches the structure used in user_interface for cache sharing.
44
- *
45
- * Source: https://github.com/contentful/user_interface/blob/main/src/javascripts/core/react-query/cma/locale/useGetManyLocales.ts
46
33
  *
47
34
  * @param spaceId - The space ID
48
35
  * @param environmentId - The environment ID
@@ -52,9 +39,6 @@ export declare const createGetSpaceKey: (spaceId: string) => string[];
52
39
  export declare const createGetManyLocalesKey: (spaceId: string, environmentId: string, params?: Record<string, unknown>) => (string | Record<string, unknown>)[];
53
40
  /**
54
41
  * Creates a query key for fetching a single content type.
55
- * Matches the structure used in user_interface for cache sharing.
56
- *
57
- * Source: https://github.com/contentful/user_interface/blob/main/src/javascripts/core/react-query/cma/contentType/useGetContentType.ts
58
42
  *
59
43
  * @param spaceId - The space ID
60
44
  * @param environmentId - The environment ID
@@ -64,9 +48,6 @@ export declare const createGetManyLocalesKey: (spaceId: string, environmentId: s
64
48
  export declare const createGetContentTypeKey: (spaceId: string, environmentId: string, contentTypeId: string) => string[];
65
49
  /**
66
50
  * Creates a query key for fetching multiple content types.
67
- * Matches the structure used in user_interface for cache sharing.
68
- *
69
- * Source: https://github.com/contentful/user_interface/blob/main/src/javascripts/core/react-query/cma/contentType/useGetManyContentTypes.ts
70
51
  *
71
52
  * @param spaceId - The space ID
72
53
  * @param environmentId - The environment ID
@@ -0,0 +1,2 @@
1
+ export { SharedQueryClientProvider, useQueryClient, useQuery } from './queryClient';
2
+ export * from './hooks/useContentTypes';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/field-editor-shared",
3
- "version": "2.17.1-canary.59+54b401aa",
3
+ "version": "2.17.2-canary.1+168bff6f",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -11,6 +11,12 @@
11
11
  "import": "./dist/esm/index.js",
12
12
  "default": "./dist/cjs/index.js"
13
13
  },
14
+ "./react-query": {
15
+ "types": "./dist/types/react-query.d.ts",
16
+ "require": "./dist/cjs/react-query.js",
17
+ "import": "./dist/esm/react-query.js",
18
+ "default": "./dist/cjs/react-query.js"
19
+ },
14
20
  "./package.json": "./package.json"
15
21
  },
16
22
  "files": [
@@ -37,7 +43,7 @@
37
43
  },
38
44
  "devDependencies": {
39
45
  "@contentful/app-sdk": "^4.42.0",
40
- "@contentful/field-editor-test-utils": "^1.7.0",
46
+ "@contentful/field-editor-test-utils": "^1.7.1-canary.76+168bff6f",
41
47
  "@lingui/core": "5.3.0",
42
48
  "@tanstack/react-query": "^4.3.9",
43
49
  "@testing-library/react": "16.3.0"
@@ -67,5 +73,5 @@
67
73
  "publishConfig": {
68
74
  "registry": "https://npm.pkg.github.com/"
69
75
  },
70
- "gitHead": "54b401aa9908c8380c3801bf25fa38e23dff72d2"
76
+ "gitHead": "168bff6f172e483def0432b3095e8f0a2af37b1f"
71
77
  }