@techstuff-dev/foundation-api-utils 2.7.0 → 2.7.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/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var slice = require('./chunks/slice-BZ9cHcE8.js');
3
+ var slice = require('./chunks/slice-2_5ax6TZ.js');
4
4
  var slice$1 = require('./chunks/slice-CkWobkWw.js');
5
5
  var useAuth = require('./chunks/useAuth-BVyDLl6H.js');
6
6
  var jwtDecode = require('jwt-decode');
@@ -2,8 +2,8 @@
2
2
 
3
3
  var toolkit = require('@reduxjs/toolkit');
4
4
  var storage = require('@react-native-async-storage/async-storage');
5
- var slice = require('../chunks/slice-BZ9cHcE8.js');
6
- var shared = require('../chunks/shared-BB1LJXHU.js');
5
+ var slice = require('../chunks/slice-2_5ax6TZ.js');
6
+ var shared = require('../chunks/shared-CNZnVs2B.js');
7
7
  require('../chunks/slice-CkWobkWw.js');
8
8
  require('react-redux');
9
9
  require('react');
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var toolkit = require('@reduxjs/toolkit');
4
- var slice = require('../chunks/slice-BZ9cHcE8.js');
5
- var shared = require('../chunks/shared-BB1LJXHU.js');
4
+ var slice = require('../chunks/slice-2_5ax6TZ.js');
5
+ var shared = require('../chunks/shared-CNZnVs2B.js');
6
6
  require('../chunks/slice-CkWobkWw.js');
7
7
  require('react-redux');
8
8
  require('react');
@@ -1,5 +1,5 @@
1
1
  import { combineSlices } from '@reduxjs/toolkit';
2
- import { P as cartSlice, a as authApi, c as contentApi, p as paymentApi, b as productsApi, o as ordersApi } from './slice-cLf9vXqc.js';
2
+ import { P as cartSlice, a as authApi, c as contentApi, p as paymentApi, b as productsApi, o as ordersApi } from './slice-WrrAzvxd.js';
3
3
  import { a as authSlice } from './slice-ChJ8ZvmP.js';
4
4
 
5
5
  // This file exists just so TypeScript has a module at ./store for IDEs/build.
@@ -9,4 +9,4 @@ import { a as authSlice } from './slice-ChJ8ZvmP.js';
9
9
  const rootReducer = combineSlices(cartSlice, authSlice, authApi, contentApi, paymentApi, productsApi, ordersApi);
10
10
 
11
11
  export { rootReducer as r };
12
- //# sourceMappingURL=shared-DOQegy7B.js.map
12
+ //# sourceMappingURL=shared-DJdjELG7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-DOQegy7B.js","sources":["../../../lib/store/shared.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;AACA;AAUA;AAEA;MACa,WAAW,GAAG,aAAa,CACtC,SAAS,EACT,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS;;;;"}
1
+ {"version":3,"file":"shared-DJdjELG7.js","sources":["../../../lib/store/shared.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;AACA;AAUA;AAEA;MACa,WAAW,GAAG,aAAa,CACtC,SAAS,EACT,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS;;;;"}
@@ -5194,7 +5194,7 @@ const APP_ES_SCHEDULE_INDEX$1 = getEnvVar$1('NEXT_PUBLIC_APP_ES_SCHEDULE_INDEX')
5194
5194
  const APP_ES_CHALLENGES_INDEX$1 = getEnvVar$1('NEXT_PUBLIC_APP_ES_CHALLENGES_INDEX');
5195
5195
  const APP_ES_CHALLENGE_DAYS_INDEX$1 = getEnvVar$1('NEXT_PUBLIC_APP_ES_CHALLENGE_DAYS_INDEX');
5196
5196
  // Platform identifier
5197
- const PLATFORM$1 = 'web';
5197
+ const PLATFORM$2 = 'web';
5198
5198
 
5199
5199
  var webConfig = /*#__PURE__*/Object.freeze({
5200
5200
  __proto__: null,
@@ -5217,7 +5217,7 @@ var webConfig = /*#__PURE__*/Object.freeze({
5217
5217
  APP_ES_SETTINGS_INDEX: APP_ES_SETTINGS_INDEX$1,
5218
5218
  APP_ES_VIDEOS_INDEX: APP_ES_VIDEOS_INDEX$1,
5219
5219
  APP_ES_WORKOUTS_INDEX: APP_ES_WORKOUTS_INDEX$1,
5220
- PLATFORM: PLATFORM$1
5220
+ PLATFORM: PLATFORM$2
5221
5221
  });
5222
5222
 
5223
5223
  /**
@@ -5261,7 +5261,7 @@ const APP_ES_SCHEDULE_INDEX = getEnvVar('APP_ES_SCHEDULE_INDEX');
5261
5261
  const APP_ES_CHALLENGES_INDEX = getEnvVar('APP_ES_CHALLENGES_INDEX');
5262
5262
  const APP_ES_CHALLENGE_DAYS_INDEX = getEnvVar('APP_ES_CHALLENGE_DAYS_INDEX');
5263
5263
  // Platform identifier
5264
- const PLATFORM = 'native';
5264
+ const PLATFORM$1 = 'native';
5265
5265
 
5266
5266
  var nativeConfig = /*#__PURE__*/Object.freeze({
5267
5267
  __proto__: null,
@@ -5284,7 +5284,7 @@ var nativeConfig = /*#__PURE__*/Object.freeze({
5284
5284
  APP_ES_SETTINGS_INDEX: APP_ES_SETTINGS_INDEX,
5285
5285
  APP_ES_VIDEOS_INDEX: APP_ES_VIDEOS_INDEX,
5286
5286
  APP_ES_WORKOUTS_INDEX: APP_ES_WORKOUTS_INDEX,
5287
- PLATFORM: PLATFORM
5287
+ PLATFORM: PLATFORM$1
5288
5288
  });
5289
5289
 
5290
5290
  /**
@@ -5326,7 +5326,7 @@ apiConfig.APP_ES_WORKOUTS_INDEX;
5326
5326
  apiConfig.APP_ES_SCHEDULE_INDEX;
5327
5327
  apiConfig.APP_ES_CHALLENGES_INDEX;
5328
5328
  apiConfig.APP_ES_CHALLENGE_DAYS_INDEX;
5329
- apiConfig.PLATFORM;
5329
+ const PLATFORM = apiConfig.PLATFORM;
5330
5330
 
5331
5331
  /**
5332
5332
  * Mutex to prevent multiple concurrent refresh attempts.
@@ -5505,6 +5505,24 @@ function getAuthHeaders(getState) {
5505
5505
  return { accessToken, idToken };
5506
5506
  }
5507
5507
 
5508
+ /**
5509
+ * Build a per-platform URL for user-scoped data endpoints.
5510
+ *
5511
+ * Native apps call the backend API Gateway directly and must use the canonical
5512
+ * path shape: `/data/user/{sub}/{endpoint}`.
5513
+ *
5514
+ * Web apps route library requests through their own Next.js `/api/user/*`
5515
+ * proxy layer, which then forwards to the same canonical backend path. That
5516
+ * proxy expects the legacy `/user/{endpoint}?sub=X` shape.
5517
+ */
5518
+ const userDataPath = (sub, endpoint, query) => {
5519
+ if (PLATFORM === 'native') {
5520
+ const suffix = query ? `?${query}` : '';
5521
+ return `/data/user/${sub}/${endpoint}${suffix}`;
5522
+ }
5523
+ const suffix = query ? `&${query}` : '';
5524
+ return `/user/${endpoint}?sub=${sub}${suffix}`;
5525
+ };
5508
5526
  // Create a dynamic baseQuery that resolves URL at request time and unwraps standard responses
5509
5527
  const createAuthBaseQuery = () => {
5510
5528
  const baseUrl = typeof process !== 'undefined' && process.env?.NEXT_PUBLIC_API_AUTH_PREFIX
@@ -5670,14 +5688,14 @@ const authApi = createApi({
5670
5688
  // Dashboard data endpoints
5671
5689
  getStreak: builder.query({
5672
5690
  query: (sub) => ({
5673
- url: `/user/streak?sub=${sub}`,
5691
+ url: userDataPath(sub, 'streak'),
5674
5692
  method: 'GET',
5675
5693
  }),
5676
5694
  providesTags: ['Streak'],
5677
5695
  }),
5678
5696
  getWeeklyProgress: builder.query({
5679
5697
  query: (sub) => ({
5680
- url: `/user/weekly-progress?sub=${sub}`,
5698
+ url: userDataPath(sub, 'weekly-progress'),
5681
5699
  method: 'GET',
5682
5700
  }),
5683
5701
  providesTags: ['WeeklyProgress'],
@@ -5692,35 +5710,35 @@ const authApi = createApi({
5692
5710
  }),
5693
5711
  getWatchProgress: builder.query({
5694
5712
  query: ({ sub, limit = 1 }) => ({
5695
- url: `/user/watch-progress?sub=${sub}&limit=${limit}`,
5713
+ url: userDataPath(sub, 'watch-progress', `limit=${limit}`),
5696
5714
  method: 'GET',
5697
5715
  }),
5698
5716
  providesTags: ['WatchProgress'],
5699
5717
  }),
5700
5718
  getRecommendations: builder.query({
5701
5719
  query: ({ sub, limit = 8 }) => ({
5702
- url: `/user/recommendations?sub=${sub}&limit=${limit}`,
5720
+ url: userDataPath(sub, 'recommendations', `limit=${limit}`),
5703
5721
  method: 'GET',
5704
5722
  }),
5705
5723
  providesTags: ['Recommendations'],
5706
5724
  }),
5707
5725
  getActivityStats: builder.query({
5708
5726
  query: ({ sub, period = 'this-month' }) => ({
5709
- url: `/user/activity-stats?sub=${sub}&period=${period}`,
5727
+ url: userDataPath(sub, 'activity-stats', `period=${period}`),
5710
5728
  method: 'GET',
5711
5729
  }),
5712
5730
  providesTags: ['ActivityStats'],
5713
5731
  }),
5714
5732
  getActiveChallenges: builder.query({
5715
5733
  query: (sub) => ({
5716
- url: `/user/active-challenges?sub=${sub}`,
5734
+ url: userDataPath(sub, 'active-challenges'),
5717
5735
  method: 'GET',
5718
5736
  }),
5719
5737
  providesTags: ['UserData'],
5720
5738
  }),
5721
5739
  getChallengeProgress: builder.query({
5722
5740
  query: ({ sub, challengeId }) => ({
5723
- url: `/user/challenge-progress/${challengeId}?sub=${sub}`,
5741
+ url: userDataPath(sub, `challenge-progress/${challengeId}`),
5724
5742
  method: 'GET',
5725
5743
  }),
5726
5744
  providesTags: ['UserData'],
@@ -5728,7 +5746,8 @@ const authApi = createApi({
5728
5746
  // Activity logging — invalidates dashboard caches
5729
5747
  logActivity: builder.mutation({
5730
5748
  query: (data) => ({
5731
- url: '/activity',
5749
+ // Native hits the backend directly at /data/activity; web proxies via /activity → /data/activity
5750
+ url: PLATFORM === 'native' ? '/data/activity' : '/activity',
5732
5751
  method: 'POST',
5733
5752
  body: data,
5734
5753
  }),
@@ -6202,4 +6221,4 @@ const selectCartItemsIds = createSelector$1([selectMediaInCart], (items) => {
6202
6221
  cartSlice.reducer;
6203
6222
 
6204
6223
  export { selectCartNetTotal as $, useLazyGetWatchProgressQuery as A, useGetRecommendationsQuery as B, useLazyGetRecommendationsQuery as C, useGetActivityStatsQuery as D, useLazyGetActivityStatsQuery as E, useLogActivityMutation as F, useGetActiveChallengesQuery as G, useGetChallengeProgressQuery as H, useGetProductsQuery as I, useLazyGetProductsQuery as J, usePurchaseProductMutation as K, useFetchOrdersQuery as L, useLazyFetchOrdersQuery as M, useGetOrdersQuery as N, useGetOrderQuery as O, cartSlice as P, setTaxRate as Q, resetTaxRate as R, setPromoCode as S, removePromoCode as T, addToCart as U, updateCart as V, removeFromCart as W, emptyCart as X, toggleCart as Y, selectMediaInCart as Z, selectCartTotal as _, authApi as a, selectCartTaxRate as a0, selectCartTaxAmount as a1, selectCartCount as a2, selectCartStatus as a3, selectPromoCode as a4, selectCartItems as a5, selectCartItemsIds as a6, isWeb as a7, isReactNative as a8, getPlatform as a9, runOnPlatform as aa, onlyUnique as ab, applyCoupon as ac, applyTax as ad, createUnwrappingBaseQuery as ae, withReauth as af, productsApi as b, contentApi as c, useResetPasswordAuthMutation as d, useRegisterMutation as e, useVerifyUserQuery as f, useLazyVerifyUserQuery as g, useGetUserInfoQuery as h, useLazyGetUserInfoQuery as i, useUpdateUserInfoMutation as j, useForgottenPasswordMutation as k, useVerifyUserAttributesQuery as l, useLazyVerifyUserAttributesQuery as m, useVerifyUserResendQuery as n, ordersApi as o, paymentApi as p, useLazyVerifyUserResendQuery as q, useUpdateUserMutation as r, useGetStreakQuery as s, toCamelCaseObject as t, useResetPasswordMutation as u, useLazyGetStreakQuery as v, useGetWeeklyProgressQuery as w, useLazyGetWeeklyProgressQuery as x, useSetWeeklyGoalMutation as y, useGetWatchProgressQuery as z };
6205
- //# sourceMappingURL=slice-cLf9vXqc.js.map
6224
+ //# sourceMappingURL=slice-WrrAzvxd.js.map