@ms-cloudpack/overlay 0.17.30 → 0.17.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/browser-esm/chunks/js/{ErrorDialog-744DEKEI.js → ErrorDialog-5IGGA35U.js} +2 -2
  2. package/dist/browser-esm/chunks/js/{StatusDialog-J6LM3XZZ.js → StatusDialog-7Q5HGOOM.js} +2 -2
  3. package/dist/browser-esm/chunks/js/{chunk-PDWQRLCD.js → chunk-GBPQMJW6.js} +2 -8
  4. package/dist/browser-esm/chunks/js/{chunk-PDWQRLCD.js.map → chunk-GBPQMJW6.js.map} +2 -2
  5. package/dist/browser-esm/lib/constants.js +1 -3
  6. package/dist/browser-esm/lib/index.js +21 -23
  7. package/dist/browser-esm/lib/index.js.map +4 -4
  8. package/dist/browser-esm/ori-output.json +31 -46
  9. package/dist/browser-esm/result.json +8 -10
  10. package/lib/components/ErrorDialog/useErrorEvents.d.ts +0 -9
  11. package/lib/components/ErrorDialog/useErrorEvents.d.ts.map +1 -1
  12. package/lib/components/ErrorDialog/useErrorEvents.js.map +1 -1
  13. package/lib/constants.d.ts +0 -8
  14. package/lib/constants.d.ts.map +1 -1
  15. package/lib/constants.js +0 -8
  16. package/lib/constants.js.map +1 -1
  17. package/lib/hooks/usePageLoadTimeReporter.d.ts.map +1 -1
  18. package/lib/hooks/usePageLoadTimeReporter.js +9 -0
  19. package/lib/hooks/usePageLoadTimeReporter.js.map +1 -1
  20. package/lib/index.js +10 -7
  21. package/lib/index.js.map +1 -1
  22. package/package.json +4 -3
  23. package/lib/components/CloudpackProvider/getCookies.d.ts +0 -5
  24. package/lib/components/CloudpackProvider/getCookies.d.ts.map +0 -1
  25. package/lib/components/CloudpackProvider/getCookies.js +0 -17
  26. package/lib/components/CloudpackProvider/getCookies.js.map +0 -1
  27. /package/dist/browser-esm/chunks/js/{ErrorDialog-744DEKEI.js.map → ErrorDialog-5IGGA35U.js.map} +0 -0
  28. /package/dist/browser-esm/chunks/js/{StatusDialog-J6LM3XZZ.js.map → StatusDialog-7Q5HGOOM.js.map} +0 -0
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-7KHMDJ6G.js";
12
12
  import {
13
13
  elementIds
14
- } from "./chunk-PDWQRLCD.js";
14
+ } from "./chunk-GBPQMJW6.js";
15
15
 
16
16
  // packages/overlay/src/components/ErrorDialog/ErrorDialog.tsx
17
17
  import { default as React2 } from "react";
@@ -71,4 +71,4 @@ export {
71
71
  ErrorDialog,
72
72
  ErrorDialog_default as default
73
73
  };
74
- //# sourceMappingURL=ErrorDialog-744DEKEI.js.map
74
+ //# sourceMappingURL=ErrorDialog-5IGGA35U.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-7KHMDJ6G.js";
12
12
  import {
13
13
  elementIds
14
- } from "./chunk-PDWQRLCD.js";
14
+ } from "./chunk-GBPQMJW6.js";
15
15
 
16
16
  // packages/overlay/src/components/StatusDialog/StatusDialog.tsx
17
17
  import React5, { useCallback } from "react";
@@ -313,4 +313,4 @@ export {
313
313
  StatusDialog,
314
314
  StatusDialog_default as default
315
315
  };
316
- //# sourceMappingURL=StatusDialog-J6LM3XZZ.js.map
316
+ //# sourceMappingURL=StatusDialog-7Q5HGOOM.js.map
@@ -17,14 +17,8 @@ var elementIds = {
17
17
  */
18
18
  statusBadgeRoot: "cloudpack-overlay-status-badge"
19
19
  };
20
- var cookieNames = {
21
- sessionId: "cloudpack-session-id",
22
- sessionSequence: "cloudpack-session-sequence",
23
- apiUrl: "cloudpack-api-url"
24
- };
25
20
 
26
21
  export {
27
- elementIds,
28
- cookieNames
22
+ elementIds
29
23
  };
30
- //# sourceMappingURL=chunk-PDWQRLCD.js.map
24
+ //# sourceMappingURL=chunk-GBPQMJW6.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/constants.ts"],
4
- "sourcesContent": ["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n\n/**\n * Cloudpack cookies accessed by the overlay.\n */\nexport const cookieNames = {\n sessionId: 'cloudpack-session-id',\n sessionSequence: 'cloudpack-session-sequence',\n apiUrl: 'cloudpack-api-url',\n};\n"],
5
- "mappings": ";AAGO,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIxB,MAAM;AAAA;AAAA;AAAA;AAAA,EAIN,iBAAiB;AAAA;AAAA;AAAA;AAAA,EAIjB,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIlB,iBAAiB;AACnB;AAKO,IAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,QAAQ;AACV;",
4
+ "sourcesContent": ["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n"],
5
+ "mappings": ";AAGO,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIxB,MAAM;AAAA;AAAA;AAAA;AAAA,EAIN,iBAAiB;AAAA;AAAA;AAAA;AAAA,EAIjB,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIlB,iBAAiB;AACnB;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,7 @@
1
1
  import {
2
- cookieNames,
3
2
  elementIds
4
- } from "../chunks/js/chunk-PDWQRLCD.js";
3
+ } from "../chunks/js/chunk-GBPQMJW6.js";
5
4
  export {
6
- cookieNames,
7
5
  elementIds
8
6
  };
9
7
  //# sourceMappingURL=constants.js.map
@@ -4,9 +4,8 @@ import {
4
4
  useDraggable
5
5
  } from "../chunks/js/chunk-7KHMDJ6G.js";
6
6
  import {
7
- cookieNames,
8
7
  elementIds
9
- } from "../chunks/js/chunk-PDWQRLCD.js";
8
+ } from "../chunks/js/chunk-GBPQMJW6.js";
10
9
 
11
10
  // packages/overlay/src/index.tsx
12
11
  import React5 from "react";
@@ -345,10 +344,19 @@ function usePageLoadTimeReporter() {
345
344
  const cloudpack = useCloudpack();
346
345
  React2.useEffect(() => {
347
346
  async function reportPageLoadTime() {
347
+ if (!window.__cloudpack) {
348
+ throw new Error("Cloudpack not found on window");
349
+ }
348
350
  const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;
351
+ if (!getPageLoadTime) {
352
+ throw new Error("getPageLoadTime not found on window.__cloudpack");
353
+ }
349
354
  const newPageLoadTime = await getPageLoadTime();
350
355
  setPageLoadTime(newPageLoadTime);
351
356
  await cloudpack.reportMetric.mutate({ metric: "PAGE_LOAD_TIME", value: newPageLoadTime });
357
+ if (!getBrowserCacheRatio) {
358
+ throw new Error("getBrowserCacheRatio not found on window.__cloudpack");
359
+ }
352
360
  await cloudpack.reportMetric.mutate({ metric: "BROWSER_CACHE_RATIO", value: getBrowserCacheRatio() });
353
361
  }
354
362
  void reportPageLoadTime();
@@ -357,8 +365,8 @@ function usePageLoadTimeReporter() {
357
365
  }
358
366
 
359
367
  // packages/overlay/src/components/StatusOverlay/StatusOverlay.tsx
360
- var StatusDialog = React3.lazy(() => import("../chunks/js/StatusDialog-J6LM3XZZ.js"));
361
- var ErrorDialog = React3.lazy(() => import("../chunks/js/ErrorDialog-744DEKEI.js"));
368
+ var StatusDialog = React3.lazy(() => import("../chunks/js/StatusDialog-7Q5HGOOM.js"));
369
+ var ErrorDialog = React3.lazy(() => import("../chunks/js/ErrorDialog-5IGGA35U.js"));
362
370
  function StatusOverlay() {
363
371
  const pageLoadTime = usePageLoadTimeReporter();
364
372
  const [isExpanded, setIsExpanded] = useState4(false);
@@ -413,32 +421,22 @@ function ThemeProvider({ children }) {
413
421
 
414
422
  // packages/overlay/src/index.tsx
415
423
  import { createCloudpackClient, reloadCountSource } from "@ms-cloudpack/api-server/browser";
416
-
417
- // packages/overlay/src/components/CloudpackProvider/getCookies.ts
418
- function getCookies() {
419
- return document.cookie.split(";").map((s3) => s3.split("=")).reduce((current, nextValue) => {
420
- const name = nextValue[0]?.trim();
421
- const value2 = decodeURIComponent(nextValue[1]?.trim());
422
- if (name && value2) {
423
- current[name] = value2;
424
- }
425
- return current;
426
- }, {});
427
- }
428
-
429
- // packages/overlay/src/index.tsx
430
424
  async function start() {
431
- const cookies = getCookies();
432
- const sessionId = cookies[cookieNames.sessionId] ?? localStorage.getItem(cookieNames.sessionId);
433
- const apiUrl = cookies[cookieNames.apiUrl] ?? localStorage.getItem(cookieNames.apiUrl);
434
- const currentSequence = cookies[cookieNames.sessionSequence] ?? localStorage.getItem(cookieNames.sessionSequence);
425
+ if (!window.__cloudpack) {
426
+ throw new Error("Cloudpack not found on window");
427
+ }
428
+ const { pageSessionContext } = window.__cloudpack;
429
+ if (!pageSessionContext) {
430
+ throw new Error("Session context not found on window.__cloudpack");
431
+ }
432
+ const { apiUrl, currentSequence, sessionId } = pageSessionContext;
435
433
  const client = await createCloudpackClient({ url: apiUrl });
436
434
  if (sessionId === await client.getSessionId.query()) {
437
435
  console.log("[Cloudpack] socket opened");
438
436
  }
439
437
  client.onDataChanged.subscribe(reloadCountSource, {
440
438
  onData: (data) => {
441
- if (Number(data) > Number(currentSequence)) {
439
+ if (Number(data) > currentSequence) {
442
440
  window.location.reload();
443
441
  }
444
442
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/index.tsx", "../../../src/components/StatusOverlay/StatusOverlay.tsx", "../../../src/components/StatusBadge/StatusBadge.tsx", "../../../src/components/StatusBadge/StatusBadge.module.css", "../../../src/components/CloudpackProvider/useStatus.ts", "../../../src/components/ErrorDialog/useErrorEvents.ts", "../../../src/hooks/usePageLoadTimeReporter.ts", "../../../src/components/ThemeProvider/ThemeProvider.tsx", "../../../src/components/ThemeProvider/ThemeProvider.module.css", "../../../src/components/CloudpackProvider/getCookies.ts"],
4
- "sourcesContent": ["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';\nimport { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';\nimport { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';\nimport { cookieNames, elementIds } from './constants.js';\nimport { createCloudpackClient, reloadCountSource } from '@ms-cloudpack/api-server/browser';\nimport { getCookies } from './components/CloudpackProvider/getCookies.js';\n\nasync function start() {\n const cookies = getCookies();\n const sessionId = cookies[cookieNames.sessionId] ?? localStorage.getItem(cookieNames.sessionId);\n const apiUrl = cookies[cookieNames.apiUrl] ?? localStorage.getItem(cookieNames.apiUrl);\n const currentSequence = cookies[cookieNames.sessionSequence] ?? localStorage.getItem(cookieNames.sessionSequence);\n\n const client = await createCloudpackClient({ url: apiUrl });\n\n if (sessionId === (await client.getSessionId.query())) {\n console.log('[Cloudpack] socket opened');\n }\n\n client.onDataChanged.subscribe(reloadCountSource, {\n onData: (data) => {\n if (Number(data) > Number(currentSequence)) {\n window.location.reload();\n }\n },\n });\n\n const rootDiv = document.createElement('div');\n rootDiv.id = elementIds.root;\n\n ReactDOM.render(\n <ThemeProvider>\n <CloudpackProvider client={client}>\n <StatusOverlay />\n </CloudpackProvider>\n </ThemeProvider>,\n rootDiv,\n );\n\n document.body.appendChild(rootDiv);\n}\n\nvoid start();\n", "import React, { useCallback, useState, useRef } from 'react';\nimport { StatusBadge } from '../StatusBadge/StatusBadge.js';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { useErrorEvents } from '../ErrorDialog/useErrorEvents.js';\nimport { usePageLoadTimeReporter } from '../../hooks/usePageLoadTimeReporter.js';\n\nconst StatusDialog = React.lazy(() => import('../StatusDialog/StatusDialog.js'));\nconst ErrorDialog = React.lazy(() => import('../ErrorDialog/ErrorDialog.js'));\n\nexport function StatusOverlay() {\n const pageLoadTime = usePageLoadTimeReporter();\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const status = useStatus();\n const prevStatus = useRef<CloudpackStatus | undefined>();\n const { unsupported } = useErrorEvents();\n\n // If we haven't set a specific state and we become idle,\n // pop open the details if there are errors.\n React.useEffect(() => {\n if (\n !isExpanded &&\n prevStatus.current?.status !== 'idle' &&\n status.status === 'idle' &&\n (prevStatus.current?.totalErrors || 0) !== (status.totalErrors || 0)\n ) {\n setIsExpanded(true);\n }\n prevStatus.current = status;\n }, [status, isExpanded]);\n\n const toggleMinimized = useCallback(() => {\n console.log(`Toggling minimized state to ${!isExpanded}`);\n setIsExpanded(!isExpanded);\n }, [isExpanded]);\n\n const result = unsupported.length ? (\n <ErrorDialog unsupported={unsupported} />\n ) : isExpanded ? (\n <StatusDialog onClose={toggleMinimized} />\n ) : (\n <StatusBadge onExpand={toggleMinimized} pageLoadTime={pageLoadTime} />\n );\n\n return <React.Suspense fallback={null}>{result}</React.Suspense>;\n}\n", "import React, { useCallback, useRef, useState } from 'react';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport styles from './StatusBadge.module.css';\nimport { default as cx } from 'classnames';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusBadgeProps {\n inline?: boolean;\n onExpand?: () => void;\n onToggle?: () => void;\n pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const badgeStatusKey = 'cloudpack.badgeStatus';\n\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n const [isCollapsed, setIsCollapsed] = useState<boolean>(!!localStorage.getItem(badgeStatusKey));\n\n const shouldRender = status.status !== 'unknown';\n\n const toggleBadgeVisibility = useCallback(() => {\n const newCollapsedState = !isCollapsed;\n console.log('Status badge collapsed state:', newCollapsedState);\n setIsCollapsed(newCollapsedState);\n localStorage.setItem(badgeStatusKey, newCollapsedState ? 'collapsed' : '');\n }, [isCollapsed]);\n\n useDraggable({\n // If we're not yet able to render, don't enable dragging yet.\n // Otherwise the event handlers won't be attached when the component renders.\n enabled: shouldRender && !inline,\n containerElementRef: rootElementRef,\n dragElementRef,\n });\n\n if (!shouldRender) {\n return null;\n }\n\n const metric = pageLoadTime ? (\n <span className={styles.metric} title=\"Page Load Time\">\n in {pageLoadTime.toFixed(2)} ms\n </span>\n ) : null;\n\n const leftChevron = '\\u00AB';\n const rightChevron = '\\u00BB';\n const badge = (\n <div\n id={elementIds.statusBadgeRoot}\n ref={rootElementRef}\n className={`${getStatusClassName(status, !!inline)} ${getCollapsedClassName(isCollapsed)}`}\n >\n {!inline && (\n <div ref={dragElementRef} className={styles.gripArea}>\n <div className={styles.grip} />\n <div className={styles.grip} />\n </div>\n )}\n <button className={styles.button} onClick={onExpand} aria-label=\"Expand overlay\">\n <div className={styles.value}>{getStatusString(status)}</div>\n </button>\n <div>\n {getStatsString(status)}\n {metric}\n </div>\n <button className={`${styles.button} ${styles.chevron}`} onClick={toggleBadgeVisibility}>\n {isCollapsed ? leftChevron : rightChevron}\n </button>\n </div>\n );\n\n return inline ? (\n badge\n ) : (\n <div className={styles.fixedOverlay}>\n <div className={styles.contentSurface}>{badge}</div>\n </div>\n );\n}\n\nfunction getStatusString(status: CloudpackStatus) {\n if (status.status === 'pending') {\n return 'Running';\n }\n\n if (status.totalTasks === 0) {\n return 'Idle';\n }\n\n return status.totalErrors === 0 ? 'Success' : 'Errors';\n}\n\nfunction getStatusClassName({ status, totalTasks, totalErrors, totalWarnings }: CloudpackStatus, inline: boolean) {\n return cx(styles.badge, {\n [styles.inline]: inline,\n [styles.building]: status === 'pending',\n [styles.success]: status === 'idle' && totalTasks > 0 && totalErrors === 0 && totalWarnings === 0,\n [styles.error]: status === 'idle' && totalErrors > 0,\n [styles.warning]: status === 'idle' && totalErrors === 0 && totalWarnings > 0,\n });\n}\n\nfunction getCollapsedClassName(isCollapsed: boolean) {\n return cx(styles.badge, {\n [styles.collapsed]: isCollapsed,\n });\n}\n\nfunction getStatsString({ totalTasks, remainingTasks, totalErrors, totalWarnings }: CloudpackStatus) {\n if (totalTasks === 0) {\n return '';\n }\n\n return [\n remainingTasks > 0 && `${remainingTasks} of ${totalTasks} tasks pending`,\n remainingTasks === 0 && `${totalTasks} tasks completed`,\n totalErrors === 1 && `${totalErrors} error`,\n totalErrors > 1 && `${totalErrors} errors`,\n totalWarnings === 1 && `${totalWarnings} warning`,\n totalWarnings > 1 && `${totalWarnings} warnings`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusBadge/StatusBadge.module.css\n\n\nlet compiledModule = `.uHuWYf-StatusBadgemodule--fixedOverlay {\\n position: fixed;\\n pointer-events: none;\\n background: transparent;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 99999;\\n overflow: hidden;\\n}\\n\\n.uHuWYf-StatusBadgemodule--gripArea {\\n display: flex;\\n flex-direction: row;\\n gap: 2px;\\n height: 100%;\\n width: 12px;\\n cursor: move;\\n margin-right: -4px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--grip {\\n width: 2px;\\n height: 100%;\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.uHuWYf-StatusBadgemodule--contentSurface {\\n pointer-events: auto;\\n display: contents;\\n}\\n\\n.uHuWYf-StatusBadgemodule--badge {\\n position: absolute;\\n bottom: 4px;\\n right: 4px;\\n font-size: 12px;\\n display: inline-flex;\\n gap: 8px;\\n background: #dddddd;\\n box-shadow: 0 0 12px -6px rgba(0, 0, 0, 0.75);\\n border: 1px solid #999999;\\n border-radius: 4px;\\n height: 28px;\\n flex-shrink: 0;\\n justify-content: center;\\n align-items: center;\\n box-sizing: border-box;\\n padding: 3px;\\n padding-right: 8px;\\n\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.uHuWYf-StatusBadgemodule--inline {\\n flex-shrink: 0;\\n position: relative;\\n bottom: auto;\\n right: auto;\\n top: auto;\\n left: auto;\\n box-shadow: none;\\n padding-left: 8px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--building {\\n background: #bbb;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--success {\\n background: #7ad17a;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--warning {\\n background: #e4e68b;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--error {\\n background: #ffb9b9;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button {\\n cursor: pointer;\\n background: inherit;\\n border: none;\\n border-radius: 3px;\\n display: flex;\\n align-self: stretch;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n padding: 0;\\n margin: 0;\\n font-weight: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button:hover {\\n filter: invert(0.1);\\n}\\n\\n.uHuWYf-StatusBadgemodule--value {\\n font-weight: 600;\\n background: rgba(255, 255, 255, 0.4);\\n box-shadow: 2px 2px 3px -1px rgba(0, 0, 0, 0.15) inset;\\n padding: 2px 8px;\\n border-radius: 3px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--metric {\\n margin-left: 2px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--collapsed {\\n overflow: hidden;\\n padding: 0;\\n}\\n.uHuWYf-StatusBadgemodule--collapsed *:not(.uHuWYf-StatusBadgemodule--chevron) {\\n display: none;\\n}\\n\\n.uHuWYf-StatusBadgemodule--chevron {\\n padding: 0 3px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusBadge/StatusBadge.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const badge = 'uHuWYf-StatusBadgemodule--badge';\nexport const building = 'uHuWYf-StatusBadgemodule--building';\nexport const button = 'uHuWYf-StatusBadgemodule--button';\nexport const chevron = 'uHuWYf-StatusBadgemodule--chevron';\nexport const collapsed = 'uHuWYf-StatusBadgemodule--collapsed';\nexport const contentSurface = 'uHuWYf-StatusBadgemodule--contentSurface';\nexport const error = 'uHuWYf-StatusBadgemodule--error';\nexport const fixedOverlay = 'uHuWYf-StatusBadgemodule--fixedOverlay';\nexport const grip = 'uHuWYf-StatusBadgemodule--grip';\nexport const gripArea = 'uHuWYf-StatusBadgemodule--gripArea';\nexport const inline = 'uHuWYf-StatusBadgemodule--inline';\nexport const metric = 'uHuWYf-StatusBadgemodule--metric';\nexport const success = 'uHuWYf-StatusBadgemodule--success';\nexport const value = 'uHuWYf-StatusBadgemodule--value';\nexport const warning = 'uHuWYf-StatusBadgemodule--warning';\nexport default {badge, building, button, chevron, collapsed, contentSurface, error, fixedOverlay, grip, gripArea, inline, metric, success, value, warning}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource, type TaskStats } from '@ms-cloudpack/api-server/browser';\n\nexport type CloudpackStatus = TaskStats;\n\nconst defaultStatus: CloudpackStatus = {\n status: 'unknown',\n remainingTasks: 0,\n totalTasks: 0,\n totalErrors: 0,\n totalWarnings: 0,\n};\n\nexport const useStatus = () => {\n const cloudpack = useCloudpack();\n const [status, setStatus] = useState<CloudpackStatus>(defaultStatus);\n\n useEffect(() => {\n const subscription = cloudpack?.onDataChanged.subscribe(taskStatsSource, {\n onData: (data) => {\n setStatus(data as CloudpackStatus);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return status;\n};\n", "import { useEffect, useState } from 'react';\nimport { parseImportString } from '@ms-cloudpack/path-string-parsing';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { errorEntrySource, type ErrorEntry } from '@ms-cloudpack/api-server/browser';\n\ndeclare global {\n interface Window {\n __pageErrors: {\n uncaughtErrors: ErrorEvent[];\n uncaughtRejections: PromiseRejectionEvent[];\n unregister: () => void;\n };\n }\n}\n\n// Interface with reason as a record.\ninterface ReasonRecord extends PromiseRejectionEvent {\n readonly reason: Record<string, unknown>;\n}\n\n// Interface with message as a string.\ninterface ReasonString extends ReasonRecord {\n readonly reason: { message: string };\n}\n\n// Verify the reason is a record.\nconst reasonIsRecord = (event: PromiseRejectionEvent): event is ReasonRecord => {\n return typeof event.reason === 'object' && !Array.isArray(event.reason) && event.reason !== null;\n};\n\n// Verify the reason has a message which is a string.\nconst hasMessage = (event: PromiseRejectionEvent): event is ReasonString => {\n return reasonIsRecord(event) && typeof event.reason.message === 'string';\n};\n\nexport type UnsupportedErrorEvent = { packageName: string; importPath: string; issuerUrl?: string; fixable?: boolean };\n\nexport const useErrorEvents = () => {\n const [errorEvents, setErrorEvents] = useState<{ unsupported: UnsupportedErrorEvent[] }>({ unsupported: [] });\n const cloudpack = useCloudpack();\n\n useEffect(() => {\n const handleUnsupportedError = (message: string, issuerUrl?: string): void => {\n const errorRegex = /[Mm]odule specifier,? ['\"](.*?)['\"]/;\n const match = message.match(errorRegex);\n\n if (match) {\n const importString = parseImportString(match[1]);\n const { packageName } = importString;\n const importPath = importString.importPath.replace(/^\\.\\//, '');\n\n (async () => {\n const { fixable } = await cloudpack.validatePackageOverride.query({ packageName, importPath, issuerUrl });\n setErrorEvents((prev) => ({\n ...prev,\n unsupported: [...prev.unsupported, { packageName, importPath, issuerUrl: issuerUrl, fixable }],\n }));\n })().catch(() => {\n // no-op\n });\n }\n };\n\n const subscription = cloudpack.onDataChanged.subscribe(errorEntrySource, {\n onData: (data) => {\n if (data) {\n console.error(data);\n handleUnsupportedError(data as ErrorEntry);\n }\n },\n });\n\n const pageErrors = window.__pageErrors;\n\n pageErrors.unregister();\n\n // Append unsupported paths to the list.\n window.addEventListener('error', (event: ErrorEvent) => {\n handleUnsupportedError(event.message, event.filename);\n });\n\n // Handle errors caught before rendering.\n for (const error of pageErrors.uncaughtErrors) {\n handleUnsupportedError(error.message, error.filename);\n }\n\n // Append unsupported paths to the list.\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n hasMessage(event) && handleUnsupportedError(event.reason.message);\n });\n\n // Handle rejections caught before rendering.\n for (const error of pageErrors.uncaughtRejections) {\n hasMessage(error) && handleUnsupportedError(error.reason.message);\n }\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return errorEvents;\n};\n", "import React from 'react';\nimport { useCloudpack } from '../components/CloudpackProvider/CloudpackProvider.js';\n\nexport function usePageLoadTimeReporter() {\n const [pageLoadTime, setPageLoadTime] = React.useState<number>();\n const cloudpack = useCloudpack();\n\n React.useEffect(() => {\n async function reportPageLoadTime() {\n const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;\n\n const newPageLoadTime = await getPageLoadTime();\n setPageLoadTime(newPageLoadTime);\n await cloudpack.reportMetric.mutate({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });\n\n // Page is loaded, the browser cache ratio can be reported\n await cloudpack.reportMetric.mutate({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });\n }\n\n void reportPageLoadTime();\n }, [cloudpack]);\n\n return pageLoadTime;\n}\n", "import React from 'react';\nimport styles from './ThemeProvider.module.css';\n\nexport function ThemeProvider({ children }: React.ComponentProps<'div'>) {\n return <div className={styles.root}>{children}</div>;\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css\n\n\nlet compiledModule = `.ASWLkl-ThemeProvidermodule--root {\\n font-family:\\n Inter,\\n -apple-system,\\n BlinkMacSystemFont,\\n 'Segoe UI',\\n Roboto,\\n Oxygen,\\n Ubuntu,\\n Cantarell,\\n 'Fira Sans',\\n 'Droid Sans',\\n 'Helvetica Neue',\\n sans-serif;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const root = 'ASWLkl-ThemeProvidermodule--root';\nexport default {root}\n", "/**\n * Gets the cookies dictionary from the browser.\n */\nexport function getCookies(): Record<string, string> {\n return document.cookie\n .split(';')\n .map((s) => s.split('='))\n .reduce<Record<string, string>>((current, nextValue) => {\n const name = nextValue[0]?.trim();\n const value = decodeURIComponent(nextValue[1]?.trim());\n\n if (name && value) {\n current[name] = value;\n }\n\n return current;\n }, {});\n}\n"],
5
- "mappings": "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",
6
- "names": ["React", "React", "useCallback", "useState", "useRef", "useState", "inline", "useState", "metric", "badge", "useEffect", "useState", "useState", "useEffect", "error", "React", "React", "React", "useState", "useRef", "useCallback", "React", "compiledModule", "s", "React", "s", "value", "React"]
3
+ "sources": ["../../../src/index.tsx", "../../../src/components/StatusOverlay/StatusOverlay.tsx", "../../../src/components/StatusBadge/StatusBadge.tsx", "../../../src/components/StatusBadge/StatusBadge.module.css", "../../../src/components/CloudpackProvider/useStatus.ts", "../../../src/components/ErrorDialog/useErrorEvents.ts", "../../../src/hooks/usePageLoadTimeReporter.ts", "../../../src/components/ThemeProvider/ThemeProvider.tsx", "../../../src/components/ThemeProvider/ThemeProvider.module.css"],
4
+ "sourcesContent": ["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';\nimport { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';\nimport { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';\nimport { elementIds } from './constants.js';\nimport { createCloudpackClient, reloadCountSource } from '@ms-cloudpack/api-server/browser';\n\nasync function start() {\n if (!window.__cloudpack) {\n throw new Error('Cloudpack not found on window');\n }\n\n const { pageSessionContext } = window.__cloudpack;\n\n if (!pageSessionContext) {\n throw new Error('Session context not found on window.__cloudpack');\n }\n\n const { apiUrl, currentSequence, sessionId } = pageSessionContext;\n\n const client = await createCloudpackClient({ url: apiUrl });\n\n if (sessionId === (await client.getSessionId.query())) {\n console.log('[Cloudpack] socket opened');\n }\n\n client.onDataChanged.subscribe(reloadCountSource, {\n onData: (data) => {\n if (Number(data) > currentSequence) {\n window.location.reload();\n }\n },\n });\n\n const rootDiv = document.createElement('div');\n rootDiv.id = elementIds.root;\n\n ReactDOM.render(\n <ThemeProvider>\n <CloudpackProvider client={client}>\n <StatusOverlay />\n </CloudpackProvider>\n </ThemeProvider>,\n rootDiv,\n );\n\n document.body.appendChild(rootDiv);\n}\n\nvoid start();\n", "import React, { useCallback, useState, useRef } from 'react';\nimport { StatusBadge } from '../StatusBadge/StatusBadge.js';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { useErrorEvents } from '../ErrorDialog/useErrorEvents.js';\nimport { usePageLoadTimeReporter } from '../../hooks/usePageLoadTimeReporter.js';\n\nconst StatusDialog = React.lazy(() => import('../StatusDialog/StatusDialog.js'));\nconst ErrorDialog = React.lazy(() => import('../ErrorDialog/ErrorDialog.js'));\n\nexport function StatusOverlay() {\n const pageLoadTime = usePageLoadTimeReporter();\n const [isExpanded, setIsExpanded] = useState<boolean>(false);\n const status = useStatus();\n const prevStatus = useRef<CloudpackStatus | undefined>();\n const { unsupported } = useErrorEvents();\n\n // If we haven't set a specific state and we become idle,\n // pop open the details if there are errors.\n React.useEffect(() => {\n if (\n !isExpanded &&\n prevStatus.current?.status !== 'idle' &&\n status.status === 'idle' &&\n (prevStatus.current?.totalErrors || 0) !== (status.totalErrors || 0)\n ) {\n setIsExpanded(true);\n }\n prevStatus.current = status;\n }, [status, isExpanded]);\n\n const toggleMinimized = useCallback(() => {\n console.log(`Toggling minimized state to ${!isExpanded}`);\n setIsExpanded(!isExpanded);\n }, [isExpanded]);\n\n const result = unsupported.length ? (\n <ErrorDialog unsupported={unsupported} />\n ) : isExpanded ? (\n <StatusDialog onClose={toggleMinimized} />\n ) : (\n <StatusBadge onExpand={toggleMinimized} pageLoadTime={pageLoadTime} />\n );\n\n return <React.Suspense fallback={null}>{result}</React.Suspense>;\n}\n", "import React, { useCallback, useRef, useState } from 'react';\nimport { useDraggable } from '../../hooks/useDraggable.js';\nimport styles from './StatusBadge.module.css';\nimport { default as cx } from 'classnames';\nimport { useStatus, type CloudpackStatus } from '../CloudpackProvider/useStatus.js';\nimport { elementIds } from '../../constants.js';\n\nexport interface StatusBadgeProps {\n inline?: boolean;\n onExpand?: () => void;\n onToggle?: () => void;\n pageLoadTime?: number;\n}\n\nexport function StatusBadge({ inline, onExpand, pageLoadTime }: StatusBadgeProps) {\n const badgeStatusKey = 'cloudpack.badgeStatus';\n\n const rootElementRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLDivElement>(null);\n const status = useStatus();\n const [isCollapsed, setIsCollapsed] = useState<boolean>(!!localStorage.getItem(badgeStatusKey));\n\n const shouldRender = status.status !== 'unknown';\n\n const toggleBadgeVisibility = useCallback(() => {\n const newCollapsedState = !isCollapsed;\n console.log('Status badge collapsed state:', newCollapsedState);\n setIsCollapsed(newCollapsedState);\n localStorage.setItem(badgeStatusKey, newCollapsedState ? 'collapsed' : '');\n }, [isCollapsed]);\n\n useDraggable({\n // If we're not yet able to render, don't enable dragging yet.\n // Otherwise the event handlers won't be attached when the component renders.\n enabled: shouldRender && !inline,\n containerElementRef: rootElementRef,\n dragElementRef,\n });\n\n if (!shouldRender) {\n return null;\n }\n\n const metric = pageLoadTime ? (\n <span className={styles.metric} title=\"Page Load Time\">\n in {pageLoadTime.toFixed(2)} ms\n </span>\n ) : null;\n\n const leftChevron = '\\u00AB';\n const rightChevron = '\\u00BB';\n const badge = (\n <div\n id={elementIds.statusBadgeRoot}\n ref={rootElementRef}\n className={`${getStatusClassName(status, !!inline)} ${getCollapsedClassName(isCollapsed)}`}\n >\n {!inline && (\n <div ref={dragElementRef} className={styles.gripArea}>\n <div className={styles.grip} />\n <div className={styles.grip} />\n </div>\n )}\n <button className={styles.button} onClick={onExpand} aria-label=\"Expand overlay\">\n <div className={styles.value}>{getStatusString(status)}</div>\n </button>\n <div>\n {getStatsString(status)}\n {metric}\n </div>\n <button className={`${styles.button} ${styles.chevron}`} onClick={toggleBadgeVisibility}>\n {isCollapsed ? leftChevron : rightChevron}\n </button>\n </div>\n );\n\n return inline ? (\n badge\n ) : (\n <div className={styles.fixedOverlay}>\n <div className={styles.contentSurface}>{badge}</div>\n </div>\n );\n}\n\nfunction getStatusString(status: CloudpackStatus) {\n if (status.status === 'pending') {\n return 'Running';\n }\n\n if (status.totalTasks === 0) {\n return 'Idle';\n }\n\n return status.totalErrors === 0 ? 'Success' : 'Errors';\n}\n\nfunction getStatusClassName({ status, totalTasks, totalErrors, totalWarnings }: CloudpackStatus, inline: boolean) {\n return cx(styles.badge, {\n [styles.inline]: inline,\n [styles.building]: status === 'pending',\n [styles.success]: status === 'idle' && totalTasks > 0 && totalErrors === 0 && totalWarnings === 0,\n [styles.error]: status === 'idle' && totalErrors > 0,\n [styles.warning]: status === 'idle' && totalErrors === 0 && totalWarnings > 0,\n });\n}\n\nfunction getCollapsedClassName(isCollapsed: boolean) {\n return cx(styles.badge, {\n [styles.collapsed]: isCollapsed,\n });\n}\n\nfunction getStatsString({ totalTasks, remainingTasks, totalErrors, totalWarnings }: CloudpackStatus) {\n if (totalTasks === 0) {\n return '';\n }\n\n return [\n remainingTasks > 0 && `${remainingTasks} of ${totalTasks} tasks pending`,\n remainingTasks === 0 && `${totalTasks} tasks completed`,\n totalErrors === 1 && `${totalErrors} error`,\n totalErrors > 1 && `${totalErrors} errors`,\n totalWarnings === 1 && `${totalWarnings} warning`,\n totalWarnings > 1 && `${totalWarnings} warnings`,\n ]\n .filter(Boolean)\n .join(', ');\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/StatusBadge/StatusBadge.module.css\n\n\nlet compiledModule = `.uHuWYf-StatusBadgemodule--fixedOverlay {\\n position: fixed;\\n pointer-events: none;\\n background: transparent;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 99999;\\n overflow: hidden;\\n}\\n\\n.uHuWYf-StatusBadgemodule--gripArea {\\n display: flex;\\n flex-direction: row;\\n gap: 2px;\\n height: 100%;\\n width: 12px;\\n cursor: move;\\n margin-right: -4px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--grip {\\n width: 2px;\\n height: 100%;\\n background: rgba(0, 0, 0, 0.2);\\n}\\n\\n.uHuWYf-StatusBadgemodule--contentSurface {\\n pointer-events: auto;\\n display: contents;\\n}\\n\\n.uHuWYf-StatusBadgemodule--badge {\\n position: absolute;\\n bottom: 4px;\\n right: 4px;\\n font-size: 12px;\\n display: inline-flex;\\n gap: 8px;\\n background: #dddddd;\\n box-shadow: 0 0 12px -6px rgba(0, 0, 0, 0.75);\\n border: 1px solid #999999;\\n border-radius: 4px;\\n height: 28px;\\n flex-shrink: 0;\\n justify-content: center;\\n align-items: center;\\n box-sizing: border-box;\\n padding: 3px;\\n padding-right: 8px;\\n\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.uHuWYf-StatusBadgemodule--inline {\\n flex-shrink: 0;\\n position: relative;\\n bottom: auto;\\n right: auto;\\n top: auto;\\n left: auto;\\n box-shadow: none;\\n padding-left: 8px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--building {\\n background: #bbb;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--success {\\n background: #7ad17a;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--warning {\\n background: #e4e68b;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--error {\\n background: #ffb9b9;\\n color: #000;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button {\\n cursor: pointer;\\n background: inherit;\\n border: none;\\n border-radius: 3px;\\n display: flex;\\n align-self: stretch;\\n align-items: center;\\n justify-content: center;\\n box-sizing: border-box;\\n padding: 0;\\n margin: 0;\\n font-weight: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n}\\n\\n.uHuWYf-StatusBadgemodule--button:hover {\\n filter: invert(0.1);\\n}\\n\\n.uHuWYf-StatusBadgemodule--value {\\n font-weight: 600;\\n background: rgba(255, 255, 255, 0.4);\\n box-shadow: 2px 2px 3px -1px rgba(0, 0, 0, 0.15) inset;\\n padding: 2px 8px;\\n border-radius: 3px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--metric {\\n margin-left: 2px;\\n}\\n\\n.uHuWYf-StatusBadgemodule--collapsed {\\n overflow: hidden;\\n padding: 0;\\n}\\n.uHuWYf-StatusBadgemodule--collapsed *:not(.uHuWYf-StatusBadgemodule--chevron) {\\n display: none;\\n}\\n\\n.uHuWYf-StatusBadgemodule--chevron {\\n padding: 0 3px;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/StatusBadge/StatusBadge.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const badge = 'uHuWYf-StatusBadgemodule--badge';\nexport const building = 'uHuWYf-StatusBadgemodule--building';\nexport const button = 'uHuWYf-StatusBadgemodule--button';\nexport const chevron = 'uHuWYf-StatusBadgemodule--chevron';\nexport const collapsed = 'uHuWYf-StatusBadgemodule--collapsed';\nexport const contentSurface = 'uHuWYf-StatusBadgemodule--contentSurface';\nexport const error = 'uHuWYf-StatusBadgemodule--error';\nexport const fixedOverlay = 'uHuWYf-StatusBadgemodule--fixedOverlay';\nexport const grip = 'uHuWYf-StatusBadgemodule--grip';\nexport const gripArea = 'uHuWYf-StatusBadgemodule--gripArea';\nexport const inline = 'uHuWYf-StatusBadgemodule--inline';\nexport const metric = 'uHuWYf-StatusBadgemodule--metric';\nexport const success = 'uHuWYf-StatusBadgemodule--success';\nexport const value = 'uHuWYf-StatusBadgemodule--value';\nexport const warning = 'uHuWYf-StatusBadgemodule--warning';\nexport default {badge, building, button, chevron, collapsed, contentSurface, error, fixedOverlay, grip, gripArea, inline, metric, success, value, warning}\n", "import { useEffect, useState } from 'react';\nimport { useCloudpack } from './CloudpackProvider.js';\nimport { taskStatsSource, type TaskStats } from '@ms-cloudpack/api-server/browser';\n\nexport type CloudpackStatus = TaskStats;\n\nconst defaultStatus: CloudpackStatus = {\n status: 'unknown',\n remainingTasks: 0,\n totalTasks: 0,\n totalErrors: 0,\n totalWarnings: 0,\n};\n\nexport const useStatus = () => {\n const cloudpack = useCloudpack();\n const [status, setStatus] = useState<CloudpackStatus>(defaultStatus);\n\n useEffect(() => {\n const subscription = cloudpack?.onDataChanged.subscribe(taskStatsSource, {\n onData: (data) => {\n setStatus(data as CloudpackStatus);\n },\n });\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return status;\n};\n", "import { useEffect, useState } from 'react';\nimport { parseImportString } from '@ms-cloudpack/path-string-parsing';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { errorEntrySource, type ErrorEntry } from '@ms-cloudpack/api-server/browser';\n\n// Interface with reason as a record.\ninterface ReasonRecord extends PromiseRejectionEvent {\n readonly reason: Record<string, unknown>;\n}\n\n// Interface with message as a string.\ninterface ReasonString extends ReasonRecord {\n readonly reason: { message: string };\n}\n\n// Verify the reason is a record.\nconst reasonIsRecord = (event: PromiseRejectionEvent): event is ReasonRecord => {\n return typeof event.reason === 'object' && !Array.isArray(event.reason) && event.reason !== null;\n};\n\n// Verify the reason has a message which is a string.\nconst hasMessage = (event: PromiseRejectionEvent): event is ReasonString => {\n return reasonIsRecord(event) && typeof event.reason.message === 'string';\n};\n\nexport type UnsupportedErrorEvent = { packageName: string; importPath: string; issuerUrl?: string; fixable?: boolean };\n\nexport const useErrorEvents = () => {\n const [errorEvents, setErrorEvents] = useState<{ unsupported: UnsupportedErrorEvent[] }>({ unsupported: [] });\n const cloudpack = useCloudpack();\n\n useEffect(() => {\n const handleUnsupportedError = (message: string, issuerUrl?: string): void => {\n const errorRegex = /[Mm]odule specifier,? ['\"](.*?)['\"]/;\n const match = message.match(errorRegex);\n\n if (match) {\n const importString = parseImportString(match[1]);\n const { packageName } = importString;\n const importPath = importString.importPath.replace(/^\\.\\//, '');\n\n (async () => {\n const { fixable } = await cloudpack.validatePackageOverride.query({ packageName, importPath, issuerUrl });\n setErrorEvents((prev) => ({\n ...prev,\n unsupported: [...prev.unsupported, { packageName, importPath, issuerUrl: issuerUrl, fixable }],\n }));\n })().catch(() => {\n // no-op\n });\n }\n };\n\n const subscription = cloudpack.onDataChanged.subscribe(errorEntrySource, {\n onData: (data) => {\n if (data) {\n console.error(data);\n handleUnsupportedError(data as ErrorEntry);\n }\n },\n });\n\n const pageErrors = window.__pageErrors;\n\n pageErrors.unregister();\n\n // Append unsupported paths to the list.\n window.addEventListener('error', (event: ErrorEvent) => {\n handleUnsupportedError(event.message, event.filename);\n });\n\n // Handle errors caught before rendering.\n for (const error of pageErrors.uncaughtErrors) {\n handleUnsupportedError(error.message, error.filename);\n }\n\n // Append unsupported paths to the list.\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n hasMessage(event) && handleUnsupportedError(event.reason.message);\n });\n\n // Handle rejections caught before rendering.\n for (const error of pageErrors.uncaughtRejections) {\n hasMessage(error) && handleUnsupportedError(error.reason.message);\n }\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return errorEvents;\n};\n", "import React from 'react';\nimport { useCloudpack } from '../components/CloudpackProvider/CloudpackProvider.js';\n\nexport function usePageLoadTimeReporter() {\n const [pageLoadTime, setPageLoadTime] = React.useState<number>();\n const cloudpack = useCloudpack();\n\n React.useEffect(() => {\n async function reportPageLoadTime() {\n if (!window.__cloudpack) {\n throw new Error('Cloudpack not found on window');\n }\n const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;\n\n if (!getPageLoadTime) {\n throw new Error('getPageLoadTime not found on window.__cloudpack');\n }\n const newPageLoadTime = await getPageLoadTime();\n setPageLoadTime(newPageLoadTime);\n await cloudpack.reportMetric.mutate({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });\n\n if (!getBrowserCacheRatio) {\n throw new Error('getBrowserCacheRatio not found on window.__cloudpack');\n }\n // Page is loaded, the browser cache ratio can be reported\n await cloudpack.reportMetric.mutate({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });\n }\n\n void reportPageLoadTime();\n }, [cloudpack]);\n\n return pageLoadTime;\n}\n", "import React from 'react';\nimport styles from './ThemeProvider.module.css';\n\nexport function ThemeProvider({ children }: React.ComponentProps<'div'>) {\n return <div className={styles.root}>{children}</div>;\n}\n", "// THIS FILE IS AUTO GENERATED FROM packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css\n\n\nlet compiledModule = `.ASWLkl-ThemeProvidermodule--root {\\n font-family:\\n Inter,\\n -apple-system,\\n BlinkMacSystemFont,\\n 'Segoe UI',\\n Roboto,\\n Oxygen,\\n Ubuntu,\\n Cantarell,\\n 'Fira Sans',\\n 'Droid Sans',\\n 'Helvetica Neue',\\n sans-serif;\\n}\\n`;\nconst s = document.createElement('style');\ns.setAttribute('data-sourceFile', 'packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css');\ns.appendChild(document.createTextNode(compiledModule));\ndocument.head.appendChild(s)\nexport const root = 'ASWLkl-ThemeProvidermodule--root';\nexport default {root}\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "React", "useCallback", "useState", "useRef", "useState", "inline", "useState", "metric", "badge", "useEffect", "useState", "useState", "useEffect", "error", "React", "React", "React", "useState", "useRef", "useCallback", "React", "compiledModule", "s", "React", "React"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "builder:notify",
3
- "buildId": "build_42a7dd56-ffd3-48ab-a018-4a5971b077a6",
3
+ "buildId": "build_62f64817-d036-41b2-b772-374014a6db69",
4
4
  "buildStatus": "complete",
5
5
  "internalError": null,
6
6
  "warnings": [],
@@ -10,22 +10,22 @@
10
10
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/constants.js",
11
11
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/index.js.map",
12
12
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/lib/index.js",
13
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/StatusDialog-J6LM3XZZ.js.map",
14
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/StatusDialog-J6LM3XZZ.js",
15
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-744DEKEI.js.map",
16
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-744DEKEI.js",
13
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/StatusDialog-7Q5HGOOM.js.map",
14
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/StatusDialog-7Q5HGOOM.js",
15
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-5IGGA35U.js.map",
16
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-5IGGA35U.js",
17
17
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-XOJFP5X6.js.map",
18
18
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-XOJFP5X6.js",
19
19
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-7KHMDJ6G.js.map",
20
20
  "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-7KHMDJ6G.js",
21
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map",
22
- "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js"
21
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js.map",
22
+ "/home/runner/work/cloudpack/cloudpack/packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js"
23
23
  ],
24
24
  "outputFiles": null,
25
25
  "metafile": {
26
26
  "inputs": {
27
27
  "packages/overlay/src/constants.ts": {
28
- "bytes": 803,
28
+ "bytes": 599,
29
29
  "imports": [],
30
30
  "format": "esm"
31
31
  },
@@ -119,7 +119,7 @@
119
119
  "format": "esm"
120
120
  },
121
121
  "packages/overlay/src/components/ErrorDialog/useErrorEvents.ts": {
122
- "bytes": 3446,
122
+ "bytes": 3257,
123
123
  "imports": [
124
124
  {
125
125
  "path": "react",
@@ -145,7 +145,7 @@
145
145
  "format": "esm"
146
146
  },
147
147
  "packages/overlay/src/hooks/usePageLoadTimeReporter.ts": {
148
- "bytes": 857,
148
+ "bytes": 1194,
149
149
  "imports": [
150
150
  {
151
151
  "path": "react",
@@ -568,13 +568,8 @@
568
568
  ],
569
569
  "format": "esm"
570
570
  },
571
- "packages/overlay/src/components/CloudpackProvider/getCookies.ts": {
572
- "bytes": 452,
573
- "imports": [],
574
- "format": "esm"
575
- },
576
571
  "packages/overlay/src/index.tsx": {
577
- "bytes": 1567,
572
+ "bytes": 1450,
578
573
  "imports": [
579
574
  {
580
575
  "path": "react",
@@ -610,11 +605,6 @@
610
605
  "path": "@ms-cloudpack/api-server/browser",
611
606
  "kind": "import-statement",
612
607
  "external": true
613
- },
614
- {
615
- "path": "packages/overlay/src/components/CloudpackProvider/getCookies.ts",
616
- "kind": "import-statement",
617
- "original": "./components/CloudpackProvider/getCookies.js"
618
608
  }
619
609
  ],
620
610
  "format": "esm"
@@ -630,23 +620,22 @@
630
620
  "packages/overlay/dist/browser-esm/lib/constants.js": {
631
621
  "imports": [
632
622
  {
633
- "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
623
+ "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js",
634
624
  "kind": "import-statement"
635
625
  }
636
626
  ],
637
627
  "exports": [
638
- "cookieNames",
639
628
  "elementIds"
640
629
  ],
641
630
  "entryPoint": "packages/overlay/src/constants.ts",
642
631
  "inputs": {},
643
- "bytes": 156
632
+ "bytes": 126
644
633
  },
645
634
  "packages/overlay/dist/browser-esm/lib/index.js.map": {
646
635
  "imports": [],
647
636
  "exports": [],
648
637
  "inputs": {},
649
- "bytes": 27463
638
+ "bytes": 26833
650
639
  },
651
640
  "packages/overlay/dist/browser-esm/lib/index.js": {
652
641
  "imports": [
@@ -655,7 +644,7 @@
655
644
  "kind": "import-statement"
656
645
  },
657
646
  {
658
- "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
647
+ "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js",
659
648
  "kind": "import-statement"
660
649
  },
661
650
  {
@@ -714,11 +703,11 @@
714
703
  "external": true
715
704
  },
716
705
  {
717
- "path": "packages/overlay/dist/browser-esm/chunks/js/StatusDialog-J6LM3XZZ.js",
706
+ "path": "packages/overlay/dist/browser-esm/chunks/js/StatusDialog-7Q5HGOOM.js",
718
707
  "kind": "dynamic-import"
719
708
  },
720
709
  {
721
- "path": "packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-744DEKEI.js",
710
+ "path": "packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-5IGGA35U.js",
722
711
  "kind": "dynamic-import"
723
712
  },
724
713
  {
@@ -736,7 +725,7 @@
736
725
  "entryPoint": "packages/overlay/src/index.tsx",
737
726
  "inputs": {
738
727
  "packages/overlay/src/index.tsx": {
739
- "bytesInOutput": 1234
728
+ "bytesInOutput": 1202
740
729
  },
741
730
  "packages/overlay/src/components/StatusOverlay/StatusOverlay.tsx": {
742
731
  "bytesInOutput": 1354
@@ -754,27 +743,24 @@
754
743
  "bytesInOutput": 2272
755
744
  },
756
745
  "packages/overlay/src/hooks/usePageLoadTimeReporter.ts": {
757
- "bytesInOutput": 689
746
+ "bytesInOutput": 1026
758
747
  },
759
748
  "packages/overlay/src/components/ThemeProvider/ThemeProvider.tsx": {
760
749
  "bytesInOutput": 176
761
750
  },
762
751
  "packages/overlay/src/components/ThemeProvider/ThemeProvider.module.css": {
763
752
  "bytesInOutput": 599
764
- },
765
- "packages/overlay/src/components/CloudpackProvider/getCookies.ts": {
766
- "bytesInOutput": 314
767
753
  }
768
754
  },
769
- "bytes": 16110
755
+ "bytes": 15983
770
756
  },
771
- "packages/overlay/dist/browser-esm/chunks/js/StatusDialog-J6LM3XZZ.js.map": {
757
+ "packages/overlay/dist/browser-esm/chunks/js/StatusDialog-7Q5HGOOM.js.map": {
772
758
  "imports": [],
773
759
  "exports": [],
774
760
  "inputs": {},
775
761
  "bytes": 22324
776
762
  },
777
- "packages/overlay/dist/browser-esm/chunks/js/StatusDialog-J6LM3XZZ.js": {
763
+ "packages/overlay/dist/browser-esm/chunks/js/StatusDialog-7Q5HGOOM.js": {
778
764
  "imports": [
779
765
  {
780
766
  "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-XOJFP5X6.js",
@@ -785,7 +771,7 @@
785
771
  "kind": "import-statement"
786
772
  },
787
773
  {
788
- "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
774
+ "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js",
789
775
  "kind": "import-statement"
790
776
  },
791
777
  {
@@ -865,13 +851,13 @@
865
851
  },
866
852
  "bytes": 14511
867
853
  },
868
- "packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-744DEKEI.js.map": {
854
+ "packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-5IGGA35U.js.map": {
869
855
  "imports": [],
870
856
  "exports": [],
871
857
  "inputs": {},
872
858
  "bytes": 6309
873
859
  },
874
- "packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-744DEKEI.js": {
860
+ "packages/overlay/dist/browser-esm/chunks/js/ErrorDialog-5IGGA35U.js": {
875
861
  "imports": [
876
862
  {
877
863
  "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-XOJFP5X6.js",
@@ -882,7 +868,7 @@
882
868
  "kind": "import-statement"
883
869
  },
884
870
  {
885
- "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js",
871
+ "path": "packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js",
886
872
  "kind": "import-statement"
887
873
  },
888
874
  {
@@ -1012,24 +998,23 @@
1012
998
  },
1013
999
  "bytes": 2331
1014
1000
  },
1015
- "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js.map": {
1001
+ "packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js.map": {
1016
1002
  "imports": [],
1017
1003
  "exports": [],
1018
1004
  "inputs": {},
1019
- "bytes": 1178
1005
+ "bytes": 896
1020
1006
  },
1021
- "packages/overlay/dist/browser-esm/chunks/js/chunk-PDWQRLCD.js": {
1007
+ "packages/overlay/dist/browser-esm/chunks/js/chunk-GBPQMJW6.js": {
1022
1008
  "imports": [],
1023
1009
  "exports": [
1024
- "cookieNames",
1025
1010
  "elementIds"
1026
1011
  ],
1027
1012
  "inputs": {
1028
1013
  "packages/overlay/src/constants.ts": {
1029
- "bytesInOutput": 599
1014
+ "bytesInOutput": 460
1030
1015
  }
1031
1016
  },
1032
- "bytes": 720
1017
+ "bytes": 566
1033
1018
  }
1034
1019
  }
1035
1020
  }
@@ -1,10 +1,10 @@
1
1
  {
2
- "bundlerName": "ori",
2
+ "bundler": "ori",
3
3
  "entries": {
4
4
  "./lib/index": "./src/index.tsx",
5
5
  "./lib/constants": "./src/constants.ts"
6
6
  },
7
- "hash": "v9-94982dd23f42bac494680a1a63f4fc72938c37a7",
7
+ "hash": "v9-a6e5abc995e25b1e53e174dc5e400b987353fd1d",
8
8
  "outputFiles": [
9
9
  {
10
10
  "outputPath": "./lib/constants.js.map",
@@ -14,7 +14,6 @@
14
14
  "outputPath": "./lib/constants.js",
15
15
  "entryPoint": "./src/constants.ts",
16
16
  "exports": [
17
- "cookieNames",
18
17
  "elementIds"
19
18
  ]
20
19
  },
@@ -28,11 +27,11 @@
28
27
  "exports": []
29
28
  },
30
29
  {
31
- "outputPath": "./chunks/js/StatusDialog-J6LM3XZZ.js.map",
30
+ "outputPath": "./chunks/js/StatusDialog-7Q5HGOOM.js.map",
32
31
  "exports": []
33
32
  },
34
33
  {
35
- "outputPath": "./chunks/js/StatusDialog-J6LM3XZZ.js",
34
+ "outputPath": "./chunks/js/StatusDialog-7Q5HGOOM.js",
36
35
  "entryPoint": "./src/components/StatusDialog/StatusDialog.tsx",
37
36
  "exports": [
38
37
  "StatusDialog",
@@ -40,11 +39,11 @@
40
39
  ]
41
40
  },
42
41
  {
43
- "outputPath": "./chunks/js/ErrorDialog-744DEKEI.js.map",
42
+ "outputPath": "./chunks/js/ErrorDialog-5IGGA35U.js.map",
44
43
  "exports": []
45
44
  },
46
45
  {
47
- "outputPath": "./chunks/js/ErrorDialog-744DEKEI.js",
46
+ "outputPath": "./chunks/js/ErrorDialog-5IGGA35U.js",
48
47
  "entryPoint": "./src/components/ErrorDialog/ErrorDialog.tsx",
49
48
  "exports": [
50
49
  "ErrorDialog",
@@ -79,13 +78,12 @@
79
78
  ]
80
79
  },
81
80
  {
82
- "outputPath": "./chunks/js/chunk-PDWQRLCD.js.map",
81
+ "outputPath": "./chunks/js/chunk-GBPQMJW6.js.map",
83
82
  "exports": []
84
83
  },
85
84
  {
86
- "outputPath": "./chunks/js/chunk-PDWQRLCD.js",
85
+ "outputPath": "./chunks/js/chunk-GBPQMJW6.js",
87
86
  "exports": [
88
- "cookieNames",
89
87
  "elementIds"
90
88
  ]
91
89
  }
@@ -1,12 +1,3 @@
1
- declare global {
2
- interface Window {
3
- __pageErrors: {
4
- uncaughtErrors: ErrorEvent[];
5
- uncaughtRejections: PromiseRejectionEvent[];
6
- unregister: () => void;
7
- };
8
- }
9
- }
10
1
  export type UnsupportedErrorEvent = {
11
2
  packageName: string;
12
3
  importPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useErrorEvents.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorDialog/useErrorEvents.ts"],"names":[],"mappings":"AAKA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,EAAE;YACZ,cAAc,EAAE,UAAU,EAAE,CAAC;YAC7B,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;YAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;SACxB,CAAC;KACH;CACF;AAsBD,MAAM,MAAM,qBAAqB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvH,eAAO,MAAM,cAAc;iBACqC,qBAAqB,EAAE;CAgEtF,CAAC"}
1
+ {"version":3,"file":"useErrorEvents.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorDialog/useErrorEvents.ts"],"names":[],"mappings":"AAyBA,MAAM,MAAM,qBAAqB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvH,eAAO,MAAM,cAAc;iBACqC,qBAAqB,EAAE;CAgEtF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useErrorEvents.js","sourceRoot":"","sources":["../../../src/components/ErrorDialog/useErrorEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { parseImportString } from '@ms-cloudpack/path-string-parsing';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { errorEntrySource, type ErrorEntry } from '@ms-cloudpack/api-server/browser';\n\ndeclare global {\n interface Window {\n __pageErrors: {\n uncaughtErrors: ErrorEvent[];\n uncaughtRejections: PromiseRejectionEvent[];\n unregister: () => void;\n };\n }\n}\n\n// Interface with reason as a record.\ninterface ReasonRecord extends PromiseRejectionEvent {\n readonly reason: Record<string, unknown>;\n}\n\n// Interface with message as a string.\ninterface ReasonString extends ReasonRecord {\n readonly reason: { message: string };\n}\n\n// Verify the reason is a record.\nconst reasonIsRecord = (event: PromiseRejectionEvent): event is ReasonRecord => {\n return typeof event.reason === 'object' && !Array.isArray(event.reason) && event.reason !== null;\n};\n\n// Verify the reason has a message which is a string.\nconst hasMessage = (event: PromiseRejectionEvent): event is ReasonString => {\n return reasonIsRecord(event) && typeof event.reason.message === 'string';\n};\n\nexport type UnsupportedErrorEvent = { packageName: string; importPath: string; issuerUrl?: string; fixable?: boolean };\n\nexport const useErrorEvents = () => {\n const [errorEvents, setErrorEvents] = useState<{ unsupported: UnsupportedErrorEvent[] }>({ unsupported: [] });\n const cloudpack = useCloudpack();\n\n useEffect(() => {\n const handleUnsupportedError = (message: string, issuerUrl?: string): void => {\n const errorRegex = /[Mm]odule specifier,? ['\"](.*?)['\"]/;\n const match = message.match(errorRegex);\n\n if (match) {\n const importString = parseImportString(match[1]);\n const { packageName } = importString;\n const importPath = importString.importPath.replace(/^\\.\\//, '');\n\n (async () => {\n const { fixable } = await cloudpack.validatePackageOverride.query({ packageName, importPath, issuerUrl });\n setErrorEvents((prev) => ({\n ...prev,\n unsupported: [...prev.unsupported, { packageName, importPath, issuerUrl: issuerUrl, fixable }],\n }));\n })().catch(() => {\n // no-op\n });\n }\n };\n\n const subscription = cloudpack.onDataChanged.subscribe(errorEntrySource, {\n onData: (data) => {\n if (data) {\n console.error(data);\n handleUnsupportedError(data as ErrorEntry);\n }\n },\n });\n\n const pageErrors = window.__pageErrors;\n\n pageErrors.unregister();\n\n // Append unsupported paths to the list.\n window.addEventListener('error', (event: ErrorEvent) => {\n handleUnsupportedError(event.message, event.filename);\n });\n\n // Handle errors caught before rendering.\n for (const error of pageErrors.uncaughtErrors) {\n handleUnsupportedError(error.message, error.filename);\n }\n\n // Append unsupported paths to the list.\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n hasMessage(event) && handleUnsupportedError(event.reason.message);\n });\n\n // Handle rejections caught before rendering.\n for (const error of pageErrors.uncaughtRejections) {\n hasMessage(error) && handleUnsupportedError(error.reason.message);\n }\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return errorEvents;\n};\n"]}
1
+ {"version":3,"file":"useErrorEvents.js","sourceRoot":"","sources":["../../../src/components/ErrorDialog/useErrorEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react';\nimport { parseImportString } from '@ms-cloudpack/path-string-parsing';\nimport { useCloudpack } from '../CloudpackProvider/CloudpackProvider.js';\nimport { errorEntrySource, type ErrorEntry } from '@ms-cloudpack/api-server/browser';\n\n// Interface with reason as a record.\ninterface ReasonRecord extends PromiseRejectionEvent {\n readonly reason: Record<string, unknown>;\n}\n\n// Interface with message as a string.\ninterface ReasonString extends ReasonRecord {\n readonly reason: { message: string };\n}\n\n// Verify the reason is a record.\nconst reasonIsRecord = (event: PromiseRejectionEvent): event is ReasonRecord => {\n return typeof event.reason === 'object' && !Array.isArray(event.reason) && event.reason !== null;\n};\n\n// Verify the reason has a message which is a string.\nconst hasMessage = (event: PromiseRejectionEvent): event is ReasonString => {\n return reasonIsRecord(event) && typeof event.reason.message === 'string';\n};\n\nexport type UnsupportedErrorEvent = { packageName: string; importPath: string; issuerUrl?: string; fixable?: boolean };\n\nexport const useErrorEvents = () => {\n const [errorEvents, setErrorEvents] = useState<{ unsupported: UnsupportedErrorEvent[] }>({ unsupported: [] });\n const cloudpack = useCloudpack();\n\n useEffect(() => {\n const handleUnsupportedError = (message: string, issuerUrl?: string): void => {\n const errorRegex = /[Mm]odule specifier,? ['\"](.*?)['\"]/;\n const match = message.match(errorRegex);\n\n if (match) {\n const importString = parseImportString(match[1]);\n const { packageName } = importString;\n const importPath = importString.importPath.replace(/^\\.\\//, '');\n\n (async () => {\n const { fixable } = await cloudpack.validatePackageOverride.query({ packageName, importPath, issuerUrl });\n setErrorEvents((prev) => ({\n ...prev,\n unsupported: [...prev.unsupported, { packageName, importPath, issuerUrl: issuerUrl, fixable }],\n }));\n })().catch(() => {\n // no-op\n });\n }\n };\n\n const subscription = cloudpack.onDataChanged.subscribe(errorEntrySource, {\n onData: (data) => {\n if (data) {\n console.error(data);\n handleUnsupportedError(data as ErrorEntry);\n }\n },\n });\n\n const pageErrors = window.__pageErrors;\n\n pageErrors.unregister();\n\n // Append unsupported paths to the list.\n window.addEventListener('error', (event: ErrorEvent) => {\n handleUnsupportedError(event.message, event.filename);\n });\n\n // Handle errors caught before rendering.\n for (const error of pageErrors.uncaughtErrors) {\n handleUnsupportedError(error.message, error.filename);\n }\n\n // Append unsupported paths to the list.\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\n hasMessage(event) && handleUnsupportedError(event.reason.message);\n });\n\n // Handle rejections caught before rendering.\n for (const error of pageErrors.uncaughtRejections) {\n hasMessage(error) && handleUnsupportedError(error.reason.message);\n }\n\n return () => {\n subscription.unsubscribe();\n };\n }, [cloudpack]);\n\n return errorEvents;\n};\n"]}
@@ -16,12 +16,4 @@ export declare const elementIds: {
16
16
  */
17
17
  readonly statusBadgeRoot: "cloudpack-overlay-status-badge";
18
18
  };
19
- /**
20
- * Cloudpack cookies accessed by the overlay.
21
- */
22
- export declare const cookieNames: {
23
- sessionId: string;
24
- sessionSequence: string;
25
- apiUrl: string;
26
- };
27
19
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;IACrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;IACrB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC"}
package/lib/constants.js CHANGED
@@ -18,12 +18,4 @@ export const elementIds = {
18
18
  */
19
19
  statusBadgeRoot: 'cloudpack-overlay-status-badge',
20
20
  };
21
- /**
22
- * Cloudpack cookies accessed by the overlay.
23
- */
24
- export const cookieNames = {
25
- sessionId: 'cloudpack-session-id',
26
- sessionSequence: 'cloudpack-session-sequence',
27
- apiUrl: 'cloudpack-api-url',
28
- };
29
21
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oBAAoB;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,wBAAwB;IAC9B;;OAEG;IACH,eAAe,EAAE,gCAAgC;IACjD;;OAEG;IACH,gBAAgB,EAAE,iCAAiC;IACnD;;OAEG;IACH,eAAe,EAAE,gCAAgC;CACzC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,sBAAsB;IACjC,eAAe,EAAE,4BAA4B;IAC7C,MAAM,EAAE,mBAAmB;CAC5B,CAAC","sourcesContent":["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n\n/**\n * Cloudpack cookies accessed by the overlay.\n */\nexport const cookieNames = {\n sessionId: 'cloudpack-session-id',\n sessionSequence: 'cloudpack-session-sequence',\n apiUrl: 'cloudpack-api-url',\n};\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,oBAAoB;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;OAEG;IACH,IAAI,EAAE,wBAAwB;IAC9B;;OAEG;IACH,eAAe,EAAE,gCAAgC;IACjD;;OAEG;IACH,gBAAgB,EAAE,iCAAiC;IACnD;;OAEG;IACH,eAAe,EAAE,gCAAgC;CACzC,CAAC","sourcesContent":["// This file serves as a separate entry point which can be imported without rendering the overlay\n// as a side effect.\n\nexport const elementIds = {\n /**\n * ID for the root element of the overlay.\n */\n root: 'cloudpack-overlay-root',\n /**\n * ID for the root element of the error dialog.\n */\n errorDialogRoot: 'cloudpack-overlay-error-dialog',\n /**\n * ID for the root element of the status dialog.\n */\n statusDialogRoot: 'cloudpack-overlay-status-dialog',\n /**\n * ID for the root element of the status badge.\n */\n statusBadgeRoot: 'cloudpack-overlay-status-badge',\n} as const;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePageLoadTimeReporter.d.ts","sourceRoot":"","sources":["../../src/hooks/usePageLoadTimeReporter.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,uBAoBtC"}
1
+ {"version":3,"file":"usePageLoadTimeReporter.d.ts","sourceRoot":"","sources":["../../src/hooks/usePageLoadTimeReporter.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,uBA6BtC"}
@@ -5,10 +5,19 @@ export function usePageLoadTimeReporter() {
5
5
  const cloudpack = useCloudpack();
6
6
  React.useEffect(() => {
7
7
  async function reportPageLoadTime() {
8
+ if (!window.__cloudpack) {
9
+ throw new Error('Cloudpack not found on window');
10
+ }
8
11
  const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;
12
+ if (!getPageLoadTime) {
13
+ throw new Error('getPageLoadTime not found on window.__cloudpack');
14
+ }
9
15
  const newPageLoadTime = await getPageLoadTime();
10
16
  setPageLoadTime(newPageLoadTime);
11
17
  await cloudpack.reportMetric.mutate({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });
18
+ if (!getBrowserCacheRatio) {
19
+ throw new Error('getBrowserCacheRatio not found on window.__cloudpack');
20
+ }
12
21
  // Page is loaded, the browser cache ratio can be reported
13
22
  await cloudpack.reportMetric.mutate({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });
14
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"usePageLoadTimeReporter.js","sourceRoot":"","sources":["../../src/hooks/usePageLoadTimeReporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEpF,MAAM,UAAU,uBAAuB;IACrC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACjE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,UAAU,kBAAkB;YAC/B,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;YAErE,MAAM,eAAe,GAAG,MAAM,eAAe,EAAE,CAAC;YAChD,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAE1F,0DAA0D;YAC1D,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACxG,CAAC;QAED,KAAK,kBAAkB,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import React from 'react';\nimport { useCloudpack } from '../components/CloudpackProvider/CloudpackProvider.js';\n\nexport function usePageLoadTimeReporter() {\n const [pageLoadTime, setPageLoadTime] = React.useState<number>();\n const cloudpack = useCloudpack();\n\n React.useEffect(() => {\n async function reportPageLoadTime() {\n const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;\n\n const newPageLoadTime = await getPageLoadTime();\n setPageLoadTime(newPageLoadTime);\n await cloudpack.reportMetric.mutate({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });\n\n // Page is loaded, the browser cache ratio can be reported\n await cloudpack.reportMetric.mutate({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });\n }\n\n void reportPageLoadTime();\n }, [cloudpack]);\n\n return pageLoadTime;\n}\n"]}
1
+ {"version":3,"file":"usePageLoadTimeReporter.js","sourceRoot":"","sources":["../../src/hooks/usePageLoadTimeReporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEpF,MAAM,UAAU,uBAAuB;IACrC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACjE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,KAAK,UAAU,kBAAkB;YAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;YAErE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,eAAe,GAAG,MAAM,eAAe,EAAE,CAAC;YAChD,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YAE1F,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,0DAA0D;YAC1D,MAAM,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACxG,CAAC;QAED,KAAK,kBAAkB,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import React from 'react';\nimport { useCloudpack } from '../components/CloudpackProvider/CloudpackProvider.js';\n\nexport function usePageLoadTimeReporter() {\n const [pageLoadTime, setPageLoadTime] = React.useState<number>();\n const cloudpack = useCloudpack();\n\n React.useEffect(() => {\n async function reportPageLoadTime() {\n if (!window.__cloudpack) {\n throw new Error('Cloudpack not found on window');\n }\n const { getPageLoadTime, getBrowserCacheRatio } = window.__cloudpack;\n\n if (!getPageLoadTime) {\n throw new Error('getPageLoadTime not found on window.__cloudpack');\n }\n const newPageLoadTime = await getPageLoadTime();\n setPageLoadTime(newPageLoadTime);\n await cloudpack.reportMetric.mutate({ metric: 'PAGE_LOAD_TIME', value: newPageLoadTime });\n\n if (!getBrowserCacheRatio) {\n throw new Error('getBrowserCacheRatio not found on window.__cloudpack');\n }\n // Page is loaded, the browser cache ratio can be reported\n await cloudpack.reportMetric.mutate({ metric: 'BROWSER_CACHE_RATIO', value: getBrowserCacheRatio() });\n }\n\n void reportPageLoadTime();\n }, [cloudpack]);\n\n return pageLoadTime;\n}\n"]}
package/lib/index.js CHANGED
@@ -3,21 +3,24 @@ import ReactDOM from 'react-dom';
3
3
  import { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';
4
4
  import { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';
5
5
  import { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';
6
- import { cookieNames, elementIds } from './constants.js';
6
+ import { elementIds } from './constants.js';
7
7
  import { createCloudpackClient, reloadCountSource } from '@ms-cloudpack/api-server/browser';
8
- import { getCookies } from './components/CloudpackProvider/getCookies.js';
9
8
  async function start() {
10
- const cookies = getCookies();
11
- const sessionId = cookies[cookieNames.sessionId] ?? localStorage.getItem(cookieNames.sessionId);
12
- const apiUrl = cookies[cookieNames.apiUrl] ?? localStorage.getItem(cookieNames.apiUrl);
13
- const currentSequence = cookies[cookieNames.sessionSequence] ?? localStorage.getItem(cookieNames.sessionSequence);
9
+ if (!window.__cloudpack) {
10
+ throw new Error('Cloudpack not found on window');
11
+ }
12
+ const { pageSessionContext } = window.__cloudpack;
13
+ if (!pageSessionContext) {
14
+ throw new Error('Session context not found on window.__cloudpack');
15
+ }
16
+ const { apiUrl, currentSequence, sessionId } = pageSessionContext;
14
17
  const client = await createCloudpackClient({ url: apiUrl });
15
18
  if (sessionId === (await client.getSessionId.query())) {
16
19
  console.log('[Cloudpack] socket opened');
17
20
  }
18
21
  client.onDataChanged.subscribe(reloadCountSource, {
19
22
  onData: (data) => {
20
- if (Number(data) > Number(currentSequence)) {
23
+ if (Number(data) > currentSequence) {
21
24
  window.location.reload();
22
25
  }
23
26
  },
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE1E,KAAK,UAAU,KAAK;IAClB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACvF,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAElH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAE5D,IAAI,SAAS,KAAK,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE;QAChD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;IAE7B,QAAQ,CAAC,MAAM,CACb,oBAAC,aAAa;QACZ,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM;YAC/B,oBAAC,aAAa,OAAG,CACC,CACN,EAChB,OAAO,CACR,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,KAAK,EAAE,CAAC","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';\nimport { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';\nimport { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';\nimport { cookieNames, elementIds } from './constants.js';\nimport { createCloudpackClient, reloadCountSource } from '@ms-cloudpack/api-server/browser';\nimport { getCookies } from './components/CloudpackProvider/getCookies.js';\n\nasync function start() {\n const cookies = getCookies();\n const sessionId = cookies[cookieNames.sessionId] ?? localStorage.getItem(cookieNames.sessionId);\n const apiUrl = cookies[cookieNames.apiUrl] ?? localStorage.getItem(cookieNames.apiUrl);\n const currentSequence = cookies[cookieNames.sessionSequence] ?? localStorage.getItem(cookieNames.sessionSequence);\n\n const client = await createCloudpackClient({ url: apiUrl });\n\n if (sessionId === (await client.getSessionId.query())) {\n console.log('[Cloudpack] socket opened');\n }\n\n client.onDataChanged.subscribe(reloadCountSource, {\n onData: (data) => {\n if (Number(data) > Number(currentSequence)) {\n window.location.reload();\n }\n },\n });\n\n const rootDiv = document.createElement('div');\n rootDiv.id = elementIds.root;\n\n ReactDOM.render(\n <ThemeProvider>\n <CloudpackProvider client={client}>\n <StatusOverlay />\n </CloudpackProvider>\n </ThemeProvider>,\n rootDiv,\n );\n\n document.body.appendChild(rootDiv);\n}\n\nvoid start();\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE5F,KAAK,UAAU,KAAK;IAClB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAElD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC;IAElE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAE5D,IAAI,SAAS,KAAK,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE;QAChD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC;IAE7B,QAAQ,CAAC,MAAM,CACb,oBAAC,aAAa;QACZ,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM;YAC/B,oBAAC,aAAa,OAAG,CACC,CACN,EAChB,OAAO,CACR,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,KAAK,EAAE,CAAC","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { CloudpackProvider } from './components/CloudpackProvider/CloudpackProvider.js';\nimport { StatusOverlay } from './components/StatusOverlay/StatusOverlay.js';\nimport { ThemeProvider } from './components/ThemeProvider/ThemeProvider.js';\nimport { elementIds } from './constants.js';\nimport { createCloudpackClient, reloadCountSource } from '@ms-cloudpack/api-server/browser';\n\nasync function start() {\n if (!window.__cloudpack) {\n throw new Error('Cloudpack not found on window');\n }\n\n const { pageSessionContext } = window.__cloudpack;\n\n if (!pageSessionContext) {\n throw new Error('Session context not found on window.__cloudpack');\n }\n\n const { apiUrl, currentSequence, sessionId } = pageSessionContext;\n\n const client = await createCloudpackClient({ url: apiUrl });\n\n if (sessionId === (await client.getSessionId.query())) {\n console.log('[Cloudpack] socket opened');\n }\n\n client.onDataChanged.subscribe(reloadCountSource, {\n onData: (data) => {\n if (Number(data) > currentSequence) {\n window.location.reload();\n }\n },\n });\n\n const rootDiv = document.createElement('div');\n rootDiv.id = elementIds.root;\n\n ReactDOM.render(\n <ThemeProvider>\n <CloudpackProvider client={client}>\n <StatusOverlay />\n </CloudpackProvider>\n </ThemeProvider>,\n rootDiv,\n );\n\n document.body.appendChild(rootDiv);\n}\n\nvoid start();\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/overlay",
3
- "version": "0.17.30",
3
+ "version": "0.17.32",
4
4
  "description": "The Cloudpack overlay ux.",
5
5
  "license": "MIT",
6
6
  "types": "./lib/index.d.ts",
@@ -28,14 +28,15 @@
28
28
  "lint": "cloudpack-scripts lint"
29
29
  },
30
30
  "dependencies": {
31
- "@ms-cloudpack/api-server": "^0.46.6",
31
+ "@ms-cloudpack/api-server": "^0.47.1",
32
32
  "@ms-cloudpack/path-string-parsing": "^1.2.3",
33
33
  "classnames": "^2.5.1",
34
34
  "react": "^17.0.0 || ^18.0.0",
35
35
  "react-dom": "^17.0.0 || ^18.0.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@ms-cloudpack/common-types": "^0.11.0",
38
+ "@ms-cloudpack/common-types": "^0.12.0",
39
+ "@ms-cloudpack/common-types-browser": "^0.2.0",
39
40
  "@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
40
41
  "@ms-cloudpack/scripts": "^0.0.1",
41
42
  "@types/react": "^17.0.58",
@@ -1,5 +0,0 @@
1
- /**
2
- * Gets the cookies dictionary from the browser.
3
- */
4
- export declare function getCookies(): Record<string, string>;
5
- //# sourceMappingURL=getCookies.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCookies.d.ts","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/getCookies.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcnD"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Gets the cookies dictionary from the browser.
3
- */
4
- export function getCookies() {
5
- return document.cookie
6
- .split(';')
7
- .map((s) => s.split('='))
8
- .reduce((current, nextValue) => {
9
- const name = nextValue[0]?.trim();
10
- const value = decodeURIComponent(nextValue[1]?.trim());
11
- if (name && value) {
12
- current[name] = value;
13
- }
14
- return current;
15
- }, {});
16
- }
17
- //# sourceMappingURL=getCookies.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCookies.js","sourceRoot":"","sources":["../../../src/components/CloudpackProvider/getCookies.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,QAAQ,CAAC,MAAM;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB,MAAM,CAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEvD,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["/**\n * Gets the cookies dictionary from the browser.\n */\nexport function getCookies(): Record<string, string> {\n return document.cookie\n .split(';')\n .map((s) => s.split('='))\n .reduce<Record<string, string>>((current, nextValue) => {\n const name = nextValue[0]?.trim();\n const value = decodeURIComponent(nextValue[1]?.trim());\n\n if (name && value) {\n current[name] = value;\n }\n\n return current;\n }, {});\n}\n"]}