@iblai/web-utils 1.6.5 → 1.6.6

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.
@@ -9,6 +9,7 @@ export declare const monetizationApiSlice: import("@reduxjs/toolkit/query").Api<
9
9
  }, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", StripeConnectDashboardResponse, "monetizationApiSlice", unknown>;
10
10
  getPaywallConfig: import("@reduxjs/toolkit/query").QueryDefinition<PaywallItemParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallConfigResponse, "monetizationApiSlice", unknown>;
11
11
  enablePaywall: import("@reduxjs/toolkit/query").MutationDefinition<EnablePaywallArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallConfigResponse, "monetizationApiSlice", unknown>;
12
+ updatePaywall: import("@reduxjs/toolkit/query").MutationDefinition<EnablePaywallArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallConfigResponse, "monetizationApiSlice", unknown>;
12
13
  disablePaywall: import("@reduxjs/toolkit/query").MutationDefinition<PaywallItemParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", void, "monetizationApiSlice", unknown>;
13
14
  listPrices: import("@reduxjs/toolkit/query").QueryDefinition<PaywallItemParams, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallPrice[], "monetizationApiSlice", unknown>;
14
15
  createPrice: import("@reduxjs/toolkit/query").MutationDefinition<CreatePriceArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallPrice, "monetizationApiSlice", unknown>;
@@ -1222,6 +1223,166 @@ export declare const useGetStripeConnectStatusQuery: <R extends Record<string, a
1222
1223
  } | undefined) => readonly [(arg: EnablePaywallArgs) => import("@reduxjs/toolkit/query").MutationActionCreatorResult<import("@reduxjs/toolkit/query").MutationDefinition<EnablePaywallArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallConfigResponse, "monetizationApiSlice", unknown>>, import("@reduxjs/toolkit/query").TSHelpersNoInfer<R> & {
1223
1224
  originalArgs?: EnablePaywallArgs | undefined;
1224
1225
  reset: () => void;
1226
+ }], useUpdatePaywallMutation: <R extends Record<string, any> = ({
1227
+ requestId?: undefined;
1228
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1229
+ data?: undefined;
1230
+ error?: undefined;
1231
+ endpointName?: string;
1232
+ startedTimeStamp?: undefined;
1233
+ fulfilledTimeStamp?: undefined;
1234
+ } & {
1235
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1236
+ isUninitialized: true;
1237
+ isLoading: false;
1238
+ isSuccess: false;
1239
+ isError: false;
1240
+ }) | ({
1241
+ status: import("@reduxjs/toolkit/query").QueryStatus.fulfilled;
1242
+ } & Omit<{
1243
+ requestId: string;
1244
+ data?: PaywallConfigResponse | undefined;
1245
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1246
+ endpointName: string;
1247
+ startedTimeStamp: number;
1248
+ fulfilledTimeStamp?: number;
1249
+ }, "data" | "fulfilledTimeStamp"> & Required<Pick<{
1250
+ requestId: string;
1251
+ data?: PaywallConfigResponse | undefined;
1252
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1253
+ endpointName: string;
1254
+ startedTimeStamp: number;
1255
+ fulfilledTimeStamp?: number;
1256
+ }, "data" | "fulfilledTimeStamp">> & {
1257
+ error: undefined;
1258
+ } & {
1259
+ status: import("@reduxjs/toolkit/query").QueryStatus.fulfilled;
1260
+ isUninitialized: false;
1261
+ isLoading: false;
1262
+ isSuccess: true;
1263
+ isError: false;
1264
+ }) | ({
1265
+ status: import("@reduxjs/toolkit/query").QueryStatus.pending;
1266
+ } & {
1267
+ requestId: string;
1268
+ data?: PaywallConfigResponse | undefined;
1269
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1270
+ endpointName: string;
1271
+ startedTimeStamp: number;
1272
+ fulfilledTimeStamp?: number;
1273
+ } & {
1274
+ data?: undefined;
1275
+ } & {
1276
+ status: import("@reduxjs/toolkit/query").QueryStatus.pending;
1277
+ isUninitialized: false;
1278
+ isLoading: true;
1279
+ isSuccess: false;
1280
+ isError: false;
1281
+ }) | ({
1282
+ status: import("@reduxjs/toolkit/query").QueryStatus.rejected;
1283
+ } & Omit<{
1284
+ requestId: string;
1285
+ data?: PaywallConfigResponse | undefined;
1286
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1287
+ endpointName: string;
1288
+ startedTimeStamp: number;
1289
+ fulfilledTimeStamp?: number;
1290
+ }, "error"> & Required<Pick<{
1291
+ requestId: string;
1292
+ data?: PaywallConfigResponse | undefined;
1293
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1294
+ endpointName: string;
1295
+ startedTimeStamp: number;
1296
+ fulfilledTimeStamp?: number;
1297
+ }, "error">> & {
1298
+ status: import("@reduxjs/toolkit/query").QueryStatus.rejected;
1299
+ isUninitialized: false;
1300
+ isLoading: false;
1301
+ isSuccess: false;
1302
+ isError: true;
1303
+ })>(options?: {
1304
+ selectFromResult?: ((state: ({
1305
+ requestId?: undefined;
1306
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1307
+ data?: undefined;
1308
+ error?: undefined;
1309
+ endpointName?: string;
1310
+ startedTimeStamp?: undefined;
1311
+ fulfilledTimeStamp?: undefined;
1312
+ } & {
1313
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1314
+ isUninitialized: true;
1315
+ isLoading: false;
1316
+ isSuccess: false;
1317
+ isError: false;
1318
+ }) | ({
1319
+ status: import("@reduxjs/toolkit/query").QueryStatus.fulfilled;
1320
+ } & Omit<{
1321
+ requestId: string;
1322
+ data?: PaywallConfigResponse | undefined;
1323
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1324
+ endpointName: string;
1325
+ startedTimeStamp: number;
1326
+ fulfilledTimeStamp?: number;
1327
+ }, "data" | "fulfilledTimeStamp"> & Required<Pick<{
1328
+ requestId: string;
1329
+ data?: PaywallConfigResponse | undefined;
1330
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1331
+ endpointName: string;
1332
+ startedTimeStamp: number;
1333
+ fulfilledTimeStamp?: number;
1334
+ }, "data" | "fulfilledTimeStamp">> & {
1335
+ error: undefined;
1336
+ } & {
1337
+ status: import("@reduxjs/toolkit/query").QueryStatus.fulfilled;
1338
+ isUninitialized: false;
1339
+ isLoading: false;
1340
+ isSuccess: true;
1341
+ isError: false;
1342
+ }) | ({
1343
+ status: import("@reduxjs/toolkit/query").QueryStatus.pending;
1344
+ } & {
1345
+ requestId: string;
1346
+ data?: PaywallConfigResponse | undefined;
1347
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1348
+ endpointName: string;
1349
+ startedTimeStamp: number;
1350
+ fulfilledTimeStamp?: number;
1351
+ } & {
1352
+ data?: undefined;
1353
+ } & {
1354
+ status: import("@reduxjs/toolkit/query").QueryStatus.pending;
1355
+ isUninitialized: false;
1356
+ isLoading: true;
1357
+ isSuccess: false;
1358
+ isError: false;
1359
+ }) | ({
1360
+ status: import("@reduxjs/toolkit/query").QueryStatus.rejected;
1361
+ } & Omit<{
1362
+ requestId: string;
1363
+ data?: PaywallConfigResponse | undefined;
1364
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1365
+ endpointName: string;
1366
+ startedTimeStamp: number;
1367
+ fulfilledTimeStamp?: number;
1368
+ }, "error"> & Required<Pick<{
1369
+ requestId: string;
1370
+ data?: PaywallConfigResponse | undefined;
1371
+ error?: import("../utils").ExtendedFetchBaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
1372
+ endpointName: string;
1373
+ startedTimeStamp: number;
1374
+ fulfilledTimeStamp?: number;
1375
+ }, "error">> & {
1376
+ status: import("@reduxjs/toolkit/query").QueryStatus.rejected;
1377
+ isUninitialized: false;
1378
+ isLoading: false;
1379
+ isSuccess: false;
1380
+ isError: true;
1381
+ })) => R) | undefined;
1382
+ fixedCacheKey?: string;
1383
+ } | undefined) => readonly [(arg: EnablePaywallArgs) => import("@reduxjs/toolkit/query").MutationActionCreatorResult<import("@reduxjs/toolkit/query").MutationDefinition<EnablePaywallArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, "stripeConnectStatus" | "paywallConfig" | "paywallPrices" | "publicPricing" | "accessCheck" | "mySubscriptions" | "itemSubscription" | "paywalls" | "subscribers" | "revenue", PaywallConfigResponse, "monetizationApiSlice", unknown>>, import("@reduxjs/toolkit/query").TSHelpersNoInfer<R> & {
1384
+ originalArgs?: EnablePaywallArgs | undefined;
1385
+ reset: () => void;
1225
1386
  }], useDisablePaywallMutation: <R extends Record<string, any> = ({
1226
1387
  requestId?: undefined;
1227
1388
  status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
@@ -36,6 +36,7 @@ export interface PaywallPrice {
36
36
  stripe_price_id: string;
37
37
  }
38
38
  export interface PaywallConfigResponse {
39
+ unique_id: string;
39
40
  item_type: string;
40
41
  item_id: string;
41
42
  item_name: string;
@@ -57,6 +58,9 @@ export interface EnablePaywallArgs extends PaywallItemParams {
57
58
  allow_free_tier: boolean;
58
59
  trial_period_days: number;
59
60
  grandfathering_strategy: 'free_forever' | 'require_subscription';
61
+ item_name?: string;
62
+ description?: string;
63
+ on_successful_payment?: string;
60
64
  }
61
65
  export interface CreatePriceArgs extends PaywallItemParams {
62
66
  name: string;
package/dist/index.esm.js CHANGED
@@ -422,6 +422,14 @@ const BASE_CONFIG = {
422
422
  description: "Default mentor to open on the platform",
423
423
  type: "string",
424
424
  },
425
+ /* {
426
+ slug: "monetization_base_path",
427
+ label: "Public Monetization Base Path",
428
+ defaultValue: "https://ibl.ai/buy/",
429
+ description:
430
+ "Base URL for public paywall product pages. The product unique ID will be appended to this path.",
431
+ type: "string",
432
+ }, */
425
433
  ],
426
434
  };
427
435
  // SkillsAI platform configuration
@@ -2862,6 +2870,12 @@ async function validateJwtToken(storageService) {
2862
2870
  if (!edxJwtToken || !userData) {
2863
2871
  return false;
2864
2872
  }
2873
+ // Skip JWT validation if token is not in JWT format (e.g. opaque LTI tokens)
2874
+ const parts = edxJwtToken.split(".");
2875
+ if (parts.length !== 3) {
2876
+ console.warn("[AuthProvider] Token is not a valid JWT format, skipping validation");
2877
+ return false;
2878
+ }
2865
2879
  const decodedToken = jwtDecode(edxJwtToken);
2866
2880
  const userDataObj = JSON.parse(userData);
2867
2881
  // Compare user_id from token with user_id from user_data
@@ -15563,6 +15577,15 @@ createApi({
15563
15577
  }),
15564
15578
  invalidatesTags: ['paywallConfig', 'paywalls'],
15565
15579
  }),
15580
+ updatePaywall: builder.mutation({
15581
+ query: ({ platform_key, item_type, item_id, ...body }) => ({
15582
+ url: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.path(platform_key, item_type, item_id),
15583
+ service: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.service,
15584
+ method: 'PUT',
15585
+ body: JSON.stringify(body),
15586
+ }),
15587
+ invalidatesTags: ['paywallConfig', 'paywalls'],
15588
+ }),
15566
15589
  disablePaywall: builder.mutation({
15567
15590
  query: ({ platform_key, item_type, item_id }) => ({
15568
15591
  url: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.path(platform_key, item_type, item_id),
@@ -15622,6 +15645,9 @@ createApi({
15622
15645
  url: MONETIZATION_ENDPOINTS.ACCESS_CHECK.path(platform_key, item_type, item_id),
15623
15646
  service: MONETIZATION_ENDPOINTS.ACCESS_CHECK.service,
15624
15647
  method: 'GET',
15648
+ // Treat paywall-related 4xx (e.g. 402 Payment Required) as success so the
15649
+ // response body (has_access, pricing, reason, …) reaches the caller as `data`.
15650
+ validateStatus: (response) => response.ok || [402].includes(response.status),
15625
15651
  }),
15626
15652
  providesTags: ['accessCheck'],
15627
15653
  }),