@openfin/workspace 45.1.19 → 45.2.0

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,7 +1,7 @@
1
1
  import type OpenFin from '@openfin/core';
2
2
  import { App } from '../../../client-api/src/shapes';
3
3
  import { SearchProvider } from '../../../client-api-platform/src/shapes';
4
- import type { LaunchAppRequest, SearchSitesRequest, SearchSitesResponse, Site } from '../shapes';
4
+ import type { ContentSortRequest, LaunchAppRequest, SearchSitesRequest, SearchSitesResponse, Site } from '../shapes';
5
5
  /**
6
6
  * Launch the app described by an App Directory entry.
7
7
  * @param app the app directory entry.
@@ -19,7 +19,8 @@ export declare function getSearchProviders(payload: {
19
19
  }): Promise<SearchProvider[]>;
20
20
  export declare function getCuratedContent(payload: {
21
21
  identity: OpenFin.Identity;
22
+ req?: ContentSortRequest;
22
23
  }): Promise<Site[]>;
23
- export declare function getRecentlyVisited(payload: {
24
- identity: OpenFin.Identity;
24
+ export declare function getRecentlyVisited(payload: ContentSortRequest & {
25
+ identity?: OpenFin.Identity;
25
26
  }): Promise<App[]>;
@@ -1,2 +1,3 @@
1
1
  import { OpenFin } from '@openfin/core';
2
+ export declare const INTERNAL_VIEW_PROCESS_AFFINITY = "eb-internal-ui";
2
3
  export declare const createNonLayoutViewComponents: (isEnterprise: boolean, overrideOptions: OpenFin.PlatformWindowCreationOptions) => Promise<void[]>;
@@ -1,8 +1,9 @@
1
1
  import type OpenFin from '@openfin/core';
2
+ import type { BrowserCreateViewRequest } from '../../../../client-api-platform/src/shapes';
2
3
  type DefaultViewOptions = Partial<OpenFin.MutableViewOptions> & {
3
4
  downloadShelf?: OpenFin.ConstWindowOptions['downloadShelf'];
4
5
  hotkeys?: OpenFin.ViewOptions['hotkeys'];
5
6
  };
6
7
  export declare const DEFAULT_VIEW_OPTIONS: DefaultViewOptions;
7
- export declare function applyViewDefaults(options: Partial<OpenFin.ViewOptions>, initViewOptions?: Partial<OpenFin.ViewOptions>): Promise<any>;
8
+ export declare function applyViewDefaults(options: Partial<BrowserCreateViewRequest>, initViewOptions?: Partial<BrowserCreateViewRequest>): Promise<any>;
8
9
  export {};
@@ -33,6 +33,12 @@ export interface PlatformCapabilities {
33
33
  dock?: boolean;
34
34
  notifications?: boolean;
35
35
  };
36
+ /**
37
+ * When true, co-bundled windows load locale JSON via i18next-http-backend
38
+ * instead of the `_getLanguageResources` IPC bulk transfer.
39
+ * @internal
40
+ */
41
+ httpLanguagePacks?: boolean;
36
42
  }
37
43
  /**
38
44
  * Request for creating a saved page in persistent storage.
@@ -200,7 +206,8 @@ export declare enum EnterpriseMainContextMenuOptionType {
200
206
  ManageDesktopSignals = "ManageDesktopSignals",// Enterprise
201
207
  FindInPage = "FindInPage",// Enterprise
202
208
  Print = "Print",
203
- Pin = "Pin"
209
+ Pin = "Pin",
210
+ SetLanguage = "SetLanguage"
204
211
  }
205
212
  /** @internal */
206
213
  export declare enum BookmarkItemContextMenuOptionType {
@@ -216,6 +223,7 @@ export interface GlobalContextMenuItemData extends ContextMenuItemData {
216
223
  export interface EnterpriseMainContextMenuItemData extends ContextMenuItemData {
217
224
  type: GlobalContextMenuOptionType | EnterpriseMainContextMenuOptionType | ViewTabMenuOptionType;
218
225
  option?: string;
226
+ locale?: string;
219
227
  }
220
228
  export interface AddToChanel extends GlobalContextMenuItemData {
221
229
  workspaceId: string;
@@ -724,13 +732,23 @@ export interface BrowserWorkspacePlatformWindowOptions {
724
732
  */
725
733
  title?: WindowTitle | string;
726
734
  /**
727
- * Landing page that shows up when you add a new tab from the plus button that exists in the tabstrip.
728
- * If you do not provide a newTabUrl, then the plus button in the tabstrip will not be shown and users cannot create a new empty tab.
735
+ * URL used for new-tab actions: the plus button in the tabstrip, the new-tab hotkey, and the
736
+ * "New tab" context menu entry.
737
+ *
738
+ * If you do not provide a newTabUrl, then the plus button in the tabstrip will not be shown and
739
+ * users cannot create a new empty tab.
740
+ *
741
+ * This does not control a newly created window's initial content; that comes from `pages`.
729
742
  */
730
743
  newTabUrl?: string;
731
744
  /**
732
- * Landing page that shows up when you add a new page from the plus button that exists in the window frame where the page selector is shown.
733
- * If you do not provide a newPageUrl, then the new Page plus button will not be shown and you cannot create a new empty Page or Window.
745
+ * URL used for new-page and new-window actions.
746
+ *
747
+ * If you do not provide a newPageUrl, then the new Page plus button will not be shown and you
748
+ * cannot create a new empty Page or Window.
749
+ *
750
+ * This does not automatically control a newly created window's initial content; a caller of
751
+ * `Browser.createWindow` must include a page using this URL in `pages`.
734
752
  */
735
753
  newPageUrl?: string;
736
754
  toolbarOptions?: ToolbarOptions;
@@ -1266,10 +1284,8 @@ export interface BrowserWindowModule {
1266
1284
  * ```ts
1267
1285
  *
1268
1286
  * const newPage = await makeNewLandingPage();
1269
- * const { newPageUrl } = await getLandingPageUrls();
1270
1287
  * const browser = getCurrentSync().Browser.wrapSync(currentOFIdentity);
1271
- * const actualNewPageUrl = newPageUrl ? newPageUrl : undefined;
1272
- * await browser._addDefaultPage({ identity: currentOFIdentity, page: newPage, newPageUrl: actualNewPageUrl });
1288
+ * await browser._addDefaultPage({ identity: currentOFIdentity, page: newPage });
1273
1289
  * ```
1274
1290
  * @param req the default page request object
1275
1291
  * @internal
@@ -1282,13 +1298,13 @@ export interface BrowserWindowModule {
1282
1298
  /** @internal */
1283
1299
  _trackVisitedSite(req: any): Promise<void>;
1284
1300
  /** @internal */
1285
- _getRecentlyVisitedSites(req?: number): Promise<any[]>;
1301
+ _getRecentlyVisitedSites(req?: ContentSortRequest): Promise<any[]>;
1286
1302
  /** @internal */
1287
1303
  _getFrequentlyVisitedSites(req?: any): Promise<any[]>;
1288
1304
  /** @internal */
1289
1305
  _searchSites(req: SearchSitesRequest): Promise<SearchSitesResponse>;
1290
1306
  /** @internal */
1291
- _getCuratedContent(req?: any): Promise<Site[]>;
1307
+ _getCuratedContent(req?: ContentSortRequest): Promise<Site[]>;
1292
1308
  /** @internal */
1293
1309
  _handleRequestNavigation(args: NavigationRequest): Promise<void>;
1294
1310
  /** @internal */
@@ -1339,6 +1355,7 @@ export type NavigationRequest = {
1339
1355
  action: 'result-selected';
1340
1356
  trigger?: SiteAction;
1341
1357
  site: Site;
1358
+ openMode?: 'replace' | 'new-tab' | 'new-window';
1342
1359
  } | (SearchSitesRequest & {
1343
1360
  action: 'search-input';
1344
1361
  }));
@@ -1450,6 +1467,13 @@ export type CollectionSite = SiteInfo & {
1450
1467
  * @internal
1451
1468
  */
1452
1469
  export type Site = AppSite | WorkspaceSite;
1470
+ /**
1471
+ * @internal
1472
+ */
1473
+ export type ContentSortRequest = {
1474
+ sortBy?: 'title' | 'timestamp' | 'createdAt';
1475
+ sortOrder?: 'asc' | 'desc';
1476
+ };
1453
1477
  /**
1454
1478
  * @internal
1455
1479
  * action is undefined when the site is actioned with the default action.
@@ -3090,9 +3114,28 @@ export interface BrowserInitConfig {
3090
3114
  /** Default options when creating a new page. If `iconUrl`, `unsavedIconUrl`, `panels` or `closeButton` are not defined when creating a page, setting will default to `defaultPageOptions`. */
3091
3115
  defaultPageOptions?: Pick<Page, 'iconUrl' | 'unsavedIconUrl' | 'closeButton' | 'panels'>;
3092
3116
  /**
3093
- * The default options when creating a new browser window. Any option not included in WorkspacePlatform.getCurrentSync().Browser.createView(options) call will default to the value provided in this field.
3117
+ * The default options when creating a new view. Any option not included in WorkspacePlatform.getCurrentSync().Browser.createView(options) call will default to the value provided in this field.
3118
+ *
3119
+ * @example
3120
+ * ```ts
3121
+ * import * as WorkspacePlatform from '@openfin/workspace-platform';
3122
+ *
3123
+ * await WorkspacePlatform.init({
3124
+ * browser: {
3125
+ * defaultViewOptions: {
3126
+ * workspacePlatform: {
3127
+ * browserNavigationButtons: {
3128
+ * back: true,
3129
+ * forward: true,
3130
+ * reload: true
3131
+ * }
3132
+ * }
3133
+ * }
3134
+ * }
3135
+ * });
3136
+ * ```
3094
3137
  */
3095
- defaultViewOptions?: Partial<OpenFin.ViewOptions>;
3138
+ defaultViewOptions?: Partial<BrowserCreateViewRequest>;
3096
3139
  /**
3097
3140
  * The platform title. UI friendly title for the platform in browser.
3098
3141
  */
@@ -0,0 +1,37 @@
1
+ export declare enum Flag {
2
+ WorkspaceStorefrontEnabled = "WorkspaceStorefrontEnabled",
3
+ SentryEnabled = "SentryEnabled",
4
+ WorkspaceDockEnabled = "WorkspaceDockEnabled",
5
+ WorkspaceHomeEnabled = "WorkspaceHomeEnabled",
6
+ DevDebug = "DevDebug",
7
+ HttpLanguagePacksEnabled = "HttpLanguagePacksEnabled"
8
+ }
9
+ export type WorkspaceFlags = Record<Flag, boolean>;
10
+ export declare const flags: Partial<WorkspaceFlags>;
11
+ /**
12
+ * Initialize flags from overrides. This should be called early in the application lifecycle.
13
+ * This is a no-op if flags have already been initialized.
14
+ */
15
+ export declare const initializeFlags: () => Promise<void>;
16
+ /**
17
+ * Flag Interface --
18
+ *
19
+ * @example Enabled / Disabled Closures
20
+ * flag(
21
+ * 'feature',
22
+ * () => 'Enabled Feature',
23
+ * () => 'Disabled Feature'
24
+ * );
25
+ *
26
+ * @example Enabled only
27
+ * flag('feature', myFeatureFunc);
28
+ *
29
+ * @example Boolean
30
+ * flag('feature');
31
+ */
32
+ export declare function flag<EnabledReturn, DisabledReturn>(flagName: Flag, cbEnabled?: () => EnabledReturn, cbDisabled?: () => DisabledReturn): EnabledReturn | DisabledReturn | boolean;
33
+ declare global {
34
+ interface Window {
35
+ __WORKSPACE_FLAGS__: typeof flags;
36
+ }
37
+ }
@@ -0,0 +1,7 @@
1
+ import { type Resource } from 'i18next';
2
+ /**
3
+ * All seven statically bundled locale dictionaries. Loaded only on the flag-off
4
+ * (legacy) path so the http regime does not pull non-English packs into the
5
+ * main common chunk.
6
+ */
7
+ export declare const bundledResources: Resource;
@@ -1,5 +1,17 @@
1
1
  import i18next, { type Resource } from 'i18next';
2
2
  import { Locale } from '../../../client-api-platform/src/shapes';
3
+ export type LanguagePacksRegime = 'http' | 'legacy';
4
+ export declare const HTTP_BACKEND_REQUEST_OPTIONS: RequestInit;
5
+ export declare const resolveLanguagePacksRegime: (httpFlagEnabled: boolean, languagePacksApiUrl?: string) => LanguagePacksRegime;
6
+ export declare const getHttpBackendOptions: (loadPath: string) => {
7
+ loadPath: string;
8
+ requestOptions: RequestInit;
9
+ };
10
+ /**
11
+ * Overlay OFD's canonical en-US pack on the bootstrap stub.
12
+ * Fire-and-forget: first paint and the logo menu must not wait on this GET.
13
+ */
14
+ export declare const overlayEnglishFromHttpBackend: () => void;
3
15
  declare function initI18next(language?: Locale): Promise<void>;
4
16
  export declare const setLanguageInI18next: (locale: Locale) => Promise<void>;
5
17
  declare const t: import("i18next").TFunction<["translation", ...string[]], undefined>;
@@ -16,6 +16,16 @@ export interface Overrides {
16
16
  disableOpenFinAnalytics: boolean;
17
17
  analyticsEndpoint: string;
18
18
  translationOverridesUrl: string;
19
+ /**
20
+ * i18next-http-backend loadPath injected when org `languagePacks.enabled` is on
21
+ * (e.g. `${base}/platform/api/localization/{{lng}}/{{ns}}.json`).
22
+ */
23
+ languagePacksApiUrl: string;
24
+ /**
25
+ * BCP-47 tags shown in the Language submenu. This is the org Active set
26
+ * (HERE defaults and/or admin-uploaded packs), not only bundled client languages.
27
+ */
28
+ activeLanguages: string[];
19
29
  /**
20
30
  * WRK-4846
21
31
  * This property is internal but is being temporarily exposed for Wells Fargo.
@@ -272,8 +272,6 @@ export type AddDefaultPagePayload = {
272
272
  identity: OpenFin.Identity;
273
273
  /** The page to attach. */
274
274
  page: PageWithUpdatableRuntimeAttribs;
275
- /** The newPageUrl provided. */
276
- newPageUrl: string;
277
275
  };
278
276
  export type AddPagePayload = {
279
277
  /** The OF window identity to attach the pages to. */
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Kept in a standalone module with type-only imports so consumers can pull it in
3
+ * via the `@openfin/enterprise-api/color-channels` subpath without bundling the SDK.
4
+ *
5
+ * TODO: https://openfin.jira.com/browse/WRK-5704 - need to rewrite this to use color tokens
6
+ */
7
+ export declare const ENTERPRISE_COLOR_CHANNELS: {
8
+ readonly blue: {
9
+ readonly name: "Blue";
10
+ readonly color: "#0091EB";
11
+ };
12
+ readonly indigo: {
13
+ readonly name: "Indigo";
14
+ readonly color: "#6450FF";
15
+ };
16
+ readonly pink: {
17
+ readonly name: "Pink";
18
+ readonly color: "#E878CF";
19
+ };
20
+ readonly teal: {
21
+ readonly name: "Teal";
22
+ readonly color: "#24D1D1";
23
+ };
24
+ readonly green: {
25
+ readonly name: "Green";
26
+ readonly color: "#00AF78";
27
+ };
28
+ readonly orange: {
29
+ readonly name: "Orange";
30
+ readonly color: "#FF7D37";
31
+ };
32
+ readonly red: {
33
+ readonly name: "Red";
34
+ readonly color: "#F94144";
35
+ };
36
+ readonly yellow: {
37
+ readonly name: "Yellow";
38
+ readonly color: "#F9C74F";
39
+ };
40
+ readonly gray: {
41
+ readonly name: "Gray";
42
+ readonly color: "#828788";
43
+ };
44
+ };
@@ -1,41 +1,4 @@
1
1
  import type OpenFin from '@openfin/core';
2
2
  import { ViewTabContextMenuTemplate } from '../../../client-api-platform/src/shapes';
3
3
  export declare const getChannelsMenuOptions: (channelsForViews: string[], colorGroups: OpenFin.ContextGroupInfo[]) => Promise<ViewTabContextMenuTemplate[]>;
4
- export declare const ENTERPRISE_COLOR_CHANNELS: {
5
- readonly blue: {
6
- readonly name: "Blue";
7
- readonly color: "#0091EB";
8
- };
9
- readonly indigo: {
10
- readonly name: "Indigo";
11
- readonly color: "#6450FF";
12
- };
13
- readonly pink: {
14
- readonly name: "Pink";
15
- readonly color: "#E878CF";
16
- };
17
- readonly teal: {
18
- readonly name: "Teal";
19
- readonly color: "#24D1D1";
20
- };
21
- readonly green: {
22
- readonly name: "Green";
23
- readonly color: "#00AF78";
24
- };
25
- readonly orange: {
26
- readonly name: "Orange";
27
- readonly color: "#FF7D37";
28
- };
29
- readonly red: {
30
- readonly name: "Red";
31
- readonly color: "#F94144";
32
- };
33
- readonly yellow: {
34
- readonly name: "Yellow";
35
- readonly color: "#F9C74F";
36
- };
37
- readonly gray: {
38
- readonly name: "Gray";
39
- readonly color: "#828788";
40
- };
41
- };
4
+ export { ENTERPRISE_COLOR_CHANNELS } from './color-channels';
@@ -0,0 +1,5 @@
1
+ export type EnabledLocale = {
2
+ tag: string;
3
+ displayName: string;
4
+ };
5
+ export declare const getEnabledLocales: () => Promise<EnabledLocale[]>;
@@ -100,6 +100,9 @@ export declare const downloads: () => {
100
100
  export declare const appearance: () => {
101
101
  label: string;
102
102
  };
103
+ export declare const language: () => {
104
+ label: string;
105
+ };
103
106
  export declare const getSavedWorkspaceContextMenuOptions: (activeWorkspace: Workspace, savedWorkspaces: Pick<Workspace, "workspaceId" | "title">[], contextMenuOptionType: GlobalContextMenuOptionType) => {
104
107
  label: string;
105
108
  type: MenuItemType;
@@ -119,4 +122,13 @@ export declare const getAppearanceContextMenuOptions: () => Promise<{
119
122
  scheme: WP.ColorSchemeOptionType;
120
123
  };
121
124
  }[]>;
125
+ export declare const getLanguageContextMenuOptions: () => Promise<{
126
+ label: string;
127
+ type: MenuItemType;
128
+ checked: boolean;
129
+ data: {
130
+ type: WP.EnterpriseMainContextMenuOptionType;
131
+ locale: string;
132
+ };
133
+ }[]>;
122
134
  export declare const getGlobalContextMenuTemplate: (winIdentity: OpenFin.Identity, selectedViews?: OpenFin.Identity[]) => Promise<GlobalContextMenuItemTemplate[]>;
@@ -3,14 +3,19 @@ interface LandingPageUrls {
3
3
  newPageUrl: string | false;
4
4
  newTabUrl: string | false;
5
5
  }
6
+ /**
7
+ * Which window option supplies the landing URL: `newTabUrl` for a new tab, `newPageUrl` for a new
8
+ * page or window. Enterprise Browser presents pages as tabs, so both go through page creation.
9
+ */
10
+ export type NewLandingPageUrlSource = 'newTab' | 'newPage';
6
11
  export declare const getLandingPageUrls: (winIdentity?: OpenFin.Identity) => Promise<LandingPageUrls>;
7
12
  export declare const checkHasNewTabUrl: () => Promise<boolean>;
8
13
  export declare const getNewLandingTabViewOptions: (target: OpenFin.Identity) => Promise<OpenFin.PlatformViewCreationOptions>;
9
14
  /**
10
15
  * Makes a new landing page.
11
16
  *
12
- * If winIdentity is specified, it uses the newPageUrl defined by the browser window options.
13
- * Otherwise, if the platform is Enterprise, it will use the landing page URL.
17
+ * If winIdentity is specified, it uses the URL defined by the browser window options for the given
18
+ * `urlSource`. Otherwise, if the platform is Enterprise, it will use the landing page URL.
14
19
  */
15
- export declare const makeNewLandingPage: (winIdentity?: OpenFin.Identity) => Promise<import("@client-platform/index").PageWithUpdatableRuntimeAttribs>;
20
+ export declare const makeNewLandingPage: (winIdentity?: OpenFin.Identity, urlSource?: NewLandingPageUrlSource) => Promise<import("@client-platform/index").PageWithUpdatableRuntimeAttribs>;
16
21
  export {};
@@ -1,7 +1,7 @@
1
1
  import type OpenFin from '@openfin/core';
2
2
  import { WindowIdentity } from '../../../common/src/utils/window';
3
3
  import type { PagePinnedState } from '../../../common/src/api/pages/shapes';
4
- import { AttachedPage, PageLayout } from '../../../client-api-platform/src/shapes';
4
+ import { AttachedPage, BrowserCreateViewRequest, PageLayout } from '../../../client-api-platform/src/shapes';
5
5
  export type LayoutDOMEventType =
6
6
  /**
7
7
  * Fired when a tab is created in a container. (Emmitted by ??)
@@ -90,7 +90,7 @@ export declare const generateViewNameAndIdentifierNameIfNotExists: <T extends {
90
90
  * @param layout The Layout to be cloned
91
91
  * @returns A Promise resolving to a copy of the layout with view options converted
92
92
  */
93
- export declare const cloneLayoutAndConvertViewOptions: (layout: PageLayout, initViewOptions?: Partial<OpenFin.ViewOptions>) => Promise<PageLayout>;
93
+ export declare const cloneLayoutAndConvertViewOptions: (layout: PageLayout, initViewOptions?: Partial<BrowserCreateViewRequest>) => Promise<PageLayout>;
94
94
  export declare const cloneViewComponentWithoutName: (componentState: any) => any;
95
95
  /**
96
96
  * Deep clones a layout and removes generated view names.
@@ -6,6 +6,7 @@ declare enum LocalStorageKey {
6
6
  NewTabPageSort = "NewTabPageSort",
7
7
  DockPosition = "DockPosition",
8
8
  SelectedColorScheme = "SelectedColorScheme",
9
+ SelectedLanguage = "SelectedLanguage",
9
10
  ThemePaletteSheet = "ThemePaletteSheet",
10
11
  HasMovedStore = "HasMovedStore",
11
12
  PageDragState = "BrowserPageDragState",
@@ -171,8 +171,5 @@ export type SearchMenuChannelResponse = {
171
171
  } | {
172
172
  type: 'single-provider-results-announcement';
173
173
  message: string;
174
- } | {
175
- /** Landing page was clicked. Chrome collapses search if view-focused never arrived. */
176
- type: 'page-clicked';
177
174
  };
178
175
  export {};
@@ -2,7 +2,7 @@
2
2
  "@openfin/notifications": [
3
3
  {
4
4
  "type": "explicit",
5
- "version": "45.1.0-alpha-5002",
5
+ "version": "45.2.0-alpha-5074",
6
6
  "packageName": "client-api/package.json",
7
7
  "issuer": "client-api/src/notifications.ts"
8
8
  }
@@ -46,7 +46,7 @@
46
46
  "react-i18next": [
47
47
  {
48
48
  "type": "explicit",
49
- "version": "15.4.0",
49
+ "version": "^17.0.11",
50
50
  "packageName": "common/package.json",
51
51
  "issuer": "common/src/api/i18next.ts"
52
52
  }
@@ -54,7 +54,15 @@
54
54
  "i18next": [
55
55
  {
56
56
  "type": "explicit",
57
- "version": "^23.7.16",
57
+ "version": "^26.3.6",
58
+ "packageName": "common/package.json",
59
+ "issuer": "common/src/api/i18next.ts"
60
+ }
61
+ ],
62
+ "i18next-http-backend": [
63
+ {
64
+ "type": "explicit",
65
+ "version": "^4.0.0",
58
66
  "packageName": "common/package.json",
59
67
  "issuer": "common/src/api/i18next.ts"
60
68
  }
@@ -68,6 +76,12 @@
68
76
  }
69
77
  ],
70
78
  "dexie": [
79
+ {
80
+ "type": "explicit",
81
+ "version": "^4.0.11",
82
+ "packageName": "common/package.json",
83
+ "issuer": "common/src/api/pages/idb.ts"
84
+ },
71
85
  {
72
86
  "type": "root-implicit",
73
87
  "version": "^4.0.11",
@@ -80,12 +94,6 @@
80
94
  "packageName": "client-api-platform/package.json",
81
95
  "issuer": "client-api-platform/src/api/dock/idb.ts"
82
96
  },
83
- {
84
- "type": "explicit",
85
- "version": "^4.0.11",
86
- "packageName": "common/package.json",
87
- "issuer": "common/src/api/pages/idb.ts"
88
- },
89
97
  {
90
98
  "type": "explicit",
91
99
  "version": "^4.0.11",