@workflow/web-shared 5.0.0-beta.1 → 5.0.0-beta.11
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.
- package/README.md +1 -1
- package/dist/components/error-boundary.js +1 -1
- package/dist/components/event-list-view.d.ts +18 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +219 -125
- package/dist/components/hook-actions.js +1 -1
- package/dist/components/index.d.ts +5 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +6 -2
- package/dist/components/new-trace-viewer/components/copy-button.d.ts +9 -0
- package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/copy-button.js +27 -0
- package/dist/components/new-trace-viewer/components/event-list.d.ts +10 -0
- package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/event-list.js +44 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
- package/dist/components/new-trace-viewer/components/split-pane.d.ts +15 -0
- package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/split-pane.js +105 -0
- package/dist/components/new-trace-viewer/components/timeline.d.ts +34 -0
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/timeline.js +221 -0
- package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
- package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +19 -0
- package/dist/components/new-trace-viewer/components/use-row-window.d.ts +20 -0
- package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/components/use-row-window.js +69 -0
- package/dist/components/new-trace-viewer/context.d.ts +15 -0
- package/dist/components/new-trace-viewer/context.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/context.js +47 -0
- package/dist/components/new-trace-viewer/detail-panel.d.ts +10 -0
- package/dist/components/new-trace-viewer/detail-panel.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/detail-panel.js +13 -0
- package/dist/components/new-trace-viewer/icons.d.ts +6 -0
- package/dist/components/new-trace-viewer/icons.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/icons.js +15 -0
- package/dist/components/new-trace-viewer/search.d.ts +19 -0
- package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/search.js +134 -0
- package/dist/components/new-trace-viewer/trace-viewer.d.ts +11 -0
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/trace-viewer.js +400 -0
- package/dist/components/new-trace-viewer/types.d.ts +1 -0
- package/dist/components/new-trace-viewer/types.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/types.js +2 -0
- package/dist/components/new-trace-viewer/util/constants.d.ts +1 -0
- package/dist/components/new-trace-viewer/util/constants.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/util/constants.js +2 -0
- package/dist/components/new-trace-viewer/utils.d.ts +46 -0
- package/dist/components/new-trace-viewer/utils.d.ts.map +1 -0
- package/dist/components/new-trace-viewer/utils.js +330 -0
- package/dist/components/run-trace-view.d.ts +2 -1
- package/dist/components/run-trace-view.d.ts.map +1 -1
- package/dist/components/run-trace-view.js +3 -3
- package/dist/components/sidebar/attribute-panel.d.ts +7 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +131 -70
- package/dist/components/sidebar/conversation-view.js +1 -1
- package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
- package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js +16 -15
- package/dist/components/sidebar/detail-card.d.ts +5 -6
- package/dist/components/sidebar/detail-card.d.ts.map +1 -1
- package/dist/components/sidebar/detail-card.js +32 -16
- package/dist/components/sidebar/entity-detail-panel.d.ts +3 -1
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +20 -37
- package/dist/components/sidebar/events-list.d.ts.map +1 -1
- package/dist/components/sidebar/events-list.js +21 -15
- package/dist/components/sidebar/resolve-hook-modal.js +1 -1
- package/dist/components/sidebar/sidebar-data-context.d.ts +29 -0
- package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-data-context.js +19 -0
- package/dist/components/stream-viewer.d.ts +1 -1
- package/dist/components/stream-viewer.d.ts.map +1 -1
- package/dist/components/stream-viewer.js +3 -27
- package/dist/components/trace-viewer/components/map.js +1 -1
- package/dist/components/trace-viewer/components/markers.js +1 -1
- package/dist/components/trace-viewer/components/node.js +1 -1
- package/dist/components/trace-viewer/components/search-input.js +1 -1
- package/dist/components/trace-viewer/components/search.js +1 -1
- package/dist/components/trace-viewer/components/span-content.js +1 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
- package/dist/components/trace-viewer/components/span-segments.js +1 -1
- package/dist/components/trace-viewer/components/span-strategies.js +1 -1
- package/dist/components/trace-viewer/components/ui.js +1 -1
- package/dist/components/trace-viewer/components/zoom-button.js +1 -1
- package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
- package/dist/components/trace-viewer/context.js +1 -1
- package/dist/components/trace-viewer/index.js +1 -1
- package/dist/components/trace-viewer/trace-viewer.js +1 -1
- package/dist/components/trace-viewer/types.js +1 -1
- package/dist/components/trace-viewer/util/constants.js +1 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
- package/dist/components/trace-viewer/util/timing.d.ts +1 -1
- package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
- package/dist/components/trace-viewer/util/timing.js +6 -9
- package/dist/components/trace-viewer/util/tree.js +1 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
- package/dist/components/trace-viewer/worker.js +1 -1
- package/dist/components/trace-viewer-new.d.ts +14 -0
- package/dist/components/trace-viewer-new.d.ts.map +1 -0
- package/dist/components/trace-viewer-new.js +22 -0
- package/dist/components/ui/alert.js +1 -1
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +46 -0
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/data-inspector.d.ts +39 -1
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +207 -22
- package/dist/components/ui/decrypt-button.js +1 -1
- package/dist/components/ui/error-card.js +1 -1
- package/dist/components/ui/error-stack-block.d.ts.map +1 -1
- package/dist/components/ui/error-stack-block.js +27 -19
- package/dist/components/ui/icon-button.d.ts +19 -0
- package/dist/components/ui/icon-button.d.ts.map +1 -0
- package/dist/components/ui/icon-button.js +29 -0
- package/dist/components/ui/inspector-theme.d.ts +9 -10
- package/dist/components/ui/inspector-theme.d.ts.map +1 -1
- package/dist/components/ui/inspector-theme.js +39 -72
- package/dist/components/ui/kbd.d.ts +6 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +6 -0
- package/dist/components/ui/load-more-button.js +1 -1
- package/dist/components/ui/menu-dropdown.js +1 -1
- package/dist/components/ui/skeleton.js +1 -1
- package/dist/components/ui/spinner.js +1 -1
- package/dist/components/ui/timestamp-tooltip.js +1 -1
- package/dist/components/ui/tooltip.d.ts +10 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +12 -0
- package/dist/components/workflow-trace-view.d.ts +3 -1
- package/dist/components/workflow-trace-view.d.ts.map +1 -1
- package/dist/components/workflow-trace-view.js +10 -5
- package/dist/components/workflow-traces/event-colors.js +1 -1
- package/dist/components/workflow-traces/trace-colors.js +1 -1
- package/dist/components/workflow-traces/trace-span-construction.d.ts +2 -2
- package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +19 -6
- package/dist/components/workflow-traces/trace-time-utils.js +1 -1
- package/dist/hooks/use-dark-mode.js +1 -1
- package/dist/hooks/use-intersection-observer.d.ts +17 -0
- package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
- package/dist/hooks/use-intersection-observer.js +29 -0
- package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
- package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
- package/dist/hooks/use-load-more-on-scroll.js +28 -0
- package/dist/hooks/use-reduced-motion.d.ts +10 -0
- package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
- package/dist/hooks/use-reduced-motion.js +29 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/lib/event-analysis.js +1 -1
- package/dist/lib/event-materialization.js +1 -1
- package/dist/lib/exact-event-search-id.d.ts +25 -0
- package/dist/lib/exact-event-search-id.d.ts.map +1 -0
- package/dist/lib/exact-event-search-id.js +39 -0
- package/dist/lib/hydration.d.ts +14 -1
- package/dist/lib/hydration.d.ts.map +1 -1
- package/dist/lib/hydration.js +157 -4
- package/dist/lib/stream-display.d.ts +18 -0
- package/dist/lib/stream-display.d.ts.map +1 -0
- package/dist/lib/stream-display.js +30 -0
- package/dist/lib/toast.js +1 -1
- package/dist/lib/trace-builder.d.ts.map +1 -1
- package/dist/lib/trace-builder.js +3 -2
- package/dist/lib/utils.d.ts +9 -9
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +27 -32
- package/dist/styles.css +475 -1
- package/package.json +6 -4
- package/src/components/event-list-view.tsx +421 -262
- package/src/components/index.ts +13 -1
- package/src/components/new-trace-viewer/components/copy-button.tsx +68 -0
- package/src/components/new-trace-viewer/components/event-list.tsx +135 -0
- package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
- package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
- package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
- package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
- package/src/components/new-trace-viewer/components/split-pane.tsx +198 -0
- package/src/components/new-trace-viewer/components/timeline.tsx +560 -0
- package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +94 -0
- package/src/components/new-trace-viewer/components/use-row-window.ts +93 -0
- package/src/components/new-trace-viewer/context.tsx +90 -0
- package/src/components/new-trace-viewer/detail-panel.tsx +55 -0
- package/src/components/new-trace-viewer/icons.tsx +79 -0
- package/src/components/new-trace-viewer/search.ts +178 -0
- package/src/components/new-trace-viewer/trace-viewer.tsx +762 -0
- package/src/components/new-trace-viewer/types.ts +0 -0
- package/src/components/new-trace-viewer/util/constants.ts +0 -0
- package/src/components/new-trace-viewer/utils.ts +482 -0
- package/src/components/run-trace-view.tsx +3 -0
- package/src/components/sidebar/attribute-panel.tsx +240 -196
- package/src/components/sidebar/copyable-data-block.tsx +49 -27
- package/src/components/sidebar/detail-card.tsx +119 -59
- package/src/components/sidebar/entity-detail-panel.tsx +92 -148
- package/src/components/sidebar/events-list.tsx +51 -76
- package/src/components/sidebar/sidebar-data-context.tsx +62 -0
- package/src/components/stream-viewer.tsx +18 -40
- package/src/components/trace-viewer/util/timing.ts +5 -9
- package/src/components/trace-viewer-new.tsx +57 -0
- package/src/components/ui/button.tsx +68 -0
- package/src/components/ui/data-inspector.tsx +427 -31
- package/src/components/ui/error-stack-block.tsx +39 -30
- package/src/components/ui/icon-button.tsx +53 -0
- package/src/components/ui/inspector-theme.ts +39 -81
- package/src/components/ui/kbd.tsx +21 -0
- package/src/components/ui/tooltip.tsx +47 -0
- package/src/components/workflow-trace-view.tsx +12 -2
- package/src/components/workflow-traces/trace-span-construction.ts +24 -6
- package/src/hooks/use-intersection-observer.ts +57 -0
- package/src/hooks/use-load-more-on-scroll.ts +49 -0
- package/src/hooks/use-reduced-motion.ts +34 -0
- package/src/index.ts +9 -0
- package/src/lib/exact-event-search-id.ts +67 -0
- package/src/lib/hydration.ts +169 -1
- package/src/lib/stream-display.ts +48 -0
- package/src/lib/trace-builder.ts +2 -1
- package/src/lib/utils.ts +27 -32
- package/src/styles.css +475 -1
- package/dist/components/error-boundary.js.map +0 -1
- package/dist/components/event-list-view.js.map +0 -1
- package/dist/components/hook-actions.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/run-trace-view.js.map +0 -1
- package/dist/components/sidebar/attribute-panel.js.map +0 -1
- package/dist/components/sidebar/conversation-view.js.map +0 -1
- package/dist/components/sidebar/copyable-data-block.js.map +0 -1
- package/dist/components/sidebar/detail-card.js.map +0 -1
- package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
- package/dist/components/sidebar/events-list.js.map +0 -1
- package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
- package/dist/components/stream-viewer.js.map +0 -1
- package/dist/components/trace-viewer/components/map.js.map +0 -1
- package/dist/components/trace-viewer/components/markers.js.map +0 -1
- package/dist/components/trace-viewer/components/node.js.map +0 -1
- package/dist/components/trace-viewer/components/search-input.js.map +0 -1
- package/dist/components/trace-viewer/components/search.js.map +0 -1
- package/dist/components/trace-viewer/components/span-content.js.map +0 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
- package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
- package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
- package/dist/components/trace-viewer/components/ui.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
- package/dist/components/trace-viewer/context.js.map +0 -1
- package/dist/components/trace-viewer/index.js.map +0 -1
- package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/trace-viewer/types.js.map +0 -1
- package/dist/components/trace-viewer/util/constants.js.map +0 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
- package/dist/components/trace-viewer/util/timing.js.map +0 -1
- package/dist/components/trace-viewer/util/tree.js.map +0 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
- package/dist/components/trace-viewer/worker.js.map +0 -1
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/data-inspector.js.map +0 -1
- package/dist/components/ui/decrypt-button.js.map +0 -1
- package/dist/components/ui/error-card.js.map +0 -1
- package/dist/components/ui/error-stack-block.js.map +0 -1
- package/dist/components/ui/inspector-theme.js.map +0 -1
- package/dist/components/ui/load-more-button.js.map +0 -1
- package/dist/components/ui/menu-dropdown.js.map +0 -1
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/timestamp-tooltip.js.map +0 -1
- package/dist/components/workflow-trace-view.js.map +0 -1
- package/dist/components/workflow-traces/event-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
- package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
- package/dist/hooks/use-dark-mode.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/event-analysis.js.map +0 -1
- package/dist/lib/event-materialization.js.map +0 -1
- package/dist/lib/hydration.js.map +0 -1
- package/dist/lib/toast.js.map +0 -1
- package/dist/lib/trace-builder.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-reduced-motion.d.ts","sourceRoot":"","sources":["../../src/hooks/use-reduced-motion.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAO,OAmBnC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
const QUERY = '(prefers-reduced-motion: reduce)';
|
|
4
|
+
/**
|
|
5
|
+
* Hook that detects whether the user has requested reduced motion and reacts
|
|
6
|
+
* to changes. Mirrors the `prefers-reduced-motion: reduce` media query so
|
|
7
|
+
* components can skip or shorten animations for users with motion
|
|
8
|
+
* sensitivities (e.g. vestibular disorders).
|
|
9
|
+
*
|
|
10
|
+
* @returns `true` if the user prefers reduced motion, `false` otherwise
|
|
11
|
+
*/
|
|
12
|
+
export const useReducedMotion = () => {
|
|
13
|
+
const [reduced, setReduced] = useState(() => {
|
|
14
|
+
if (typeof window === 'undefined' || !window.matchMedia)
|
|
15
|
+
return false;
|
|
16
|
+
return window.matchMedia(QUERY).matches;
|
|
17
|
+
});
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (typeof window === 'undefined' || !window.matchMedia)
|
|
20
|
+
return;
|
|
21
|
+
const media = window.matchMedia(QUERY);
|
|
22
|
+
const onChange = () => setReduced(media.matches);
|
|
23
|
+
media.addEventListener('change', onChange);
|
|
24
|
+
onChange();
|
|
25
|
+
return () => media.removeEventListener('change', onChange);
|
|
26
|
+
}, []);
|
|
27
|
+
return reduced;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJlZHVjZWQtbW90aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZS1yZWR1Y2VkLW1vdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7QUFFYixPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QyxNQUFNLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztBQUVqRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBWSxFQUFFO0lBQzVDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMxQyxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQUUsT0FBTztRQUVoRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLEdBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxRQUFRLEVBQUUsQ0FBQztRQUVYLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IFFVRVJZID0gJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJztcblxuLyoqXG4gKiBIb29rIHRoYXQgZGV0ZWN0cyB3aGV0aGVyIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgcmVkdWNlZCBtb3Rpb24gYW5kIHJlYWN0c1xuICogdG8gY2hhbmdlcy4gTWlycm9ycyB0aGUgYHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZWAgbWVkaWEgcXVlcnkgc29cbiAqIGNvbXBvbmVudHMgY2FuIHNraXAgb3Igc2hvcnRlbiBhbmltYXRpb25zIGZvciB1c2VycyB3aXRoIG1vdGlvblxuICogc2Vuc2l0aXZpdGllcyAoZS5nLiB2ZXN0aWJ1bGFyIGRpc29yZGVycykuXG4gKlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB1c2VyIHByZWZlcnMgcmVkdWNlZCBtb3Rpb24sIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VSZWR1Y2VkTW90aW9uID0gKCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBbcmVkdWNlZCwgc2V0UmVkdWNlZF0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubWF0Y2hNZWRpYSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYShRVUVSWSkubWF0Y2hlcztcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIXdpbmRvdy5tYXRjaE1lZGlhKSByZXR1cm47XG5cbiAgICBjb25zdCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKFFVRVJZKTtcbiAgICBjb25zdCBvbkNoYW5nZSA9ICgpOiB2b2lkID0+IHNldFJlZHVjZWQobWVkaWEubWF0Y2hlcyk7XG5cbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNoYW5nZSk7XG4gICAgb25DaGFuZ2UoKTtcblxuICAgIHJldHVybiAoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBvbkNoYW5nZSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gcmVkdWNlZDtcbn07XG4iXX0=
|
package/dist/index.d.ts
CHANGED
|
@@ -4,11 +4,13 @@ export type { Event, Hook, Step, WorkflowRun } from '@workflow/world';
|
|
|
4
4
|
export * from './components';
|
|
5
5
|
export { hookEventsToHookEntity, stepEventsToStepEntity, waitEventsToWaitEntity, } from './components/workflow-traces/trace-span-construction';
|
|
6
6
|
export type { EventAnalysis } from './lib/event-analysis';
|
|
7
|
+
export { parseExactWorkflowSearchId, looksLikeWorkflowIdSearchInput, type ExactWorkflowSearchId, type ExactWorkflowSearchIdKind, type ExactIdSearchResult, } from './lib/exact-event-search-id';
|
|
7
8
|
export { analyzeEvents, hasPendingHooksFromEvents, hasPendingStepsFromEvents, isTerminalStatus, shouldShowReenqueueButton, } from './lib/event-analysis';
|
|
8
9
|
export type { MaterializedEntities, MaterializedHook, MaterializedStep, MaterializedWait, } from './lib/event-materialization';
|
|
9
10
|
export { materializeAll, materializeHooks, materializeSteps, materializeWaits, } from './lib/event-materialization';
|
|
10
11
|
export type { Revivers, StreamRef } from './lib/hydration';
|
|
11
|
-
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
|
|
12
|
+
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hasEncryptedFields, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
|
|
13
|
+
export type { DecodedStreamChunkSource } from './lib/stream-display';
|
|
12
14
|
export type { ToastAdapter } from './lib/toast';
|
|
13
15
|
export { ToastProvider, useToast } from './lib/toast';
|
|
14
16
|
export type { StreamStep } from './lib/utils';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export { parseStepName, parseWorkflowName, } from '@workflow/utils/parse-name';
|
|
2
2
|
export * from './components';
|
|
3
3
|
export { hookEventsToHookEntity, stepEventsToStepEntity, waitEventsToWaitEntity, } from './components/workflow-traces/trace-span-construction';
|
|
4
|
+
export { parseExactWorkflowSearchId, looksLikeWorkflowIdSearchInput, } from './lib/exact-event-search-id';
|
|
4
5
|
export { analyzeEvents, hasPendingHooksFromEvents, hasPendingStepsFromEvents, isTerminalStatus, shouldShowReenqueueButton, } from './lib/event-analysis';
|
|
5
6
|
export { materializeAll, materializeHooks, materializeSteps, materializeWaits, } from './lib/event-materialization';
|
|
6
|
-
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
|
|
7
|
+
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hasEncryptedFields, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
|
|
7
8
|
export { ToastProvider, useToast } from './lib/toast';
|
|
8
9
|
export { extractConversation, formatDuration, identifyStreamSteps, isDoStreamStep, } from './lib/utils';
|
|
9
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUNMLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxzREFBc0QsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLDhCQUE4QixHQUkvQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFDTCxhQUFhLEVBQ2IseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIseUJBQXlCLEdBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFPOUIsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YsVUFBVSxHQUNYLE1BQU0saUJBQWlCLENBQUM7QUFHekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHtcbiAgSGVhbHRoQ2hlY2tFbmRwb2ludCxcbiAgSGVhbHRoQ2hlY2tSZXN1bHQsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3J1bnRpbWUnO1xuZXhwb3J0IHtcbiAgcGFyc2VTdGVwTmFtZSxcbiAgcGFyc2VXb3JrZmxvd05hbWUsXG59IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmV4cG9ydCB0eXBlIHsgRXZlbnQsIEhvb2ssIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cyc7XG5leHBvcnQge1xuICBob29rRXZlbnRzVG9Ib29rRW50aXR5LFxuICBzdGVwRXZlbnRzVG9TdGVwRW50aXR5LFxuICB3YWl0RXZlbnRzVG9XYWl0RW50aXR5LFxufSBmcm9tICcuL2NvbXBvbmVudHMvd29ya2Zsb3ctdHJhY2VzL3RyYWNlLXNwYW4tY29uc3RydWN0aW9uJztcbmV4cG9ydCB0eXBlIHsgRXZlbnRBbmFseXNpcyB9IGZyb20gJy4vbGliL2V2ZW50LWFuYWx5c2lzJztcbmV4cG9ydCB7XG4gIHBhcnNlRXhhY3RXb3JrZmxvd1NlYXJjaElkLFxuICBsb29rc0xpa2VXb3JrZmxvd0lkU2VhcmNoSW5wdXQsXG4gIHR5cGUgRXhhY3RXb3JrZmxvd1NlYXJjaElkLFxuICB0eXBlIEV4YWN0V29ya2Zsb3dTZWFyY2hJZEtpbmQsXG4gIHR5cGUgRXhhY3RJZFNlYXJjaFJlc3VsdCxcbn0gZnJvbSAnLi9saWIvZXhhY3QtZXZlbnQtc2VhcmNoLWlkJztcbmV4cG9ydCB7XG4gIGFuYWx5emVFdmVudHMsXG4gIGhhc1BlbmRpbmdIb29rc0Zyb21FdmVudHMsXG4gIGhhc1BlbmRpbmdTdGVwc0Zyb21FdmVudHMsXG4gIGlzVGVybWluYWxTdGF0dXMsXG4gIHNob3VsZFNob3dSZWVucXVldWVCdXR0b24sXG59IGZyb20gJy4vbGliL2V2ZW50LWFuYWx5c2lzJztcbmV4cG9ydCB0eXBlIHtcbiAgTWF0ZXJpYWxpemVkRW50aXRpZXMsXG4gIE1hdGVyaWFsaXplZEhvb2ssXG4gIE1hdGVyaWFsaXplZFN0ZXAsXG4gIE1hdGVyaWFsaXplZFdhaXQsXG59IGZyb20gJy4vbGliL2V2ZW50LW1hdGVyaWFsaXphdGlvbic7XG5leHBvcnQge1xuICBtYXRlcmlhbGl6ZUFsbCxcbiAgbWF0ZXJpYWxpemVIb29rcyxcbiAgbWF0ZXJpYWxpemVTdGVwcyxcbiAgbWF0ZXJpYWxpemVXYWl0cyxcbn0gZnJvbSAnLi9saWIvZXZlbnQtbWF0ZXJpYWxpemF0aW9uJztcbmV4cG9ydCB0eXBlIHsgUmV2aXZlcnMsIFN0cmVhbVJlZiB9IGZyb20gJy4vbGliL2h5ZHJhdGlvbic7XG5leHBvcnQge1xuICBDTEFTU19JTlNUQU5DRV9SRUZfVFlQRSxcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgRU5DUllQVEVEX1BMQUNFSE9MREVSLFxuICBleHRyYWN0U3RyZWFtSWRzLFxuICBnZXRXZWJSZXZpdmVycyxcbiAgaGFzRW5jcnlwdGVkRmllbGRzLFxuICBoeWRyYXRlUmVzb3VyY2VJTyxcbiAgaHlkcmF0ZVJlc291cmNlSU9XaXRoS2V5LFxuICBpc0NsYXNzSW5zdGFuY2VSZWYsXG4gIGlzRW5jcnlwdGVkTWFya2VyLFxuICBpc1N0cmVhbUlkLFxuICBpc1N0cmVhbVJlZixcbiAgU1RSRUFNX1JFRl9UWVBFLFxuICB0cnVuY2F0ZUlkLFxufSBmcm9tICcuL2xpYi9oeWRyYXRpb24nO1xuZXhwb3J0IHR5cGUgeyBEZWNvZGVkU3RyZWFtQ2h1bmtTb3VyY2UgfSBmcm9tICcuL2xpYi9zdHJlYW0tZGlzcGxheSc7XG5leHBvcnQgdHlwZSB7IFRvYXN0QWRhcHRlciB9IGZyb20gJy4vbGliL3RvYXN0JztcbmV4cG9ydCB7IFRvYXN0UHJvdmlkZXIsIHVzZVRvYXN0IH0gZnJvbSAnLi9saWIvdG9hc3QnO1xuZXhwb3J0IHR5cGUgeyBTdHJlYW1TdGVwIH0gZnJvbSAnLi9saWIvdXRpbHMnO1xuZXhwb3J0IHtcbiAgZXh0cmFjdENvbnZlcnNhdGlvbixcbiAgZm9ybWF0RHVyYXRpb24sXG4gIGlkZW50aWZ5U3RyZWFtU3RlcHMsXG4gIGlzRG9TdHJlYW1TdGVwLFxufSBmcm9tICcuL2xpYi91dGlscyc7XG4iXX0=
|
|
@@ -158,4 +158,4 @@ export function hasPendingStepsFromEvents(events) {
|
|
|
158
158
|
export function hasPendingHooksFromEvents(events) {
|
|
159
159
|
return analyzeEvents(events).hasPendingHooks;
|
|
160
160
|
}
|
|
161
|
-
//# sourceMappingURL=event-analysis.js.map
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYW5hbHlzaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2V2ZW50LWFuYWx5c2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUlILG1EQUFtRDtBQUNuRCxNQUFNLHdCQUF3QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsYUFBYTtBQUM5RCxNQUFNLG9CQUFvQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsWUFBWTtBQXdCeEQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQTJCO0lBQ3ZELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPO1lBQ0wsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixlQUFlLEVBQUUsS0FBSztZQUN0QixlQUFlLEVBQUUsS0FBSztZQUN0QixlQUFlLEVBQUUsRUFBRTtZQUNuQixjQUFjLEVBQUUsRUFBRTtZQUNsQixjQUFjLEVBQUUsRUFBRTtZQUNsQixrQkFBa0IsRUFBRSxJQUFJO1lBQ3hCLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7SUFDN0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUM3QyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFdkMsSUFBSSxrQkFBa0IsR0FBZ0IsSUFBSSxDQUFDO0lBQzNDLElBQUksb0JBQW9CLEdB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QUMzQixHQUFHLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELElBQUksdUJBQXVCLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLHNEQUFzRDtJQUN0RCxJQUNFLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtRQUM1QixDQUFDLFFBQVEsQ0FBQyxlQUFlO1FBQ3pCLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtRQUMxQixDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQ3pCLENBQUM7UUFDRCw0REFBNEQ7UUFDNUQsdURBQXVEO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUEyQjtJQUUzQixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDL0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUEyQjtJQUUzQixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHV0aWxpdGllcyBmb3IgYW5hbHl6aW5nIHdvcmtmbG93IGV2ZW50cy5cbiAqIFVzZWQgYnkgcnVuLWFjdGlvbnMgYW5kIHRyYWNlIHZpZXdlciBjb21wb25lbnRzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRXZlbnQsIFdvcmtmbG93UnVuU3RhdHVzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLy8gVGltZSB0aHJlc2hvbGRzIGZvciBSZS1lbnF1ZXVlIGJ1dHRvbiB2aXNpYmlsaXR5XG5jb25zdCBTVEVQX0FDVElWSVRZX1RJTUVPVVRfTVMgPSAzMCAqIDYwICogMTAwMDsgLy8gMzAgbWludXRlc1xuY29uc3QgU1RFUF9JRExFX1RJTUVPVVRfTVMgPSA1ICogNjAgKiAxMDAwOyAvLyA1IG1pbnV0ZXNcblxuLyoqXG4gKiBSZXN1bHQgb2YgYW5hbHl6aW5nIGV2ZW50cyBmb3IgYSB3b3JrZmxvdyBydW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEFuYWx5c2lzIHtcbiAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgc2xlZXAvd2FpdCBjYWxscyAqL1xuICBoYXNQZW5kaW5nU2xlZXBzOiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBzdGVwcyAoc3RhcnRlZCBidXQgbm90IGNvbXBsZXRlZC9mYWlsZWQpICovXG4gIGhhc1BlbmRpbmdTdGVwczogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgaG9va3MgKGNyZWF0ZWQgYnV0IG5vdCBkaXNwb3NlZCkgKi9cbiAgaGFzUGVuZGluZ0hvb2tzOiBib29sZWFuO1xuICAvKiogQ29ycmVsYXRpb24gSURzIG9mIHBlbmRpbmcgc2xlZXBzICovXG4gIHBlbmRpbmdTbGVlcElkczogc3RyaW5nW107XG4gIC8qKiBDb3JyZWxhdGlvbiBJRHMgb2YgcGVuZGluZyBzdGVwcyAqL1xuICBwZW5kaW5nU3RlcElkczogc3RyaW5nW107XG4gIC8qKiBDb3JyZWxhdGlvbiBJRHMgb2YgcGVuZGluZyBob29rcyAqL1xuICBwZW5kaW5nSG9va0lkczogc3RyaW5nW107XG4gIC8qKiBUaW1lc3RhbXAgb2YgdGhlIGxhc3Qgc3RlcF9zdGFydGVkIG9yIHN0ZXBfcmV0cnlpbmcgZXZlbnQgKi9cbiAgbGFzdFN0ZXBBY3Rpdml0eUF0OiBEYXRlIHwgbnVsbDtcbiAgLyoqIFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBzdGVwIGNvbXBsZXRpb24gKHN0ZXBfY29tcGxldGVkIG9yIHN0ZXBfZmFpbGVkKSAqL1xuICBsYXN0U3RlcENvbXBsZXRpb25BdDogRGF0ZSB8IG51bGw7XG59XG5cbi8qKlxuICogQW5hbHl6ZSBldmVudHMgdG8gZGV0ZXJtaW5lIHBlbmRpbmcgc2xlZXBzLCBzdGVwcywgYW5kIGhvb2tzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5hbHl6ZUV2ZW50cyhldmVudHM6IEV2ZW50W10gfCB1bmRlZmluZWQpOiBFdmVudEFuYWx5c2lzIHtcbiAgaWYgKCFldmVudHMgfHwgZXZlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBoYXNQZW5kaW5nU2xlZXBzOiBmYWxzZSxcbiAgICAgIGhhc1BlbmRpbmdTdGVwczogZmFsc2UsXG4gICAgICBoYXNQZW5kaW5nSG9va3M6IGZhbHNlLFxuICAgICAgcGVuZGluZ1NsZWVwSWRzOiBbXSxcbiAgICAgIHBlbmRpbmdTdGVwSWRzOiBbXSxcbiAgICAgIHBlbmRpbmdIb29rSWRzOiBbXSxcbiAgICAgIGxhc3RTdGVwQWN0aXZpdHlBdDogbnVsbCxcbiAgICAgIGxhc3RTdGVwQ29tcGxldGlvbkF0OiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvLyBHcm91cCBldmVudHMgYnkgY29ycmVsYXRpb24gSUQgZm9yIGVhY2ggdHlwZVxuICBjb25zdCB3YWl0Q3JlYXRlZCA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudD4oKTtcbiAgY29uc3Qgd2FpdENvbXBsZXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBzdGVwU3RhcnRlZCA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudD4oKTtcbiAgY29uc3Qgc3RlcENvbXBsZXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBob29rQ3JlYXRlZCA9IG5ldyBNYXA8c3RyaW5nLCBFdmVudD4oKTtcbiAgY29uc3QgaG9va0Rpc3Bvc2VkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgbGV0IGxhc3RTdGVwQWN0aXZpdHlBdDogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBsZXQgbGFzdFN0ZXBDb21wbGV0aW9uQXQ6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSBldmVudC5jb3JyZWxhdGlvbklkO1xuICAgIGlmICghY29ycmVsYXRpb25JZCkgY29udGludWU7XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSkge1xuICAgICAgLy8gU2xlZXBzL1dhaXRzXG4gICAgICBjYXNlICd3YWl0X2NyZWF0ZWQnOlxuICAgICAgICB3YWl0Q3JlYXRlZC5zZXQoY29ycmVsYXRpb25JZCwgZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dhaXRfY29tcGxldGVkJzpcbiAgICAgICAgd2FpdENvbXBsZXRlZC5hZGQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICAvLyBTdGVwc1xuICAgICAgY2FzZSAnc3RlcF9zdGFydGVkJzpcbiAgICAgICAgc3RlcFN0YXJ0ZWQuc2V0KGNvcnJlbGF0aW9uSWQsIGV2ZW50KTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFsYXN0U3RlcEFjdGl2aXR5QXQgfHxcbiAgICAgICAgICBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpID4gbGFzdFN0ZXBBY3Rpdml0eUF0XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RTdGVwQWN0aXZpdHlBdCA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwX3JldHJ5aW5nJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFsYXN0U3RlcEFjdGl2aXR5QXQgfHxcbiAgICAgICAgICBuZXcgRGF0ZShldmVudC5jcmVhdGVkQXQpID4gbGFzdFN0ZXBBY3Rpdml0eUF0XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RTdGVwQWN0aXZpdHlBdCA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwX2NvbXBsZXRlZCc6XG4gICAgICBjYXNlICdzdGVwX2ZhaWxlZCc6XG4gICAgICAgIHN0ZXBDb21wbGV0ZWQuYWRkKGNvcnJlbGF0aW9uSWQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWxhc3RTdGVwQ29tcGxldGlvbkF0IHx8XG4gICAgICAgICAgbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KSA+IGxhc3RTdGVwQ29tcGxldGlvbkF0XG4gICAgICAgICkge1xuICAgICAgICAgIGxhc3RTdGVwQ29tcGxldGlvbkF0ID0gbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgLy8gSG9va3NcbiAgICAgIGNhc2UgJ2hvb2tfY3JlYXRlZCc6XG4gICAgICAgIGhvb2tDcmVhdGVkLnNldChjb3JyZWxhdGlvbklkLCBldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG9va19kaXNwb3NlZCc6XG4gICAgICAgIGhvb2tEaXNwb3NlZC5hZGQoY29ycmVsYXRpb25JZCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpbmQgcGVuZGluZyBpdGVtcyAoY3JlYXRlZCBidXQgbm90IGNvbXBsZXRlZClcbiAgY29uc3QgcGVuZGluZ1NsZWVwSWRzID0gQXJyYXkuZnJvbSh3YWl0Q3JlYXRlZC5rZXlzKCkpLmZpbHRlcihcbiAgICAoaWQpID0+ICF3YWl0Q29tcGxldGVkLmhhcyhpZClcbiAgKTtcbiAgY29uc3QgcGVuZGluZ1N0ZXBJZHMgPSBBcnJheS5mcm9tKHN0ZXBTdGFydGVkLmtleXMoKSkuZmlsdGVyKFxuICAgIChpZCkgPT4gIXN0ZXBDb21wbGV0ZWQuaGFzKGlkKVxuICApO1xuICBjb25zdCBwZW5kaW5nSG9va0lkcyA9IEFycmF5LmZyb20oaG9va0NyZWF0ZWQua2V5cygpKS5maWx0ZXIoXG4gICAgKGlkKSA9PiAhaG9va0Rpc3Bvc2VkLmhhcyhpZClcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGhhc1BlbmRpbmdTbGVlcHM6IHBlbmRpbmdTbGVlcElkcy5sZW5ndGggPiAwLFxuICAgIGhhc1BlbmRpbmdTdGVwczogcGVuZGluZ1N0ZXBJZHMubGVuZ3RoID4gMCxcbiAgICBoYXNQZW5kaW5nSG9va3M6IHBlbmRpbmdIb29rSWRzLmxlbmd0aCA+IDAsXG4gICAgcGVuZGluZ1NsZWVwSWRzLFxuICAgIHBlbmRpbmdTdGVwSWRzLFxuICAgIHBlbmRpbmdIb29rSWRzLFxuICAgIGxhc3RTdGVwQWN0aXZpdHlBdCxcbiAgICBsYXN0U3RlcENvbXBsZXRpb25BdCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHdvcmtmbG93IHJ1biBzdGF0dXMgaXMgdGVybWluYWwgKGNvbXBsZXRlZCwgZmFpbGVkLCBvciBjYW5jZWxsZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Rlcm1pbmFsU3RhdHVzKFxuICBzdGF0dXM6IFdvcmtmbG93UnVuU3RhdHVzIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBzdGF0dXMgPT09ICdjb21wbGV0ZWQnIHx8IHN0YXR1cyA9PT0gJ2ZhaWxlZCcgfHwgc3RhdHVzID09PSAnY2FuY2VsbGVkJ1xuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgUmUtZW5xdWV1ZSBidXR0b24gc2hvdWxkIGJlIHNob3duIHdpdGhvdXQgdGhlIGRlYnVnIGZsYWcuXG4gKlxuICogVGhlIFJlLWVucXVldWUgYnV0dG9uIGlzIHNob3duIHdoZW4gdGhlIHdvcmtmbG93IGFwcGVhcnMgdG8gYmUgc3R1Y2s6XG4gKiAtIFRoZSB3b3JrZmxvdyBpcyBub3QgaW4gYSB0ZXJtaW5hbCBzdGF0ZVxuICogLSBUaGVyZSBhcmUgbm8gcGVuZGluZyBzbGVlcHMgKHdoaWNoIHdvdWxkIHNob3cgdGhlIFdha2UgdXAgYnV0dG9uIGluc3RlYWQpXG4gKiAtIFRoZXJlIGFyZSBubyBwZW5kaW5nIGhvb2tzICh3aGljaCBhcmUgd2FpdGluZyBmb3IgZXh0ZXJuYWwgaW5wdXQpXG4gKiAtIEVpdGhlcjpcbiAqICAgLSBUaGUgbGFzdCBzdGVwX3N0YXJ0ZWQgb3Igc3RlcF9yZXRyeWluZyBldmVudCB3YXMgPjMwIG1pbnV0ZXMgYWdvLCBPUlxuICogICAtIFRoZXJlIGhhdmUgYmVlbiBubyBwZW5kaW5nIHN0ZXBzIGZvciA+NSBtaW51dGVzIChhbGwgc3RlcHMgY29tcGxldGVkL2ZhaWxlZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFNob3dSZWVucXVldWVCdXR0b24oXG4gIGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZCxcbiAgc3RhdHVzOiBXb3JrZmxvd1J1blN0YXR1cyB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIC8vIE5ldmVyIHNob3cgaWYgaW4gdGVybWluYWwgc3RhdGVcbiAgaWYgKGlzVGVybWluYWxTdGF0dXMoc3RhdHVzKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFuYWx5c2lzID0gYW5hbHl6ZUV2ZW50cyhldmVudHMpO1xuXG4gIC8vIERvbid0IHNob3cgaWYgdGhlcmUgYXJlIHBlbmRpbmcgc2xlZXBzIChXYWtlIHVwIGJ1dHRvbiBoYW5kbGVzIHRoaXMpXG4gIGlmIChhbmFseXNpcy5oYXNQZW5kaW5nU2xlZXBzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRG9uJ3Qgc2hvdyBpZiB0aGVyZSBhcmUgcGVuZGluZyBob29rcyAod2FpdGluZyBmb3IgZXh0ZXJuYWwgaW5wdXQpXG4gIGlmIChhbmFseXNpcy5oYXNQZW5kaW5nSG9va3MpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gIC8vIENoZWNrIGlmIGxhc3Qgc3RlcCBhY3Rpdml0eSB3YXMgPjMwIG1pbnV0ZXMgYWdvXG4gIGlmIChhbmFseXNpcy5sYXN0U3RlcEFjdGl2aXR5QXQpIHtcbiAgICBjb25zdCB0aW1lU2luY2VMYXN0QWN0aXZpdHkgPSBub3cgLSBhbmFseXNpcy5sYXN0U3RlcEFjdGl2aXR5QXQuZ2V0VGltZSgpO1xuICAgIGlmICh0aW1lU2luY2VMYXN0QWN0aXZpdHkgPiBTVEVQX0FDVElWSVRZX1RJTUVPVVRfTVMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHN0ZXBzIGFuZCBsYXN0IGNvbXBsZXRpb24gd2FzID41IG1pbnV0ZXMgYWdvXG4gIGlmICghYW5hbHlzaXMuaGFzUGVuZGluZ1N0ZXBzICYmIGFuYWx5c2lzLmxhc3RTdGVwQ29tcGxldGlvbkF0KSB7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENvbXBsZXRpb24gPVxuICAgICAgbm93IC0gYW5hbHlzaXMubGFzdFN0ZXBDb21wbGV0aW9uQXQuZ2V0VGltZSgpO1xuICAgIGlmICh0aW1lU2luY2VMYXN0Q29tcGxldGlvbiA+IFNURVBfSURMRV9USU1FT1VUX01TKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGVyZSdzIG5vIHN0ZXAgYWN0aXZpdHkgYXQgYWxsIGJ1dCB0aGUgcnVuIGlzIG5vdCB0ZXJtaW5hbCxcbiAgLy8gYW5kIHdlJ3ZlIGJlZW4gd2FpdGluZyBmb3IgYSB3aGlsZSwgc2hvdyB0aGUgYnV0dG9uXG4gIGlmIChcbiAgICAhYW5hbHlzaXMubGFzdFN0ZXBBY3Rpdml0eUF0ICYmXG4gICAgIWFuYWx5c2lzLmhhc1BlbmRpbmdTdGVwcyAmJlxuICAgICFhbmFseXNpcy5oYXNQZW5kaW5nU2xlZXBzICYmXG4gICAgIWFuYWx5c2lzLmhhc1BlbmRpbmdIb29rc1xuICApIHtcbiAgICAvLyBUaGlzIGNhc2UgaGFuZGxlcyBydW5zIHRoYXQgaGF2ZW4ndCBzdGFydGVkIGFueSBzdGVwcyB5ZXRcbiAgICAvLyBidXQgYXJlbid0IGluIGEgdGVybWluYWwgc3RhdGUgLSB0aGV5IG1pZ2h0IGJlIHN0dWNrXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlcmUgYXJlIHBlbmRpbmcgc3RlcHMgZnJvbSBhbiBldmVudHMgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1BlbmRpbmdTdGVwc0Zyb21FdmVudHMoXG4gIGV2ZW50czogRXZlbnRbXSB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBhbmFseXplRXZlbnRzKGV2ZW50cykuaGFzUGVuZGluZ1N0ZXBzO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZXJlIGFyZSBwZW5kaW5nIGhvb2tzIGZyb20gYW4gZXZlbnRzIGxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQZW5kaW5nSG9va3NGcm9tRXZlbnRzKFxuICBldmVudHM6IEV2ZW50W10gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gYW5hbHl6ZUV2ZW50cyhldmVudHMpLmhhc1BlbmRpbmdIb29rcztcbn1cbiJdfQ==
|
|
@@ -168,4 +168,4 @@ export function materializeAll(events) {
|
|
|
168
168
|
waits: materializeWaits(events),
|
|
169
169
|
};
|
|
170
170
|
}
|
|
171
|
-
//# sourceMappingURL=event-materialization.js.map
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbWF0ZXJpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9ldmVudC1tYXRlcmlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQW1ESCw4RUFBOEU7QUFDOUUsK0NBQStDO0FBQy9DLDhFQUE4RTtBQUU5RSxTQUFTLG9CQUFvQixDQUMzQixNQUFlLEVBQ2YsUUFBa0I7SUFFbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7SUFDMUMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHO1lBQUUsU0FBUztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLFNBQVM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsbUJBQW1CO0FBQ25CLDhFQUE4RTtBQUU5RTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFlO0lBQzlDLE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFD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RyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUV2QixNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLGdCQUFnQixDQUFDLENBQUM7UUFFM0UsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNULE1BQU0sRUFBRSxhQUFhO1lBQ3JCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDM0MsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO1lBQzVCLFFBQVEsRUFDTixPQUFPLENBQUMsU0FBUyxLQUFLLGNBQWM7Z0JBQ2xDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVE7Z0JBQzdCLENBQUMsQ0FBQyxTQUFTO1lBQ2YsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTO1lBQ2pDLE1BQU0sRUFBRSxVQUFVO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCw4RUFBOEU7QUFDOUUsaUJBQWlCO0FBQ2pCLDhFQUE4RTtBQUU5RTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWU7SUFDNUMsT0FBTztRQUNMLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7UUFDL0IsS0FBSyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUMvQixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0tBQ2hDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudCBtYXRlcmlhbGl6YXRpb24gaGVscGVycy5cbiAqXG4gKiBUaGVzZSBmdW5jdGlvbnMgY29udmVydCBhIGZsYXQgbGlzdCBvZiB3b3JrZmxvdyBldmVudHMgaW50byBlbnRpdHktbGlrZVxuICogb2JqZWN0cyAoc3RlcHMsIGhvb2tzLCB3YWl0cykgYnkgZ3JvdXBpbmcgZXZlbnRzIGJ5IGNvcnJlbGF0aW9uSWQgYW5kXG4gKiBzdGl0Y2hpbmcgdG9nZXRoZXIgbGlmZWN5Y2xlIGV2ZW50cy5cbiAqXG4gKiBUaGlzIGVuYWJsZXMgYSBcInRvcC1kb3duXCIgZGF0YSBmZXRjaGluZyBwYXR0ZXJuIHdoZXJlIHRoZSBjbGllbnQgZmV0Y2hlc1xuICogYWxsIGV2ZW50cyBmb3IgYSBydW4gb25jZSwgdGhlbiBtYXRlcmlhbGl6ZXMgZW50aXRpZXMgY2xpZW50LXNpZGUgaW5zdGVhZFxuICogb2YgbWFraW5nIHNlcGFyYXRlIEFQSSBjYWxscyBmb3IgZWFjaCBlbnRpdHkgdHlwZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEV2ZW50LCBTdGVwU3RhdHVzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNYXRlcmlhbGl6ZWQgZW50aXR5IHR5cGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbGl6ZWRTdGVwIHtcbiAgc3RlcElkOiBzdHJpbmc7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHN0ZXBOYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogU3RlcFN0YXR1cztcbiAgYXR0ZW1wdDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IERhdGU7XG4gIHN0YXJ0ZWRBdD86IERhdGU7XG4gIGNvbXBsZXRlZEF0PzogRGF0ZTtcbiAgdXBkYXRlZEF0OiBEYXRlO1xuICAvKiogQWxsIGV2ZW50cyBmb3IgdGhpcyBzdGVwLCBpbiBpbnNlcnRpb24gb3JkZXIgKi9cbiAgZXZlbnRzOiBFdmVudFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdGVyaWFsaXplZEhvb2sge1xuICBob29rSWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgdG9rZW4/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogRGF0ZTtcbiAgcmVjZWl2ZWRDb3VudDogbnVtYmVyO1xuICBsYXN0UmVjZWl2ZWRBdD86IERhdGU7XG4gIGRpc3Bvc2VkQXQ/OiBEYXRlO1xuICAvKiogQWxsIGV2ZW50cyBmb3IgdGhpcyBob29rLCBpbiBpbnNlcnRpb24gb3JkZXIgKi9cbiAgZXZlbnRzOiBFdmVudFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdGVyaWFsaXplZFdhaXQge1xuICB3YWl0SWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgc3RhdHVzOiAnd2FpdGluZycgfCAnY29tcGxldGVkJztcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICByZXN1bWVBdD86IERhdGU7XG4gIGNvbXBsZXRlZEF0PzogRGF0ZTtcbiAgLyoqIEFsbCBldmVudHMgZm9yIHRoaXMgd2FpdCwgaW4gaW5zZXJ0aW9uIG9yZGVyICovXG4gIGV2ZW50czogRXZlbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXRlcmlhbGl6ZWRFbnRpdGllcyB7XG4gIHN0ZXBzOiBNYXRlcmlhbGl6ZWRTdGVwW107XG4gIGhvb2tzOiBNYXRlcmlhbGl6ZWRIb29rW107XG4gIHdhaXRzOiBNYXRlcmlhbGl6ZWRXYWl0W107XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGVscGVyOiBncm91cCBldmVudHMgYnkgY29ycmVsYXRpb25JZCBwcmVmaXhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBncm91cEJ5Q29ycmVsYXRpb25JZChcbiAgZXZlbnRzOiBFdmVudFtdLFxuICBwcmVmaXhlczogc3RyaW5nW11cbik6IE1hcDxzdHJpbmcsIEV2ZW50W10+IHtcbiAgY29uc3QgZ3JvdXBzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50W10+KCk7XG4gIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgY29uc3QgY2lkID0gZXZlbnQuY29ycmVsYXRpb25JZDtcbiAgICBpZiAoIWNpZCkgY29udGludWU7XG4gICAgaWYgKCFwcmVmaXhlcy5zb21lKChwKSA9PiBjaWQuc3RhcnRzV2l0aChwKSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gZ3JvdXBzLmdldChjaWQpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgZXhpc3RpbmcucHVzaChldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3Vwcy5zZXQoY2lkLCBbZXZlbnRdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBtYXRlcmlhbGl6ZVN0ZXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBHcm91cCBzdGVwXyogZXZlbnRzIGJ5IGNvcnJlbGF0aW9uSWQgYW5kIGJ1aWxkIFN0ZXAtbGlrZSBlbnRpdGllcy5cbiAqXG4gKiBIYW5kbGVzIHBhcnRpYWwgZXZlbnQgbGlzdHMgZ3JhY2VmdWxseTogYSBzdGVwIG1heSBvbmx5IGhhdmUgYVxuICogc3RlcF9jcmVhdGVkIGV2ZW50IHdpdGggbm8gY29tcGxldGlvbiB5ZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRlcmlhbGl6ZVN0ZXBzKGV2ZW50czogRXZlbnRbXSk6IE1hdGVyaWFsaXplZFN0ZXBbXSB7XG4gIGNvbnN0IGdyb3VwcyA9IGdyb3VwQnlDb3JyZWxhdGlvbklkKGV2ZW50cywgWydzdGVwXyddKTtcbiAgY29uc3Qgc3RlcHM6IE1hdGVyaWFsaXplZFN0ZXBbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2NvcnJlbGF0aW9uSWQsIHN0ZXBFdmVudHNdIG9mIGdyb3Vwcykge1xuICAgIGNvbnN0IGNyZWF0ZWQgPSBzdGVwRXZlbnRzLmZpbmQoKGUpID0+IGUuZXZlbnRUeXBlID09PSAnc3RlcF9jcmVhdGVkJyk7XG4gICAgaWYgKCFjcmVhdGVkKSBjb250aW51ZTtcblxuICAgIGxldCBzdGF0dXM6IFN0ZXBTdGF0dXMgPSAncGVuZGluZyc7XG4gICAgbGV0IGF0dGVtcHQgPSAwO1xuICAgIGxldCBzdGFydGVkQXQ6IERhdGUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGNvbXBsZXRlZEF0OiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgIGxldCB1cGRhdGVkQXQgPSBjcmVhdGVkLmNyZWF0ZWRBdDtcblxuICAgIGZvciAoY29uc3QgZSBvZiBzdGVwRXZlbnRzKSB7XG4gICAgICBzd2l0Y2ggKGUuZXZlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3N0ZXBfc3RhcnRlZCc6XG4gICAgICAgICAgc3RhdHVzID0gJ3J1bm5pbmcnO1xuICAgICAgICAgIGF0dGVtcHQgKz0gMTtcbiAgICAgICAgICBpZiAoIXN0YXJ0ZWRBdCkgc3RhcnRlZEF0ID0gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgY29tcGxldGVkQXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdXBkYXRlZEF0ID0gZS5jcmVhdGVkQXQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0ZXBfY29tcGxldGVkJzpcbiAgICAgICAgICBzdGF0dXMgPSAnY29tcGxldGVkJztcbiAgICAgICAgICBjb21wbGV0ZWRBdCA9IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIHVwZGF0ZWRBdCA9IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzdGVwX2ZhaWxlZCc6XG4gICAgICAgICAgc3RhdHVzID0gJ2ZhaWxlZCc7XG4gICAgICAgICAgY29tcGxldGVkQXQgPSBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICB1cGRhdGVkQXQgPSBlLmNyZWF0ZWRBdDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RlcF9yZXRyeWluZyc6XG4gICAgICAgICAgc3RhdHVzID0gJ3BlbmRpbmcnO1xuICAgICAgICAgIGNvbXBsZXRlZEF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHVwZGF0ZWRBdCA9IGUuY3JlYXRlZEF0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0ZXBzLnB1c2goe1xuICAgICAgc3RlcElkOiBjb3JyZWxhdGlvbklkLFxuICAgICAgcnVuSWQ6IGNyZWF0ZWQucnVuSWQsXG4gICAgICBzdGVwTmFtZTpcbiAgICAgICAgY3JlYXRlZC5ldmVudFR5cGUgPT09ICdzdGVwX2NyZWF0ZWQnXG4gICAgICAgICAgPyAoY3JlYXRlZC5ldmVudERhdGE/LnN0ZXBOYW1lID8/IGNvcnJlbGF0aW9uSWQpXG4gICAgICAgICAgOiBjb3JyZWxhdGlvbklkLFxuICAgICAgc3RhdHVzLFxuICAgICAgYXR0ZW1wdCxcbiAgICAgIGNyZWF0ZWRBdDogY3JlYXRlZC5jcmVhdGVkQXQsXG4gICAgICBzdGFydGVkQXQsXG4gICAgICBjb21wbGV0ZWRBdCxcbiAgICAgIHVwZGF0ZWRBdCxcbiAgICAgIGV2ZW50czogc3RlcEV2ZW50cyxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBzdGVwcztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBtYXRlcmlhbGl6ZUhvb2tzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBHcm91cCBob29rXyogZXZlbnRzIGJ5IGNvcnJlbGF0aW9uSWQgYW5kIGJ1aWxkIEhvb2stbGlrZSBlbnRpdGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGVyaWFsaXplSG9va3MoZXZlbnRzOiBFdmVudFtdKTogTWF0ZXJpYWxpemVkSG9va1tdIHtcbiAgY29uc3QgZ3JvdXBzID0gZ3JvdXBCeUNvcnJlbGF0aW9uSWQoZXZlbnRzLCBbJ2hvb2tfJ10pO1xuICBjb25zdCBob29rczogTWF0ZXJpYWxpemVkSG9va1tdID0gW107XG5cbiAgZm9yIChjb25zdCBbY29ycmVsYXRpb25JZCwgaG9va0V2ZW50c10gb2YgZ3JvdXBzKSB7XG4gICAgY29uc3QgY3JlYXRlZCA9IGhvb2tFdmVudHMuZmluZCgoZSkgPT4gZS5ldmVudFR5cGUgPT09ICdob29rX2NyZWF0ZWQnKTtcbiAgICBpZiAoIWNyZWF0ZWQpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgcmVjZWl2ZWRFdmVudHMgPSBob29rRXZlbnRzLmZpbHRlcihcbiAgICAgIChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ2hvb2tfcmVjZWl2ZWQnXG4gICAgKTtcbiAgICBjb25zdCBkaXNwb3NlZCA9IGhvb2tFdmVudHMuZmluZCgoZSkgPT4gZS5ldmVudFR5cGUgPT09ICdob29rX2Rpc3Bvc2VkJyk7XG4gICAgY29uc3QgbGFzdFJlY2VpdmVkID0gcmVjZWl2ZWRFdmVudHMuYXQoLTEpO1xuXG4gICAgaG9va3MucHVzaCh7XG4gICAgICBob29rSWQ6IGNvcnJlbGF0aW9uSWQsXG4gICAgICBydW5JZDogY3JlYXRlZC5ydW5JZCxcbiAgICAgIHRva2VuOlxuICAgICAgICBjcmVhdGVkLmV2ZW50VHlwZSA9PT0gJ2hvb2tfY3JlYXRlZCdcbiAgICAgICAgICA/IGNyZWF0ZWQuZXZlbnREYXRhPy50b2tlblxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgY3JlYXRlZEF0OiBjcmVhdGVkLmNyZWF0ZWRBdCxcbiAgICAgIHJlY2VpdmVkQ291bnQ6IHJlY2VpdmVkRXZlbnRzLmxlbmd0aCxcbiAgICAgIGxhc3RSZWNlaXZlZEF0OiBsYXN0UmVjZWl2ZWQ/LmNyZWF0ZWRBdCxcbiAgICAgIGRpc3Bvc2VkQXQ6IGRpc3Bvc2VkPy5jcmVhdGVkQXQsXG4gICAgICBldmVudHM6IGhvb2tFdmVudHMsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaG9va3M7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gbWF0ZXJpYWxpemVXYWl0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogR3JvdXAgd2FpdF8qIGV2ZW50cyBieSBjb3JyZWxhdGlvbklkIGFuZCBidWlsZCBXYWl0LWxpa2UgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRlcmlhbGl6ZVdhaXRzKGV2ZW50czogRXZlbnRbXSk6IE1hdGVyaWFsaXplZFdhaXRbXSB7XG4gIGNvbnN0IGdyb3VwcyA9IGdyb3VwQnlDb3JyZWxhdGlvbklkKGV2ZW50cywgWyd3YWl0XyddKTtcbiAgY29uc3Qgd2FpdHM6IE1hdGVyaWFsaXplZFdhaXRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2NvcnJlbGF0aW9uSWQsIHdhaXRFdmVudHNdIG9mIGdyb3Vwcykge1xuICAgIGNvbnN0IGNyZWF0ZWQgPSB3YWl0RXZlbnRzLmZpbmQoKGUpID0+IGUuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJyk7XG4gICAgaWYgKCFjcmVhdGVkKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlZCA9IHdhaXRFdmVudHMuZmluZCgoZSkgPT4gZS5ldmVudFR5cGUgPT09ICd3YWl0X2NvbXBsZXRlZCcpO1xuXG4gICAgd2FpdHMucHVzaCh7XG4gICAgICB3YWl0SWQ6IGNvcnJlbGF0aW9uSWQsXG4gICAgICBydW5JZDogY3JlYXRlZC5ydW5JZCxcbiAgICAgIHN0YXR1czogY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnd2FpdGluZycsXG4gICAgICBjcmVhdGVkQXQ6IGNyZWF0ZWQuY3JlYXRlZEF0LFxuICAgICAgcmVzdW1lQXQ6XG4gICAgICAgIGNyZWF0ZWQuZXZlbnRUeXBlID09PSAnd2FpdF9jcmVhdGVkJ1xuICAgICAgICAgID8gY3JlYXRlZC5ldmVudERhdGE/LnJlc3VtZUF0XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBjb21wbGV0ZWRBdDogY29tcGxldGVkPy5jcmVhdGVkQXQsXG4gICAgICBldmVudHM6IHdhaXRFdmVudHMsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gd2FpdHM7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gbWF0ZXJpYWxpemVBbGxcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgbWF0ZXJpYWxpemVzIGFsbCBlbnRpdHkgdHlwZXMgZnJvbSBhIGZsYXRcbiAqIGV2ZW50IGxpc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXRlcmlhbGl6ZUFsbChldmVudHM6IEV2ZW50W10pOiBNYXRlcmlhbGl6ZWRFbnRpdGllcyB7XG4gIHJldHVybiB7XG4gICAgc3RlcHM6IG1hdGVyaWFsaXplU3RlcHMoZXZlbnRzKSxcbiAgICBob29rczogbWF0ZXJpYWxpemVIb29rcyhldmVudHMpLFxuICAgIHdhaXRzOiBtYXRlcmlhbGl6ZVdhaXRzKGV2ZW50cyksXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Event } from '@workflow/world';
|
|
2
|
+
export type ExactWorkflowSearchIdKind = 'step' | 'wait' | 'hook' | 'event';
|
|
3
|
+
export type ExactWorkflowSearchId = {
|
|
4
|
+
kind: ExactWorkflowSearchIdKind;
|
|
5
|
+
id: string;
|
|
6
|
+
};
|
|
7
|
+
export type ExactIdSearchResult = {
|
|
8
|
+
status: 'ok';
|
|
9
|
+
events: Event[];
|
|
10
|
+
truncated?: boolean;
|
|
11
|
+
} | {
|
|
12
|
+
status: 'not_found';
|
|
13
|
+
} | {
|
|
14
|
+
status: 'error';
|
|
15
|
+
message: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Returns a parsed workflow ID when `query` is a full step, wait, hook, or event ID.
|
|
19
|
+
* Partial IDs and run IDs (`wrun_`) are ignored. ULID bodies are matched case-insensitively
|
|
20
|
+
* and normalized to uppercase in the returned ID.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseExactWorkflowSearchId(query: string): ExactWorkflowSearchId | null;
|
|
23
|
+
/** True when input looks like the user is attempting an ID search (including partial). */
|
|
24
|
+
export declare function looksLikeWorkflowIdSearchInput(query: string): boolean;
|
|
25
|
+
//# sourceMappingURL=exact-event-search-id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exact-event-search-id.d.ts","sourceRoot":"","sources":["../../src/lib/exact-event-search-id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAW7C,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,yBAAyB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACtD;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAezC;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GACZ,qBAAqB,GAAG,IAAI,CAY9B;AAED,0FAA0F;AAC1F,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQrE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const WORKFLOW_ULID_BODY = '[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}';
|
|
2
|
+
const STEP_ID_PATTERN = new RegExp(`^step_(${WORKFLOW_ULID_BODY})$`, 'i');
|
|
3
|
+
const WAIT_ID_PATTERN = new RegExp(`^wait_(${WORKFLOW_ULID_BODY})$`, 'i');
|
|
4
|
+
const HOOK_ID_PATTERN = new RegExp(`^hook_(${WORKFLOW_ULID_BODY})$`, 'i');
|
|
5
|
+
const EVENT_ID_PATTERN = new RegExp(`^evnt_(${WORKFLOW_ULID_BODY})$`, 'i');
|
|
6
|
+
const WORKFLOW_ID_PREFIX_PATTERN = /^(step_|wait_|hook_|evnt_|wrun_)/i;
|
|
7
|
+
function matchPrefixedId(pattern, prefix, kind, query) {
|
|
8
|
+
const match = query.match(pattern);
|
|
9
|
+
if (!match) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return { kind, id: `${prefix}_${match[1].toUpperCase()}` };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Returns a parsed workflow ID when `query` is a full step, wait, hook, or event ID.
|
|
16
|
+
* Partial IDs and run IDs (`wrun_`) are ignored. ULID bodies are matched case-insensitively
|
|
17
|
+
* and normalized to uppercase in the returned ID.
|
|
18
|
+
*/
|
|
19
|
+
export function parseExactWorkflowSearchId(query) {
|
|
20
|
+
const trimmed = query.trim();
|
|
21
|
+
if (!trimmed) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return (matchPrefixedId(STEP_ID_PATTERN, 'step', 'step', trimmed) ??
|
|
25
|
+
matchPrefixedId(WAIT_ID_PATTERN, 'wait', 'wait', trimmed) ??
|
|
26
|
+
matchPrefixedId(HOOK_ID_PATTERN, 'hook', 'hook', trimmed) ??
|
|
27
|
+
matchPrefixedId(EVENT_ID_PATTERN, 'evnt', 'event', trimmed));
|
|
28
|
+
}
|
|
29
|
+
/** True when input looks like the user is attempting an ID search (including partial). */
|
|
30
|
+
export function looksLikeWorkflowIdSearchInput(query) {
|
|
31
|
+
const trimmed = query.trim();
|
|
32
|
+
if (!WORKFLOW_ID_PREFIX_PATTERN.test(trimmed)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
// Distinguish IDs (contain digits) from event-type strings like step_started.
|
|
36
|
+
// Assumes workflow event types do not include digits in their names.
|
|
37
|
+
return /\d/.test(trimmed);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhhY3QtZXZlbnQtc2VhcmNoLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9leGFjdC1ldmVudC1zZWFyY2gtaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxrQkFBa0IsR0FBRyx3Q0FBd0MsQ0FBQztBQUVwRSxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLGtCQUFrQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUUsTUFBTSxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxrQkFBa0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsa0JBQWtCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRSxNQUFNLGdCQUFnQixHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsa0JBQWtCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUUzRSxNQUFNLDBCQUEwQixHQUFHLG1DQUFtQyxDQUFDO0FBY3ZFLFNBQVMsZUFBZSxDQUN0QixPQUFlLEVBQ2YsTUFBeUMsRUFDekMsSUFBK0IsRUFDL0IsS0FBYTtJQUViLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM3RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FDeEMsS0FBYTtJQUViLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQ0wsZUFBZSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztRQUN6RCxlQUFlLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO1FBQ3pELGVBQWUsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDekQsZUFBZSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQzVELENBQUM7QUFDSixDQUFDO0FBRUQsMEZBQTBGO0FBQzFGLE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxLQUFhO0lBQzFELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsOEVBQThFO0lBQzlFLHFFQUFxRTtJQUNyRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXZlbnQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuXG5jb25zdCBXT1JLRkxPV19VTElEX0JPRFkgPSAnWzAxMjM0NTY3ODlBQkNERUZHSEpLTU5QUVJTVFZXWFlaXXsyNn0nO1xuXG5jb25zdCBTVEVQX0lEX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBec3RlcF8oJHtXT1JLRkxPV19VTElEX0JPRFl9KSRgLCAnaScpO1xuY29uc3QgV0FJVF9JRF9QQVRURVJOID0gbmV3IFJlZ0V4cChgXndhaXRfKCR7V09SS0ZMT1dfVUxJRF9CT0RZfSkkYCwgJ2knKTtcbmNvbnN0IEhPT0tfSURfUEFUVEVSTiA9IG5ldyBSZWdFeHAoYF5ob29rXygke1dPUktGTE9XX1VMSURfQk9EWX0pJGAsICdpJyk7XG5jb25zdCBFVkVOVF9JRF9QQVRURVJOID0gbmV3IFJlZ0V4cChgXmV2bnRfKCR7V09SS0ZMT1dfVUxJRF9CT0RZfSkkYCwgJ2knKTtcblxuY29uc3QgV09SS0ZMT1dfSURfUFJFRklYX1BBVFRFUk4gPSAvXihzdGVwX3x3YWl0X3xob29rX3xldm50X3x3cnVuXykvaTtcblxuZXhwb3J0IHR5cGUgRXhhY3RXb3JrZmxvd1NlYXJjaElkS2luZCA9ICdzdGVwJyB8ICd3YWl0JyB8ICdob29rJyB8ICdldmVudCc7XG5cbmV4cG9ydCB0eXBlIEV4YWN0V29ya2Zsb3dTZWFyY2hJZCA9IHtcbiAga2luZDogRXhhY3RXb3JrZmxvd1NlYXJjaElkS2luZDtcbiAgaWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEV4YWN0SWRTZWFyY2hSZXN1bHQgPVxuICB8IHsgc3RhdHVzOiAnb2snOyBldmVudHM6IEV2ZW50W107IHRydW5jYXRlZD86IGJvb2xlYW4gfVxuICB8IHsgc3RhdHVzOiAnbm90X2ZvdW5kJyB9XG4gIHwgeyBzdGF0dXM6ICdlcnJvcic7IG1lc3NhZ2U6IHN0cmluZyB9O1xuXG5mdW5jdGlvbiBtYXRjaFByZWZpeGVkSWQoXG4gIHBhdHRlcm46IFJlZ0V4cCxcbiAgcHJlZml4OiAnc3RlcCcgfCAnd2FpdCcgfCAnaG9vaycgfCAnZXZudCcsXG4gIGtpbmQ6IEV4YWN0V29ya2Zsb3dTZWFyY2hJZEtpbmQsXG4gIHF1ZXJ5OiBzdHJpbmdcbik6IEV4YWN0V29ya2Zsb3dTZWFyY2hJZCB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IHF1ZXJ5Lm1hdGNoKHBhdHRlcm4pO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHsga2luZCwgaWQ6IGAke3ByZWZpeH1fJHttYXRjaFsxXS50b1VwcGVyQ2FzZSgpfWAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcGFyc2VkIHdvcmtmbG93IElEIHdoZW4gYHF1ZXJ5YCBpcyBhIGZ1bGwgc3RlcCwgd2FpdCwgaG9vaywgb3IgZXZlbnQgSUQuXG4gKiBQYXJ0aWFsIElEcyBhbmQgcnVuIElEcyAoYHdydW5fYCkgYXJlIGlnbm9yZWQuIFVMSUQgYm9kaWVzIGFyZSBtYXRjaGVkIGNhc2UtaW5zZW5zaXRpdmVseVxuICogYW5kIG5vcm1hbGl6ZWQgdG8gdXBwZXJjYXNlIGluIHRoZSByZXR1cm5lZCBJRC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRXhhY3RXb3JrZmxvd1NlYXJjaElkKFxuICBxdWVyeTogc3RyaW5nXG4pOiBFeGFjdFdvcmtmbG93U2VhcmNoSWQgfCBudWxsIHtcbiAgY29uc3QgdHJpbW1lZCA9IHF1ZXJ5LnRyaW0oKTtcbiAgaWYgKCF0cmltbWVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIG1hdGNoUHJlZml4ZWRJZChTVEVQX0lEX1BBVFRFUk4sICdzdGVwJywgJ3N0ZXAnLCB0cmltbWVkKSA/P1xuICAgIG1hdGNoUHJlZml4ZWRJZChXQUlUX0lEX1BBVFRFUk4sICd3YWl0JywgJ3dhaXQnLCB0cmltbWVkKSA/P1xuICAgIG1hdGNoUHJlZml4ZWRJZChIT09LX0lEX1BBVFRFUk4sICdob29rJywgJ2hvb2snLCB0cmltbWVkKSA/P1xuICAgIG1hdGNoUHJlZml4ZWRJZChFVkVOVF9JRF9QQVRURVJOLCAnZXZudCcsICdldmVudCcsIHRyaW1tZWQpXG4gICk7XG59XG5cbi8qKiBUcnVlIHdoZW4gaW5wdXQgbG9va3MgbGlrZSB0aGUgdXNlciBpcyBhdHRlbXB0aW5nIGFuIElEIHNlYXJjaCAoaW5jbHVkaW5nIHBhcnRpYWwpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2tzTGlrZVdvcmtmbG93SWRTZWFyY2hJbnB1dChxdWVyeTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBxdWVyeS50cmltKCk7XG4gIGlmICghV09SS0ZMT1dfSURfUFJFRklYX1BBVFRFUk4udGVzdCh0cmltbWVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBEaXN0aW5ndWlzaCBJRHMgKGNvbnRhaW4gZGlnaXRzKSBmcm9tIGV2ZW50LXR5cGUgc3RyaW5ncyBsaWtlIHN0ZXBfc3RhcnRlZC5cbiAgLy8gQXNzdW1lcyB3b3JrZmxvdyBldmVudCB0eXBlcyBkbyBub3QgaW5jbHVkZSBkaWdpdHMgaW4gdGhlaXIgbmFtZXMuXG4gIHJldHVybiAvXFxkLy50ZXN0KHRyaW1tZWQpO1xufVxuIl19
|
package/dist/lib/hydration.d.ts
CHANGED
|
@@ -6,13 +6,19 @@
|
|
|
6
6
|
* objects for UI rendering.
|
|
7
7
|
*/
|
|
8
8
|
import { type Revivers } from '@workflow/core/serialization-format';
|
|
9
|
-
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isStreamId, isStreamRef, type Revivers, STREAM_REF_TYPE, type StreamRef, truncateId, } from '@workflow/core/serialization-format';
|
|
9
|
+
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isRunRef, isStreamId, isStreamRef, type Revivers, RUN_REF_TYPE, type RunRef, STREAM_REF_TYPE, type StreamRef, serializedInstanceToRef, truncateId, } from '@workflow/core/serialization-format';
|
|
10
10
|
/**
|
|
11
11
|
* Get the web-specific revivers for hydrating serialized data.
|
|
12
12
|
*
|
|
13
13
|
* Uses `atob()` for base64 decoding (no Node.js Buffer dependency).
|
|
14
14
|
* All types are revived as real instances (Date, Map, Set, URL,
|
|
15
15
|
* URLSearchParams, Headers, Error, etc.).
|
|
16
|
+
*
|
|
17
|
+
* NOTE: this set must mirror the keys in `SerializableSpecial` (see
|
|
18
|
+
* `@workflow/core/serialization/types`). Any reducer key added on the
|
|
19
|
+
* serialization side that isn't covered here will cause `devalue.unflatten`
|
|
20
|
+
* to throw `Unknown type X`, which `hydrateResourceIO` swallows and
|
|
21
|
+
* surfaces as a "Failed to load resource details" banner in the o11y UI.
|
|
16
22
|
*/
|
|
17
23
|
export declare function getWebRevivers(): Revivers;
|
|
18
24
|
/**
|
|
@@ -39,4 +45,11 @@ export declare function isExpiredMarker(value: unknown): boolean;
|
|
|
39
45
|
* eventData subfields per `EVENT_DATA_REF_FIELDS` from `@workflow/world` for that event type.
|
|
40
46
|
*/
|
|
41
47
|
export declare function hydrateResourceIOWithKey<T>(resource: T, key: Uint8Array): Promise<T>;
|
|
48
|
+
/**
|
|
49
|
+
* Check whether a hydrated resource (event, step, run, etc.) contains any
|
|
50
|
+
* encrypted display markers. Inspects the standard top-level fields
|
|
51
|
+
* (`input`, `output`, `error`, `metadata`) as well as the event-type-specific
|
|
52
|
+
* `eventData` ref fields.
|
|
53
|
+
*/
|
|
54
|
+
export declare function hasEncryptedFields(resource: unknown): boolean;
|
|
42
55
|
//# sourceMappingURL=hydration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAgE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAoLzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAwDZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAkB7D"}
|
package/dist/lib/hydration.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* `Buffer` dependency). Produces `ClassInstanceRef` objects and `StreamRef`
|
|
6
6
|
* objects for UI rendering.
|
|
7
7
|
*/
|
|
8
|
-
import { extractClassName, hydrateResourceIO as hydrateResourceIOGeneric, isEncryptedData, isExpiredStub, observabilityRevivers, } from '@workflow/core/serialization-format';
|
|
8
|
+
import { extractClassName, hydrateResourceIO as hydrateResourceIOGeneric, isEncryptedData, isExpiredStub, isRunRef, observabilityRevivers, serializedInstanceToRef, } from '@workflow/core/serialization-format';
|
|
9
9
|
import { EVENT_DATA_REF_FIELDS } from '@workflow/world';
|
|
10
10
|
// Re-export types and utilities that consumers need
|
|
11
|
-
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from '@workflow/core/serialization-format';
|
|
11
|
+
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isRunRef, isStreamId, isStreamRef, RUN_REF_TYPE, STREAM_REF_TYPE, serializedInstanceToRef, truncateId, } from '@workflow/core/serialization-format';
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
13
|
// Browser-safe base64 decode
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
@@ -26,12 +26,51 @@ function base64ToArrayBuffer(base64) {
|
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
27
|
// Web revivers (browser-safe, no Buffer dependency)
|
|
28
28
|
// ---------------------------------------------------------------------------
|
|
29
|
+
/**
|
|
30
|
+
* Build a reviver for one of the built-in `Error` subclasses (e.g.
|
|
31
|
+
* `TypeError`, `RangeError`). The constructor for the named subclass is
|
|
32
|
+
* resolved off `globalThis` at call time so the produced instance has the
|
|
33
|
+
* correct prototype chain in the consumer realm. Falls back to a generic
|
|
34
|
+
* `Error` (with `name` set) if the global isn't available, which keeps the
|
|
35
|
+
* o11y UI rendering even on exotic browsers.
|
|
36
|
+
*
|
|
37
|
+
* `cause` is passed through `ErrorOptions` to the constructor when present,
|
|
38
|
+
* matching `getCommonRevivers` in `@workflow/core` so the resulting `cause`
|
|
39
|
+
* property has the same semantics (non-enumerable, set by the engine) as a
|
|
40
|
+
* freshly thrown Error in the consumer realm. The `'cause' in value` check
|
|
41
|
+
* preserves the distinction between "no cause" and "cause is undefined".
|
|
42
|
+
*/
|
|
43
|
+
function makeWebErrorSubclassReviver(name) {
|
|
44
|
+
return (value) => {
|
|
45
|
+
const opts = 'cause' in value ? { cause: value.cause } : undefined;
|
|
46
|
+
const Ctor = globalThis[name];
|
|
47
|
+
let error;
|
|
48
|
+
if (typeof Ctor === 'function') {
|
|
49
|
+
error = new Ctor(value.message, opts);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Fallback path: no built-in subclass available (exotic env). Construct
|
|
53
|
+
// a plain Error with the right `name` and copy `cause` manually since
|
|
54
|
+
// the base Error constructor is what we actually called.
|
|
55
|
+
error = Object.assign(new Error(value.message, opts), { name });
|
|
56
|
+
}
|
|
57
|
+
if (value.stack !== undefined)
|
|
58
|
+
error.stack = value.stack;
|
|
59
|
+
return error;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
29
62
|
/**
|
|
30
63
|
* Get the web-specific revivers for hydrating serialized data.
|
|
31
64
|
*
|
|
32
65
|
* Uses `atob()` for base64 decoding (no Node.js Buffer dependency).
|
|
33
66
|
* All types are revived as real instances (Date, Map, Set, URL,
|
|
34
67
|
* URLSearchParams, Headers, Error, etc.).
|
|
68
|
+
*
|
|
69
|
+
* NOTE: this set must mirror the keys in `SerializableSpecial` (see
|
|
70
|
+
* `@workflow/core/serialization/types`). Any reducer key added on the
|
|
71
|
+
* serialization side that isn't covered here will cause `devalue.unflatten`
|
|
72
|
+
* to throw `Unknown type X`, which `hydrateResourceIO` swallows and
|
|
73
|
+
* surfaces as a "Failed to load resource details" banner in the o11y UI.
|
|
35
74
|
*/
|
|
36
75
|
export function getWebRevivers() {
|
|
37
76
|
function reviveArrayBuffer(value) {
|
|
@@ -47,10 +86,94 @@ export function getWebRevivers() {
|
|
|
47
86
|
BigInt64Array: (value) => new BigInt64Array(reviveArrayBuffer(value)),
|
|
48
87
|
BigUint64Array: (value) => new BigUint64Array(reviveArrayBuffer(value)),
|
|
49
88
|
Date: (value) => new Date(value),
|
|
89
|
+
// Error family. The reducer side (see
|
|
90
|
+
// `packages/core/src/serialization/reducers/common.ts`) emits a tagged
|
|
91
|
+
// entry for each built-in Error subclass plus the workflow-specific
|
|
92
|
+
// `FatalError` / `RetryableError` and `AggregateError`. Without
|
|
93
|
+
// matching revivers here, `devalue.unflatten` throws "Unknown type X"
|
|
94
|
+
// — which surfaces in the web o11y UI as "Failed to load resource
|
|
95
|
+
// details: Unknown type FatalError".
|
|
50
96
|
Error: (value) => {
|
|
97
|
+
const opts = 'cause' in value ? { cause: value.cause } : undefined;
|
|
98
|
+
const error = new Error(value.message, opts);
|
|
99
|
+
error.name = value.name;
|
|
100
|
+
if (value.stack !== undefined)
|
|
101
|
+
error.stack = value.stack;
|
|
102
|
+
return error;
|
|
103
|
+
},
|
|
104
|
+
EvalError: makeWebErrorSubclassReviver('EvalError'),
|
|
105
|
+
RangeError: makeWebErrorSubclassReviver('RangeError'),
|
|
106
|
+
ReferenceError: makeWebErrorSubclassReviver('ReferenceError'),
|
|
107
|
+
SyntaxError: makeWebErrorSubclassReviver('SyntaxError'),
|
|
108
|
+
TypeError: makeWebErrorSubclassReviver('TypeError'),
|
|
109
|
+
URIError: makeWebErrorSubclassReviver('URIError'),
|
|
110
|
+
AggregateError: (value) => {
|
|
111
|
+
const opts = 'cause' in value ? { cause: value.cause } : undefined;
|
|
112
|
+
const Ctor = globalThis.AggregateError;
|
|
113
|
+
const error = typeof Ctor === 'function'
|
|
114
|
+
? new Ctor(value.errors, value.message, opts)
|
|
115
|
+
: Object.assign(new Error(value.message, opts), {
|
|
116
|
+
name: 'AggregateError',
|
|
117
|
+
errors: value.errors,
|
|
118
|
+
});
|
|
119
|
+
if (value.stack !== undefined)
|
|
120
|
+
error.stack = value.stack;
|
|
121
|
+
return error;
|
|
122
|
+
},
|
|
123
|
+
// `FatalError` and `RetryableError` are not built-in browser globals,
|
|
124
|
+
// so we can't resolve a constructor from globalThis. The web o11y UI
|
|
125
|
+
// doesn't need `instanceof FatalError` to pass (no user code runs
|
|
126
|
+
// here) — it just needs `name`, `message`, `stack`, and any extra
|
|
127
|
+
// enumerable fields to render. Construct a plain `Error` with `name`
|
|
128
|
+
// set; ObjectInspector reads `constructor.name` for the displayed
|
|
129
|
+
// class label, but we don't have the real class, so we emit a tagged
|
|
130
|
+
// Error whose `name` field carries the class identity. This matches
|
|
131
|
+
// how the existing base `Error` reviver presents unknown subclasses.
|
|
132
|
+
FatalError: (value) => {
|
|
133
|
+
const opts = 'cause' in value ? { cause: value.cause } : undefined;
|
|
134
|
+
const error = new Error(value.message, opts);
|
|
135
|
+
error.name = 'FatalError';
|
|
136
|
+
if (value.stack !== undefined)
|
|
137
|
+
error.stack = value.stack;
|
|
138
|
+
return error;
|
|
139
|
+
},
|
|
140
|
+
RetryableError: (value) => {
|
|
141
|
+
const opts = 'cause' in value ? { cause: value.cause } : undefined;
|
|
142
|
+
const error = new Error(value.message, opts);
|
|
143
|
+
error.name = 'RetryableError';
|
|
144
|
+
if (value.stack !== undefined)
|
|
145
|
+
error.stack = value.stack;
|
|
146
|
+
// `retryAfter` is serialized as an epoch ms number (see the runtime
|
|
147
|
+
// RetryableError reducer for the rationale around realm-safety).
|
|
148
|
+
// Rehydrate as a Date so o11y consumers can render it directly.
|
|
149
|
+
// Guard against payloads from older runtime versions that predate
|
|
150
|
+
// the field — without this check, `new Date(undefined)` would
|
|
151
|
+
// produce an Invalid Date rather than omitting the property.
|
|
152
|
+
if (value.retryAfter != null) {
|
|
153
|
+
error.retryAfter = new Date(value.retryAfter);
|
|
154
|
+
}
|
|
155
|
+
return error;
|
|
156
|
+
},
|
|
157
|
+
DOMException: (value) => {
|
|
158
|
+
// Modern browsers and Node 18+ expose `DOMException` on globalThis.
|
|
159
|
+
// `AbortController.abort()` with no argument synthesizes one as the
|
|
160
|
+
// signal's reason, so this is a common payload for any aborted step.
|
|
161
|
+
const G = globalThis;
|
|
162
|
+
if (typeof G.DOMException === 'function') {
|
|
163
|
+
const e = new G.DOMException(value.message, value.name);
|
|
164
|
+
if (value.stack !== undefined)
|
|
165
|
+
e.stack = value.stack;
|
|
166
|
+
if ('cause' in value)
|
|
167
|
+
e.cause = value.cause;
|
|
168
|
+
return e;
|
|
169
|
+
}
|
|
51
170
|
const error = new Error(value.message);
|
|
52
171
|
error.name = value.name;
|
|
53
|
-
|
|
172
|
+
if (value.stack !== undefined)
|
|
173
|
+
error.stack = value.stack;
|
|
174
|
+
if ('cause' in value) {
|
|
175
|
+
error.cause = value.cause;
|
|
176
|
+
}
|
|
54
177
|
return error;
|
|
55
178
|
},
|
|
56
179
|
Float32Array: (value) => new Float32Array(reviveArrayBuffer(value)),
|
|
@@ -104,6 +227,11 @@ export function getWebRevivers() {
|
|
|
104
227
|
// react-inspector shows the class name (it reads constructor.name).
|
|
105
228
|
Class: (value) => `<class:${extractClassName(value.classId)}>`,
|
|
106
229
|
Instance: (value) => {
|
|
230
|
+
// Run instances are rendered as clickable RunRef badges
|
|
231
|
+
const runRef = serializedInstanceToRef(value);
|
|
232
|
+
if (isRunRef(runRef)) {
|
|
233
|
+
return runRef;
|
|
234
|
+
}
|
|
107
235
|
const className = extractClassName(value.classId);
|
|
108
236
|
const data = value.data;
|
|
109
237
|
const props = data && typeof data === 'object' ? { ...data } : { value: data };
|
|
@@ -278,4 +406,29 @@ export async function hydrateResourceIOWithKey(resource, key) {
|
|
|
278
406
|
}
|
|
279
407
|
return result;
|
|
280
408
|
}
|
|
281
|
-
|
|
409
|
+
/**
|
|
410
|
+
* Check whether a hydrated resource (event, step, run, etc.) contains any
|
|
411
|
+
* encrypted display markers. Inspects the standard top-level fields
|
|
412
|
+
* (`input`, `output`, `error`, `metadata`) as well as the event-type-specific
|
|
413
|
+
* `eventData` ref fields.
|
|
414
|
+
*/
|
|
415
|
+
export function hasEncryptedFields(resource) {
|
|
416
|
+
if (!resource || typeof resource !== 'object')
|
|
417
|
+
return false;
|
|
418
|
+
const r = resource;
|
|
419
|
+
for (const key of ['input', 'output', 'metadata', 'error']) {
|
|
420
|
+
if (isEncryptedMarker(r[key]))
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
if (r.eventData && typeof r.eventData === 'object') {
|
|
424
|
+
const eventType = typeof r.eventType === 'string' ? r.eventType : '';
|
|
425
|
+
const refKeys = EVENT_DATA_REF_FIELDS[eventType] ?? [];
|
|
426
|
+
const ed = r.eventData;
|
|
427
|
+
for (const key of refKeys) {
|
|
428
|
+
if (key in ed && isEncryptedMarker(ed[key]))
|
|
429
|
+
return true;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9oeWRyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsSUFBSSx3QkFBd0IsRUFDN0MsZUFBZSxFQUNmLGFBQWEsRUFDYixRQUFRLEVBQ1IscUJBQXFCLEVBRXJCLHVCQUF1QixHQUN4QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELG9EQUFvRDtBQUNwRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsUUFBUSxFQUNSLFVBQVUsRUFDVixXQUFXLEVBRVgsWUFBWSxFQUVaLGVBQWUsRUFFZix1QkFBdUIsRUFDdkIsVUFBVSxHQUNYLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsOEVBQThFO0FBQzlFLDZCQUE2QjtBQUM3Qiw4RUFBOEU7QUFFOUUsU0FBUyxtQkFBbUIsQ0FBQyxNQUFjO0lBQ3pDLElBQUksTUFBTSxLQUFLLEVBQUUsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENB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QVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM1RCxNQUFNLENBQUMsR0FBRyxRQUFtQyxDQUFDO0lBRTlDLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNELElBQUksaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2RCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBb0MsQ0FBQztRQUNsRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYi1zcGVjaWZpYyBoeWRyYXRpb24gZm9yIG8xMXkgZGlzcGxheS5cbiAqXG4gKiBCcm93c2VyLXNhZmUgcmV2aXZlcnMgdGhhdCB1c2UgYGF0b2IoKWAgZm9yIGJhc2U2NCBkZWNvZGluZyAobm8gTm9kZS5qc1xuICogYEJ1ZmZlcmAgZGVwZW5kZW5jeSkuIFByb2R1Y2VzIGBDbGFzc0luc3RhbmNlUmVmYCBvYmplY3RzIGFuZCBgU3RyZWFtUmVmYFxuICogb2JqZWN0cyBmb3IgVUkgcmVuZGVyaW5nLlxuICovXG5cbmltcG9ydCB7XG4gIGV4dHJhY3RDbGFzc05hbWUsXG4gIGh5ZHJhdGVSZXNvdXJjZUlPIGFzIGh5ZHJhdGVSZXNvdXJjZUlPR2VuZXJpYyxcbiAgaXNFbmNyeXB0ZWREYXRhLFxuICBpc0V4cGlyZWRTdHViLFxuICBpc1J1blJlZixcbiAgb2JzZXJ2YWJpbGl0eVJldml2ZXJzLFxuICB0eXBlIFJldml2ZXJzLFxuICBzZXJpYWxpemVkSW5zdGFuY2VUb1JlZixcbn0gZnJvbSAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbi1mb3JtYXQnO1xuaW1wb3J0IHsgRVZFTlRfREFUQV9SRUZfRklFTERTIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcblxuLy8gUmUtZXhwb3J0IHR5cGVzIGFuZCB1dGlsaXRpZXMgdGhhdCBjb25zdW1lcnMgbmVlZFxuZXhwb3J0IHtcbiAgQ0xBU1NfSU5TVEFOQ0VfUkVGX1RZUEUsXG4gIENsYXNzSW5zdGFuY2VSZWYsXG4gIEVOQ1JZUFRFRF9QTEFDRUhPTERFUixcbiAgZXh0cmFjdFN0cmVhbUlkcyxcbiAgaXNDbGFzc0luc3RhbmNlUmVmLFxuICBpc0VuY3J5cHRlZERhdGEsXG4gIGlzUnVuUmVmLFxuICBpc1N0cmVhbUlkLFxuICBpc1N0cmVhbVJlZixcbiAgdHlwZSBSZXZpdmVycyxcbiAgUlVOX1JFRl9UWVBFLFxuICB0eXBlIFJ1blJlZixcbiAgU1RSRUFNX1JFRl9UWVBFLFxuICB0eXBlIFN0cmVhbVJlZixcbiAgc2VyaWFsaXplZEluc3RhbmNlVG9SZWYsXG4gIHRydW5jYXRlSWQsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCcm93c2VyLXNhZmUgYmFzZTY0IGRlY29kZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XG4gIGlmIChiYXNlNjQgPT09ICcnIHx8IGJhc2U2NCA9PT0gJy4nKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheUJ1ZmZlcigwKTtcbiAgfVxuICBjb25zdCBiaW5hcnlTdHJpbmcgPSBhdG9iKGJhc2U2NCk7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5U3RyaW5nLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5U3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgYnl0ZXNbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgfVxuICByZXR1cm4gYnl0ZXMuYnVmZmVyO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFdlYiByZXZpdmVycyAoYnJvd3Nlci1zYWZlLCBubyBCdWZmZXIgZGVwZW5kZW5jeSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEJ1aWxkIGEgcmV2aXZlciBmb3Igb25lIG9mIHRoZSBidWlsdC1pbiBgRXJyb3JgIHN1YmNsYXNzZXMgKGUuZy5cbiAqIGBUeXBlRXJyb3JgLCBgUmFuZ2VFcnJvcmApLiBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBuYW1lZCBzdWJjbGFzcyBpc1xuICogcmVzb2x2ZWQgb2ZmIGBnbG9iYWxUaGlzYCBhdCBjYWxsIHRpbWUgc28gdGhlIHByb2R1Y2VkIGluc3RhbmNlIGhhcyB0aGVcbiAqIGNvcnJlY3QgcHJvdG90eXBlIGNoYWluIGluIHRoZSBjb25zdW1lciByZWFsbS4gRmFsbHMgYmFjayB0byBhIGdlbmVyaWNcbiAqIGBFcnJvcmAgKHdpdGggYG5hbWVgIHNldCkgaWYgdGhlIGdsb2JhbCBpc24ndCBhdmFpbGFibGUsIHdoaWNoIGtlZXBzIHRoZVxuICogbzExeSBVSSByZW5kZXJpbmcgZXZlbiBvbiBleG90aWMgYnJvd3NlcnMuXG4gKlxuICogYGNhdXNlYCBpcyBwYXNzZWQgdGhyb3VnaCBgRXJyb3JPcHRpb25zYCB0byB0aGUgY29uc3RydWN0b3Igd2hlbiBwcmVzZW50LFxuICogbWF0Y2hpbmcgYGdldENvbW1vblJldml2ZXJzYCBpbiBgQHdvcmtmbG93L2NvcmVgIHNvIHRoZSByZXN1bHRpbmcgYGNhdXNlYFxuICogcHJvcGVydHkgaGFzIHRoZSBzYW1lIHNlbWFudGljcyAobm9uLWVudW1lcmFibGUsIHNldCBieSB0aGUgZW5naW5lKSBhcyBhXG4gKiBmcmVzaGx5IHRocm93biBFcnJvciBpbiB0aGUgY29uc3VtZXIgcmVhbG0uIFRoZSBgJ2NhdXNlJyBpbiB2YWx1ZWAgY2hlY2tcbiAqIHByZXNlcnZlcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBcIm5vIGNhdXNlXCIgYW5kIFwiY2F1c2UgaXMgdW5kZWZpbmVkXCIuXG4gKi9cbmZ1bmN0aW9uIG1ha2VXZWJFcnJvclN1YmNsYXNzUmV2aXZlcihcbiAgbmFtZTpcbiAgICB8ICdFdmFsRXJyb3InXG4gICAgfCAnUmFuZ2VFcnJvcidcbiAgICB8ICdSZWZlcmVuY2VFcnJvcidcbiAgICB8ICdTeW50YXhFcnJvcidcbiAgICB8ICdUeXBlRXJyb3InXG4gICAgfCAnVVJJRXJyb3InXG4pIHtcbiAgcmV0dXJuICh2YWx1ZTogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfSkgPT4ge1xuICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBDdG9yID0gKGdsb2JhbFRoaXMgYXMgUmVjb3JkPHN0cmluZywgYW55PilbbmFtZV0gYXNcbiAgICAgIHwgRXJyb3JDb25zdHJ1Y3RvclxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGVycm9yOiBFcnJvcjtcbiAgICBpZiAodHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSwgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZhbGxiYWNrIHBhdGg6IG5vIGJ1aWx0LWluIHN1YmNsYXNzIGF2YWlsYWJsZSAoZXhvdGljIGVudikuIENvbnN0cnVjdFxuICAgICAgLy8gYSBwbGFpbiBFcnJvciB3aXRoIHRoZSByaWdodCBgbmFtZWAgYW5kIGNvcHkgYGNhdXNlYCBtYW51YWxseSBzaW5jZVxuICAgICAgLy8gdGhlIGJhc2UgRXJyb3IgY29uc3RydWN0b3IgaXMgd2hhdCB3ZSBhY3R1YWxseSBjYWxsZWQuXG4gICAgICBlcnJvciA9IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHZhbHVlLm1lc3NhZ2UsIG9wdHMpLCB7IG5hbWUgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgIHJldHVybiBlcnJvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHdlYi1zcGVjaWZpYyByZXZpdmVycyBmb3IgaHlkcmF0aW5nIHNlcmlhbGl6ZWQgZGF0YS5cbiAqXG4gKiBVc2VzIGBhdG9iKClgIGZvciBiYXNlNjQgZGVjb2RpbmcgKG5vIE5vZGUuanMgQnVmZmVyIGRlcGVuZGVuY3kpLlxuICogQWxsIHR5cGVzIGFyZSByZXZpdmVkIGFzIHJlYWwgaW5zdGFuY2VzIChEYXRlLCBNYXAsIFNldCwgVVJMLFxuICogVVJMU2VhcmNoUGFyYW1zLCBIZWFkZXJzLCBFcnJvciwgZXRjLikuXG4gKlxuICogTk9URTogdGhpcyBzZXQgbXVzdCBtaXJyb3IgdGhlIGtleXMgaW4gYFNlcmlhbGl6YWJsZVNwZWNpYWxgIChzZWVcbiAqIGBAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uL3R5cGVzYCkuIEFueSByZWR1Y2VyIGtleSBhZGRlZCBvbiB0aGVcbiAqIHNlcmlhbGl6YXRpb24gc2lkZSB0aGF0IGlzbid0IGNvdmVyZWQgaGVyZSB3aWxsIGNhdXNlIGBkZXZhbHVlLnVuZmxhdHRlbmBcbiAqIHRvIHRocm93IGBVbmtub3duIHR5cGUgWGAsIHdoaWNoIGBoeWRyYXRlUmVzb3VyY2VJT2Agc3dhbGxvd3MgYW5kXG4gKiBzdXJmYWNlcyBhcyBhIFwiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UgZGV0YWlsc1wiIGJhbm5lciBpbiB0aGUgbzExeSBVSS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYlJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgZnVuY3Rpb24gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWU6IHN0cmluZyk6IEFycmF5QnVmZmVyIHtcbiAgICByZXR1cm4gYmFzZTY0VG9BcnJheUJ1ZmZlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIE8xMXktc3BlY2lmaWMgcmV2aXZlcnMgKHN0cmVhbXMsIHN0ZXAgZnVuY3Rpb25zIOKGkiBkaXNwbGF5IG9iamVjdHMpLlxuICAgIC8vIFNwcmVhZCBGSVJTVCBzbyB3ZWItc3BlY2lmaWMgb3ZlcnJpZGVzIGJlbG93IHRha2UgcHJlY2VkZW5jZS5cbiAgICAuLi5vYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG5cbiAgICAvLyBCaW5hcnkgdHlwZXNcbiAgICBBcnJheUJ1ZmZlcjogcmV2aXZlQXJyYXlCdWZmZXIsXG4gICAgQmlnSW50OiAodmFsdWU6IHN0cmluZykgPT4gQmlnSW50KHZhbHVlKSxcbiAgICBCaWdJbnQ2NEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBCaWdJbnQ2NEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKSksXG4gICAgQmlnVWludDY0QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IEJpZ1VpbnQ2NEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKSksXG4gICAgRGF0ZTogKHZhbHVlKSA9PiBuZXcgRGF0ZSh2YWx1ZSksXG5cbiAgICAvLyBFcnJvciBmYW1pbHkuIFRoZSByZWR1Y2VyIHNpZGUgKHNlZVxuICAgIC8vIGBwYWNrYWdlcy9jb3JlL3NyYy9zZXJpYWxpemF0aW9uL3JlZHVjZXJzL2NvbW1vbi50c2ApIGVtaXRzIGEgdGFnZ2VkXG4gICAgLy8gZW50cnkgZm9yIGVhY2ggYnVpbHQtaW4gRXJyb3Igc3ViY2xhc3MgcGx1cyB0aGUgd29ya2Zsb3ctc3BlY2lmaWNcbiAgICAvLyBgRmF0YWxFcnJvcmAgLyBgUmV0cnlhYmxlRXJyb3JgIGFuZCBgQWdncmVnYXRlRXJyb3JgLiBXaXRob3V0XG4gICAgLy8gbWF0Y2hpbmcgcmV2aXZlcnMgaGVyZSwgYGRldmFsdWUudW5mbGF0dGVuYCB0aHJvd3MgXCJVbmtub3duIHR5cGUgWFwiXG4gICAgLy8g4oCUIHdoaWNoIHN1cmZhY2VzIGluIHRoZSB3ZWIgbzExeSBVSSBhcyBcIkZhaWxlZCB0byBsb2FkIHJlc291cmNlXG4gICAgLy8gZGV0YWlsczogVW5rbm93biB0eXBlIEZhdGFsRXJyb3JcIi5cbiAgICBFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0gJ2NhdXNlJyBpbiB2YWx1ZSA/IHsgY2F1c2U6IHZhbHVlLmNhdXNlIH0gOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcih2YWx1ZS5tZXNzYWdlLCBvcHRzKTtcbiAgICAgIGVycm9yLm5hbWUgPSB2YWx1ZS5uYW1lO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBFdmFsRXJyb3I6IG1ha2VXZWJFcnJvclN1YmNsYXNzUmV2aXZlcignRXZhbEVycm9yJyksXG4gICAgUmFuZ2VFcnJvcjogbWFrZVdlYkVycm9yU3ViY2xhc3NSZXZpdmVyKCdSYW5nZUVycm9yJyksXG4gICAgUmVmZXJlbmNlRXJyb3I6IG1ha2VXZWJFcnJvclN1YmNsYXNzUmV2aXZlcignUmVmZXJlbmNlRXJyb3InKSxcbiAgICBTeW50YXhFcnJvcjogbWFrZVdlYkVycm9yU3ViY2xhc3NSZXZpdmVyKCdTeW50YXhFcnJvcicpLFxuICAgIFR5cGVFcnJvcjogbWFrZVdlYkVycm9yU3ViY2xhc3NSZXZpdmVyKCdUeXBlRXJyb3InKSxcbiAgICBVUklFcnJvcjogbWFrZVdlYkVycm9yU3ViY2xhc3NSZXZpdmVyKCdVUklFcnJvcicpLFxuICAgIEFnZ3JlZ2F0ZUVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IEN0b3IgPSAoXG4gICAgICAgIGdsb2JhbFRoaXMgYXMgeyBBZ2dyZWdhdGVFcnJvcj86IEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IgfVxuICAgICAgKS5BZ2dyZWdhdGVFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID1cbiAgICAgICAgdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IG5ldyBDdG9yKHZhbHVlLmVycm9ycywgdmFsdWUubWVzc2FnZSwgb3B0cylcbiAgICAgICAgICA6IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKHZhbHVlLm1lc3NhZ2UsIG9wdHMpLCB7XG4gICAgICAgICAgICAgIG5hbWU6ICdBZ2dyZWdhdGVFcnJvcicsXG4gICAgICAgICAgICAgIGVycm9yczogdmFsdWUuZXJyb3JzLFxuICAgICAgICAgICAgfSk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIC8vIGBGYXRhbEVycm9yYCBhbmQgYFJldHJ5YWJsZUVycm9yYCBhcmUgbm90IGJ1aWx0LWluIGJyb3dzZXIgZ2xvYmFscyxcbiAgICAvLyBzbyB3ZSBjYW4ndCByZXNvbHZlIGEgY29uc3RydWN0b3IgZnJvbSBnbG9iYWxUaGlzLiBUaGUgd2ViIG8xMXkgVUlcbiAgICAvLyBkb2Vzbid0IG5lZWQgYGluc3RhbmNlb2YgRmF0YWxFcnJvcmAgdG8gcGFzcyAobm8gdXNlciBjb2RlIHJ1bnNcbiAgICAvLyBoZXJlKSDigJQgaXQganVzdCBuZWVkcyBgbmFtZWAsIGBtZXNzYWdlYCwgYHN0YWNrYCwgYW5kIGFueSBleHRyYVxuICAgIC8vIGVudW1lcmFibGUgZmllbGRzIHRvIHJlbmRlci4gQ29uc3RydWN0IGEgcGxhaW4gYEVycm9yYCB3aXRoIGBuYW1lYFxuICAgIC8vIHNldDsgT2JqZWN0SW5zcGVjdG9yIHJlYWRzIGBjb25zdHJ1Y3Rvci5uYW1lYCBmb3IgdGhlIGRpc3BsYXllZFxuICAgIC8vIGNsYXNzIGxhYmVsLCBidXQgd2UgZG9uJ3QgaGF2ZSB0aGUgcmVhbCBjbGFzcywgc28gd2UgZW1pdCBhIHRhZ2dlZFxuICAgIC8vIEVycm9yIHdob3NlIGBuYW1lYCBmaWVsZCBjYXJyaWVzIHRoZSBjbGFzcyBpZGVudGl0eS4gVGhpcyBtYXRjaGVzXG4gICAgLy8gaG93IHRoZSBleGlzdGluZyBiYXNlIGBFcnJvcmAgcmV2aXZlciBwcmVzZW50cyB1bmtub3duIHN1YmNsYXNzZXMuXG4gICAgRmF0YWxFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0gJ2NhdXNlJyBpbiB2YWx1ZSA/IHsgY2F1c2U6IHZhbHVlLmNhdXNlIH0gOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcih2YWx1ZS5tZXNzYWdlLCBvcHRzKTtcbiAgICAgIGVycm9yLm5hbWUgPSAnRmF0YWxFcnJvcic7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIFJldHJ5YWJsZUVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKHZhbHVlLm1lc3NhZ2UsIG9wdHMpIGFzIEVycm9yICYge1xuICAgICAgICByZXRyeUFmdGVyPzogRGF0ZTtcbiAgICAgIH07XG4gICAgICBlcnJvci5uYW1lID0gJ1JldHJ5YWJsZUVycm9yJztcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgLy8gYHJldHJ5QWZ0ZXJgIGlzIHNlcmlhbGl6ZWQgYXMgYW4gZXBvY2ggbXMgbnVtYmVyIChzZWUgdGhlIHJ1bnRpbWVcbiAgICAgIC8vIFJldHJ5YWJsZUVycm9yIHJlZHVjZXIgZm9yIHRoZSByYXRpb25hbGUgYXJvdW5kIHJlYWxtLXNhZmV0eSkuXG4gICAgICAvLyBSZWh5ZHJhdGUgYXMgYSBEYXRlIHNvIG8xMXkgY29uc3VtZXJzIGNhbiByZW5kZXIgaXQgZGlyZWN0bHkuXG4gICAgICAvLyBHdWFyZCBhZ2FpbnN0IHBheWxvYWRzIGZyb20gb2xkZXIgcnVudGltZSB2ZXJzaW9ucyB0aGF0IHByZWRhdGVcbiAgICAgIC8vIHRoZSBmaWVsZCDigJQgd2l0aG91dCB0aGlzIGNoZWNrLCBgbmV3IERhdGUodW5kZWZpbmVkKWAgd291bGRcbiAgICAgIC8vIHByb2R1Y2UgYW4gSW52YWxpZCBEYXRlIHJhdGhlciB0aGFuIG9taXR0aW5nIHRoZSBwcm9wZXJ0eS5cbiAgICAgIGlmICh2YWx1ZS5yZXRyeUFmdGVyICE9IG51bGwpIHtcbiAgICAgICAgZXJyb3IucmV0cnlBZnRlciA9IG5ldyBEYXRlKHZhbHVlLnJldHJ5QWZ0ZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgRE9NRXhjZXB0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIE1vZGVybiBicm93c2VycyBhbmQgTm9kZSAxOCsgZXhwb3NlIGBET01FeGNlcHRpb25gIG9uIGdsb2JhbFRoaXMuXG4gICAgICAvLyBgQWJvcnRDb250cm9sbGVyLmFib3J0KClgIHdpdGggbm8gYXJndW1lbnQgc3ludGhlc2l6ZXMgb25lIGFzIHRoZVxuICAgICAgLy8gc2lnbmFsJ3MgcmVhc29uLCBzbyB0aGlzIGlzIGEgY29tbW9uIHBheWxvYWQgZm9yIGFueSBhYm9ydGVkIHN0ZXAuXG4gICAgICBjb25zdCBHID0gZ2xvYmFsVGhpcyBhcyB7IERPTUV4Y2VwdGlvbj86IHR5cGVvZiBET01FeGNlcHRpb24gfTtcbiAgICAgIGlmICh0eXBlb2YgRy5ET01FeGNlcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgZSA9IG5ldyBHLkRPTUV4Y2VwdGlvbih2YWx1ZS5tZXNzYWdlLCB2YWx1ZS5uYW1lKTtcbiAgICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGUuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIChlIGFzIHsgY2F1c2U/OiB1bmtub3duIH0pLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfVxuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IodmFsdWUubWVzc2FnZSk7XG4gICAgICBlcnJvci5uYW1lID0gdmFsdWUubmFtZTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIHtcbiAgICAgICAgKGVycm9yIGFzIEVycm9yICYgeyBjYXVzZT86IHVua25vd24gfSkuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIEZsb2F0MzJBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IG5ldyBGbG9hdDMyQXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpKSxcbiAgICBGbG9hdDY0QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PiBuZXcgRmxvYXQ2NEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKSksXG4gICAgSW50OEFycmF5OiAodmFsdWU6IHN0cmluZykgPT4gbmV3IEludDhBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSkpLFxuICAgIEludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PiBuZXcgSW50MTZBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSkpLFxuICAgIEludDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PiBuZXcgSW50MzJBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSkpLFxuICAgIE1hcDogKHZhbHVlKSA9PiBuZXcgTWFwKHZhbHVlKSxcbiAgICBSZWdFeHA6ICh2YWx1ZSkgPT4gbmV3IFJlZ0V4cCh2YWx1ZS5zb3VyY2UsIHZhbHVlLmZsYWdzKSxcbiAgICBTZXQ6ICh2YWx1ZSkgPT4gbmV3IFNldCh2YWx1ZSksXG4gICAgVWludDhBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IG5ldyBVaW50OEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKSksXG4gICAgVWludDhDbGFtcGVkQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlKSksXG4gICAgVWludDE2QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PiBuZXcgVWludDE2QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUpKSxcbiAgICBVaW50MzJBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+IG5ldyBVaW50MzJBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSkpLFxuXG4gICAgSGVhZGVyczogKHZhbHVlKSA9PiBuZXcgSGVhZGVycyh2YWx1ZSksXG4gICAgUmVxdWVzdDogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgICAgIGNvbnN0IGN0b3IgPSB7IFJlcXVlc3Q6IGZ1bmN0aW9uICgpIHt9IH0uUmVxdWVzdCE7XG4gICAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKGN0b3IucHJvdG90eXBlKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCB7XG4gICAgICAgIG1ldGhvZDogdmFsdWUubWV0aG9kLFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnModmFsdWUuaGVhZGVycyksXG4gICAgICAgIGJvZHk6IHZhbHVlLmJvZHksXG4gICAgICAgIGR1cGxleDogdmFsdWUuZHVwbGV4LFxuICAgICAgICAuLi4odmFsdWUucmVzcG9uc2VXcml0YWJsZVxuICAgICAgICAgID8geyByZXNwb25zZVdyaXRhYmxlOiB2YWx1ZS5yZXNwb25zZVdyaXRhYmxlIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIFJlc3BvbnNlOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvdXNlQXJyb3dGdW5jdGlvbjogYXJyb3cgZnVuY3Rpb25zIGhhdmUgbm8gLnByb3RvdHlwZVxuICAgICAgY29uc3QgY3RvciA9IHsgUmVzcG9uc2U6IGZ1bmN0aW9uICgpIHt9IH0uUmVzcG9uc2UhO1xuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShjdG9yLnByb3RvdHlwZSk7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICBzdGF0dXM6IHZhbHVlLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogdmFsdWUuc3RhdHVzVGV4dCxcbiAgICAgICAgdXJsOiB2YWx1ZS51cmwsXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHZhbHVlLmhlYWRlcnMpLFxuICAgICAgICBib2R5OiB2YWx1ZS5ib2R5LFxuICAgICAgICByZWRpcmVjdGVkOiB2YWx1ZS5yZWRpcmVjdGVkLFxuICAgICAgICB0eXBlOiB2YWx1ZS50eXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgVVJMOiAodmFsdWUpID0+IG5ldyBVUkwodmFsdWUpLFxuICAgIFVSTFNlYXJjaFBhcmFtczogKHZhbHVlKSA9PiBuZXcgVVJMU2VhcmNoUGFyYW1zKHZhbHVlID09PSAnLicgPyAnJyA6IHZhbHVlKSxcblxuICAgIC8vIFdlYi1zcGVjaWZpYyBvdmVycmlkZXMgZm9yIGNsYXNzIGluc3RhbmNlcy5cbiAgICAvLyBDcmVhdGUgb2JqZWN0cyB3aXRoIGEgZHluYW1pY2FsbHktbmFtZWQgY29uc3RydWN0b3Igc28gdGhhdFxuICAgIC8vIHJlYWN0LWluc3BlY3RvciBzaG93cyB0aGUgY2xhc3MgbmFtZSAoaXQgcmVhZHMgY29uc3RydWN0b3IubmFtZSkuXG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4gYDxjbGFzczoke2V4dHJhY3RDbGFzc05hbWUodmFsdWUuY2xhc3NJZCl9PmAsXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gUnVuIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgYXMgY2xpY2thYmxlIFJ1blJlZiBiYWRnZXNcbiAgICAgIGNvbnN0IHJ1blJlZiA9IHNlcmlhbGl6ZWRJbnN0YW5jZVRvUmVmKHZhbHVlKTtcbiAgICAgIGlmIChpc1J1blJlZihydW5SZWYpKSB7XG4gICAgICAgIHJldHVybiBydW5SZWY7XG4gICAgICB9XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpO1xuICAgICAgY29uc3QgZGF0YSA9IHZhbHVlLmRhdGE7XG4gICAgICBjb25zdCBwcm9wcyA9XG4gICAgICAgIGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnID8geyAuLi5kYXRhIH0gOiB7IHZhbHVlOiBkYXRhIH07XG4gICAgICAvLyBDcmVhdGUgYSBjb25zdHJ1Y3RvciB3aXRoIHRoZSByaWdodCBuYW1lIHVzaW5nIGNvbXB1dGVkIHByb3BlcnR5XG4gICAgICAvLyBzbyByZWFjdC1pbnNwZWN0b3IncyBgb2JqZWN0LmNvbnN0cnVjdG9yLm5hbWVgIHNob3dzIHRoZSBjbGFzcyBuYW1lLlxuICAgICAgLy8gTXVzdCB1c2UgYGZ1bmN0aW9uYCAobm90IGFycm93KSBiZWNhdXNlIGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGUuXG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgICAgIGNvbnN0IGN0b3IgPSB7IFtjbGFzc05hbWVdOiBmdW5jdGlvbiAoKSB7fSB9W2NsYXNzTmFtZV0hO1xuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShjdG9yLnByb3RvdHlwZSk7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwgcHJvcHMpO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFByZS1idWlsdCB3ZWIgcmV2aXZlcnMgKGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxubGV0IGNhY2hlZFJldml2ZXJzOiBSZXZpdmVycyB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRSZXZpdmVycygpOiBSZXZpdmVycyB7XG4gIGlmICghY2FjaGVkUmV2aXZlcnMpIHtcbiAgICBjYWNoZWRSZXZpdmVycyA9IGdldFdlYlJldml2ZXJzKCk7XG4gIH1cbiAgcmV0dXJuIGNhY2hlZFJldml2ZXJzO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFB1YmxpYyBBUElcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEh5ZHJhdGUgdGhlIHNlcmlhbGl6ZWQgZGF0YSBmaWVsZHMgb2YgYSByZXNvdXJjZSBmb3Igd2ViIGRpc3BsYXkuXG4gKlxuICogVXNlcyBicm93c2VyLXNhZmUgcmV2aXZlcnMgKGF0b2IgZm9yIGJhc2U2NCwgQ2xhc3NJbnN0YW5jZVJlZiBmb3JcbiAqIGN1c3RvbSBjbGFzc2VzLCBTdHJlYW1SZWYgZm9yIHN0cmVhbXMpLiBDYWxsIHRoaXMgb24gZGF0YSByZWNlaXZlZFxuICogZnJvbSB0aGUgc2VydmVyIGJlZm9yZSBwYXNzaW5nIGl0IHRvIFVJIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlUmVzb3VyY2VJTzxUPihyZXNvdXJjZTogVCk6IFQge1xuICBjb25zdCBoeWRyYXRlZCA9IGh5ZHJhdGVSZXNvdXJjZUlPR2VuZXJpYyhcbiAgICByZXNvdXJjZSBhcyBhbnksXG4gICAgZ2V0UmV2aXZlcnMoKVxuICApIGFzIFQ7XG4gIHJldHVybiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhNYXJrZXJzKGh5ZHJhdGVkKTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbmNyeXB0ZWQgZGF0YSBkaXNwbGF5IG1hcmtlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgRU5DUllQVEVEX0RJU1BMQVlfTkFNRSA9ICdFbmNyeXB0ZWQnO1xuXG4vKipcbiAqIENyZWF0ZSBhIGRpc3BsYXktZnJpZW5kbHkgb2JqZWN0IGZvciBlbmNyeXB0ZWQgZGF0YS5cbiAqXG4gKiBVc2VzIHRoZSBzYW1lIG5hbWVkLWNvbnN0cnVjdG9yIHRyaWNrIGFzIHRoZSBJbnN0YW5jZSByZXZpdmVyIHNvIHRoYXRcbiAqIE9iamVjdEluc3BlY3RvciByZW5kZXJzIHRoZSBjb25zdHJ1Y3RvciBuYW1lIChcIvCflJIgRW5jcnlwdGVkXCIpIHdpdGggbm9cbiAqIGV4cGFuZGFibGUgY2hpbGRyZW4uIFRoZSBvcmlnaW5hbCBlbmNyeXB0ZWQgYnl0ZXMgYXJlIHN0b3JlZCBpbiBhXG4gKiBub24tZW51bWVyYWJsZSBwcm9wZXJ0eSBmb3IgbGF0ZXIgZGVjcnlwdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRW5jcnlwdGVkTWFya2VyKGRhdGE6IFVpbnQ4QXJyYXkpOiBvYmplY3Qge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgY29uc3QgY3RvciA9IHsgW0VOQ1JZUFRFRF9ESVNQTEFZX05BTUVdOiBmdW5jdGlvbiAoKSB7fSB9W1xuICAgIEVOQ1JZUFRFRF9ESVNQTEFZX05BTUVcbiAgXSE7XG4gIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAvLyBTdG9yZSBvcmlnaW5hbCBieXRlcyBmb3IgZGVjcnlwdGlvbiwgYnV0IG5vbi1lbnVtZXJhYmxlIHNvXG4gIC8vIE9iamVjdEluc3BlY3RvciBkb2Vzbid0IHNob3cgdGhlbSBhcyBjaGlsZHJlblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAnX19lbmNyeXB0ZWREYXRhJywge1xuICAgIHZhbHVlOiBkYXRhLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gIH0pO1xuICByZXR1cm4gb2JqO1xufVxuXG4vKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBlbmNyeXB0ZWQgZGlzcGxheSBtYXJrZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlLmNvbnN0cnVjdG9yPy5uYW1lID09PSBFTkNSWVBURURfRElTUExBWV9OQU1FXG4gICk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhwaXJlZCBkYXRhIGRpc3BsYXkgbWFya2Vyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBFWFBJUkVEX0RJU1BMQVlfTkFNRSA9ICdFeHBpcmVkIERhdGEnO1xuXG4vKipcbiAqIENyZWF0ZSBhIGRpc3BsYXktZnJpZW5kbHkgb2JqZWN0IGZvciBleHBpcmVkIGRhdGEuXG4gKlxuICogVXNlcyB0aGUgc2FtZSBuYW1lZC1jb25zdHJ1Y3RvciB0cmljayBhcyB0aGUgZW5jcnlwdGVkIG1hcmtlciBzbyB0aGF0XG4gKiBPYmplY3RJbnNwZWN0b3IgcmVuZGVycyB0aGUgY29uc3RydWN0b3IgbmFtZSAoXCJFeHBpcmVkIERhdGFcIikgd2l0aCBub1xuICogZXhwYW5kYWJsZSBjaGlsZHJlbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRXhwaXJlZE1hcmtlcigpOiBvYmplY3Qge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgY29uc3QgY3RvciA9IHsgW0VYUElSRURfRElTUExBWV9OQU1FXTogZnVuY3Rpb24gKCkge30gfVtcbiAgICBFWFBJUkVEX0RJU1BMQVlfTkFNRVxuICBdITtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xufVxuXG4vKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBleHBpcmVkIGRhdGEgZGlzcGxheSBtYXJrZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cGlyZWRNYXJrZXIodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZS5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gRVhQSVJFRF9ESVNQTEFZX05BTUVcbiAgKTtcbn1cblxuLyoqIFJlcGxhY2UgYSBzaW5nbGUgZmllbGQgdmFsdWUgd2l0aCBhIGRpc3BsYXkgbWFya2VyIGlmIGl0J3MgZW5jcnlwdGVkIG9yIGV4cGlyZWQuICovXG5mdW5jdGlvbiB0b0Rpc3BsYXlNYXJrZXIodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKGlzRW5jcnlwdGVkRGF0YSh2YWx1ZSkpIHJldHVybiBjcmVhdGVFbmNyeXB0ZWRNYXJrZXIodmFsdWUgYXMgVWludDhBcnJheSk7XG4gIGlmIChpc0V4cGlyZWRTdHViKHZhbHVlKSkgcmV0dXJuIGNyZWF0ZUV4cGlyZWRNYXJrZXIoKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFBvc3QtcHJvY2VzcyBoeWRyYXRlZCByZXNvdXJjZSBkYXRhOiByZXBsYWNlIGVuY3J5cHRlZCBVaW50OEFycmF5IHZhbHVlc1xuICogYW5kIGV4cGlyZWQgc3R1YnMgd2l0aCBkaXNwbGF5LWZyaWVuZGx5IG1hcmtlciBvYmplY3RzIGluIGtub3duIGRhdGEgZmllbGRzLlxuICovXG5mdW5jdGlvbiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhNYXJrZXJzPFQ+KHJlc291cmNlOiBUKTogVCB7XG4gIGlmICghcmVzb3VyY2UgfHwgdHlwZW9mIHJlc291cmNlICE9PSAnb2JqZWN0JykgcmV0dXJuIHJlc291cmNlO1xuICBjb25zdCByID0gcmVzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uciB9O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIFsnaW5wdXQnLCAnb3V0cHV0JywgJ21ldGFkYXRhJywgJ2Vycm9yJ10pIHtcbiAgICByZXN1bHRba2V5XSA9IHRvRGlzcGxheU1hcmtlcihyZXN1bHRba2V5XSk7XG4gIH1cblxuICBpZiAocmVzdWx0LmV2ZW50RGF0YSAmJiB0eXBlb2YgcmVzdWx0LmV2ZW50RGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBldmVudFR5cGUgPVxuICAgICAgdHlwZW9mIHJlc3VsdC5ldmVudFR5cGUgPT09ICdzdHJpbmcnID8gcmVzdWx0LmV2ZW50VHlwZSA6ICcnO1xuICAgIGNvbnN0IHJlZktleXMgPSBFVkVOVF9EQVRBX1JFRl9GSUVMRFNbZXZlbnRUeXBlXSA/PyBbXTtcbiAgICBjb25zdCBlZCA9IHsgLi4uKHJlc3VsdC5ldmVudERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG4gICAgZm9yIChjb25zdCBrZXkgb2YgcmVmS2V5cykge1xuICAgICAgaWYgKGtleSBpbiBlZCkge1xuICAgICAgICBlZFtrZXldID0gdG9EaXNwbGF5TWFya2VyKGVkW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuZXZlbnREYXRhID0gZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSByZXNvdXJjZSBkYXRhIHdpdGggZGVjcnlwdGlvbiBzdXBwb3J0LlxuICpcbiAqIFdoZW4gYSBrZXkgaXMgcHJvdmlkZWQsIGVuY3J5cHRlZCBmaWVsZHMgYXJlIGRlY3J5cHRlZCBiZWZvcmUgaHlkcmF0aW9uLlxuICogVGhpcyBpcyB0aGUgYXN5bmMgdmVyc2lvbiB1c2VkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIFwiRGVjcnlwdFwiIGluIHRoZSB3ZWIgVUkuXG4gKlxuICogSGFuZGxlcyBib3RoIHRvcC1sZXZlbCBmaWVsZHMgKGlucHV0LCBvdXRwdXQsIG1ldGFkYXRhKSBhbmQgbmVzdGVkXG4gKiBldmVudERhdGEgc3ViZmllbGRzIHBlciBgRVZFTlRfREFUQV9SRUZfRklFTERTYCBmcm9tIGBAd29ya2Zsb3cvd29ybGRgIGZvciB0aGF0IGV2ZW50IHR5cGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoeWRyYXRlUmVzb3VyY2VJT1dpdGhLZXk8VD4oXG4gIHJlc291cmNlOiBULFxuICBrZXk6IFVpbnQ4QXJyYXlcbik6IFByb21pc2U8VD4ge1xuICBjb25zdCB7IGh5ZHJhdGVEYXRhV2l0aEtleSB9ID0gYXdhaXQgaW1wb3J0KFxuICAgICdAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uLWZvcm1hdCdcbiAgKTtcbiAgY29uc3QgeyBpbXBvcnRLZXkgfSA9IGF3YWl0IGltcG9ydCgnQHdvcmtmbG93L2NvcmUvZW5jcnlwdGlvbicpO1xuICBjb25zdCBjcnlwdG9LZXkgPSBhd2FpdCBpbXBvcnRLZXkoa2V5KTtcbiAgY29uc3QgcmV2aXZlcnMgPSBnZXRSZXZpdmVycygpO1xuXG4gIC8qKiBFeHRyYWN0IG9yaWdpbmFsIGVuY3J5cHRlZCBieXRlcyBmcm9tIGEgbWFya2VyIG9yIHJhdyBVaW50OEFycmF5LCB0aGVuIGRlY3J5cHQgKyBoeWRyYXRlICovXG4gIGFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRGaWVsZChcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICByZXY6IFJldml2ZXJzLFxuICAgIGs6IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgaW1wb3J0S2V5Pj5cbiAgKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgLy8gQWxyZWFkeS1oeWRyYXRlZDogZW5jcnlwdGVkIG1hcmtlciB3aXRoIHN0b3JlZCBieXRlc1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHJhdyA9ICh2YWx1ZSBhcyBhbnkpLl9fZW5jcnlwdGVkRGF0YSBhcyBVaW50OEFycmF5O1xuICAgICAgcmV0dXJuIGh5ZHJhdGVEYXRhV2l0aEtleShyYXcsIHJldiwgayk7XG4gICAgfVxuICAgIC8vIFJhdyBlbmNyeXB0ZWQgVWludDhBcnJheSAobm90IHlldCBoeWRyYXRlZClcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICByZXR1cm4gaHlkcmF0ZURhdGFXaXRoS2V5KHZhbHVlLCByZXYsIGspO1xuICAgIH1cbiAgICAvLyBOb3QgZW5jcnlwdGVkIOKAlCByZXR1cm4gYXMtaXNcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBjb25zdCByID0gcmVzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uciB9O1xuXG4gIC8vIERlY3J5cHQgKyBoeWRyYXRlIHRvcC1sZXZlbCBzZXJpYWxpemVkIGZpZWxkcyAocnVucywgc3RlcHMsIGhvb2tzKVxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIFsnaW5wdXQnLCAnb3V0cHV0JywgJ21ldGFkYXRhJywgJ2Vycm9yJ10pIHtcbiAgICBpZiAoZmllbGQgaW4gcmVzdWx0KSB7XG4gICAgICByZXN1bHRbZmllbGRdID0gYXdhaXQgZGVjcnlwdEZpZWxkKHJlc3VsdFtmaWVsZF0sIHJldml2ZXJzLCBjcnlwdG9LZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlY3J5cHQgKyBoeWRyYXRlIGV2ZW50RGF0YSBzdWJmaWVsZHMgKGV2ZW50cylcbiAgaWYgKHJlc3VsdC5ldmVudERhdGEgJiYgdHlwZW9mIHJlc3VsdC5ldmVudERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgZXZlbnRUeXBlID1cbiAgICAgIHR5cGVvZiByZXN1bHQuZXZlbnRUeXBlID09PSAnc3RyaW5nJyA/IHJlc3VsdC5ldmVudFR5cGUgOiAnJztcbiAgICBjb25zdCByZWZLZXlzID0gRVZFTlRfREFUQV9SRUZfRklFTERTW2V2ZW50VHlwZV0gPz8gW107XG4gICAgY29uc3QgZXZlbnREYXRhID0geyAuLi4ocmVzdWx0LmV2ZW50RGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHJlZktleXMpIHtcbiAgICAgIGlmIChmaWVsZCBpbiBldmVudERhdGEpIHtcbiAgICAgICAgZXZlbnREYXRhW2ZpZWxkXSA9IGF3YWl0IGRlY3J5cHRGaWVsZChcbiAgICAgICAgICBldmVudERhdGFbZmllbGRdLFxuICAgICAgICAgIHJldml2ZXJzLFxuICAgICAgICAgIGNyeXB0b0tleVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQuZXZlbnREYXRhID0gZXZlbnREYXRhO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBUO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBoeWRyYXRlZCByZXNvdXJjZSAoZXZlbnQsIHN0ZXAsIHJ1biwgZXRjLikgY29udGFpbnMgYW55XG4gKiBlbmNyeXB0ZWQgZGlzcGxheSBtYXJrZXJzLiBJbnNwZWN0cyB0aGUgc3RhbmRhcmQgdG9wLWxldmVsIGZpZWxkc1xuICogKGBpbnB1dGAsIGBvdXRwdXRgLCBgZXJyb3JgLCBgbWV0YWRhdGFgKSBhcyB3ZWxsIGFzIHRoZSBldmVudC10eXBlLXNwZWNpZmljXG4gKiBgZXZlbnREYXRhYCByZWYgZmllbGRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzRW5jcnlwdGVkRmllbGRzKHJlc291cmNlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghcmVzb3VyY2UgfHwgdHlwZW9mIHJlc291cmNlICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByID0gcmVzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydpbnB1dCcsICdvdXRwdXQnLCAnbWV0YWRhdGEnLCAnZXJyb3InXSkge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcihyW2tleV0pKSByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChyLmV2ZW50RGF0YSAmJiB0eXBlb2Ygci5ldmVudERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgZXZlbnRUeXBlID0gdHlwZW9mIHIuZXZlbnRUeXBlID09PSAnc3RyaW5nJyA/IHIuZXZlbnRUeXBlIDogJyc7XG4gICAgY29uc3QgcmVmS2V5cyA9IEVWRU5UX0RBVEFfUkVGX0ZJRUxEU1tldmVudFR5cGVdID8/IFtdO1xuICAgIGNvbnN0IGVkID0gci5ldmVudERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZm9yIChjb25zdCBrZXkgb2YgcmVmS2V5cykge1xuICAgICAgaWYgKGtleSBpbiBlZCAmJiBpc0VuY3J5cHRlZE1hcmtlcihlZFtrZXldKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface DecodedStreamChunkSource {
|
|
2
|
+
type: string;
|
|
3
|
+
encoding: 'utf-8';
|
|
4
|
+
rawSummary: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FormattedStreamChunkDisplay {
|
|
7
|
+
text: string;
|
|
8
|
+
decodedFrom?: DecodedStreamChunkSource;
|
|
9
|
+
}
|
|
10
|
+
export declare function summarizeArrayBufferView(value: ArrayBufferView): string;
|
|
11
|
+
/**
|
|
12
|
+
* Decode a typed array as UTF-8 text when valid, otherwise return a compact
|
|
13
|
+
* raw-byte summary. Used by `DataInspector`'s `collapseRefs` pipeline so
|
|
14
|
+
* hydrated `Uint8Array` chunks (e.g. AI SDK text deltas) render as readable
|
|
15
|
+
* text while still exposing the underlying byte layout.
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatArrayBufferViewForDisplay(value: ArrayBufferView): FormattedStreamChunkDisplay;
|
|
18
|
+
//# sourceMappingURL=stream-display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-display.d.ts","sourceRoot":"","sources":["../../src/lib/stream-display.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,wBAAwB,CAAC;CACxC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAYvE;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,eAAe,GACrB,2BAA2B,CAc7B"}
|