dinocollab-core 2.0.2 → 2.0.4

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 (105) hide show
  1. package/dist/api-context.d.ts +2 -0
  2. package/dist/api-context.js +2 -0
  3. package/dist/api-context.mjs +2 -0
  4. package/dist/components.d.ts +2 -0
  5. package/dist/components.js +2 -0
  6. package/dist/components.mjs +2 -0
  7. package/dist/data-view.d.ts +2 -0
  8. package/dist/data-view.js +2 -0
  9. package/dist/data-view.mjs +2 -0
  10. package/dist/form.d.ts +2 -0
  11. package/dist/form.js +2 -0
  12. package/dist/form.mjs +2 -0
  13. package/dist/hooks.d.ts +2 -0
  14. package/dist/hooks.js +2 -0
  15. package/dist/hooks.mjs +2 -0
  16. package/dist/http-service.d.ts +2 -0
  17. package/dist/http-service.js +2 -0
  18. package/dist/http-service.mjs +2 -0
  19. package/dist/mfe-shared/auth.js +2 -0
  20. package/dist/mfe-shared/auth.js.map +1 -0
  21. package/dist/mfe-shared/auth.ssr.js +2 -0
  22. package/dist/mfe-shared/auth.ssr.js.map +1 -0
  23. package/dist/mfe-shared/auth.types.js +2 -0
  24. package/dist/mfe-shared/auth.types.js.map +1 -0
  25. package/dist/mfe-shared/cart.js +2 -0
  26. package/dist/mfe-shared/cart.js.map +1 -0
  27. package/dist/mfe-shared/cart.ssr.js +2 -0
  28. package/dist/mfe-shared/cart.ssr.js.map +1 -0
  29. package/dist/mfe-shared/environment.js +2 -0
  30. package/dist/mfe-shared/environment.js.map +1 -0
  31. package/dist/mfe-shared/hydration-helper.js +2 -0
  32. package/dist/mfe-shared/hydration-helper.js.map +1 -0
  33. package/dist/mfe-shared/index.js +2 -0
  34. package/dist/mfe-shared/mfe-bridge.js +2 -0
  35. package/dist/mfe-shared/mfe-bridge.js.map +1 -0
  36. package/dist/mfe-shared/navigation.js +2 -0
  37. package/dist/mfe-shared/navigation.js.map +1 -0
  38. package/dist/mfe-shared.d.ts +2 -0
  39. package/dist/mfe-shared.js +2 -0
  40. package/dist/mfe-shared.mjs +2 -0
  41. package/dist/redux.d.ts +2 -0
  42. package/dist/redux.js +2 -0
  43. package/dist/redux.mjs +2 -0
  44. package/dist/table-grid.d.ts +2 -0
  45. package/dist/table-grid.js +2 -0
  46. package/dist/table-grid.mjs +2 -0
  47. package/dist/table.d.ts +2 -0
  48. package/dist/table.js +2 -0
  49. package/dist/table.mjs +2 -0
  50. package/dist/types/mfe-shared/auth.d.ts +50 -0
  51. package/dist/types/mfe-shared/auth.ssr.d.ts +53 -0
  52. package/dist/types/mfe-shared/auth.types.d.ts +53 -0
  53. package/dist/types/mfe-shared/cart.d.ts +59 -0
  54. package/dist/types/mfe-shared/cart.debug.d.ts +8 -0
  55. package/dist/types/mfe-shared/cart.ssr.d.ts +39 -0
  56. package/dist/types/mfe-shared/environment.d.ts +18 -0
  57. package/dist/types/mfe-shared/hydration-helper.d.ts +46 -0
  58. package/dist/types/mfe-shared/index.d.ts +23 -0
  59. package/dist/types/mfe-shared/mfe-bridge.d.ts +46 -0
  60. package/dist/types/mfe-shared/navigation.d.ts +31 -0
  61. package/dist/types/mfe-shared/types.d.ts +11 -0
  62. package/dist/utils.d.ts +2 -0
  63. package/dist/utils.js +2 -0
  64. package/dist/utils.mjs +2 -0
  65. package/package.json +94 -33
  66. package/dist/mfe-auth/auth-enums.js +0 -2
  67. package/dist/mfe-auth/auth-enums.js.map +0 -1
  68. package/dist/mfe-auth/auth-mfe-manager.js +0 -2
  69. package/dist/mfe-auth/auth-mfe-manager.js.map +0 -1
  70. package/dist/mfe-auth/auth-mfe-provider.js +0 -2
  71. package/dist/mfe-auth/auth-mfe-provider.js.map +0 -1
  72. package/dist/mfe-auth/auth-types.js +0 -2
  73. package/dist/mfe-auth/auth-types.js.map +0 -1
  74. package/dist/mfe-auth/index.js +0 -2
  75. package/dist/mfe-auth/micro-frontend-auth-hooks.js +0 -2
  76. package/dist/mfe-auth/micro-frontend-auth-hooks.js.map +0 -1
  77. package/dist/mfe-navigate/index.js +0 -2
  78. package/dist/mfe-navigate/index.js.map +0 -1
  79. package/dist/mfe-navigate/mfe-navigate.debug.js +0 -2
  80. package/dist/mfe-navigate/mfe-navigate.debug.js.map +0 -1
  81. package/dist/mfe-navigate/mfe-navigate.remote.js +0 -2
  82. package/dist/mfe-navigate/mfe-navigate.remote.js.map +0 -1
  83. package/dist/mfe-navigate/nextjs/index.js +0 -2
  84. package/dist/mfe-navigate/nextjs/index.js.map +0 -1
  85. package/dist/mfe-navigate/nextjs/provider.js +0 -2
  86. package/dist/mfe-navigate/nextjs/provider.js.map +0 -1
  87. package/dist/mfe-navigate/react/index.js +0 -2
  88. package/dist/mfe-navigate/react/index.js.map +0 -1
  89. package/dist/mfe-navigate/react/provider.js +0 -2
  90. package/dist/mfe-navigate/react/provider.js.map +0 -1
  91. package/dist/types/mfe-auth/auth-enums.d.ts +0 -40
  92. package/dist/types/mfe-auth/auth-mfe-manager.d.ts +0 -68
  93. package/dist/types/mfe-auth/auth-mfe-provider.d.ts +0 -19
  94. package/dist/types/mfe-auth/auth-types.d.ts +0 -33
  95. package/dist/types/mfe-auth/index.d.ts +0 -6
  96. package/dist/types/mfe-auth/micro-frontend-auth-hooks.d.ts +0 -164
  97. package/dist/types/mfe-navigate/index.d.ts +0 -2
  98. package/dist/types/mfe-navigate/mfe-navigate.remote.d.ts +0 -11
  99. package/dist/types/mfe-navigate/nextjs/index.d.ts +0 -1
  100. package/dist/types/mfe-navigate/nextjs/provider.d.ts +0 -2
  101. package/dist/types/mfe-navigate/react/index.d.ts +0 -1
  102. package/dist/types/mfe-navigate/react/provider.d.ts +0 -3
  103. package/dist/types/mfe-navigate/types.d.ts +0 -13
  104. /package/dist/{mfe-auth → mfe-shared}/index.js.map +0 -0
  105. /package/dist/types/{mfe-navigate/mfe-navigate.debug.d.ts → mfe-shared/navigation.debug.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Utility functions to check the environment
3
+ */
4
+ /**
5
+ * Check if code is running in a browser environment
6
+ * @returns boolean indicating if window is available
7
+ */
8
+ export declare const isBrowser: () => boolean;
9
+ /**
10
+ * Safe access to window object for browser environments
11
+ * @returns window object or undefined
12
+ */
13
+ export declare const getBrowserGlobal: () => Window | undefined;
14
+ /**
15
+ * Safe access to globalThis object with browser fallback
16
+ * @returns globalThis object
17
+ */
18
+ export declare const getGlobal: () => any;
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ /**
3
+ * Hydration state for components
4
+ */
5
+ export declare enum IHydrationState {
6
+ /** Component is rendering on the server */
7
+ SERVER = "server",
8
+ /** Component is in the process of hydrating on the client */
9
+ HYDRATING = "hydrating",
10
+ /** Component is fully hydrated on the client */
11
+ HYDRATED = "hydrated"
12
+ }
13
+ /**
14
+ * Props for the HydrationGuard component
15
+ */
16
+ export interface IHydrationGuardProps {
17
+ /** Content to render */
18
+ children: React.ReactNode;
19
+ /** Optional fallback content to show during server rendering */
20
+ serverFallback?: React.ReactNode;
21
+ /** Optional fallback content to show during hydration */
22
+ hydrationFallback?: React.ReactNode;
23
+ /**
24
+ * Optional delay in milliseconds before considering the component hydrated
25
+ * This can help with "flash of content" issues
26
+ */
27
+ hydrationDelay?: number;
28
+ }
29
+ /**
30
+ * HydrationGuard - Component to handle SSR hydration
31
+ *
32
+ * This component helps manage the transition between server-rendered content
33
+ * and client-side hydration, allowing different content to be shown during
34
+ * different stages of the hydration process.
35
+ */
36
+ export declare const HydrationGuard: React.FC<IHydrationGuardProps>;
37
+ /**
38
+ * Hook to get the current hydration state
39
+ *
40
+ * Use this hook to conditionally run code based on whether the component
41
+ * is being rendered on the server or has been hydrated on the client.
42
+ *
43
+ * @param hydrationDelay Optional delay before considering the component hydrated
44
+ * @returns Current hydration state
45
+ */
46
+ export declare const useHydration: (hydrationDelay?: number) => IHydrationState;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * mfe-shared - Core library for micro-frontend communication and shared state
3
+ *
4
+ * This module provides a standardized way for micro-frontends to communicate and share state.
5
+ * Only the public API is exported here, internal implementation details are hidden.
6
+ */
7
+ export { mfeBridge } from './mfe-bridge';
8
+ export { AuthProvider } from './auth';
9
+ export type { IAuthProviderProps, ILoginParams, ILoginResponse } from './auth';
10
+ export { useAuth } from './auth';
11
+ export type { IAuthState, IUser } from './auth.types';
12
+ export { AUTH_CHANNELS } from './auth.types';
13
+ export { SsrAuthProvider } from './auth.ssr';
14
+ export { useCartStore, useCartActions } from './cart';
15
+ export type { ICartItem } from './cart';
16
+ export { CART_CHANNELS } from './cart';
17
+ export { SsrCartProvider } from './cart.ssr';
18
+ export { useMfeNavigate, MfeLink, MfeNavigateReactProvider } from './navigation';
19
+ export type { IMfeNavigate, IMfeLinkProps, NavigateFunction, AppSite, IMfeNavigateReactProviderProps } from './navigation';
20
+ export { NAVIGATION_CHANNELS } from './navigation';
21
+ export { isBrowser } from './environment';
22
+ export { HydrationGuard, useHydration } from './hydration-helper';
23
+ export type { IHydrationState } from './hydration-helper';
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Callback function type for event subscribers
3
+ * @template T Type of payload data
4
+ */
5
+ type ICallback<T = any> = (payload: T) => void;
6
+ /**
7
+ * Middleware function type for intercepting events
8
+ * @returns boolean|void Return false to cancel event propagation
9
+ */
10
+ type IMiddleware = (channel: string, payload: any) => boolean | void;
11
+ /**
12
+ * MfeBridge - Event-based communication system for micro-frontends
13
+ *
14
+ * This class provides a way for different micro-frontends to communicate
15
+ * with each other via a publish/subscribe pattern using CustomEvents.
16
+ * Includes SSR compatibility checks.
17
+ */
18
+ declare class MfeBridge {
19
+ private middlewares;
20
+ /**
21
+ * Subscribe to events on a specific channel
22
+ * @template T Type of payload data
23
+ * @param channel The channel to subscribe to
24
+ * @param callback Function to call when an event occurs on this channel
25
+ * @returns Unsubscribe function to remove the event listener
26
+ */
27
+ subscribe<T = any>(channel: string, callback: ICallback<T>): () => void;
28
+ /**
29
+ * Publish an event to a specific channel
30
+ * @template T Type of payload data
31
+ * @param channel The channel to publish to
32
+ * @param payload Data to send with the event
33
+ */
34
+ publish<T = any>(channel: string, payload: T): void;
35
+ /**
36
+ * Add middleware to intercept events before they're published
37
+ * @param middleware Function that can inspect or modify events
38
+ */
39
+ use(middleware: IMiddleware): void;
40
+ /**
41
+ * Remove all middleware
42
+ */
43
+ clearMiddlewares(): void;
44
+ }
45
+ export declare const mfeBridge: MfeBridge;
46
+ export {};
@@ -0,0 +1,31 @@
1
+ import { type AnchorHTMLAttributes, type FC } from 'react';
2
+ export declare const NAVIGATION_CHANNELS: {
3
+ NAVIGATE: string;
4
+ };
5
+ export type AppSite = 'client' | 'home' | 'music';
6
+ export type IMfeNavigateHref = {
7
+ primaryHref: string;
8
+ secondaryHref?: string;
9
+ };
10
+ export interface IMfeNavigate {
11
+ primaryHref: string;
12
+ secondaryHref?: string;
13
+ internal?: boolean;
14
+ site?: AppSite;
15
+ options?: any;
16
+ target?: '_self' | '_blank';
17
+ }
18
+ export declare const useMfeNavigate: () => {
19
+ navigate: (params: IMfeNavigate) => void;
20
+ };
21
+ export interface IMfeLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
22
+ internal?: boolean;
23
+ primaryHref: string;
24
+ secondaryHref?: string;
25
+ }
26
+ export declare const MfeLink: FC<IMfeLinkProps>;
27
+ export type NavigateFunction<O = any> = (path: string, options?: O) => void;
28
+ export interface IMfeNavigateReactProviderProps {
29
+ navigate: NavigateFunction;
30
+ }
31
+ export declare const MfeNavigateReactProvider: FC<IMfeNavigateReactProviderProps>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Type definitions for mfe-shared library
3
+ *
4
+ * This file is used to re-export all types from the library
5
+ * to ensure they're available to consumers.
6
+ */
7
+ export type { IAuthState, IUser } from './auth.types';
8
+ export type { IAuthProviderProps, ILoginParams, ILoginResponse } from './auth';
9
+ export type { ICartItem } from './cart';
10
+ export type { AppSite, IMfeNavigate, IMfeNavigateHref, IMfeLinkProps, NavigateFunction, IMfeNavigateReactProviderProps } from './navigation';
11
+ export type { IHydrationState } from './hydration-helper';
@@ -0,0 +1,2 @@
1
+ // Re-export types from utils submodule
2
+ export * from './types/utils/index';
package/dist/utils.js ADDED
@@ -0,0 +1,2 @@
1
+ // Re-export from utils submodule
2
+ module.exports = require('./utils/index.js');
package/dist/utils.mjs ADDED
@@ -0,0 +1,2 @@
1
+ // Re-export from utils submodule (ESM)
2
+ export * from './utils/index.js';
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "dinocollab-core",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "types": "dist/types/index.d.ts",
8
8
  "sideEffects": false,
9
9
  "scripts": {
10
- "build": "npx rimraf dist && rollup -c",
10
+ "build": "npx rimraf dist && rollup -c && node create-proxy-files.js",
11
11
  "build:watch": "rollup -c -w",
12
- "build:analyze": "npx rimraf dist && rollup -c",
12
+ "build:analyze": "npx rimraf dist && rollup -c && node create-proxy-files.js",
13
13
  "calc-size": "node calc-build-size.js"
14
14
  },
15
15
  "bin": {
@@ -21,46 +21,73 @@
21
21
  ],
22
22
  "typesVersions": {
23
23
  "*": {
24
+ ".": [
25
+ "./dist/types/index.d.ts"
26
+ ],
24
27
  "api-context": [
28
+ "./dist/api-context.d.ts"
29
+ ],
30
+ "./api-context": [
25
31
  "./dist/types/api-context/index.d.ts"
26
32
  ],
27
33
  "components": [
34
+ "./dist/components.d.ts"
35
+ ],
36
+ "./components": [
28
37
  "./dist/types/components/index.d.ts"
29
38
  ],
30
39
  "data-view": [
40
+ "./dist/data-view.d.ts"
41
+ ],
42
+ "./data-view": [
31
43
  "./dist/types/data-view/index.d.ts"
32
44
  ],
33
45
  "form": [
46
+ "./dist/form.d.ts"
47
+ ],
48
+ "./form": [
34
49
  "./dist/types/form/index.d.ts"
35
50
  ],
36
51
  "hooks": [
52
+ "./dist/hooks.d.ts"
53
+ ],
54
+ "./hooks": [
37
55
  "./dist/types/hooks/index.d.ts"
38
56
  ],
39
57
  "http-service": [
40
- "./dist/types/http-service/index.d.ts"
58
+ "./dist/http-service.d.ts"
41
59
  ],
42
- "mfe-auth": [
43
- "./dist/types/mfe-auth/index.d.ts"
44
- ],
45
- "mfe-navigate": [
46
- "./dist/types/mfe-navigate/index.d.ts"
60
+ "./http-service": [
61
+ "./dist/types/http-service/index.d.ts"
47
62
  ],
48
- "mfe-navigate/react": [
49
- "./dist/types/mfe-navigate/react/index.d.ts"
63
+ "mfe-shared": [
64
+ "./dist/mfe-shared.d.ts"
50
65
  ],
51
- "mfe-navigate/nextjs": [
52
- "./dist/types/mfe-navigate/nextjs/index.d.ts"
66
+ "./mfe-shared": [
67
+ "./dist/types/mfe-shared/index.d.ts"
53
68
  ],
54
69
  "redux": [
70
+ "./dist/redux.d.ts"
71
+ ],
72
+ "./redux": [
55
73
  "./dist/types/redux/index.d.ts"
56
74
  ],
57
75
  "table": [
76
+ "./dist/table.d.ts"
77
+ ],
78
+ "./table": [
58
79
  "./dist/types/table/index.d.ts"
59
80
  ],
60
81
  "table-grid": [
82
+ "./dist/table-grid.d.ts"
83
+ ],
84
+ "./table-grid": [
61
85
  "./dist/types/table-grid/index.d.ts"
62
86
  ],
63
87
  "utils": [
88
+ "./dist/utils.d.ts"
89
+ ],
90
+ "./utils": [
64
91
  "./dist/types/utils/index.d.ts"
65
92
  ]
66
93
  }
@@ -68,64 +95,98 @@
68
95
  "exports": {
69
96
  ".": {
70
97
  "import": "./dist/index.js",
98
+ "require": "./dist/index.js",
71
99
  "types": "./dist/types/index.d.ts"
72
100
  },
73
101
  "./api-context": {
74
102
  "import": "./dist/api-context/index.js",
103
+ "require": "./dist/api-context/index.js",
75
104
  "types": "./dist/types/api-context/index.d.ts"
76
105
  },
106
+ "./api-context.js": "./dist/api-context.js",
107
+ "./api-context.mjs": "./dist/api-context.mjs",
108
+ "./api-context.d.ts": "./dist/api-context.d.ts",
77
109
  "./components": {
78
110
  "import": "./dist/components/index.js",
111
+ "require": "./dist/components/index.js",
79
112
  "types": "./dist/types/components/index.d.ts"
80
113
  },
114
+ "./components.js": "./dist/components.js",
115
+ "./components.mjs": "./dist/components.mjs",
116
+ "./components.d.ts": "./dist/components.d.ts",
81
117
  "./data-view": {
82
118
  "import": "./dist/data-view/index.js",
119
+ "require": "./dist/data-view/index.js",
83
120
  "types": "./dist/types/data-view/index.d.ts"
84
121
  },
122
+ "./data-view.js": "./dist/data-view.js",
123
+ "./data-view.mjs": "./dist/data-view.mjs",
124
+ "./data-view.d.ts": "./dist/data-view.d.ts",
85
125
  "./form": {
86
126
  "import": "./dist/form/index.js",
127
+ "require": "./dist/form/index.js",
87
128
  "types": "./dist/types/form/index.d.ts"
88
129
  },
130
+ "./form.js": "./dist/form.js",
131
+ "./form.mjs": "./dist/form.mjs",
132
+ "./form.d.ts": "./dist/form.d.ts",
89
133
  "./hooks": {
90
134
  "import": "./dist/hooks/index.js",
135
+ "require": "./dist/hooks/index.js",
91
136
  "types": "./dist/types/hooks/index.d.ts"
92
137
  },
138
+ "./hooks.js": "./dist/hooks.js",
139
+ "./hooks.mjs": "./dist/hooks.mjs",
140
+ "./hooks.d.ts": "./dist/hooks.d.ts",
93
141
  "./http-service": {
94
142
  "import": "./dist/http-service/index.js",
143
+ "require": "./dist/http-service/index.js",
95
144
  "types": "./dist/types/http-service/index.d.ts"
96
145
  },
97
- "./mfe-auth": {
98
- "import": "./dist/mfe-auth/index.js",
99
- "types": "./dist/types/mfe-auth/index.d.ts"
100
- },
101
- "./mfe-navigate": {
102
- "import": "./dist/mfe-navigate/index.js",
103
- "types": "./dist/types/mfe-navigate/index.d.ts"
104
- },
105
- "./mfe-navigate/react": {
106
- "import": "./dist/mfe-navigate/react/index.js",
107
- "types": "./dist/types/mfe-navigate/react/index.d.ts"
108
- },
109
- "./mfe-navigate/nextjs": {
110
- "import": "./dist/mfe-navigate/nextjs/index.js",
111
- "types": "./dist/types/mfe-navigate/nextjs/index.d.ts"
112
- },
113
- "./utils": {
114
- "import": "./dist/utils/index.js",
115
- "types": "./dist/types/utils/index.d.ts"
146
+ "./http-service.js": "./dist/http-service.js",
147
+ "./http-service.mjs": "./dist/http-service.mjs",
148
+ "./http-service.d.ts": "./dist/http-service.d.ts",
149
+ "./mfe-shared": {
150
+ "import": "./dist/mfe-shared/index.js",
151
+ "require": "./dist/mfe-shared/index.js",
152
+ "types": "./dist/types/mfe-shared/index.d.ts"
116
153
  },
154
+ "./mfe-shared.js": "./dist/mfe-shared.js",
155
+ "./mfe-shared.mjs": "./dist/mfe-shared.mjs",
156
+ "./mfe-shared.d.ts": "./dist/mfe-shared.d.ts",
117
157
  "./redux": {
118
158
  "import": "./dist/redux/index.js",
159
+ "require": "./dist/redux/index.js",
119
160
  "types": "./dist/types/redux/index.d.ts"
120
161
  },
162
+ "./redux.js": "./dist/redux.js",
163
+ "./redux.mjs": "./dist/redux.mjs",
164
+ "./redux.d.ts": "./dist/redux.d.ts",
121
165
  "./table": {
122
166
  "import": "./dist/table/index.js",
167
+ "require": "./dist/table/index.js",
123
168
  "types": "./dist/types/table/index.d.ts"
124
169
  },
170
+ "./table.js": "./dist/table.js",
171
+ "./table.mjs": "./dist/table.mjs",
172
+ "./table.d.ts": "./dist/table.d.ts",
125
173
  "./table-grid": {
126
174
  "import": "./dist/table-grid/index.js",
175
+ "require": "./dist/table-grid/index.js",
127
176
  "types": "./dist/types/table-grid/index.d.ts"
128
- }
177
+ },
178
+ "./table-grid.js": "./dist/table-grid.js",
179
+ "./table-grid.mjs": "./dist/table-grid.mjs",
180
+ "./table-grid.d.ts": "./dist/table-grid.d.ts",
181
+ "./utils": {
182
+ "import": "./dist/utils/index.js",
183
+ "require": "./dist/utils/index.js",
184
+ "types": "./dist/types/utils/index.d.ts"
185
+ },
186
+ "./utils.js": "./dist/utils.js",
187
+ "./utils.mjs": "./dist/utils.mjs",
188
+ "./utils.d.ts": "./dist/utils.d.ts",
189
+ "./package.json": "./package.json"
129
190
  },
130
191
  "keywords": [],
131
192
  "author": "@dinocollab",
@@ -1,2 +0,0 @@
1
- var E,A;!function(E){E.UNAUTHENTICATED="UNAUTHENTICATED",E.AUTHENTICATED="AUTHENTICATED",E.AUTHENTICATING="AUTHENTICATING",E.LOADING="LOADING",E.ERROR="ERROR"}(E||(E={})),function(E){E.DASHBOARD="DASHBOARD",E.PROFILE="PROFILE",E.SETTINGS="SETTINGS",E.MEDIA_STORE="MEDIA_STORE",E.APP_HEADER="APP_HEADER",E.APP_FOOTER="APP_FOOTER",E.VIDEO_GROUP="VIDEO_GROUP",E.TRACK_GROUP="TRACK_GROUP",E.GENERIC="GENERIC"}(A||(A={}));export{E as AuthStatus,A as MicroFrontendType};
2
- //# sourceMappingURL=auth-enums.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-enums.js","sources":["../../src/mfe-auth/auth-enums.ts"],"sourcesContent":["/**\r\n * Authentication Status Enumeration\r\n * Defines possible states of user authentication\r\n */\r\nexport enum AuthStatus {\r\n /** User is not authenticated */\r\n UNAUTHENTICATED = 'UNAUTHENTICATED',\r\n\r\n /** User is successfully authenticated */\r\n AUTHENTICATED = 'AUTHENTICATED',\r\n\r\n /** Authentication process is in progress */\r\n AUTHENTICATING = 'AUTHENTICATING',\r\n\r\n /** Loading authentication state or user data */\r\n LOADING = 'LOADING',\r\n\r\n /** Authentication error occurred */\r\n ERROR = 'ERROR'\r\n}\r\n\r\n/**\r\n * Micro Frontend Type Enumeration\r\n * Identifies different types of micro frontend components\r\n */\r\nexport enum MicroFrontendType {\r\n /** Main dashboard component */\r\n DASHBOARD = 'DASHBOARD',\r\n\r\n /** User profile component */\r\n PROFILE = 'PROFILE',\r\n\r\n /** Settings and configuration component */\r\n SETTINGS = 'SETTINGS',\r\n\r\n /** Media store and gallery component */\r\n MEDIA_STORE = 'MEDIA_STORE',\r\n\r\n /** Application header component */\r\n APP_HEADER = 'APP_HEADER',\r\n\r\n /** Application footer component */\r\n APP_FOOTER = 'APP_FOOTER',\r\n\r\n /** Video player and gallery component */\r\n VIDEO_GROUP = 'VIDEO_GROUP',\r\n\r\n /** Audio track and playlist component */\r\n TRACK_GROUP = 'TRACK_GROUP',\r\n\r\n /** Generic or custom micro frontend component */\r\n GENERIC = 'GENERIC'\r\n}\r\n"],"names":["AuthStatus","MicroFrontendType"],"mappings":"IAIYA,EAqBAC,GArBZ,SAAYD,GAEVA,EAAA,gBAAA,kBAGAA,EAAA,cAAA,gBAGAA,EAAA,eAAA,iBAGAA,EAAA,QAAA,UAGAA,EAAA,MAAA,OACD,CAfD,CAAYA,IAAAA,EAeX,CAAA,IAMD,SAAYC,GAEVA,EAAA,UAAA,YAGAA,EAAA,QAAA,UAGAA,EAAA,SAAA,WAGAA,EAAA,YAAA,cAGAA,EAAA,WAAA,aAGAA,EAAA,WAAA,aAGAA,EAAA,YAAA,cAGAA,EAAA,YAAA,cAGAA,EAAA,QAAA,SACD,CA3BD,CAAYA,IAAAA,EA2BX,CAAA"}
@@ -1,2 +0,0 @@
1
- import{createClass as t,objectSpread2 as e,classCallCheck as n,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{defaultAuthData as a}from"./auth-types.js";var s=function(){function s(){n(this,s),i(this,"authData",a),i(this,"listeners",new Map),i(this,"isInitialized",!1),this.initializeGlobalWindow(),this.setupEventListeners()}return t(s,[{key:"initializeGlobalWindow",value:function(){var t=this;"undefined"!=typeof window&&(window.__AUTH_MFE__={getAuthData:function(){return t.authData},setAuthData:function(e){return t.updateAuthData(e)},subscribe:function(e,n){return t.subscribe(e,n)},unsubscribe:function(e,n){return t.unsubscribe(e,n)},version:"1.0.0"},this.isInitialized=!0)}},{key:"setupEventListeners",value:function(){"undefined"!=typeof window&&(window.addEventListener("auth:request",this.handleAuthRequest.bind(this)),window.addEventListener("auth:login",this.handleLoginRequest.bind(this)),window.addEventListener("auth:logout",this.handleLogoutRequest.bind(this)))}},{key:"handleAuthRequest",value:function(t){var n=(t.detail||{}).microFrontendId;n&&window.dispatchEvent(new CustomEvent("auth:response",{detail:e(e({},this.authData),{},{microFrontendId:n,timestamp:Date.now()})}))}},{key:"handleLoginRequest",value:function(t){var e=(t.detail||{}).microFrontendId;window.dispatchEvent(new CustomEvent("auth:hostLogin",{detail:{microFrontendId:e,timestamp:Date.now()}}))}},{key:"handleLogoutRequest",value:function(t){var e=(t.detail||{}).microFrontendId;window.dispatchEvent(new CustomEvent("auth:hostLogout",{detail:{microFrontendId:e,timestamp:Date.now()}}))}},{key:"updateAuthData",value:function(t){var n=this;this.authData=e(e(e({},this.authData),t),{},{timestamp:Date.now()}),this.listeners.forEach((function(t,i){t.forEach((function(t){try{t(e(e({},n.authData),{},{microFrontendId:i}))}catch(t){console.error("Auth MFE: Error notifying ".concat(i,":"),t)}}))})),window.dispatchEvent(new CustomEvent("auth:stateChanged",{detail:this.authData}))}},{key:"subscribe",value:function(t,n){this.listeners.has(t)||this.listeners.set(t,[]),this.listeners.get(t).push(n),n(e(e({},this.authData),{},{microFrontendId:t}))}},{key:"unsubscribe",value:function(t,e){var n=this.listeners.get(t);if(n){var i=n.indexOf(e);i>-1&&n.splice(i,1),0===n.length&&this.listeners.delete(t)}}},{key:"getAuthData",value:function(){return e({},this.authData)}},{key:"isReady",value:function(){return this.isInitialized&&"undefined"!=typeof window&&!!window.__AUTH_MFE__}},{key:"getDebugInfo",value:function(){return{isInitialized:this.isInitialized,authData:this.authData,subscriberCount:Array.from(this.listeners.values()).reduce((function(t,e){return t+e.length}),0),subscribers:Array.from(this.listeners.keys()),windowAvailable:"undefined"!=typeof window,globalObjectAvailable:"undefined"!=typeof window&&!!window.__AUTH_MFE__}}}],[{key:"getInstance",value:function(){return s.instance||(s.instance=new s),s.instance}}])}();export{s as default};
2
- //# sourceMappingURL=auth-mfe-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-mfe-manager.js","sources":["../../src/mfe-auth/auth-mfe-manager.ts"],"sourcesContent":["import { AuthEventData, AuthEventListener, defaultAuthData } from './auth-types'\r\n\r\n/**\r\n * Global Authentication Manager for Module Federation\r\n * Manages authentication state across host and micro frontend applications\r\n */\r\nclass AuthMFEManager {\r\n private static instance: AuthMFEManager\r\n private authData: AuthEventData = defaultAuthData\r\n private listeners: Map<string, AuthEventListener[]> = new Map()\r\n private isInitialized = false\r\n\r\n private constructor() {\r\n this.initializeGlobalWindow()\r\n this.setupEventListeners()\r\n }\r\n\r\n /**\r\n * Get singleton instance\r\n */\r\n static getInstance(): AuthMFEManager {\r\n if (!AuthMFEManager.instance) {\r\n AuthMFEManager.instance = new AuthMFEManager()\r\n }\r\n return AuthMFEManager.instance\r\n }\r\n\r\n /**\r\n * Initialize global window object for cross-component communication\r\n */\r\n private initializeGlobalWindow(): void {\r\n if (typeof window !== 'undefined') {\r\n ;(window as any).__AUTH_MFE__ = {\r\n getAuthData: () => this.authData,\r\n setAuthData: (data: AuthEventData) => this.updateAuthData(data),\r\n subscribe: (microFrontendId: string, callback: AuthEventListener) => this.subscribe(microFrontendId, callback),\r\n unsubscribe: (microFrontendId: string, callback: AuthEventListener) => this.unsubscribe(microFrontendId, callback),\r\n version: '1.0.0'\r\n }\r\n this.isInitialized = true\r\n }\r\n }\r\n\r\n /**\r\n * Setup event listeners for authentication events\r\n */\r\n private setupEventListeners(): void {\r\n if (typeof window === 'undefined') return\r\n\r\n // Listen for auth requests from micro frontends\r\n window.addEventListener('auth:request', this.handleAuthRequest.bind(this) as EventListener)\r\n\r\n // Listen for login/logout requests\r\n window.addEventListener('auth:login', this.handleLoginRequest.bind(this) as EventListener)\r\n window.addEventListener('auth:logout', this.handleLogoutRequest.bind(this) as EventListener)\r\n }\r\n\r\n /**\r\n * Handle authentication state requests\r\n */\r\n private handleAuthRequest(event: Event): void {\r\n const customEvent = event as CustomEvent\r\n const { microFrontendId } = customEvent.detail || {}\r\n\r\n if (microFrontendId) {\r\n // Send current auth state to requesting micro frontend\r\n window.dispatchEvent(\r\n new CustomEvent('auth:response', {\r\n detail: { ...this.authData, microFrontendId, timestamp: Date.now() }\r\n })\r\n )\r\n }\r\n }\r\n\r\n /**\r\n * Handle login requests from micro frontends\r\n */\r\n private handleLoginRequest(event: Event): void {\r\n const customEvent = event as CustomEvent\r\n const { microFrontendId } = customEvent.detail || {}\r\n\r\n // Dispatch to host application\r\n window.dispatchEvent(\r\n new CustomEvent('auth:hostLogin', {\r\n detail: { microFrontendId, timestamp: Date.now() }\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Handle logout requests from micro frontends\r\n */\r\n private handleLogoutRequest(event: Event): void {\r\n const customEvent = event as CustomEvent\r\n const { microFrontendId } = customEvent.detail || {}\r\n\r\n // Dispatch to host application\r\n window.dispatchEvent(\r\n new CustomEvent('auth:hostLogout', {\r\n detail: { microFrontendId, timestamp: Date.now() }\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Update authentication data and notify all subscribers\r\n */\r\n updateAuthData(newData: Partial<AuthEventData>): void {\r\n this.authData = { ...this.authData, ...newData, timestamp: Date.now() }\r\n\r\n // Notify all subscribed micro frontends\r\n this.listeners.forEach((callbacks, microFrontendId) => {\r\n callbacks.forEach((callback) => {\r\n try {\r\n callback({ ...this.authData, microFrontendId })\r\n } catch (error) {\r\n console.error(`Auth MFE: Error notifying ${microFrontendId}:`, error)\r\n }\r\n })\r\n })\r\n\r\n // Broadcast to all components via custom event\r\n window.dispatchEvent(new CustomEvent('auth:stateChanged', { detail: this.authData }))\r\n }\r\n\r\n /**\r\n * Subscribe to authentication changes\r\n */\r\n subscribe(microFrontendId: string, callback: AuthEventListener): void {\r\n if (!this.listeners.has(microFrontendId)) {\r\n this.listeners.set(microFrontendId, [])\r\n }\r\n this.listeners.get(microFrontendId)!.push(callback)\r\n\r\n // Immediately provide current auth state\r\n callback({ ...this.authData, microFrontendId })\r\n }\r\n\r\n /**\r\n * Unsubscribe from authentication changes\r\n */\r\n unsubscribe(microFrontendId: string, callback: AuthEventListener): void {\r\n const callbacks = this.listeners.get(microFrontendId)\r\n if (callbacks) {\r\n const index = callbacks.indexOf(callback)\r\n if (index > -1) {\r\n callbacks.splice(index, 1)\r\n }\r\n\r\n // Clean up empty listener arrays\r\n if (callbacks.length === 0) {\r\n this.listeners.delete(microFrontendId)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get current authentication data\r\n */\r\n getAuthData(): AuthEventData {\r\n return { ...this.authData }\r\n }\r\n\r\n /**\r\n * Check if manager is initialized\r\n */\r\n isReady(): boolean {\r\n return this.isInitialized && typeof window !== 'undefined' && !!(window as any).__AUTH_MFE__\r\n }\r\n\r\n /**\r\n * Get debug information\r\n */\r\n getDebugInfo() {\r\n return {\r\n isInitialized: this.isInitialized,\r\n authData: this.authData,\r\n subscriberCount: Array.from(this.listeners.values()).reduce((sum, arr) => sum + arr.length, 0),\r\n subscribers: Array.from(this.listeners.keys()),\r\n windowAvailable: typeof window !== 'undefined',\r\n globalObjectAvailable: typeof window !== 'undefined' && !!(window as any).__AUTH_MFE__\r\n }\r\n }\r\n}\r\n\r\nexport default AuthMFEManager\r\n"],"names":["AuthMFEManager","_classCallCheck","_defineProperty","defaultAuthData","this","Map","initializeGlobalWindow","setupEventListeners","_createClass","key","value","_this","window","__AUTH_MFE__","getAuthData","authData","setAuthData","data","updateAuthData","subscribe","microFrontendId","callback","unsubscribe","version","isInitialized","addEventListener","handleAuthRequest","bind","handleLoginRequest","handleLogoutRequest","event","detail","dispatchEvent","CustomEvent","_objectSpread","timestamp","Date","now","newData","_this2","listeners","forEach","callbacks","error","console","concat","has","set","get","push","index","indexOf","splice","length","subscriberCount","Array","from","values","reduce","sum","arr","subscribers","keys","windowAvailable","globalObjectAvailable","instance"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{slicedToArray as e,asyncToGenerator as t,regenerator as n,objectSpread2 as r}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,Fragment as o,jsxs as i}from"react/jsx-runtime";import{useState as s,useCallback as u,useEffect as d}from"react";import{authService as c}from"partner-oidc-auth";import{AuthStatus as l}from"./auth-enums.js";import{defaultAuthData as v}from"./auth-types.js";import m from"./auth-mfe-manager.js";var f=function(i){var f=i.children,p=s(v),h=e(p,2);h[0];var g=h[1],w=s(!0),E=e(w,2);E[0];var U=E[1],A=m.getInstance(),b=u(t(n().m((function e(){var t,r,a,o,i;return n().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,U(!0),e.n=1,c.isAuthenticated();case 1:if(!e.v){e.n=3;break}return e.n=2,c.getUser();case 2:t=e.v,r={status:l.AUTHENTICATED,email:(null==t?void 0:t.email)||"Unknown Email",displayName:(null==t?void 0:t.name)||"Unknown User",avatar:(null==t?void 0:t.picture)||"Unknown Avatar",timestamp:Date.now()},g(r),A.updateAuthData(r),e.n=4;break;case 3:a={status:l.UNAUTHENTICATED,timestamp:Date.now()},g(a),A.updateAuthData(a);case 4:e.n=6;break;case 5:e.p=5,i=e.v,console.error("Auth MFE: Failed to initialize authentication:",i),o={status:l.ERROR,error:i instanceof Error?i.message:"Authentication initialization failed",timestamp:Date.now()},g(o),A.updateAuthData(o);case 6:return e.p=6,U(!1),e.f(6);case 7:return e.a(2)}}),e,null,[[0,5,6,7]])}))),[A]),D=u(t(n().m((function e(){var t,a;return n().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,g((function(e){return r(r({},e),{},{status:l.AUTHENTICATING,timestamp:Date.now()})})),e.n=1,c.signIn({returnUrl:c.getReturnUrl()});case 1:e.n=3;break;case 2:e.p=2,a=e.v,console.error("Auth MFE: Login failed:",a),t={status:l.ERROR,error:a instanceof Error?a.message:"Login failed",timestamp:Date.now()},g(t),A.updateAuthData(t);case 3:return e.a(2)}}),e,null,[[0,2]])}))),[A]),T=u(t(n().m((function e(){var t,r,a;return n().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,c.signOut({returnUrl:c.getReturnUrl()});case 1:t={status:l.UNAUTHENTICATED,timestamp:Date.now()},g(t),A.updateAuthData(t),e.n=3;break;case 2:e.p=2,a=e.v,console.error("Auth MFE: Logout failed:",a),r={status:l.UNAUTHENTICATED,error:a instanceof Error?a.message:"Logout failed",timestamp:Date.now()},g(r),A.updateAuthData(r);case 3:return e.a(2)}}),e,null,[[0,2]])}))),[A]);return d((function(){b()}),[b]),d((function(){var e=function(){return D()},t=function(){return T()};return window.addEventListener("auth:hostLogin",e),window.addEventListener("auth:hostLogout",t),function(){window.removeEventListener("auth:hostLogin",e),window.removeEventListener("auth:hostLogout",t)}}),[D,T]),d((function(){var e=function(){b()};return c.userManager&&(c.userManager.events.addUserLoaded(e),c.userManager.events.addUserUnloaded(e),c.userManager.events.addUserSignedOut(e)),function(){c.userManager&&(c.userManager.events.removeUserLoaded(e),c.userManager.events.removeUserUnloaded(e),c.userManager.events.removeUserSignedOut(e))}}),[b]),a(o,{children:f})},p=function(t){var n,o,u,c=t.position,l=void 0===c?{bottom:"60px",left:"10px"}:c,v=s({}),f=e(v,2),p=f[0],h=f[1],g=m.getInstance();return d((function(){var e=function(){h(g.getDebugInfo())};e();var t=function(){return e()};window.addEventListener("auth:stateChanged",t);var n=setInterval(e,2e3);return function(){window.removeEventListener("auth:stateChanged",t),clearInterval(n)}}),[g]),"production"===process.env.NODE_ENV?null:i("div",{style:r({position:"fixed",background:"rgba(0, 0, 0, 0.9)",color:"white",padding:"10px",borderRadius:"5px",fontSize:"12px",fontFamily:"monospace",maxWidth:"300px",zIndex:9999},l),children:[a("div",{style:{fontWeight:"bold",marginBottom:"5px"},children:"🔐 Auth MFE Debug (Host)"}),i("div",{children:["Status: ",null===(n=p.authData)||void 0===n?void 0:n.status]}),i("div",{children:["User: ",(null===(o=p.authData)||void 0===o?void 0:o.displayName)||"None"]}),i("div",{children:["Subscribers: ",p.subscriberCount]}),i("div",{children:["MFEs: ",(null===(u=p.subscribers)||void 0===u?void 0:u.join(", "))||"None"]}),i("div",{children:["Global Ready: ",p.globalObjectAvailable?"✅":"❌"]}),i("div",{children:["Initialized: ",p.isInitialized?"✅":"❌"]})]})};export{p as AuthMFEProviderDebug,f as default};
2
- //# sourceMappingURL=auth-mfe-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-mfe-provider.js","sources":["../../src/mfe-auth/auth-mfe-provider.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback, CSSProperties, FC } from 'react'\r\nimport { authService } from 'partner-oidc-auth'\r\nimport { AuthStatus } from './auth-enums'\r\nimport { AuthEventData, defaultAuthData } from './auth-types'\r\nimport AuthMFEManager from './auth-mfe-manager'\r\n\r\nexport interface AuthMFEProviderProps {\r\n children: React.ReactNode\r\n}\r\n\r\n/**\r\n * Authentication MFE Provider Component\r\n * Provides authentication state management for the host application\r\n * Handles communication with micro frontends via global window object\r\n */\r\nconst AuthMFEProvider: FC<AuthMFEProviderProps> = ({ children }) => {\r\n const [authData, setAuthData] = useState<AuthEventData>(defaultAuthData)\r\n const [isLoading, setIsLoading] = useState(true)\r\n\r\n // Get the auth manager instance\r\n const authManager = AuthMFEManager.getInstance()\r\n\r\n /**\r\n * Initialize authentication state from auth service\r\n */\r\n const initializeAuth = useCallback(async () => {\r\n try {\r\n setIsLoading(true)\r\n\r\n // Check if user is already authenticated\r\n const isAuthenticated = await authService.isAuthenticated()\r\n\r\n if (isAuthenticated) {\r\n const user = await authService.getUser()\r\n const newAuthData: AuthEventData = {\r\n status: AuthStatus.AUTHENTICATED,\r\n email: user?.email || 'Unknown Email',\r\n displayName: user?.name || 'Unknown User',\r\n avatar: user?.picture || 'Unknown Avatar',\r\n timestamp: Date.now()\r\n }\r\n\r\n setAuthData(newAuthData)\r\n authManager.updateAuthData(newAuthData)\r\n } else {\r\n const unauthenticatedData: AuthEventData = {\r\n status: AuthStatus.UNAUTHENTICATED,\r\n timestamp: Date.now()\r\n }\r\n\r\n setAuthData(unauthenticatedData)\r\n authManager.updateAuthData(unauthenticatedData)\r\n }\r\n } catch (error) {\r\n console.error('Auth MFE: Failed to initialize authentication:', error)\r\n const errorData: AuthEventData = {\r\n status: AuthStatus.ERROR,\r\n error: error instanceof Error ? error.message : 'Authentication initialization failed',\r\n timestamp: Date.now()\r\n }\r\n\r\n setAuthData(errorData)\r\n authManager.updateAuthData(errorData)\r\n } finally {\r\n setIsLoading(false)\r\n }\r\n }, [authManager])\r\n\r\n /**\r\n * Handle login requests from micro frontends\r\n */\r\n const handleLoginRequest = useCallback(async () => {\r\n try {\r\n setAuthData((prev) => ({\r\n ...prev,\r\n status: AuthStatus.AUTHENTICATING,\r\n timestamp: Date.now()\r\n }))\r\n\r\n await authService.signIn({ returnUrl: authService.getReturnUrl() })\r\n // Auth state will be updated by the redirect callback\r\n } catch (error) {\r\n console.error('Auth MFE: Login failed:', error)\r\n const errorData: AuthEventData = {\r\n status: AuthStatus.ERROR,\r\n error: error instanceof Error ? error.message : 'Login failed',\r\n timestamp: Date.now()\r\n }\r\n\r\n setAuthData(errorData)\r\n authManager.updateAuthData(errorData)\r\n }\r\n }, [authManager])\r\n\r\n /**\r\n * Handle logout requests from micro frontends\r\n */\r\n const handleLogoutRequest = useCallback(async () => {\r\n try {\r\n await authService.signOut({ returnUrl: authService.getReturnUrl() })\r\n\r\n const loggedOutData: AuthEventData = {\r\n status: AuthStatus.UNAUTHENTICATED,\r\n timestamp: Date.now()\r\n }\r\n\r\n setAuthData(loggedOutData)\r\n authManager.updateAuthData(loggedOutData)\r\n } catch (error) {\r\n console.error('Auth MFE: Logout failed:', error)\r\n // Even if logout fails, treat as logged out\r\n const loggedOutData: AuthEventData = {\r\n status: AuthStatus.UNAUTHENTICATED,\r\n error: error instanceof Error ? error.message : 'Logout failed',\r\n timestamp: Date.now()\r\n }\r\n\r\n setAuthData(loggedOutData)\r\n authManager.updateAuthData(loggedOutData)\r\n }\r\n }, [authManager])\r\n\r\n // Initialize authentication on mount\r\n useEffect(() => {\r\n initializeAuth()\r\n }, [initializeAuth])\r\n\r\n // Listen for host authentication events\r\n useEffect(() => {\r\n const handleHostLogin = () => handleLoginRequest()\r\n const handleHostLogout = () => handleLogoutRequest()\r\n\r\n window.addEventListener('auth:hostLogin', handleHostLogin)\r\n window.addEventListener('auth:hostLogout', handleHostLogout)\r\n\r\n return () => {\r\n window.removeEventListener('auth:hostLogin', handleHostLogin)\r\n window.removeEventListener('auth:hostLogout', handleHostLogout)\r\n }\r\n }, [handleLoginRequest, handleLogoutRequest])\r\n\r\n // Listen for auth service changes (e.g., from redirect callbacks)\r\n useEffect(() => {\r\n const handleAuthChange = () => {\r\n // Re-initialize auth state when auth service state changes\r\n initializeAuth()\r\n }\r\n\r\n // Listen for user loaded events from oidc-client\r\n if (authService.userManager) {\r\n authService.userManager.events.addUserLoaded(handleAuthChange)\r\n authService.userManager.events.addUserUnloaded(handleAuthChange)\r\n authService.userManager.events.addUserSignedOut(handleAuthChange)\r\n }\r\n\r\n return () => {\r\n if (authService.userManager) {\r\n authService.userManager.events.removeUserLoaded(handleAuthChange)\r\n authService.userManager.events.removeUserUnloaded(handleAuthChange)\r\n authService.userManager.events.removeUserSignedOut(handleAuthChange)\r\n }\r\n }\r\n }, [initializeAuth])\r\n\r\n return <>{children}</>\r\n}\r\n\r\nexport default AuthMFEProvider\r\n\r\nexport interface IAuthMFEProviderDebugProps {\r\n position?: Pick<CSSProperties, 'top' | 'left' | 'right' | 'bottom'>\r\n}\r\n\r\n/**\r\n * Debug component to show current authentication state\r\n * Only renders in development mode\r\n */\r\nexport const AuthMFEProviderDebug: FC<IAuthMFEProviderDebugProps> = (props) => {\r\n const { position = { bottom: '60px', left: '10px' } } = props\r\n const [debugInfo, setDebugInfo] = useState<any>({})\r\n const authManager = AuthMFEManager.getInstance()\r\n\r\n useEffect(() => {\r\n const updateDebugInfo = () => {\r\n setDebugInfo(authManager.getDebugInfo())\r\n }\r\n\r\n updateDebugInfo()\r\n\r\n // Update debug info when auth state changes\r\n const handleAuthChange = () => updateDebugInfo()\r\n window.addEventListener('auth:stateChanged', handleAuthChange)\r\n\r\n const interval = setInterval(updateDebugInfo, 2000) // Update every 2 seconds\r\n\r\n return () => {\r\n window.removeEventListener('auth:stateChanged', handleAuthChange)\r\n clearInterval(interval)\r\n }\r\n }, [authManager])\r\n\r\n // Only show in development\r\n if (process.env.NODE_ENV === 'production') {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n background: 'rgba(0, 0, 0, 0.9)',\r\n color: 'white',\r\n padding: '10px',\r\n borderRadius: '5px',\r\n fontSize: '12px',\r\n fontFamily: 'monospace',\r\n maxWidth: '300px',\r\n zIndex: 9999,\r\n ...position\r\n }}\r\n >\r\n <div style={{ fontWeight: 'bold', marginBottom: '5px' }}>🔐 Auth MFE Debug (Host)</div>\r\n <div>Status: {debugInfo.authData?.status}</div>\r\n <div>User: {debugInfo.authData?.displayName || 'None'}</div>\r\n <div>Subscribers: {debugInfo.subscriberCount}</div>\r\n <div>MFEs: {debugInfo.subscribers?.join(', ') || 'None'}</div>\r\n <div>Global Ready: {debugInfo.globalObjectAvailable ? '✅' : '❌'}</div>\r\n <div>Initialized: {debugInfo.isInitialized ? '✅' : '❌'}</div>\r\n </div>\r\n )\r\n}\r\n"],"names":["AuthMFEProvider","_ref","children","_useState","useState","defaultAuthData","_useState2","_slicedToArray","setAuthData","_useState3","_useState4","setIsLoading","authManager","AuthMFEManager","getInstance","initializeAuth","useCallback","_asyncToGenerator","_regenerator","m","_callee","user","newAuthData","unauthenticatedData","errorData","_t","w","_context","n","p","authService","isAuthenticated","v","getUser","status","AuthStatus","AUTHENTICATED","email","displayName","name","avatar","picture","timestamp","Date","now","updateAuthData","UNAUTHENTICATED","console","error","ERROR","Error","message","f","a","handleLoginRequest","_callee2","_t2","_context2","prev","_objectSpread","AUTHENTICATING","signIn","returnUrl","getReturnUrl","handleLogoutRequest","_callee3","loggedOutData","_loggedOutData","_t3","_context3","signOut","useEffect","handleHostLogin","handleHostLogout","window","addEventListener","removeEventListener","handleAuthChange","userManager","events","addUserLoaded","addUserUnloaded","addUserSignedOut","removeUserLoaded","removeUserUnloaded","removeUserSignedOut","_jsx","_Fragment","AuthMFEProviderDebug","props","_debugInfo$authData","_debugInfo$authData2","_debugInfo$subscriber","_props$position","position","bottom","left","_useState5","_useState6","debugInfo","setDebugInfo","updateDebugInfo","getDebugInfo","interval","setInterval","clearInterval","process","env","NODE_ENV","_jsxs","style","background","color","padding","borderRadius","fontSize","fontFamily","maxWidth","zIndex","fontWeight","marginBottom","authData","subscriberCount","subscribers","join","globalObjectAvailable","isInitialized"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{AuthStatus as t}from"./auth-enums.js";var a={status:t.UNAUTHENTICATED,timestamp:Date.now()};export{a as defaultAuthData};
2
- //# sourceMappingURL=auth-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-types.js","sources":["../../src/mfe-auth/auth-types.ts"],"sourcesContent":["import { AuthStatus } from './auth-enums'\r\n\r\n/**\r\n * Authentication Event Data Interface\r\n * Structure for communication between host and micro frontends\r\n */\r\nexport interface AuthEventData {\r\n /** Current authentication status */\r\n status: AuthStatus\r\n \r\n /** User display name (if authenticated) */\r\n displayName?: string\r\n \r\n /** User avatar URL (if authenticated) */\r\n avatar?: string\r\n \r\n /** Unique user identifier (if authenticated) */\r\n userId?: string\r\n \r\n /** User email address (if authenticated) */\r\n email?: string\r\n \r\n /** Additional user profile data */\r\n profile?: Record<string, any>\r\n \r\n /** Error message (if status is ERROR) */\r\n error?: string\r\n \r\n /** Timestamp of the authentication event */\r\n timestamp: number\r\n \r\n /** Source micro frontend identifier */\r\n microFrontendId?: string\r\n}\r\n\r\n/**\r\n * Authentication Event Listener Type\r\n */\r\nexport type AuthEventListener = (data: AuthEventData) => void\r\n\r\n/**\r\n * Default authentication data for unauthenticated state\r\n */\r\nexport const defaultAuthData: AuthEventData = {\r\n status: AuthStatus.UNAUTHENTICATED,\r\n timestamp: Date.now()\r\n}\r\n"],"names":["defaultAuthData","status","AuthStatus","UNAUTHENTICATED","timestamp","Date","now"],"mappings":"6CA2CO,IAAMA,EAAiC,CAC5CC,OAAQC,EAAWC,gBACnBC,UAAWC,KAAKC"}
@@ -1,2 +0,0 @@
1
- export{AuthStatus,MicroFrontendType}from"./auth-enums.js";export{defaultAuthData}from"./auth-types.js";export{default as AuthMFEManager}from"./auth-mfe-manager.js";export{default as AuthMFEProvider,AuthMFEProviderDebug}from"./auth-mfe-provider.js";export{MicroFrontendAuth,MicroFrontendAuthConsumer,MicroFrontendAuthDebug,microFrontendAuthUtils,useMicroFrontendAuth,useMicroFrontendAuthActions,withMicroFrontendAuth}from"./micro-frontend-auth-hooks.js";
2
- //# sourceMappingURL=index.js.map
@@ -1,2 +0,0 @@
1
- import{createClass as t,objectSpread2 as e,asyncToGenerator as n,slicedToArray as i,regenerator as r,classCallCheck as o,defineProperty as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,Fragment as u,jsxs as d}from"react/jsx-runtime";import{useState as h,useEffect as c,useCallback as l}from"react";import{defaultAuthData as f}from"./auth-types.js";import{AuthStatus as m}from"./auth-enums.js";var v=function(){return t((function t(e){o(this,t),s(this,"authData",f),s(this,"listeners",[]),s(this,"retryCount",0),s(this,"isInitialized",!1),s(this,"initPromise",null),this.microFrontendId=e,this.initialize()}),[{key:"initialize",value:(a=n(r().m((function t(){return r().w((function(t){for(;;)switch(t.n){case 0:if(!this.initPromise){t.n=1;break}return t.a(2,this.initPromise);case 1:return this.initPromise=this.tryInitialize(),t.a(2,this.initPromise)}}),t,this)}))),function(){return a.apply(this,arguments)})},{key:"tryInitialize",value:(i=n(r().m((function t(){var e=this;return r().w((function(t){for(;;)if(0===t.n)return t.a(2,new Promise((function(t,n){var i=function(){"undefined"!=typeof window&&window.__AUTH_MFE__?(e.setupConnection(),e.isInitialized=!0,t()):e.retryCount<20?(e.retryCount++,setTimeout(i,500)):n(new Error("Failed to connect to global auth manager"))};i()})))}),t)}))),function(){return i.apply(this,arguments)})},{key:"setupConnection",value:function(){"undefined"!=typeof window&&window.__AUTH_MFE__&&(window.__AUTH_MFE__.subscribe(this.microFrontendId,this.handleAuthChange.bind(this)),window.addEventListener("auth:response",this.handleAuthResponse.bind(this)),window.addEventListener("auth:stateChanged",this.handleStateChanged.bind(this)),this.requestAuthState())}},{key:"handleAuthChange",value:function(t){this.authData=e(e({},t),{},{microFrontendId:this.microFrontendId}),this.notifyListeners()}},{key:"handleAuthResponse",value:function(t){var e=t.detail;e&&e.microFrontendId===this.microFrontendId&&(this.authData=e,this.notifyListeners())}},{key:"handleStateChanged",value:function(t){var n=t.detail;n&&(this.authData=e(e({},n),{},{microFrontendId:this.microFrontendId}),this.notifyListeners())}},{key:"requestAuthState",value:function(){window.dispatchEvent(new CustomEvent("auth:request",{detail:{microFrontendId:this.microFrontendId,timestamp:Date.now()}}))}},{key:"notifyListeners",value:function(){var t=this;this.listeners.forEach((function(e){try{e(t.authData)}catch(e){console.error("Auth MFE: Error in listener for ".concat(t.microFrontendId,":"),e)}}))}},{key:"subscribe",value:function(t){var e=this;return this.listeners.push(t),this.isInitialized&&t(this.authData),function(){var n=e.listeners.indexOf(t);n>-1&&e.listeners.splice(n,1)}}},{key:"getAuthData",value:function(){return e({},this.authData)}},{key:"requestLogin",value:function(){window.dispatchEvent(new CustomEvent("auth:login",{detail:{microFrontendId:this.microFrontendId,timestamp:Date.now()}}))}},{key:"requestLogout",value:function(){window.dispatchEvent(new CustomEvent("auth:logout",{detail:{microFrontendId:this.microFrontendId,timestamp:Date.now()}}))}},{key:"isConnected",value:function(){return this.isInitialized&&"undefined"!=typeof window&&!!window.__AUTH_MFE__}},{key:"getDebugInfo",value:function(){return{microFrontendId:this.microFrontendId,isInitialized:this.isInitialized,isConnected:this.isConnected(),retryCount:this.retryCount,authData:this.authData,listenerCount:this.listeners.length,globalAvailable:"undefined"!=typeof window&&!!window.__AUTH_MFE__}}},{key:"destroy",value:function(){this.listeners=[],"undefined"!=typeof window&&(window.removeEventListener("auth:response",this.handleAuthResponse.bind(this)),window.removeEventListener("auth:stateChanged",this.handleStateChanged.bind(this)))}}]);var i,a}(),p=new Map;function w(t){return p.has(t)||p.set(t,new v(t)),p.get(t)}function g(t){var e=h(f),n=i(e,2),r=n[0],o=n[1],s=h(!0),a=i(s,2),u=a[0],d=a[1],v=w(t);c((function(){var t=v.subscribe((function(t){o(t),d(!1)}));return function(){t()}}),[v]);var p=l((function(){v.requestLogin()}),[v]),g=l((function(){v.requestLogout()}),[v]);return{isAuthenticated:r.status===m.AUTHENTICATED,isLoading:u||r.status===m.LOADING,isAuthenticating:r.status===m.AUTHENTICATING,hasError:r.status===m.ERROR,displayName:r.displayName,email:r.email,userId:r.userId,avatar:r.avatar,profile:r.profile,status:r.status,error:r.error,timestamp:r.timestamp,login:p,logout:g,authData:r,isConnected:v.isConnected(),debugInfo:v.getDebugInfo()}}function y(t){var e=w(t);return{login:l((function(){e.requestLogin()}),[e]),logout:l((function(){e.requestLogout()}),[e])}}function I(t){var e=t.microFrontendId,n=t.children,i=g(e);return a(u,{children:n(i)})}function C(t,n){return function(i){var r=g(n);return a(t,e(e({},i),{},{auth:r}))}}var F={getCurrentAuth:function(t){return w(t).getAuthData()},requestLogin:function(t){w(t).requestLogin()},requestLogout:function(t){w(t).requestLogout()},createAuthInstance:function(t){return w(t)}},_=function(t){var n=t.microFrontendId,i=t.position,r=void 0===i?{bottom:"60px",left:"10px"}:i,o=g(n),s=o.debugInfo,a=o.authData,u=o.isConnected;return"production"===process.env.NODE_ENV?null:d("div",{style:e({position:"fixed",background:"rgba(0, 0, 0, 0.8)",color:"white",padding:"10px",borderRadius:"5px",fontSize:"12px",fontFamily:"monospace",maxWidth:"300px",zIndex:9998},r),children:[d("div",{style:{fontWeight:"bold",marginBottom:"5px"},children:["🔗 Auth MFE Debug (",n,")"]}),d("div",{children:["Status: ",a.status]}),d("div",{children:["User: ",a.displayName||"None"]}),d("div",{children:["Connected: ",u?"✅":"❌"]}),d("div",{children:["Initialized: ",s.isInitialized?"✅":"❌"]}),d("div",{children:["Retries: ",s.retryCount]}),d("div",{children:["Listeners: ",s.listenerCount]})]})};export{v as MicroFrontendAuth,I as MicroFrontendAuthConsumer,_ as MicroFrontendAuthDebug,F as microFrontendAuthUtils,g as useMicroFrontendAuth,y as useMicroFrontendAuthActions,C as withMicroFrontendAuth};
2
- //# sourceMappingURL=micro-frontend-auth-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"micro-frontend-auth-hooks.js","sources":["../../src/mfe-auth/micro-frontend-auth-hooks.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, FC, CSSProperties } from 'react'\r\nimport { AuthEventData, AuthEventListener, defaultAuthData } from './auth-types'\r\nimport { AuthStatus } from './auth-enums'\r\n\r\n// Retry configuration for micro frontend initialization\r\nconst MAX_RETRIES = 20\r\nconst RETRY_DELAY = 500 // ms\r\n\r\n/**\r\n * Authentication Manager for Micro Frontends\r\n * Manages connection to global auth state via window object\r\n */\r\nclass MicroFrontendAuth {\r\n private microFrontendId: string\r\n private authData: AuthEventData = defaultAuthData\r\n private listeners: AuthEventListener[] = []\r\n private retryCount = 0\r\n private isInitialized = false\r\n private initPromise: Promise<void> | null = null\r\n\r\n constructor(microFrontendId: string) {\r\n this.microFrontendId = microFrontendId\r\n this.initialize()\r\n }\r\n\r\n /**\r\n * Initialize connection to global auth manager\r\n */\r\n private async initialize(): Promise<void> {\r\n if (this.initPromise) {\r\n return this.initPromise\r\n }\r\n\r\n this.initPromise = this.tryInitialize()\r\n return this.initPromise\r\n }\r\n\r\n private async tryInitialize(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const attemptConnection = () => {\r\n if (typeof window !== 'undefined' && (window as any).__AUTH_MFE__) {\r\n this.setupConnection()\r\n this.isInitialized = true\r\n resolve()\r\n } else if (this.retryCount < MAX_RETRIES) {\r\n this.retryCount++\r\n setTimeout(attemptConnection, RETRY_DELAY)\r\n } else {\r\n reject(new Error('Failed to connect to global auth manager'))\r\n }\r\n }\r\n\r\n attemptConnection()\r\n })\r\n }\r\n\r\n /**\r\n * Setup connection to global auth manager\r\n */\r\n private setupConnection(): void {\r\n if (typeof window === 'undefined' || !(window as any).__AUTH_MFE__) {\r\n return\r\n }\r\n\r\n // Subscribe to auth changes\r\n const globalAuth = (window as any).__AUTH_MFE__\r\n globalAuth.subscribe(this.microFrontendId, this.handleAuthChange.bind(this))\r\n\r\n // Listen for auth responses\r\n window.addEventListener('auth:response', this.handleAuthResponse.bind(this))\r\n window.addEventListener('auth:stateChanged', this.handleStateChanged.bind(this))\r\n\r\n // Request current auth state\r\n this.requestAuthState()\r\n }\r\n\r\n /**\r\n * Handle authentication state changes from global manager\r\n */\r\n private handleAuthChange(data: AuthEventData): void {\r\n this.authData = { ...data, microFrontendId: this.microFrontendId }\r\n this.notifyListeners()\r\n }\r\n\r\n /**\r\n * Handle auth response events\r\n */\r\n private handleAuthResponse(event: Event): void {\r\n const customEvent = event as CustomEvent\r\n const data = customEvent.detail\r\n\r\n if (data && data.microFrontendId === this.microFrontendId) {\r\n this.authData = data\r\n this.notifyListeners()\r\n }\r\n }\r\n\r\n /**\r\n * Handle global auth state changes\r\n */\r\n private handleStateChanged(event: Event): void {\r\n const customEvent = event as CustomEvent\r\n const data = customEvent.detail\r\n\r\n if (data) {\r\n this.authData = { ...data, microFrontendId: this.microFrontendId }\r\n this.notifyListeners()\r\n }\r\n }\r\n\r\n /**\r\n * Request current authentication state\r\n */\r\n private requestAuthState(): void {\r\n window.dispatchEvent(\r\n new CustomEvent('auth:request', {\r\n detail: { microFrontendId: this.microFrontendId, timestamp: Date.now() }\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Notify all listeners of auth changes\r\n */\r\n private notifyListeners(): void {\r\n this.listeners.forEach((listener) => {\r\n try {\r\n listener(this.authData)\r\n } catch (error) {\r\n console.error(`Auth MFE: Error in listener for ${this.microFrontendId}:`, error)\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Subscribe to authentication changes\r\n */\r\n subscribe(listener: AuthEventListener): () => void {\r\n this.listeners.push(listener)\r\n\r\n // Immediately provide current auth state if available\r\n if (this.isInitialized) {\r\n listener(this.authData)\r\n }\r\n\r\n // Return unsubscribe function\r\n return () => {\r\n const index = this.listeners.indexOf(listener)\r\n if (index > -1) {\r\n this.listeners.splice(index, 1)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get current authentication data\r\n */\r\n getAuthData(): AuthEventData {\r\n return { ...this.authData }\r\n }\r\n\r\n /**\r\n * Request login from host application\r\n */\r\n requestLogin(): void {\r\n window.dispatchEvent(\r\n new CustomEvent('auth:login', {\r\n detail: { microFrontendId: this.microFrontendId, timestamp: Date.now() }\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Request logout from host application\r\n */\r\n requestLogout(): void {\r\n window.dispatchEvent(\r\n new CustomEvent('auth:logout', {\r\n detail: { microFrontendId: this.microFrontendId, timestamp: Date.now() }\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Check if connected to global auth manager\r\n */\r\n isConnected(): boolean {\r\n return this.isInitialized && typeof window !== 'undefined' && !!(window as any).__AUTH_MFE__\r\n }\r\n\r\n /**\r\n * Get debug information\r\n */\r\n getDebugInfo() {\r\n return {\r\n microFrontendId: this.microFrontendId,\r\n isInitialized: this.isInitialized,\r\n isConnected: this.isConnected(),\r\n retryCount: this.retryCount,\r\n authData: this.authData,\r\n listenerCount: this.listeners.length,\r\n globalAvailable: typeof window !== 'undefined' && !!(window as any).__AUTH_MFE__\r\n }\r\n }\r\n\r\n /**\r\n * Cleanup when component unmounts\r\n */\r\n destroy(): void {\r\n this.listeners = []\r\n if (typeof window !== 'undefined') {\r\n window.removeEventListener('auth:response', this.handleAuthResponse.bind(this))\r\n window.removeEventListener('auth:stateChanged', this.handleStateChanged.bind(this))\r\n }\r\n }\r\n}\r\n\r\n// Cache for auth instances to prevent multiple instances for same ID\r\nconst authInstances = new Map<string, MicroFrontendAuth>()\r\n\r\n/**\r\n * Get or create auth instance for micro frontend\r\n */\r\nfunction getAuthInstance(microFrontendId: string): MicroFrontendAuth {\r\n if (!authInstances.has(microFrontendId)) {\r\n authInstances.set(microFrontendId, new MicroFrontendAuth(microFrontendId))\r\n }\r\n return authInstances.get(microFrontendId)!\r\n}\r\n\r\n/**\r\n * React Hook for Micro Frontend Authentication\r\n * Primary hook for function components\r\n */\r\nexport function useMicroFrontendAuth(microFrontendId: string) {\r\n const [authData, setAuthData] = useState<AuthEventData>(defaultAuthData)\r\n const [isLoading, setIsLoading] = useState(true)\r\n\r\n const authInstance = getAuthInstance(microFrontendId)\r\n\r\n useEffect(() => {\r\n const unsubscribe = authInstance.subscribe((data) => {\r\n setAuthData(data)\r\n setIsLoading(false)\r\n })\r\n\r\n return () => {\r\n unsubscribe()\r\n }\r\n }, [authInstance])\r\n\r\n const login = useCallback(() => {\r\n authInstance.requestLogin()\r\n }, [authInstance])\r\n\r\n const logout = useCallback(() => {\r\n authInstance.requestLogout()\r\n }, [authInstance])\r\n\r\n return {\r\n // Auth status\r\n isAuthenticated: authData.status === AuthStatus.AUTHENTICATED,\r\n isLoading: isLoading || authData.status === AuthStatus.LOADING,\r\n isAuthenticating: authData.status === AuthStatus.AUTHENTICATING,\r\n hasError: authData.status === AuthStatus.ERROR,\r\n\r\n // User data\r\n displayName: authData.displayName,\r\n email: authData.email,\r\n userId: authData.userId,\r\n avatar: authData.avatar,\r\n profile: authData.profile,\r\n\r\n // Status and error\r\n status: authData.status,\r\n error: authData.error,\r\n timestamp: authData.timestamp,\r\n\r\n // Actions\r\n login,\r\n logout,\r\n\r\n // Raw data and debug\r\n authData,\r\n isConnected: authInstance.isConnected(),\r\n debugInfo: authInstance.getDebugInfo()\r\n }\r\n}\r\n\r\n/**\r\n * React Hook for Authentication Actions Only\r\n * Lightweight hook for components that only need actions\r\n */\r\nexport function useMicroFrontendAuthActions(microFrontendId: string) {\r\n const authInstance = getAuthInstance(microFrontendId)\r\n\r\n const login = useCallback(() => {\r\n authInstance.requestLogin()\r\n }, [authInstance])\r\n\r\n const logout = useCallback(() => {\r\n authInstance.requestLogout()\r\n }, [authInstance])\r\n\r\n return { login, logout }\r\n}\r\n\r\n/**\r\n * Consumer Component for Class Components or Render Props Pattern\r\n */\r\ninterface MicroFrontendAuthConsumerProps {\r\n microFrontendId: string\r\n children: (authData: ReturnType<typeof useMicroFrontendAuth>) => React.ReactNode\r\n}\r\n\r\nexport function MicroFrontendAuthConsumer({ microFrontendId, children }: MicroFrontendAuthConsumerProps) {\r\n const authData = useMicroFrontendAuth(microFrontendId)\r\n return <>{children(authData)}</>\r\n}\r\n\r\n/**\r\n * Higher-Order Component for Class Components\r\n */\r\nexport function withMicroFrontendAuth<P extends object>(\r\n Component: React.ComponentType<P & { auth: ReturnType<typeof useMicroFrontendAuth> }>,\r\n microFrontendId: string\r\n) {\r\n return function WrappedComponent(props: P) {\r\n const auth = useMicroFrontendAuth(microFrontendId)\r\n return <Component {...props} auth={auth} />\r\n }\r\n}\r\n\r\n/**\r\n * Utility functions for non-React contexts\r\n */\r\nexport const microFrontendAuthUtils = {\r\n /**\r\n * Get current auth state synchronously\r\n */\r\n getCurrentAuth: (microFrontendId: string): AuthEventData => {\r\n const authInstance = getAuthInstance(microFrontendId)\r\n return authInstance.getAuthData()\r\n },\r\n\r\n /**\r\n * Request login from any context\r\n */\r\n requestLogin: (microFrontendId: string): void => {\r\n const authInstance = getAuthInstance(microFrontendId)\r\n authInstance.requestLogin()\r\n },\r\n\r\n /**\r\n * Request logout from any context\r\n */\r\n requestLogout: (microFrontendId: string): void => {\r\n const authInstance = getAuthInstance(microFrontendId)\r\n authInstance.requestLogout()\r\n },\r\n\r\n /**\r\n * Create or get auth instance\r\n */\r\n createAuthInstance: (microFrontendId: string): MicroFrontendAuth => {\r\n return getAuthInstance(microFrontendId)\r\n }\r\n}\r\n\r\n/**\r\n * Debug component for micro frontends\r\n */\r\ninterface MicroFrontendAuthDebugProps {\r\n microFrontendId: string\r\n position?: Pick<CSSProperties, 'top' | 'left' | 'right' | 'bottom'>\r\n}\r\n\r\nexport const MicroFrontendAuthDebug: FC<MicroFrontendAuthDebugProps> = ({ microFrontendId, position = { bottom: '60px', left: '10px' } }) => {\r\n const { debugInfo, authData, isConnected } = useMicroFrontendAuth(microFrontendId)\r\n\r\n // Only show in development\r\n if (process.env.NODE_ENV === 'production') {\r\n return null\r\n }\r\n\r\n return (\r\n <div\r\n style={{\r\n position: 'fixed',\r\n background: 'rgba(0, 0, 0, 0.8)',\r\n color: 'white',\r\n padding: '10px',\r\n borderRadius: '5px',\r\n fontSize: '12px',\r\n fontFamily: 'monospace',\r\n maxWidth: '300px',\r\n zIndex: 9998,\r\n ...position\r\n }}\r\n >\r\n <div style={{ fontWeight: 'bold', marginBottom: '5px' }}>🔗 Auth MFE Debug ({microFrontendId})</div>\r\n <div>Status: {authData.status}</div>\r\n <div>User: {authData.displayName || 'None'}</div>\r\n <div>Connected: {isConnected ? '✅' : '❌'}</div>\r\n <div>Initialized: {debugInfo.isInitialized ? '✅' : '❌'}</div>\r\n <div>Retries: {debugInfo.retryCount}</div>\r\n <div>Listeners: {debugInfo.listenerCount}</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport { MicroFrontendAuth }\r\n"],"names":["MicroFrontendAuth","_createClass","microFrontendId","_classCallCheck","_defineProperty","defaultAuthData","this","initialize","key","value","_initialize","_asyncToGenerator","_regenerator","m","_callee","w","_context","n","initPromise","a","tryInitialize","apply","arguments","_tryInitialize","_callee2","_this","_context2","Promise","resolve","reject","attemptConnection","window","__AUTH_MFE__","setupConnection","isInitialized","retryCount","setTimeout","Error","subscribe","handleAuthChange","bind","addEventListener","handleAuthResponse","handleStateChanged","requestAuthState","data","authData","_objectSpread","notifyListeners","event","detail","dispatchEvent","CustomEvent","timestamp","Date","now","_this2","listeners","forEach","listener","error","console","concat","_this3","push","index","indexOf","splice","isConnected","listenerCount","length","globalAvailable","removeEventListener","authInstances","Map","getAuthInstance","has","set","get","useMicroFrontendAuth","_useState","useState","_useState2","_slicedToArray","setAuthData","_useState3","_useState4","isLoading","setIsLoading","authInstance","useEffect","unsubscribe","login","useCallback","requestLogin","logout","requestLogout","isAuthenticated","status","AuthStatus","AUTHENTICATED","LOADING","isAuthenticating","AUTHENTICATING","hasError","ERROR","displayName","email","userId","avatar","profile","debugInfo","getDebugInfo","useMicroFrontendAuthActions","MicroFrontendAuthConsumer","_ref","children","_jsx","withMicroFrontendAuth","Component","props","auth","microFrontendAuthUtils","getCurrentAuth","getAuthData","createAuthInstance","MicroFrontendAuthDebug","_ref2","_ref2$position","position","bottom","left","_useMicroFrontendAuth","process","env","NODE_ENV","_jsxs","style","background","color","padding","borderRadius","fontSize","fontFamily","maxWidth","zIndex","fontWeight","marginBottom"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export{MfeNavigateDebugPanel}from"./mfe-navigate.debug.js";export{MfeLink,useMfeNavigate}from"./mfe-navigate.remote.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{slicedToArray as e,objectSpread2 as r,toConsumableArray as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as i}from"react/jsx-runtime";import{useState as o,useEffect as a}from"react";var l=function(l){var s=l.style,c=o([]),d=e(c,2),f=d[0],m=d[1];return a((function(){var e=function(e){var r=e.detail,t=r.primaryHref,i=r.secondaryHref,o=r.internal,a=r.options;m((function(e){return[{primaryHref:t,secondaryHref:i,internal:o,options:a}].concat(n(e.slice(0,9)))}))};return globalThis.addEventListener("mfe:navigate",e),function(){return globalThis.removeEventListener("mfe:navigate",e)}}),[]),t("div",{style:r({position:"fixed",background:"rgba(0,0,0,0.8)",color:"#fff",padding:12,borderRadius:8,fontSize:12,zIndex:9999,maxWidth:320,maxHeight:240,overflowY:"auto",boxShadow:"0 2px 8px rgba(0,0,0,0.2)"},null!=s?s:{bottom:16,left:16}),children:[i("div",{style:{fontWeight:"bold",marginBottom:8},children:"MFE Navigate Debug"}),0===f.length?i("div",{style:{opacity:.7},children:"No navigation events"}):i("ul",{style:{margin:0,padding:0,listStyle:"none"},children:f.map((function(e,r){var n;return t("li",{style:{marginBottom:4},children:[i("span",{style:{color:"#90ee90"},children:e.primaryHref}),e.secondaryHref&&t("span",{style:{color:"#ffa500",marginLeft:8},children:["→ ",e.secondaryHref]}),e.internal&&i("span",{style:{color:"#87ceeb",marginLeft:8},children:"[internal]"}),(null===(n=e.options)||void 0===n?void 0:n.target)&&t("span",{style:{color:"#ffb6c1",marginLeft:8},children:["(",e.options.target,")"]})]},r)}))})]})};export{l as MfeNavigateDebugPanel};
2
- //# sourceMappingURL=mfe-navigate.debug.js.map