@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.
- package/README.md +177 -39
- package/dist/cli/index.js +0 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/component-linter.d.ts +3 -4
- package/dist/lib/component-linter.d.ts.map +1 -1
- package/dist/lib/component-linter.js +692 -201
- package/dist/lib/component-linter.js.map +1 -1
- package/dist/lib/component-runner.d.ts +19 -8
- package/dist/lib/component-runner.d.ts.map +1 -1
- package/dist/lib/component-runner.js +330 -140
- package/dist/lib/component-runner.js.map +1 -1
- package/dist/lib/test-harness.d.ts +3 -12
- package/dist/lib/test-harness.d.ts.map +1 -1
- package/dist/lib/test-harness.js +21 -66
- package/dist/lib/test-harness.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# @memberjunction/react-test-harness
|
|
2
2
|
|
|
3
|
-
A powerful test harness for React components using Playwright, designed specifically for MemberJunction's React runtime components.
|
|
3
|
+
A powerful test harness for React components using Playwright, designed specifically for MemberJunction's React runtime components with support for dynamic library configurations.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
7
|
This package provides a comprehensive testing solution for React components, allowing you to:
|
|
8
8
|
- Load and execute React components in a real browser environment
|
|
9
|
+
- Dynamically configure external libraries for testing different scenarios
|
|
9
10
|
- Run assertions on rendered output
|
|
10
11
|
- Execute tests via CLI or programmatically
|
|
11
12
|
- Capture screenshots and console output
|
|
@@ -61,6 +62,126 @@ mj-react-test create-example
|
|
|
61
62
|
mj-react-test create-example --dir ./my-tests
|
|
62
63
|
```
|
|
63
64
|
|
|
65
|
+
## Dynamic Library Configuration (New)
|
|
66
|
+
|
|
67
|
+
The test harness now supports dynamic library configuration, allowing you to test components with different sets of external libraries.
|
|
68
|
+
|
|
69
|
+
### Basic Library Configuration
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { ReactTestHarness } from '@memberjunction/react-test-harness';
|
|
73
|
+
import type { LibraryConfiguration } from '@memberjunction/react-runtime';
|
|
74
|
+
|
|
75
|
+
const customLibraryConfig: LibraryConfiguration = {
|
|
76
|
+
libraries: [
|
|
77
|
+
// Runtime libraries (always needed)
|
|
78
|
+
{
|
|
79
|
+
id: 'react',
|
|
80
|
+
name: 'React',
|
|
81
|
+
category: 'runtime',
|
|
82
|
+
globalVariable: 'React',
|
|
83
|
+
version: '18',
|
|
84
|
+
cdnUrl: 'https://unpkg.com/react@18/umd/react.development.js',
|
|
85
|
+
isEnabled: true,
|
|
86
|
+
isCore: true,
|
|
87
|
+
isRuntimeOnly: true
|
|
88
|
+
},
|
|
89
|
+
// Component libraries (available to components)
|
|
90
|
+
{
|
|
91
|
+
id: 'lodash',
|
|
92
|
+
name: 'lodash',
|
|
93
|
+
displayName: 'Lodash',
|
|
94
|
+
category: 'utility',
|
|
95
|
+
globalVariable: '_',
|
|
96
|
+
version: '4.17.21',
|
|
97
|
+
cdnUrl: 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js',
|
|
98
|
+
isEnabled: true,
|
|
99
|
+
isCore: false
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 'chart-js',
|
|
103
|
+
name: 'Chart',
|
|
104
|
+
displayName: 'Chart.js',
|
|
105
|
+
category: 'charting',
|
|
106
|
+
globalVariable: 'Chart',
|
|
107
|
+
version: '4.4.0',
|
|
108
|
+
cdnUrl: 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.0/chart.umd.js',
|
|
109
|
+
isEnabled: true,
|
|
110
|
+
isCore: false
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
metadata: {
|
|
114
|
+
version: '1.0.0',
|
|
115
|
+
lastUpdated: '2024-01-01'
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Test with custom libraries
|
|
120
|
+
const harness = new ReactTestHarness({ headless: true });
|
|
121
|
+
await harness.initialize();
|
|
122
|
+
|
|
123
|
+
const result = await harness.testComponent(
|
|
124
|
+
`const Component = () => {
|
|
125
|
+
if (!_) return <div>Lodash not available</div>;
|
|
126
|
+
const sorted = _.sortBy([3, 1, 2]);
|
|
127
|
+
return <div>{sorted.join(', ')}</div>;
|
|
128
|
+
}`,
|
|
129
|
+
{},
|
|
130
|
+
{ libraryConfiguration: customLibraryConfig }
|
|
131
|
+
);
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Testing Organization-Specific Libraries
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// Test with minimal libraries
|
|
138
|
+
const minimalConfig: LibraryConfiguration = {
|
|
139
|
+
libraries: [
|
|
140
|
+
// Only runtime essentials
|
|
141
|
+
{ id: 'react', category: 'runtime', isEnabled: true, isRuntimeOnly: true, ... },
|
|
142
|
+
{ id: 'react-dom', category: 'runtime', isEnabled: true, isRuntimeOnly: true, ... },
|
|
143
|
+
{ id: 'babel', category: 'runtime', isEnabled: true, isRuntimeOnly: true, ... },
|
|
144
|
+
// Just one utility library
|
|
145
|
+
{ id: 'lodash', category: 'utility', isEnabled: true, ... }
|
|
146
|
+
],
|
|
147
|
+
metadata: { version: '1.0.0', lastUpdated: '2024-01-01' }
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// Test with full library suite
|
|
151
|
+
const fullConfig: LibraryConfiguration = {
|
|
152
|
+
libraries: [
|
|
153
|
+
// All runtime libraries
|
|
154
|
+
// All UI libraries (antd, react-bootstrap)
|
|
155
|
+
// All charting libraries (chart.js, d3)
|
|
156
|
+
// All utilities (lodash, dayjs)
|
|
157
|
+
],
|
|
158
|
+
metadata: { version: '1.0.0', lastUpdated: '2024-01-01' }
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// Test component behavior with different configurations
|
|
162
|
+
const componentCode = `
|
|
163
|
+
const Component = () => {
|
|
164
|
+
const hasChart = typeof Chart !== 'undefined';
|
|
165
|
+
const hasAntd = typeof antd !== 'undefined';
|
|
166
|
+
|
|
167
|
+
return (
|
|
168
|
+
<div>
|
|
169
|
+
<p>Chart.js: {hasChart ? 'Available' : 'Not Available'}</p>
|
|
170
|
+
<p>Ant Design: {hasAntd ? 'Available' : 'Not Available'}</p>
|
|
171
|
+
</div>
|
|
172
|
+
);
|
|
173
|
+
};
|
|
174
|
+
`;
|
|
175
|
+
|
|
176
|
+
const minimalResult = await harness.testComponent(componentCode, {}, {
|
|
177
|
+
libraryConfiguration: minimalConfig
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
const fullResult = await harness.testComponent(componentCode, {}, {
|
|
181
|
+
libraryConfiguration: fullConfig
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
64
185
|
## Programmatic Usage via TypeScript/JavaScript
|
|
65
186
|
|
|
66
187
|
The test harness is designed to be used as a library in your TypeScript/JavaScript code, not just via CLI. All classes and types are fully exported for programmatic use.
|
|
@@ -432,7 +553,7 @@ export class ReactComponentTester {
|
|
|
432
553
|
await this.harness.close();
|
|
433
554
|
}
|
|
434
555
|
|
|
435
|
-
async
|
|
556
|
+
async testMJComponent(
|
|
436
557
|
componentCode: string,
|
|
437
558
|
data: any,
|
|
438
559
|
userState?: any,
|
|
@@ -440,7 +561,7 @@ export class ReactComponentTester {
|
|
|
440
561
|
utilities?: any,
|
|
441
562
|
styles?: any
|
|
442
563
|
): Promise<ComponentExecutionResult> {
|
|
443
|
-
// Test with
|
|
564
|
+
// Test with MJ-style props structure
|
|
444
565
|
const props = { data, userState, callbacks, utilities, styles };
|
|
445
566
|
return this.harness.testComponent(componentCode, props);
|
|
446
567
|
}
|
|
@@ -465,8 +586,8 @@ export class ReactComponentTester {
|
|
|
465
586
|
const tester = new ReactComponentTester();
|
|
466
587
|
await tester.setup();
|
|
467
588
|
|
|
468
|
-
const result = await tester.
|
|
469
|
-
|
|
589
|
+
const result = await tester.testMJComponent(
|
|
590
|
+
componentCode,
|
|
470
591
|
{ title: 'Test', items: [] },
|
|
471
592
|
{ viewMode: 'grid' }
|
|
472
593
|
);
|
|
@@ -479,45 +600,40 @@ tester
|
|
|
479
600
|
await tester.teardown();
|
|
480
601
|
```
|
|
481
602
|
|
|
482
|
-
### Testing
|
|
603
|
+
### Testing with Different Library Configurations
|
|
483
604
|
|
|
484
605
|
```typescript
|
|
485
606
|
import { ReactTestHarness } from '@memberjunction/react-test-harness';
|
|
486
|
-
import type {
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
} from '@memberjunction/skip-types';
|
|
491
|
-
|
|
492
|
-
async function testSkipComponent(spec: SkipComponentRootSpec) {
|
|
493
|
-
const harness = new ReactTestHarness({ headless: true });
|
|
607
|
+
import type { LibraryConfiguration } from '@memberjunction/react-runtime';
|
|
608
|
+
|
|
609
|
+
class LibraryCompatibilityTester {
|
|
610
|
+
private harness: ReactTestHarness;
|
|
494
611
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
612
|
+
constructor() {
|
|
613
|
+
this.harness = new ReactTestHarness({ headless: true });
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
async testWithLibraries(
|
|
617
|
+
componentCode: string,
|
|
618
|
+
enabledLibraries: string[]
|
|
619
|
+
) {
|
|
620
|
+
const config: LibraryConfiguration = {
|
|
621
|
+
libraries: [
|
|
622
|
+
// Always include runtime
|
|
623
|
+
{ id: 'react', category: 'runtime', isEnabled: true, isRuntimeOnly: true, ... },
|
|
624
|
+
{ id: 'react-dom', category: 'runtime', isEnabled: true, isRuntimeOnly: true, ... },
|
|
625
|
+
{ id: 'babel', category: 'runtime', isEnabled: true, isRuntimeOnly: true, ... },
|
|
626
|
+
// Conditionally enable other libraries
|
|
627
|
+
{ id: 'lodash', category: 'utility', isEnabled: enabledLibraries.includes('lodash'), ... },
|
|
628
|
+
{ id: 'chart-js', category: 'charting', isEnabled: enabledLibraries.includes('chart-js'), ... },
|
|
629
|
+
{ id: 'antd', category: 'ui', isEnabled: enabledLibraries.includes('antd'), ... },
|
|
630
|
+
],
|
|
631
|
+
metadata: { version: '1.0.0', lastUpdated: '2024-01-01' }
|
|
510
632
|
};
|
|
511
633
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
throw new Error(`Component failed: ${result.error}`);
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
return result;
|
|
519
|
-
} finally {
|
|
520
|
-
await harness.close();
|
|
634
|
+
return this.harness.testComponent(componentCode, {}, {
|
|
635
|
+
libraryConfiguration: config
|
|
636
|
+
});
|
|
521
637
|
}
|
|
522
638
|
}
|
|
523
639
|
```
|
|
@@ -596,12 +712,14 @@ if (results.failed > 0) {
|
|
|
596
712
|
|
|
597
713
|
```typescript
|
|
598
714
|
interface ComponentExecutionOptions {
|
|
599
|
-
|
|
715
|
+
componentSpec: ComponentSpec;
|
|
600
716
|
props?: Record<string, any>;
|
|
601
717
|
setupCode?: string; // Additional setup code
|
|
602
718
|
timeout?: number; // Default: 30000ms
|
|
603
719
|
waitForSelector?: string; // Wait for element before capture
|
|
604
720
|
waitForLoadState?: 'load' | 'domcontentloaded' | 'networkidle';
|
|
721
|
+
contextUser: UserInfo;
|
|
722
|
+
libraryConfiguration?: LibraryConfiguration; // New: Custom library configuration
|
|
605
723
|
}
|
|
606
724
|
```
|
|
607
725
|
|
|
@@ -721,12 +839,26 @@ Due to the architecture of the test harness (Node.js controlling a browser via P
|
|
|
721
839
|
]);
|
|
722
840
|
```
|
|
723
841
|
|
|
842
|
+
5. **Test with different library configurations** to ensure compatibility:
|
|
843
|
+
```typescript
|
|
844
|
+
// Test with minimal libraries
|
|
845
|
+
const minimalResult = await harness.testComponent(code, props, {
|
|
846
|
+
libraryConfiguration: minimalLibraryConfig
|
|
847
|
+
});
|
|
848
|
+
|
|
849
|
+
// Test with full libraries
|
|
850
|
+
const fullResult = await harness.testComponent(code, props, {
|
|
851
|
+
libraryConfiguration: fullLibraryConfig
|
|
852
|
+
});
|
|
853
|
+
```
|
|
854
|
+
|
|
724
855
|
## Troubleshooting
|
|
725
856
|
|
|
726
857
|
### Component Not Rendering
|
|
727
858
|
- Ensure your component is named `Component` or modify the execution template
|
|
728
859
|
- Check for syntax errors in your component code
|
|
729
860
|
- Enable debug mode to see console output
|
|
861
|
+
- Verify required libraries are included in libraryConfiguration
|
|
730
862
|
|
|
731
863
|
### Timeout Errors
|
|
732
864
|
- Increase timeout value: `--timeout 60000`
|
|
@@ -738,6 +870,12 @@ Due to the architecture of the test harness (Node.js controlling a browser via P
|
|
|
738
870
|
- Use absolute paths for consistent results
|
|
739
871
|
- Check file permissions
|
|
740
872
|
|
|
873
|
+
### Library Loading Issues
|
|
874
|
+
- Verify CDN URLs are accessible
|
|
875
|
+
- Check that globalVariable names match what components expect
|
|
876
|
+
- Ensure runtime libraries (React, ReactDOM, Babel) are always included
|
|
877
|
+
- Use isRuntimeOnly flag for libraries not exposed to components
|
|
878
|
+
|
|
741
879
|
## License
|
|
742
880
|
|
|
743
881
|
ISC
|
package/dist/cli/index.js
CHANGED
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,2CAA6B;AAC7B,uCAAyB;AACzB,kDAA0B;AAC1B,8CAAsB;AACtB,sDAAuD;AAEvD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,oBAAoB,EAAE,gCAAgC,CAAC;KAC9D,MAAM,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;KACzE,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,OAAO,CAAC;KAChE,MAAM,CAAC,YAAY,EAAE,gCAAgC,EAAE,IAAI,CAAC;KAC5D,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5D,IAAI,CAAC;QACH,0BAA0B;QAC1B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAI,+BAAgB,CAAC;YACnC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,UAAU;SACnC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAC;QACrC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAE3B,OAAO,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAChD,aAAa,EACb,KAAK,EACL;YACE,eAAe,EAAE,OAAO,CAAC,QAAQ;YACjC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;YAClC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { ReactTestHarness, TestHarnessOptions } from './lib/test-harness';
|
|
2
2
|
export { BrowserManager, BrowserContextOptions } from './lib/browser-context';
|
|
3
|
-
export { ComponentRunner, ComponentExecutionOptions, ComponentExecutionResult
|
|
3
|
+
export { ComponentRunner, ComponentExecutionOptions, ComponentExecutionResult } from './lib/component-runner';
|
|
4
4
|
export { AssertionHelpers } from './lib/assertion-helpers';
|
|
5
|
-
export { ComponentLinter, LintResult, Violation, FixSuggestion
|
|
5
|
+
export { ComponentLinter, LintResult, Violation, FixSuggestion } from './lib/component-linter';
|
|
6
|
+
export { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ComponentLinter = exports.AssertionHelpers = exports.ComponentRunner = exports.BrowserManager = exports.ReactTestHarness = void 0;
|
|
3
|
+
exports.ComponentSpec = exports.ComponentLinter = exports.AssertionHelpers = exports.ComponentRunner = exports.BrowserManager = exports.ReactTestHarness = void 0;
|
|
4
4
|
var test_harness_1 = require("./lib/test-harness");
|
|
5
5
|
Object.defineProperty(exports, "ReactTestHarness", { enumerable: true, get: function () { return test_harness_1.ReactTestHarness; } });
|
|
6
6
|
var browser_context_1 = require("./lib/browser-context");
|
|
@@ -11,4 +11,6 @@ var assertion_helpers_1 = require("./lib/assertion-helpers");
|
|
|
11
11
|
Object.defineProperty(exports, "AssertionHelpers", { enumerable: true, get: function () { return assertion_helpers_1.AssertionHelpers; } });
|
|
12
12
|
var component_linter_1 = require("./lib/component-linter");
|
|
13
13
|
Object.defineProperty(exports, "ComponentLinter", { enumerable: true, get: function () { return component_linter_1.ComponentLinter; } });
|
|
14
|
+
var interactive_component_types_1 = require("@memberjunction/interactive-component-types");
|
|
15
|
+
Object.defineProperty(exports, "ComponentSpec", { enumerable: true, get: function () { return interactive_component_types_1.ComponentSpec; } });
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAA0E;AAAjE,gHAAA,gBAAgB,OAAA;AACzB,yDAA8E;AAArE,iHAAA,cAAc,OAAA;AACvB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAA0E;AAAjE,gHAAA,gBAAgB,OAAA;AACzB,yDAA8E;AAArE,iHAAA,cAAc,OAAA;AACvB,2DAA8G;AAArG,mHAAA,eAAe,OAAA;AACxB,6DAA2D;AAAlD,qHAAA,gBAAgB,OAAA;AACzB,2DAA+F;AAAtF,mHAAA,eAAe,OAAA;AACxB,2FAA4E;AAAnE,4HAAA,aAAa,OAAA"}
|
|
@@ -16,11 +16,10 @@ export interface FixSuggestion {
|
|
|
16
16
|
suggestion: string;
|
|
17
17
|
example?: string;
|
|
18
18
|
}
|
|
19
|
-
export type ComponentType = 'root' | 'child';
|
|
20
19
|
export declare class ComponentLinter {
|
|
21
|
-
private static
|
|
22
|
-
|
|
23
|
-
static
|
|
20
|
+
private static universalComponentRules;
|
|
21
|
+
static lintComponent(code: string, componentName: string, componentSpec?: any): Promise<LintResult>;
|
|
22
|
+
private static validateDataRequirements;
|
|
24
23
|
private static generateFixSuggestions;
|
|
25
24
|
}
|
|
26
25
|
//# sourceMappingURL=component-linter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-linter.d.ts","sourceRoot":"","sources":["../../src/lib/component-linter.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"component-linter.d.ts","sourceRoot":"","sources":["../../src/lib/component-linter.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,qBAAa,eAAe;IAE1B,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAoepC;WAEkB,aAAa,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,GAAG,GAClB,OAAO,CAAC,UAAU,CAAC;IAiDtB,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAgKvC,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAwStC"}
|