@memberjunction/react-test-harness 2.74.0 → 2.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,8 +15,8 @@ class ComponentRunner {
15
15
  /**
16
16
  * Lint component code before execution
17
17
  */
18
- async lintComponent(componentCode, componentName, componentType) {
19
- const lintResult = await component_linter_1.ComponentLinter.lintComponent(componentCode, componentType, componentName);
18
+ async lintComponent(componentCode, componentName, componentSpec) {
19
+ const lintResult = await component_linter_1.ComponentLinter.lintComponent(componentCode, componentName, componentSpec);
20
20
  const violations = lintResult.violations.map(v => v.message);
21
21
  const hasErrors = lintResult.violations.some(v => v.severity === 'error');
22
22
  return {
@@ -47,6 +47,12 @@ class ComponentRunner {
47
47
  const renderSuccess = await this.waitForRender(page, options, errors);
48
48
  // Get render count
49
49
  renderCount = await this.getRenderCount(page);
50
+ // Collect runtime errors
51
+ const runtimeErrors = await this.collectRuntimeErrors(page);
52
+ errors.push(...runtimeErrors);
53
+ // Perform deep render validation
54
+ const deepRenderErrors = await this.validateDeepRender(page);
55
+ errors.push(...deepRenderErrors);
50
56
  // Get the rendered HTML
51
57
  const html = await this.browserManager.getContent();
52
58
  // Take screenshot if needed
@@ -84,35 +90,57 @@ class ComponentRunner {
84
90
  createHTMLTemplate(options) {
85
91
  const propsJson = JSON.stringify(options.props || {});
86
92
  const specJson = JSON.stringify(options.componentSpec);
87
- // Generate script tags for core libraries
88
- const coreLibraryScripts = (0, react_runtime_1.getCoreLibraryUrls)()
89
- .map(url => ` <script src="${url}"></script>`)
93
+ // Set configuration if provided
94
+ if (options.libraryConfiguration) {
95
+ react_runtime_1.StandardLibraryManager.setConfiguration(options.libraryConfiguration);
96
+ }
97
+ // Get all enabled libraries from configuration
98
+ const enabledLibraries = react_runtime_1.StandardLibraryManager.getEnabledLibraries();
99
+ // Separate runtime and component libraries
100
+ const runtimeLibraries = enabledLibraries.filter((lib) => lib.category === 'runtime');
101
+ const componentLibraries = enabledLibraries.filter((lib) => lib.category !== 'runtime');
102
+ // Generate script tags for runtime libraries
103
+ const runtimeScripts = runtimeLibraries
104
+ .map((lib) => ` <script crossorigin src="${lib.cdnUrl}"></script>`)
90
105
  .join('\n');
91
- // Generate script tags for UI libraries
92
- const uiLibraryScripts = (0, react_runtime_1.getUILibraryUrls)()
93
- .map(url => ` <script src="${url}"></script>`)
106
+ // Generate script tags for component libraries
107
+ const componentScripts = componentLibraries
108
+ .map((lib) => ` <script src="${lib.cdnUrl}"></script>`)
94
109
  .join('\n');
95
110
  // Generate CSS links
96
- const cssLinks = (0, react_runtime_1.getCSSUrls)()
97
- .map(url => ` <link rel="stylesheet" href="${url}">`)
111
+ const cssLinks = enabledLibraries
112
+ .filter((lib) => lib.cdnCssUrl)
113
+ .map((lib) => ` <link rel="stylesheet" href="${lib.cdnCssUrl}">`)
98
114
  .join('\n');
115
+ // Include the ComponentCompiler class definition
116
+ const componentCompilerCode = this.getComponentCompilerCode();
99
117
  return `
100
118
  <!DOCTYPE html>
101
119
  <html>
102
120
  <head>
103
121
  <meta charset="utf-8">
104
122
  <title>React Component Test</title>
105
- <script crossorigin src="${react_runtime_1.STANDARD_LIBRARY_URLS.REACT}"></script>
106
- <script crossorigin src="${react_runtime_1.STANDARD_LIBRARY_URLS.REACT_DOM}"></script>
107
- <script src="${react_runtime_1.STANDARD_LIBRARY_URLS.BABEL}"></script>
108
- ${coreLibraryScripts}
109
- ${uiLibraryScripts}
123
+ ${runtimeScripts}
124
+ ${componentScripts}
110
125
  ${cssLinks}
111
126
  <style>
112
127
  body { margin: 0; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
113
128
  #root { min-height: 100vh; }
114
129
  </style>
115
130
  <script>
131
+ // Initialize error tracking
132
+ window.__testHarnessRuntimeErrors = [];
133
+
134
+ // Global error handler
135
+ window.addEventListener('error', (event) => {
136
+ console.error('Runtime error:', event.error);
137
+ window.__testHarnessRuntimeErrors.push({
138
+ message: event.error.message,
139
+ stack: event.error.stack,
140
+ type: 'runtime'
141
+ });
142
+ });
143
+
116
144
  // Render tracking injection
117
145
  (function() {
118
146
  let renderCounter = 0;
@@ -149,114 +177,31 @@ ${cssLinks}
149
177
  <script type="text/babel">
150
178
  ${options.setupCode || ''}
151
179
 
152
- // Create runtime context
180
+ // Create runtime context with dynamic libraries
181
+ const componentLibraries = ${JSON.stringify(componentLibraries.map((lib) => ({
182
+ globalVariable: lib.globalVariable,
183
+ displayName: lib.displayName
184
+ })))};
185
+
186
+ const libraries = {};
187
+ componentLibraries.forEach(lib => {
188
+ if (window[lib.globalVariable]) {
189
+ libraries[lib.globalVariable] = window[lib.globalVariable];
190
+ }
191
+ });
192
+
153
193
  const runtimeContext = {
154
194
  React: React,
155
195
  ReactDOM: ReactDOM,
156
- libraries: {
157
- _: window._,
158
- d3: window.d3,
159
- Chart: window.Chart,
160
- dayjs: window.dayjs,
161
- antd: window.antd,
162
- ReactBootstrap: window.ReactBootstrap
163
- }
196
+ libraries: libraries
164
197
  };
165
198
 
166
- // Create component compiler
167
- class SimpleCompiler {
168
- constructor() {
169
- this.cache = new Map();
170
- }
171
-
172
- async compile(options) {
173
- const componentName = options.componentName;
174
- const componentCode = options.componentCode;
175
-
176
- try {
177
- // Transform JSX to JS using Babel
178
- const transformed = Babel.transform(componentCode, {
179
- presets: ['react'],
180
- filename: componentName + '.jsx'
181
- });
182
-
183
- // Create component factory
184
- const createComponent = new Function(
185
- 'React', 'ReactDOM', 'useState', 'useEffect', 'useCallback',
186
- 'createStateUpdater', 'libraries', 'styles', 'console',
187
- \`
188
- // Make libraries available in the component scope
189
- const _ = libraries._;
190
- const d3 = libraries.d3;
191
- const Chart = libraries.Chart;
192
- const dayjs = libraries.dayjs;
193
- const antd = libraries.antd;
194
- const ReactBootstrap = libraries.ReactBootstrap;
195
-
196
- \${transformed.code}
197
- return {
198
- component: \${componentName},
199
- print: function() { window.print(); },
200
- refresh: function(data) { }
201
- };
202
- \`
203
- );
204
-
205
- const componentFactory = (context, styles = {}) => {
206
- const { React, ReactDOM, libraries = {} } = context;
207
- const createStateUpdater = (statePath, parentStateUpdater) => {
208
- return (componentStateUpdate) => {
209
- if (!statePath) {
210
- parentStateUpdater(componentStateUpdate);
211
- } else {
212
- const pathParts = statePath.split('.');
213
- const componentKey = pathParts[pathParts.length - 1];
214
- parentStateUpdater({ [componentKey]: componentStateUpdate });
215
- }
216
- };
217
- };
218
-
219
- return createComponent(
220
- React,
221
- ReactDOM,
222
- React.useState,
223
- React.useEffect,
224
- React.useCallback,
225
- createStateUpdater,
226
- libraries,
227
- styles,
228
- console
229
- );
230
- };
231
-
232
- return {
233
- success: true,
234
- component: {
235
- component: componentFactory,
236
- id: componentName + '_' + Date.now(),
237
- name: componentName,
238
- compiledAt: new Date(),
239
- warnings: []
240
- },
241
- duration: 0
242
- };
243
- } catch (error) {
244
- return {
245
- success: false,
246
- error: {
247
- message: error.message,
248
- componentName: componentName,
249
- phase: 'compilation'
250
- },
251
- duration: 0
252
- };
253
- }
254
- }
255
-
256
- setBabelInstance(babel) {
257
- // Already have access to Babel global
258
- }
259
- }
199
+ // Import the ComponentCompiler implementation
200
+ ${componentCompilerCode}
201
+
202
+ // Create component compiler instance
203
+ const compiler = new ComponentCompiler();
204
+ compiler.setBabelInstance(Babel);
260
205
 
261
206
  // Create component registry
262
207
  class SimpleRegistry {
@@ -287,8 +232,7 @@ ${cssLinks}
287
232
  }
288
233
  }
289
234
 
290
- // Create instances
291
- const compiler = new SimpleCompiler();
235
+ // Create registry instance
292
236
  const registry = new SimpleRegistry();
293
237
 
294
238
  // Create hierarchy registrar
@@ -307,25 +251,25 @@ ${cssLinks}
307
251
  // Register components recursively
308
252
  const registerSpec = async (spec) => {
309
253
  // Register children first
310
- const children = spec.childComponents || spec.components || [];
254
+ const children = spec.dependencies || [];
311
255
  for (const child of children) {
312
256
  await registerSpec(child);
313
257
  }
314
258
 
315
259
  // Register this component
316
- if (spec.componentCode) {
260
+ if (spec.code) {
317
261
  const result = await this.compiler.compile({
318
- componentName: spec.componentName,
319
- componentCode: spec.componentCode
262
+ componentName: spec.name,
263
+ componentCode: spec.code
320
264
  });
321
265
 
322
266
  if (result.success) {
323
267
  const factory = result.component.component(this.runtimeContext, {});
324
- this.registry.register(spec.componentName, factory.component);
325
- registeredComponents.push(spec.componentName);
268
+ this.registry.register(spec.name, factory.component);
269
+ registeredComponents.push(spec.name);
326
270
  } else {
327
271
  errors.push({
328
- componentName: spec.componentName,
272
+ componentName: spec.name,
329
273
  error: result.error.message,
330
274
  phase: 'compilation'
331
275
  });
@@ -466,6 +410,38 @@ ${cssLinks}
466
410
  overflow: 'auto'
467
411
  });
468
412
 
413
+ // React Error Boundary component
414
+ const ErrorBoundary = class extends React.Component {
415
+ constructor(props) {
416
+ super(props);
417
+ this.state = { hasError: false, error: null };
418
+ }
419
+
420
+ static getDerivedStateFromError(error) {
421
+ return { hasError: true, error };
422
+ }
423
+
424
+ componentDidCatch(error, errorInfo) {
425
+ console.error('React Error Boundary caught:', error, errorInfo);
426
+ window.__testHarnessRuntimeErrors = window.__testHarnessRuntimeErrors || [];
427
+ window.__testHarnessRuntimeErrors.push({
428
+ message: error.message,
429
+ stack: error.stack,
430
+ componentStack: errorInfo.componentStack,
431
+ type: 'react'
432
+ });
433
+ }
434
+
435
+ render() {
436
+ if (this.state.hasError) {
437
+ return React.createElement('div', { style: { color: 'red', padding: '20px' } },
438
+ 'Component Error: ' + this.state.error.message
439
+ );
440
+ }
441
+ return this.props.children;
442
+ }
443
+ };
444
+
469
445
  // Load component spec and register hierarchy
470
446
  const componentSpec = ${specJson};
471
447
  const props = ${propsJson};
@@ -483,24 +459,45 @@ ${cssLinks}
483
459
  const components = registry.getAll();
484
460
 
485
461
  // Get the root component
486
- const RootComponent = registry.get(componentSpec.componentName);
462
+ const RootComponent = registry.get(componentSpec.name);
487
463
 
488
464
  if (!RootComponent) {
489
- console.error('Root component not found:', componentSpec.componentName);
465
+ console.error('Root component not found:', componentSpec.name);
490
466
  return;
491
467
  }
492
468
 
493
- // Add components, utilities, and styles to props
494
- const enhancedProps = {
495
- ...props,
496
- components: components,
497
- utilities: BuildUtilities(),
498
- styles: SetupStyles()
499
- };
469
+ // Simple in-memory storage for user settings
470
+ let savedUserSettings = {};
500
471
 
501
- // Render the root component
472
+ // Create root for rendering
502
473
  const root = ReactDOM.createRoot(document.getElementById('root'));
503
- root.render(React.createElement(RootComponent, enhancedProps));
474
+
475
+ // Function to render with current settings
476
+ const renderWithSettings = () => {
477
+ const enhancedProps = {
478
+ ...props,
479
+ components: components,
480
+ utilities: BuildUtilities(),
481
+ styles: SetupStyles(),
482
+ savedUserSettings: savedUserSettings,
483
+ onSaveUserSettings: (newSettings) => {
484
+ console.log('User settings saved:', newSettings);
485
+ // Update in-memory storage
486
+ savedUserSettings = { ...newSettings };
487
+ // Re-render with new settings
488
+ renderWithSettings();
489
+ }
490
+ };
491
+
492
+ root.render(
493
+ React.createElement(ErrorBoundary, null,
494
+ React.createElement(RootComponent, enhancedProps)
495
+ )
496
+ );
497
+ };
498
+
499
+ // Initial render
500
+ renderWithSettings();
504
501
  })();
505
502
  </script>
506
503
  </body>
@@ -555,6 +552,7 @@ ${cssLinks}
555
552
  */
556
553
  async waitForRender(page, options, errors) {
557
554
  const timeout = options.timeout || 10000; // 10 seconds default
555
+ const renderWaitTime = options.renderWaitTime || 1000; // Default 1000ms
558
556
  try {
559
557
  if (options.waitForSelector) {
560
558
  await this.browserManager.waitForSelector(options.waitForSelector, { timeout });
@@ -563,8 +561,21 @@ ${cssLinks}
563
561
  await this.browserManager.waitForLoadState(options.waitForLoadState);
564
562
  }
565
563
  else {
566
- // Default wait for React to finish rendering
567
- await page.waitForTimeout(100);
564
+ // Wait for React to finish rendering with configurable time
565
+ await page.waitForTimeout(renderWaitTime);
566
+ // Force React to flush all updates
567
+ await page.evaluate(() => {
568
+ if (window.React && window.React.flushSync) {
569
+ try {
570
+ window.React.flushSync(() => { });
571
+ }
572
+ catch (e) {
573
+ console.error('flushSync error:', e);
574
+ }
575
+ }
576
+ });
577
+ // Additional small wait after flush to ensure DOM updates
578
+ await page.waitForTimeout(50);
568
579
  }
569
580
  return true;
570
581
  }
@@ -579,6 +590,66 @@ ${cssLinks}
579
590
  async getRenderCount(page) {
580
591
  return await page.evaluate(() => window.__testHarnessRenderCount || 0);
581
592
  }
593
+ /**
594
+ * Collects runtime errors that were caught during component execution
595
+ */
596
+ async collectRuntimeErrors(page) {
597
+ const runtimeErrors = await page.evaluate(() => {
598
+ return window.__testHarnessRuntimeErrors || [];
599
+ });
600
+ const errors = [];
601
+ runtimeErrors.forEach((error) => {
602
+ errors.push(`${error.type} error: ${error.message}`);
603
+ if (error.componentStack) {
604
+ errors.push(`Component stack: ${error.componentStack}`);
605
+ }
606
+ });
607
+ return errors;
608
+ }
609
+ /**
610
+ * Performs deep render validation to catch errors that might be in the DOM
611
+ */
612
+ async validateDeepRender(page) {
613
+ const errors = [];
614
+ try {
615
+ // Execute a full render cycle by forcing a state update
616
+ await page.evaluate(() => {
617
+ // Force React to complete all pending updates
618
+ if (window.React && window.React.flushSync) {
619
+ window.React.flushSync(() => { });
620
+ }
621
+ });
622
+ // Check for render errors in the component tree
623
+ const renderErrors = await page.evaluate(() => {
624
+ const errors = [];
625
+ // Walk the DOM and check for error boundaries or error text
626
+ const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
627
+ let node;
628
+ while (node = walker.nextNode()) {
629
+ const text = node.textContent || '';
630
+ // Look for common error patterns
631
+ if (text.includes('TypeError:') ||
632
+ text.includes('ReferenceError:') ||
633
+ text.includes('Cannot read properties of undefined') ||
634
+ text.includes('Cannot access property') ||
635
+ text.includes('is not a function') ||
636
+ text.includes('Component Error:')) {
637
+ // Only add if it's not already in our error list
638
+ const errorMsg = text.trim();
639
+ if (errorMsg.length < 500) { // Avoid huge text blocks
640
+ errors.push(`Potential error in rendered content: ${errorMsg}`);
641
+ }
642
+ }
643
+ }
644
+ return errors;
645
+ });
646
+ errors.push(...renderErrors);
647
+ }
648
+ catch (e) {
649
+ errors.push(`Deep render validation failed: ${e}`);
650
+ }
651
+ return errors;
652
+ }
582
653
  /**
583
654
  * Determines if the component execution was successful
584
655
  */
@@ -675,6 +746,125 @@ ${cssLinks}
675
746
  static getDetailedErrorAnalysis(errors) {
676
747
  return react_runtime_1.ComponentErrorAnalyzer.analyzeComponentErrors(errors);
677
748
  }
749
+ /**
750
+ * Gets the ComponentCompiler code to inject into the browser
751
+ * This is a simplified version that works in the browser context
752
+ */
753
+ getComponentCompilerCode() {
754
+ // Return a browser-compatible version of ComponentCompiler
755
+ return `
756
+ class ComponentCompiler {
757
+ constructor() {
758
+ this.cache = new Map();
759
+ }
760
+
761
+ setBabelInstance(babel) {
762
+ this.babelInstance = babel;
763
+ }
764
+
765
+ async compile(options) {
766
+ const { componentName, componentCode } = options;
767
+
768
+ try {
769
+ // Validate inputs
770
+ if (!componentName || !componentCode) {
771
+ throw new Error('componentName and componentCode are required');
772
+ }
773
+
774
+ // Wrap component code
775
+ const wrappedCode = this.wrapComponentCode(componentCode, componentName);
776
+
777
+ // Transform using Babel
778
+ const result = this.babelInstance.transform(wrappedCode, {
779
+ presets: ['react'],
780
+ filename: componentName + '.jsx'
781
+ });
782
+
783
+ // Create factory
784
+ const componentFactory = this.createComponentFactory(result.code, componentName);
785
+
786
+ return {
787
+ success: true,
788
+ component: {
789
+ component: componentFactory,
790
+ id: componentName + '_' + Date.now(),
791
+ name: componentName,
792
+ compiledAt: new Date(),
793
+ warnings: []
794
+ },
795
+ duration: 0
796
+ };
797
+ } catch (error) {
798
+ return {
799
+ success: false,
800
+ error: {
801
+ message: error.message,
802
+ componentName: componentName,
803
+ phase: 'compilation'
804
+ },
805
+ duration: 0
806
+ };
807
+ }
808
+ }
809
+
810
+ wrapComponentCode(componentCode, componentName) {
811
+ // Make component libraries available in scope
812
+ const libraryDeclarations = componentLibraries
813
+ .map(lib => \`const \${lib.globalVariable} = libraries['\${lib.globalVariable}'];\`)
814
+ .join('\\n ');
815
+
816
+ return \`
817
+ function createComponent(
818
+ React, ReactDOM,
819
+ useState, useEffect, useCallback, useMemo, useRef, useContext, useReducer, useLayoutEffect,
820
+ libraries, styles, console
821
+ ) {
822
+ \${libraryDeclarations}
823
+
824
+ \${componentCode}
825
+
826
+ if (typeof \${componentName} === 'undefined') {
827
+ throw new Error('Component "\${componentName}" is not defined in the provided code');
828
+ }
829
+
830
+ return {
831
+ component: \${componentName},
832
+ print: function() { window.print(); },
833
+ refresh: function(data) { }
834
+ };
835
+ }
836
+ \`;
837
+ }
838
+
839
+ createComponentFactory(transpiledCode, componentName) {
840
+ const factoryCreator = new Function(
841
+ 'React', 'ReactDOM',
842
+ 'useState', 'useEffect', 'useCallback', 'useMemo', 'useRef', 'useContext', 'useReducer', 'useLayoutEffect',
843
+ 'libraries', 'styles', 'console',
844
+ transpiledCode + '; return createComponent;'
845
+ );
846
+
847
+ return (context, styles = {}) => {
848
+ const { React, ReactDOM, libraries = {} } = context;
849
+
850
+ const createComponentFn = factoryCreator(
851
+ React, ReactDOM,
852
+ React.useState, React.useEffect, React.useCallback, React.useMemo,
853
+ React.useRef, React.useContext, React.useReducer, React.useLayoutEffect,
854
+ libraries, styles, console
855
+ );
856
+
857
+ return createComponentFn(
858
+ React, ReactDOM,
859
+ React.useState, React.useEffect, React.useCallback, React.useMemo,
860
+ React.useRef, React.useContext, React.useReducer, React.useLayoutEffect,
861
+ libraries, styles, console
862
+ );
863
+ };
864
+ }
865
+ }
866
+ `;
867
+ }
678
868
  }
679
869
  exports.ComponentRunner = ComponentRunner;
680
870
  // Critical warning patterns that should fail tests
@@ -1 +1 @@
1
- {"version":3,"file":"component-runner.js","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-runner.js","sourceRoot":"","sources":["../../src/lib/component-runner.ts"],"names":[],"mappings":";;;AACA,iEAOuC;AACvC,+CAAmE;AAEnE,yDAAoE;AA8BpE,MAAa,eAAe;IAoB1B,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,iCAAiB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,iCAAiB,EAAE,CAAC;QAExC,wDAAwD;QACxD,IAAI,CAAC,cAAc,GAAG,EAAoB,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,aAAqB,EACrB,aAAqB,EACrB,aAAmB;QAEnB,MAAM,UAAU,GAAG,MAAM,kCAAe,CAAC,aAAa,CACpD,aAAa,EACb,aAAa,EACb,aAAa,CACd,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAE1E,OAAO;YACL,UAAU;YACV,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,SAAS;SACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAkC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,WAAW,GAAqC,EAAE,CAAC;QACzD,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAEjD,oBAAoB;YACpB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACxE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAEtC,kCAAkC;YAClC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAExD,gCAAgC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,IAAI,CAAC,gCAAgC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAEnF,yCAAyC;YACzC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEtE,mBAAmB;YACnB,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAE9C,yBAAyB;YACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAE9B,iCAAiC;YACjC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAEjC,wBAAwB;YACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAEpD,4BAA4B;YAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YAE1D,sDAAsD;YACtD,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,gBAAgB,CACzD,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,CAAC,aAAa,CACf,CAAC;YAEF,4BAA4B;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAEjC,OAAO;gBACL,OAAO;gBACP,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,gBAAgB;gBAChB,OAAO,EAAE,WAAW;gBACpB,UAAU;gBACV,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACrC,WAAW;aACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,EAAE;gBACR,MAAM;gBACN,QAAQ;gBACR,gBAAgB;gBAChB,OAAO,EAAE,WAAW;gBACpB,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACrC,WAAW;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,OAAkC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvD,gCAAgC;QAChC,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjC,sCAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACxE,CAAC;QAED,+CAA+C;QAC/C,MAAM,gBAAgB,GAAG,sCAAsB,CAAC,mBAAmB,EAAE,CAAC;QAEtE,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAC3F,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAE7F,6CAA6C;QAC7C,MAAM,cAAc,GAAG,gBAAgB;aACpC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,8BAA8B,GAAG,CAAC,MAAM,aAAa,CAAC;aACxE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,+CAA+C;QAC/C,MAAM,gBAAgB,GAAG,kBAAkB;aACxC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,kBAAkB,GAAG,CAAC,MAAM,aAAa,CAAC;aAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,qBAAqB;QACrB,MAAM,QAAQ,GAAG,gBAAgB;aAC9B,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;aACnC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,kCAAkC,GAAG,CAAC,SAAS,IAAI,CAAC;aACtE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,iDAAiD;QACjD,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAE9D,OAAO;;;;;;EAMT,cAAc;EACd,gBAAgB;EAChB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqDJ,OAAO,CAAC,SAAS,IAAI,EAAE;;;iCAGI,IAAI,CAAC,SAAS,CACzC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;YACpC,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC,CAAC,CACJ;;;;;;;;;;;;;;;;MAgBC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAsPC,QAAQ;oBAChB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyDrB,CAAC;IACP,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAAY,EAAE,IAAY;QAC1C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAY;QACpC,OAAO,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,IAAS,EACT,WAA6C,EAC7C,QAAkB,EAClB,gBAA0B;QAE1B,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAQ,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAExB,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEpB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAS,EAAE,MAAgB;QACpD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAY,EAAE,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAS;QAC1C,yFAAyF;QACzF,gDAAgD;QAChD,yDAAyD;IAC3D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACzB,IAAS,EACT,OAAkC,EAClC,MAAgB;QAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,qBAAqB;QAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,iBAAiB;QAExE,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAE1C,mCAAmC;gBACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACvB,IAAK,MAAc,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;wBAC7D,IAAI,CAAC;4BACF,MAAc,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAC5C,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,0DAA0D;gBAC1D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,oCAAoC,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAS;QACpC,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAE,MAAc,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAS;QAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC7C,OAAQ,MAAc,CAAC,0BAA0B,IAAI,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,aAAa,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAS;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC;YACH,wDAAwD;YACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACvB,8CAA8C;gBAC9C,IAAK,MAAc,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAC5D,MAAc,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gDAAgD;YAChD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;gBAE5B,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CACtC,QAAQ,CAAC,IAAI,EACb,UAAU,CAAC,SAAS,CACrB,CAAC;gBAEF,IAAI,IAAI,CAAC;gBACT,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;oBACpC,iCAAiC;oBACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC3B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;wBAChC,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC;wBACpD,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC;wBACvC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBACtC,iDAAiD;wBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,yBAAyB;4BACpD,MAAM,CAAC,IAAI,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,MAAgB,EAChB,gBAA0B,EAC1B,WAAmB,EACnB,UAAmB;QAEnB,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,IAAI,WAAW,GAAG,eAAe,CAAC,gBAAgB,EAAE,CAAC;YACnD,gBAAgB,CAAC,IAAI,CAAC,2BAA2B,WAAW,mBAAmB,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;YACpB,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,CAAC,UAAU;YACX,WAAW,IAAI,eAAe,CAAC,gBAAgB,CAAC;QAE/D,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,IAAS,EAAE,WAAqB;QAC9D,yCAAyC;QACzC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC9C,OAAO,OAAQ,MAAc,CAAC,mBAAmB,KAAK,UAAU,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,wBAAwB;QAClC,CAAC;QACD,sCAAsC;QACtC,MAAM,QAAQ,GAAG,IAAI,eAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,cAAO,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,eAAQ,EAAE,CAAC;QAEhC,kEAAkE;QAClE,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,KAAK,EAAE,UAAkB,EAAE,EAAE;YAC5E,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;gBACvE,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAC,GAAG,EAAE;YAC/C,IAAI,CAAC;gBACH,OAAO,QAAQ,CAAC,QAAQ,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,EAAE,MAAqB,EAAE,EAAE;YACvE,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,MAAuB,EAAE,EAAE;YAC1E,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACzF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,MAAsB,EAAE,EAAE;YACzE,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAgB;QAC5C,OAAO,sCAAsB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,CAAC,MAAgB;QAC9C,OAAO,sCAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACK,wBAAwB;QAC9B,2DAA2D;QAC3D,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+GN,CAAC;IACJ,CAAC;;AAt8BH,0CAu8BC;AAl8BC,mDAAmD;AAC3B,yCAAyB,GAAG;IAClD,gCAAgC;IAChC,qEAAqE;IACrE,oDAAoD;IACpD,yCAAyC;IACzC,wEAAwE;IACxE,6CAA6C;IAC7C,8BAA8B;IAC9B,sBAAsB;CACvB,CAAC;AAEF,0DAA0D;AAClC,gCAAgB,GAAG,IAAI,CAAC"}
@@ -2,7 +2,6 @@
2
2
  import { BrowserContextOptions } from './browser-context';
3
3
  import { ComponentExecutionOptions, ComponentExecutionResult } from './component-runner';
4
4
  import { AssertionHelpers } from './assertion-helpers';
5
- import { ComponentRootSpec, ComponentChildSpec } from '@memberjunction/interactive-component-types';
6
5
  export interface TestHarnessOptions extends BrowserContextOptions {
7
6
  debug?: boolean;
8
7
  screenshotOnError?: boolean;
@@ -15,22 +14,14 @@ export declare class ReactTestHarness {
15
14
  constructor(options?: TestHarnessOptions);
16
15
  initialize(): Promise<void>;
17
16
  /**
18
- * Test a root component with its full hierarchy of child components
17
+ * Test a component with its full hierarchy of child components
19
18
  */
20
- testRootComponent(rootSpec: ComponentRootSpec, props: Record<string, any>, options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
21
- /**
22
- * Test a single child component
23
- */
24
- testChildComponent(childSpec: ComponentChildSpec, props: Record<string, any>, options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
25
- /**
26
- * Convert Skip child specs to test harness ComponentSpec format
27
- */
28
- private convertSkipChildSpecs;
19
+ testComponent(options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
29
20
  /**
30
21
  * Test a component from a file path
31
22
  * This is a convenience method for the CLI
32
23
  */
33
- testComponentFromFile(filePath: string, props: Record<string, any>, options: ComponentExecutionOptions): Promise<ComponentExecutionResult>;
24
+ testComponentFromFile(filePath: string, props: Record<string, any>, options: Omit<ComponentExecutionOptions, 'componentSpec'>): Promise<ComponentExecutionResult>;
34
25
  runTest(name: string, testFn: () => Promise<void>): Promise<{
35
26
  name: string;
36
27
  passed: boolean;