@jmruthers/pace-core 0.5.45 → 0.5.46

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.
Files changed (123) hide show
  1. package/dist/{DataTable-PWLLTSP7.js → DataTable-CBZ4FWLB.js} +5 -5
  2. package/dist/{chunk-GIISFLMP.js → chunk-QGIMHNFE.js} +3 -3
  3. package/dist/{chunk-D4X7PPGX.js → chunk-RZZ4U2VB.js} +3 -3
  4. package/dist/{chunk-3PNBACK3.js → chunk-TCPMEL3C.js} +2 -2
  5. package/dist/{chunk-FZ7EBWOT.js → chunk-UK5BMO5B.js} +3 -3
  6. package/dist/{chunk-OQ6DTLZ6.js → chunk-VW4YRTVX.js} +33 -9
  7. package/dist/{chunk-OQ6DTLZ6.js.map → chunk-VW4YRTVX.js.map} +1 -1
  8. package/dist/{chunk-6AQ7X3EE.js → chunk-WUCWNFHS.js} +5 -5
  9. package/dist/{chunk-3FAB54BI.js → chunk-YAACZXDE.js} +4 -4
  10. package/dist/{chunk-2T6QEWMI.js → chunk-YJ7MYXN4.js} +2 -2
  11. package/dist/{chunk-NYF3CUNC.js → chunk-YOMT5BFG.js} +2 -2
  12. package/dist/{chunk-VCHXOYD5.js → chunk-ZK26ZQ3P.js} +3 -3
  13. package/dist/components.js +7 -7
  14. package/dist/hooks.js +4 -4
  15. package/dist/index.js +10 -10
  16. package/dist/providers.js +3 -3
  17. package/dist/rbac/index.js +5 -5
  18. package/dist/utils.js +1 -1
  19. package/docs/api/classes/ErrorBoundary.md +1 -1
  20. package/docs/api/classes/InvalidScopeError.md +1 -1
  21. package/docs/api/classes/MissingUserContextError.md +1 -1
  22. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  23. package/docs/api/classes/PermissionDeniedError.md +1 -1
  24. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  25. package/docs/api/classes/RBACAuditManager.md +1 -1
  26. package/docs/api/classes/RBACCache.md +1 -1
  27. package/docs/api/classes/RBACEngine.md +1 -1
  28. package/docs/api/classes/RBACError.md +1 -1
  29. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  30. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  31. package/docs/api/interfaces/AggregateConfig.md +1 -1
  32. package/docs/api/interfaces/ButtonProps.md +1 -1
  33. package/docs/api/interfaces/CardProps.md +1 -1
  34. package/docs/api/interfaces/ColorPalette.md +1 -1
  35. package/docs/api/interfaces/ColorShade.md +1 -1
  36. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  37. package/docs/api/interfaces/DataTableAction.md +1 -1
  38. package/docs/api/interfaces/DataTableColumn.md +1 -1
  39. package/docs/api/interfaces/DataTableProps.md +1 -1
  40. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  41. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  42. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  43. package/docs/api/interfaces/EventContextType.md +1 -1
  44. package/docs/api/interfaces/EventLogoProps.md +1 -1
  45. package/docs/api/interfaces/EventProviderProps.md +1 -1
  46. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  47. package/docs/api/interfaces/FileUploadProps.md +1 -1
  48. package/docs/api/interfaces/FooterProps.md +1 -1
  49. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  50. package/docs/api/interfaces/InputProps.md +1 -1
  51. package/docs/api/interfaces/LabelProps.md +1 -1
  52. package/docs/api/interfaces/LoginFormProps.md +1 -1
  53. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  54. package/docs/api/interfaces/NavigationContextType.md +1 -1
  55. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  56. package/docs/api/interfaces/NavigationItem.md +1 -1
  57. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  58. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  59. package/docs/api/interfaces/Organisation.md +1 -1
  60. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  61. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  62. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  63. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  64. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  65. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  66. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  67. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  68. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  69. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  70. package/docs/api/interfaces/PaletteData.md +1 -1
  71. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  72. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  73. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  74. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  75. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  76. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  77. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  78. package/docs/api/interfaces/RBACConfig.md +1 -1
  79. package/docs/api/interfaces/RBACContextType.md +1 -1
  80. package/docs/api/interfaces/RBACLogger.md +1 -1
  81. package/docs/api/interfaces/RBACProviderProps.md +1 -1
  82. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  83. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  84. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  85. package/docs/api/interfaces/RouteConfig.md +1 -1
  86. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  87. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  88. package/docs/api/interfaces/StorageConfig.md +1 -1
  89. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  90. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  91. package/docs/api/interfaces/StorageListOptions.md +1 -1
  92. package/docs/api/interfaces/StorageListResult.md +1 -1
  93. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  94. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  95. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  96. package/docs/api/interfaces/StyleImport.md +1 -1
  97. package/docs/api/interfaces/ToastActionElement.md +1 -1
  98. package/docs/api/interfaces/ToastProps.md +1 -1
  99. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  100. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  101. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  102. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  103. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  104. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  105. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  106. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  107. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  108. package/docs/api/interfaces/UserEventAccess.md +1 -1
  109. package/docs/api/interfaces/UserMenuProps.md +1 -1
  110. package/docs/api/interfaces/UserProfile.md +1 -1
  111. package/docs/api/modules.md +3 -3
  112. package/package.json +1 -1
  113. package/src/providers/OrganisationProvider.tsx +44 -9
  114. /package/dist/{DataTable-PWLLTSP7.js.map → DataTable-CBZ4FWLB.js.map} +0 -0
  115. /package/dist/{chunk-GIISFLMP.js.map → chunk-QGIMHNFE.js.map} +0 -0
  116. /package/dist/{chunk-D4X7PPGX.js.map → chunk-RZZ4U2VB.js.map} +0 -0
  117. /package/dist/{chunk-3PNBACK3.js.map → chunk-TCPMEL3C.js.map} +0 -0
  118. /package/dist/{chunk-FZ7EBWOT.js.map → chunk-UK5BMO5B.js.map} +0 -0
  119. /package/dist/{chunk-6AQ7X3EE.js.map → chunk-WUCWNFHS.js.map} +0 -0
  120. /package/dist/{chunk-3FAB54BI.js.map → chunk-YAACZXDE.js.map} +0 -0
  121. /package/dist/{chunk-2T6QEWMI.js.map → chunk-YJ7MYXN4.js.map} +0 -0
  122. /package/dist/{chunk-NYF3CUNC.js.map → chunk-YOMT5BFG.js.map} +0 -0
  123. /package/dist/{chunk-VCHXOYD5.js.map → chunk-ZK26ZQ3P.js.map} +0 -0
@@ -32,11 +32,11 @@ import {
32
32
  useDataTableContext,
33
33
  usePluginRegistry,
34
34
  useStateManager
35
- } from "./chunk-GIISFLMP.js";
36
- import "./chunk-FZ7EBWOT.js";
35
+ } from "./chunk-QGIMHNFE.js";
36
+ import "./chunk-UK5BMO5B.js";
37
37
  import "./chunk-GWSBHC4J.js";
38
38
  import "./chunk-7BNPOCLL.js";
39
- import "./chunk-3PNBACK3.js";
39
+ import "./chunk-TCPMEL3C.js";
40
40
  import {
41
41
  DataChunkManager,
42
42
  SearchIndex,
@@ -48,7 +48,7 @@ import {
48
48
  throttle,
49
49
  useDataTablePerformance
50
50
  } from "./chunk-SS3E6QLB.js";
51
- import "./chunk-OQ6DTLZ6.js";
51
+ import "./chunk-VW4YRTVX.js";
52
52
  import "./chunk-YDJW5XTN.js";
53
53
  import "./chunk-MZBUOP4P.js";
54
54
  import "./chunk-WJARTBCT.js";
@@ -97,4 +97,4 @@ export {
97
97
  usePluginRegistry,
98
98
  useStateManager
99
99
  };
100
- //# sourceMappingURL=DataTable-PWLLTSP7.js.map
100
+ //# sourceMappingURL=DataTable-CBZ4FWLB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useCan
3
- } from "./chunk-FZ7EBWOT.js";
3
+ } from "./chunk-UK5BMO5B.js";
4
4
  import {
5
5
  useDataTablePerformance
6
6
  } from "./chunk-SS3E6QLB.js";
@@ -14,7 +14,7 @@ import {
14
14
  init_Button,
15
15
  init_UnifiedAuthProvider,
16
16
  useUnifiedAuth
17
- } from "./chunk-OQ6DTLZ6.js";
17
+ } from "./chunk-VW4YRTVX.js";
18
18
  import {
19
19
  getCurrentAppName,
20
20
  init_appNameResolver
@@ -5584,4 +5584,4 @@ export {
5584
5584
  GroupHeader,
5585
5585
  EditableRow
5586
5586
  };
5587
- //# sourceMappingURL=chunk-GIISFLMP.js.map
5587
+ //# sourceMappingURL=chunk-QGIMHNFE.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  init_EventProvider
3
- } from "./chunk-3PNBACK3.js";
3
+ } from "./chunk-TCPMEL3C.js";
4
4
  import {
5
5
  init_AuthProvider,
6
6
  init_InactivityProvider,
7
7
  init_OrganisationProvider,
8
8
  init_UnifiedAuthProvider
9
- } from "./chunk-OQ6DTLZ6.js";
9
+ } from "./chunk-VW4YRTVX.js";
10
10
 
11
11
  // src/providers/index.ts
12
12
  init_EventProvider();
@@ -14,4 +14,4 @@ init_OrganisationProvider();
14
14
  init_UnifiedAuthProvider();
15
15
  init_AuthProvider();
16
16
  init_InactivityProvider();
17
- //# sourceMappingURL=chunk-D4X7PPGX.js.map
17
+ //# sourceMappingURL=chunk-RZZ4U2VB.js.map
@@ -3,7 +3,7 @@ import {
3
3
  init_UnifiedAuthProvider,
4
4
  useOrganisations,
5
5
  useUnifiedAuth
6
- } from "./chunk-OQ6DTLZ6.js";
6
+ } from "./chunk-VW4YRTVX.js";
7
7
  import {
8
8
  DebugLogger,
9
9
  init_debugLogger,
@@ -261,4 +261,4 @@ export {
261
261
  EventProvider_exports,
262
262
  init_EventProvider
263
263
  };
264
- //# sourceMappingURL=chunk-3PNBACK3.js.map
264
+ //# sourceMappingURL=chunk-TCPMEL3C.js.map
@@ -7,13 +7,13 @@ import {
7
7
  import {
8
8
  init_EventProvider,
9
9
  useEvents
10
- } from "./chunk-3PNBACK3.js";
10
+ } from "./chunk-TCPMEL3C.js";
11
11
  import {
12
12
  init_OrganisationProvider,
13
13
  init_UnifiedAuthProvider,
14
14
  useOrganisations,
15
15
  useUnifiedAuth
16
- } from "./chunk-OQ6DTLZ6.js";
16
+ } from "./chunk-VW4YRTVX.js";
17
17
 
18
18
  // src/rbac/hooks/useRBAC.ts
19
19
  init_UnifiedAuthProvider();
@@ -506,4 +506,4 @@ export {
506
506
  useHasAllPermissions,
507
507
  useCachedPermissions
508
508
  };
509
- //# sourceMappingURL=chunk-FZ7EBWOT.js.map
509
+ //# sourceMappingURL=chunk-UK5BMO5B.js.map
@@ -7300,6 +7300,7 @@ function OrganisationProvider({ children }) {
7300
7300
  const [isLoading, setIsLoading] = useState7(true);
7301
7301
  const [error, setError] = useState7(null);
7302
7302
  const [isContextReady, setIsContextReady] = useState7(false);
7303
+ const [retryCount, setRetryCount] = useState7(0);
7303
7304
  const { user, session, supabase, signOut } = useUnifiedAuth();
7304
7305
  let navigate = null;
7305
7306
  try {
@@ -7307,6 +7308,17 @@ function OrganisationProvider({ children }) {
7307
7308
  } catch (error2) {
7308
7309
  navigate = null;
7309
7310
  }
7311
+ const clearAllCachedData = useCallback7(() => {
7312
+ localStorage.removeItem(STORAGE_KEYS2.SELECTED_ORGANISATION);
7313
+ localStorage.removeItem(STORAGE_KEYS2.ORGANISATION_CONTEXT);
7314
+ setSelectedOrganisation(null);
7315
+ setOrganisations([]);
7316
+ setUserMemberships([]);
7317
+ setRoleMapState(/* @__PURE__ */ new Map());
7318
+ setError(null);
7319
+ setRetryCount(0);
7320
+ setIsContextReady(false);
7321
+ }, []);
7310
7322
  const setDatabaseOrganisationContext = useCallback7(async (organisation) => {
7311
7323
  if (!supabase || !session) {
7312
7324
  console.warn("[OrganisationProvider] No Supabase client or session available for setting organisation context");
@@ -7405,7 +7417,13 @@ function OrganisationProvider({ children }) {
7405
7417
  throw new Error("No valid organisation IDs found in memberships");
7406
7418
  }
7407
7419
  DebugLogger.log("OrganisationProvider", "Valid organisation IDs:", organisationIds);
7408
- const { data: organisations2, error: orgError } = await supabase.from("organisations").select("id, name, display_name, subscription_tier, settings, is_active, parent_id, created_at, updated_at").in("id", organisationIds);
7420
+ const cleanOrganisationIds = organisationIds.filter((id) => id && id.trim() !== "");
7421
+ if (cleanOrganisationIds.length === 0) {
7422
+ console.warn("[OrganisationProvider] No clean organisation IDs after filtering:", organisationIds);
7423
+ throw new Error("No valid organisation IDs found after cleaning");
7424
+ }
7425
+ DebugLogger.log("OrganisationProvider", "Clean organisation IDs for query:", cleanOrganisationIds);
7426
+ const { data: organisations2, error: orgError } = await supabase.from("organisations").select("id, name, display_name, subscription_tier, settings, is_active, parent_id, created_at, updated_at").in("id", cleanOrganisationIds);
7409
7427
  if (orgError) {
7410
7428
  console.error("[OrganisationProvider] Error loading organisations:", orgError);
7411
7429
  throw orgError;
@@ -7470,20 +7488,25 @@ function OrganisationProvider({ children }) {
7470
7488
  totalOrganisations: activeOrgs.length,
7471
7489
  userRole: roleMap.get(initialOrg.id)
7472
7490
  });
7491
+ setRetryCount(0);
7473
7492
  } catch (err) {
7474
7493
  console.error("[OrganisationProvider] Failed to load organisations:", err);
7475
7494
  setError(err);
7476
- setSelectedOrganisation(null);
7477
- setOrganisations([]);
7478
- setUserMemberships([]);
7479
- localStorage.removeItem(STORAGE_KEYS2.SELECTED_ORGANISATION);
7495
+ setRetryCount((prev) => prev + 1);
7496
+ clearAllCachedData();
7480
7497
  } finally {
7481
7498
  setIsLoading(false);
7482
7499
  }
7483
- }, [user, session, supabase]);
7500
+ }, [user, session, supabase, clearAllCachedData]);
7484
7501
  useEffect7(() => {
7485
7502
  if (user && session && supabase && !isLoading) {
7486
- DebugLogger.log("OrganisationProvider", "Authentication stable, loading organizations...");
7503
+ if (retryCount >= 3) {
7504
+ console.error("[OrganisationProvider] Max retry count reached, stopping organisation loading");
7505
+ setError(new Error("Failed to load organisations after multiple attempts"));
7506
+ setIsLoading(false);
7507
+ return;
7508
+ }
7509
+ DebugLogger.log("OrganisationProvider", "Authentication stable, loading organizations... (retry:", retryCount, ")");
7487
7510
  loadUserOrganisations();
7488
7511
  } else if (!user && !session) {
7489
7512
  DebugLogger.log("OrganisationProvider", "No authentication, clearing organization state");
@@ -7493,10 +7516,11 @@ function OrganisationProvider({ children }) {
7493
7516
  setRoleMapState(/* @__PURE__ */ new Map());
7494
7517
  setIsLoading(false);
7495
7518
  setError(null);
7519
+ setRetryCount(0);
7496
7520
  localStorage.removeItem(STORAGE_KEYS2.SELECTED_ORGANISATION);
7497
7521
  localStorage.removeItem(STORAGE_KEYS2.ORGANISATION_CONTEXT);
7498
7522
  }
7499
- }, [user, session, supabase, isLoading, loadUserOrganisations]);
7523
+ }, [user, session, supabase, isLoading, loadUserOrganisations, retryCount]);
7500
7524
  const handleLogoutAndRedirect = useCallback7(async () => {
7501
7525
  try {
7502
7526
  await signOut();
@@ -7745,4 +7769,4 @@ lodash/lodash.js:
7745
7769
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7746
7770
  *)
7747
7771
  */
7748
- //# sourceMappingURL=chunk-OQ6DTLZ6.js.map
7772
+ //# sourceMappingURL=chunk-VW4YRTVX.js.map