@entur-partner/micro-frontend 3.0.0-alpha.5 → 3.0.0-alpha.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.
@@ -1,21 +1,24 @@
1
+ import type { Permission } from "@entur-partner/permission-client-node";
1
2
  import React, { type FC, type ReactNode } from "react";
2
- import { MicroFrontendPayload } from "./Payload";
3
3
  import type { User } from "./User";
4
- type AppContextType = MicroFrontendPayload & {
4
+ interface AppContextType {
5
+ getToken: () => Promise<string>;
5
6
  user: User;
7
+ logout?: () => void;
6
8
  activeOrgId: number;
7
- };
9
+ navigate: (path: string) => void;
10
+ }
8
11
  export declare const AppContext: React.Context<AppContextType | undefined>;
9
12
  export declare const useUser: () => User;
10
13
  export declare const useActiveOrgId: () => number;
11
- export declare const useAppShellContext: () => {
12
- setMFNavigate: (navigate: import("./Payload").NavigationFunction) => void;
13
- language: string;
14
- addMenuItems: (items: import("./Payload").MenuItem[]) => void;
15
- };
16
- export type AppProviderProps = MicroFrontendPayload & {
14
+ export interface AppProviderProps {
17
15
  children: ReactNode;
18
- activeOrgId: number;
19
- };
16
+ getToken: () => Promise<string>;
17
+ user: User;
18
+ getPermissions: () => Promise<Permission[]>;
19
+ organisationId: string;
20
+ navigate: (path: string) => void;
21
+ }
22
+ export declare const useNavigate: () => (path: string) => void;
20
23
  export declare const AppProvider: FC<AppProviderProps>;
21
24
  export {};
package/dist/Payload.d.ts CHANGED
@@ -14,6 +14,8 @@ export interface MenuItem {
14
14
  navigate: (path: string) => void;
15
15
  /** Is menu item disabled? */
16
16
  disabled?: boolean;
17
+ /** Is public menu item? */
18
+ isPublic?: boolean;
17
19
  /** Permissions required to view menu item */
18
20
  requiredPermissions?: {
19
21
  oneOf?: BusinessCapability[];
@@ -23,13 +25,13 @@ export interface MenuItem {
23
25
  export type NavigationFunction = (to: string) => void;
24
26
  export interface MicroFrontendPayload {
25
27
  /** Logged in auth0 user */
26
- user: User;
28
+ user?: User;
27
29
  /** Function for getting an accessToken */
28
30
  getToken(options?: GetTokenSilentlyOptions): Promise<string>;
29
31
  /** User selected language. Either 'nb', 'en', 'en-GB' or 'nb-NO' */
30
32
  language: string;
31
33
  /** Active organisation identifier*/
32
- organisationId: string;
34
+ organisationId?: string;
33
35
  /** Function for adding menu items to the global menu */
34
36
  addMenuItems: (items: MenuItem[]) => void;
35
37
  /** Log the user out */
@@ -41,3 +43,11 @@ export interface MicroFrontendPayload {
41
43
  * will try to use the navigate function from the first menu item instead. */
42
44
  setMFNavigate: (navigate: NavigationFunction) => void;
43
45
  }
46
+ export type PublicMicroFrontendPayload = Pick<MicroFrontendPayload, "language" | "navigate" | "setMFNavigate" | "addMenuItems" | "user"> & {
47
+ /** Function for getting an accessToken */
48
+ getToken?(options?: GetTokenSilentlyOptions): Promise<string>;
49
+ /** Active organisation identifier*/
50
+ organisationId?: string;
51
+ /** Log the user out */
52
+ logout?: () => void;
53
+ };
package/dist/events.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type { MicroFrontendPayload } from "./Payload";
1
+ import type { MicroFrontendPayload, PublicMicroFrontendPayload } from "./Payload";
2
2
  type MountEventDetail = {
3
3
  id: string;
4
4
  mountPoint: HTMLDivElement;
5
- payload: MicroFrontendPayload;
5
+ payload: MicroFrontendPayload | PublicMicroFrontendPayload;
6
6
  };
7
7
  type UnmountEventDetail = {
8
8
  id: string;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { AppProvider, AppProviderProps, useActiveOrgId, useUser, useAppShellContext, } from "./AppProvider";
1
+ export { AppProvider, AppProviderProps, useActiveOrgId, useNavigate, useUser, } from "./AppProvider";
2
2
  export { createMountEvent, createUnmountEvent, MOUNT_EVENT_TYPE, MountEvent, ROUTE_CHANGE_EVENT_TYPE, RouteAction, RouteChangeEvent, UNMOUNT_EVENT_TYPE, UnmountEvent, } from "./events";
3
- export { MenuItem, MicroFrontendPayload, NavigationFunction } from "./Payload";
4
- export { registerMicroFrontend } from "./registerMicroFrontend";
3
+ export { MenuItem, MicroFrontendPayload, NavigationFunction, PublicMicroFrontendPayload, } from "./Payload";
4
+ export { registerMicroFrontend, registerPublicMicroFrontend, } from "./registerMicroFrontend";
5
5
  export { User } from "./User";
@@ -5,6 +5,31 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var util = require('@entur-partner/util');
6
6
  var React = require('react');
7
7
 
8
+ function asyncGeneratorStep(n, t, e, r, o, a, c) {
9
+ try {
10
+ var i = n[a](c),
11
+ u = i.value;
12
+ } catch (n) {
13
+ return void e(n);
14
+ }
15
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
16
+ }
17
+ function _asyncToGenerator(n) {
18
+ return function () {
19
+ var t = this,
20
+ e = arguments;
21
+ return new Promise(function (r, o) {
22
+ var a = n.apply(t, e);
23
+ function _next(n) {
24
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
25
+ }
26
+ function _throw(n) {
27
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
28
+ }
29
+ _next(void 0);
30
+ });
31
+ };
32
+ }
8
33
  function _construct(t, e, r) {
9
34
  if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
10
35
  var o = [null];
@@ -12,6 +37,15 @@ function _construct(t, e, r) {
12
37
  var p = new (t.bind.apply(t, o))();
13
38
  return r && _setPrototypeOf(p, r.prototype), p;
14
39
  }
40
+ function _extends() {
41
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
42
+ for (var e = 1; e < arguments.length; e++) {
43
+ var t = arguments[e];
44
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
45
+ }
46
+ return n;
47
+ }, _extends.apply(null, arguments);
48
+ }
15
49
  function _getPrototypeOf(t) {
16
50
  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
17
51
  return t.__proto__ || Object.getPrototypeOf(t);
@@ -44,6 +78,114 @@ function _objectWithoutPropertiesLoose(r, e) {
44
78
  }
45
79
  return t;
46
80
  }
81
+ function _regenerator() {
82
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
83
+ var e,
84
+ t,
85
+ r = "function" == typeof Symbol ? Symbol : {},
86
+ n = r.iterator || "@@iterator",
87
+ o = r.toStringTag || "@@toStringTag";
88
+ function i(r, n, o, i) {
89
+ var c = n && n.prototype instanceof Generator ? n : Generator,
90
+ u = Object.create(c.prototype);
91
+ return _regeneratorDefine(u, "_invoke", function (r, n, o) {
92
+ var i,
93
+ c,
94
+ u,
95
+ f = 0,
96
+ p = o || [],
97
+ y = !1,
98
+ G = {
99
+ p: 0,
100
+ n: 0,
101
+ v: e,
102
+ a: d,
103
+ f: d.bind(e, 4),
104
+ d: function (t, r) {
105
+ return i = t, c = 0, u = e, G.n = r, a;
106
+ }
107
+ };
108
+ function d(r, n) {
109
+ for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
110
+ var o,
111
+ i = p[t],
112
+ d = G.p,
113
+ l = i[2];
114
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
115
+ }
116
+ if (o || r > 1) return a;
117
+ throw y = !0, n;
118
+ }
119
+ return function (o, p, l) {
120
+ if (f > 1) throw TypeError("Generator is already running");
121
+ for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
122
+ i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
123
+ try {
124
+ if (f = 2, i) {
125
+ if (c || (o = "next"), t = i[o]) {
126
+ if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
127
+ if (!t.done) return t;
128
+ u = t.value, c < 2 && (c = 0);
129
+ } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
130
+ i = e;
131
+ } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
132
+ } catch (t) {
133
+ i = e, c = 1, u = t;
134
+ } finally {
135
+ f = 1;
136
+ }
137
+ }
138
+ return {
139
+ value: t,
140
+ done: y
141
+ };
142
+ };
143
+ }(r, o, i), !0), u;
144
+ }
145
+ var a = {};
146
+ function Generator() {}
147
+ function GeneratorFunction() {}
148
+ function GeneratorFunctionPrototype() {}
149
+ t = Object.getPrototypeOf;
150
+ var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
151
+ return this;
152
+ }), t),
153
+ u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
154
+ function f(e) {
155
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
156
+ }
157
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
158
+ return this;
159
+ }), _regeneratorDefine(u, "toString", function () {
160
+ return "[object Generator]";
161
+ }), (_regenerator = function () {
162
+ return {
163
+ w: i,
164
+ m: f
165
+ };
166
+ })();
167
+ }
168
+ function _regeneratorDefine(e, r, n, t) {
169
+ var i = Object.defineProperty;
170
+ try {
171
+ i({}, "", {});
172
+ } catch (e) {
173
+ i = 0;
174
+ }
175
+ _regeneratorDefine = function (e, r, n, t) {
176
+ function o(r, n) {
177
+ _regeneratorDefine(e, r, function (e) {
178
+ return this._invoke(r, n, e);
179
+ });
180
+ }
181
+ r ? i ? i(e, r, {
182
+ value: n,
183
+ enumerable: !t,
184
+ configurable: !t,
185
+ writable: !t
186
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
187
+ }, _regeneratorDefine(e, r, n, t);
188
+ }
47
189
  function _setPrototypeOf(t, e) {
48
190
  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
49
191
  return t.__proto__ = e, t;
@@ -72,7 +214,7 @@ function _wrapNativeSuper(t) {
72
214
  }, _wrapNativeSuper(t);
73
215
  }
74
216
 
75
- var _excluded = ["children"];
217
+ var _excluded = ["children", "organisationId", "getPermissions"];
76
218
  var AppContext = /*#__PURE__*/React.createContext(undefined);
77
219
  var useUser = function useUser() {
78
220
  var context = React.useContext(AppContext);
@@ -84,20 +226,57 @@ var useActiveOrgId = function useActiveOrgId() {
84
226
  util.assertIsDefined(context);
85
227
  return context.activeOrgId;
86
228
  };
87
- var useAppShellContext = function useAppShellContext() {
229
+ var useNavigate = function useNavigate() {
88
230
  var context = React.useContext(AppContext);
89
- util.assertIsDefined(context, "useAppShellContext can't be used outside AppProvider");
90
- return {
91
- setMFNavigate: context.setMFNavigate,
92
- language: context.language,
93
- addMenuItems: context.addMenuItems
94
- };
231
+ util.assertIsDefined(context);
232
+ return context.navigate;
95
233
  };
96
234
  var AppProvider = function AppProvider(_ref) {
97
235
  var children = _ref.children,
236
+ organisationId = _ref.organisationId,
237
+ getPermissions = _ref.getPermissions,
98
238
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
239
+ var _useState = React.useState([]),
240
+ permissions = _useState[0],
241
+ setPermissions = _useState[1];
242
+ React.useEffect(function () {
243
+ function fetchData() {
244
+ return _fetchData.apply(this, arguments);
245
+ }
246
+ function _fetchData() {
247
+ _fetchData = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
248
+ var fetchedPermissions, _t;
249
+ return _regenerator().w(function (_context) {
250
+ while (1) switch (_context.p = _context.n) {
251
+ case 0:
252
+ _context.p = 0;
253
+ _context.n = 1;
254
+ return getPermissions();
255
+ case 1:
256
+ fetchedPermissions = _context.v;
257
+ setPermissions(fetchedPermissions);
258
+ _context.n = 3;
259
+ break;
260
+ case 2:
261
+ _context.p = 2;
262
+ _t = _context.v;
263
+ console.error("Fetching permissions with the provided getPermissions function failed in AppProvider with the following error:", _t);
264
+ case 3:
265
+ return _context.a(2);
266
+ }
267
+ }, _callee, null, [[0, 2]]);
268
+ }));
269
+ return _fetchData.apply(this, arguments);
270
+ }
271
+ fetchData();
272
+ }, [getPermissions]);
99
273
  return React.createElement(AppContext.Provider, {
100
- value: rest
274
+ value: _extends({}, rest, {
275
+ user: _extends({}, rest.user, {
276
+ permissions: permissions
277
+ }),
278
+ activeOrgId: Number(organisationId)
279
+ })
101
280
  }, children);
102
281
  };
103
282
 
@@ -140,6 +319,23 @@ function registerMicroFrontend(config) {
140
319
  unmount(event.detail.mountPoint);
141
320
  });
142
321
  }
322
+ function registerPublicMicroFrontend(config) {
323
+ var unmount = config.unmount,
324
+ microFrontendId = config.microFrontendId,
325
+ mount = config.mount;
326
+ window.addEventListener(MOUNT_EVENT_TYPE, function (event) {
327
+ if (!event.detail.id.startsWith(microFrontendId)) {
328
+ return;
329
+ }
330
+ mount(event.detail.mountPoint, event.detail.payload, event.detail.mountPoint);
331
+ });
332
+ window.addEventListener(UNMOUNT_EVENT_TYPE, function (event) {
333
+ if (!event.detail.id.startsWith(microFrontendId)) {
334
+ return;
335
+ }
336
+ unmount(event.detail.mountPoint);
337
+ });
338
+ }
143
339
 
144
340
  exports.AppProvider = AppProvider;
145
341
  exports.MOUNT_EVENT_TYPE = MOUNT_EVENT_TYPE;
@@ -149,7 +345,8 @@ exports.UNMOUNT_EVENT_TYPE = UNMOUNT_EVENT_TYPE;
149
345
  exports.createMountEvent = createMountEvent;
150
346
  exports.createUnmountEvent = createUnmountEvent;
151
347
  exports.registerMicroFrontend = registerMicroFrontend;
348
+ exports.registerPublicMicroFrontend = registerPublicMicroFrontend;
152
349
  exports.useActiveOrgId = useActiveOrgId;
153
- exports.useAppShellContext = useAppShellContext;
350
+ exports.useNavigate = useNavigate;
154
351
  exports.useUser = useUser;
155
352
  //# sourceMappingURL=micro-frontend.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"micro-frontend.cjs.development.js","sources":["../src/AppProvider.tsx","../src/events.ts","../src/registerMicroFrontend.tsx"],"sourcesContent":["import { assertIsDefined } from \"@entur-partner/util\";\nimport React, { type FC, type ReactNode, useContext } from \"react\";\nimport { MicroFrontendPayload } from \"./Payload\";\nimport type { User } from \"./User\";\n\ntype AppContextType = MicroFrontendPayload & {\n\tuser: User;\n\tactiveOrgId: number;\n};\n\nexport const AppContext = React.createContext<AppContextType | undefined>(\n\tundefined,\n);\n\nexport const useUser = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.user;\n};\n\nexport const useActiveOrgId = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.activeOrgId;\n};\n\nexport const useAppShellContext = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(\n\t\tcontext,\n\t\t\"useAppShellContext can't be used outside AppProvider\",\n\t);\n\treturn {\n\t\tsetMFNavigate: context.setMFNavigate,\n\t\tlanguage: context.language,\n\t\taddMenuItems: context.addMenuItems,\n\t};\n};\n\nexport type AppProviderProps = MicroFrontendPayload & {\n\tchildren: ReactNode;\n\tactiveOrgId: number;\n};\n\nexport const AppProvider: FC<AppProviderProps> = ({ children, ...rest }) => {\n\treturn <AppContext.Provider value={rest}>{children}</AppContext.Provider>;\n};\n","import type { MicroFrontendPayload } from \"./Payload\";\n\ntype MountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n\tpayload: MicroFrontendPayload;\n};\n\ntype UnmountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n};\n\nexport const MOUNT_EVENT_TYPE = \"@entur-partner:mount\";\nexport const UNMOUNT_EVENT_TYPE = \"@entur-partner:unmount\";\n\nexport interface MountEvent extends CustomEvent<MountEventDetail> {}\nexport interface UnmountEvent extends CustomEvent<UnmountEventDetail> {}\n\nexport function createMountEvent(detail: MountEventDetail) {\n\treturn new CustomEvent<MountEventDetail>(MOUNT_EVENT_TYPE, { detail });\n}\n\nexport function createUnmountEvent(detail: UnmountEventDetail) {\n\treturn new CustomEvent<UnmountEventDetail>(UNMOUNT_EVENT_TYPE, { detail });\n}\n\nexport const ROUTE_CHANGE_EVENT_TYPE = \"@entur-partner:after-route-change\";\n\nexport type RouteAction = \"PUSH\" | \"POP\" | \"REPLACE\";\n\ntype RouteChangeEventDetail = {\n\tlocation: Location;\n\taction: RouteAction;\n};\n\nexport class RouteChangeEvent extends CustomEvent<RouteChangeEventDetail> {}\n","/*global EventListener*/\n\nimport {\n\tMOUNT_EVENT_TYPE,\n\ttype MountEvent,\n\tUNMOUNT_EVENT_TYPE,\n\ttype UnmountEvent,\n} from \"./events\";\nimport type { MicroFrontendPayload } from \"./Payload\";\n\ninterface Config {\n\tmicroFrontendId: string;\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: MicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n\tunmount: (mountPoint: HTMLDivElement) => void;\n}\n\nexport function registerMicroFrontend(config: Config): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n"],"names":["AppContext","React","createContext","undefined","useUser","context","useContext","assertIsDefined","user","useActiveOrgId","activeOrgId","useAppShellContext","setMFNavigate","language","addMenuItems","AppProvider","_ref","children","rest","_objectWithoutPropertiesLoose","_excluded","createElement","Provider","value","MOUNT_EVENT_TYPE","UNMOUNT_EVENT_TYPE","createMountEvent","detail","CustomEvent","createUnmountEvent","ROUTE_CHANGE_EVENT_TYPE","RouteChangeEvent","_CustomEvent","apply","arguments","_inheritsLoose","_wrapNativeSuper","registerMicroFrontend","config","unmount","microFrontendId","mount","window","addEventListener","event","id","startsWith","mountPoint","payload"],"mappings":"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"}
1
+ {"version":3,"file":"micro-frontend.cjs.development.js","sources":["../src/AppProvider.tsx","../src/events.ts","../src/registerMicroFrontend.tsx"],"sourcesContent":["import type { Permission } from \"@entur-partner/permission-client-node\";\nimport { assertIsDefined } from \"@entur-partner/util\";\nimport React, {\n\ttype FC,\n\ttype ReactNode,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from \"react\";\n\nimport type { User } from \"./User\";\n\ninterface AppContextType {\n\tgetToken: () => Promise<string>;\n\tuser: User;\n\tlogout?: () => void;\n\tactiveOrgId: number;\n\tnavigate: (path: string) => void;\n}\n\nexport const AppContext = React.createContext<AppContextType | undefined>(\n\tundefined,\n);\n\nexport const useUser = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.user;\n};\n\nexport const useActiveOrgId = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.activeOrgId;\n};\n\nexport interface AppProviderProps {\n\tchildren: ReactNode;\n\tgetToken: () => Promise<string>;\n\tuser: User;\n\tgetPermissions: () => Promise<Permission[]>;\n\torganisationId: string;\n\tnavigate: (path: string) => void;\n}\n\nexport const useNavigate = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.navigate;\n};\n\nexport const AppProvider: FC<AppProviderProps> = ({\n\tchildren,\n\torganisationId,\n\tgetPermissions,\n\t...rest\n}) => {\n\tconst [permissions, setPermissions] = useState<Permission[]>([]);\n\n\tuseEffect(() => {\n\t\tasync function fetchData() {\n\t\t\ttry {\n\t\t\t\tconst fetchedPermissions = await getPermissions();\n\t\t\t\tsetPermissions(fetchedPermissions);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Fetching permissions with the provided getPermissions function failed in AppProvider with the following error:\",\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfetchData();\n\t}, [getPermissions]);\n\n\treturn (\n\t\t<AppContext.Provider\n\t\t\tvalue={{\n\t\t\t\t...rest,\n\t\t\t\tuser: { ...rest.user, permissions: permissions },\n\t\t\t\tactiveOrgId: Number(organisationId),\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</AppContext.Provider>\n\t);\n};\n","import type {\n\tMicroFrontendPayload,\n\tPublicMicroFrontendPayload,\n} from \"./Payload\";\n\ntype MountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n\tpayload: MicroFrontendPayload | PublicMicroFrontendPayload;\n};\n\ntype UnmountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n};\n\nexport const MOUNT_EVENT_TYPE = \"@entur-partner:mount\";\nexport const UNMOUNT_EVENT_TYPE = \"@entur-partner:unmount\";\n\nexport interface MountEvent extends CustomEvent<MountEventDetail> {}\nexport interface UnmountEvent extends CustomEvent<UnmountEventDetail> {}\n\nexport function createMountEvent(detail: MountEventDetail) {\n\treturn new CustomEvent<MountEventDetail>(MOUNT_EVENT_TYPE, { detail });\n}\n\nexport function createUnmountEvent(detail: UnmountEventDetail) {\n\treturn new CustomEvent<UnmountEventDetail>(UNMOUNT_EVENT_TYPE, { detail });\n}\n\nexport const ROUTE_CHANGE_EVENT_TYPE = \"@entur-partner:after-route-change\";\n\nexport type RouteAction = \"PUSH\" | \"POP\" | \"REPLACE\";\n\ntype RouteChangeEventDetail = {\n\tlocation: Location;\n\taction: RouteAction;\n};\n\nexport class RouteChangeEvent extends CustomEvent<RouteChangeEventDetail> {}\n","/*global EventListener*/\n\nimport {\n\tMOUNT_EVENT_TYPE,\n\ttype MountEvent,\n\tUNMOUNT_EVENT_TYPE,\n\ttype UnmountEvent,\n} from \"./events\";\nimport type {\n\tMicroFrontendPayload,\n\tPublicMicroFrontendPayload,\n} from \"./Payload\";\n\ninterface Config {\n\tmicroFrontendId: string;\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: MicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n\tunmount: (mountPoint: HTMLDivElement) => void;\n}\n\nexport function registerMicroFrontend(config: Config): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload as MicroFrontendPayload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n\ntype ConfigPublic = Config & {\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: PublicMicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n};\n\nexport function registerPublicMicroFrontend(config: ConfigPublic): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload as PublicMicroFrontendPayload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n"],"names":["AppContext","React","createContext","undefined","useUser","context","useContext","assertIsDefined","user","useActiveOrgId","activeOrgId","useNavigate","navigate","AppProvider","_ref","children","organisationId","getPermissions","rest","_objectWithoutPropertiesLoose","_excluded","_useState","useState","permissions","setPermissions","useEffect","fetchData","_fetchData","apply","arguments","_asyncToGenerator","_regenerator","m","_callee","fetchedPermissions","_t","w","_context","p","n","v","console","error","a","createElement","Provider","value","_extends","Number","MOUNT_EVENT_TYPE","UNMOUNT_EVENT_TYPE","createMountEvent","detail","CustomEvent","createUnmountEvent","ROUTE_CHANGE_EVENT_TYPE","RouteChangeEvent","_CustomEvent","_inheritsLoose","_wrapNativeSuper","registerMicroFrontend","config","unmount","microFrontendId","mount","window","addEventListener","event","id","startsWith","mountPoint","payload","registerPublicMicroFrontend"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@entur-partner/util"),e=require("react");function n(t){return n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},n(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(r=function(){return!!t})()}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}function u(t){var e="function"==typeof Map?new Map:void 0;return u=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,u)}function u(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var u=[null];u.push.apply(u,e);var i=new(t.bind.apply(t,u));return n&&o(i,n.prototype),i}(t,arguments,n(this).constructor)}return u.prototype=Object.create(t.prototype,{constructor:{value:u,enumerable:!1,writable:!0,configurable:!0}}),o(u,t)},u(t)}var i=["children"],a=e.createContext(void 0),c="@entur-partner:mount",s="@entur-partner:unmount",p=function(t){function e(){return t.apply(this,arguments)||this}var n,r;return r=t,(n=e).prototype=Object.create(r.prototype),n.prototype.constructor=n,o(n,r),e}(u(CustomEvent));exports.AppProvider=function(t){var n=t.children,r=function(t,e){if(null==t)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(-1!==e.indexOf(r))continue;n[r]=t[r]}return n}(t,i);return e.createElement(a.Provider,{value:r},n)},exports.MOUNT_EVENT_TYPE=c,exports.ROUTE_CHANGE_EVENT_TYPE="@entur-partner:after-route-change",exports.RouteChangeEvent=p,exports.UNMOUNT_EVENT_TYPE=s,exports.createMountEvent=function(t){return new CustomEvent(c,{detail:t})},exports.createUnmountEvent=function(t){return new CustomEvent(s,{detail:t})},exports.registerMicroFrontend=function(t){var e=t.unmount,n=t.microFrontendId,r=t.mount;window.addEventListener(c,function(t){t.detail.id.startsWith(n)&&r(t.detail.mountPoint,t.detail.payload,t.detail.mountPoint)}),window.addEventListener(s,function(t){t.detail.id.startsWith(n)&&e(t.detail.mountPoint)})},exports.useActiveOrgId=function(){var n=e.useContext(a);return t.assertIsDefined(n),n.activeOrgId},exports.useAppShellContext=function(){var n=e.useContext(a);return t.assertIsDefined(n,"useAppShellContext can't be used outside AppProvider"),{setMFNavigate:n.setMFNavigate,language:n.language,addMenuItems:n.addMenuItems}},exports.useUser=function(){var n=e.useContext(a);return t.assertIsDefined(n),n.user};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@entur-partner/util"),e=require("react");function n(t,e,n,r,o,i,u){try{var a=t[i](u),c=a.value}catch(t){return void n(t)}a.done?e(c):Promise.resolve(c).then(r,o)}function r(){return r=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},r.apply(null,arguments)}function o(t){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},o(t)}function i(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(i=function(){return!!t})()}function u(){var t,e,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function i(n,r,o,i){var u=Object.create((r&&r.prototype instanceof s?r:s).prototype);return a(u,"_invoke",function(n,r,o){var i,u,a,s=0,f=o||[],p=!1,l={p:0,n:0,v:t,a:d,f:d.bind(t,4),d:function(e,n){return i=e,u=0,a=t,l.n=n,c}};function d(n,r){for(u=n,a=r,e=0;!p&&s&&!o&&e<f.length;e++){var o,i=f[e],d=l.p,v=i[2];n>3?(o=v===r)&&(a=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=t):i[0]<=d&&((o=n<2&&d<i[1])?(u=0,l.v=r,l.n=i[1]):d<v&&(o=n<3||i[0]>r||r>v)&&(i[4]=n,i[5]=r,l.n=v,u=0))}if(o||n>1)return c;throw p=!0,r}return function(o,f,v){if(s>1)throw TypeError("Generator is already running");for(p&&1===f&&d(f,v),u=f,a=v;(e=u<2?t:a)||!p;){i||(u?u<3?(u>1&&(l.n=-1),d(u,a)):l.n=a:l.v=a);try{if(s=2,i){if(u||(o="next"),e=i[o]){if(!(e=e.call(i,a)))throw TypeError("iterator result is not an object");if(!e.done)return e;a=e.value,u<2&&(u=0)}else 1===u&&(e=i.return)&&e.call(i),u<2&&(a=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=t}else if((e=(p=l.n<0)?a:n.call(r,l))!==c)break}catch(e){i=t,u=1,a=e}finally{s=1}}return{value:e,done:p}}}(n,o,i),!0),u}var c={};function s(){}function f(){}function p(){}e=Object.getPrototypeOf;var l=[][r]?e(e([][r]())):(a(e={},r,function(){return this}),e),d=p.prototype=s.prototype=Object.create(l);function v(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,a(t,o,"GeneratorFunction")),t.prototype=Object.create(d),t}return f.prototype=p,a(d,"constructor",p),a(p,"constructor",f),f.displayName="GeneratorFunction",a(p,o,"GeneratorFunction"),a(d),a(d,o,"Generator"),a(d,r,function(){return this}),a(d,"toString",function(){return"[object Generator]"}),(u=function(){return{w:i,m:v}})()}function a(t,e,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(t){o=0}a=function(t,e,n,r){function i(e,n){a(t,e,function(t){return this._invoke(e,n,t)})}e?o?o(t,e,{value:n,enumerable:!r,configurable:!r,writable:!r}):t[e]=n:(i("next",0),i("throw",1),i("return",2))},a(t,e,n,r)}function c(t,e){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},c(t,e)}function s(t){var e="function"==typeof Map?new Map:void 0;return s=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(i())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,e);var o=new(t.bind.apply(t,r));return n&&c(o,n.prototype),o}(t,arguments,o(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),c(n,t)},s(t)}var f=["children","organisationId","getPermissions"],p=e.createContext(void 0),l="@entur-partner:mount",d="@entur-partner:unmount",v=function(t){function e(){return t.apply(this,arguments)||this}var n,r;return r=t,(n=e).prototype=Object.create(r.prototype),n.prototype.constructor=n,c(n,r),e}(s(CustomEvent));exports.AppProvider=function(t){var o=t.children,i=t.organisationId,a=t.getPermissions,c=function(t,e){if(null==t)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(-1!==e.indexOf(r))continue;n[r]=t[r]}return n}(t,f),s=e.useState([]),l=s[0],d=s[1];return e.useEffect(function(){function t(){var e;return e=u().m(function t(){return u().w(function(t){for(;;)switch(t.p=t.n){case 0:return t.p=0,t.n=1,a();case 1:d(t.v),t.n=3;break;case 2:t.p=2,console.error("Fetching permissions with the provided getPermissions function failed in AppProvider with the following error:",t.v);case 3:return t.a(2)}},t,null,[[0,2]])}),t=function(){var t=this,r=arguments;return new Promise(function(o,i){var u=e.apply(t,r);function a(t){n(u,o,i,a,c,"next",t)}function c(t){n(u,o,i,a,c,"throw",t)}a(void 0)})},t.apply(this,arguments)}!function(){t.apply(this,arguments)}()},[a]),e.createElement(p.Provider,{value:r({},c,{user:r({},c.user,{permissions:l}),activeOrgId:Number(i)})},o)},exports.MOUNT_EVENT_TYPE=l,exports.ROUTE_CHANGE_EVENT_TYPE="@entur-partner:after-route-change",exports.RouteChangeEvent=v,exports.UNMOUNT_EVENT_TYPE=d,exports.createMountEvent=function(t){return new CustomEvent(l,{detail:t})},exports.createUnmountEvent=function(t){return new CustomEvent(d,{detail:t})},exports.registerMicroFrontend=function(t){var e=t.unmount,n=t.microFrontendId,r=t.mount;window.addEventListener(l,function(t){t.detail.id.startsWith(n)&&r(t.detail.mountPoint,t.detail.payload,t.detail.mountPoint)}),window.addEventListener(d,function(t){t.detail.id.startsWith(n)&&e(t.detail.mountPoint)})},exports.registerPublicMicroFrontend=function(t){var e=t.unmount,n=t.microFrontendId,r=t.mount;window.addEventListener(l,function(t){t.detail.id.startsWith(n)&&r(t.detail.mountPoint,t.detail.payload,t.detail.mountPoint)}),window.addEventListener(d,function(t){t.detail.id.startsWith(n)&&e(t.detail.mountPoint)})},exports.useActiveOrgId=function(){var n=e.useContext(p);return t.assertIsDefined(n),n.activeOrgId},exports.useNavigate=function(){var n=e.useContext(p);return t.assertIsDefined(n),n.navigate},exports.useUser=function(){var n=e.useContext(p);return t.assertIsDefined(n),n.user};
2
2
  //# sourceMappingURL=micro-frontend.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"micro-frontend.cjs.production.min.js","sources":["../src/AppProvider.tsx","../src/events.ts","../src/registerMicroFrontend.tsx"],"sourcesContent":["import { assertIsDefined } from \"@entur-partner/util\";\nimport React, { type FC, type ReactNode, useContext } from \"react\";\nimport { MicroFrontendPayload } from \"./Payload\";\nimport type { User } from \"./User\";\n\ntype AppContextType = MicroFrontendPayload & {\n\tuser: User;\n\tactiveOrgId: number;\n};\n\nexport const AppContext = React.createContext<AppContextType | undefined>(\n\tundefined,\n);\n\nexport const useUser = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.user;\n};\n\nexport const useActiveOrgId = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.activeOrgId;\n};\n\nexport const useAppShellContext = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(\n\t\tcontext,\n\t\t\"useAppShellContext can't be used outside AppProvider\",\n\t);\n\treturn {\n\t\tsetMFNavigate: context.setMFNavigate,\n\t\tlanguage: context.language,\n\t\taddMenuItems: context.addMenuItems,\n\t};\n};\n\nexport type AppProviderProps = MicroFrontendPayload & {\n\tchildren: ReactNode;\n\tactiveOrgId: number;\n};\n\nexport const AppProvider: FC<AppProviderProps> = ({ children, ...rest }) => {\n\treturn <AppContext.Provider value={rest}>{children}</AppContext.Provider>;\n};\n","import type { MicroFrontendPayload } from \"./Payload\";\n\ntype MountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n\tpayload: MicroFrontendPayload;\n};\n\ntype UnmountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n};\n\nexport const MOUNT_EVENT_TYPE = \"@entur-partner:mount\";\nexport const UNMOUNT_EVENT_TYPE = \"@entur-partner:unmount\";\n\nexport interface MountEvent extends CustomEvent<MountEventDetail> {}\nexport interface UnmountEvent extends CustomEvent<UnmountEventDetail> {}\n\nexport function createMountEvent(detail: MountEventDetail) {\n\treturn new CustomEvent<MountEventDetail>(MOUNT_EVENT_TYPE, { detail });\n}\n\nexport function createUnmountEvent(detail: UnmountEventDetail) {\n\treturn new CustomEvent<UnmountEventDetail>(UNMOUNT_EVENT_TYPE, { detail });\n}\n\nexport const ROUTE_CHANGE_EVENT_TYPE = \"@entur-partner:after-route-change\";\n\nexport type RouteAction = \"PUSH\" | \"POP\" | \"REPLACE\";\n\ntype RouteChangeEventDetail = {\n\tlocation: Location;\n\taction: RouteAction;\n};\n\nexport class RouteChangeEvent extends CustomEvent<RouteChangeEventDetail> {}\n","/*global EventListener*/\n\nimport {\n\tMOUNT_EVENT_TYPE,\n\ttype MountEvent,\n\tUNMOUNT_EVENT_TYPE,\n\ttype UnmountEvent,\n} from \"./events\";\nimport type { MicroFrontendPayload } from \"./Payload\";\n\ninterface Config {\n\tmicroFrontendId: string;\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: MicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n\tunmount: (mountPoint: HTMLDivElement) => void;\n}\n\nexport function registerMicroFrontend(config: Config): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n"],"names":["AppContext","React","createContext","undefined","MOUNT_EVENT_TYPE","UNMOUNT_EVENT_TYPE","RouteChangeEvent","_CustomEvent","apply","this","arguments","_wrapNativeSuper","CustomEvent","_ref","children","rest","_objectWithoutPropertiesLoose","_excluded","createElement","Provider","value","detail","config","unmount","microFrontendId","mount","window","addEventListener","event","id","startsWith","mountPoint","payload","context","useContext","assertIsDefined","activeOrgId","setMFNavigate","language","addMenuItems","user"],"mappings":"uuCAUaA,EAAaC,EAAMC,mBAC/BC,GCEYC,EAAmB,uBACnBC,EAAqB,yBAsBrBC,WAAiBC,GAAA,SAAAD,IAAA,OAAAC,EAAAC,MAAAC,KAAAC,YAAAD,IAAA,SAAA,SAAAF,KAAAD,yEAAAA,CAAA,EAAAK,EAAQC,kCDQW,SAAzBC,GAAmD,IAAvBC,EAAQD,EAARC,SAAaC,6IAAIC,CAAAH,EAAAI,GACpE,OAAOhB,EAAAiB,cAAClB,EAAWmB,SAAQ,CAACC,MAAOL,GAAOD,EAC3C,6DCnBuC,qHARjC,SAA2BO,GAChC,OAAO,IAAIT,YAA8BR,EAAkB,CAAEiB,OAAAA,GAC9D,6BAEM,SAA6BA,GAClC,OAAO,IAAIT,YAAgCP,EAAoB,CAAEgB,OAAAA,GAClE,gCCLM,SAAgCC,GACrC,IAAQC,EAAoCD,EAApCC,QAASC,EAA2BF,EAA3BE,gBAAiBC,EAAUH,EAAVG,MAElCC,OAAOC,iBAAiBvB,EAAmB,SAACwB,GACtCA,EAAMP,OAAOQ,GAAGC,WAAWN,IAGhCC,EACCG,EAAMP,OAAOU,WACbH,EAAMP,OAAOW,QACbJ,EAAMP,OAAOU,WAEf,GAEAL,OAAOC,iBAAiBtB,EAAqB,SAACuB,GACxCA,EAAMP,OAAOQ,GAAGC,WAAWN,IAGhCD,EAAQK,EAAMP,OAAOU,WACtB,EACD,yBFpB8B,WAC7B,IAAME,EAAUC,aAAWlC,GAE3B,OADAmC,EAAeA,gBAACF,GACTA,EAAQG,WAChB,6BAEkC,WACjC,IAAMH,EAAUC,aAAWlC,GAK3B,OAJAmC,kBACCF,EACA,wDAEM,CACNI,cAAeJ,EAAQI,cACvBC,SAAUL,EAAQK,SAClBC,aAAcN,EAAQM,aAExB,kBAvBuB,WACtB,IAAMN,EAAUC,aAAWlC,GAE3B,OADAmC,EAAeA,gBAACF,GACTA,EAAQO,IAChB"}
1
+ {"version":3,"file":"micro-frontend.cjs.production.min.js","sources":["../src/AppProvider.tsx","../src/events.ts","../src/registerMicroFrontend.tsx"],"sourcesContent":["import type { Permission } from \"@entur-partner/permission-client-node\";\nimport { assertIsDefined } from \"@entur-partner/util\";\nimport React, {\n\ttype FC,\n\ttype ReactNode,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from \"react\";\n\nimport type { User } from \"./User\";\n\ninterface AppContextType {\n\tgetToken: () => Promise<string>;\n\tuser: User;\n\tlogout?: () => void;\n\tactiveOrgId: number;\n\tnavigate: (path: string) => void;\n}\n\nexport const AppContext = React.createContext<AppContextType | undefined>(\n\tundefined,\n);\n\nexport const useUser = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.user;\n};\n\nexport const useActiveOrgId = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.activeOrgId;\n};\n\nexport interface AppProviderProps {\n\tchildren: ReactNode;\n\tgetToken: () => Promise<string>;\n\tuser: User;\n\tgetPermissions: () => Promise<Permission[]>;\n\torganisationId: string;\n\tnavigate: (path: string) => void;\n}\n\nexport const useNavigate = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.navigate;\n};\n\nexport const AppProvider: FC<AppProviderProps> = ({\n\tchildren,\n\torganisationId,\n\tgetPermissions,\n\t...rest\n}) => {\n\tconst [permissions, setPermissions] = useState<Permission[]>([]);\n\n\tuseEffect(() => {\n\t\tasync function fetchData() {\n\t\t\ttry {\n\t\t\t\tconst fetchedPermissions = await getPermissions();\n\t\t\t\tsetPermissions(fetchedPermissions);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Fetching permissions with the provided getPermissions function failed in AppProvider with the following error:\",\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfetchData();\n\t}, [getPermissions]);\n\n\treturn (\n\t\t<AppContext.Provider\n\t\t\tvalue={{\n\t\t\t\t...rest,\n\t\t\t\tuser: { ...rest.user, permissions: permissions },\n\t\t\t\tactiveOrgId: Number(organisationId),\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</AppContext.Provider>\n\t);\n};\n","import type {\n\tMicroFrontendPayload,\n\tPublicMicroFrontendPayload,\n} from \"./Payload\";\n\ntype MountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n\tpayload: MicroFrontendPayload | PublicMicroFrontendPayload;\n};\n\ntype UnmountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n};\n\nexport const MOUNT_EVENT_TYPE = \"@entur-partner:mount\";\nexport const UNMOUNT_EVENT_TYPE = \"@entur-partner:unmount\";\n\nexport interface MountEvent extends CustomEvent<MountEventDetail> {}\nexport interface UnmountEvent extends CustomEvent<UnmountEventDetail> {}\n\nexport function createMountEvent(detail: MountEventDetail) {\n\treturn new CustomEvent<MountEventDetail>(MOUNT_EVENT_TYPE, { detail });\n}\n\nexport function createUnmountEvent(detail: UnmountEventDetail) {\n\treturn new CustomEvent<UnmountEventDetail>(UNMOUNT_EVENT_TYPE, { detail });\n}\n\nexport const ROUTE_CHANGE_EVENT_TYPE = \"@entur-partner:after-route-change\";\n\nexport type RouteAction = \"PUSH\" | \"POP\" | \"REPLACE\";\n\ntype RouteChangeEventDetail = {\n\tlocation: Location;\n\taction: RouteAction;\n};\n\nexport class RouteChangeEvent extends CustomEvent<RouteChangeEventDetail> {}\n","/*global EventListener*/\n\nimport {\n\tMOUNT_EVENT_TYPE,\n\ttype MountEvent,\n\tUNMOUNT_EVENT_TYPE,\n\ttype UnmountEvent,\n} from \"./events\";\nimport type {\n\tMicroFrontendPayload,\n\tPublicMicroFrontendPayload,\n} from \"./Payload\";\n\ninterface Config {\n\tmicroFrontendId: string;\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: MicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n\tunmount: (mountPoint: HTMLDivElement) => void;\n}\n\nexport function registerMicroFrontend(config: Config): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload as MicroFrontendPayload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n\ntype ConfigPublic = Config & {\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: PublicMicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n};\n\nexport function registerPublicMicroFrontend(config: ConfigPublic): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload as PublicMicroFrontendPayload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n"],"names":["AppContext","React","createContext","undefined","MOUNT_EVENT_TYPE","UNMOUNT_EVENT_TYPE","RouteChangeEvent","_CustomEvent","apply","this","arguments","_wrapNativeSuper","CustomEvent","_ref","children","organisationId","getPermissions","rest","_objectWithoutPropertiesLoose","_excluded","_useState","useState","permissions","setPermissions","useEffect","_fetchData","_regenerator","m","_callee","w","_context","p","n","v","console","error","a","fetchData","createElement","Provider","value","_extends","user","activeOrgId","Number","detail","config","unmount","microFrontendId","mount","window","addEventListener","event","id","startsWith","mountPoint","payload","context","useContext","assertIsDefined","navigate"],"mappings":"0lHAoBaA,EAAaC,EAAMC,mBAC/BC,GCLYC,EAAmB,uBACnBC,EAAqB,yBAsBrBC,WAAiBC,GAAA,SAAAD,IAAA,OAAAC,EAAAC,MAAAC,KAAAC,YAAAD,IAAA,SAAA,SAAAF,KAAAD,yEAAAA,CAAA,EAAAK,EAAQC,kCDYW,SAAzBC,GAKnB,IAJJC,EAAQD,EAARC,SACAC,EAAcF,EAAdE,eACAC,EAAcH,EAAdG,eACGC,6IAAIC,CAAAL,EAAAM,GAEPC,EAAsCC,EAAQA,SAAe,IAAtDC,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAkBlC,OAhBAI,EAAAA,UAAU,WACe,SAAAC,UAUvB,SAVuBC,IAAAC,EAAxB,SAAAC,IAAA,OAAAF,IAAAG,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAAA,OAAAF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAEmChB,IAAgB,KAAA,EACjDO,EADwBO,EAAAG,GACWH,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAEnCG,QAAQC,MACP,iHAHkCL,EAAAG,GAKjC,KAAA,EAAA,OAAAH,EAAAM,EAAA,GAAA,EAAAR,EAAA,KAAA,CAAA,CAAA,EAAA,IAEH,GAVuBH,8KAUvBA,EAAAjB,MAAAC,KAAAC,UAAA,EAXa,WACUe,EAAAjB,MAAAC,KAAAC,UAAA,CAYxB2B,EACD,EAAG,CAACrB,IAGHf,EAACqC,cAAAtC,EAAWuC,SAAQ,CACnBC,MAAKC,EAAA,CAAA,EACDxB,EAAI,CACPyB,KAAID,EAAOxB,GAAAA,EAAKyB,KAAI,CAAEpB,YAAaA,IACnCqB,YAAaC,OAAO7B,MAGpBD,EAGJ,6DCxDuC,qHARjC,SAA2B+B,GAChC,OAAO,IAAIjC,YAA8BR,EAAkB,CAAEyC,OAAAA,GAC9D,6BAEM,SAA6BA,GAClC,OAAO,IAAIjC,YAAgCP,EAAoB,CAAEwC,OAAAA,GAClE,gCCLM,SAAgCC,GACrC,IAAQC,EAAoCD,EAApCC,QAASC,EAA2BF,EAA3BE,gBAAiBC,EAAUH,EAAVG,MAElCC,OAAOC,iBAAiB/C,EAAmB,SAACgD,GACtCA,EAAMP,OAAOQ,GAAGC,WAAWN,IAGhCC,EACCG,EAAMP,OAAOU,WACbH,EAAMP,OAAOW,QACbJ,EAAMP,OAAOU,WAEf,GAEAL,OAAOC,iBAAiB9C,EAAqB,SAAC+C,GACxCA,EAAMP,OAAOQ,GAAGC,WAAWN,IAGhCD,EAAQK,EAAMP,OAAOU,WACtB,EACD,sCAUM,SAAsCT,GAC3C,IAAQC,EAAoCD,EAApCC,QAASC,EAA2BF,EAA3BE,gBAAiBC,EAAUH,EAAVG,MAElCC,OAAOC,iBAAiB/C,EAAmB,SAACgD,GACtCA,EAAMP,OAAOQ,GAAGC,WAAWN,IAGhCC,EACCG,EAAMP,OAAOU,WACbH,EAAMP,OAAOW,QACbJ,EAAMP,OAAOU,WAEf,GAEAL,OAAOC,iBAAiB9C,EAAqB,SAAC+C,GACxCA,EAAMP,OAAOQ,GAAGC,WAAWN,IAGhCD,EAAQK,EAAMP,OAAOU,WACtB,EACD,yBF3C8B,WAC7B,IAAME,EAAUC,aAAW1D,GAE3B,OADA2D,EAAeA,gBAACF,GACTA,EAAQd,WAChB,sBAW2B,WAC1B,IAAMc,EAAUC,aAAW1D,GAE3B,OADA2D,EAAeA,gBAACF,GACTA,EAAQG,QAChB,kBAzBuB,WACtB,IAAMH,EAAUC,aAAW1D,GAE3B,OADA2D,EAAeA,gBAACF,GACTA,EAAQf,IAChB"}
@@ -1,6 +1,31 @@
1
1
  import { assertIsDefined } from '@entur-partner/util';
2
- import React, { useContext } from 'react';
2
+ import React, { useContext, useState, useEffect } from 'react';
3
3
 
4
+ function asyncGeneratorStep(n, t, e, r, o, a, c) {
5
+ try {
6
+ var i = n[a](c),
7
+ u = i.value;
8
+ } catch (n) {
9
+ return void e(n);
10
+ }
11
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
12
+ }
13
+ function _asyncToGenerator(n) {
14
+ return function () {
15
+ var t = this,
16
+ e = arguments;
17
+ return new Promise(function (r, o) {
18
+ var a = n.apply(t, e);
19
+ function _next(n) {
20
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
21
+ }
22
+ function _throw(n) {
23
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
24
+ }
25
+ _next(void 0);
26
+ });
27
+ };
28
+ }
4
29
  function _construct(t, e, r) {
5
30
  if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
6
31
  var o = [null];
@@ -8,6 +33,15 @@ function _construct(t, e, r) {
8
33
  var p = new (t.bind.apply(t, o))();
9
34
  return r && _setPrototypeOf(p, r.prototype), p;
10
35
  }
36
+ function _extends() {
37
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
38
+ for (var e = 1; e < arguments.length; e++) {
39
+ var t = arguments[e];
40
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
41
+ }
42
+ return n;
43
+ }, _extends.apply(null, arguments);
44
+ }
11
45
  function _getPrototypeOf(t) {
12
46
  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
13
47
  return t.__proto__ || Object.getPrototypeOf(t);
@@ -40,6 +74,114 @@ function _objectWithoutPropertiesLoose(r, e) {
40
74
  }
41
75
  return t;
42
76
  }
77
+ function _regenerator() {
78
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
79
+ var e,
80
+ t,
81
+ r = "function" == typeof Symbol ? Symbol : {},
82
+ n = r.iterator || "@@iterator",
83
+ o = r.toStringTag || "@@toStringTag";
84
+ function i(r, n, o, i) {
85
+ var c = n && n.prototype instanceof Generator ? n : Generator,
86
+ u = Object.create(c.prototype);
87
+ return _regeneratorDefine(u, "_invoke", function (r, n, o) {
88
+ var i,
89
+ c,
90
+ u,
91
+ f = 0,
92
+ p = o || [],
93
+ y = !1,
94
+ G = {
95
+ p: 0,
96
+ n: 0,
97
+ v: e,
98
+ a: d,
99
+ f: d.bind(e, 4),
100
+ d: function (t, r) {
101
+ return i = t, c = 0, u = e, G.n = r, a;
102
+ }
103
+ };
104
+ function d(r, n) {
105
+ for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
106
+ var o,
107
+ i = p[t],
108
+ d = G.p,
109
+ l = i[2];
110
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
111
+ }
112
+ if (o || r > 1) return a;
113
+ throw y = !0, n;
114
+ }
115
+ return function (o, p, l) {
116
+ if (f > 1) throw TypeError("Generator is already running");
117
+ for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
118
+ i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
119
+ try {
120
+ if (f = 2, i) {
121
+ if (c || (o = "next"), t = i[o]) {
122
+ if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
123
+ if (!t.done) return t;
124
+ u = t.value, c < 2 && (c = 0);
125
+ } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
126
+ i = e;
127
+ } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
128
+ } catch (t) {
129
+ i = e, c = 1, u = t;
130
+ } finally {
131
+ f = 1;
132
+ }
133
+ }
134
+ return {
135
+ value: t,
136
+ done: y
137
+ };
138
+ };
139
+ }(r, o, i), !0), u;
140
+ }
141
+ var a = {};
142
+ function Generator() {}
143
+ function GeneratorFunction() {}
144
+ function GeneratorFunctionPrototype() {}
145
+ t = Object.getPrototypeOf;
146
+ var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
147
+ return this;
148
+ }), t),
149
+ u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
150
+ function f(e) {
151
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
152
+ }
153
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
154
+ return this;
155
+ }), _regeneratorDefine(u, "toString", function () {
156
+ return "[object Generator]";
157
+ }), (_regenerator = function () {
158
+ return {
159
+ w: i,
160
+ m: f
161
+ };
162
+ })();
163
+ }
164
+ function _regeneratorDefine(e, r, n, t) {
165
+ var i = Object.defineProperty;
166
+ try {
167
+ i({}, "", {});
168
+ } catch (e) {
169
+ i = 0;
170
+ }
171
+ _regeneratorDefine = function (e, r, n, t) {
172
+ function o(r, n) {
173
+ _regeneratorDefine(e, r, function (e) {
174
+ return this._invoke(r, n, e);
175
+ });
176
+ }
177
+ r ? i ? i(e, r, {
178
+ value: n,
179
+ enumerable: !t,
180
+ configurable: !t,
181
+ writable: !t
182
+ }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
183
+ }, _regeneratorDefine(e, r, n, t);
184
+ }
43
185
  function _setPrototypeOf(t, e) {
44
186
  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
45
187
  return t.__proto__ = e, t;
@@ -68,7 +210,7 @@ function _wrapNativeSuper(t) {
68
210
  }, _wrapNativeSuper(t);
69
211
  }
70
212
 
71
- var _excluded = ["children"];
213
+ var _excluded = ["children", "organisationId", "getPermissions"];
72
214
  var AppContext = /*#__PURE__*/React.createContext(undefined);
73
215
  var useUser = function useUser() {
74
216
  var context = useContext(AppContext);
@@ -80,20 +222,57 @@ var useActiveOrgId = function useActiveOrgId() {
80
222
  assertIsDefined(context);
81
223
  return context.activeOrgId;
82
224
  };
83
- var useAppShellContext = function useAppShellContext() {
225
+ var useNavigate = function useNavigate() {
84
226
  var context = useContext(AppContext);
85
- assertIsDefined(context, "useAppShellContext can't be used outside AppProvider");
86
- return {
87
- setMFNavigate: context.setMFNavigate,
88
- language: context.language,
89
- addMenuItems: context.addMenuItems
90
- };
227
+ assertIsDefined(context);
228
+ return context.navigate;
91
229
  };
92
230
  var AppProvider = function AppProvider(_ref) {
93
231
  var children = _ref.children,
232
+ organisationId = _ref.organisationId,
233
+ getPermissions = _ref.getPermissions,
94
234
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
235
+ var _useState = useState([]),
236
+ permissions = _useState[0],
237
+ setPermissions = _useState[1];
238
+ useEffect(function () {
239
+ function fetchData() {
240
+ return _fetchData.apply(this, arguments);
241
+ }
242
+ function _fetchData() {
243
+ _fetchData = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
244
+ var fetchedPermissions, _t;
245
+ return _regenerator().w(function (_context) {
246
+ while (1) switch (_context.p = _context.n) {
247
+ case 0:
248
+ _context.p = 0;
249
+ _context.n = 1;
250
+ return getPermissions();
251
+ case 1:
252
+ fetchedPermissions = _context.v;
253
+ setPermissions(fetchedPermissions);
254
+ _context.n = 3;
255
+ break;
256
+ case 2:
257
+ _context.p = 2;
258
+ _t = _context.v;
259
+ console.error("Fetching permissions with the provided getPermissions function failed in AppProvider with the following error:", _t);
260
+ case 3:
261
+ return _context.a(2);
262
+ }
263
+ }, _callee, null, [[0, 2]]);
264
+ }));
265
+ return _fetchData.apply(this, arguments);
266
+ }
267
+ fetchData();
268
+ }, [getPermissions]);
95
269
  return React.createElement(AppContext.Provider, {
96
- value: rest
270
+ value: _extends({}, rest, {
271
+ user: _extends({}, rest.user, {
272
+ permissions: permissions
273
+ }),
274
+ activeOrgId: Number(organisationId)
275
+ })
97
276
  }, children);
98
277
  };
99
278
 
@@ -136,6 +315,23 @@ function registerMicroFrontend(config) {
136
315
  unmount(event.detail.mountPoint);
137
316
  });
138
317
  }
318
+ function registerPublicMicroFrontend(config) {
319
+ var unmount = config.unmount,
320
+ microFrontendId = config.microFrontendId,
321
+ mount = config.mount;
322
+ window.addEventListener(MOUNT_EVENT_TYPE, function (event) {
323
+ if (!event.detail.id.startsWith(microFrontendId)) {
324
+ return;
325
+ }
326
+ mount(event.detail.mountPoint, event.detail.payload, event.detail.mountPoint);
327
+ });
328
+ window.addEventListener(UNMOUNT_EVENT_TYPE, function (event) {
329
+ if (!event.detail.id.startsWith(microFrontendId)) {
330
+ return;
331
+ }
332
+ unmount(event.detail.mountPoint);
333
+ });
334
+ }
139
335
 
140
- export { AppProvider, MOUNT_EVENT_TYPE, ROUTE_CHANGE_EVENT_TYPE, RouteChangeEvent, UNMOUNT_EVENT_TYPE, createMountEvent, createUnmountEvent, registerMicroFrontend, useActiveOrgId, useAppShellContext, useUser };
336
+ export { AppProvider, MOUNT_EVENT_TYPE, ROUTE_CHANGE_EVENT_TYPE, RouteChangeEvent, UNMOUNT_EVENT_TYPE, createMountEvent, createUnmountEvent, registerMicroFrontend, registerPublicMicroFrontend, useActiveOrgId, useNavigate, useUser };
141
337
  //# sourceMappingURL=micro-frontend.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"micro-frontend.esm.js","sources":["../src/AppProvider.tsx","../src/events.ts","../src/registerMicroFrontend.tsx"],"sourcesContent":["import { assertIsDefined } from \"@entur-partner/util\";\nimport React, { type FC, type ReactNode, useContext } from \"react\";\nimport { MicroFrontendPayload } from \"./Payload\";\nimport type { User } from \"./User\";\n\ntype AppContextType = MicroFrontendPayload & {\n\tuser: User;\n\tactiveOrgId: number;\n};\n\nexport const AppContext = React.createContext<AppContextType | undefined>(\n\tundefined,\n);\n\nexport const useUser = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.user;\n};\n\nexport const useActiveOrgId = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.activeOrgId;\n};\n\nexport const useAppShellContext = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(\n\t\tcontext,\n\t\t\"useAppShellContext can't be used outside AppProvider\",\n\t);\n\treturn {\n\t\tsetMFNavigate: context.setMFNavigate,\n\t\tlanguage: context.language,\n\t\taddMenuItems: context.addMenuItems,\n\t};\n};\n\nexport type AppProviderProps = MicroFrontendPayload & {\n\tchildren: ReactNode;\n\tactiveOrgId: number;\n};\n\nexport const AppProvider: FC<AppProviderProps> = ({ children, ...rest }) => {\n\treturn <AppContext.Provider value={rest}>{children}</AppContext.Provider>;\n};\n","import type { MicroFrontendPayload } from \"./Payload\";\n\ntype MountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n\tpayload: MicroFrontendPayload;\n};\n\ntype UnmountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n};\n\nexport const MOUNT_EVENT_TYPE = \"@entur-partner:mount\";\nexport const UNMOUNT_EVENT_TYPE = \"@entur-partner:unmount\";\n\nexport interface MountEvent extends CustomEvent<MountEventDetail> {}\nexport interface UnmountEvent extends CustomEvent<UnmountEventDetail> {}\n\nexport function createMountEvent(detail: MountEventDetail) {\n\treturn new CustomEvent<MountEventDetail>(MOUNT_EVENT_TYPE, { detail });\n}\n\nexport function createUnmountEvent(detail: UnmountEventDetail) {\n\treturn new CustomEvent<UnmountEventDetail>(UNMOUNT_EVENT_TYPE, { detail });\n}\n\nexport const ROUTE_CHANGE_EVENT_TYPE = \"@entur-partner:after-route-change\";\n\nexport type RouteAction = \"PUSH\" | \"POP\" | \"REPLACE\";\n\ntype RouteChangeEventDetail = {\n\tlocation: Location;\n\taction: RouteAction;\n};\n\nexport class RouteChangeEvent extends CustomEvent<RouteChangeEventDetail> {}\n","/*global EventListener*/\n\nimport {\n\tMOUNT_EVENT_TYPE,\n\ttype MountEvent,\n\tUNMOUNT_EVENT_TYPE,\n\ttype UnmountEvent,\n} from \"./events\";\nimport type { MicroFrontendPayload } from \"./Payload\";\n\ninterface Config {\n\tmicroFrontendId: string;\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: MicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n\tunmount: (mountPoint: HTMLDivElement) => void;\n}\n\nexport function registerMicroFrontend(config: Config): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n"],"names":["AppContext","React","createContext","undefined","useUser","context","useContext","assertIsDefined","user","useActiveOrgId","activeOrgId","useAppShellContext","setMFNavigate","language","addMenuItems","AppProvider","_ref","children","rest","_objectWithoutPropertiesLoose","_excluded","createElement","Provider","value","MOUNT_EVENT_TYPE","UNMOUNT_EVENT_TYPE","createMountEvent","detail","CustomEvent","createUnmountEvent","ROUTE_CHANGE_EVENT_TYPE","RouteChangeEvent","_CustomEvent","apply","arguments","_inheritsLoose","_wrapNativeSuper","registerMicroFrontend","config","unmount","microFrontendId","mount","window","addEventListener","event","id","startsWith","mountPoint","payload"],"mappings":"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"}
1
+ {"version":3,"file":"micro-frontend.esm.js","sources":["../src/AppProvider.tsx","../src/events.ts","../src/registerMicroFrontend.tsx"],"sourcesContent":["import type { Permission } from \"@entur-partner/permission-client-node\";\nimport { assertIsDefined } from \"@entur-partner/util\";\nimport React, {\n\ttype FC,\n\ttype ReactNode,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from \"react\";\n\nimport type { User } from \"./User\";\n\ninterface AppContextType {\n\tgetToken: () => Promise<string>;\n\tuser: User;\n\tlogout?: () => void;\n\tactiveOrgId: number;\n\tnavigate: (path: string) => void;\n}\n\nexport const AppContext = React.createContext<AppContextType | undefined>(\n\tundefined,\n);\n\nexport const useUser = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.user;\n};\n\nexport const useActiveOrgId = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.activeOrgId;\n};\n\nexport interface AppProviderProps {\n\tchildren: ReactNode;\n\tgetToken: () => Promise<string>;\n\tuser: User;\n\tgetPermissions: () => Promise<Permission[]>;\n\torganisationId: string;\n\tnavigate: (path: string) => void;\n}\n\nexport const useNavigate = () => {\n\tconst context = useContext(AppContext);\n\tassertIsDefined(context);\n\treturn context.navigate;\n};\n\nexport const AppProvider: FC<AppProviderProps> = ({\n\tchildren,\n\torganisationId,\n\tgetPermissions,\n\t...rest\n}) => {\n\tconst [permissions, setPermissions] = useState<Permission[]>([]);\n\n\tuseEffect(() => {\n\t\tasync function fetchData() {\n\t\t\ttry {\n\t\t\t\tconst fetchedPermissions = await getPermissions();\n\t\t\t\tsetPermissions(fetchedPermissions);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Fetching permissions with the provided getPermissions function failed in AppProvider with the following error:\",\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfetchData();\n\t}, [getPermissions]);\n\n\treturn (\n\t\t<AppContext.Provider\n\t\t\tvalue={{\n\t\t\t\t...rest,\n\t\t\t\tuser: { ...rest.user, permissions: permissions },\n\t\t\t\tactiveOrgId: Number(organisationId),\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</AppContext.Provider>\n\t);\n};\n","import type {\n\tMicroFrontendPayload,\n\tPublicMicroFrontendPayload,\n} from \"./Payload\";\n\ntype MountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n\tpayload: MicroFrontendPayload | PublicMicroFrontendPayload;\n};\n\ntype UnmountEventDetail = {\n\tid: string;\n\tmountPoint: HTMLDivElement;\n};\n\nexport const MOUNT_EVENT_TYPE = \"@entur-partner:mount\";\nexport const UNMOUNT_EVENT_TYPE = \"@entur-partner:unmount\";\n\nexport interface MountEvent extends CustomEvent<MountEventDetail> {}\nexport interface UnmountEvent extends CustomEvent<UnmountEventDetail> {}\n\nexport function createMountEvent(detail: MountEventDetail) {\n\treturn new CustomEvent<MountEventDetail>(MOUNT_EVENT_TYPE, { detail });\n}\n\nexport function createUnmountEvent(detail: UnmountEventDetail) {\n\treturn new CustomEvent<UnmountEventDetail>(UNMOUNT_EVENT_TYPE, { detail });\n}\n\nexport const ROUTE_CHANGE_EVENT_TYPE = \"@entur-partner:after-route-change\";\n\nexport type RouteAction = \"PUSH\" | \"POP\" | \"REPLACE\";\n\ntype RouteChangeEventDetail = {\n\tlocation: Location;\n\taction: RouteAction;\n};\n\nexport class RouteChangeEvent extends CustomEvent<RouteChangeEventDetail> {}\n","/*global EventListener*/\n\nimport {\n\tMOUNT_EVENT_TYPE,\n\ttype MountEvent,\n\tUNMOUNT_EVENT_TYPE,\n\ttype UnmountEvent,\n} from \"./events\";\nimport type {\n\tMicroFrontendPayload,\n\tPublicMicroFrontendPayload,\n} from \"./Payload\";\n\ninterface Config {\n\tmicroFrontendId: string;\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: MicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n\tunmount: (mountPoint: HTMLDivElement) => void;\n}\n\nexport function registerMicroFrontend(config: Config): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload as MicroFrontendPayload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n\ntype ConfigPublic = Config & {\n\tmount: (\n\t\tmountPoint: HTMLDivElement,\n\t\tpayload: PublicMicroFrontendPayload,\n\t\tdeprecatedMountPoint: HTMLDivElement,\n\t) => void;\n};\n\nexport function registerPublicMicroFrontend(config: ConfigPublic): void {\n\tconst { unmount, microFrontendId, mount } = config;\n\n\twindow.addEventListener(MOUNT_EVENT_TYPE, ((event: MountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tmount(\n\t\t\tevent.detail.mountPoint,\n\t\t\tevent.detail.payload as PublicMicroFrontendPayload,\n\t\t\tevent.detail.mountPoint,\n\t\t);\n\t}) as EventListener);\n\n\twindow.addEventListener(UNMOUNT_EVENT_TYPE, ((event: UnmountEvent) => {\n\t\tif (!event.detail.id.startsWith(microFrontendId)) {\n\t\t\treturn;\n\t\t}\n\t\tunmount(event.detail.mountPoint);\n\t}) as EventListener);\n}\n"],"names":["AppContext","React","createContext","undefined","useUser","context","useContext","assertIsDefined","user","useActiveOrgId","activeOrgId","useNavigate","navigate","AppProvider","_ref","children","organisationId","getPermissions","rest","_objectWithoutPropertiesLoose","_excluded","_useState","useState","permissions","setPermissions","useEffect","fetchData","_fetchData","apply","arguments","_asyncToGenerator","_regenerator","m","_callee","fetchedPermissions","_t","w","_context","p","n","v","console","error","a","createElement","Provider","value","_extends","Number","MOUNT_EVENT_TYPE","UNMOUNT_EVENT_TYPE","createMountEvent","detail","CustomEvent","createUnmountEvent","ROUTE_CHANGE_EVENT_TYPE","RouteChangeEvent","_CustomEvent","_inheritsLoose","_wrapNativeSuper","registerMicroFrontend","config","unmount","microFrontendId","mount","window","addEventListener","event","id","startsWith","mountPoint","payload","registerPublicMicroFrontend"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,IAAMA,UAAU,gBAAGC,KAAK,CAACC,aAAa,CAC5CC,SAAS,CACT,CAAA;IAEYC,OAAO,GAAG,SAAVA,OAAOA,GAAQ;AAC3B,EAAA,IAAMC,OAAO,GAAGC,UAAU,CAACN,UAAU,CAAC,CAAA;EACtCO,eAAe,CAACF,OAAO,CAAC,CAAA;EACxB,OAAOA,OAAO,CAACG,IAAI,CAAA;AACpB,EAAC;IAEYC,cAAc,GAAG,SAAjBA,cAAcA,GAAQ;AAClC,EAAA,IAAMJ,OAAO,GAAGC,UAAU,CAACN,UAAU,CAAC,CAAA;EACtCO,eAAe,CAACF,OAAO,CAAC,CAAA;EACxB,OAAOA,OAAO,CAACK,WAAW,CAAA;AAC3B,EAAC;IAWYC,WAAW,GAAG,SAAdA,WAAWA,GAAQ;AAC/B,EAAA,IAAMN,OAAO,GAAGC,UAAU,CAACN,UAAU,CAAC,CAAA;EACtCO,eAAe,CAACF,OAAO,CAAC,CAAA;EACxB,OAAOA,OAAO,CAACO,QAAQ,CAAA;AACxB,EAAC;IAEYC,WAAW,GAAyB,SAApCA,WAAWA,CAAAC,IAAA,EAKnB;AAAA,EAAA,IAJJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,cAAc,GAAAF,IAAA,CAAdE,cAAc;IACdC,cAAc,GAAAH,IAAA,CAAdG,cAAc;AACXC,IAAAA,IAAI,GAAAC,6BAAA,CAAAL,IAAA,EAAAM,SAAA,CAAA,CAAA;AAEP,EAAA,IAAAC,SAAA,GAAsCC,QAAQ,CAAe,EAAE,CAAC;AAAzDC,IAAAA,WAAW,GAAAF,SAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,cAAc,GAAAH,SAAA,CAAA,CAAA,CAAA,CAAA;AAElCI,EAAAA,SAAS,CAAC,YAAK;AAAA,IAAA,SACCC,SAASA,GAAA;AAAA,MAAA,OAAAC,UAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAAA,IAAA,SAAAF,UAAA,GAAA;MAAAA,UAAA,GAAAG,iBAAA,cAAAC,YAAA,GAAAC,CAAA,CAAxB,SAAAC,OAAA,GAAA;QAAA,IAAAC,kBAAA,EAAAC,EAAA,CAAA;AAAA,QAAA,OAAAJ,YAAA,EAAA,CAAAK,CAAA,CAAA,UAAAC,QAAA,EAAA;AAAA,UAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,CAAA,GAAAD,QAAA,CAAAE,CAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;AAAAD,cAAAA,QAAA,CAAAE,CAAA,GAAA,CAAA,CAAA;cAAA,OAEmCtB,cAAc,EAAE,CAAA;AAAA,YAAA,KAAA,CAAA;cAA3CiB,kBAAkB,GAAAG,QAAA,CAAAG,CAAA,CAAA;cACxBhB,cAAc,CAACU,kBAAkB,CAAC,CAAA;AAACG,cAAAA,QAAA,CAAAE,CAAA,GAAA,CAAA,CAAA;AAAA,cAAA,MAAA;AAAA,YAAA,KAAA,CAAA;AAAAF,cAAAA,QAAA,CAAAC,CAAA,GAAA,CAAA,CAAA;cAAAH,EAAA,GAAAE,QAAA,CAAAG,CAAA,CAAA;AAEnCC,cAAAA,OAAO,CAACC,KAAK,CACZ,gHAAgH,EAAAP,EAC3G,CACL,CAAA;AAAC,YAAA,KAAA,CAAA;cAAA,OAAAE,QAAA,CAAAM,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,WAAA;AAAA,SAAA,EAAAV,OAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;OAEH,CAAA,CAAA,CAAA;AAAA,MAAA,OAAAN,UAAA,CAAAC,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,CAAA;AAAA,KAAA;AAEDH,IAAAA,SAAS,EAAE,CAAA;AACZ,GAAC,EAAE,CAACT,cAAc,CAAC,CAAC,CAAA;AAEpB,EAAA,OACChB,KAAC,CAAA2C,aAAA,CAAA5C,UAAU,CAAC6C,QAAQ,EAAA;IACnBC,KAAK,EAAAC,QAAA,CAAA,EAAA,EACD7B,IAAI,EAAA;AACPV,MAAAA,IAAI,EAAAuC,QAAA,CAAO7B,EAAAA,EAAAA,IAAI,CAACV,IAAI,EAAA;AAAEe,QAAAA,WAAW,EAAEA,WAAAA;OAAa,CAAA;MAChDb,WAAW,EAAEsC,MAAM,CAAChC,cAAc,CAAA;AAAC,KAAA,CAAA;GAGnC,EAAAD,QAAQ,CACY,CAAA;AAExB;;ACtEO,IAAMkC,gBAAgB,GAAG,uBAAsB;AAC/C,IAAMC,kBAAkB,GAAG,yBAAwB;AAKpD,SAAUC,gBAAgBA,CAACC,MAAwB,EAAA;AACxD,EAAA,OAAO,IAAIC,WAAW,CAAmBJ,gBAAgB,EAAE;AAAEG,IAAAA,MAAM,EAANA,MAAAA;AAAQ,GAAA,CAAC,CAAA;AACvE,CAAA;AAEM,SAAUE,kBAAkBA,CAACF,MAA0B,EAAA;AAC5D,EAAA,OAAO,IAAIC,WAAW,CAAqBH,kBAAkB,EAAE;AAAEE,IAAAA,MAAM,EAANA,MAAAA;AAAQ,GAAA,CAAC,CAAA;AAC3E,CAAA;AAEO,IAAMG,uBAAuB,GAAG,oCAAmC;AAS7DC,IAAAA,gBAAiB,0BAAAC,YAAA,EAAA;AAAA,EAAA,SAAAD,gBAAA,GAAA;AAAA,IAAA,OAAAC,YAAA,CAAA7B,KAAA,CAAA,IAAA,EAAAC,SAAA,CAAA,IAAA,IAAA,CAAA;AAAA,GAAA;EAAA6B,cAAA,CAAAF,gBAAA,EAAAC,YAAA,CAAA,CAAA;AAAA,EAAA,OAAAD,gBAAA,CAAA;AAAA,CAAAG,cAAAA,gBAAA,CAAQN,WAAmC,CAAA;;ACvCzE;AAuBM,SAAUO,qBAAqBA,CAACC,MAAc,EAAA;AACnD,EAAA,IAAQC,OAAO,GAA6BD,MAAM,CAA1CC,OAAO;IAAEC,eAAe,GAAYF,MAAM,CAAjCE,eAAe;IAAEC,KAAK,GAAKH,MAAM,CAAhBG,KAAK,CAAA;AAEvCC,EAAAA,MAAM,CAACC,gBAAgB,CAACjB,gBAAgB,EAAG,UAACkB,KAAiB,EAAI;IAChE,IAAI,CAACA,KAAK,CAACf,MAAM,CAACgB,EAAE,CAACC,UAAU,CAACN,eAAe,CAAC,EAAE;AACjD,MAAA,OAAA;AACD,KAAA;AACAC,IAAAA,KAAK,CACJG,KAAK,CAACf,MAAM,CAACkB,UAAU,EACvBH,KAAK,CAACf,MAAM,CAACmB,OAA+B,EAC5CJ,KAAK,CAACf,MAAM,CAACkB,UAAU,CACvB,CAAA;AACF,GAAmB,CAAC,CAAA;AAEpBL,EAAAA,MAAM,CAACC,gBAAgB,CAAChB,kBAAkB,EAAG,UAACiB,KAAmB,EAAI;IACpE,IAAI,CAACA,KAAK,CAACf,MAAM,CAACgB,EAAE,CAACC,UAAU,CAACN,eAAe,CAAC,EAAE;AACjD,MAAA,OAAA;AACD,KAAA;AACAD,IAAAA,OAAO,CAACK,KAAK,CAACf,MAAM,CAACkB,UAAU,CAAC,CAAA;AACjC,GAAmB,CAAC,CAAA;AACrB,CAAA;AAUM,SAAUE,2BAA2BA,CAACX,MAAoB,EAAA;AAC/D,EAAA,IAAQC,OAAO,GAA6BD,MAAM,CAA1CC,OAAO;IAAEC,eAAe,GAAYF,MAAM,CAAjCE,eAAe;IAAEC,KAAK,GAAKH,MAAM,CAAhBG,KAAK,CAAA;AAEvCC,EAAAA,MAAM,CAACC,gBAAgB,CAACjB,gBAAgB,EAAG,UAACkB,KAAiB,EAAI;IAChE,IAAI,CAACA,KAAK,CAACf,MAAM,CAACgB,EAAE,CAACC,UAAU,CAACN,eAAe,CAAC,EAAE;AACjD,MAAA,OAAA;AACD,KAAA;AACAC,IAAAA,KAAK,CACJG,KAAK,CAACf,MAAM,CAACkB,UAAU,EACvBH,KAAK,CAACf,MAAM,CAACmB,OAAqC,EAClDJ,KAAK,CAACf,MAAM,CAACkB,UAAU,CACvB,CAAA;AACF,GAAmB,CAAC,CAAA;AAEpBL,EAAAA,MAAM,CAACC,gBAAgB,CAAChB,kBAAkB,EAAG,UAACiB,KAAmB,EAAI;IACpE,IAAI,CAACA,KAAK,CAACf,MAAM,CAACgB,EAAE,CAACC,UAAU,CAACN,eAAe,CAAC,EAAE;AACjD,MAAA,OAAA;AACD,KAAA;AACAD,IAAAA,OAAO,CAACK,KAAK,CAACf,MAAM,CAACkB,UAAU,CAAC,CAAA;AACjC,GAAmB,CAAC,CAAA;AACrB;;;;"}
@@ -1,8 +1,12 @@
1
- import type { MicroFrontendPayload } from "./Payload";
1
+ import type { MicroFrontendPayload, PublicMicroFrontendPayload } from "./Payload";
2
2
  interface Config {
3
3
  microFrontendId: string;
4
4
  mount: (mountPoint: HTMLDivElement, payload: MicroFrontendPayload, deprecatedMountPoint: HTMLDivElement) => void;
5
5
  unmount: (mountPoint: HTMLDivElement) => void;
6
6
  }
7
7
  export declare function registerMicroFrontend(config: Config): void;
8
+ type ConfigPublic = Config & {
9
+ mount: (mountPoint: HTMLDivElement, payload: PublicMicroFrontendPayload, deprecatedMountPoint: HTMLDivElement) => void;
10
+ };
11
+ export declare function registerPublicMicroFrontend(config: ConfigPublic): void;
8
12
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur-partner/micro-frontend",
3
- "version": "3.0.0-alpha.5",
3
+ "version": "3.0.0-alpha.6",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/micro-frontend.esm.js",
@@ -29,8 +29,7 @@
29
29
  "devDependencies": {
30
30
  "@auth0/auth0-spa-js": "1.22.6",
31
31
  "@entur-partner/permission-client-node": "3.4.6",
32
- "posthog-js": "1.245.0",
33
- "react-router-dom": "6.30.1"
32
+ "posthog-js": "^1.245.0"
34
33
  },
35
34
  "dependencies": {
36
35
  "@entur-partner/util": "^1.3.3"
@@ -45,5 +44,5 @@
45
44
  "reportFile": "jest-sonar-report.xml",
46
45
  "indent": 4
47
46
  },
48
- "gitHead": "f5fa3bee2d9df49b7bb02f1b281fc1b37d2a4314"
47
+ "gitHead": "155f3d881a185e71bb143db88082de77e9972bfc"
49
48
  }