@q2devel/q2-core 1.0.101 → 1.0.107

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getTerms.d.ts","sourceRoot":"","sources":["../../api/getTerms.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAIpC,KAAK,aAAa,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,QAAQ,GACjB,KAAK,WAAW,EAChB,8DAaG,aAAa,KACjB,OAAO,CAAC,IAAI,EAAE,CAoGhB,CAAA"}
1
+ {"version":3,"file":"getTerms.d.ts","sourceRoot":"","sources":["../../api/getTerms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAIpC,KAAK,aAAa,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,QAAQ,GACjB,KAAK,WAAW,EAChB,8DAaG,aAAa,KACjB,OAAO,CAAC,IAAI,EAAE,CAiHhB,CAAA"}
@@ -1,4 +1,3 @@
1
- // api/getTerms.ts
2
1
  import { DrupalJsonApiParams } from 'drupal-jsonapi-params';
3
2
  import mapIncludedResources from '../utils/mapIncludedResources';
4
3
  export const getTerms = async (ctx, { categoryId, include = [
@@ -20,47 +19,59 @@ export const getTerms = async (ctx, { categoryId, include = [
20
19
  const baseUrl = ctx.locale === ctx.defaultLocale
21
20
  ? `/jsonapi/taxonomy_term/produktykategorie`
22
21
  : `/${ctx.locale}/jsonapi/taxonomy_term/produktykategorie`;
23
- const params = new DrupalJsonApiParams()
24
- .addInclude(include)
25
- .addFilter('langcode', ctx.locale)
26
- .addPageLimit(pageLimit);
27
- // Custom sort
28
- if (sort && sort.length > 0) {
29
- sort.forEach(({ field, direction = 'DESC' }) => {
30
- params.addSort(field, direction);
31
- });
32
- }
33
- else if (sortField) {
34
- // Deprecated: support old sortField for backward compatibility
35
- params.addSort(sortField);
36
- }
37
- // Custom filters
38
- if (filter && filter.length > 0) {
39
- filter.forEach(({ field, value }) => {
40
- params.addFilter(field, String(value));
41
- });
42
- }
43
- if (categoryId) {
44
- params.addFilter('drupal_internal__tid', categoryId, 'IN');
45
- }
22
+ // Build params for a given offset. Each page builds fresh params so we
23
+ // never carry over Drupal's `next` link cursor (which would explode the
24
+ // URL with all already-seen drupal_internal__tid values and cause
25
+ // 414/431 once the term count grows).
26
+ const buildParams = (offset) => {
27
+ const params = new DrupalJsonApiParams()
28
+ .addInclude(include)
29
+ .addFilter('langcode', ctx.locale)
30
+ .addPageLimit(pageLimit)
31
+ .addPageOffset(offset);
32
+ if (sort && sort.length > 0) {
33
+ sort.forEach(({ field, direction = 'DESC' }) => {
34
+ params.addSort(field, direction);
35
+ });
36
+ }
37
+ else if (sortField) {
38
+ // Deprecated: support old sortField for backward compatibility
39
+ params.addSort(sortField);
40
+ }
41
+ if (filter && filter.length > 0) {
42
+ filter.forEach(({ field, value }) => {
43
+ params.addFilter(field, String(value));
44
+ });
45
+ }
46
+ if (categoryId) {
47
+ params.addFilter('drupal_internal__tid', categoryId, 'IN');
48
+ }
49
+ return params;
50
+ };
46
51
  // Pole pro akumulaci všech stránek dat
47
52
  const allData = [];
48
53
  const allIncluded = [];
49
- let nextUrl = `${baseUrl}?${params.getQueryString()}`;
54
+ let offset = 0;
50
55
  let pageCounter = 0;
51
- while (nextUrl && pageCounter < 50) {
52
- const response = await ctx.axios.get(nextUrl);
56
+ while (pageCounter < 50) {
57
+ const params = buildParams(offset);
58
+ const url = `${baseUrl}?${params.getQueryString()}`;
59
+ const response = await ctx.axios.get(url);
53
60
  const data = response.data;
54
61
  if (Array.isArray(data.data)) {
55
62
  allData.push(...data.data);
56
63
  }
57
- else {
64
+ else if (data.data) {
58
65
  allData.push(data.data);
59
66
  }
60
67
  if (Array.isArray(data.included)) {
61
68
  allIncluded.push(...data.included);
62
69
  }
63
- nextUrl = data.links?.next?.href || null;
70
+ // Drupal still tells us whether more pages exist via links.next
71
+ // we just don't follow its href, we compute our own offset URL.
72
+ if (!data.links?.next?.href)
73
+ break;
74
+ offset += pageLimit;
64
75
  pageCounter++;
65
76
  }
66
77
  const combinedResponse = {
@@ -1 +1 @@
1
- {"version":3,"file":"getProducts.d.ts","sourceRoot":"","sources":["../../../api/products/getProducts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAKtD,KAAK,iBAAiB,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,SAAS,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAC5B,CAAC,CAAA;IACF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,GACpB,KAAK,WAAW,EAChB,8GAmBG,iBAAiB,KACrB,OAAO,CAAC,OAAO,EAAE,CA8EnB,CAAA;AAED,KAAK,qBAAqB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,KAAK,WAAW,EAChB,sCAKG,qBAAqB,KACzB,OAAO,CAAC,MAAM,CA6ChB,CAAA"}
1
+ {"version":3,"file":"getProducts.d.ts","sourceRoot":"","sources":["../../../api/products/getProducts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAKtD,KAAK,iBAAiB,GAAG;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,SAAS,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAC5B,CAAC,CAAA;IACF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,GACpB,KAAK,WAAW,EAChB,8GAmBG,iBAAiB,KACrB,OAAO,CAAC,OAAO,EAAE,CAkFnB,CAAA;AAED,KAAK,qBAAqB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,KAAK,WAAW,EAChB,sCAKG,qBAAqB,KACzB,OAAO,CAAC,MAAM,CAiDhB,CAAA"}
@@ -12,6 +12,7 @@ export const getProducts = async (ctx, { locale, categoryId, productId, searchTe
12
12
  const currentLocale = locale || ctx.locale;
13
13
  const cacheKey = [
14
14
  'products',
15
+ ctx.userId ? `user:${ctx.userId}` : 'anon',
15
16
  currentLocale,
16
17
  categoryId?.length ? `cat:${categoryId.join(',')}` : '',
17
18
  productId ? `id:${productId}` : '',
@@ -64,7 +65,9 @@ export const getProducts = async (ctx, { locale, categoryId, productId, searchTe
64
65
  const url = currentLocale === ctx.defaultLocale
65
66
  ? `/jsonapi/index/variation`
66
67
  : `/${currentLocale}/jsonapi/index/variation`;
67
- const { data } = await ctx.axios.get(queryString ? `${url}?${queryString}` : url);
68
+ const { data } = await ctx.axios.get(queryString ? `${url}?${queryString}` : url, ctx.accessToken
69
+ ? { headers: { Authorization: `Bearer ${ctx.accessToken}` } }
70
+ : undefined);
68
71
  const resolvedProducts = mapIncludedResources(data, 5);
69
72
  const mapProductFn = ctx.mapProduct || mapProduct;
70
73
  const mappedProducts = await Promise.all(resolvedProducts.map(async (item) => {
@@ -82,6 +85,7 @@ export const getProducts = async (ctx, { locale, categoryId, productId, searchTe
82
85
  export const getProductCount = async (ctx, { categoryId = [], tag = '', cache = true, filters = [], }) => {
83
86
  const cacheKey = [
84
87
  'productCount',
88
+ ctx.userId ? `user:${ctx.userId}` : 'anon',
85
89
  ctx.locale,
86
90
  categoryId?.length ? `cat:${categoryId.join(',')}` : '',
87
91
  tag ? `tag:${tag}` : '',
@@ -109,7 +113,9 @@ export const getProductCount = async (ctx, { categoryId = [], tag = '', cache =
109
113
  const url = ctx.locale === ctx.defaultLocale
110
114
  ? `/jsonapi/index/variation`
111
115
  : `/${ctx.locale}/jsonapi/index/variation`;
112
- const { data } = await ctx.axios.get(queryString ? `${url}?${queryString}` : url);
116
+ const { data } = await ctx.axios.get(queryString ? `${url}?${queryString}` : url, ctx.accessToken
117
+ ? { headers: { Authorization: `Bearer ${ctx.accessToken}` } }
118
+ : undefined);
113
119
  if (cache && ctx.setCache) {
114
120
  await ctx.setCache(cacheKey, data.meta?.count ?? 0);
115
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useGetProducts.d.ts","sourceRoot":"","sources":["../../../hooks/products/useGetProducts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,KAAK,qBAAqB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,cAAc,GACvB,KAAK,WAAW,EAChB,QAAQ,MAAM,EACd,UAAU,qBAAqB,qFA8ClC,CAAA"}
1
+ {"version":3,"file":"useGetProducts.d.ts","sourceRoot":"","sources":["../../../hooks/products/useGetProducts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,KAAK,qBAAqB,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,cAAc,GACvB,KAAK,WAAW,EAChB,QAAQ,MAAM,EACd,UAAU,qBAAqB,qFA+ClC,CAAA"}
@@ -5,6 +5,7 @@ export const useGetProducts = (ctx, locale, options) => {
5
5
  return useQuery({
6
6
  queryKey: [
7
7
  'products',
8
+ ctx.userId ?? 'anon',
8
9
  locale,
9
10
  categoryId,
10
11
  productId,
@@ -1 +1 @@
1
- {"version":3,"file":"useGetProductsCount.d.ts","sourceRoot":"","sources":["../../../hooks/products/useGetProductsCount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,KAAK,0BAA0B,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC5B,KAAK,WAAW,EAChB,UAAU,0BAA0B,kEAwBvC,CAAA"}
1
+ {"version":3,"file":"useGetProductsCount.d.ts","sourceRoot":"","sources":["../../../hooks/products/useGetProductsCount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,KAAK,0BAA0B,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC5B,KAAK,WAAW,EAChB,UAAU,0BAA0B,kEAyBvC,CAAA"}
@@ -5,6 +5,7 @@ export const useGetProductsCount = (ctx, options) => {
5
5
  return useQuery({
6
6
  queryKey: [
7
7
  'products',
8
+ ctx.userId ?? 'anon',
8
9
  categoryId,
9
10
  tag,
10
11
  filters,
package/dist/index.d.ts CHANGED
@@ -45,5 +45,6 @@ export * from './api/cart/CartService.types';
45
45
  export * from './utils/mapProducts';
46
46
  export * from './utils/mapIncludedResources';
47
47
  export * from './utils/generalHelper';
48
+ export * from './utils/clearUserScopedQueries';
48
49
  export { useUrlModal } from './auth/hooks/useUrlModal';
49
50
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AAErC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AAGpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAG5B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AAGxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAG7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,oCAAoC,CAAA;AAElD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kCAAkC,CAAA;AAEhD,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AAGtD,cAAc,sCAAsC,CAAA;AACpD,cAAc,2CAA2C,CAAA;AACzD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,yBAAyB,CAAA;AACvC,cAAc,iDAAiD,CAAA;AAC/D,cAAc,sDAAsD,CAAA;AACpE,cAAc,mCAAmC,CAAA;AAGjD,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AAEpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AAEpD,cAAc,WAAW,CAAA;AACzB,cAAc,8BAA8B,CAAA;AAE5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAE5C,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAE5C,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AAErC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AAGpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAG5B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,0BAA0B,CAAA;AAGxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAG7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,oCAAoC,CAAA;AAElD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,kCAAkC,CAAA;AAEhD,cAAc,mCAAmC,CAAA;AACjD,cAAc,wCAAwC,CAAA;AAGtD,cAAc,sCAAsC,CAAA;AACpD,cAAc,2CAA2C,CAAA;AACzD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AACpD,cAAc,yBAAyB,CAAA;AACvC,cAAc,iDAAiD,CAAA;AAC/D,cAAc,sDAAsD,CAAA;AACpE,cAAc,mCAAmC,CAAA;AAGjD,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AAEpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA;AAEpD,cAAc,WAAW,CAAA;AACzB,cAAc,8BAA8B,CAAA;AAE5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAE5C,cAAc,qBAAqB,CAAA;AACnC,cAAc,8BAA8B,CAAA;AAE5C,cAAc,uBAAuB,CAAA;AACrC,cAAc,gCAAgC,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA"}
package/dist/index.js CHANGED
@@ -52,4 +52,5 @@ export * from './api/cart/CartService.types';
52
52
  export * from './utils/mapProducts';
53
53
  export * from './utils/mapIncludedResources';
54
54
  export * from './utils/generalHelper';
55
+ export * from './utils/clearUserScopedQueries';
55
56
  export { useUrlModal } from './auth/hooks/useUrlModal';
@@ -0,0 +1,23 @@
1
+ import { QueryClient } from '@tanstack/react-query';
2
+ /**
3
+ * React-query keys that are scoped to the currently logged-in user
4
+ * (prices, cart, wishlist, orders, profile). On logout these must be dropped
5
+ * so the data is not shown to the next (anonymous / different) user.
6
+ */
7
+ export declare const USER_SCOPED_QUERY_KEYS: readonly ["products", "user", "userCart", "cart", "wishlist", "orderHistory", "order"];
8
+ /**
9
+ * Removes all user-scoped queries defined in core from the cache.
10
+ * Call on logout (after clearing the token) or when switching users.
11
+ *
12
+ * Usage:
13
+ * ```ts
14
+ * import { clearUserScopedQueries } from '@q2devel/q2-core'
15
+ *
16
+ * const onLogout = () => {
17
+ * // ... clear token / cookies
18
+ * clearUserScopedQueries(queryClient)
19
+ * }
20
+ * ```
21
+ */
22
+ export declare const clearUserScopedQueries: (queryClient: QueryClient) => void;
23
+ //# sourceMappingURL=clearUserScopedQueries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearUserScopedQueries.d.ts","sourceRoot":"","sources":["../../utils/clearUserScopedQueries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,wFAQzB,CAAA;AAEV;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,GAAI,aAAa,WAAW,KAAG,IAIjE,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * React-query keys that are scoped to the currently logged-in user
3
+ * (prices, cart, wishlist, orders, profile). On logout these must be dropped
4
+ * so the data is not shown to the next (anonymous / different) user.
5
+ */
6
+ export const USER_SCOPED_QUERY_KEYS = [
7
+ 'products',
8
+ 'user',
9
+ 'userCart',
10
+ 'cart',
11
+ 'wishlist',
12
+ 'orderHistory',
13
+ 'order',
14
+ ];
15
+ /**
16
+ * Removes all user-scoped queries defined in core from the cache.
17
+ * Call on logout (after clearing the token) or when switching users.
18
+ *
19
+ * Usage:
20
+ * ```ts
21
+ * import { clearUserScopedQueries } from '@q2devel/q2-core'
22
+ *
23
+ * const onLogout = () => {
24
+ * // ... clear token / cookies
25
+ * clearUserScopedQueries(queryClient)
26
+ * }
27
+ * ```
28
+ */
29
+ export const clearUserScopedQueries = (queryClient) => {
30
+ USER_SCOPED_QUERY_KEYS.forEach((key) => {
31
+ queryClient.removeQueries({ queryKey: [key] });
32
+ });
33
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q2devel/q2-core",
3
- "version": "1.0.101",
3
+ "version": "1.0.107",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {